233 lines
7.4 KiB
Java
233 lines
7.4 KiB
Java
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.SysUserService;
|
|
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.util.List;
|
|
import java.util.Locale;
|
|
|
|
import static com.xkrs.common.encapsulation.OutputEncapsulation.outputEncapsulationObject;
|
|
import static com.xkrs.utils.DateTimeUtil.getNowTime;
|
|
import static com.xkrs.utils.EncryptDecryptUtil.encry256;
|
|
|
|
/**
|
|
* 系统用户服务实现
|
|
* @author tajochen
|
|
*/
|
|
@Service
|
|
public class SysUserServiceImpl implements SysUserService {
|
|
|
|
Logger logger = LoggerFactory.getLogger(SysUserServiceImpl.class);
|
|
|
|
@Resource
|
|
private SysUserDao sysUserDao;
|
|
|
|
@Resource
|
|
private SysRoleDao sysRoleDao;
|
|
|
|
@Resource
|
|
private RelUserRoleDao relUserRoleDao;
|
|
|
|
@Resource
|
|
private RelRoleAuthorityDao relRoleAuthorityDao;
|
|
|
|
/**
|
|
* 检查用户名是否存在
|
|
* @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 void addUser(SysUserQo sysUserQo) {
|
|
String salt = KeyGenerators.string().generateKey();
|
|
SysUserEntity sysUserEntity = new SysUserEntity();
|
|
sysUserEntity.setUserName(sysUserQo.getUserName());
|
|
sysUserEntity.setReallyName(sysUserQo.getReallyName());
|
|
sysUserEntity.setSalt(salt);
|
|
sysUserEntity.setPassword(encry256(sysUserQo.getPassword() + salt));
|
|
sysUserEntity.setTelephone(sysUserQo.getUserName());
|
|
sysUserEntity.setUserDepartment(sysUserQo.getUserDepartment());
|
|
sysUserEntity.setActiveFlag(0);
|
|
sysUserEntity.setStatusCode(0);
|
|
sysUserEntity.setAddTime(getNowTime());
|
|
sysUserEntity.setDeleteFlag(0);
|
|
sysUserEntity.setDayNum(7);
|
|
|
|
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);
|
|
|
|
//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);
|
|
}
|
|
|
|
}
|