123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512 |
- package com.edufound.reader.presenter;
- import android.graphics.Color;
- import android.graphics.drawable.ColorDrawable;
- import android.text.TextUtils;
- import android.view.KeyEvent;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.FrameLayout;
- import android.widget.HorizontalScrollView;
- import android.widget.LinearLayout;
- import android.widget.RadioButton;
- import android.widget.RadioGroup;
- import android.widget.TextView;
- import android.widget.Toast;
- import com.edufound.reader.R;
- import com.edufound.reader.apiserver.ActivityEventServerImpl;
- import com.edufound.reader.apiserver.OrderApiServerImpl;
- import com.edufound.reader.apiserver.UserApiServerImpl;
- import com.edufound.reader.base.BaseActivity;
- import com.edufound.reader.base.BasePresenter;
- import com.edufound.reader.bean.ActivityEventBean;
- import com.edufound.reader.bean.ChannelCodeEnum;
- import com.edufound.reader.bean.ExampleBean;
- import com.edufound.reader.bean.HttpResultBean;
- import com.edufound.reader.bean.SignBean;
- import com.edufound.reader.bean.UserBean;
- import com.edufound.reader.bean.UserEventEnum;
- import com.edufound.reader.bean.UserRecordBean;
- import com.edufound.reader.contract.MainContract;
- import com.edufound.reader.cusview.CusToast;
- import com.edufound.reader.cusview.ModelViewA;
- import com.edufound.reader.cusview.ModelViewB;
- import com.edufound.reader.cusview.ModelViewC;
- import com.edufound.reader.cusview.ModelViewD;
- import com.edufound.reader.cusview.ModelViewE;
- import com.edufound.reader.cusview.ModelViewF;
- import com.edufound.reader.cusview.ModelViewWidthA;
- import com.edufound.reader.fragment.CharacterFragment;
- import com.edufound.reader.fragment.CharacterFragment3;
- import com.edufound.reader.fragment.EventFragment;
- import com.edufound.reader.fragment.MyTabFragment;
- import com.edufound.reader.fragment.RecommendFragment;
- import com.edufound.reader.listener.PopUtilClickListener;
- import com.edufound.reader.model.MainModel;
- import com.edufound.reader.popwindow.PopWindowUtil;
- import com.edufound.reader.util.Consts;
- import com.edufound.reader.util.DeviceUuidFactory;
- import com.edufound.reader.util.EfunboxUtil;
- import com.edufound.reader.util.MMKVEncodeKey;
- import com.edufound.reader.util.MMKVUtil;
- import com.edufound.reader.util.SizeUtils;
- import com.google.gson.reflect.TypeToken;
- import com.okhttplib.HttpInfo;
- import com.okhttplib.callback.Callback;
- import com.orhanobut.logger.Logger;
- import org.json.JSONException;
- 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 androidx.fragment.app.Fragment;
- import androidx.fragment.app.FragmentManager;
- import androidx.fragment.app.FragmentTransaction;
- public class MainPresenter extends BasePresenter<MainContract.View> implements MainContract.Presenter {
- MainModel mModel;
- UserApiServerImpl mUserApi;
- OrderApiServerImpl mOrderApi;
- ActivityEventServerImpl mEventApi;
- MyTabFragment mUserFragment;
- EventFragment mEventFragment;
- RecommendFragment mRecommendFragment;
- FragmentManager mFragmentManager;
- RecommendFragment mFollowFragment;
- CharacterFragment3 mCharacterFragment;
- int mRadioCheckIndex = -1;
- public MainPresenter(FragmentManager fragmentManager) {
- mModel = new MainModel();
- mUserApi = new UserApiServerImpl();
- mOrderApi = new OrderApiServerImpl();
- mEventApi = new ActivityEventServerImpl();
- mFragmentManager = fragmentManager;
- resumeFragment();
- }
- @Override
- public void onRadioChecked(RadioGroup radioGroup, int id) {
- ((BaseActivity) mView.getActivity()).removeFirstTipView();
- switch (id) {
- case R.id.main_left_tab_layout_myinfo:
- //我的
- if (EfunboxUtil.checkLogin(mView.getActivity(), mView.getRootView())) {
- mRadioCheckIndex = 0;
- mRecommendFragment = null;
- mEventFragment = null;
- mFollowFragment = null;
- mCharacterFragment = null;
- if (mUserFragment == null) {
- mUserFragment = new MyTabFragment();
- }
- changeFragmentLayout(mUserFragment);
- mUserApi.postUserEvent(mView.getActivity(), UserEventEnum.EVENT_MY.getEvent());
- } else {
- if (radioGroup != null) {
- if (radioGroup.getChildAt(mRadioCheckIndex) != null) {
- ((RadioButton) radioGroup.getChildAt(mRadioCheckIndex)).setChecked(true);
- }
- }
- }
- break;
- case R.id.main_left_tab_layout_event:
- //活动
- mRadioCheckIndex = 1;
- mRecommendFragment = null;
- mUserFragment = null;
- mFollowFragment = null;
- mCharacterFragment = null;
- if (mEventFragment == null) {
- mEventFragment = new EventFragment();
- }
- changeFragmentLayout(mEventFragment);
- mUserApi.postUserEvent(mView.getActivity(), UserEventEnum.EVENT_EVENT.getEvent());
- break;
- case R.id.main_left_tab_layout_recommend:
- //推荐
- mRadioCheckIndex = 2;
- // ((RadioButton) radioGroup.getChildAt(mRadioCheckIndex)).setChecked(true);
- mUserFragment = null;
- mFollowFragment = null;
- mEventFragment = null;
- mCharacterFragment = null;
- if (mRecommendFragment == null) {
- mRecommendFragment = new RecommendFragment(0);
- }
- changeFragmentLayout(mRecommendFragment);
- mUserApi.postUserEvent(mView.getActivity(), UserEventEnum.EVENT_RECOMMEND.getEvent());
- break;
- case R.id.main_left_tab_layout_follow:
- //关注
- if (EfunboxUtil.checkLogin(mView.getActivity(), mView.getRootView())) {
- mRadioCheckIndex = 3;
- mUserFragment = null;
- mCharacterFragment = null;
- mEventFragment = null;
- mRecommendFragment = null;
- if (mFollowFragment == null) {
- mFollowFragment = new RecommendFragment(1);
- }
- changeFragmentLayout(mFollowFragment);
- mUserApi.postUserEvent(mView.getActivity(), UserEventEnum.EVENT_SUBSCRIBE.getEvent());
- } else {
- ((RadioButton) radioGroup.getChildAt(mRadioCheckIndex)).setChecked(true);
- }
- break;
- case R.id.main_left_tab_layout_character:
- //任务
- Logger.e("任务");
- mRadioCheckIndex = 4;
- ((RadioButton) radioGroup.getChildAt(mRadioCheckIndex)).setChecked(true);
- mUserFragment = null;
- mFollowFragment = null;
- mRecommendFragment = null;
- mEventFragment = null;
- if (mCharacterFragment == null) {
- mCharacterFragment = new CharacterFragment3();
- }
- changeFragmentLayout(mCharacterFragment);
- mUserApi.postUserEvent(mView.getActivity(), UserEventEnum.EVENT_RESOURCES.getEvent());
- break;
- }
- }
- void changeFragmentLayout(Fragment fragment) {
- ((BaseActivity) mView.getActivity()).removeFirstTipView();
- FragmentTransaction transaction = mFragmentManager.beginTransaction();
- transaction.addToBackStack(null);
- transaction.replace(R.id.main_fragment_layout, fragment);
- transaction.commit();
- }
- @Override
- public void activityDestroy() {
- }
- @Override
- public void activityPause() {
- }
- @Override
- public void activityResume() {
- refMyFragment();
- getYFVip();
- }
- @Override
- public void checkModelIsDebug() {
- if (Consts.isIsDebug()) {
- {
- HorizontalScrollView scrollView = new HorizontalScrollView(mView.getActivity());
- ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
- scrollView.setLayoutParams(params);
- LinearLayout testlayout = new LinearLayout(mView.getActivity());
- testlayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);
- testlayout.setDividerDrawable(new ColorDrawable() {
- @Override
- public int getIntrinsicWidth() {
- return SizeUtils.dp2px(mView.getActivity(), 50);
- }
- });
- testlayout.setOrientation(LinearLayout.HORIZONTAL);
- TextView tv = new TextView(mView.getActivity());
- tv.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
- tv.setTextSize(SizeUtils.px2dp(mView.getActivity(), 30));
- tv.setTextColor(Color.RED);
- tv.setBackgroundColor(mView.getActivity().getResources().getColor(R.color.translucent_background));
- tv.setText("当前在Debug模式下(->application->setIsDebug)");
- tv.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- // MMKVUtil.getInstance().clearAll();
- // EfunboxUtil.toWebFlowerActivity(mView.getActivity(), "http://activity.ai160.com/index.html", null);
- }
- });
- testlayout.addView(tv);
- scrollView.addView(testlayout);
- mView.getRootView().addView(scrollView);
- }
- }
- }
- @Override
- public void showSelectGradeWindow() {
- mView.getRootView().postDelayed(new Runnable() {
- @Override
- public void run() {
- PopWindowUtil.showSelectGradeWindow(mView.getActivity(), mView.getRootView(), 0, new PopUtilClickListener() {
- @Override
- public void clickCancel() {
- }
- @Override
- public void clickSubmit(Object object) {
- // Toast.makeText(mView.getActivity(), "选择了:" + EfunboxUtil.getEnumByCNGrade(object.toString()), Toast.LENGTH_SHORT).show();
- MMKVUtil.getInstance().encode(MMKVEncodeKey.USER_GRADE, EfunboxUtil.getEnumByCNGrade(object.toString()));
- getLoginEvent();
- }
- });
- }
- }, 500);
- }
- @Override
- public void userIsLogin() {
- 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("300") || object.getInt("code") == 300) {
- //没有用户数据
- if (TextUtils.isEmpty(MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE))) {
- //没有选择过年纪,选择年纪
- Logger.e("没有选择过年纪,选择年纪");
- showSelectGradeWindow();
- } else {
- //选择过年纪。无处理
- }
- // registerMobile("18655365222");
- getYFVip();
- } else {
- HttpResultBean<UserBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<UserBean>>() {
- }.getType());
- Consts.setUID(bean.getData().getUid());
- //用户是否登录,登录了,创建Consts的userbean
- Consts.setmConstsUserBean(bean.getData());
- mUserApi.loginSign(mView.getActivity(), new Callback() {
- @Override
- public void onSuccess(HttpInfo info) throws IOException {
- try {
- HttpResultBean<SignBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<SignBean>>() {
- }.getType());
- if (bean.getData() != null) {
- if (bean.getData().getIsSign()) {
- CusToast.getInstance(mView.getActivity()).show("恭喜签到成功\n奖励" + bean.getData().getCount() + "朵小红花", 2000);
- }
- } else {
- Logger.e("签到参数 isSign是空的");
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- getYFVip();
- }
- }
- @Override
- public void onFailure(HttpInfo info) throws IOException {
- Logger.e("info:" + info.getRetDetail());
- }
- });
- }
- } catch (JSONException e) {
- e.printStackTrace();
- } finally {
- //有没有用户都先检查活动
- EfunboxUtil.checkEvents(mView.getActivity());
- getLoginEvent();
- }
- }
- @Override
- public void onFailure(HttpInfo info) throws IOException {
- if (TextUtils.isEmpty(MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE))) {
- //没有选择过年纪,选择年纪
- showSelectGradeWindow();
- Logger.e("onFailureonFailureonFailureonFailure,选择年纪");
- } else {
- //选择过年纪。无处理
- }
- }
- });
- }
- private void getLoginEvent() {
- //检查有没有用户信息
- if (Consts.getmConstsUserBean() == null && Consts.getmConstsBaiDuUserBean() == null) {
- //百度跟自己的都没有用户信息,请求有没有注册活动,有活动显示活动,没活动不显示
- //请求接口
- mEventApi.getEventByType(ActivityEventServerImpl.EVENT_TYPE_LOGIN, new Callback() {
- @Override
- public void onSuccess(HttpInfo info) throws IOException {
- HttpResultBean<ActivityEventBean> activityBean = info.getRetDetail(new TypeToken<HttpResultBean<ActivityEventBean>>() {
- }.getType());
- if (Boolean.valueOf(activityBean.getSuccess())) {
- //接口返回成功
- if (activityBean.getData() != null) {
- //有活动
- PopWindowUtil.RegistrationEventsWindow(mView.getActivity(), mView.getRootView(), new PopUtilClickListener() {
- @Override
- public void clickCancel() {
- }
- @Override
- public void clickSubmit(Object object) {
- //点击进行登录逻辑
- EfunboxUtil.checkLogin(mView.getActivity(), mView.getRootView());
- }
- });
- } else {
- //没活动
- }
- }
- }
- @Override
- public void onFailure(HttpInfo info) throws IOException {
- Logger.e("获取活动失败:" + info.getRetDetail());
- }
- });
- } else {
- }
- }
- private void getYFVip() {
- if (!Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
- //不是百度渠道,检查是否是义方VIP
- if (Consts.getmConstsUserBean() != null) {
- mOrderApi.getAuth(mView.getActivity(), 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);
- }
- }
- @Override
- public void onFailure(HttpInfo info) throws IOException {
- }
- });
- }
- }
- }
- @Override
- public void registerMobile(String mobileNo) {
- if (EfunboxUtil.isMobileNO(mobileNo)) {
- Map<String, String> map = new HashMap<>();
- map.put("deviceCode", DeviceUuidFactory.getUuid());
- map.put("channel", Consts.getUmengChannel());
- map.put("mobileNo", mobileNo);
- if (MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE).equals("") || MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE) == null) {
- //如果没有,默认给一年级
- map.put("grade", "PRIMARY_FIRST_GRADE");
- } else {
- map.put("grade", MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE));
- }
- String json = ((BaseActivity) mView.getActivity()).getGson().toJson(map);
- mUserApi.registerMobile(mView.getActivity(), json, new Callback() {
- @Override
- public void onSuccess(HttpInfo info) throws IOException {
- Logger.e("手机号注册成功:" + info.getRetDetail());
- HttpResultBean<UserBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<UserBean>>() {
- }.getType());
- Consts.setUID(bean.getData().getUid());
- //用户是否登录,登录了,创建Consts的userbean
- Consts.setmConstsUserBean(bean.getData());
- }
- @Override
- public void onFailure(HttpInfo info) throws IOException {
- Logger.e("手机号注册失败:" + info.getRetDetail());
- Toast.makeText(mView.getActivity(), "注册失败", Toast.LENGTH_SHORT).show();
- }
- });
- } else {
- Toast.makeText(mView.getActivity(), "手机号不正确", Toast.LENGTH_SHORT).show();
- }
- }
- @Override
- public void refRecordById(String id) {
- switch (mRadioCheckIndex) {
- case 2:
- if (mRecommendFragment != null) {
- mRecommendFragment.getPresenter().getRecordInfoById(id);
- }
- break;
- case 3:
- if (mFollowFragment != null) {
- mFollowFragment.getPresenter().getRecordInfoById(id);
- }
- break;
- case 4:
- if (mCharacterFragment != null) {
- Logger.e("mRecommendFragment!=null,下面调用方法");
- mCharacterFragment.getPresenter().getRecordInfoByIdSetCharacter3(id);
- Logger.e("mRecommendFragment!=null,上面调用方法");
- }
- break;
- }
- }
- @Override
- public void refMyFragment() {
- if (mRadioCheckIndex == 0) {
- mUserFragment = new MyTabFragment();
- changeFragmentLayout(mUserFragment);
- }
- }
- @Override
- public void resumeFragment() {
- mUserFragment = new MyTabFragment();
- mRecommendFragment = new RecommendFragment(0);
- mFollowFragment = new RecommendFragment(1);
- mCharacterFragment = new CharacterFragment3();
- }
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- switch (keyCode) {
- case KeyEvent.KEYCODE_BACK:
- case KeyEvent.KEYCODE_ESCAPE:
- PopWindowUtil.showExitAppWindow(mView.getActivity(), mView.getRootView());
- return true;
- }
- return false;
- }
- }
|