package com.hrms.action;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import com.hrms.model.Role;
import com.hrms.model.User;
import com.hrms.service.IEmployeeService;
import com.hrms.service.IRoleService;
import com.hrms.service.IUserService;
import com.hrms.util.EncryptUtil;
import com.hrms.util.Page;
import com.hrms.util.StringUtil;
@Component("userAction")
@Scope("prototype")
public class UserAction extends BaseAction {
private static final long serialVersionUID = -3938826879678966774L;
private IUserService userService;
private IRoleService roleService;
private IEmployeeService employeeService;
public IEmployeeService getEmployeeService() {
return employeeService;
}
@Resource
public void setEmployeeService(IEmployeeService employeeService) {
this.employeeService = employeeService;
}
private List<User> users;
private List<Role> roles;
private User user;
private Integer userId;
private Page page;
private int currentPage=1;
public String user_login() throws Exception{
String userName = user.getUserName();
String userPassword = user.getUserPassword();
if(userName != null && !userName.equals("")) {
User u = userService.findByName(userName);
String pass = u.getUserPassword();
pass = EncryptUtil.dencryptStringByDES(pass, EncryptUtil.defaultKey);
if(u == null || u.equals("")) {
this.addFieldError("user.userName", "用户不正确,请重新输入");
return "loginError";
} else if(!pass.equals(userPassword)) {
this.addFieldError("user.userPassword", "密码不正确,请重新输入");
return "loginError";
} else {
getSession().setAttribute("user", u);
getSession().setAttribute("userId", u.getUserId());
getSession().setAttribute("userName",userName);
return "success";
}
} else {
return "input";
}
}
public String user_loginOut() throws Exception{
getSession().setAttribute("user", null);
getSession().removeAttribute("user");
getSession().removeAttribute("userId");
getSession().removeAttribute("userName");
return "success";
}
public String user_list() {
int totalSzie = userService.getSize();
this.page = new Page(currentPage, totalSzie);
//this.users = userService.getListByPageByDesc(currentPage, page.getPageSize(),"userId");
users = userService.getListByPage(currentPage, page.getPageSize());
roles = roleService.findAll();
getRequest().setAttribute("roles", roles);
return "success";
}
public String user_detail() {
if(userId != null) {
user = userService.findById(userId);
getRequest().setAttribute("employee", employeeService.findById(user.getEmpId()));
return "success";
}
return "error";
}
public String user_add() throws Exception{
HttpServletRequest request = getRequest();
roles = roleService.findAll();
request.setAttribute("roles", roles);
String addAction = request.getParameter("addAction");
String empId = request.getParameter("empId");
String empName = request.getParameter("empName");
request.setAttribute("empId", empId);
request.setAttribute("empName", StringUtil.getZhStr(empName, "UTF-8"));
if (addAction==null && addAction != "2") {
user = null;
if (empId == null || empName == null) {
return "error";
}
return "add";
}
String adds = request.getParameter("add");
user.setCreateDate(new Date());
user.setEmpId(Integer.valueOf(empId));
user.setUserPassword(EncryptUtil.encryptStringByDES(user.getUserPassword(), EncryptUtil.defaultKey));
User u = userService.findByName(user.getUserName());
if(u == null || u.equals("")) {
String[] addRoleId = request.getParameterValues("roleId");
if (addRoleId!=null && addRoleId.length>0) {
Set<Role> userRoles = new HashSet<Role>();
for (int i = 0; i < addRoleId.length; i++) {
Role role = roleService.findById(Integer.valueOf(addRoleId[i]));
if (role!=null) {
userRoles.add(role);
}
}
if (userRoles.size()>0) {
user.setRoles(userRoles);
}
}
User uTrue = userService.findByTrueName(user.getUserTrueName());
if (uTrue != null) {
Integer uTrueUserId = uTrue.getUserId();
uTrue = user;
uTrue.setUserId(uTrueUserId);
userService.saveOrUpdate(uTrue);
} else {
userService.saveOrUpdate(user);
}
if(adds!=null && adds.equals("2")) {
return "user_adds";
}
return "success";
} else {
this.addFieldError("user.userName", "用户名已存在");
return "error";
}
}
public String user_update() throws Exception{
HttpServletRequest request = getRequest();
String update = request.getParameter("update");
Set<Role> userRoles;
if(update!= null && update.equals("update") && userId != null) {
if (!getRequest().getParameter("oldUser").equals(user.getUserName())) {
User exist = userService.findByName(user.getUserName());
if(exist != null) {
roles = roleService.findAll();
user = userService.findById(userId);
userRoles = user.getRoles();
request.setAttribute("userRoles", userRoles);
this.addFieldError("user.userName", "用户名已存在");
return "error";
}
}
User u = userService.findById(userId);
u.setUserName(user.getUserName());
u.setUserTrueName(user.getUserTrueName());
u.setUserPassword(EncryptUtil.encryptStringByDES(user.getUserPassword(), EncryptUtil.defaultKey));
userRoles = u.getRoles();
if (userRoles!=null&&userRoles.size()>0) {
userRoles.clear();
}
String[] addRoleId = request.getParameterValues("select2");
if (addRoleId!=null&&addRoleId.length>0) {
for (int i = 0; i < addRoleId.length; i++) {
Role role = roleService.findById(Integer.valueOf(addRoleId[i]));
userRoles.add(role);
}
}
if (userRoles!=null&&userRoles.size()>0) {
u.setRoles(userRoles);
}
userService.update(u);
return "success";
}else {
roles = roleService.findAll();
user = userService.findById(userId);
user.setUserPassword(EncryptUtil.dencryptStringByDES(user.getUserPassword(), EncryptUtil.defaultKey));
userRoles = user.getRoles();
request.setAttribute("userRoles", userRoles);
return "user_update";
}
}
public String user_delete() throws Exception{
userService.deleteById(userId);
return "success";
}
public IUserService getUserService() {
return userService;
}
@Resource
public void setUserService(IUserService userService) {
this.userService = userService;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
public Page getPage() {
return page;
}
public void setPage(Page page) {
this.page = page;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public List<Role> getRoles() {
return roles;
}
public void setRoles(List<Role> roles) {
this.roles = roles;
}
public IRoleService getRoleService() {
return roleService;
}
@Resource
public void setRoleService(IRoleService roleService) {
this.roleService = roleService;
}
}