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.jshoperx.service.impl.Serial;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.commons.lang3.StringUtils;
import org.apache.struts2.convention.annotation.*;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Restrictions;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
@ParentPackage("jshoperx")
@Namespace("")
@InterceptorRefs({
// @InterceptorRef("isusercanregister"),
// @InterceptorRef("issendactivatemail"),
@InterceptorRef("defaultStack")
})
public class RegisterAction extends ActionSupport {
@Resource
private MemberTService memberTService;
@Resource
private Serial serial;
private MemberT memberT;
private String loginname;
private String loginpwd;
private String email;
private String rand;
private String mid;
private String question;
private String answer;
private String nick;
private String msg;
private boolean sucflag;
public String getRand() {
return rand;
}
public void setRand(String rand) {
this.rand = rand;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public boolean isSucflag() {
return sucflag;
}
public void setSucflag(boolean sucflag) {
this.sucflag = sucflag;
}
public String getQuestion() {
return question;
}
public void setQuestion(String questoin) {
this.question = questoin;
}
public String getAnswer() {
return answer;
}
public void setAnswer(String answer) {
this.answer = answer;
}
public MemberT getMemberT() {
return memberT;
}
public void setMemberT(MemberT memberT) {
this.memberT = memberT;
}
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 getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getNick() {
return nick;
}
public void setNick(String nick) {
this.nick = nick;
}
public String getMid() {
return mid;
}
public void setMid(String mid) {
this.mid = mid;
}
/**
* 清理错误
*/
@Override
public void validate() {
this.clearErrorsAndMessages();
}
/**
* 注册验证
* @return
*/
public boolean registervalidation(){
boolean register=false;
this.setMsg("");
if(StringUtils.isNotBlank(this.getLoginname())){
if(this.getLoginname().length()<4){
this.setMsg("1");
return register;
}else if(this.getLoginname().length()>20){
this.setMsg("1");
return register;
}
}else{
this.setMsg("1");
return register;
}
if(StringUtils.isNotBlank(this.getLoginpwd())){
if(this.getLoginpwd().length()<7){
this.setMsg("2");
return register;
}else if(this.getLoginpwd().length()>20){
this.setMsg("2");
return register;
}
}else{
this.setMsg("2");
return register;
}
// if(!StringUtils.isNotBlank(this.getEmail())){
// this.setMsg("3");
// return register;
// }
register=true;
return register;
}
/**
* 增加新用户
* @return
*/
@Action(value = "register", results = {
@Result(name = "register_success",type="redirect",location = "/index.html"),
@Result(name = "register_error",type="redirect",location = "/html/default/shop/user/register.html?msg=${msg}"),
@Result(name = "useractivates",type="redirect",location = "/html/default/shop/user/register.html?msg=${msg}")
})
public String register() {
if(registervalidation()){
Criterion criterion= Restrictions.eq("loginname", this.getLoginname().toLowerCase(Locale.CHINA));
MemberT memberT=this.memberTService.findOneByCriteria(MemberT.class, criterion);
if(memberT!=null){
this.setMsg("4");
return "register_error";
}
MemberT m=new MemberT();
m.setId(this.serial.Serialid(Serial.MEMBER));
m.setMid(SHA1.getDigestOfString(m.getId()));
m.setLoginname(this.getLoginname().toLowerCase(Locale.CHINA).trim());
m.setLoginpwd(SHA1.getDigestOfString(this.getLoginpwd().trim()));
m.setNick(StaticKey.EMPTY);
m.setRealname(StaticKey.EMPTY);
m.setCity(StaticKey.EMPTY);
m.setDistrict(StaticKey.EMPTY);
m.setSex(StaticKey.EMPTY);
m.setWhichsex(StaticKey.EMPTY);
m.setMemberstate(StaticKey.MEMBERSTATE_ONE_NUM);
m.setMerrystatus(StaticKey.EMPTY);
m.setBirthday(StaticKey.EMPTY);
m.setBlood(StaticKey.EMPTY);
m.setConstellation(StaticKey.EMPTY);
m.setDes(StaticKey.EMPTY);
m.setEmail(StaticKey.EMPTY);
m.setQq(StaticKey.EMPTY);
m.setWeixin(StaticKey.EMPTY);
m.setSinaweibo(StaticKey.EMPTY);
m.setTag(StaticKey.EMPTY);
m.setBelove(0);
m.setLoveother(0);
m.setPostingcount(0);
m.setQuestion(StaticKey.EMPTY);
m.setAnswer(StaticKey.EMPTY);
m.setHeadpath("#");
m.setCreatetime(BaseTools.getSystemTime());
m.setCreatorid(StaticKey.ZERO);
m.setMobile(StaticKey.EMPTY);
m.setPaypassword(StaticKey.EMPTY);
m.setMemberGroupId(StaticKey.EMPTY);
m.setMemberGroupName(StaticKey.EMPTY);
m.setTelno(StaticKey.EMPTY);
m.setVersiont(1);
m.setIntegration(0);
m.setUpdatetime(m.getCreatetime());
this.memberTService.save(m);
return "register_success";
}else{
return "register_error";
}
}
/**
* 激活用户
*/
@Action(value = "updateMemberstate", results = {
@Result(name = "json",type="json")
})
public String updateMemberstate(){
if(StringUtils.isBlank(this.getMid())){
return "json";
}
Criterion criterion=Restrictions.eq("mid", this.getMid());
MemberT memberT=this.memberTService.findOneByCriteria(MemberT.class, criterion);
if(memberT!=null){
memberT.setMemberstate(BaseEnums.MemberState.ACTIVE.getState());
this.memberTService.update(memberT);
this.setSucflag(true);
return "json";
}
return "json";
}
/**
* 根据安全问题和答案检查用户是否存在
* @return
*/
@Action(value = "findMemberByQA", results = {
@Result(name = "json",type="json")
})
public String findMemberByQA(){
if(StringUtils.isBlank(this.getLoginname())||StringUtils.isBlank(this.getQuestion())||StringUtils.isBlank(this.getAnswer())){
return "json";
}
Map<String,String>params=new HashMap<>();
params.put("loginname",this.getLoginname());
params.put("question",this.getQuestion());
params.put("answer",this.getAnswer());
Criterion criterion=Restrictions.allEq(params);
MemberT memberT=this.memberTService.findOneByCriteria(MemberT.class,criterion);
if(memberT!=null){
this.setSucflag(true);
return "json";
}
return "json";
}
}