⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usermanagerimpl.java

📁 利用STRUTS2+SPRING+HIBERNATE/IBATIS建立的基本开发框架
💻 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 + -