package com.thhy.usercore.modules.sys.sysusers.service.impl;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONObject;
|
import com.thhy.general.config.GlobalConfig;
|
import com.thhy.general.utils.DeepCopyUtils;
|
import com.thhy.general.utils.PagingUtils;
|
import com.thhy.general.utils.UUIDUtils;
|
import com.thhy.general.utils.password.PasswdUtils;
|
import com.thhy.general.utils.UserInfoUtils;
|
import com.thhy.general.common.BasicStatus;
|
import com.thhy.general.exception.BasicException;
|
import com.thhy.usercore.modules.sys.sysuserrole.entity.SysUserRole;
|
import com.thhy.usercore.modules.sys.sysuserrole.mapper.SysUserRoleMapper;
|
import com.thhy.general.config.SysUserInfo;
|
import com.thhy.usercore.modules.sys.sysusers.entity.CompanySu;
|
import com.thhy.usercore.modules.sys.sysusers.entity.SysUsers;
|
import com.thhy.usercore.modules.sys.sysusers.entity.UserDto;
|
import com.thhy.usercore.modules.sys.sysusers.entity.UserPassDto;
|
import com.thhy.usercore.modules.sys.sysusers.mapper.SysUsersMapper;
|
import com.thhy.usercore.modules.sys.sysusers.service.ISysUsersService;
|
import org.redisson.api.RBucket;
|
import org.redisson.api.RedissonClient;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.StringUtils;
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.io.Serializable;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.LinkedHashMap;
|
import java.util.List;
|
import java.util.concurrent.TimeUnit;
|
|
/**
|
* <p>
|
* 服务实现类
|
* </p>
|
*
|
* @author zhang_xiao_bo
|
* @since 2022-03-22
|
*/
|
@Service
|
public class SysUsersServiceImpl implements ISysUsersService {
|
|
|
@Autowired
|
private SysUsersMapper sysUsersMapper;
|
|
@Autowired
|
private SysUserRoleMapper sysUserRoleMapper;
|
|
@Autowired
|
private RedissonClient redissonClient;
|
|
@Autowired
|
private GlobalConfig globalConfig;
|
|
public SysUsers get(Serializable id){
|
return sysUsersMapper.queryById(id);
|
}
|
|
public List<SysUsers> findList(UserDto userDto,HttpServletRequest req){
|
SysUserInfo userInfo = UserInfoUtils.getInstance().getUserInfo();
|
SysUsers sysUsers = sysUsersMapper.queryById(userInfo.getUserId());
|
PagingUtils.setPageParam(req);
|
if(sysUsers.getIsPlat()==1||sysUsers.getSubAdmin()==1){
|
if (userDto == null) userDto = new UserDto();
|
userDto.setCompanyId(userInfo.getCompanyId());
|
|
return sysUsersMapper.findListWithAccess(userDto);
|
}else {
|
return sysUsersMapper.findList(userDto);
|
}
|
}
|
|
@Transactional
|
public SysUsers addUser(UserDto userDto){
|
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
|
|
SysUsers sysUsers = new SysUsers();
|
DeepCopyUtils.copy(userDto,sysUsers);
|
if(sysUsers.getUserId()==null){ //添加用户
|
SysUsers phoneUsers = sysUsersMapper.queryByPhone(userDto.getTelphone());
|
if(phoneUsers!=null){
|
throw new BasicException(BasicStatus.USER_PHONE_IS_EXIST); //手机号已存在
|
}
|
SysUsers userNameUsers = sysUsersMapper.queryByUsername(userDto.getUsername());
|
if(userNameUsers!=null){
|
throw new BasicException(BasicStatus.USER_NAME_IS_EXIST); //用户名已存在
|
}
|
sysUsers.setCreateTime(new Date());
|
sysUsers.setCreateUser(sysUserInfo.getUserId());
|
//密码加密
|
String newPassword = PasswdUtils.encodePassword(sysUsers.getPassword());
|
sysUsers.setPassword(newPassword);
|
if(!com.alibaba.nacos.api.utils.StringUtils.isEmpty(sysUserInfo.getCompanyId())){
|
sysUsers.setSubAdmin(1);
|
}
|
sysUsersMapper.insert(sysUsers);
|
|
if(!com.alibaba.nacos.api.utils.StringUtils.isEmpty(sysUserInfo.getCompanyId())){
|
sysUsersMapper.insertCompanyUser(new CompanySu(sysUserInfo.getCompanyId(),sysUsers.getUserId()));
|
}
|
}else{ //修改用户
|
//检验版本
|
SysUsers currentUserInfo = sysUsersMapper.queryById(sysUsers.getUserId());
|
//Integer curVersion = sysUsersMapper.queryVersionById(sysUsers.getUserId());
|
System.out.println("################################"+ sysUsers.getVersion());
|
System.out.println("################################"+ currentUserInfo.getVersion());
|
if(!currentUserInfo.getVersion().equals(sysUsers.getVersion())){
|
throw new BasicException(BasicStatus.SUBMIT_TIMEOUT);
|
}
|
//手机唯一
|
if(!currentUserInfo.getTelphone().equals(sysUsers.getTelphone())){
|
SysUsers phoneUsers = sysUsersMapper.queryByPhone(userDto.getTelphone());
|
if(phoneUsers!=null){
|
throw new BasicException(BasicStatus.USER_PHONE_IS_EXIST);
|
}
|
}
|
if(currentUserInfo.getUsername()==null||!currentUserInfo.getUsername().equals(sysUsers.getUsername())){
|
SysUsers userNameUsers = sysUsersMapper.queryByUsername(userDto.getUsername());
|
if(userNameUsers!=null){
|
throw new BasicException(BasicStatus.USER_NAME_IS_EXIST); //用户名已存在
|
}
|
}
|
sysUsersMapper.update(sysUsers);
|
}
|
return sysUsers;
|
}
|
/**
|
* 逻辑删除
|
* @param id
|
*/
|
@Transactional
|
public int deletelogic(Serializable id){
|
HashMap map = (LinkedHashMap) id;
|
String userId = map.get("id").toString();
|
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
|
//SysUsers currentUserInfo = sysUsersMapper.queryById(id);
|
if(userId.equals(sysUserInfo.getUserId())){
|
throw new BasicException(BasicStatus.FORBIDEN_DELETE_SELF);
|
}
|
SysUsers sysUsers = sysUsersMapper.queryById(userId);
|
if("admin".equals(sysUsers.getUsername())){
|
throw new BasicException(BasicStatus.FORBIDEN_DELETE_ADMIN);
|
}
|
if(sysUsers.getIsPlat()==1|| !com.alibaba.nacos.api.utils.StringUtils.isEmpty(sysUsers.getPlatId())){
|
sysUsersMapper.nologin(sysUsers.getPlatId());
|
sysUsersMapper.deleteApplyHistory(sysUsers.getPlatId());
|
}
|
return sysUsersMapper.deletelogic(id);
|
}
|
|
/**
|
* 为用户添加角色信息
|
* @param userDto
|
* @param req
|
*/
|
@Override
|
@Transactional
|
public void updateUserRole(UserDto userDto, HttpServletRequest req) {
|
//先删除目前的权限
|
String userId = userDto.getUserId();
|
sysUserRoleMapper.deleteByUserId(userId);
|
|
String roleIds = userDto.getRoleIds();
|
if(StringUtils.isEmpty(roleIds)){
|
throw new BasicException(BasicStatus.ROLE_INFO_IS_NOT_NULL); //角色信息不能为空
|
}
|
String[] roleIdArray = new String[]{roleIds};
|
if(roleIds.contains(",")){
|
roleIdArray = roleIds.split(",");
|
}
|
for(String role : roleIdArray){
|
sysUserRoleMapper.insert(new SysUserRole(userId,role));
|
}
|
}
|
|
/*@Override
|
@Transactional
|
public void updateDepartForUser(UserDepartDto userDepartDto) {
|
//先删除所有
|
sysUserDepartMapper.deleteByUserId(userDepartDto.getUserId().toString());
|
|
if (!StringUtils.isEmpty(userDepartDto.getDepartIds())) {
|
String departIds = userDepartDto.getDepartIds();
|
String[] departIdArray = new String[]{departIds};
|
if(departIds.contains(",")){
|
departIdArray = departIds.split(",");
|
}
|
for(String departId : departIdArray){
|
sysUserDepartMapper.insert(new SysUserDepart(userDepartDto.getUserId().toString(),departId));
|
}
|
}
|
}*/
|
|
@Override
|
public int queryVersion(Serializable id) {
|
return sysUsersMapper.queryVersionById(id);
|
}
|
|
|
@Override
|
@Transactional
|
public void updatePass(UserPassDto userPassDto) {
|
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
|
SysUsers sysUsers = sysUsersMapper.queryById(sysUserInfo.getUserId());
|
//解析并校验密码
|
boolean result = PasswdUtils.validatePassword(userPassDto.getOldPass(),sysUsers.getPassword());
|
if(!result){
|
throw new BasicException(BasicStatus.OLDPASS_IS_ERROR);
|
}
|
//密码加密
|
String newPassword = PasswdUtils.encodePassword(userPassDto.getNewPass());
|
sysUsers.setPassword(newPassword);
|
sysUsersMapper.updateUserPass(sysUsers);
|
}
|
|
@Override
|
public String getAuthCode(String param,HttpServletRequest request) {
|
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
|
String code = UUIDUtils.create();
|
RBucket<String> rBucket = redissonClient.getBucket(globalConfig.getFilePreKey()+":authcode:"+code);
|
JSONObject jsonObject = JSON.parseObject(param);
|
jsonObject.put("token",request.getHeader("usertoken"));
|
rBucket.set(jsonObject.toJSONString(),10, TimeUnit.MINUTES);
|
return code;
|
}
|
}
|