package com.jiuqi.njt.register;
import com.jiuqi.mobile.nigo.comeclose.bean.base.UserBean;
import com.jiuqi.mobile.nigo.comeclose.exception.LoginException;
import com.jiuqi.mobile.nigo.comeclose.exception.NiGoException;
import com.jiuqi.mobile.nigo.comeclose.manager.base.IRegistManager;
import com.jiuqi.mobile.nigo.comeclose.ws.client.ClientContext;
import com.jiuqi.njt.data.MyApp;
import com.jiuqi.njt.util.Constants;
import com.jiuqi.njt.util.RepairUtils;
import com.jiuqi.njt.util.UIUtil;
import android.app.Dialog;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
/**
* 注册异步类
*
* @author joe
*
*/
public class RegisterTask extends AsyncTask<Void, Void, String> {
private Context context;
private String account;
private UserBean userBean;
private String vercode;
private String password;
private String mobileNumber;
private AllTaskInterface allTaskInterface;
/**
* 是否是其他用户注册
*/
private boolean isRegisterByOther;
private MyApp application;
private Dialog pd;
private RegisterFinishReturnData registerFinishReturnData = new RegisterFinishReturnData();
/**
* 一种注册方式:手机号码,验证码
*
* @param context
* @param account
* 账号
* @param userBean
* 注册用户(当userBean 是null时说明是新注册用户否则说明是已经注册的用户
* ,已经注册的用户可以直接发送验证码直接登录)
* @param vercode
* 验证码
* @param allTaskInterface
* 执行完毕后返回结果
*/
public RegisterTask(Context context,UserBean userBean, String account,
String vercode,AllTaskInterface allTaskInterface) {
super();
this.context = context;
this.account = account;
this.userBean = userBean;
this.vercode = vercode;
this.allTaskInterface = allTaskInterface;
application = (MyApp) context.getApplicationContext();
}
/**
* 其他方式注册,包含账号、密码、绑定手机号、验证码
* @param context
* @param account
* 账号
* @param password
* 密码
* @param mobileNumber
* 注册手机号
* @param vercode
* 验证码
* @param allTaskInterface
* 执行完毕后返回结果
*/
public RegisterTask(Context context, String account, String password,
String mobileNumber, String vercode,AllTaskInterface allTaskInterface) {
super();
this.context = context;
this.account = account;
this.password = password;
this.mobileNumber = mobileNumber;
this.vercode = vercode;
this.allTaskInterface = allTaskInterface;
application = (MyApp) context.getApplicationContext();
isRegisterByOther = true;
}
@Override
protected void onPreExecute() {
pd = RepairUtils.myShowDialog(context, 7);
super.onPreExecute();
}
@Override
protected String doInBackground(Void... params) {
ClientContext context;
String result = "";
try {
context = application.getClientContext();
if (null == context) {
context = ClientContext.getClientContext(Constants.SERVER_URL,
Constants.ANONYMOUS, Constants.ANONYMOUS);
application.setClientContext(context);
}
IRegistManager manager = context.getManager(IRegistManager.class);
if(isRegisterByOther){
result = manager.registOther(account, password, mobileNumber, vercode);
}else{
if(null==userBean){//说明是通过验证码注册
result = manager.regist(vercode,account);
}else{//说明是通过验证码登录
result = manager.regist(vercode, account,userBean );
}
}
/**
* 如果注册成功(登录)
* 就把返回结果的设置成(注册成功(登录),注册成功的返回值是result)
*/
if("yzmerror".equals(result)){
result = "验证码错误";
}else if("timeOut".equals(result)){
result = "验证码超时";
}else if("dxyzmerror".equals(result)){
result = "验证码错误";
}else{
registerFinishReturnData.setRegisterSucess(true);
context.setSessionID(result);
}
registerFinishReturnData.setRegisterReturnString(result);
/**
* 注册成功通过SessionID获取MMC当前交互上下文的实例
*/
if(registerFinishReturnData.isRegisterSucess){
ClientContext clientContext =ClientContext.getClientContext(Constants.SERVER_URL, result);
application.setClientContext(clientContext);
/**
* 执行完毕说明通过注册成功的账号获取到了Session值
* 就把返回结果设置成(获取到session,获取session的返回值是result)
*/
registerFinishReturnData.setClientContextSucess(true);
registerFinishReturnData.setGetClientContextString(result);
/**
* 执行成功接着判断当前已经注册用户是不是需要完善信息(userBean不是空)
*/
// if(null!=userBean){
result = manager.decideRegistAndLogin(account,result);
/**
* 执行完毕说明判断当前账号是否需要完善信息成功
* 就把返回结果设置成(判断是否需要完善信息成功,是否需要完善信息的返回值是result)
*/
registerFinishReturnData.setNeedPerfectInfor(true);
registerFinishReturnData.setGetNeedPerfectInforString(result);
// }
}
} catch (LoginException e) {
e.printStackTrace();
result=e.getMessage();
} catch (NiGoException e) {
Log.e("111111111", "111111111");
e.printStackTrace();
result=e.getMessage();
registerFinishReturnData.setRegisterReturnString(result);
} catch (Exception e) {
Log.e("111111111", "222222222");
e.printStackTrace();
if(null!=e.getMessage()&&!"".equals(e.getMessage())){
result=e.getMessage();
}else{
result="服务端异常,请稍后重试";
}
registerFinishReturnData.setRegisterReturnString(result);
}
return result;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
RepairUtils.myRemoveDialog(pd);
if(!registerFinishReturnData.isRegisterSucess&&!"".equals(result)){
UIUtil.showMsg(context, result);
}
allTaskInterface.taskFinishReturn(registerFinishReturnData);
}
/**
* 自定义注册返回结果对象实体
* @author joe
*
*/
public class RegisterFinishReturnData{
/**
* 是否注册成功
*/
private boolean isRegisterSucess;
/**
* 注册返回结果,如果注册成功则返回结果就是注册成功后的SessionID
*/
private String registerReturnString ="";
// /**
// * 注册成功后是否通过注册成功的账号获取到Session
// */
// private boolean isRegisterAndGetSessionSucess;
//
// /**
// * 注册成功后通过注册成功的账号获取Session的返回结果
// */
// private String getSessionReturnString ="";
//
/**
* 注册成功后是否通过Session获取ClientContext
*/
private boolean isClientContextSucess;
/**
* 注册成功后通过Session获取ClientContext的返回结果
*/
private String getClientContextString ="";
/**
* 注册成功后是否通过Session获取ClientContext
*/
private boolean isNeedPerfectInfor;
/**
* 注册成功后通过Session获取ClientContext的返回结果
*/
private String getNeedPerfectInforString ="";
/**
* 是否注册成功
*/
public boolean isRegisterSucess() {
return isRegisterSucess;
}
public void setRegisterSucess(boolean isRegisterSucess) {
this.isRegisterSucess = isRegisterSucess;
}
/**
* 注册返回结果,如果注册成功则返回结果就是注册成功后的SessionID
*/
public String getRegisterReturnString() {
return registerReturnString;
}
public void setRegisterReturnString(String registerReturnString) {
this.registerReturnString = registerReturnString;
}
// /**
// * 注册成功后是否通过注册成功的账号获取到Session
// */
// public boolean isRegisterAndGetSessionSucess() {
// return isRegisterAndGetSessionSucess;
// }
// public void setRegisterAndGetSessionSucess(boolean isRegisterAndGetSessionSucess) {
// this.isRegisterAndGetSessionSucess = isRegisterAndGetSessionSucess;
// }
//
// /**
// * 注册成功后通过注册成功的账号获取Session的返回结果
// */
// public String getGetSessionReturnString() {
// return getSessionReturnString;
// }
// public void setGetSessionReturnString(String getSessionReturnString) {
// this.getSessionReturnString = getSessionReturnString;
// }
//
/**
* 注册成功后是否通过Session获取ClientContext
*/
public boolean isClientContextSucess() {
return isClientContextSucess;
}
public void setClientContextSucess(boolean isClientContextSucess) {
this.isClientContextSucess = isClientContextSucess;
}
/**
* 注册成功后通过Session获取ClientContext的返回结果
*
*/
public String getGetClientContextString() {
return getClientContextString;
}
public void setGetClientContextString(String getClientContextString) {
this.getClientContextString = getClientContextString;
}
/**
* 是否成功判断需要完善信息
* @return
*/
public boolean isNeedPerfectInfor() {
return isNeedPerfectInfor;
}
public void setNeedPerfectInfor(boolean isNeedPerfectInfor) {
this.isNeedPerfectInfor = isNeedPerfectInfor;
}
/**
* 需要完善信息返回结果
* @return
*/
public String getGetNeedPerfectInforString() {
return getNeedPerfectInforString;
}
public void setGetNeedPerfectInforString(String getNeedPerfectInforString) {
this.getNeedPerfectInforString = getNeedPerfectInforString;
}
@Override
public String toString() {
return "RegisterFinishReturnData [isRegisterSucess="
+ isRegisterSucess + ", registerReturnString="
+ registerReturnString + ", isClientContextSucess="
+ isClientContextSucess + ", getClientContextString="
+ getClientContextString + ", isNeedPerfectInfor="
+ isNeedPerfectInfor + ", getNeedPerfectInforString="
+ getNeedPerfectInforString + "]";
}
}
/**
* 注册完后,返回注册结果接口
* @author joe
*
*/
public interface RegisterFinish{
public void taskFinish(String result);
}
}