package com.terra.system.service.sys;
|
|
import com.terra.system.entity.sys.RoleEntity;
|
import com.terra.system.entity.sys.UserEntity;
|
import com.terra.system.helper.Md5Helper;
|
import com.terra.system.helper.RsaHelper;
|
import com.terra.system.helper.StringHelper;
|
import com.terra.system.mapper.sys.UserMapper;
|
import com.terra.system.service.all.RedisService;
|
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.LogFactory;
|
import javax.annotation.Resource;
|
import org.springframework.stereotype.Service;
|
|
import java.util.List;
|
|
/**
|
* 用户表
|
* @author sws
|
* @date 2022-09-27
|
*/
|
|
@Service
|
public class UserService implements UserMapper {
|
@Resource
|
UserMapper userMapper;
|
|
@Resource
|
RedisService redisService;
|
|
@Resource
|
LoginService loginService;
|
|
@Resource
|
TokenService tokenService;
|
|
private final static Log log = LogFactory.getLog(UserService.class);
|
|
@Override
|
public Integer selectCount(String uname, String depcode) {
|
uname = StringHelper.getLikeUpperStr(uname);
|
depcode = StringHelper.getRightLike(depcode);
|
|
return userMapper.selectCount(uname, depcode);
|
}
|
|
@Override
|
public UserEntity selectUser(int id) {
|
return userMapper.selectUser(id);
|
}
|
|
@Override
|
public UserEntity selectByUid(String uid) {
|
return userMapper.selectByUid(uid);
|
}
|
|
@Override
|
public List<UserEntity> selectUserAll() {
|
return userMapper.selectUserAll();
|
}
|
|
@Override
|
public List<UserEntity> selectByPage(String uname, String depcode, Integer limit, Integer offset) {
|
uname = StringHelper.getLikeUpperStr(uname);
|
depcode = StringHelper.getRightLike(depcode);
|
|
return userMapper.selectByPage(uname, depcode, limit, offset);
|
}
|
|
@Override
|
public UserEntity selectByToken(String token) {
|
return userMapper.selectByToken(token);
|
}
|
|
@Override
|
public Integer selectForIsAdmin(Integer id) {
|
return userMapper.selectForIsAdmin(id);
|
}
|
|
@Override
|
public List<UserEntity> selectAdminUsers(Integer type) {
|
return userMapper.selectAdminUsers(type);
|
}
|
|
@Override
|
public List<RoleEntity> selectRoleByUserId(Integer id) {
|
return userMapper.selectRoleByUserId(id);
|
}
|
|
@Override
|
public List<UserEntity> selectUserByRoleId(Integer roleId) {
|
return userMapper.selectUserByRoleId(roleId);
|
}
|
|
@Override
|
public Integer insertUser(UserEntity userEntity) {
|
return userMapper.insertUser(userEntity);
|
}
|
|
@Override
|
public Integer insertUsers(List<UserEntity> userEntity) {
|
return userMapper.insertUsers(userEntity);
|
}
|
|
@Override
|
public Integer deleteUser(int id) {
|
return userMapper.deleteUser(id);
|
}
|
|
@Override
|
public Integer deleteUsers(List<Integer> ids) {
|
return userMapper.deleteUsers(ids);
|
}
|
|
@Override
|
public Integer updateUser(UserEntity userEntity) {
|
return userMapper.updateUser(userEntity);
|
}
|
|
@Override
|
public Integer selectCountForRole(String uname, Integer roleid, String depcode) {
|
uname = StringHelper.getLikeUpperStr(uname);
|
depcode = StringHelper.getRightLike(depcode);
|
|
return userMapper.selectCountForRole(uname, roleid, depcode);
|
}
|
|
@Override
|
public List<UserEntity> selectByPageForRole(String uname, Integer roleid, String depcode, Integer limit, Integer offset) {
|
uname = StringHelper.getLikeUpperStr(uname);
|
depcode = StringHelper.getRightLike(depcode);
|
|
return userMapper.selectByPageForRole(uname, roleid, depcode, limit, offset);
|
}
|
|
@Override
|
public Integer updateUsersPwd(Integer updateUser, String pwd, List<Integer> ids) {
|
return userMapper.updateUsersPwd(updateUser, pwd, ids);
|
}
|
|
/**
|
* 验证用户实体类
|
*/
|
public String validateUserEntity(UserEntity entity) {
|
if (entity == null) {
|
return "没有找到用户";
|
}
|
if (StringHelper.isEmpty(entity.getUid())) {
|
return "用户ID不能为空";
|
}
|
if (StringHelper.isEmpty(entity.getPwd())) {
|
return "用户密码不能为空";
|
}
|
|
return null;
|
}
|
|
/**
|
* 验证登录用户密码
|
*/
|
public String validateLoginPwd(UserEntity entity) {
|
try {
|
String str = validateUserEntity(entity);
|
if (str != null) {
|
return str;
|
}
|
|
// 解密
|
String uid = RsaHelper.decrypt(entity.getUid());
|
String pwd = RsaHelper.decrypt(entity.getPwd());
|
|
entity.setUid(uid);
|
entity.setPwd(pwd);
|
|
if (tokenService.isUidDisable(entity)) {
|
return "用户ID已禁用";
|
}
|
|
return null;
|
} catch (Exception ex) {
|
log.error(ex.getMessage(), ex);
|
return "解密失败";
|
}
|
}
|
|
/**
|
* 验证新用户密码
|
*/
|
@SuppressWarnings("AlibabaRemoveCommentedCode")
|
public String validateNewPwd(UserEntity entity) {
|
try {
|
String str = validateUserEntity(entity);
|
if (str != null) {
|
return str;
|
}
|
|
// 解密
|
String uid = RsaHelper.decrypt(entity.getUid());
|
/*String pwd = RsaHelper.decrypt(entity.getPwd());
|
if (!StringHelper.isPwdValid(pwd)) {
|
return "密码不符合要求";
|
}
|
|
String newPwd = Md5Helper.reverse(Md5Helper.generate(pwd));
|
entity.setPwd(newPwd);*/
|
entity.setUid(uid);
|
|
return null;
|
} catch (Exception ex) {
|
log.error(ex.getMessage(), ex);
|
return "解密失败";
|
}
|
}
|
|
/**
|
* 验证老用户密码
|
*/
|
public String validateOldPwd(UserEntity entity) {
|
try {
|
String str = validateUserEntity(entity);
|
if (str != null) {
|
return str;
|
}
|
if (StringHelper.isEmpty(entity.getSalt())) {
|
return "新密码不能为空";
|
}
|
|
String uid = RsaHelper.decrypt(entity.getUid());
|
String pwd = RsaHelper.decrypt(entity.getPwd());
|
String salt = RsaHelper.decrypt(entity.getSalt());
|
|
UserEntity ue = selectByUid(uid);
|
if (ue == null) {
|
return "没有找到用户";
|
}
|
if (!Md5Helper.validatePassword(pwd, ue.getPwd())) {
|
tokenService.setPwdErrCache(ue);
|
return "旧密码不正确";
|
}
|
if (StringHelper.isPwdInvalid(salt)) {
|
return "密码不符合要求";
|
}
|
|
String newPwd = Md5Helper.reverse(Md5Helper.generate(salt));
|
entity.setPwd(newPwd);
|
entity.setSalt(null);
|
entity.setUid(uid);
|
|
return null;
|
} catch (Exception ex) {
|
log.error(ex.getMessage(), ex);
|
return "解密失败";
|
}
|
}
|
|
/**
|
* 验证管理员密码
|
*/
|
public String validateAdminPwd(UserEntity ue, String adminPwd) {
|
if (ue == null) {
|
return "没有登录或超时";
|
}
|
if (StringHelper.isEmpty(adminPwd)) {
|
return "管理员密码不能为空";
|
}
|
|
try {
|
String pwd = RsaHelper.decrypt(adminPwd);
|
if (!Md5Helper.validatePassword(pwd, ue.getPwd())) {
|
tokenService.setPwdErrCache(ue);
|
return "管理员密码不正确";
|
}
|
|
return null;
|
} catch (Exception ex) {
|
return "解密失败";
|
}
|
}
|
|
/**
|
* 验证新密码
|
*/
|
public String validateNewPwd(UserEntity ue, String newPwd) {
|
if (StringHelper.isEmpty(newPwd)) {
|
return "新密码不能为空";
|
}
|
|
try {
|
String pwd = RsaHelper.decrypt(newPwd);
|
if (StringHelper.isPwdInvalid(pwd)) {
|
return "密码不符合要求";
|
}
|
|
String dbPwd = Md5Helper.reverse(Md5Helper.generate(pwd));
|
ue.setSalt(dbPwd);
|
|
return null;
|
} catch (Exception ex) {
|
log.error(ex.getMessage(), ex);
|
return "解密失败";
|
}
|
}
|
}
|