From 15122fcb7b9d1cfdeea24c0e93be4de66341529d Mon Sep 17 00:00:00 2001 From: lijiarao Date: Mon, 30 Aug 2021 09:08:39 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E7=94=A8=E6=88=B7=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=9B=9E=E6=98=BE=E8=A7=92=E8=89=B2=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/controller/SysUserController.java | 46 +++++++++++++++- .../modules/system/mapper/SysUserMapper.java | 55 +++++++++++++------ .../system/mapper/xml/SysUserMapper.xml | 29 ++++++++++ .../system/service/ISysUserService.java | 5 ++ .../service/impl/SysUserServiceImpl.java | 22 ++++++++ .../com/jero/modules/system/vo/SysUserVo.java | 44 +++++++++++++++ 6 files changed, 184 insertions(+), 17 deletions(-) create mode 100644 jero-boot-module-system/src/main/java/com/jero/modules/system/vo/SysUserVo.java diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysUserController.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysUserController.java index 94e2e0d7..41a13818 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysUserController.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysUserController.java @@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jero.common.exception.JeroBootException; +import com.jero.modules.system.vo.SysUserVo; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; @@ -100,6 +101,44 @@ public class SysUserController { @Resource private BaseCommonService baseCommonService; + /** + * 根据角色id和部门id获取用户列表数据 + */ + @RequiresPermissions("sys:user:list") + @PermissionData(pageComponent = "system/UserList") + @RequestMapping(value = "/pageRoleAndDepart", method = RequestMethod.GET) + public Result> queryPageListByRoleAndDepart(SysUser user, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + String roleId = req.getParameter("roleId"); + String departId = req.getParameter("departId"); + //TODO 外部模拟登陆临时账号,列表不显示 + Page page = new Page<>(pageNo, pageSize); + IPage pageList = sysUserService.queryPageListByRoleAndDepart(page, user, roleId, departId); + List userList = new ArrayList<>(); + for (SysUserVo record : pageList.getRecords()) { + record.setEmail(PasswordUtil.decrypt(record.getEmail())); + record.setPhone(PasswordUtil.decrypt(record.getPhone())); + userList.add(record); + } + pageList.setRecords(userList); + //批量查询用户的所属部门 + //step.1 先拿到全部的 useids + //step.2 通过 useids,一次性查询用户的所属部门名字 + List userIds = pageList.getRecords().stream().map(SysUser::getId).collect(Collectors.toList()); + if (userIds != null && userIds.size() > 0) { + Map useDepNames = sysUserService.getDepNamesByUserIds(userIds); + Map roleNames = sysUserService.getRoleNameByUserIds(userIds); + pageList.getRecords().forEach(item -> { + item.setOrgCodeTxt(useDepNames.get(item.getId())); + item.setRoleName(roleNames.get(item.getId())); + }); + } + log.info(pageList.toString()); + return Result.OK(pageList); + } + /** * 获取用户列表数据 * @param user @@ -661,11 +700,16 @@ public class SysUserController { String sysRoleId = sysUserRoleVO.getRoleId(); for(String sysUserId:sysUserRoleVO.getUserIdList()) { SysUserRole sysUserRole = new SysUserRole(sysUserId,sysRoleId); - QueryWrapper queryWrapper = new QueryWrapper(); + QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("role_id", sysRoleId).eq("user_id",sysUserId); SysUserRole one = sysUserRoleService.getOne(queryWrapper); if(one==null){ sysUserRoleService.save(sysUserRole); + queryWrapper = new QueryWrapper<>(); + queryWrapper.select("role_id"); + queryWrapper.eq("user_id",sysUserId); + //List userRoleList = sysUserRoleService.listObjs(queryWrapper); + } } diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/SysUserMapper.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/SysUserMapper.java index 0032e1c0..b578dfe9 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/SysUserMapper.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/SysUserMapper.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.jero.modules.system.entity.SysRole; +import com.jero.modules.system.vo.SysUserVo; import org.apache.ibatis.annotations.Param; import com.jero.modules.system.entity.SysUser; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -22,14 +24,16 @@ import java.util.List; */ public interface SysUserMapper extends BaseMapper { /** - * 通过用户账号查询用户信息 + * 通过用户账号查询用户信息 + * * @param username * @return */ public SysUser getUserByName(@Param("username") String username); /** - * 根据部门Id查询用户信息 + * 根据部门Id查询用户信息 + * * @param page * @param departId * @return @@ -37,14 +41,16 @@ public interface SysUserMapper extends BaseMapper { IPage getUserByDepId(Page page, @Param("departId") String departId, @Param("username") String username); /** - * 根据用户Ids,查询用户所属部门名称信息 + * 根据用户Ids,查询用户所属部门名称信息 + * * @param userIds * @return */ - List getDepNamesByUserIds(@Param("userIds")List userIds); + List getDepNamesByUserIds(@Param("userIds") List userIds); /** - * 根据部门Ids,查询部门下用户信息 + * 根据部门Ids,查询部门下用户信息 + * * @param page * @param departIds * @return @@ -53,38 +59,42 @@ public interface SysUserMapper extends BaseMapper { /** * 根据角色Id查询用户信息 + * * @param page * @param * @return */ IPage getUserByRoleId(Page page, @Param("roleId") String roleId, @Param("username") String username); - + /** * 根据用户名设置部门ID + * * @param username * @param departId */ - void updateUserDepart(@Param("username") String username,@Param("orgCode") String orgCode); - + void updateUserDepart(@Param("username") String username, @Param("orgCode") String orgCode); + /** * 根据手机号查询用户信息 + * * @param phone * @return */ public SysUser getUserByPhone(@Param("phone") String phone); - - + + /** * 根据邮箱查询用户信息 + * * @param email * @return */ - public SysUser getUserByEmail(@Param("email")String email); + public SysUser getUserByEmail(@Param("email") String email); /** * 根据 orgCode 查询用户,包括子部门下的用户 * - * @param page 分页对象, xml中可以从里面进行取值,传递参数 Page 即自动分页,必须放在第一位(你可以继承Page实现自己的分页对象) + * @param page 分页对象, xml中可以从里面进行取值,传递参数 Page 即自动分页,必须放在第一位(你可以继承Page实现自己的分页对象) * @param orgCode * @param userParams 用户查询条件,可为空 * @return @@ -130,13 +140,26 @@ public interface SysUserMapper extends BaseMapper { */ int deleteLogicDeleted(@Param("userIds") String userIds); - /** 更新空字符串为null【此写法有sql注入风险,禁止随便用】 */ + /** + * 更新空字符串为null【此写法有sql注入风险,禁止随便用】 + */ int updateNullByEmptyString(@Param("fieldName") String fieldName); - + /** - * 根据部门Ids,查询部门下用户信息 + * 根据部门Ids,查询部门下用户信息 + * * @param departIds * @return */ - List queryByDepIds(@Param("departIds")List departIds,@Param("username") String username); + List queryByDepIds(@Param("departIds") List departIds, @Param("username") String username); + + IPage queryPageListByRoleAndDepart(Page page, @Param("user") SysUser user, @Param("roleId") String roleId, @Param("departId") String departId); + + /** + * 根据用户Ids,查询用户所属角色名称信息 + * + * @param userIds + * @return + */ + List getRoleNameByUserIds(@Param("userIds") List userIds); } diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/xml/SysUserMapper.xml b/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/xml/SysUserMapper.xml index 4166c093..355b8363 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/xml/SysUserMapper.xml +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/mapper/xml/SysUserMapper.xml @@ -161,4 +161,33 @@ and username != #{username} + + + + \ No newline at end of file diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java index 11a3fb7b..1b7cbd75 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/service/ISysUserService.java @@ -15,6 +15,7 @@ import com.jero.modules.system.entity.SysUser; import com.baomidou.mybatisplus.extension.service.IService; import com.jero.modules.system.model.SysUserSysDepartModel; +import com.jero.modules.system.vo.SysUserVo; import org.springframework.transaction.annotation.Transactional; /** @@ -233,4 +234,8 @@ public interface ISysUserService extends IService { * @return */ List queryByDepIds(List departIds, String username); + + IPage queryPageListByRoleAndDepart(Page page, SysUser user, String roleId, String departId); + + Map getRoleNameByUserIds(List userIds); } diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java index f5973989..b6fb4a95 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.modules.system.vo.SysUserVo; import lombok.extern.slf4j.Slf4j; import com.jero.common.api.vo.Result; import com.jero.common.constant.CacheConstant; @@ -439,4 +440,25 @@ public class SysUserServiceImpl extends ServiceImpl impl return userMapper.queryByDepIds(departIds,username); } + @Override + public IPage queryPageListByRoleAndDepart(Page page, SysUser user, String roleId, String departId) { + + return userMapper.queryPageListByRoleAndDepart(page, user,roleId,departId); + } + + @Override + public Map getRoleNameByUserIds(List userIds) { + List list = this.baseMapper.getRoleNameByUserIds(userIds); + Map res = new HashMap<>(); + list.forEach(item -> { + if (res.get(item.getId()) == null) { + res.put(item.getId(), item.getRoleName()); + } else { + res.put(item.getId(), res.get(item.getId()) + "," + item.getRoleName()); + } + } + ); + return res; + } + } diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/vo/SysUserVo.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/vo/SysUserVo.java new file mode 100644 index 00000000..1176de9f --- /dev/null +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/vo/SysUserVo.java @@ -0,0 +1,44 @@ +package com.jero.modules.system.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.jero.modules.system.entity.SysUser; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 用户Vo + *

+ * + * @Author scott + * @since 2018-12-20 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class SysUserVo extends SysUser { + + /** + * 角色 + */ + @ApiModelProperty(value = "角色") + @TableField(exist = false) + private String roleName; + + /** + * 角色id + */ + @ApiModelProperty(value = "角色id") + @TableField(exist = false) + private String roleId; + + /** + * 角色code + */ + @ApiModelProperty(value = "角色code") + @TableField(exist = false) + private String roleCode; + +}