# Conflicts:
#	nladmin-system/nlsso-server/src/main/java/org/nl/modules/common/base/BaseDTO.java
#	nladmin-system/nlsso-server/src/main/java/org/nl/system/service/user/dao/mapper/SysUserMapper.java
This commit is contained in:
ludj
2022-12-16 14:14:28 +08:00
17 changed files with 675 additions and 127 deletions

View File

@@ -16,20 +16,20 @@ import java.util.Date;
@Data
public class BaseDTO implements Serializable {
private String create_name;
private String createName;
private Long create_id;
private Long createId;
private String update_optname;
private String updateOptname;
private Long update_id;
private Long updateOptid;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date create_time;
private Date createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date update_time;
private Date updateTime;
}

View File

@@ -37,15 +37,15 @@ import java.util.List;
public class DeptVo extends BaseDTO implements Serializable {
private Long dept_id;
private Long deptId;
private String code;
private String ext_id;
private String extId;
@ApiModelProperty(value = "排序")
private Integer dept_sort;
private Integer deptSort;
@NotBlank
@@ -54,22 +54,21 @@ public class DeptVo extends BaseDTO implements Serializable {
@NotNull
@ApiModelProperty(value = "是否启用")
private String is_used;
private String isUsed;
@ApiModelProperty(value = "上级部门")
private Long pid;
@ApiModelProperty(value = "子节点数目", hidden = true)
private Integer sub_count = 0;
private Integer subCount = 0;
//前端显示
private Boolean hasChildren =Boolean.FALSE;
private List<DeptVo> children;
public void setSub_count(Integer sub_count) {
this.sub_count = sub_count;
if (sub_count>0){
public void setSubCount(Integer subCount) {
this.subCount = subCount;
if (subCount>0){
this.hasChildren=Boolean.TRUE;
}
}

View File

@@ -32,9 +32,10 @@ import java.util.Objects;
@Setter
public class DeptTree implements Serializable {
private Long Dept_id;
private Long deptId;
private Long pid;
private String name;
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<DeptTree> children;

View File

@@ -130,10 +130,10 @@ public class DeptServiceImpl implements DeptService {
CurrentUser user = SecurityUtils.getCurrentUser();
dept.setSub_count(0);
dept.setCode(UUID.randomUUID().toString());
dept.setCreate_time(new Date());
dept.setUpdate_time(new Date());
dept.setCreate_id(user.getId());
dept.setCreate_name(user.getUsername());
dept.setCreateTime(new Date());
dept.setUpdateTime(new Date());
dept.setCreateId(user.getId());
dept.setCreateName(user.getUsername());
WQLObject.getWQLObject("sys_dept").insert(JSONObject.parseObject(JSON.toJSONString(dept)));
// 清理缓存
@@ -215,7 +215,7 @@ public class DeptServiceImpl implements DeptService {
trees.add(deptDTO);
}
for (DeptTree it : deptDtos) {
if (it.getPid() != null && deptDTO.getDept_id().equals(it.getPid())) {
if (it.getPid() != null && deptDTO.getDeptId().equals(it.getPid())) {
isChild = true;
if (deptDTO.getChildren() == null) {
deptDTO.setChildren(new ArrayList<>());

View File

@@ -17,10 +17,16 @@ package org.nl.system.controller.dept;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.query.PageQuery;
import org.nl.modules.common.utils.PageUtil;
import org.nl.modules.system.domain.vo.DeptVo;
import org.nl.modules.system.util.CopyUtil;
import org.nl.system.service.dept.ISysDeptService;
import org.nl.system.service.dept.dao.SysDept;
import org.nl.system.service.dept.dto.DeptQuery;
@@ -53,9 +59,9 @@ public class DeptController {
@ApiOperation("查询部门")
@GetMapping("/vo")
public ResponseEntity<Object> queryvo(DeptQuery query) throws Exception {
List<SysDept> sysDepts = deptService.queryVo(query);
return new ResponseEntity<>(PageUtil.toPage(sysDepts, sysDepts.size()),HttpStatus.OK);
public ResponseEntity queryvo(DeptQuery query, PageQuery pageQuery) throws Exception {
Page deptPage = deptService.queryVo(query, pageQuery);
return new ResponseEntity((TableDataInfo.build(deptPage)),HttpStatus.OK);
}

View File

@@ -1,6 +1,5 @@
package org.nl.system.controller.role;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.ApiOperation;
@@ -44,5 +43,14 @@ public class SysRoleController {
roleService.create(param);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@Log("修改角色")
@ApiOperation("修改角色")
@PutMapping
// @SaCheckPermission("roles:edit")
public ResponseEntity<Object> update(@RequestBody JSONObject param) {
// roleService.update(param);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
}

View File

@@ -18,14 +18,12 @@ package org.nl.system.controller.user;
import cn.dev33.satoken.secure.SaSecureUtil;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.query.PageQuery;
import org.nl.modules.common.config.RsaProperties;
import org.nl.modules.common.exception.BadRequestException;
@@ -42,9 +40,9 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.BiPredicate;
/**
* @author Zheng Jie
@@ -62,10 +60,9 @@ public class UserController {
@ApiOperation("查询用户")
@GetMapping
// @SaCheckPermission("user:list")
public ResponseEntity<Object> query(UserQuery query, PageQuery page){
Page<SysUser> pageable = userService.page(page.build(), query.build());
return new ResponseEntity<>(null,HttpStatus.OK);
List<Map<String, Object>> userDetail = userService.getUserDetail(query, page);
return new ResponseEntity(TableDataInfo.build(userDetail),HttpStatus.OK);
}
@Log("新增用户")

View File

@@ -1,6 +1,8 @@
package org.nl.system.service.dept;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.common.domain.query.PageQuery;
import org.nl.system.service.dept.dao.SysDept;
import org.nl.system.service.dept.dto.DeptQuery;
@@ -19,9 +21,10 @@ public interface ISysDeptService extends IService<SysDept> {
/**
* 条件查询
* @param query
* @param pageQuery
* @return
*/
List<SysDept> queryVo(DeptQuery query);
Page queryVo(DeptQuery query, PageQuery pageQuery);
/**
* 条件查询树结构

View File

@@ -27,7 +27,7 @@ public class DeptQuery extends BaseQuery<SysDept> {
@Override
public void paramMapping() {
super.doP.put("pidIsNull", QParam.builder().k(new String[]{"pid"}).type(QueryTEnum.LK).build());
super.doP.put("pidIsNull", QParam.builder().k(new String[]{"pid"}).type(QueryTEnum.NO).build());
super.doP.put("deptIds", QParam.builder().k(new String[]{"deptId"}).type(QueryTEnum.IN).build());
}
}

View File

@@ -1,11 +1,10 @@
package org.nl.system.service.dept.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.nl.modules.system.domain.Dept;
import org.nl.common.domain.query.PageQuery;
import org.nl.modules.system.domain.vo.DeptVo;
import org.nl.modules.system.service.dto.DeptTree;
import org.nl.modules.system.util.CopyUtil;
@@ -52,7 +51,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
trees.add(deptDTO);
}
for (DeptTree it : deptDtos) {
if (it.getPid() != null && deptDTO.getDept_id().equals(it.getPid())) {
if (it.getPid() != null && deptDTO.getDeptId().equals(it.getPid())) {
isChild = true;
if (deptDTO.getChildren() == null) {
deptDTO.setChildren(new ArrayList<>());
@@ -66,7 +65,6 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
depts.add(deptDTO);
}
}
Map<String, Object> map = new HashMap<>(2);
map.put("totalElements", deptDtos.size());
map.put("content", CollectionUtil.isEmpty(trees) ? deptDtos : trees);
@@ -74,24 +72,17 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
}
@Override
public List<SysDept> queryVo(DeptQuery query) {
Boolean hasChild = false;
public Page queryVo(DeptQuery query, PageQuery pageQuery) {
if (query.getPidIsNull() == null){
if (query.getPid() == null){
query.setPidIsNull(true);
}
if (StringUtils.isNotEmpty(query.getName())||!query.getIsUsed()){
query.setPidIsNull(null);
hasChild=true;
}
}
List<SysDept> list = this.list(query.build());
List<DeptVo> deptVos = CopyUtil.copyList(list, DeptVo.class);
if (hasChild){
deptVos.forEach(a->{
a.setHasChildren(false);
});
Page page = this.page(pageQuery.build(), query.build());
page.setRecords(CopyUtil.copyList(page.getRecords(), DeptVo.class));
if (StringUtils.isNotEmpty(query.getName())){
page.getRecords().forEach(a->((DeptVo)a).setHasChildren(false) );
}
return list;
return page;
}
}

View File

@@ -1,9 +1,13 @@
package org.nl.system.service.user;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.common.domain.query.PageQuery;
import org.nl.system.service.user.dao.SysUser;
import org.nl.system.service.user.dto.UserQuery;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Map;
/**
@@ -18,4 +22,6 @@ public interface ISysUserService extends IService<SysUser> {
Map<String, String> updateAvatar(MultipartFile avatar);
List<Map<String, Object>> getUserDetail(UserQuery query, PageQuery pageQuery);
}

View File

@@ -1,10 +1,15 @@
package org.nl.system.service.user.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.nl.common.domain.query.PageQuery;
import org.nl.system.service.user.dao.SysUser;
import org.nl.system.service.user.dto.SysUserDetail;
import org.nl.system.service.user.dto.UserQuery;
import java.util.List;
import java.util.Map;
/**
* <p>
@@ -16,9 +21,8 @@ import java.util.List;
*/
public interface SysUserMapper extends BaseMapper<SysUser> {
List<SysUser> selectAl();
@Select("select * from sys_user")
List<SysUser> select1();
List<SysUserDetail> getUserDetail(@Param("query") UserQuery query, @Param("page")PageQuery page);
List<Map<String,Object>> getDetailForMap(@Param("query") UserQuery query, @Param("page")PageQuery page);
}

View File

@@ -1,7 +1,121 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.system.service.user.dao.mapper.SysUserMapper">
<select id="selectAl" resultType="org.nl.system.service.user.dao.SysUser">
select * from sys_user
<sql id="Base_Column_List">
sys_user.user_id as userId,
sys_user.username as username,
sys_user.person_name as personName,
sys_user.gender,
sys_user.phone,
sys_user.email,
sys_user.avatar_name as avatarName,
sys_user.avatar_path as avatarPath,
sys_user.password,
sys_user.is_admin as isAdmin,
sys_user.is_used as isUsed,
sys_user.pwd_reset_user_id as pwdResetUserId,
sys_user.pwd_reset_time as pwdResetTime,
sys_user.create_id as createId,
sys_user.create_name as createName,
sys_user.create_time as createTime,
sys_user.update_optid as updateOptid,
sys_user.update_optname as updateOptname,
sys_user.update_time as updateTime,
sys_user.extperson_id as extpersonId,
sys_user.extuser_id as extuserId
</sql>
<resultMap id="UserDetail" type="org.nl.system.service.user.dto.SysUserDetail" >
<id column="user_id" property="userId" />
<result column="username" property="username" />
<result column="person_name" property="personName" />
<result column="gender" property="gender" />
<result column="phone" property="phone" />
<result column="email" property="email" />
<result column="avatar_name" property="avatarName" />
<result column="avatar_path" property="avatarPath" />
<result column="password" property="password" />
<result column="is_admin" property="isAdmin" />
<result column="is_used" property="isUsed" />
<result column="pwd_reset_user_id" property="pwdResetUserId" />
<result column="pwd_reset_time" property="pwdResetTime" />
<result column="create_id" property="createId" />
<result column="create_name" property="createName" />
<result column="create_time" property="createTime" />
<result column="update_optid" property="updateOptid" />
<result column="update_optname" property="updateOptname" />
<result column="update_tim" property="updateTime" />
<result column="extperson_id" property="extpersonId" />
<result column="extuser_i" property="extuserId" />
<collection property="depts" ofType="org.nl.system.service.dept.dao.SysDept">
<id property="dept_id" column="deptId"/>
<result column="dept_name" property="name"/>
</collection>
<collection property="roles" ofType="org.nl.system.service.role.dao.SysRole">
<id property="role_id" column="levelId"/>
<result column="name" property="name"/>
</collection>
</resultMap>
<select id="getUserDetail" resultMap="UserDetail">
SELECT
<include refid="Base_Column_List"/>
,sys_dept.dept_id
,sys_dept.name as dept_name
,sys_role.role_id
,sys_role.name as role_name
FROM
sys_user
left join sys_user_dept on sys_user.user_id = sys_user_dept.user_id
left join sys_users_roles on sys_users_roles.user_id = sys_user.user_id
left join sys_dept on sys_user_dept.dept_id = sys_dept.dept_id
left join sys_role on sys_users_roles.role_id = sys_role.role_id
<where>
<if test="query.deptId != null">
and sys_dept.dept_id = #{query.deptId}
</if>
<if test="query.isUsed != null">
and sys_user.is_used = #{query.isUsed}
</if>
<if test="query.startTime != null">
and and sys_user.create_time >= #{query.startTime}
</if>
<if test="query.endTime != null">
and #{query.endTime} >= sys_user.create_time
</if>
<if test="query.blurry != null">
and (email like query.blurry or username like query.blurry or person_name like query.blurry)
</if>
</where>
GROUP BY sys_user.user_id
</select>
<select id="getDetailForMap" resultType="java.util.Map">
SELECT
<include refid="Base_Column_List"/>
,GROUP_CONCAT(DISTINCT sys_dept.dept_id) as depts,
GROUP_CONCAT(DISTINCT sys_dept.name) as deptnames,
GROUP_CONCAT(DISTINCT role_id) as roles
FROM
sys_user
left join sys_user_dept on sys_user.user_id = sys_user_dept.user_id
left join sys_users_roles on sys_users_roles.user_id = sys_user.user_id
left join sys_dept on sys_user_dept.dept_id = sys_dept.dept_id
<where>
<if test="query.deptId != null">
and sys_dept.dept_id = #{query.deptId}
</if>
<if test="query.isUsed != null">
and sys_user.is_used = #{query.isUsed}
</if>
<if test="query.startTime != null">
and and sys_user.create_time >= #{query.startTime}
</if>
<if test="query.endTime != null">
and #{query.endTime} >= sys_user.create_time
</if>
<if test="query.blurry != null">
and (email like #{query.blurry} or username like #{query.blurry} or person_name like #{query.blurry})
</if>
</where>
GROUP BY sys_user.user_id
</select>
</mapper>

View File

@@ -0,0 +1,20 @@
package org.nl.system.service.user.dto;
import lombok.Data;
import org.nl.system.service.dept.dao.SysDept;
import org.nl.system.service.role.dao.SysRole;
import org.nl.system.service.user.dao.SysUser;
import java.util.List;
/*
* @author ZZQ
* @Date 2022/12/16 10:02 上午
*/
@Data
public class SysUserDetail extends SysUser {
private List<SysDept> depts;
private List<SysRole> roles;
}

View File

@@ -1,20 +1,26 @@
package org.nl.system.service.user.impl;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.common.domain.query.PageQuery;
import org.nl.modules.common.config.FileProperties;
import org.nl.modules.common.utils.FileUtil;
import org.nl.modules.common.utils.SecurityUtils;
import org.nl.system.service.user.ISysUserService;
import org.nl.system.service.user.dao.SysUser;
import org.nl.system.service.user.dao.mapper.SysUserMapper;
import org.nl.system.service.user.dto.SysUserDetail;
import org.nl.system.service.user.dto.UserQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -31,6 +37,8 @@ public class ISysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> imp
@Autowired
FileProperties properties;
@Autowired
SysUserMapper sysUserMapper;
@Override
public Map<String, String> updateAvatar(MultipartFile multipartFile) {
@@ -47,4 +55,10 @@ public class ISysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> imp
put("avatar", file.getName());
}};
}
@Override
public List<Map<String, Object>> getUserDetail(UserQuery query, PageQuery pageQuery) {
List<Map<String, Object>> userDetail = sysUserMapper.getDetailForMap(query, pageQuery);
return userDetail;
}
}