package com.edufound.reader.presenter; import android.content.Intent; import android.graphics.Color; import android.text.TextUtils; import android.view.KeyEvent; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; 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.activity.LoginAlertActivity; import com.edufound.reader.activity.PayActivity; import com.edufound.reader.apiserver.UserApiServerImpl; import com.edufound.reader.base.BaseActivity; import com.edufound.reader.base.BasePresenter; 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.CharacterFragment; 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.EfunboxCallBack; 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.BaseCallback; import com.okhttplib.callback.Callback; import com.orhanobut.logger.Logger; import java.io.BufferedWriter; import java.io.File; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.PrintWriter; 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; MyTabFragment mUserFragment; RecommendFragment mRecommendFragment; FragmentManager mFragmentManager; RecommendFragment mFollowFragment; CharacterFragment mCharacterFragment; int mRadioCheckIndex = -1; public MainPresenter(FragmentManager fragmentManager) { mModel = new MainModel(); mUserApi = new UserApiServerImpl(); mFragmentManager = fragmentManager; mUserFragment = new MyTabFragment(); mRecommendFragment = new RecommendFragment(0); mFollowFragment = new RecommendFragment(1); mCharacterFragment = new CharacterFragment(); } @Override public void onRadioChecked(RadioGroup radioGroup, int id) { switch (id) { case R.id.main_left_tab_layout_myinfo: //我的 if (EfunboxUtil.checkLogin(mView.getActivity())) { mRadioCheckIndex = 0; changeFragmentLayout(mUserFragment); mUserApi.postUserEvent(mView.getActivity(), UserEventEnum.EVENT_MY.getEvent()); } else { ((RadioButton) radioGroup.getChildAt(mRadioCheckIndex)).setChecked(true); } break; case R.id.main_left_tab_layout_recommend: //推荐 mRadioCheckIndex = 1; ((RadioButton) radioGroup.getChildAt(mRadioCheckIndex)).setChecked(true); changeFragmentLayout(mRecommendFragment); mUserApi.postUserEvent(mView.getActivity(), UserEventEnum.EVENT_RECOMMEND.getEvent()); break; case R.id.main_left_tab_layout_follow: //关注 if (EfunboxUtil.checkLogin(mView.getActivity())) { mRadioCheckIndex = 2; 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: //任务 mRadioCheckIndex = 3; ((RadioButton) radioGroup.getChildAt(mRadioCheckIndex)).setChecked(true); 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(); } @Override public void checkModelIsDebug() { if (Consts.isIsDebug()) { TextView tv = new TextView(mView.getActivity()); tv.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, SizeUtils.px2dp(mView.getActivity(), 100))); 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(); } }); mView.getRootView().addView(tv); } } @Override public void showSelectGradeWindow() { mView.getRootView().post(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())); } }); } }); } @Override public void userIsLogin() { mUserApi.isLogin(mView.getActivity(), DeviceUuidFactory.getUuid(), new Callback() { @Override public void onSuccess(HttpInfo info) throws IOException { HttpResultBean bean = info.getRetDetail(new TypeToken>() { }.getType()); Logger.e("info.get:" + info.getRetDetail()); if (bean.getCode().equals("300")) { //没有用户数据 if (TextUtils.isEmpty(MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE))) { //没有选择过年纪,选择年纪 Logger.e("TextUtils.isEmpty(MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE)"); showSelectGradeWindow(); } else { Logger.e("TextUtils.isEmpty(MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE)--else"); //选择过年纪。无处理 } // registerMobile("18655365222"); mView.setCheckIndex(); } else { Consts.setUID(bean.getData().getUid()); //用户是否登录,登录了,创建Consts的userbean Consts.setmConstsUserBean(bean.getData()); mView.setCheckIndex(); mUserApi.loginSign(mView.getActivity(), new Callback() { @Override public void onSuccess(HttpInfo info) throws IOException { HttpResultBean bean = info.getRetDetail(new TypeToken>() { }.getType()); if (bean.getData().getIsSign()) { CusToast.getInstance(mView.getActivity()).show("恭喜签到成功\n奖励" + bean.getData().getCount() + "朵小红花", 2000); } } @Override public void onFailure(HttpInfo info) throws IOException { } }); } } @Override public void onFailure(HttpInfo info) throws IOException { if (TextUtils.isEmpty(MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE))) { //没有选择过年纪,选择年纪 showSelectGradeWindow(); } else { //选择过年纪。无处理 } mView.setCheckIndex(); } }); } @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 1: mRecommendFragment.getPresenter().getRecordInfoById(id); break; case 2: mFollowFragment.getPresenter().getRecordInfoById(id); break; } } @Override public void refMyFragment() { if (mRadioCheckIndex == 0) { mUserFragment = new MyTabFragment(); changeFragmentLayout(mUserFragment); } } 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 true; } }