fire_point/src/main/java/com/xkrs/service/impl/SysUserServiceImpl.java

344 lines
12 KiB
Java
Raw Normal View History

2021-07-12 14:51:34 +08:00
package com.xkrs.service.impl;
import com.xkrs.common.encapsulation.PromptMessageEnum;
import com.xkrs.dao.RelRoleAuthorityDao;
import com.xkrs.dao.RelUserRoleDao;
import com.xkrs.dao.SysRoleDao;
import com.xkrs.dao.SysUserDao;
import com.xkrs.model.entity.RelRoleAuthorityEntity;
import com.xkrs.model.entity.RelUserRoleEntity;
import com.xkrs.model.entity.SysRoleEntity;
import com.xkrs.model.entity.SysUserEntity;
import com.xkrs.model.qo.SysUserQo;
import com.xkrs.model.vo.SysUserVo;
import com.xkrs.service.RedisService;
2021-07-12 14:51:34 +08:00
import com.xkrs.service.SysUserService;
import com.xkrs.utils.DateTimeUtil;
2021-07-12 14:51:34 +08:00
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.security.crypto.keygen.KeyGenerators;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalDateTime;
2021-07-12 14:51:34 +08:00
import java.util.List;
import java.util.Locale;
import static com.xkrs.common.encapsulation.OutputEncapsulation.outputEncapsulationObject;
import static com.xkrs.utils.DateTimeUtil.dateTimeToString;
2021-07-12 14:51:34 +08:00
import static com.xkrs.utils.DateTimeUtil.getNowTime;
import static com.xkrs.utils.EncryptDecryptUtil.encry256;
/**
* 系统用户服务实现
* @author tajochen
*/
@Service
public class SysUserServiceImpl implements SysUserService {
@Resource
private SysUserDao sysUserDao;
@Resource
private SysRoleDao sysRoleDao;
@Resource
private RelUserRoleDao relUserRoleDao;
@Resource
private RelRoleAuthorityDao relRoleAuthorityDao;
@Resource
private RedisService redisService;
2021-07-12 14:51:34 +08:00
/**
* 检查用户名是否存在
* @param userName
* @return
*/
@Override
public boolean checkUserName(String userName) {
int num = sysUserDao.checkUserName(userName);
return (num == 0);
};
/**
* 新增用户
* @param sysUserQo
*/
@Transactional(rollbackFor=Exception.class)
@Override
public String addUser(SysUserQo sysUserQo) {
// 获取区域信息
Locale locale = LocaleContextHolder.getLocale();
2021-07-12 14:51:34 +08:00
String salt = KeyGenerators.string().generateKey();
SysUserEntity sysUserEntity = new SysUserEntity();
sysUserEntity.setUserName(sysUserQo.getUserName());
if(!redisService.get(sysUserQo.getUserName()).equals(sysUserQo.getVerificationCode())){
return outputEncapsulationObject(PromptMessageEnum.DATA_WRONG,"验证码错误,请重新输入!",locale);
}
2021-07-12 14:51:34 +08:00
sysUserEntity.setReallyName(sysUserQo.getReallyName());
sysUserEntity.setSalt(salt);
sysUserEntity.setPassword(encry256(sysUserQo.getPassword() + salt));
sysUserEntity.setTelephone(sysUserQo.getUserName());
sysUserEntity.setCountyCode(sysUserQo.getCountyCode());
sysUserEntity.setActiveFlag(0);
2021-07-12 14:51:34 +08:00
sysUserEntity.setStatusCode(0);
sysUserEntity.setAddTime(dateTimeToString(LocalDateTime.now()));
2021-07-12 14:51:34 +08:00
sysUserEntity.setDeleteFlag(0);
sysUserEntity.setDayNum(7);
String string = dateTimeToString(LocalDateTime.now().plusDays(7L));
sysUserEntity.setOverTime(string);
2021-07-12 14:51:34 +08:00
sysUserDao.save(sysUserEntity);
RelUserRoleEntity relUserRoleEntity = new RelUserRoleEntity();
relUserRoleEntity.setUserId(sysUserEntity.getId().longValue());
relUserRoleEntity.setRoleId(2);
RelRoleAuthorityEntity relRoleAuthorityEntity = new RelRoleAuthorityEntity();
relRoleAuthorityEntity.setRoleId(2);
relRoleAuthorityEntity.setAuthorityId(2);
relRoleAuthorityEntity.setUserId(sysUserEntity.getId());
relUserRoleDao.save(relUserRoleEntity);
relRoleAuthorityDao.save(relRoleAuthorityEntity);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"注册成功!",locale);
2021-07-12 14:51:34 +08:00
//sysRoleDao.insertRelUserRole(sysUserEntity.getUserName(),"role_general_user");
}
/**
* 查询所有用户Vo
* @return
*/
/*@Transactional(rollbackFor=Exception.class)
@Override
public Iterable<SysUserVo> getAllSysUser() {
Iterable<SysUserVo> ls = sysUserDao.selectAllSysUser();
return ls;
}*/
@Transactional(rollbackFor=Exception.class)
@Override
public SysUserEntity getSysUserByUserName(String userName) {
return sysUserDao.selectByUserName(userName);
}
@Transactional(rollbackFor=Exception.class)
@Override
public int updateSysUserLogin(String userName,String ipAddress) {
return sysUserDao.updateSysUserLogin(userName,ipAddress);
}
/**
* 更新用户
* @param sysUserQo
* @return
*/
@Transactional(rollbackFor=Exception.class)
@Override
public int updateSysUser(SysUserQo sysUserQo) {
SysUserEntity sysUserEntity = new SysUserEntity();
sysUserEntity.setReallyName(sysUserQo.getReallyName());
sysUserDao.save(sysUserEntity);
return 1;
}
/**
* 软删除普通用户
* @param id
* @return
*/
@Transactional(rollbackFor=Exception.class)
@Override
public int softDeleteGeneralUser(Integer id) {
String adminRole = "role_administor";
String sysRole ="role_system_manager";
List<SysRoleEntity> list = sysRoleDao.selectByUserId(id);
if(list.size()>0){
SysRoleEntity sysRoleEntity = list.get(1);
if(sysRole.equals(sysRoleEntity.getRoleName())||adminRole.equals(sysRoleEntity.getRoleName())){
sysUserDao.softDeleteGeneralUserById(id);
return 0;
}
}
return 1;
}
/**
* 查询用户的信息
* @return
*/
@Override
public List<SysUserVo> selectAllUser() {
return sysUserDao.selectAll();
}
/**
* 启用
* @param userId
*/
@Transactional(rollbackFor=Exception.class)
@Override
public void updateEnable(Integer userId) {
sysUserDao.updateEnable(userId);
}
/**
* 禁用
* @param userId
*/
@Transactional(rollbackFor=Exception.class)
@Override
public void updateDisable(Integer userId) {
sysUserDao.updateDisable(userId);
}
/**
* 用户修改密码
* @param oldPassword
* @param newPassword
* @param confirmPassword
* @param sysUserEntity
* @return
*/
@Transactional(rollbackFor=Exception.class)
@Override
public String updatePassword(String oldPassword, String newPassword, String confirmPassword, SysUserEntity sysUserEntity) {
Locale locale = LocaleContextHolder.getLocale();
String oldFrontPassword = encry256(oldPassword + sysUserEntity.getSalt());
if(!oldFrontPassword.equals(sysUserEntity.getPassword())){
return outputEncapsulationObject(PromptMessageEnum.PROCESS_FAIL,"旧密码输入错误",locale);
}
if(!newPassword.equals(confirmPassword)){
return outputEncapsulationObject(PromptMessageEnum.PROCESS_FAIL,"两次密码输入不一致",locale);
}
String newAfterPassword = encry256(newPassword + sysUserEntity.getSalt());
sysUserDao.updatePassword(sysUserEntity.getId(),newAfterPassword);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"密码修改成功",locale);
}
/**
* 管理员修改用户的密码
* @param userId
* @param newPassword
* @param confirmPassword
* @return
*/
@Transactional(rollbackFor=Exception.class)
@Override
public String adminUpdatePassword(Integer userId, String newPassword, String confirmPassword) {
Locale locale = LocaleContextHolder.getLocale();
if(!newPassword.equals(confirmPassword)){
return outputEncapsulationObject(PromptMessageEnum.PROCESS_FAIL,"两次密码输入不一致",locale);
}
SysUserEntity sysUserEntity = sysUserDao.selectByUserId(userId);
String newAfterPassword = encry256(newPassword + sysUserEntity.getSalt());
sysUserDao.updatePassword(userId,newAfterPassword);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"密码修改成功",locale);
}
2021-07-15 14:31:07 +08:00
@Override
public SysUserVo getUserByUserName(String userName) {
return sysUserDao.selectUserByUserName(userName);
}
/**
* 按天数修改账号到期时间
* @param userId
* @param dayNum
* @return
*/
@Transactional(rollbackFor=Exception.class)
@Override
public String updateExpireDateDay(Integer userId, Integer dayNum) {
Locale locale = LocaleContextHolder.getLocale();
long l = dayNum.longValue();
LocalDateTime now = LocalDateTime.now();
SysUserEntity sysUserEntity = sysUserDao.selectByUserId(userId);
if(DateTimeUtil.dateTimeToString(now).compareTo(sysUserEntity.getOverTime()) > 0){
LocalDateTime localDateTime = now.plusDays(l);
String time = dateTimeToString(localDateTime);
sysUserDao.updateOverTime(userId,time);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"修改成功",locale);
}else {
LocalDateTime localDateTime = DateTimeUtil.stringToDateTime(sysUserEntity.getOverTime());
LocalDateTime localDateTime1 = localDateTime.plusDays(l);
String time = dateTimeToString(localDateTime1);
sysUserDao.updateOverTime(userId,time);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"修改成功",locale);
}
}
/**
* 按月份修改账号过期时间
* @param userId
* @param dayNum
* @return
*/
@Transactional(rollbackFor=Exception.class)
@Override
public String updateExpireDateMonth(Integer userId, Integer dayNum) {
Locale locale = LocaleContextHolder.getLocale();
long l = dayNum.longValue();
LocalDateTime now = LocalDateTime.now();
SysUserEntity sysUserEntity = sysUserDao.selectByUserId(userId);
if(DateTimeUtil.dateTimeToString(now).compareTo(sysUserEntity.getOverTime()) > 0){
LocalDateTime localDateTime = now.plusMonths(l);
String time = dateTimeToString(localDateTime);
sysUserDao.updateOverTime(userId,time);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"修改成功",locale);
}else {
LocalDateTime localDateTime = DateTimeUtil.stringToDateTime(sysUserEntity.getOverTime());
LocalDateTime localDateTime1 = localDateTime.plusMonths(l);
String time = dateTimeToString(localDateTime1);
sysUserDao.updateOverTime(userId,time);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"修改成功",locale);
}
}
/**
* 按年份修改账号到期时间
* @param userId
* @param dayNum
* @return
*/
@Transactional(rollbackFor=Exception.class)
@Override
public String updateExpireDateYear(Integer userId, Integer dayNum) {
Locale locale = LocaleContextHolder.getLocale();
long l = dayNum.longValue();
LocalDateTime now = LocalDateTime.now();
SysUserEntity sysUserEntity = sysUserDao.selectByUserId(userId);
if(DateTimeUtil.dateTimeToString(now).compareTo(sysUserEntity.getOverTime()) > 0){
LocalDateTime localDateTime = now.plusYears(l);
String time = dateTimeToString(localDateTime);
sysUserDao.updateOverTime(userId,time);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"修改成功",locale);
}else {
LocalDateTime localDateTime = DateTimeUtil.stringToDateTime(sysUserEntity.getOverTime());
LocalDateTime localDateTime1 = localDateTime.plusYears(l);
String time = dateTimeToString(localDateTime1);
sysUserDao.updateOverTime(userId,time);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"修改成功",locale);
}
}
/**
* 设置账号永久有效
* @param userId
* @return
*/
@Override
public String updatePermanent(Integer userId) {
Locale locale = LocaleContextHolder.getLocale();
sysUserDao.updateDayNum(userId);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"修改成功",locale);
}
2021-07-12 14:51:34 +08:00
}