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); } }