fix 用户查询回显角色信息
This commit is contained in:
+45
-1
@@ -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<IPage<SysUserVo>> 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<SysUserVo> page = new Page<>(pageNo, pageSize);
|
||||
IPage<SysUserVo> pageList = sysUserService.queryPageListByRoleAndDepart(page, user, roleId, departId);
|
||||
List<SysUserVo> 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<String> userIds = pageList.getRecords().stream().map(SysUser::getId).collect(Collectors.toList());
|
||||
if (userIds != null && userIds.size() > 0) {
|
||||
Map<String, String> useDepNames = sysUserService.getDepNamesByUserIds(userIds);
|
||||
Map<String, String> 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<SysUserRole> queryWrapper = new QueryWrapper<SysUserRole>();
|
||||
QueryWrapper<SysUserRole> 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<SysUserRole> userRoleList = sysUserRoleService.listObjs(queryWrapper);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+39
-16
@@ -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<SysUser> {
|
||||
/**
|
||||
* 通过用户账号查询用户信息
|
||||
* 通过用户账号查询用户信息
|
||||
*
|
||||
* @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<SysUser> {
|
||||
IPage<SysUser> getUserByDepId(Page page, @Param("departId") String departId, @Param("username") String username);
|
||||
|
||||
/**
|
||||
* 根据用户Ids,查询用户所属部门名称信息
|
||||
* 根据用户Ids,查询用户所属部门名称信息
|
||||
*
|
||||
* @param userIds
|
||||
* @return
|
||||
*/
|
||||
List<SysUserDepVo> getDepNamesByUserIds(@Param("userIds")List<String> userIds);
|
||||
List<SysUserDepVo> getDepNamesByUserIds(@Param("userIds") List<String> userIds);
|
||||
|
||||
/**
|
||||
* 根据部门Ids,查询部门下用户信息
|
||||
* 根据部门Ids,查询部门下用户信息
|
||||
*
|
||||
* @param page
|
||||
* @param departIds
|
||||
* @return
|
||||
@@ -53,38 +59,42 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
|
||||
|
||||
/**
|
||||
* 根据角色Id查询用户信息
|
||||
*
|
||||
* @param page
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
IPage<SysUser> 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<SysUser> {
|
||||
*/
|
||||
int deleteLogicDeleted(@Param("userIds") String userIds);
|
||||
|
||||
/** 更新空字符串为null【此写法有sql注入风险,禁止随便用】 */
|
||||
/**
|
||||
* 更新空字符串为null【此写法有sql注入风险,禁止随便用】
|
||||
*/
|
||||
int updateNullByEmptyString(@Param("fieldName") String fieldName);
|
||||
|
||||
|
||||
/**
|
||||
* 根据部门Ids,查询部门下用户信息
|
||||
* 根据部门Ids,查询部门下用户信息
|
||||
*
|
||||
* @param departIds
|
||||
* @return
|
||||
*/
|
||||
List<SysUser> queryByDepIds(@Param("departIds")List<String> departIds,@Param("username") String username);
|
||||
List<SysUser> queryByDepIds(@Param("departIds") List<String> departIds, @Param("username") String username);
|
||||
|
||||
IPage<SysUserVo> queryPageListByRoleAndDepart(Page<SysUserVo> page, @Param("user") SysUser user, @Param("roleId") String roleId, @Param("departId") String departId);
|
||||
|
||||
/**
|
||||
* 根据用户Ids,查询用户所属角色名称信息
|
||||
*
|
||||
* @param userIds
|
||||
* @return
|
||||
*/
|
||||
List<SysRole> getRoleNameByUserIds(@Param("userIds") List<String> userIds);
|
||||
}
|
||||
|
||||
+29
@@ -161,4 +161,33 @@
|
||||
and username != #{username}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="queryPageListByRoleAndDepart" resultType="com.jero.modules.system.vo.SysUserVo">
|
||||
select a.*
|
||||
from (select su.*, group_concat(sur.role_id) roleIds, group_concat(sud.dep_id) departIds
|
||||
from sys_user su
|
||||
left join sys_user_role sur on su.id = sur.user_id
|
||||
left join sys_user_depart sud ON su.id = sud.user_id
|
||||
where su.del_flag = 0
|
||||
GROUP BY su.id) a
|
||||
<where>
|
||||
<if test="departId != null and departId != ''">
|
||||
a.departIds LIKE CONCAT('%', #{departId},'%')
|
||||
</if>
|
||||
<if test="roleId != null and roleId != ''">
|
||||
and a.roleIds LIKE CONCAT('%', #{roleId},'%')
|
||||
</if>
|
||||
<if test="user.username != null and user.username != ''">
|
||||
and a.username LIKE CONCAT('%', #{user.username},'%')
|
||||
</if>
|
||||
</where>
|
||||
|
||||
</select>
|
||||
|
||||
<select id="getRoleNameByUserIds" resultType="com.jero.modules.system.entity.SysRole">
|
||||
select sr.role_name, sur.user_id id from sys_role sr left join sys_user_role sur on sr.id = sur.role_id where sur.user_id in
|
||||
<foreach collection="userIds" index="index" item="id" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</select>
|
||||
</mapper>
|
||||
+5
@@ -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<SysUser> {
|
||||
* @return
|
||||
*/
|
||||
List<SysUser> queryByDepIds(List<String> departIds, String username);
|
||||
|
||||
IPage<SysUserVo> queryPageListByRoleAndDepart(Page<SysUserVo> page, SysUser user, String roleId, String departId);
|
||||
|
||||
Map<String, String> getRoleNameByUserIds(List<String> userIds);
|
||||
}
|
||||
|
||||
+22
@@ -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<SysUserMapper, SysUser> impl
|
||||
return userMapper.queryByDepIds(departIds,username);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPage<SysUserVo> queryPageListByRoleAndDepart(Page<SysUserVo> page, SysUser user, String roleId, String departId) {
|
||||
|
||||
return userMapper.queryPageListByRoleAndDepart(page, user,roleId,departId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String> getRoleNameByUserIds(List<String> userIds) {
|
||||
List<SysRole> list = this.baseMapper.getRoleNameByUserIds(userIds);
|
||||
Map<String, String> 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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 用户Vo
|
||||
* </p>
|
||||
*
|
||||
* @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;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user