package com.edufound.android.xyyf.phonelogin; import android.animation.ValueAnimator; import android.os.Handler; import android.os.Message; import android.text.TextUtils; import android.util.Base64; import android.view.View; import android.view.ViewGroup; import com.edufound.android.xyyf.activity.MainActivity; import com.edufound.android.xyyf.application.EApplication; import com.edufound.android.xyyf.base.BasePersenter; import com.edufound.android.xyyf.util.ContextUtil; import com.edufound.android.xyyf.util.DeviceUuidFactory; import com.edufound.android.xyyf.util.Logger; import com.edufound.android.xyyf.util.OKHttpUtil; import com.edufound.android.xyyf.util.SPutil; import com.edufound.android.xyyf.util.ToastUtil; import com.google.gson.JsonObject; import org.json.JSONException; import org.json.JSONObject; import java.io.IOException; import java.util.HashMap; import java.util.Map; import okhttp3.Call; import okhttp3.Callback; import okhttp3.Request; import okhttp3.Response; public class PhoneLoginPersenter implements PhoneLoginIPersenter { PhoneLoginModel mModel; PhoneLoginView mView; String phoneNum = ""; public PhoneLoginPersenter(PhoneLoginView view) { mModel = new PhoneLoginModel(); mView = view; } @Override public void loadData() { } @Override public void onDisConnNetWork() { } @Override public void onConnNetWork() { } public void WidthAnim(final View view, int end, int time) { ValueAnimator anim = ValueAnimator.ofInt(view.getMeasuredWidth(), end); anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator valueAnimator) { int val = (Integer) valueAnimator.getAnimatedValue(); ViewGroup.LayoutParams layoutParams = view.getLayoutParams(); layoutParams.width = val; view.setLayoutParams(layoutParams); } }); anim.setDuration(time); anim.start(); } public boolean isMobileNO(String mobileNums) { /**    * 判断字符串是否符合手机号码格式    * 移动号段: 134,135,136,137,138,139,147,150,151,152,157,158,159,170,178,182,183,184,187,188    * 联通号段: 130,131,132,145,155,156,170,171,175,176,185,186    * 电信号段: 133,149,153,170,173,177,180,181,189    * @param str    * @return 待检测的字符串    */ String telRegex = "^((13[0-9])|(14[5,7,9])|(15[^4])|(18[0-9])|(17[0,1,3,5,6,7,8]))\\d{8}$";// "[1]"代表第1位为数字1,"[358]"代表第二位可以为3、5、8中的一个,"\\d{9}"代表后面是可以是0~9的数字,有9位。 if (TextUtils.isEmpty(mobileNums)) { return false; } else { return mobileNums.matches(telRegex); } } public void getVCode(String phoneNum) throws IOException { this.phoneNum = phoneNum; if (!isMobileNO(phoneNum)) { ToastUtil.showToast("请输入正确的手机号"); mView.changeVText(1); return; } mView.changeVText(0); OKHttpUtil.getInstance().doGetSync(mModel.getVerificationCodeUrl() + phoneNum, new Callback() { @Override public void onFailure(Call call, IOException e) { Logger.e("onFailure:" + e.getMessage()); } @Override public void onResponse(Call call, Response response) throws IOException { try { String json = response.body().string(); JSONObject jsonObject = new JSONObject(json); Logger.e("json:" + json); if (jsonObject.getBoolean("success")) { } else { final String error = jsonObject.getString("message"); handler.post(new Runnable() { @Override public void run() { ToastUtil.showToast(error); } }); mView.changeVText(1); } } catch (JSONException e) { e.printStackTrace(); } } }); } public void LoginByVCode(String phone, String vcode) throws JSONException { String preuuid = SPutil.getPrefString(ContextUtil.getContext(), DeviceUuidFactory.UUID_SPKEY, ""); if (preuuid.equals("")) { preuuid = DeviceUuidFactory.getUuid().toString(); } JSONObject jsonObject = new JSONObject(); jsonObject.put("deviceCode", preuuid); jsonObject.put("channel", EApplication.getAppCode()); jsonObject.put("code", vcode); if (this.phoneNum.equals("")) { this.phoneNum = phone; } if (TextUtils.isEmpty(this.phoneNum.trim())) { ToastUtil.showToast("请输入手机号"); return; } if (TextUtils.isEmpty(vcode.trim())) { ToastUtil.showToast("请输入验证码"); return; } jsonObject.put("mobileNo", this.phoneNum); OKHttpUtil.getInstance().postPhoneLogin(mModel.getVCodeLoginUrl(), jsonObject.toString(), new OKHttpUtil.ResultCallback() { @Override public void onError(Request request, Exception e) { Logger.e("登录:onError"); } @Override public void onResponse(Object response) { String json = response.toString(); try { JSONObject jsonObject1 = new JSONObject(json); if (jsonObject1.getBoolean("success")) { JSONObject user = jsonObject1.getJSONObject("data"); SPutil.setPrefString(mView.getActivity(), "user_phone", Base64.encodeToString(user.getString("mobile").getBytes(), Base64.DEFAULT)); MainActivity.getInstance().loadJSMehtodPost("phoneSuccess(" + json + ")"); MainActivity.getInstance().quitPhoneLoginPage(); mView.getActivity().finish(); } else { final String error = jsonObject1.getString("message"); handler.post(new Runnable() { @Override public void run() { ToastUtil.showToast(error); } }); } } catch (JSONException e) { e.printStackTrace(); } } }); } Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { return false; } }); } interface PhoneLoginIPersenter extends BasePersenter { }