|
@@ -1,9 +1,12 @@
|
|
|
package com.abi.qms.platform.service.impl;
|
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.abi.qms.platform.dao.entity.BaseFactory;
|
|
|
import com.abi.qms.platform.dao.entity.UserInfo;
|
|
|
import com.abi.qms.platform.dao.entity.UserMappingInfoRole;
|
|
|
import com.abi.qms.platform.dao.entity.UserRole;
|
|
|
+import com.abi.qms.platform.dao.enums.TrueFalseEnum;
|
|
|
+import com.abi.qms.platform.dao.mapper.BaseFactoryMapper;
|
|
|
import com.abi.qms.platform.dao.mapper.UserInfoMapper;
|
|
|
import com.abi.qms.platform.dao.mapper.UserMappingInfoRoleMapper;
|
|
|
import com.abi.qms.platform.dao.mapper.UserRoleMapper;
|
|
@@ -14,6 +17,7 @@ import com.abi.qms.platform.dto.req.UpdateUserReq;
|
|
|
import com.abi.qms.platform.dto.res.GetUserInfoRes;
|
|
|
import com.abi.qms.platform.dto.res.ListRoleTreeRes;
|
|
|
import com.abi.qms.platform.dto.res.ListUserRes;
|
|
|
+import com.abi.qms.platform.infrastructure.util.AssertUtil;
|
|
|
import com.abi.qms.platform.infrastructure.util.PageUtil;
|
|
|
import com.abi.qms.platform.infrastructure.util.UserUtil;
|
|
|
import com.abi.qms.platform.service.RoleManagerService;
|
|
@@ -52,6 +56,9 @@ public class UserManagerServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo
|
|
|
@Autowired
|
|
|
private UserMappingInfoRoleMapper userMappingInfoRoleMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private BaseFactoryMapper baseFactoryMapper;
|
|
|
+
|
|
|
@Autowired
|
|
|
private RoleManagerService roleManagerService;
|
|
|
|
|
@@ -63,36 +70,49 @@ public class UserManagerServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo
|
|
|
**/
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public void createUser(CreateUserReq createUserReq) {
|
|
|
-
|
|
|
+ public void createUser(CreateUserReq req) {
|
|
|
+ //0-校验入参
|
|
|
QueryWrapper<UserRole> roleQueryWrapper = new QueryWrapper<>();
|
|
|
- roleQueryWrapper.eq("role_code", createUserReq.getRoleCode());
|
|
|
+ roleQueryWrapper.eq("role_code", req.getRoleCode());
|
|
|
roleQueryWrapper.eq("is_delete", 0);
|
|
|
UserRole userRole = userRoleMapper.selectOne(roleQueryWrapper);
|
|
|
if (Objects.isNull(userRole)) {
|
|
|
throw new BusinessException("该角色不存在。");
|
|
|
}
|
|
|
- if (lambdaQuery().eq(UserInfo::getEmployeeNo, createUserReq.getEmployeeNo().trim()).count() > 0) {
|
|
|
- throw new BusinessException("工号" + createUserReq.getEmployeeNo() + "已存在,请勿重复创建。");
|
|
|
+ if (lambdaQuery().eq(UserInfo::getEmployeeNo, req.getEmployeeNo().trim()).count() > 0) {
|
|
|
+ throw new BusinessException("工号" + req.getEmployeeNo() + "已存在,请勿重复创建。");
|
|
|
}
|
|
|
- if (lambdaQuery().eq(UserInfo::getUserName, createUserReq.getUserName().trim()).count() > 0) {
|
|
|
- throw new BusinessException("用户" + createUserReq.getUserName() + "已存在,请勿重复创建。");
|
|
|
+ if (lambdaQuery().eq(UserInfo::getUserName, req.getUserName().trim()).count() > 0) {
|
|
|
+ throw new BusinessException("用户" + req.getUserName() + "已存在,请勿重复创建。");
|
|
|
+ }
|
|
|
+ if(!TrueFalseEnum.TRUE.is(req.getIsAbi()) && req.getFactoryId()==null){
|
|
|
+ throw new BusinessException("非ABI用户必须选择供应商");
|
|
|
+ }
|
|
|
+ //查询供应商
|
|
|
+ if(req.getFactoryId()!=null){
|
|
|
+ BaseFactory factory = baseFactoryMapper.selectById(req.getFactoryId());
|
|
|
+ AssertUtil.isNull(factory,"供应商不存在");
|
|
|
}
|
|
|
- UserInfo userInfo = new UserInfo();
|
|
|
- userInfo.setUserName(createUserReq.getUserName());
|
|
|
- userInfo.setEmployeeNo(createUserReq.getEmployeeNo());
|
|
|
- userInfo.setEmail(createUserReq.getEmail());
|
|
|
- userInfo.setPassword(createUserReq.getPassword());
|
|
|
- userInfo.setIsAbi(createUserReq.getIsAbi());
|
|
|
- userInfo.setFactoryId(createUserReq.getFactoryId());
|
|
|
- userInfo.setRoleCode(createUserReq.getRoleCode());
|
|
|
|
|
|
+ //操作人
|
|
|
UserInfo loginUser = userUtil.getUser();
|
|
|
- userInfo.setCreateBy(loginUser.getId());
|
|
|
- save(userInfo);
|
|
|
+
|
|
|
+ //1-插入user
|
|
|
+ UserInfo userInfo = new UserInfo();
|
|
|
+ userInfo.setUserName(req.getUserName());
|
|
|
+ userInfo.setEmployeeNo(req.getEmployeeNo());
|
|
|
+ userInfo.setEmail(req.getEmail());
|
|
|
+ userInfo.setPassword(req.getPassword());
|
|
|
+ userInfo.setIsAbi(req.getIsAbi());
|
|
|
+ userInfo.setFactoryId(req.getFactoryId());
|
|
|
+ userInfo.setRoleCode(req.getRoleCode());
|
|
|
+ userInfo.setPhone(req.getPhone());
|
|
|
+ userInfoMapper.insert(userInfo);
|
|
|
+ //放入link flag链接,空间换时间
|
|
|
userInfo.setLinkFlag(loginUser.getLinkFlag() + userInfo.getId() + ",");
|
|
|
- updateById(userInfo);
|
|
|
- //添加用户和角色的映射关系
|
|
|
+ userInfoMapper.updateById(userInfo);
|
|
|
+
|
|
|
+ //2-添加用户和角色的映射关系
|
|
|
UserMappingInfoRole userMappingInfoRole = new UserMappingInfoRole();
|
|
|
userMappingInfoRole.setUserId(userInfo.getId());
|
|
|
userMappingInfoRole.setRoleCode(userRole.getRoleCode());
|
|
@@ -105,39 +125,55 @@ public class UserManagerServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo
|
|
|
**/
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public void updateUser(UpdateUserReq updateUserReq) {
|
|
|
-
|
|
|
+ public void updateUser(UpdateUserReq req) {
|
|
|
+ //0-校验入参
|
|
|
+ UserInfo userInfo = userInfoMapper.selectById(req.getId());
|
|
|
+ if(Objects.isNull(userInfo)){
|
|
|
+ throw new BusinessException("该用户不存在。");
|
|
|
+ }
|
|
|
QueryWrapper<UserRole> roleQueryWrapper = new QueryWrapper<>();
|
|
|
- roleQueryWrapper.eq("role_code", updateUserReq.getRoleCode());
|
|
|
+ roleQueryWrapper.eq("role_code", req.getRoleCode());
|
|
|
roleQueryWrapper.eq("is_delete", 0);
|
|
|
UserRole userRole = userRoleMapper.selectOne(roleQueryWrapper);
|
|
|
if (Objects.isNull(userRole)) {
|
|
|
- throw new BusinessException("该角色不存在。");
|
|
|
- }
|
|
|
- UserInfo userInfo = userInfoMapper.selectById(updateUserReq.getId());
|
|
|
- if(Objects.isNull(userInfo)){
|
|
|
- throw new BusinessException("该用户不存在。");
|
|
|
+ throw new BusinessException("选择的角色不存在。");
|
|
|
}
|
|
|
- userInfo.setEmail(updateUserReq.getEmail());
|
|
|
- userInfo.setFactoryId(updateUserReq.getFactoryId());
|
|
|
- userInfo.setRoleCode(updateUserReq.getRoleCode());
|
|
|
+ String oriRoleCode = userInfo.getRoleCode();
|
|
|
+
|
|
|
+ //1-修改主表
|
|
|
+ userInfo.setEmail(req.getEmail());
|
|
|
+ userInfo.setPhone(req.getPhone());
|
|
|
+ userInfo.setFactoryId(req.getFactoryId());
|
|
|
+ userInfo.setRoleCode(req.getRoleCode());
|
|
|
userInfoMapper.updateById(userInfo);
|
|
|
- //修改用户和角色的映射关系
|
|
|
- if(!userRole.getRoleCode().equals(updateUserReq.getRoleCode())) {
|
|
|
- QueryWrapper<UserMappingInfoRole> qwUR = new QueryWrapper<>();
|
|
|
- qwUR.eq("user_id", userInfo.getId());
|
|
|
- qwUR.eq("is_delete", 0);
|
|
|
- UserMappingInfoRole userMappingInfoRole = userMappingInfoRoleMapper.selectOne(qwUR);
|
|
|
+
|
|
|
+ //2-修改用户和角色的映射关系
|
|
|
+ //如果修改了角色,才修改映射
|
|
|
+ if(!oriRoleCode.equals(req.getRoleCode())) {
|
|
|
+ //先查询原有映射
|
|
|
+ QueryWrapper<UserMappingInfoRole> mapQw = new QueryWrapper<>();
|
|
|
+ mapQw.eq("user_id", userInfo.getId());
|
|
|
+ mapQw.eq("is_delete", 0);
|
|
|
+ UserMappingInfoRole userMappingInfoRole = userMappingInfoRoleMapper.selectOne(mapQw);
|
|
|
+ //正常逻辑是修改映射
|
|
|
if (Objects.nonNull(userMappingInfoRole)) {
|
|
|
+ //修改印射
|
|
|
userMappingInfoRole.setRoleCode(userRole.getRoleCode());
|
|
|
userMappingInfoRole.setRoleName(userRole.getRoleName());
|
|
|
userMappingInfoRoleMapper.updateById(userMappingInfoRole);
|
|
|
+ }else{
|
|
|
+ //如果是手动造的,或者被改动的不正确的数据,没有印射,则新增
|
|
|
+ userMappingInfoRole = new UserMappingInfoRole();
|
|
|
+ userMappingInfoRole.setUserId(userInfo.getId());
|
|
|
+ userMappingInfoRole.setRoleCode(userRole.getRoleCode());
|
|
|
+ userMappingInfoRole.setRoleName(userRole.getRoleName());
|
|
|
+ userMappingInfoRoleMapper.insert(userMappingInfoRole);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 查询角色树
|
|
|
+ * 查询角色列表
|
|
|
**/
|
|
|
@Override
|
|
|
public ListRoleTreeRes listRoleTree() {
|
|
@@ -163,9 +199,12 @@ public class UserManagerServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo
|
|
|
**/
|
|
|
@Override
|
|
|
public GetUserInfoRes getUserInfo(Long userInfoId) {
|
|
|
+ //查询用户
|
|
|
UserInfo userInfo = userInfoMapper.selectById(userInfoId);
|
|
|
- GetUserInfoRes getUserInfoRes = new GetUserInfoRes();
|
|
|
- BeanUtils.copyProperties(userInfo, getUserInfoRes);
|
|
|
+
|
|
|
+ //构造出参
|
|
|
+ GetUserInfoRes getUserInfoRes = PojoConverterUtils.copy(userInfo,GetUserInfoRes.class);
|
|
|
+
|
|
|
return getUserInfoRes;
|
|
|
}
|
|
|
|
|
@@ -174,10 +213,15 @@ public class UserManagerServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo
|
|
|
**/
|
|
|
@Override
|
|
|
public ListUserRes listUser(ListUserReq listUserReq) {
|
|
|
+ //当前登录人
|
|
|
UserInfo user = userUtil.getUser();
|
|
|
+ //放入数据链标记(效果是仅能看到自己这条链路下的用户)
|
|
|
listUserReq.setLinkFlag("," + user.getId() + ",");
|
|
|
+
|
|
|
+ //1-分页查询
|
|
|
IPage iPage = userInfoMapper.selectUserInfoPage(PageUtil.createPage(listUserReq), listUserReq);
|
|
|
List<UserInfo> records = iPage.getRecords();
|
|
|
+
|
|
|
//封装出参
|
|
|
ListUserRes res = new ListUserRes();
|
|
|
//放入分页信息
|
|
@@ -185,17 +229,24 @@ public class UserManagerServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo
|
|
|
//放入出参列表
|
|
|
List<ListUserRes.UserInfoBean> eventBeanList = PojoConverterUtils.copyList(records, ListUserRes.UserInfoBean.class);
|
|
|
res.setUserInfoBeanList(eventBeanList);
|
|
|
+
|
|
|
return res;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 启用/停用用户
|
|
|
+ * @param userInfoId
|
|
|
+ */
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void enableUser(Long userInfoId) {
|
|
|
+ //查询用户信息
|
|
|
UserInfo userInfo = userInfoMapper.selectById(userInfoId);
|
|
|
- if (ObjectUtil.isNotEmpty(userInfo)) {
|
|
|
- userInfo.setIsEnable(1 - userInfo.getIsEnable());
|
|
|
- userInfoMapper.updateById(userInfo);
|
|
|
- }
|
|
|
+ AssertUtil.isNull(userInfo,"用户不存在");
|
|
|
+
|
|
|
+ //状态反一反。。。
|
|
|
+ userInfo.setIsEnable(1 - userInfo.getIsEnable());
|
|
|
+ userInfoMapper.updateById(userInfo);
|
|
|
}
|
|
|
|
|
|
@Override
|