PhoneLoginPersenter.java 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. package com.edufound.android.xyyf.phonelogin;
  2. import android.animation.ValueAnimator;
  3. import android.os.Handler;
  4. import android.os.Message;
  5. import android.text.TextUtils;
  6. import android.util.Base64;
  7. import android.view.View;
  8. import android.view.ViewGroup;
  9. import com.edufound.android.xyyf.activity.MainActivity;
  10. import com.edufound.android.xyyf.application.EApplication;
  11. import com.edufound.android.xyyf.base.BasePersenter;
  12. import com.edufound.android.xyyf.util.ContextUtil;
  13. import com.edufound.android.xyyf.util.DeviceUuidFactory;
  14. import com.edufound.android.xyyf.util.Logger;
  15. import com.edufound.android.xyyf.util.OKHttpUtil;
  16. import com.edufound.android.xyyf.util.SPutil;
  17. import com.edufound.android.xyyf.util.ToastUtil;
  18. import com.google.gson.JsonObject;
  19. import org.json.JSONException;
  20. import org.json.JSONObject;
  21. import java.io.IOException;
  22. import java.util.HashMap;
  23. import java.util.Map;
  24. import okhttp3.Call;
  25. import okhttp3.Callback;
  26. import okhttp3.Request;
  27. import okhttp3.Response;
  28. public class PhoneLoginPersenter implements PhoneLoginIPersenter {
  29. PhoneLoginModel mModel;
  30. PhoneLoginView mView;
  31. String phoneNum = "";
  32. public PhoneLoginPersenter(PhoneLoginView view) {
  33. mModel = new PhoneLoginModel();
  34. mView = view;
  35. }
  36. @Override
  37. public void loadData() {
  38. }
  39. @Override
  40. public void onDisConnNetWork() {
  41. }
  42. @Override
  43. public void onConnNetWork() {
  44. }
  45. public void WidthAnim(final View view, int end, int time) {
  46. ValueAnimator anim = ValueAnimator.ofInt(view.getMeasuredWidth(), end);
  47. anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
  48. @Override
  49. public void onAnimationUpdate(ValueAnimator valueAnimator) {
  50. int val = (Integer) valueAnimator.getAnimatedValue();
  51. ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
  52. layoutParams.width = val;
  53. view.setLayoutParams(layoutParams);
  54. }
  55. });
  56. anim.setDuration(time);
  57. anim.start();
  58. }
  59. public boolean isMobileNO(String mobileNums) {
  60. /**
  61.    * 判断字符串是否符合手机号码格式
  62.    * 移动号段: 134,135,136,137,138,139,147,150,151,152,157,158,159,170,178,182,183,184,187,188
  63.    * 联通号段: 130,131,132,145,155,156,170,171,175,176,185,186
  64.    * 电信号段: 133,149,153,170,173,177,180,181,189
  65.    * @param str
  66.    * @return 待检测的字符串
  67.    */
  68. 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位。
  69. if (TextUtils.isEmpty(mobileNums)) {
  70. return false;
  71. } else {
  72. return mobileNums.matches(telRegex);
  73. }
  74. }
  75. public void getVCode(String phoneNum) throws IOException {
  76. this.phoneNum = phoneNum;
  77. if (!isMobileNO(phoneNum)) {
  78. ToastUtil.showToast("请输入正确的手机号");
  79. mView.changeVText(1);
  80. return;
  81. }
  82. mView.changeVText(0);
  83. OKHttpUtil.getInstance().doGetSync(mModel.getVerificationCodeUrl() + phoneNum, new Callback() {
  84. @Override
  85. public void onFailure(Call call, IOException e) {
  86. Logger.e("onFailure:" + e.getMessage());
  87. }
  88. @Override
  89. public void onResponse(Call call, Response response) throws IOException {
  90. try {
  91. String json = response.body().string();
  92. JSONObject jsonObject = new JSONObject(json);
  93. Logger.e("json:" + json);
  94. if (jsonObject.getBoolean("success")) {
  95. } else {
  96. final String error = jsonObject.getString("message");
  97. handler.post(new Runnable() {
  98. @Override
  99. public void run() {
  100. ToastUtil.showToast(error);
  101. }
  102. });
  103. mView.changeVText(1);
  104. }
  105. } catch (JSONException e) {
  106. e.printStackTrace();
  107. }
  108. }
  109. });
  110. }
  111. public void LoginByVCode(String phone, String vcode) throws JSONException {
  112. String preuuid = SPutil.getPrefString(ContextUtil.getContext(), DeviceUuidFactory.UUID_SPKEY, "");
  113. if (preuuid.equals("")) {
  114. preuuid = DeviceUuidFactory.getUuid().toString();
  115. }
  116. JSONObject jsonObject = new JSONObject();
  117. jsonObject.put("deviceCode", preuuid);
  118. jsonObject.put("channel", EApplication.getAppCode());
  119. jsonObject.put("code", vcode);
  120. if (this.phoneNum.equals("")) {
  121. this.phoneNum = phone;
  122. }
  123. if (TextUtils.isEmpty(this.phoneNum.trim())) {
  124. ToastUtil.showToast("请输入手机号");
  125. return;
  126. }
  127. if (TextUtils.isEmpty(vcode.trim())) {
  128. ToastUtil.showToast("请输入验证码");
  129. return;
  130. }
  131. jsonObject.put("mobileNo", this.phoneNum);
  132. OKHttpUtil.getInstance().postPhoneLogin(mModel.getVCodeLoginUrl(), jsonObject.toString(), new OKHttpUtil.ResultCallback() {
  133. @Override
  134. public void onError(Request request, Exception e) {
  135. Logger.e("登录:onError");
  136. }
  137. @Override
  138. public void onResponse(Object response) {
  139. String json = response.toString();
  140. try {
  141. JSONObject jsonObject1 = new JSONObject(json);
  142. if (jsonObject1.getBoolean("success")) {
  143. JSONObject user = jsonObject1.getJSONObject("data");
  144. SPutil.setPrefString(mView.getActivity(), "user_phone", Base64.encodeToString(user.getString("mobile").getBytes(), Base64.DEFAULT));
  145. MainActivity.getInstance().loadJSMehtodPost("phoneSuccess(" + json + ")");
  146. MainActivity.getInstance().quitPhoneLoginPage();
  147. mView.getActivity().finish();
  148. } else {
  149. final String error = jsonObject1.getString("message");
  150. handler.post(new Runnable() {
  151. @Override
  152. public void run() {
  153. ToastUtil.showToast(error);
  154. }
  155. });
  156. }
  157. } catch (JSONException e) {
  158. e.printStackTrace();
  159. }
  160. }
  161. });
  162. }
  163. Handler handler = new Handler(new Handler.Callback() {
  164. @Override
  165. public boolean handleMessage(Message msg) {
  166. return false;
  167. }
  168. });
  169. }
  170. interface PhoneLoginIPersenter extends BasePersenter {
  171. }