package com.lf.server.service.sys;
|
|
import com.lf.server.entity.all.RedisCacheKey;
|
import com.lf.server.entity.all.SettingData;
|
import com.lf.server.entity.sys.UserEntity;
|
import com.lf.server.helper.Md5Helper;
|
import com.lf.server.helper.RsaHelper;
|
import com.lf.server.helper.StringHelper;
|
import com.lf.server.mapper.sys.UserMapper;
|
import com.lf.server.service.all.RedisService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.data.redis.cache.RedisCache;
|
import org.springframework.stereotype.Service;
|
|
import java.util.List;
|
import java.util.concurrent.TimeUnit;
|
|
/**
|
* 用户表
|
* @author sws
|
* @date 2022-09-27
|
*/
|
|
@Service
|
public class UserService implements UserMapper {
|
@Autowired
|
UserMapper userMapper;
|
|
@Autowired
|
RedisService redisService;
|
|
@Override
|
public Integer selectCount(String uname) {
|
uname = StringHelper.getLikeStr(uname);
|
|
return userMapper.selectCount(uname);
|
}
|
|
@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, Integer limit, Integer offset) {
|
uname = StringHelper.getLikeStr(uname);
|
|
return userMapper.selectByPage(uname, limit, offset);
|
}
|
|
@Override
|
public UserEntity selectByToken(String token) {
|
return userMapper.selectByToken(token);
|
}
|
|
@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 updateUsers(UserEntity userEntity) {
|
return userMapper.updateUsers(userEntity);
|
}
|
|
@Override
|
public Integer selectCountForRole(String uname, Integer roleid, Integer depid) {
|
uname = StringHelper.getLikeStr(uname);
|
|
return userMapper.selectCountForRole(uname, roleid, depid);
|
}
|
|
@Override
|
public List<UserEntity> selectByPageForRole(String uname, Integer roleid, Integer depid, Integer limit, Integer offset) {
|
uname = StringHelper.getLikeStr(uname);
|
|
return userMapper.selectByPageForRole(uname, roleid, depid, limit, offset);
|
}
|
|
@Override
|
public Integer updateUsersPwd(Integer updateUser, String pwd, List<Integer> ids) {
|
return userMapper.updateUsersPwd(updateUser, pwd, ids);
|
}
|
|
/**
|
* 验证新用户密码
|
*/
|
public String validateNewPwd(UserEntity entity) {
|
if (entity == null) {
|
return "没有找到用户";
|
}
|
if (StringHelper.isEmpty(entity.getPwd())) {
|
return "密码不能为空";
|
}
|
|
try {
|
String pwd = RsaHelper.decrypt(entity.getPwd());
|
if (!StringHelper.checkPwdValid(pwd)) {
|
return "密码不符合要求";
|
}
|
|
String newPwd = Md5Helper.reverse(Md5Helper.generate(pwd));
|
entity.setPwd(newPwd);
|
|
return null;
|
} catch (Exception ex) {
|
return "密码解密失败";
|
}
|
}
|
|
/**
|
* 验证老用户密码
|
*/
|
public String validateOldPwd(UserEntity entity) {
|
if (entity == null) {
|
return "没有找到用户";
|
}
|
if (StringHelper.isEmpty(entity.getPwd())) {
|
return "用户密码不能为空";
|
}
|
|
try {
|
String pwd = RsaHelper.decrypt(entity.getPwd());
|
String salt = RsaHelper.decrypt(entity.getSalt());
|
|
UserEntity ue = selectUser(entity.getId());
|
if (ue == null) {
|
return "没有找到用户";
|
}
|
if (!Md5Helper.validatePassword(pwd, ue.getPwd())) {
|
//
|
return "旧密码输入错误";
|
}
|
if (!StringHelper.checkPwdValid(salt)) {
|
return "密码不符合要求";
|
}
|
|
String newPwd = Md5Helper.reverse(Md5Helper.generate(salt));
|
entity.setPwd(newPwd);
|
entity.setSalt(null);
|
|
return null;
|
} catch (Exception 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())) {
|
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.checkPwdValid(pwd)) {
|
return "密码不符合要求";
|
}
|
|
String dbPwd = Md5Helper.reverse(Md5Helper.generate(pwd));
|
ue.setSalt(dbPwd);
|
|
return null;
|
} catch (Exception ex) {
|
return "密码解密失败";
|
}
|
}
|
|
/**
|
* 设置密码错误缓存
|
*
|
* @param ue
|
*/
|
public void setPwdErrCache(UserEntity ue) {
|
String key = RedisCacheKey.signPwdError(ue.getUid());
|
Object objCount = redisService.get(key);
|
|
int count = objCount == null ? 1 : (int) objCount + 1;
|
redisService.put(key, count, SettingData.PWD_ERR_TIME, TimeUnit.MINUTES);
|
}
|
}
|