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.application.EApplication; 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.HttpResultBean; import com.edufound.reader.bean.SignBean; import com.edufound.reader.bean.UserBean; import com.edufound.reader.bean.UserEventEnum; import com.edufound.reader.contract.MainContract; import com.edufound.reader.cusview.CusToast; 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.HashMap; import java.util.Map; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; public class MainPresenter extends BasePresenter 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) { try { ((BaseActivity) mView.getActivity()).removeFirstTipView(); FragmentTransaction transaction = mFragmentManager.beginTransaction(); transaction.addToBackStack(null); transaction.replace(R.id.main_fragment_layout, fragment); transaction.commit(); } catch (Exception e) { e.printStackTrace(); CusToast.getInstance(mView.getActivity()).show("出现问题,重启应用", 3000); EApplication.reloadApp(2); } } @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 bean = info.getRetDetail(new TypeToken>() { }.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 bean = info.getRetDetail(new TypeToken>() { }.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 activityBean = info.getRetDetail(new TypeToken>() { }.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 bean = info.getRetDetail(new TypeToken>() { }.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 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 bean = info.getRetDetail(new TypeToken>() { }.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; } }