luodangjia
2025-01-07 d0542b6f8b7ead9cea467f12d989eaabb8ec6e60
medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysUserServiceImpl.java
@@ -1,20 +1,16 @@
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;
@@ -22,6 +18,10 @@
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 +30,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 +51,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 +78,8 @@
    @Autowired
    protected Validator validator;
    @Autowired
    private SysDepartmentService sysDepartmentService;
    /**
     * 根据条件分页查询用户列表
@@ -547,4 +563,126 @@
        }
        return successMsg.toString();
    }
    /**
     * 分页查询
     *
     * @param query
     * @return
     */
    @Override
    public PageDTO<SysUserVO> pageList(SysUserQuery query) {
        String treeCode = sysDepartmentService.getTreeCodeByDepartmentId(query.getDepartmentId());
        if (StringUtils.isBlank(treeCode)) {
            return PageDTO.empty(0L, 0L);
        }
        Page<SysUserVO> page = baseMapper.pageList(new Page<>(query.getPageCurr(), query.getPageSize()),  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);
    }
}