123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411 |
- package com.edufound.reader.presenter;
- import android.content.Intent;
- import android.graphics.Color;
- import android.os.Handler;
- import android.os.Message;
- import android.text.Spannable;
- import android.text.SpannableStringBuilder;
- import android.text.TextPaint;
- import android.text.TextUtils;
- import android.text.method.LinkMovementMethod;
- import android.text.style.ClickableSpan;
- import android.view.View;
- import android.widget.FrameLayout;
- import android.widget.ImageView;
- import android.widget.TextView;
- import android.widget.Toast;
- import com.edufound.reader.activity.WebActivity;
- import com.edufound.reader.apiserver.OrderApiServerImpl;
- import com.edufound.reader.apiserver.UserApiServerImpl;
- import com.edufound.reader.base.BasePresenter;
- import com.edufound.reader.bean.ChannelCodeEnum;
- import com.edufound.reader.bean.HttpResultBean;
- import com.edufound.reader.bean.SignBean;
- import com.edufound.reader.bean.UserBean;
- import com.edufound.reader.contract.LoginAlertContract;
- import com.edufound.reader.cusview.CusToast;
- import com.edufound.reader.interfaces.EfunboxInterfaces;
- import com.edufound.reader.model.LoginAlertModel;
- import com.edufound.reader.util.Consts;
- import com.edufound.reader.util.DeviceUuidFactory;
- import com.edufound.reader.util.EfunboxUtil;
- import com.edufound.reader.util.GlideUtils;
- import com.edufound.reader.util.MMKVEncodeKey;
- import com.edufound.reader.util.MMKVUtil;
- import com.google.gson.Gson;
- import com.google.gson.reflect.TypeToken;
- import com.jakewharton.rxbinding4.view.RxView;
- import com.okhttplib.HttpInfo;
- import com.okhttplib.callback.Callback;
- import com.orhanobut.logger.Logger;
- import org.json.JSONObject;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.concurrent.TimeUnit;
- import io.reactivex.rxjava3.annotations.NonNull;
- import io.reactivex.rxjava3.functions.Consumer;
- public class LoginAlertPresenter extends BasePresenter<LoginAlertContract.View> implements LoginAlertContract.Presenter {
- LoginAlertModel mModel;
- UserApiServerImpl mUserApi;
- List<Integer> leftBrackets = new ArrayList<>();
- List<Integer> rightBrackets = new ArrayList<>();
- String mServiceText = "点击登录表示您已阅读并同意《用户隐私政策》和《服务协议》。";
- int getVCode;
- int mVCodeResCount = 60;
- boolean loginSuccess = false;
- OrderApiServerImpl mOrderApi;
- public LoginAlertPresenter() {
- mModel = new LoginAlertModel();
- mUserApi = new UserApiServerImpl();
- mOrderApi = new OrderApiServerImpl();
- }
- @Override
- public void initServiceText(TextView textView) {
- leftBrackets = getChildIndexFromString(mServiceText, "《");
- rightBrackets = getChildIndexFromString(mServiceText, "》");
- SpannableStringBuilder style = new SpannableStringBuilder();
- style.append(mServiceText);
- for (int i = 0; i < leftBrackets.size(); i++) {
- final int finalI = i;
- style.setSpan(new ClickableSpan() {
- @Override
- public void onClick(@NonNull View widget) {
- lookPrivacy(finalI);
- }
- @Override
- public void updateDrawState(@NonNull TextPaint ds) {
- ds.setUnderlineText(false);
- ds.setColor(Color.parseColor("#68a5dc"));
- }
- }, leftBrackets.get(i), rightBrackets.get(i) + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- }
- textView.setMovementMethod(LinkMovementMethod.getInstance());
- textView.setHighlightColor(Color.parseColor("#ffffff"));
- textView.setText(style);
- }
- @Override
- public void getVCode(String phoneNum) {
- if (EfunboxUtil.isMobileNO(phoneNum)) {
- //正常,获取验证码
- // getVCode = 9999;
- ((FrameLayout) mView.getVCodeText().getParent()).setClickable(false);
- ((FrameLayout) mView.getVCodeText().getParent()).setEnabled(false);
- // ((FrameLayout) mView.getVCodeText().getParent()).setBackgroundColor(mView.getActivity().getResources().getColor(R.color.translucent_background));
- mModel.getVCode(mView.getActivity(), phoneNum, new Callback() {
- @Override
- public void onSuccess(HttpInfo info) throws IOException {
- String result = info.getRetDetail();
- mView.getVCodeText().setText(String.valueOf(mVCodeResCount));
- mLoginAlertHandler.sendEmptyMessageDelayed(LoginAlertModel.CHANGE_VCODE_TEXT, 1000);
- Logger.e("获取验证码result:" + result);
- // getVCode = 9999;
- }
- @Override
- public void onFailure(HttpInfo info) throws IOException {
- Logger.e("获取验证码失败:" + info.getRetDetail() + "--" + info.getParams() + "--" + info.getUrl());
- Toast.makeText(mView.getActivity(), "获取验证码失败," + info.getRetDetail(), Toast.LENGTH_SHORT).show();
- ((FrameLayout) mView.getVCodeText().getParent()).setClickable(true);
- ((FrameLayout) mView.getVCodeText().getParent()).setEnabled(true);
- }
- });
- } else {
- Toast.makeText(mView.getActivity(), "请输入正确的手机号", Toast.LENGTH_SHORT).show();
- //不正常
- }
- }
- @Override
- public void Login(String phoneNum, String inputVCode) {
- if (EfunboxUtil.isMobileNO(phoneNum)) {
- //手机号没有改过,正常。获取了验证码了,判断验证码
- if (TextUtils.isEmpty(inputVCode)) {
- Toast.makeText(mView.getActivity(), "请输入验证码", Toast.LENGTH_SHORT).show();
- return;
- } else {
- if (mView.getActivity().getLocalClassName().contains("LoginAlertActivity")) {
- if (!mView.getCheckBox().isChecked()) {
- Toast.makeText(mView.getActivity(), "请勾选用户隐私政策和服务协议", Toast.LENGTH_SHORT).show();
- return;
- }
- }
- // if (Integer.valueOf(inputVCode) == getVCode || Integer.valueOf(inputVCode) == 9999) {
- //输入的和返回的是一样的
- //请求接口,根据phoneNum,Integer.valueOf(inputVCode)
- Map<String, String> params = new HashMap<>();
- params.put("channel", Consts.getUMengChannel());
- params.put("deviceCode", DeviceUuidFactory.getUuid().toString());
- params.put("mobileNo", phoneNum);
- params.put("verifyCode", inputVCode);
- params.put("channel", Consts.getUMengChannel());
- params.put("verify", "true");
- if (MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE).equals("") || MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE) == null) {
- //如果没有,默认给一年级
- params.put("grade", "PRIMARY_FIRST_GRADE");
- } else {
- params.put("grade", MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE));
- }
- mUserApi.registerMobileByVCode(mView.getActivity(), new Gson().toJson(params), new Callback() {
- @Override
- public void onSuccess(HttpInfo info) throws IOException {
- CusToast.getInstance(mView.getActivity()).show("登录成功", 3000);
- HttpResultBean<UserBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<UserBean>>() {
- }.getType());
- Consts.setUID(bean.getData().getUid());
- //用户是否登录,登录了,创建Consts的userbean
- Consts.setmConstsUserBean(bean.getData());
- EfunboxUtil.getYFVip(mView.getActivity(), new EfunboxInterfaces.getYFVipInterfaces() {
- @Override
- public void success(long time) {
- mView.getActivity().finish();
- }
- @Override
- public void error() {
- mView.getActivity().finish();
- }
- });
- //检查活动
- EfunboxUtil.checkEvents(mView.getActivity());
- }
- @Override
- public void onFailure(HttpInfo info) throws IOException {
- Logger.e("注册失败:" + info.getRetDetail());
- Logger.e("注册失败:" + info.getParamJson());
- Toast.makeText(mView.getActivity(), "注册失败," + info.getRetDetail(), Toast.LENGTH_SHORT).show();
- }
- });
- // } else {
- // Toast.makeText(mView.getActivity(), "验证码输入错误", Toast.LENGTH_SHORT).show();
- // }
- }
- } else {
- Toast.makeText(mView.getActivity(), "请输入正确的手机号", Toast.LENGTH_SHORT).show();
- //不正常
- }
- }
- @Override
- public void activityDestory() {
- mLoginAlertHandler.removeMessages(LoginAlertModel.CHANGE_VCODE_TEXT);
- mLoginAlertHandler.removeMessages(0x1313);
- mLoginAlertHandler = null;
- }
- @Override
- public void showLoginQRCode(ImageView img) {
- mUserApi.getLoginQRCode(new Callback() {
- @Override
- public void onSuccess(HttpInfo info) throws IOException {
- Logger.e("info:" + info.getRetDetail());
- HttpResultBean<String> bean = info.getRetDetail(new TypeToken<HttpResultBean<String>>() {
- }.getType());
- Logger.e("bean.getData:" + bean.getData());
- if (bean.getCode().equals("200") && bean.getSuccess()) {
- Logger.e("加载二维码");
- GlideUtils.loadImageSizeKipMemoryCache(mView.getActivity(), bean.getData(), img);
- loginSuccess = false;
- mLoginAlertHandler.sendEmptyMessageDelayed(0x1313, 1000);
- } else {
- Logger.e("加载二维码失败");
- }
- }
- @Override
- public void onFailure(HttpInfo info) throws IOException {
- Logger.e("获取登录二维码失败");
- }
- });
- }
- Handler mLoginAlertHandler = new Handler(new Handler.Callback() {
- @Override
- public boolean handleMessage(@androidx.annotation.NonNull Message message) {
- switch (message.what) {
- case LoginAlertModel.CHANGE_VCODE_TEXT:
- if (mVCodeResCount > 1) {
- mVCodeResCount--;
- mView.getVCodeText().setText(String.valueOf(mVCodeResCount));
- mLoginAlertHandler.sendEmptyMessageDelayed(LoginAlertModel.CHANGE_VCODE_TEXT, 1000);
- } else {
- mVCodeResCount = 60;
- mView.getVCodeText().setText("获取验证码");
- ((FrameLayout) mView.getVCodeText().getParent()).setClickable(true);
- ((FrameLayout) mView.getVCodeText().getParent()).setEnabled(true);
- // ((FrameLayout) mView.getVCodeText().getParent()).setBackgroundResource(R.drawable.activity_loginalert_verificationcode_bg);
- }
- break;
- case 0x1313:
- if (loginSuccess) {
- mLoginAlertHandler.removeMessages(0x1313);
- return true;
- }
- mUserApi.isLogin(mView.getActivity(), DeviceUuidFactory.getUuid(), new Callback() {
- @Override
- public void onSuccess(HttpInfo info) throws IOException {
- try {
- JSONObject object = new JSONObject(info.getRetDetail());
- if (object.getString("code").equals("200") || object.getInt("code") == 200) {
- //200算成功
- mLoginAlertHandler.removeMessages(0x1313);
- loginSuccess = true;
- HttpResultBean<UserBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<UserBean>>() {
- }.getType());
- Consts.setUID(bean.getData().getUid());
- //用户是否登录,登录了,创建Consts的userbean
- Consts.setmConstsUserBean(bean.getData());
- mUserApi.loginSign(null, new Callback() {
- @Override
- public void onSuccess(HttpInfo info) throws IOException {
- try {
- HttpResultBean<SignBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<SignBean>>() {
- }.getType());
- if (bean.getData().getIsSign()) {
- CusToast.getInstance(Consts.getmApplicAtion()).show("恭喜签到成功\n奖励" + bean.getData().getCount() + "朵小红花", 2000);
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if (!Consts.getUMengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
- //不是小度的,检查权限
- if (Consts.getmConstsUserBean() != null) {
- mOrderApi.getAuth(new Callback() {
- @Override
- public void onSuccess(HttpInfo info) throws IOException {
- HttpResultBean<String> bean = info.getRetDetail(new TypeToken<HttpResultBean<String>>() {
- }.getType());
- if (!TextUtils.isEmpty(bean.getData())) {
- Consts.setIsYFVip(true);
- } else {
- Consts.setIsYFVip(false);
- }
- //关闭界面
- mView.getActivity().finish();
- }
- @Override
- public void onFailure(HttpInfo info) throws IOException {
- Logger.e("查询权限接口失败");
- Consts.setIsYFVip(false);
- mView.getActivity().finish();
- }
- });
- }
- }
- }
- }
- @Override
- public void onFailure(HttpInfo info) throws IOException {
- CusToast.getInstance(Consts.getmApplicAtion()).show("其他错误:" + info.getRetDetail(), 2000);
- //关闭界面
- mView.getActivity().finish();
- }
- });
- } else if (object.getString("code").equals("300") || object.getInt("code") == 300) {
- //暂无数据
- Logger.e("暂无数据");
- mLoginAlertHandler.sendEmptyMessageDelayed(0x1313, 1000);
- return;
- } else {
- CusToast.getInstance(Consts.getmApplicAtion()).show(object.getString("code"), 2000);
- mView.getActivity().finish();
- }
- } catch (Exception e) {
- e.printStackTrace();
- Logger.e("onFailure--info.getRetDetail():" + info.getRetDetail());
- CusToast.getInstance(Consts.getmApplicAtion()).show(e.getMessage(), 2000);
- //关闭界面
- mView.getActivity().finish();
- } finally {
- }
- }
- @Override
- public void onFailure(HttpInfo info) throws IOException {
- // CusToast.getInstance(Consts.getmApplicAtion()).show(info.getRetDetail(), 2000);
- Logger.e("onFailure--info.getRetDetail():" + info.getRetDetail());
- //关闭界面
- mView.getActivity().finish();
- }
- });
- break;
- }
- return false;
- }
- });
- private List<Integer> getChildIndexFromString(String parent, String child) {
- int startIndex = 0;
- List<Integer> ids = new ArrayList<>();
- while (parent.indexOf(child, startIndex) != -1) {
- //ids.add(startIndex);
- startIndex = parent.indexOf(child, startIndex);
- ids.add(startIndex);
- startIndex = startIndex + child.length();
- }
- return ids;
- }
- private void lookPrivacy(int index) {
- String url = "";
- switch (index) {
- case 0:
- url = Consts.getAgreementServicesUrl();
- break;
- case 1:
- url = Consts.getPrivServiceUrl();
- break;
- }
- Intent intent = new Intent(mView.getActivity(), WebActivity.class);
- intent.putExtra("loadUrl", url);
- mView.getActivity().startActivity(intent);
- }
- private void setClickListener(View view, Consumer onNext) {
- RxView.clicks(view).throttleFirst(2, TimeUnit.SECONDS).subscribe(onNext);
- }
- }
|