📄 usermanagerimpl.java
字号:
/**
*
*/
package com.sunwah.baseapp.system.service;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.regex.Pattern;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang.StringUtils;
import com.sunwah.baseapp.common.Constants;
import com.sunwah.baseapp.common.DictionaryConstants;
import com.sunwah.baseapp.system.dao.FunctionDao;
import com.sunwah.baseapp.system.dao.RoleDao;
import com.sunwah.baseapp.system.dao.UserDao;
import com.sunwah.baseapp.system.model.PasswordHistory;
import com.sunwah.baseapp.system.model.Roles;
import com.sunwah.baseapp.system.model.UserRole;
import com.sunwah.baseapp.system.model.UserRoleId;
import com.sunwah.baseapp.system.model.Users;
/**
* @author MARK
*
*/
public class UserManagerImpl implements UserManager {
private UserDao userDao;
private RoleDao roleDao;
private FunctionDao functionDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void setRoleDao(RoleDao roleDao) {
this.roleDao = roleDao;
}
public void setFunctionDao(FunctionDao functionDao) {
this.functionDao = functionDao;
}
@Override
public int modifyPassword(Long userId, String oldPassword,
String newPassword) {
Users user = this.userDao.get(userId);
if (user == null)
return UserManagerStatusCodes.DATA_NOT_EXIST;
else {
if (!user.getPassword().equals(DigestUtils.md5Hex(oldPassword))) {
return UserManagerStatusCodes.INVALID_PASSWORD;
} else {
user.setPassword(DigestUtils.md5Hex(newPassword));
PasswordHistory passwordHistory = new PasswordHistory();
passwordHistory.setPassword(user.getPassword());
passwordHistory.setPwEffDate(user.getPwEffDate());
passwordHistory.setPwExpDate(user.getPwExpDate());
passwordHistory.setUsers(user);
passwordHistory.setModifyUserId(userId);
passwordHistory.setModifyDate(new Date());
user.setModifyUserId(userId);
user.setModifyDate(new Date());
user.getPasswordHistories().add(passwordHistory);
return UserManagerStatusCodes.OK;
}
}
}
@Override
public void logout(Long userId) {
Users user = this.userDao.get(userId);
if (user != null)
user.setIsOnLine(DictionaryConstants.IS_ON_LINE_N);
}
@Override
public UserManagerResult login(String loginName, String password) {
UserManagerResult manageResult = new UserManagerResult();
Users user = this.userDao.findUserByLoginName(loginName);
int statusCode = UserManagerStatusCodes.OK;
if (user == null)
statusCode = UserManagerStatusCodes.INVALID_LOGIN_NAME;
else {
if (user.getUserExpDate().before(new Date()))
statusCode = UserManagerStatusCodes.OVERDUE_LOGIN_NAME;
if (!user.getPassword().equals(DigestUtils.md5Hex(password)))
statusCode = UserManagerStatusCodes.INVALID_PASSWORD;
else {
if (user.getPwExpDate().before(new Date()))
statusCode = UserManagerStatusCodes.OVERDUE_PASSWORD;
}
}
// 登录失败
if (statusCode != UserManagerStatusCodes.OK) {
manageResult.setStatusCode(statusCode);
return manageResult;
}
user.setLastVisitDate(new Date());
user.setIsOnLine(DictionaryConstants.IS_ON_LINE_Y);
List<String> tmpResourceList = null;
// 超级用户默认拥有所有功能权限
if (user.getUserId().equals(Constants.ROOT_USER_ID))
tmpResourceList = this.functionDao.findAllAvailableResources();
else
tmpResourceList = this.functionDao.findUserAvailableResources(user
.getUserId());
if (tmpResourceList != null) {
List<String> resourceList = new ArrayList<String>();
String[] resourceArray = null;
for (String resource : tmpResourceList) {
if (StringUtils.isNotEmpty(resource)) {
resourceArray = Pattern.compile("\\|").split(resource);
for (String string : resourceArray) {
resourceList.add(string);
}
}
}
manageResult.setResourceList(resourceList);
}
manageResult.setUser(user);
manageResult.setStatusCode(statusCode);
return manageResult;
}
/*
* (non-Javadoc)
*
* @see
* com.sunwah.baseapp.system.service.UserManage#createUser(com.sunwah.baseapp
* .system.model.Users, java.util.List)
*/
@Override
public int createUser(Users user, List<Long> roleIds) {
// 判断登录名是否已经存在
if (this.userDao.findUserByLoginName(user.getLoginName()) != null)
return UserManagerStatusCodes.USER_LOGIN_NAME_EXIST;
// 写密码历史表
PasswordHistory passwordHistory = new PasswordHistory();
passwordHistory.setPassword(user.getPassword());
passwordHistory.setPwEffDate(user.getPwEffDate());
passwordHistory.setPwExpDate(user.getPwExpDate());
passwordHistory.setUsers(user);
passwordHistory.setModifyUserId(user.getCreateUserId());
passwordHistory.setModifyDate(new Date());
Set setPasswordHistory = new HashSet();
setPasswordHistory.add(passwordHistory);
user.setPasswordHistories(setPasswordHistory);
// 写用户角色表
Set userRoleSet = new HashSet();
if (roleIds != null) {
for (Long roleId : roleIds) {
Roles role = this.roleDao.get(roleId);
userRoleSet.add(new UserRole(new UserRoleId(user, role), role,
user));
}
}
user.setUserRoles(userRoleSet);
// 执行创建用户操作
this.userDao.save(user);
return UserManagerStatusCodes.OK;
}
/*
* (non-Javadoc)
*
* @see
* com.sunwah.baseapp.system.service.UserManage#deleteUser(java.lang.Long)
*/
@Override
public int deleteUser(Long userId) {
Users user = this.userDao.get(userId);
if (user == null)
return UserManagerStatusCodes.DATA_NOT_EXIST;
this.userDao.remove(userId);
return UserManagerStatusCodes.OK;
}
/*
* (non-Javadoc)
*
* @see
* com.sunwah.baseapp.system.service.UserManage#findUser(java.lang.Long)
*/
@Override
public Users findUser(Long userId) {
Users user = this.userDao.get(userId);
if (user != null) {
user.setCreateUserName(userDao);
user.setModiryUserName(userDao);
}
return user;
}
/*
* (non-Javadoc)
*
* @see
* com.sunwah.baseapp.system.service.UserManage#updatePassword(java.lang
* .Long, java.lang.Long, java.lang.String)
*/
@Override
public int updatePassword(Long modifyUserId, Long userId, String newPassword) {
Users user = this.userDao.get(userId);
if (user == null)
return UserManagerStatusCodes.DATA_NOT_EXIST;
user.setPassword(DigestUtils.md5Hex(newPassword));
user.setModifyUserId(modifyUserId);
user.setModifyDate(new Date());
PasswordHistory passwordHistory = new PasswordHistory();
passwordHistory.setPassword(user.getPassword());
passwordHistory.setPwEffDate(user.getPwEffDate());
passwordHistory.setPwExpDate(user.getPwExpDate());
passwordHistory.setUsers(user);
passwordHistory.setModifyUserId(modifyUserId);
passwordHistory.setModifyDate(new Date());
user.setModifyUserId(userId);
user.setModifyDate(new Date());
user.getPasswordHistories().add(passwordHistory);
return UserManagerStatusCodes.OK;
}
/*
* (non-Javadoc)
*
* @see
* com.sunwah.baseapp.system.service.UserManage#updateUser(com.sunwah.baseapp
* .system.model.Users, java.util.List)
*/
@Override
public int updateUser(Users user, List<Long> roleIds) {
Users tmpUser = this.userDao.findUserByLoginName(user.getLoginName());
if (tmpUser != null && !tmpUser.getUserId().equals(user.getUserId()))
return UserManagerStatusCodes.USER_LOGIN_NAME_EXIST;
// 写用户角色表
Set userRoleSet = new HashSet();
if (roleIds != null) {
for (Long roleId : roleIds) {
Roles role = this.roleDao.get(roleId);
userRoleSet.add(new UserRole(new UserRoleId(user, role), role,
user));
}
}
user.setUserRoles(userRoleSet);
user.setPasswordHistories(this.userDao.get(user.getUserId())
.getPasswordHistories());
// 执行更新用户操作
this.userDao.merge(user);
return UserManagerStatusCodes.OK;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -