| | |
| | | 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.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; |
| | |
| | | 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; |
| | | |
| | | /** |
| | | * 用户 业务层处理 |
| | |
| | | * @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); |
| | | |
| | |
| | | |
| | | @Autowired |
| | | protected Validator validator; |
| | | @Autowired |
| | | private SysDepartmentService sysDepartmentService; |
| | | |
| | | /** |
| | | * 根据条件分页查询用户列表 |
| | |
| | | } |
| | | 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); |
| | | } |
| | | } |