package com.jshoperx.action.frontstage.membercenter; 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.statickey.StaticKey; import com.jshoperx.entity.MemberT; import com.jshoperx.service.MemberTService; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import org.apache.struts2.convention.annotation.*; import org.apache.struts2.json.annotations.JSON; import org.hibernate.criterion.Criterion; import org.hibernate.criterion.Restrictions; import javax.annotation.Resource; import java.io.UnsupportedEncodingException; import java.util.HashMap; import java.util.Map; @ParentPackage("jshoperx") @Namespace("") @InterceptorRefs({ @InterceptorRef("defaultStack") }) public class LoginAction extends ActionSupport { @Resource private MemberTService memberTService; private MemberT memberT; private String basePath; private String loginname; private String loginpwd; private String hidurl; private String redirecturl; private boolean loginflag; public String getRedirecturl() { return redirecturl; } public void setRedirecturl(String redirecturl) { this.redirecturl = redirecturl; } @JSON(serialize = false) public MemberT getMemberT() { return memberT; } public void setMemberT(MemberT memberT) { this.memberT = memberT; } public boolean isLoginflag() { return loginflag; } public void setLoginflag(boolean loginflag) { this.loginflag = loginflag; } public String getLoginname() { return loginname; } public void setLoginname(String loginname) { this.loginname = loginname; } public String getLoginpwd() { return loginpwd; } public void setLoginpwd(String loginpwd) { this.loginpwd = loginpwd; } public String getHidurl() { return hidurl; } public void setHidurl(String hidurl) { this.hidurl = hidurl; } public String getBasePath() { return basePath; } public void setBasePath(String basePath) { this.basePath = basePath; } /** * 清理错误 */ @Override public void validate() { this.clearErrorsAndMessages(); } /** * 前台用户登录 * * @return */ @Action(value = "login", results = { @Result(name = "success",type="redirect",location = "${redirecturl}"), @Result(name = "input",type="redirect",location = "/html/default/shop/user/login.html") }) public String login() { this.setBasePath(BaseTools.getBasePath()); MemberT m = (MemberT) ActionContext.getContext().getSession().get(StaticKey.MEMBER_SESSION_KEY); if(m!=null){ ActionContext.getContext().getSession().remove(StaticKey.MEMBER_SESSION_KEY); } Map<String,String>params=new HashMap<>(); params.put("loginname",this.getLoginname().trim()); params.put("loginpwd",SHA1.getDigestOfString(this.getLoginpwd().trim())); params.put("memberstate",BaseEnums.MemberState.ACTIVE.getState()); Criterion criterion= Restrictions.allEq(params); MemberT member=memberTService.findOneByCriteria(MemberT.class, criterion); if (member!=null) { this.setLoginflag(true); ActionContext.getContext().getSession().put(StaticKey.MEMBER_SESSION_KEY, member); return SUCCESS; } return INPUT; } /** * 前台登出 */ @Action(value = "memberlogout", results = { @Result(name = "success",type="freemarker",location = "/html/default/shop/user/login.html") }) public String memberlogout() throws UnsupportedEncodingException { ActionContext.getContext().getSession().remove(StaticKey.MEMBER_SESSION_KEY); return SUCCESS; } @Action(value="islogin", results={ @Result(name="json",type="json") }) public String islogin(){ MemberT memberT=(MemberT) ActionContext.getContext().getSession().get(StaticKey.MEMBER_SESSION_KEY); if(memberT!=null){ this.setLoginname(memberT.getLoginname()); }else{ this.setLoginname(""); } return "json"; } }