package com.jshoperx.action.backstage.user; import com.jshoperx.action.backstage.authority.UserRoleMAction; import com.jshoperx.action.backstage.base.BaseTAction; import com.jshoperx.action.backstage.base.DataCollectionTAction; import com.jshoperx.action.backstage.base.InitTAction; import com.jshoperx.action.backstage.utils.BaseTools; import com.jshoperx.action.backstage.utils.SHA1; import com.jshoperx.action.backstage.utils.enums.BaseEnums; import com.jshoperx.action.backstage.utils.enums.BaseEnums.UserType; import com.jshoperx.action.backstage.utils.statickey.StaticKey; import com.jshoperx.entity.FunctionT; import com.jshoperx.entity.OrderT; import com.jshoperx.entity.UserT; import com.jshoperx.service.GlobalParamService; import com.jshoperx.service.UserRoleMService; import com.jshoperx.service.UsertService; import com.jshoperx.service.impl.Serial; import com.jshoperx.shiro.LoginUsernamePasswordToken; import com.opensymphony.xwork2.ActionContext; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.apache.shiro.subject.Subject; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.json.annotations.JSON; import org.hibernate.criterion.Criterion; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.*; /** * Created with sdywcd@gmail.com * Author:sdywcd@gmail.com * Date:15/7/23 * Time:下午6:19 * Note:后台用户相关操作Action **/ @Namespace("") @ParentPackage("jshoperx") public class UserTAction extends BaseTAction { private static final long serialVersionUID = 1L; @Resource private UsertService usertService; @Resource private InitTAction initTAction; @Resource private UserRoleMService userRoleMService; @Resource private UserRoleMAction userRoleMAction; @Resource private GlobalParamService globalParamService; @Resource private DataCollectionTAction dataCollectionTAction; // @Resource // private JmsTemplate jmsTemplate; private UserT bean = new UserT(); private String param; private List<UserT> user = new ArrayList<UserT>(); private List<Map<String, Object>> rows = new ArrayList<Map<String, Object>>(); private int rp; private int page = 1; private int total = 0; private HttpServletResponse response; private HttpServletRequest request; private String goingToURL; private String userid; private String username; private String realname; private String email; private String telno; private String mobile; private String question; private String answer; private String password; private String userstate; private Date postingcount; private String section; private String position; private String groupid; private String parttime1; private String parttime2; private String parttime3; private String qq; private String sinaweibo; private String state; private String uid; private String rolemname; private String rolemid; private String headpath; private String weixin; private String newpassword; private String message; private String roleid; private boolean slogin = false; private boolean sucflag; private boolean sauthority; private String baseurl; private String basepath; @JSON(serialize = false) public String getUserid() { return userid; } public void setUserid(String userid) { this.userid = userid; } @JSON(serialize = false) public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } @JSON(serialize = false) public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @JSON(serialize = false) public HttpServletResponse getResponse() { return response; } public void setResponse(HttpServletResponse response) { this.response = response; } @JSON(serialize = false) public HttpServletRequest getRequest() { return request; } public void setRequest(HttpServletRequest request) { this.request = request; } public String getRealname() { return realname; } public void setRealname(String realname) { this.realname = realname; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getTelno() { return telno; } public void setTelno(String telno) { this.telno = telno; } public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } public String getQuestion() { return question; } public void setQuestion(String question) { this.question = question; } public String getAnswer() { return answer; } public void setAnswer(String answer) { this.answer = answer; } public String getUserstate() { return userstate; } public void setUserstate(String userstate) { this.userstate = userstate; } public String getParam() { return param; } public void setParam(String param) { this.param = param; } public String getSection() { return section; } public void setSection(String section) { this.section = section; } public String getPosition() { return position; } public void setPosition(String position) { this.position = position; } public String getGroupid() { return groupid; } public void setGroupid(String groupid) { this.groupid = groupid; } public String getParttime1() { return parttime1; } public void setParttime1(String parttime1) { this.parttime1 = parttime1; } public String getParttime2() { return parttime2; } public void setParttime2(String parttime2) { this.parttime2 = parttime2; } public String getParttime3() { return parttime3; } public void setParttime3(String parttime3) { this.parttime3 = parttime3; } public void setServletRequest(HttpServletRequest request) { this.request = request; } public void setServletResponse(HttpServletResponse response) { this.response = response; } public String getGoingToURL() { return goingToURL; } public void setGoingToURL(String goingToURL) { this.goingToURL = goingToURL; } public UserT getBean() { return bean; } public void setBean(UserT bean) { this.bean = bean; } public List<UserT> getUser() { return user; } public void setUser(List<UserT> user) { this.user = user; } public List<Map<String, Object>> getRows() { return rows; } public void setRows(List<Map<String, Object>> rows) { this.rows = rows; } public int getRp() { return rp; } public void setRp(int rp) { this.rp = rp; } public int getPage() { return page; } public void setPage(int page) { this.page = page; } public int getTotal() { return total; } public void setTotal(int total) { this.total = total; } public boolean isSlogin() { return slogin; } public void setSlogin(boolean slogin) { this.slogin = slogin; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public boolean isSucflag() { return sucflag; } public void setSucflag(boolean sucflag) { this.sucflag = sucflag; } public String getRoleid() { return roleid; } public void setRoleid(String roleid) { this.roleid = roleid; } public String getBaseurl() { return baseurl; } public void setBaseurl(String baseurl) { this.baseurl = baseurl; } public String getRolemname() { return rolemname; } public void setRolemname(String rolemname) { this.rolemname = rolemname; } public String getRolemid() { return rolemid; } public void setRolemid(String rolemid) { this.rolemid = rolemid; } public Date getPostingcount() { return postingcount; } public void setPostingcount(Date postingcount) { this.postingcount = postingcount; } public String getQq() { return qq; } public void setQq(String qq) { this.qq = qq; } public String getSinaweibo() { return sinaweibo; } public void setSinaweibo(String sinaweibo) { this.sinaweibo = sinaweibo; } public String getState() { return state; } public void setState(String state) { this.state = state; } public String getUid() { return uid; } public void setUid(String uid) { this.uid = uid; } public String getHeadpath() { return headpath; } public void setHeadpath(String headpath) { this.headpath = headpath; } public String getWeixin() { return weixin; } public void setWeixin(String weixin) { this.weixin = weixin; } public String getNewpassword() { return newpassword; } public void setNewpassword(String newpassword) { this.newpassword = newpassword; } public boolean isSauthority() { return sauthority; } public void setSauthority(boolean sauthority) { this.sauthority = sauthority; } public String getBasepath() { return basepath; } public void setBasepath(String basepath) { this.basepath = basepath; } /** * 清理错误 */ @Override public void validate() { this.clearErrorsAndMessages(); } /** * 验证登陆 */ @Action(value = "/checklogin", results = { @Result(name = "json", type = "json", params = { "includeProperties", "slogin" }) }) public String checklogin() { // this.setBasepath(this.getDataCollectionTAction().getBasePath()); UserT admin = (UserT) ActionContext.getContext().getSession() .get(StaticKey.BACK_USER_SESSION_KEY); if (admin != null) { this.setSlogin(false); return "json"; } else { this.setSlogin(true); return "json"; } } @Action(value = "/checkAuthorityException", results = { @Result(name = "json", type = "json", params = { "includeProperties", "sauthority" }) }) public String checkAuthorityException() { String authorityE = (String) ActionContext.getContext().getSession() .get(StaticKey.AUTHORITYEXCEPTION); if (authorityE != null) { if (StaticKey.ONE.equals(authorityE)) { this.setSauthority(true); ActionContext.getContext().getSession() .remove(StaticKey.AUTHORITYEXCEPTION); return "json"; } } else { this.setSauthority(false); return "json"; } return "json"; } /** * 管理员登陆 * * @return * @throws Exception */ @Action(value = "/adminlogin", results = { @Result(name = "success", type = "redirect", location = "/admin/index.jsp?session=${param}"), @Result(name = "input", type = "redirect", location = "/admin/login.jsp?msg=${param}") }) public String adminlogin() throws Exception { if (StringUtils.isBlank(this.getUsername())) { this.setParam(StaticKey.ONE); return INPUT; } if (StringUtils.isBlank(this.getPassword())) { this.setParam(StaticKey.ONE); return INPUT; } UserT user = new UserT(); user.setUsername(this.getUsername().toLowerCase(Locale.CHINA).trim()); user.setPassword(SHA1.getDigestOfString(password)); user.setUserstate(BaseEnums.UserState.ACTIVE.getState()); Criterion criterion = Restrictions .and(Restrictions.eq("username", user.getUsername())) .add(Restrictions.eq("password", user.getPassword())) .add(Restrictions.eq("userstate", user.getUserstate())); user = this.usertService.findOneByCriteria(UserT.class, criterion); if (user != null) { doSysIndexInit(user); return SUCCESS; } this.setParam(StaticKey.ONE); // test jms // for(int i=0;i<1;i++){ // final String a=String.valueOf(i); // jmsTemplate.send(new MessageCreator() { // public Message createMessage(Session session) // throws JMSException { // TextMessage msg = session.createTextMessage(); // // 设置消息属性 // msg.setStringProperty("phrCode", "C00"+a); // // 设置消息内容 // msg.setText("Hello World! "+a); // return msg; // } // }); // } return INPUT; } /** * 进行用户登录有的系统首页数据初始化及用户权限相关初始化 */ private void doSysIndexInit(UserT user) { Subject subject=SecurityUtils.getSubject(); LoginUsernamePasswordToken token=new LoginUsernamePasswordToken(); token.setUsername(user.getUsername()); token.setPassword(user.getPassword().toCharArray()); subject.login(token); //ddddd this.setParam(StaticKey.ONE); ActionContext.getContext().getSession() .put(StaticKey.BACK_USER_SESSION_KEY, user); this.setParam(SHA1.getDigestOfString(user.getUserid())); ActionContext.getContext().getSession() .put(StaticKey.BACK_SESSION_KEY, param); // 获取默认主题 this.initTAction.InitDefaultThemeT(); // 收集权限信息并放入内存 List<FunctionT> userfunctionlist = this.userRoleMAction .findUserRoleFunctionList(user.getUserid()); // List<FunctionM>allfunctionlist=this.userRoleMAction.findAllFunctionM(); ActionContext.getContext().getSession() .put(StaticKey.USERROLEFUNCTION, userfunctionlist); // ActionContext.getContext().getSession().put(BaseTools.ALLROLEFUNCTION, // allfunctionlist); // 获取前5条需要发货的订单信息 List<OrderT> listOrderTs = this.initTAction.findNewestOrders(); ActionContext.getContext().getSession() .put(StaticKey.NEWESTORDERS, listOrderTs); } /** * 查询所有用户 * * @return */ @Action(value = "/findAllUsert", results = { @Result(name = "json", type = "json") }) public String findAllUsert() { if (StaticKey.SC.equals(this.getQtype())) { finddefaultAllUserT(); } else { if (StringUtils.isBlank(this.getQtype())) { return JSON; } else { return JSON; } } return JSON; } private void finddefaultAllUserT() { int currentPage = page; int lineSize = rp; total = this.usertService.countfindAll(UserT.class); List<UserT> list = this.usertService.findAll(UserT.class, currentPage, lineSize); if (!list.isEmpty()) { processUserList(list); } } private void processUserList(List<UserT> list) { for (Iterator<UserT> it = list.iterator(); it.hasNext();) { UserT u = (UserT) it.next(); if (StringUtils.equals(BaseEnums.UserType.NORMALMANAGER.getState(), u.getState())) { u.setState(BaseEnums.UserType.NORMALMANAGER.getName()); } if (StringUtils.equals(BaseEnums.UserType.SHOPMANAGER.getState(), u.getState())) { u.setState(BaseEnums.UserType.SHOPMANAGER.getName()); } if (StringUtils.equals(BaseEnums.UserType.SUPERMANAGER.getState(), u.getState())) { u.setState(BaseEnums.UserType.SUPERMANAGER.getName()); } if (StringUtils.equals(BaseEnums.UserState.ACTIVE.getState(), u.getUserstate())) { u.setUserstate(BaseEnums.UserState.ACTIVE.getName()); } if (StringUtils.equals(BaseEnums.UserState.UNACTIVE.getState(), u.getUserstate())) { u.setUserstate(BaseEnums.UserState.UNACTIVE.getName()); } if (StringUtils.equals(BaseEnums.UserState.LOCK.getState(), u.getUserstate())) { u.setUserstate(BaseEnums.UserState.LOCK.getName()); } Map<String, Object> cellMap = new HashMap<String, Object>(); cellMap.put("id", u.getUserid()); cellMap.put( "cell", new Object[] { u.getShopname(), u.getUsername(), u.getRealname(), u.getEmail(), u.getMobile(), u.getRolemname(), u.getState(), u.getUserstate(), "<a id='edituser' href='user.jsp?operate=edit&folder=user&userid=" + u.getUserid() + "' name='edituser'>[编辑]</a>" }); rows.add(cellMap); } } /** * 管理员增加用户 * * @return */ @Action(value = "/saveUserT", results = { @Result(name = "json", type = "json") }) public String saveUserT() { if (StringUtils.isNotBlank(this.getUsername()) && StringUtils.isNotBlank(this.getPassword()) && StringUtils.isNotBlank(this.getEmail())) { // PasswordHelper ph = new PasswordHelper(); UserT u = new UserT(); u.setUsername(this.getUsername().trim()); u.setEmail(this.getEmail().trim()); Criterion criterion = Restrictions.and( Restrictions.eq("username", u.getUsername())).add( Restrictions.eq("email", u.getEmail())); u = this.usertService.findOneByCriteria(UserT.class, criterion); if (u != null) { this.setMessage("用户已经存在");// 表示用户已经存在 return "json"; } else { u = new UserT(); u.setUsername(this.getUsername().trim()); u.setEmail(this.getEmail().trim()); Criterion criterion2 = Restrictions.and( Restrictions.eq("username", u.getUsername())).add( Restrictions.eq("email", u.getEmail())); u = this.usertService .findOneByCriteria(UserT.class, criterion2); if (u != null) { this.setMessage("用户邮箱已经存在");// 表示用户邮箱存在 return "json"; } UserT user = new UserT(); user.setUserid(this.getSerial().Serialid(Serial.USER)); user.setUid(SHA1.getDigestOfString(user.getUserid())); user.setUsername(this.getUsername().trim()); user.setRealname(this.getRealname().trim()); user.setEmail(this.getEmail().trim()); user.setTelno(StaticKey.EMPTY); user.setMobile(this.getMobile().trim()); user.setQuestion(this.getQuestion().trim()); user.setAnswer(this.getAnswer().trim()); user.setPassword(SHA1.getDigestOfString(this.getPassword().trim()));// 默认密码7个1 user.setUserstate(this.getUserstate()); user.setPostingcount(0); user.setSection(StaticKey.EMPTY); user.setPosition(StaticKey.EMPTY); user.setGroupid(StaticKey.EMPTY); user.setParttime1(StaticKey.EMPTY); user.setParttime2(StaticKey.EMPTY); user.setParttime3(StaticKey.EMPTY); user.setQq(this.getQq().trim()); user.setSinaweibo(StaticKey.EMPTY); user.setWeixin(StaticKey.EMPTY); user.setState(this.getState()); user.setRolemid(StaticKey.ZERO); user.setRolemname(StaticKey.EMPTY); user.setHeadpath(this.getHeadpath().trim()); user.setCreatorid(BaseTools.getAdminCreateId()); user.setCreatetime(BaseTools.getSystemTime()); user.setUpdatetime(user.getCreatetime()); user.setSalt(StaticKey.EMPTY); user.setCredentialsalt(StaticKey.EMPTY); user.setShopid(StaticKey.ZERO); user.setShopname(StaticKey.ZERO); // ph.encrypPassword(user); this.usertService.save(user); this.setSucflag(true); return "json"; } } this.setMessage("邮箱,用户名,密码必须填写"); return "json"; } /** * 更新系统用户 * * @return */ @Action(value = "/updateUserT", results = { @Result(name = "json", type = "json") }) public String updateUserT() { if (StringUtils.isBlank(this.getUserid())) { return JSON; } bean = this.usertService.findByPK(UserT.class, this.getUserid()); if (bean != null) { bean.setRealname(this.getRealname()); bean.setMobile(this.getMobile()); bean.setQq(this.getQq()); bean.setWeixin(this.getWeixin()); bean.setSinaweibo(this.getSinaweibo()); bean.setHeadpath(this.getHeadpath()); bean.setEmail(this.getEmail()); bean.setQuestion(this.getQuestion()); bean.setAnswer(this.getAnswer()); bean.setUserstate(this.getUserstate()); bean.setState(this.getState()); bean.setUpdatetime(BaseTools.getSystemTime()); this.usertService.update(bean); this.setSucflag(true); return JSON; } return JSON; } /** * 根据用户id获取用户信息 * * @return */ @Action(value = "/findUserById", results = { @Result(name = "json", type = "json") }) public String findUserById() { if (StringUtils.isNotBlank(this.getUserid())) { bean = this.usertService.findByPK(UserT.class, this.getUserid()); if (bean != null) { bean.setHeadpath(BaseTools.getBasePath() + bean.getHeadpath()); this.setSucflag(true); return JSON; } } return JSON; } /** * 管理员更新用户信息,不包含密码等安全信息 * * @return */ @Action(value = "/UpdateUserTunpwd", results = { @Result(name = "json", type = "json") }) public String UpdateUserTunpwd() { this.checklogin(); if (!this.isSlogin()) { UserT user = this.usertService.findByPK(UserT.class, this.getUserid()); if (user != null) { user.setUsername(this.getUsername().trim()); user.setEmail(this.getEmail().trim()); user.setUserstate(this.getUserstate()); user.setState(this.getState()); this.usertService.update(user); this.setSucflag(true); return JSON; } } this.setSucflag(false); return JSON; } /** * 管理员批量删除用户 * * @return */ @Action(value = "/DelUsert", results = { @Result(name = "json", type = "json") }) public String DelUsert() { if (StringUtils.isNotBlank(this.getUserid())) { String[] strs = StringUtils.split(this.getUserid(), StaticKey.SPLITDOT); for (String s : strs) { UserT user = this.usertService.findByPK(UserT.class, s); if (user != null) { this.usertService.delete(user); } } this.setSucflag(true); return JSON; } return JSON; } /** * 更改管理员密码 * * @return */ @Action(value = "/UpdateUserMember", results = { @Result(name = "json", type = "json") }) public String UpdateUserMember() { this.checklogin(); if (!this.isSlogin()) { UserT user = this.usertService.findByPK(UserT.class, this.getUserid()); if (user != null) { user.setPassword(SHA1.getDigestOfString(this.getNewpassword().trim())); this.usertService.update(user); } return JSON; } return JSON; } @Action(value = "/updateUserbyuserstate", results = { @Result(name = "json", type = "json") }) public String updateUserbyuserstate() { if (StringUtils.isNotBlank(this.getUserid())) { UserT user = this.usertService.findByPK(UserT.class, this.getUserid()); if (user != null) { if (StringUtils.equals(user.getUserstate(), StaticKey.ZERO)) { this.setSucflag(false); return JSON; } else { user.setUserstate(this.getUserstate()); this.usertService.update(user); this.setSucflag(true); return "json"; } } this.setSucflag(false); return "json"; } this.setSucflag(false); return "json"; } /** * 更新用户表中后台管理者的权限标记,后期可能全面启用写死的userstate模式改成此模式 * * @return */ @Action(value = "/updateUserRoleMByuserid", results = { @Result(name = "json", type = "json") }) public String updateUserRoleMByuserid() { if (StringUtils.isNotBlank(this.getUserid()) && StringUtils.isNotBlank(this.getRoleid()) && StringUtils.isNotBlank(this.getRolemname())) { UserT user = this.usertService.findByPK(UserT.class, this.getUserid()); if (user != null) { user.setRolemid(this.getRoleid()); user.setRolemname(this.getRolemname()); this.usertService.update(user); this.setSucflag(true); return JSON; } } return JSON; } /** * 后台登出 */ @Action(value = "/adminlogout", results = { @Result(name = "json", type = "json") }) public String adminlogout() { SecurityUtils.getSubject().logout(); // ActionContext.getContext().getSession() // .remove(StaticKey.BACK_USER_SESSION_KEY); // ActionContext.getContext().getSession() // .remove(StaticKey.USERROLEFUNCTION); // ActionContext.getContext().getSession() // .remove(StaticKey.BACK_SESSION_KEY); return JSON; } /** * 查询所有 * @return */ @Action(value = "findShopAdminUser", results = { @Result(name = "json", type = "json") }) public String findShopAdminUser(){ //用户账号类型是店铺管理员且shopid=0 Criterion criterion=Restrictions.and(Restrictions.eq("state", UserType.SHOPMANAGER.getState())).add(Restrictions.eq("shopid", StaticKey.ZERO)); Order order=Order.desc("updatetime"); List<UserT>list=usertService.findByCriteria(UserT.class, criterion, order); if(!list.isEmpty()){ this.setUser(list); this.setSucflag(true); } return JSON; } }