Files
jshERP/src/main/java/com/jsh/action/basic/UserAction.java
2018-09-12 22:59:34 +08:00

447 lines
17 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.jsh.action.basic;
import com.jsh.base.BaseAction;
import com.jsh.base.Log;
import com.jsh.model.po.Basicuser;
import com.jsh.model.po.Logdetails;
import com.jsh.model.vo.basic.UserModel;
import com.jsh.service.basic.UserIService;
import com.jsh.util.ExceptionCodeConstants;
import com.jsh.util.PageUtil;
import com.jsh.util.Tools;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.springframework.dao.DataAccessException;
import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.sql.Timestamp;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/*
* 用户管理
* @author jishenghua qq:752718920
*/
@SuppressWarnings("serial")
public class UserAction extends BaseAction<UserModel> {
private UserModel model = new UserModel();
private UserIService userService;
/**
* 需要判断用户状态,用户名密码错误不能登录 ,黑名单用户不能登录,如果已经登录过,不再进行处理,直接进入管理页面
*
* @return
*/
public String login() {
Log.infoFileSync("============用户登录 login 方法调用开始==============");
String username = model.getLoginame().trim();
String password = model.getPassword().trim();
//因密码用MD5加密需要对密码进行转化
try {
password = Tools.md5Encryp(password);
System.out.println(password);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
Log.errorFileSync(">>>>>>>>>>>>>>转化MD5字符串错误 " + e.getMessage(), e);
}
//判断用户是否已经登录过,登录过不再处理
Basicuser sessionUser = (Basicuser) getSession().get("user");
if (null != sessionUser && username.equalsIgnoreCase(sessionUser.getLoginame())
&& sessionUser.getPassword().equals(password)) {
Log.infoFileSync("====用户 " + username + "已经登录过, login 方法调用结束====");
model.getShowModel().setMsgTip("user already login");
/*return "login";*/
}
//获取用户状态
int userStatus = -1;
try {
userStatus = userService.validateUser(username, password);
} catch (Exception e) {
Log.errorFileSync(">>>>>>>>>>>>>用户 " + username + " 登录 login 方法 访问服务层异常====", e);
model.getShowModel().setMsgTip("access service exception");
}
switch (userStatus) {
case ExceptionCodeConstants.UserExceptionCode.USER_NOT_EXIST:
model.getShowModel().setMsgTip("user is not exist");
break;
case ExceptionCodeConstants.UserExceptionCode.USER_PASSWORD_ERROR:
model.getShowModel().setMsgTip("user password error");
break;
case ExceptionCodeConstants.UserExceptionCode.BLACK_USER:
model.getShowModel().setMsgTip("user is black");
break;
case ExceptionCodeConstants.UserExceptionCode.USER_ACCESS_EXCEPTION:
model.getShowModel().setMsgTip("access service error");
break;
default:
try {
//验证通过 可以登录放入session记录登录日志
Basicuser user = userService.getUser(username);
logService.create(new Logdetails(user, "登录系统", model.getClientIp(),
new Timestamp(System.currentTimeMillis()), (short) 0, "管理用户:" + username + " 登录系统", username + " 登录系统"));
model.getShowModel().setMsgTip("user can login");
getSession().put("user", user);
} catch (Exception e) {
Log.errorFileSync(">>>>>>>>>>>>>>>查询用户名为:" + username + " ,用户信息异常", e);
}
break;
}
/*if(ExceptionCodeConstants.UserExceptionCode.USER_CONDITION_FIT == userStatus)
return "login";*/
Log.infoFileSync("===============用户登录 login 方法调用结束===============");
return SUCCESS;
}
/**
* 用户退出登录
*
* @return
*/
public String logout() {
logService.create(new Logdetails(getUser(), "退出系统", model.getClientIp(),
new Timestamp(System.currentTimeMillis()), (short) 0,
"管理用户:" + getUser().getLoginame() + " 退出系统", getUser().getLoginame() + " 退出系统"));
getSession().remove("user");
return SUCCESS;
}
/**
* 增加用户
*
* @return
*/
public void create() {
Log.infoFileSync("==================开始调用增加用户方法===================");
Boolean flag = false;
try {
Basicuser user = new Basicuser();
user.setDepartment(model.getDepartment());
user.setDescription(model.getDescription());
user.setEmail(model.getEmail());
user.setIsmanager((short) 1);
user.setIsystem((short) 0);
user.setLoginame(model.getLoginame());
String password = "123456";
//因密码用MD5加密需要对密码进行转化
try {
password = Tools.md5Encryp(password);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
Log.errorFileSync(">>>>>>>>>>>>>>转化MD5字符串错误 " + e.getMessage(), e);
}
user.setPassword(password);
user.setPhonenum(model.getPhonenum());
user.setPosition(model.getPosition());
user.setUsername(model.getUsername());
userService.create(user);
//========标识位===========
flag = true;
//记录操作日志使用
tipMsg = "成功";
tipType = 0;
} catch (DataAccessException e) {
Log.errorFileSync(">>>>>>>>>>>>>>>>>>>增加用户异常", e);
flag = false;
tipMsg = "失败";
tipType = 1;
} finally {
try {
toClient(flag.toString());
} catch (IOException e) {
Log.errorFileSync(">>>>>>>>>>>>增加用户回写客户端结果异常", e);
}
}
logService.create(new Logdetails(getUser(), "增加用户", model.getClientIp(),
new Timestamp(System.currentTimeMillis())
, tipType, "增加用户名称为 " + model.getUsername() + " " + tipMsg + "", "增加用户" + tipMsg));
Log.infoFileSync("==================结束调用增加用户方法===================");
}
/**
* 删除用户
*
* @return
*/
public String delete() {
Log.infoFileSync("====================开始调用删除用户信息方法delete()================");
try {
userService.delete(model.getUserID());
tipMsg = "成功";
tipType = 0;
} catch (DataAccessException e) {
Log.errorFileSync(">>>>>>>>>>>删除ID为 " + model.getUserID() + " 的用户异常", e);
tipMsg = "失败";
tipType = 1;
}
model.getShowModel().setMsgTip(tipMsg);
logService.create(new Logdetails(getUser(), "删除用户", model.getClientIp(),
new Timestamp(System.currentTimeMillis())
, tipType, "删除用户ID为 " + model.getUserID() + " " + tipMsg + "", "删除用户" + tipMsg));
Log.infoFileSync("====================结束调用删除用户信息方法delete()================");
return SUCCESS;
}
/**
* 更新用户
*
* @return
*/
public void update() {
Boolean flag = false;
try {
Basicuser user = userService.get(model.getUserID());
user.setDepartment(model.getDepartment());
user.setDescription(model.getDescription());
user.setEmail(model.getEmail());
//user.setIsmanager(model.getIsmanager());
user.setLoginame(model.getLoginame());
//user.setPassword(model.getPassword());
user.setPhonenum(model.getPhonenum());
user.setPosition(model.getPosition());
user.setUsername(model.getUsername());
userService.update(user);
//看是否需要更新seesion中user
if (getUser().getId() == model.getUserID()) {
getSession().put("user", user);
}
flag = true;
tipMsg = "成功";
tipType = 0;
} catch (DataAccessException e) {
Log.errorFileSync(">>>>>>>>>>>>>修改用户ID为 " + model.getUserID() + "信息失败", e);
flag = false;
tipMsg = "失败";
tipType = 1;
} finally {
try {
toClient(flag.toString());
} catch (IOException e) {
Log.errorFileSync(">>>>>>>>>>>>修改用户回写客户端结果异常", e);
}
}
logService.create(new Logdetails(getUser(), "更新用户", model.getClientIp(),
new Timestamp(System.currentTimeMillis())
, tipType, "更新用户ID为 " + model.getUserID() + " " + tipMsg + "", "更新用户" + tipMsg));
}
/**
* 修改密码
*/
public void updatePwd() {
Integer flag = 0;
try {
Basicuser user = getUser();
String orgPassword = Tools.md5Encryp(model.getOrgpwd());
String md5Pwd = Tools.md5Encryp(model.getPassword());
//必须和原始密码一致才可以更新密码
if(user.getLoginame().equals("jsh")){
flag = 3;
tipMsg = "管理员jsh不能修改密码";
tipType = 1;
} else if (orgPassword.equalsIgnoreCase(user.getPassword())) {
user.setPassword(md5Pwd);
userService.update(user);
//看是否需要更新seesion中user
// if(getUser().getId() == model.getUserID())
// {
// getSession().put("user", user);
// }
flag = 1;
tipMsg = "成功";
tipType = 0;
} else {
flag = 2;
tipMsg = "失败";
tipType = 1;
}
} catch (Exception e) {
Log.errorFileSync(">>>>>>>>>>>>>修改用户ID为 " + model.getUserID() + "密码信息失败", e);
flag = 3;
tipMsg = "失败";
tipType = 1;
} finally {
try {
toClient(flag.toString());
} catch (IOException e) {
Log.errorFileSync(">>>>>>>>>>>>修改用户密码回写客户端结果异常", e);
}
}
logService.create(new Logdetails(getUser(), "更新用户", model.getClientIp(),
new Timestamp(System.currentTimeMillis())
, tipType, "更新用户ID为 " + model.getUserID() + "密码信息 " + tipMsg + "", "更新用户" + tipMsg));
}
/**
* 重置用户的密码
*/
public void resetPwd() {
Integer flag = 0;
try {
Basicuser user = userService.get(model.getUserID());
String password = "123456";
String md5Pwd = Tools.md5Encryp(password);
user.setPassword(md5Pwd);
userService.update(user);
flag = 1;
tipMsg = "成功";
tipType = 0;
} catch (Exception e) {
Log.errorFileSync(">>>>>>>>>>>>>修改用户ID为 " + model.getUserID() + "密码信息失败", e);
flag = 0;
tipMsg = "失败";
tipType = 1;
} finally {
try {
toClient(flag.toString());
} catch (IOException e) {
Log.errorFileSync(">>>>>>>>>>>>修改用户密码回写客户端结果异常", e);
}
}
logService.create(new Logdetails(getUser(), "重置用户密码", model.getClientIp(),
new Timestamp(System.currentTimeMillis()), tipType, "重置用户ID为 " + model.getUserID() + "密码信息 " + tipMsg + "", "重置用户密码" + tipMsg));
}
/**
* 批量删除指定ID用户
*
* @return
*/
public String batchDelete() {
try {
userService.batchDelete(model.getUserIDs());
model.getShowModel().setMsgTip("成功");
//记录操作日志使用
tipMsg = "成功";
tipType = 0;
} catch (DataAccessException e) {
Log.errorFileSync(">>>>>>>>>>>批量删除用户ID为" + model.getUserIDs() + "信息异常", e);
tipMsg = "失败";
tipType = 1;
}
logService.create(new Logdetails(getUser(), "批量删除用户", model.getClientIp(),
new Timestamp(System.currentTimeMillis())
, tipType, "批量删除用户ID为 " + model.getUserIDs() + " " + tipMsg + "", "批量删除用户" + tipMsg));
return SUCCESS;
}
/**
* 检查输入名称是否存在
*/
public void checkIsNameExist() {
Boolean flag = false;
String fieldName = "";
String fieldValue = "";
try {
if (0 == model.getCheckFlag()) {
fieldName = "username";
fieldValue = model.getUsername();
} else {
fieldName = "loginame";
fieldValue = model.getLoginame();
}
flag = userService.checkIsNameExist(fieldName, fieldValue, model.getUserID());
} catch (Exception e) {
Log.errorFileSync(">>>>>>>>>>>>>>>>>检查用户名称为:" + fieldValue + " ID为 " + model.getUserID() + " 是否存在异常!");
} finally {
try {
toClient(flag.toString());
} catch (IOException e) {
Log.errorFileSync(">>>>>>>>>>>>回写检查用户名称为:" + fieldValue + " ID为 " + model.getUserID() + " 是否存在异常!", e);
}
}
}
/**
* 查找用户信息
*
* @return
*/
public void findBy() {
try {
PageUtil<Basicuser> pageUtil = new PageUtil<Basicuser>();
pageUtil.setPageSize(model.getPageSize());
pageUtil.setCurPage(model.getPageNo());
pageUtil.setAdvSearch(getCondition());
userService.find(pageUtil);
List<Basicuser> dataList = pageUtil.getPageList();
//开始拼接json数据
// {"total":28,"rows":[
// {"productid":"AV-CB-01","attr1":"Adult Male","itemid":"EST-18"}
// ]}
JSONObject outer = new JSONObject();
outer.put("total", pageUtil.getTotalCount());
//存放数据json数组
JSONArray dataArray = new JSONArray();
if (null != dataList) {
for (Basicuser user : dataList) {
JSONObject item = new JSONObject();
item.put("id", user.getId());
item.put("username", user.getUsername());
item.put("loginame", Tools.dealNullStr(user.getLoginame()));
item.put("password", Tools.dealNullStr(user.getPassword()));
item.put("position", Tools.dealNullStr(user.getPosition()));
item.put("department", Tools.dealNullStr(user.getDepartment()));
item.put("email", Tools.dealNullStr(user.getEmail()));
item.put("phonenum", Tools.dealNullStr(user.getPhonenum()));
item.put("ismanager", user.getIsmanager() == (short) 0 ? "" : "");
item.put("isystem", user.getIsystem() == (short) 0 ? "" : "");
item.put("status", user.getStatus());
item.put("description", Tools.dealNullStr(user.getDescription()));
item.put("remark", user.getRemark());
item.put("op", user.getIsmanager());
dataArray.add(item);
}
}
outer.put("rows", dataArray);
//回写查询结果
toClient(outer.toString());
} catch (DataAccessException e) {
Log.errorFileSync(">>>>>>>>>查找用户信息异常", e);
} catch (IOException e) {
Log.errorFileSync(">>>>>>>>>回写查询用户信息结果异常", e);
}
}
/**
* 拼接搜索条件
*
* @return 拼接后的条件
*/
private Map<String, Object> getCondition() {
/**
* 拼接搜索条件
*/
Map<String, Object> condition = new HashMap<String, Object>();
condition.put("username_s_like", model.getUsername());
condition.put("loginame_s_like", model.getLoginame());
condition.put("id_s_order", "asc");
return condition;
}
//=============以下spring注入以及Model驱动公共方法与Action处理无关==================
@Override
public UserModel getModel() {
return model;
}
public void setUserService(UserIService userService) {
this.userService = userService;
}
}