From 189849927e37278c8bc03202bd714aca7a0f8f7d Mon Sep 17 00:00:00 2001
From: heheng <475597332@qq.com>
Date: 星期三, 10 十二月 2025 11:10:03 +0800
Subject: [PATCH] 修改功能
---
multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java | 130 +++++++++++++++++++++++++++++++++++++-----
1 files changed, 113 insertions(+), 17 deletions(-)
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java
index 681a283..c96fc70 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java
@@ -3,6 +3,7 @@
import cn.hutool.core.codec.Base64;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gkhy.exam.common.annotation.DataScope;
import com.gkhy.exam.common.api.CommonPage;
@@ -16,8 +17,14 @@
import com.gkhy.exam.common.utils.RedisUtils;
import com.gkhy.exam.common.utils.SecurityUtils;
import com.gkhy.exam.common.utils.StringUtils;
+import com.gkhy.exam.system.domain.EmployeeRecord;
import com.gkhy.exam.system.domain.ExStudent;
import com.gkhy.exam.system.domain.SysUserRole;
+import com.gkhy.exam.system.domain.req.EmployeeRecordReq;
+import com.gkhy.exam.system.domain.vo.EmployeeRecordVO;
+import com.gkhy.exam.system.domain.vo.SpSysUser;
+import com.gkhy.exam.system.mapper.EmployeeRecordMapper;
+import com.gkhy.exam.system.mapper.ExStudentMapper;
import com.gkhy.exam.system.mapper.SysUserMapper;
import com.gkhy.exam.system.mapper.SysUserRoleMapper;
import com.gkhy.exam.system.service.ExStudentService;
@@ -28,6 +35,7 @@
import org.springframework.transaction.annotation.Transactional;
import javax.validation.Validator;
+import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@@ -56,6 +64,13 @@
@Autowired
private ExStudentService exStudentService;
+ @Autowired
+ private EmployeeRecordMapper employeeRecordMapper;
+
+ @Autowired
+ private ExStudentMapper exStudentMapper;
+
+
@Override
public CommonPage<SysUser> selectUserList(SysUser user) {
SysUser currentUser = SecurityUtils.getLoginUser().getUser();
@@ -69,6 +84,23 @@
}
PageUtils.startPage();
users = baseMapper.userList(user);
+ }
+ return CommonPage.restPage(users);
+ }
+
+ @Override
+ public CommonPage selectSpUserList(SysUser user) {
+ SysUser currentUser = SecurityUtils.getLoginUser().getUser();
+ List<SpSysUser> users = new ArrayList<>();
+ if (!currentUser.getUserType().equals(UserTypeEnum.WORKSHOP_USER.getCode())) {
+ if (!currentUser.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())) {
+ user.setCompanyId(currentUser.getCompanyId());
+ Map<String, Object> paramsMap = new HashMap<>();
+// paramsMap.put("userType",currentUser.getUserType());
+ user.setParams(paramsMap);
+ }
+ PageUtils.startPage();
+ users = baseMapper.userSpList(user);
}
return CommonPage.restPage(users);
}
@@ -123,6 +155,8 @@
@Override
public SysUser selectUserById(Long userId) {
+
+
return baseMapper.getUserById(userId);
}
@@ -133,12 +167,17 @@
throw new ApiException("管理员用户不能被删除");
}
delCacheByUsername(user.getUsername());
- return baseMapper.deleteUserById(userId);
+ int i = baseMapper.deleteUserById(userId);
+ if (i > 0) {
+ delEmployeeRecord(userId);
+ }
+ return i;
}
@Override
@Transactional(rollbackFor = RuntimeException.class)
public int addUser(SysUser user) {
+
checkRequestData(user);
checkUserAllowed(user);
@@ -148,22 +187,46 @@
batchSaveRole(user.getRoles(), user.getId(), false);
- ExStudent exStudent = new ExStudent();
- exStudent.setCompanyId(user.getCompanyId());
- exStudent.setName(user.getName());
- exStudent.setPassword(user.getPassword());
- exStudent.setDeptId(user.getDeptId());
- exStudent.setDuty(user.getDuty());
- exStudent.setSex(user.getSex());
- exStudent.setPhone(user.getPhone());
- exStudent.setUserId(user.getId());
- exStudentService.insertStudent(exStudent);
+ if (user.getCompanyId() != null) {
+ ExStudent exStudent = new ExStudent();
+ exStudent.setCompanyId(user.getCompanyId());
+ exStudent.setName(user.getName());
+ exStudent.setPassword(user.getPassword());
+ exStudent.setDeptId(user.getDeptId());
+ exStudent.setDuty(user.getDuty());
+ exStudent.setSex(user.getSex());
+ exStudent.setPhone(user.getPhone());
+ exStudent.setUserId(user.getId());
+ exStudentService.insertStudent(exStudent);
+ Integer internal = user.getInternal();
+ if (internal == 0) {
+ EmployeeRecord employeeRecord = new EmployeeRecord();
+ employeeRecord.setCompanyId(user.getCompanyId());
+ employeeRecord.setUserId(user.getId());
+ employeeRecord.setCreateBy(SecurityUtils.getUsername());
+ employeeRecord.setCreateTime(LocalDateTime.now());
+ saveEmployeeRecord(employeeRecord);
+ }
+ }
+
if (row < 1) {
throw new ApiException("新增用户失败");
}
return row;
}
+
+ private void saveEmployeeRecord(EmployeeRecord employeeRecord) {
+ employeeRecordMapper.insert(employeeRecord);
+ }
+
+ private void delEmployeeRecord(Long userId) {
+ LambdaUpdateWrapper<EmployeeRecord> updateWrapper = new LambdaUpdateWrapper<>();
+ updateWrapper.eq(EmployeeRecord::getUserId, userId).set(EmployeeRecord::getDelFlag, 1)
+ .set(EmployeeRecord::getUpdateBy, SecurityUtils.getUsername()).set(EmployeeRecord::getUpdateTime, LocalDateTime.now());
+ employeeRecordMapper.update(new EmployeeRecord(), updateWrapper);
+ }
+
public void batchSaveRole(List<SysRole> roleIds, Long userId, boolean isUpdate) {
@@ -191,12 +254,45 @@
@Override
public int updateUser(SysUser user) {
+ SysUser sysUser = selectUserById(user.getId());
checkRequestData(user);
checkUserAllowed(user);
user.setUpdateBy(SecurityUtils.getUsername());
- user.setPassword(null);
+
+ if (StringUtils.isNotEmpty(user.getPassword())) {
+ user.setPassword(SecurityUtils.encryptPassword(Base64.decodeStr(user.getPassword())));
+ } else {
+ user.setPassword(null);
+ }
+ if (sysUser.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode()) && !user.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())){
+ if (user.getCompanyId() == null){
+ throw new ApiException("请选择所属公司");
+ }
+ }
+ if (user.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode()) && !sysUser.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())){
+ user.setCompanyId(null);
+ delEmployeeRecord(user.getId());
+ LambdaUpdateWrapper<ExStudent> updateWrapper = new LambdaUpdateWrapper<>();
+ updateWrapper.eq(ExStudent::getUserId, user.getId()).set(ExStudent::getDelFlag, 1)
+ .set(ExStudent::getUpdateBy, SecurityUtils.getUsername()).set(ExStudent::getUpdateTime, LocalDateTime.now());
+ exStudentMapper.update(new ExStudent(),updateWrapper);
+ }
+
int row = baseMapper.updateById(user);
batchSaveRole(user.getRoles(), user.getId(), true);
+ if (user.getCompanyId() != null){
+ if (sysUser.getInternal() == 0 && sysUser.getInternal() == 1) {
+ delEmployeeRecord(user.getId());
+ } else if (sysUser.getInternal() == 1 && user.getInternal() == 0) {
+ EmployeeRecord employeeRecord = new EmployeeRecord();
+ employeeRecord.setCompanyId(user.getCompanyId());
+ employeeRecord.setUserId(user.getId());
+ employeeRecord.setCreateBy(SecurityUtils.getUsername());
+ employeeRecord.setCreateTime(LocalDateTime.now());
+ saveEmployeeRecord(employeeRecord);
+ }
+ }
+
if (row < 1) {
throw new ApiException("更新用户信息失败");
@@ -266,9 +362,9 @@
@Override
public Map<String, Object> getUserData(Long companyId) {
- List<SysUser> sysUsers = baseMapper.selectList(new LambdaQueryWrapper<>(
- SysUser.class
- ).eq(SysUser::getCompanyId, companyId).eq(SysUser::getDelFlag, UserConstant.ENABLE));
+ EmployeeRecordReq req = new EmployeeRecordReq();
+ req.setCompanyId(companyId);
+ List<EmployeeRecordVO> sysUsers = employeeRecordMapper.selectEmployeeRecordList(req);
int totalUser = sysUsers.size();
Map<String, Object> map = new HashMap<>();
@@ -276,7 +372,7 @@
map.put("totalUser", totalUser);
//专业
map.put("post", sysUsers.stream()
- .map(SysUser::getPost)
+ .map(EmployeeRecordVO::getPost)
.filter(Objects::nonNull)
.distinct()
.collect(Collectors.joining(",")));
@@ -353,7 +449,7 @@
map.put("jsRatio", String.format("%.2f", jsRatio));
double averageAge = sysUsers.stream()
.filter(user -> user.getAge() != null) // 过滤年龄为null的用户
- .mapToInt(SysUser::getAge) // 提取年龄值
+ .mapToInt(EmployeeRecordVO::getAge) // 提取年龄值
.average() // 计算平均值
.orElse(0.0);
map.put("avgAge", String.format("%.1f", averageAge));//平均年龄
--
Gitblit v1.9.2