|
|
|
@ -1,20 +1,84 @@
|
|
|
|
|
package com.supervision.knowsub.service.impl;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
|
|
import cn.hutool.core.util.ObjUtil;
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
|
import com.supervision.knowsub.domain.UserInfo;
|
|
|
|
|
import com.supervision.knowsub.dto.role.UserRoleDTO;
|
|
|
|
|
import com.supervision.knowsub.dto.user.UserPageQuery;
|
|
|
|
|
import com.supervision.knowsub.exception.BusinessException;
|
|
|
|
|
import com.supervision.knowsub.model.SystemRole;
|
|
|
|
|
import com.supervision.knowsub.model.SystemUser;
|
|
|
|
|
import com.supervision.knowsub.service.SystemRoleService;
|
|
|
|
|
import com.supervision.knowsub.service.UserManageService;
|
|
|
|
|
import com.supervision.knowsub.service.UserRoleRelationManageService;
|
|
|
|
|
import com.supervision.knowsub.util.TokenUtil;
|
|
|
|
|
import com.supervision.knowsub.util.UserUtil;
|
|
|
|
|
import com.supervision.knowsub.vo.user.LoginReqVO;
|
|
|
|
|
import com.supervision.knowsub.vo.user.LoginResVO;
|
|
|
|
|
import com.supervision.knowsub.vo.user.UserInfoReqVo;
|
|
|
|
|
import com.supervision.knowsub.dto.user.UserInfoDTO;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.Optional;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
@Service
|
|
|
|
|
@RequiredArgsConstructor
|
|
|
|
|
public class UserManageServiceImpl implements UserManageService {
|
|
|
|
|
|
|
|
|
|
@Value("${user.default.password}")
|
|
|
|
|
private String defaultPassword;
|
|
|
|
|
|
|
|
|
|
private final SystemUserServiceImpl systemUserService;
|
|
|
|
|
|
|
|
|
|
private final UserRoleRelationManageService userRoleRelationManageService;
|
|
|
|
|
|
|
|
|
|
private final SystemRoleService systemRoleService;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public LoginResVO login(LoginReqVO reqVO) {
|
|
|
|
|
|
|
|
|
|
Optional<SystemUser> user = systemUserService.lambdaQuery().eq(SystemUser::getAccount, reqVO.getUserAccount()).last("limit 1").oneOpt();
|
|
|
|
|
if (user.isEmpty() || !UserUtil.checkUserPassword(reqVO.getPassword(), user.get().getUserPd())) {
|
|
|
|
|
throw new BusinessException("用户名或密码有误!");
|
|
|
|
|
}
|
|
|
|
|
UserInfo userInfoToken = BeanUtil.copyProperties(user.get(), UserInfo.class);
|
|
|
|
|
// 更新用户最近的登录时间
|
|
|
|
|
systemUserService.lambdaUpdate().set(SystemUser::getRecentLoginTime, LocalDateTime.now()).eq(SystemUser::getId, user.get().getId()).update();
|
|
|
|
|
String token = TokenUtil.creatToken(JSONUtil.toJsonStr(userInfoToken));
|
|
|
|
|
|
|
|
|
|
LoginResVO loginResVO = BeanUtil.toBean(user.get(), LoginResVO.class);
|
|
|
|
|
loginResVO.setToken(token);
|
|
|
|
|
loginResVO.setUsername(user.get().getUsername());
|
|
|
|
|
List<UserRoleDTO> userRoleDTOS = userRoleRelationManageService.listUserRole(user.get().getId(),null);
|
|
|
|
|
loginResVO.setUserRoleDTOList(userRoleDTOS);
|
|
|
|
|
return loginResVO;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public UserInfoDTO getUserAccountInfo() {
|
|
|
|
|
UserInfo user = UserUtil.getUser();
|
|
|
|
|
SystemUser systemUser = systemUserService.getById(user.getId());
|
|
|
|
|
if (ObjectUtil.isEmpty(systemUser)){
|
|
|
|
|
throw new BusinessException("用户信息不存在");
|
|
|
|
|
}
|
|
|
|
|
return BeanUtil.toBean(systemUser, UserInfoDTO.class);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<SystemUser> listUserByDeptId(String deptId,Integer status) {
|
|
|
|
|
Assert.notEmpty(deptId,"部门id不能为空");
|
|
|
|
@ -28,4 +92,93 @@ public class UserManageServiceImpl implements UserManageService {
|
|
|
|
|
return systemUserService.lambdaQuery().eq(SystemUser::getDeptId,deptId)
|
|
|
|
|
.eq(ObjUtil.isNull(status),SystemUser::getStatus,status).count();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public String saveUserInfo(UserInfoReqVo userInfoReqVo) {
|
|
|
|
|
Assert.notEmpty(userInfoReqVo.getAccount(), "用户名不能为空");
|
|
|
|
|
Assert.notEmpty(userInfoReqVo.getUsername(), "姓名不能为空");
|
|
|
|
|
Assert.notEmpty(userInfoReqVo.getDeptId(), "部门不能为空");
|
|
|
|
|
Assert.notEmpty(userInfoReqVo.getRoleIds(), "角色不能为空");
|
|
|
|
|
|
|
|
|
|
Long count = systemUserService.lambdaQuery().eq(SystemUser::getAccount, userInfoReqVo.getAccount()).count();
|
|
|
|
|
Assert.isTrue(count == 0, "用户名已存在");
|
|
|
|
|
|
|
|
|
|
SystemUser systemUser = BeanUtil.toBean(userInfoReqVo, SystemUser.class);
|
|
|
|
|
// 设置默认密码
|
|
|
|
|
systemUser.setUserPd(UserUtil.signPassword(defaultPassword));
|
|
|
|
|
systemUser.setStatus(0);
|
|
|
|
|
systemUserService.save(systemUser);
|
|
|
|
|
|
|
|
|
|
userRoleRelationManageService.saveUserRoleRelation(systemUser.getId(), userInfoReqVo.getRoleIds());
|
|
|
|
|
return systemUser.getId();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public void updateUserInfo(UserInfoReqVo userInfoReqVo) {
|
|
|
|
|
|
|
|
|
|
Assert.notEmpty(userInfoReqVo.getId(), "用户id不能为空");
|
|
|
|
|
Assert.notEmpty(userInfoReqVo.getAccount(), "用户名不能为空");
|
|
|
|
|
Assert.notEmpty(userInfoReqVo.getUsername(), "姓名不能为空");
|
|
|
|
|
Assert.notEmpty(userInfoReqVo.getDeptId(), "部门不能为空");
|
|
|
|
|
Assert.notEmpty(userInfoReqVo.getRoleIds(), "角色不能为空");
|
|
|
|
|
|
|
|
|
|
systemUserService.lambdaUpdate().set(SystemUser::getAccount, userInfoReqVo.getAccount())
|
|
|
|
|
.set(SystemUser::getUsername, userInfoReqVo.getUsername())
|
|
|
|
|
.set(SystemUser::getDeptId, userInfoReqVo.getDeptId())
|
|
|
|
|
.set(SystemUser::getRemark, userInfoReqVo.getRemark())
|
|
|
|
|
.eq(SystemUser::getId, userInfoReqVo.getId())
|
|
|
|
|
.update();
|
|
|
|
|
|
|
|
|
|
userRoleRelationManageService.updateUserRoleRelation(userInfoReqVo.getId(), userInfoReqVo.getRoleIds());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Boolean deleteUser(String id) {
|
|
|
|
|
|
|
|
|
|
Assert.notEmpty(id, "用户id不能为空");
|
|
|
|
|
SystemUser systemUser = systemUserService.getById(id);
|
|
|
|
|
Assert.notNull(systemUser, "用户不存在");
|
|
|
|
|
Assert.isTrue(systemUser.getStatus() == 0, "该用户已启用,不能删除");
|
|
|
|
|
|
|
|
|
|
systemUserService.removeById(id);
|
|
|
|
|
|
|
|
|
|
userRoleRelationManageService.deleteUserRoleRelation(id);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public IPage<UserInfoDTO> list(String userName, String deptId, String roleId, Integer pageNum, Integer pageSize) {
|
|
|
|
|
|
|
|
|
|
List<UserRoleDTO> userRoleDTOS = new ArrayList<>();
|
|
|
|
|
if (StrUtil.isNotEmpty(roleId)){
|
|
|
|
|
userRoleDTOS = userRoleRelationManageService.listUserRole(null, roleId);
|
|
|
|
|
}
|
|
|
|
|
UserPageQuery userPageQuery = UserPageQuery.builder().userName(userName).deptId(deptId)
|
|
|
|
|
.excludeUserIdList(userRoleDTOS.stream().map(UserRoleDTO::getUserId).toList()).build();
|
|
|
|
|
|
|
|
|
|
IPage<UserInfoDTO> userInfoPage = systemUserService.pageList(userPageQuery, pageNum, pageSize);
|
|
|
|
|
if (CollUtil.isEmpty(userInfoPage.getRecords())){
|
|
|
|
|
return userInfoPage;
|
|
|
|
|
}
|
|
|
|
|
List<SystemRole> systemRoleList = systemRoleService.lambdaQuery()
|
|
|
|
|
.in(SystemRole::getId, userRoleDTOS.stream().map(UserRoleDTO::getRoleId).toList()).list();
|
|
|
|
|
if (CollUtil.isNotEmpty(systemRoleList)){
|
|
|
|
|
return userInfoPage;
|
|
|
|
|
}
|
|
|
|
|
// userRoleRelationManageService.listUserRole(null, null)
|
|
|
|
|
// Map<String, String> roleIdMapName = systemRoleList.stream().collect(Collectors.toMap(SystemRole::getId, SystemRole::getRoleName));
|
|
|
|
|
// userInfoPage.convert(userInfoDTO -> {
|
|
|
|
|
// userInfoDTO.setUserRoleList();
|
|
|
|
|
// })
|
|
|
|
|
return systemUserService.pageList(userPageQuery, pageNum, pageSize);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Boolean resetPW(String id) {
|
|
|
|
|
Assert.notEmpty(id, "用户id不能为空");
|
|
|
|
|
return systemUserService.lambdaUpdate().set(SystemUser::getUserPd, UserUtil.signPassword(defaultPassword))
|
|
|
|
|
.eq(SystemUser::getId, id).update();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|