fix (farm): 人员管理,大屏

- 人员管理简化流程
- 大屏数据切换接口
This commit is contained in:
达富斌
2025-11-20 19:45:54 +08:00
parent f8cc2aa0cb
commit 02d71d6bfb
17 changed files with 312 additions and 227 deletions

View File

@@ -30,6 +30,7 @@ import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@@ -122,6 +123,15 @@ public class UserController {
return success(UserConvert.INSTANCE.convertSimpleList(list, deptMap));
}
@GetMapping({"/list-all-simple-by-role"})
@Operation(summary = "通过角色标识获取用户精简信息列表", description = "通过角色标识区分用户,主要用于前端的下拉选项")
@Parameter(name = "roleCode", description = "角色标识", required = true)
public CommonResult<List<UserSimpleByRoleRespVO>> getSimpleUserListByRole(@RequestParam("roleCode") String roleCode) {
List<AdminUserDO> list = userService.getSimpleUserListByRoleCode(roleCode);
List<UserSimpleByRoleRespVO> res = list.stream().map(e -> new UserSimpleByRoleRespVO(e.getId(), e.getNickname())).collect(Collectors.toList());
return success(res);
}
@GetMapping("/get")
@Operation(summary = "获得用户详情")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@@ -185,4 +195,6 @@ public class UserController {
return success(userService.fixUserTenantId(userId));
}
}

View File

@@ -0,0 +1,22 @@
package cn.iocoder.yudao.module.system.controller.admin.user.vo.user;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @description: TODO
* @author: binda
* @date: 2025/11/20 15:37
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserSimpleByRoleRespVO {
@Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
private Long id;
@Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
private String nickname;
}

View File

@@ -58,4 +58,6 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
@InterceptorIgnore(tenantLine = "true")
@Select("SELECT * FROM system_users WHERE deleted = 0 AND mobile = #{mobile} AND tenant_id = #{tenantId}")
AdminUserDO selectListByMobileAndTenantId(@Param("mobile") String mobile,@Param("tenantId") String tenantId);
}

View File

@@ -64,6 +64,13 @@ public interface RoleService {
*/
RoleDO getRole(Long id);
/**
* 通过角色标识获取角色
* @param code
* @return
*/
List<RoleDO> getRoleByCode(String code);
/**
* 获得角色,从缓存中
*

View File

@@ -9,6 +9,7 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RolePageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
@@ -189,6 +190,14 @@ public class RoleServiceImpl implements RoleService {
return roleMapper.selectById(id);
}
@Override
public List<RoleDO> getRoleByCode(String code) {
LambdaQueryWrapperX<RoleDO> x = new LambdaQueryWrapperX<>();
x.eqIfPresent(RoleDO::getCode, code);
x.ne(RoleDO::getType, 1);
return roleMapper.selectList(x);
}
@Override
@Cacheable(value = RedisKeyConstants.ROLE, key = "#id",
unless = "#result == null")

View File

@@ -238,4 +238,12 @@ public interface AdminUserService {
* @return
*/
List<TenantRespVO> loginForTenantList(LoginForTenantReqVO reqVO);
Map<String, String> getIdAndNickNameMap();
String getNickNameStrLink(String managerIds);
int countUser();
List<AdminUserDO> getSimpleUserListByRoleCode(String roleCode);
}

View File

@@ -26,15 +26,15 @@ import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqV
import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
import cn.iocoder.yudao.module.system.dal.dataobject.dept.UserPostDO;
import cn.iocoder.yudao.module.system.dal.dataobject.tenant.TenantDO;
import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.PersonnelDO;
import cn.iocoder.yudao.module.system.dal.mysql.dept.UserPostMapper;
import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper;
import cn.iocoder.yudao.module.system.dal.mysql.user.PersonnelMapper;
import cn.iocoder.yudao.module.system.service.dept.DeptService;
import cn.iocoder.yudao.module.system.service.dept.PostService;
import cn.iocoder.yudao.module.system.service.permission.PermissionService;
import cn.iocoder.yudao.module.system.service.permission.RoleService;
import cn.iocoder.yudao.module.system.service.tenant.TenantService;
import com.google.common.annotations.VisibleForTesting;
import com.mzt.logapi.context.LogRecordContext;
@@ -50,11 +50,13 @@ import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.*;
import static java.util.stream.Collectors.toMap;
/**
* 后台用户 Service 实现类
@@ -71,7 +73,8 @@ public class AdminUserServiceImpl implements AdminUserService {
@Resource
private AdminUserMapper userMapper;
@Resource
private RoleService roleService;
@Resource
private DeptService deptService;
@Resource
@@ -90,9 +93,6 @@ public class AdminUserServiceImpl implements AdminUserService {
@Resource
private ConfigApi configApi;
@Resource
private PersonnelMapper personnelMapper;
@Override
@Transactional(rollbackFor = Exception.class)
@LogRecord(type = SYSTEM_USER_TYPE, subType = SYSTEM_USER_CREATE_SUB_TYPE, bizNo = "{{#user.id}}",
@@ -142,7 +142,7 @@ public class AdminUserServiceImpl implements AdminUserService {
}
userDo.setRole(roles);
userDo.setId(IdUtil.fastUUID());
personnelMapper.insert(userDo);
// personnelMapper.insert(userDo);
return user.getId();
}
@@ -190,27 +190,27 @@ public class AdminUserServiceImpl implements AdminUserService {
// 2.1 更新用户
AdminUserDO updateObj = BeanUtils.toBean(updateReqVO, AdminUserDO.class);
userMapper.updateById(updateObj);
AdminUserDO adminUserDO = userMapper.selectById(updateObj.getId());
PersonnelDO userDo = personnelMapper.selectByPhone(adminUserDO.getMobile());
if (updateObj.getNickname() != null) userDo.setName(updateObj.getNickname());
if (updateObj.getMobile() != null) userDo.setPhone(updateObj.getMobile());
if (updateObj.getDeptId() != null) userDo.setDepartment(updateObj.getDeptId().toString());
if (updateObj.getTenantId() != null) userDo.setTenantId(updateObj.getTenantId().toString());
if (updateObj.getAvatar() != null) userDo.setPicture(updateObj.getAvatar());
userDo.setAccountStatus(0);
List<UserPostDO> userPostDOS = convertList(updateObj.getPostIds(),
postId -> new UserPostDO().setUserId(updateObj.getId()).setPostId(postId));
String roles = "";
for (UserPostDO up : userPostDOS) {
if (roles.length() > 0) {
roles += "," + up.getPostId();
} else {
roles = up.getPostId().toString();
}
}
userDo.setRole(roles);
personnelMapper.updateById(userDo);
// AdminUserDO adminUserDO = userMapper.selectById(updateObj.getId());
// PersonnelDO userDo = personnelMapper.selectByPhone(adminUserDO.getMobile());
// if (updateObj.getNickname() != null) userDo.setName(updateObj.getNickname());
// if (updateObj.getMobile() != null) userDo.setPhone(updateObj.getMobile());
// if (updateObj.getDeptId() != null) userDo.setDepartment(updateObj.getDeptId().toString());
// if (updateObj.getTenantId() != null) userDo.setTenantId(updateObj.getTenantId().toString());
// if (updateObj.getAvatar() != null) userDo.setPicture(updateObj.getAvatar());
// userDo.setAccountStatus(0);
// List<UserPostDO> userPostDOS = convertList(updateObj.getPostIds(),
// postId -> new UserPostDO().setUserId(updateObj.getId()).setPostId(postId));
// String roles = "";
// for (UserPostDO up : userPostDOS) {
// if (roles.length() > 0) {
// roles += "," + up.getPostId();
// } else {
// roles = up.getPostId().toString();
// }
// }
// userDo.setRole(roles);
// personnelMapper.updateById(userDo);
//
// 2.2 更新岗位
updateUserPost(updateReqVO, updateObj);
@@ -298,7 +298,7 @@ public class AdminUserServiceImpl implements AdminUserService {
// 1. 校验用户存在
AdminUserDO user = validateUserExists(id);
AdminUserDO adminUserDO = userMapper.selectById(id);
personnelMapper.delete(PersonnelDO::getPhone, adminUserDO.getMobile());
// personnelMapper.delete(PersonnelDO::getPhone, adminUserDO.getMobile());
// 2.1 删除用户
userMapper.deleteById(id);
// 2.2 删除用户关联数据
@@ -656,4 +656,47 @@ public class AdminUserServiceImpl implements AdminUserService {
return tenantService.loginForTenantList(reqVO);
}
@Override
public Map<String, String> getIdAndNickNameMap() {
Map<String, String> nicknameMap = userMapper.selectList().stream()
.collect(toMap(user -> String.valueOf(user.getId()), AdminUserDO::getNickname, (v1, v2) -> v1));
return nicknameMap;
}
@Override
public String getNickNameStrLink(String managerIds) {
List<AdminUserDO> userDOS = userMapper.selectByIds(Arrays.asList(managerIds.split(",")));
String nicknames = userDOS.stream()
.map(AdminUserDO::getNickname)
.collect(Collectors.joining(","));
return nicknames;
}
@Override
public int countUser() {
return userMapper.selectCount().intValue();
}
@Override
public List<AdminUserDO> getSimpleUserListByRoleCode(String roleCode) {
List<RoleDO> roles = roleService.getRoleByCode(roleCode);
if (null == roles || roles.size() == 0) {
return Collections.EMPTY_LIST;
}
List<Long> roleIds = roles.stream()
.map(RoleDO::getId)
.collect(Collectors.toList());
Set<Long> userIds = permissionService.getUserRoleIdListByRoleId(roleIds);
List<AdminUserDO> userList = userMapper.selectByIds(userIds);
return userList;
}
}