From 56aea7aa05995ac0cca7c28e1324c4360afd4df5 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期五, 06 十二月 2024 18:02:16 +0800 Subject: [PATCH] 系统管理:用户管理接口 --- medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysUserServiceImpl.java | 164 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 153 insertions(+), 11 deletions(-) diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysUserServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysUserServiceImpl.java index 15d6c27..439e870 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysUserServiceImpl.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysUserServiceImpl.java @@ -1,27 +1,28 @@ package com.sinata.system.service.impl; -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; -import javax.validation.Validator; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.sinata.common.annotation.DataScope; import com.sinata.common.constant.UserConstants; import com.sinata.common.core.domain.entity.SysRole; import com.sinata.common.core.domain.entity.SysUser; +import com.sinata.common.entity.PageDTO; import com.sinata.common.exception.ServiceException; +import com.sinata.common.utils.BeanUtils; +import com.sinata.common.utils.DateUtils; import com.sinata.common.utils.SecurityUtils; import com.sinata.common.utils.StringUtils; import com.sinata.common.utils.bean.BeanValidators; import com.sinata.common.utils.spring.SpringUtils; +import com.sinata.system.domain.SysDepartment; import com.sinata.system.domain.SysPost; import com.sinata.system.domain.SysUserPost; import com.sinata.system.domain.SysUserRole; +import com.sinata.system.domain.dto.SysUserDTO; +import com.sinata.system.domain.dto.SysUserStatusDTO; +import com.sinata.system.domain.query.SysUserQuery; +import com.sinata.system.domain.vo.SysUserVO; import com.sinata.system.mapper.SysPostMapper; import com.sinata.system.mapper.SysRoleMapper; import com.sinata.system.mapper.SysUserMapper; @@ -30,6 +31,20 @@ import com.sinata.system.service.ISysConfigService; import com.sinata.system.service.ISysDeptService; import com.sinata.system.service.ISysUserService; +import com.sinata.system.service.SysDepartmentService; +import org.apache.commons.lang3.ArrayUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import javax.validation.Validator; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; /** * 用户 业务层处理 @@ -37,7 +52,7 @@ * @author ruoyi */ @Service -public class SysUserServiceImpl implements ISysUserService +public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements ISysUserService { private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class); @@ -64,6 +79,8 @@ @Autowired protected Validator validator; + @Autowired + private SysDepartmentService sysDepartmentService; /** * 根据条件分页查询用户列表 @@ -547,4 +564,129 @@ } return successMsg.toString(); } + + /** + * 分页查询 + * + * @param query + * @return + */ + @Override + public PageDTO<SysUserVO> pageList(SysUserQuery query) { + String treeCode = ""; + if (Objects.isNull(query.getDepartmentId())) { + SysDepartment myDepartment = sysDepartmentService.getMyDepartment(); + if (Objects.nonNull(myDepartment)) { + treeCode = myDepartment.getTreeCode(); + } + } + Page<SysUserVO> page = baseMapper.pageList(new Page<>(query.getPageCurr(), query.getPageSize()), query.getDepartmentId(), query.getNickName(), query.getRoleId(), treeCode); + return PageDTO.of(page); + } + + /** + * 新增用户 + * + * @param dto + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void add(SysUserDTO dto) { + SysUser sysUser = BeanUtils.copyBean(dto, SysUser.class); + if (StringUtils.isBlank(dto.getPassword())) { + throw new ServiceException("登录密码不能为空"); + } + if (!checkUserNameUnique(sysUser)) { + throw new ServiceException("新增用户" + dto.getUserName() + "失败,登录账号已存在"); + } + sysUser.setPassword(SecurityUtils.encryptPassword(dto.getPassword())); + sysUser.setCreateBy(SecurityUtils.getUserId().toString()); + sysUser.setCreateTime(DateUtils.getNowDate()); + save(sysUser); + //添加用户角色关系 + SysUserRole sysUserRole = new SysUserRole(); + sysUserRole.setUserId(sysUser.getUserId()); + sysUserRole.setRoleId(dto.getRoleId()); + userRoleMapper.insert(sysUserRole); + } + + /** + * 编辑用户 + * + * @param dto + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void edit(SysUserDTO dto) { + SysUser sysUser = BeanUtils.copyBean(dto, SysUser.class); + if (!checkUserNameUnique(sysUser)) { + throw new ServiceException("编辑用户" + dto.getUserName() + "失败,登录账号已存在"); + } + if (StringUtils.isNotBlank(dto.getPassword())) { + sysUser.setPassword(SecurityUtils.encryptPassword(dto.getPassword())); + } + sysUser.setUpdateBy(SecurityUtils.getUserId().toString()); + sysUser.setUpdateTime(DateUtils.getNowDate()); + updateById(sysUser); + // 删除用户与角色关联 + userRoleMapper.deleteUserRoleByUserId(sysUser.getUserId()); + // 新增用户与角色管理 + SysUserRole sysUserRole = new SysUserRole(); + sysUserRole.setUserId(sysUser.getUserId()); + sysUserRole.setRoleId(dto.getRoleId()); + userRoleMapper.insert(sysUserRole); + } + + /** + * 查询用户详情 + * + * @param userId + * @return + */ + @Override + public SysUserVO getDetailInfo(Long userId) { + SysUser sysUser = this.getById(userId); + SysUserVO sysUserVO = null; + if (Objects.nonNull(sysUser)) { + sysUserVO = BeanUtils.copyBean(sysUser, SysUserVO.class); + sysUserVO.setPassword(""); + //查询用户角色 + SysUserRole sysUserRole = userRoleMapper.selectOne(Wrappers.lambdaQuery(SysUserRole.class).eq(SysUserRole::getUserId, sysUserVO.getUserId())); + if (Objects.nonNull(sysUserRole)) { + sysUserVO.setRoleId(sysUserRole.getRoleId()); + } + } + return sysUserVO; + } + + /** + * 批量修改账号状态 + * + * @param dto@return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void updStatusBatch(SysUserStatusDTO dto) { + List<SysUser> sysUsers = this.listByIds(dto.getUserIds()); + sysUsers.forEach(user -> user.setStatus(dto.getStatus())); + updateBatchById(sysUsers); + } + + /** + * 批量删除 + * + * @param userIds + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void delBatch(List<Long> userIds) { + Long[] userIdList = userIds.toArray(new Long[0]); + if (ArrayUtils.contains(userIdList, SecurityUtils.getUserId())) { + throw new ServiceException("当前账号不能删除"); + } + // 删除用户与角色关联 + userRoleMapper.deleteUserRole(userIdList); + this.removeBatchByIds(userIds); + } } -- Gitblit v1.7.1