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