MainPresenter.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315
  1. package com.edufound.reader.presenter;
  2. import android.content.Intent;
  3. import android.graphics.Color;
  4. import android.text.TextUtils;
  5. import android.view.KeyEvent;
  6. import android.view.View;
  7. import android.view.ViewGroup;
  8. import android.widget.FrameLayout;
  9. import android.widget.RadioButton;
  10. import android.widget.RadioGroup;
  11. import android.widget.TextView;
  12. import android.widget.Toast;
  13. import com.edufound.reader.R;
  14. import com.edufound.reader.activity.LoginAlertActivity;
  15. import com.edufound.reader.activity.PayActivity;
  16. import com.edufound.reader.apiserver.UserApiServerImpl;
  17. import com.edufound.reader.base.BaseActivity;
  18. import com.edufound.reader.base.BasePresenter;
  19. import com.edufound.reader.bean.HttpResultBean;
  20. import com.edufound.reader.bean.SignBean;
  21. import com.edufound.reader.bean.UserBean;
  22. import com.edufound.reader.bean.UserEventEnum;
  23. import com.edufound.reader.contract.MainContract;
  24. import com.edufound.reader.cusview.CusToast;
  25. import com.edufound.reader.fragment.CharacterFragment;
  26. import com.edufound.reader.fragment.MyTabFragment;
  27. import com.edufound.reader.fragment.RecommendFragment;
  28. import com.edufound.reader.listener.PopUtilClickListener;
  29. import com.edufound.reader.model.MainModel;
  30. import com.edufound.reader.popwindow.PopWindowUtil;
  31. import com.edufound.reader.util.Consts;
  32. import com.edufound.reader.util.DeviceUuidFactory;
  33. import com.edufound.reader.util.EfunboxCallBack;
  34. import com.edufound.reader.util.EfunboxUtil;
  35. import com.edufound.reader.util.MMKVEncodeKey;
  36. import com.edufound.reader.util.MMKVUtil;
  37. import com.edufound.reader.util.SizeUtils;
  38. import com.google.gson.reflect.TypeToken;
  39. import com.okhttplib.HttpInfo;
  40. import com.okhttplib.callback.BaseCallback;
  41. import com.okhttplib.callback.Callback;
  42. import com.orhanobut.logger.Logger;
  43. import java.io.BufferedWriter;
  44. import java.io.File;
  45. import java.io.IOException;
  46. import java.io.OutputStreamWriter;
  47. import java.io.PrintWriter;
  48. import java.util.HashMap;
  49. import java.util.Map;
  50. import androidx.fragment.app.Fragment;
  51. import androidx.fragment.app.FragmentManager;
  52. import androidx.fragment.app.FragmentTransaction;
  53. public class MainPresenter extends BasePresenter<MainContract.View> implements MainContract.Presenter {
  54. MainModel mModel;
  55. UserApiServerImpl mUserApi;
  56. MyTabFragment mUserFragment;
  57. RecommendFragment mRecommendFragment;
  58. FragmentManager mFragmentManager;
  59. RecommendFragment mFollowFragment;
  60. CharacterFragment mCharacterFragment;
  61. int mRadioCheckIndex = -1;
  62. public MainPresenter(FragmentManager fragmentManager) {
  63. mModel = new MainModel();
  64. mUserApi = new UserApiServerImpl();
  65. mFragmentManager = fragmentManager;
  66. mUserFragment = new MyTabFragment();
  67. mRecommendFragment = new RecommendFragment(0);
  68. mFollowFragment = new RecommendFragment(1);
  69. mCharacterFragment = new CharacterFragment();
  70. }
  71. @Override
  72. public void onRadioChecked(RadioGroup radioGroup, int id) {
  73. switch (id) {
  74. case R.id.main_left_tab_layout_myinfo:
  75. //我的
  76. if (EfunboxUtil.checkLogin(mView.getActivity())) {
  77. mRadioCheckIndex = 0;
  78. changeFragmentLayout(mUserFragment);
  79. mUserApi.postUserEvent(mView.getActivity(), UserEventEnum.EVENT_MY.getEvent());
  80. } else {
  81. ((RadioButton) radioGroup.getChildAt(mRadioCheckIndex)).setChecked(true);
  82. }
  83. break;
  84. case R.id.main_left_tab_layout_recommend:
  85. //推荐
  86. mRadioCheckIndex = 1;
  87. ((RadioButton) radioGroup.getChildAt(mRadioCheckIndex)).setChecked(true);
  88. changeFragmentLayout(mRecommendFragment);
  89. mUserApi.postUserEvent(mView.getActivity(), UserEventEnum.EVENT_RECOMMEND.getEvent());
  90. break;
  91. case R.id.main_left_tab_layout_follow:
  92. //关注
  93. if (EfunboxUtil.checkLogin(mView.getActivity())) {
  94. mRadioCheckIndex = 2;
  95. changeFragmentLayout(mFollowFragment);
  96. mUserApi.postUserEvent(mView.getActivity(), UserEventEnum.EVENT_SUBSCRIBE.getEvent());
  97. } else {
  98. ((RadioButton) radioGroup.getChildAt(mRadioCheckIndex)).setChecked(true);
  99. }
  100. break;
  101. case R.id.main_left_tab_layout_character:
  102. //任务
  103. mRadioCheckIndex = 3;
  104. ((RadioButton) radioGroup.getChildAt(mRadioCheckIndex)).setChecked(true);
  105. changeFragmentLayout(mCharacterFragment);
  106. mUserApi.postUserEvent(mView.getActivity(), UserEventEnum.EVENT_RESOURCES.getEvent());
  107. break;
  108. }
  109. }
  110. void changeFragmentLayout(Fragment fragment) {
  111. ((BaseActivity) mView.getActivity()).removeFirstTipView();
  112. FragmentTransaction transaction = mFragmentManager.beginTransaction();
  113. transaction.addToBackStack(null);
  114. transaction.replace(R.id.main_fragment_layout, fragment);
  115. transaction.commit();
  116. }
  117. @Override
  118. public void activityDestroy() {
  119. }
  120. @Override
  121. public void activityPause() {
  122. }
  123. @Override
  124. public void activityResume() {
  125. refMyFragment();
  126. }
  127. @Override
  128. public void checkModelIsDebug() {
  129. if (Consts.isIsDebug()) {
  130. TextView tv = new TextView(mView.getActivity());
  131. tv.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, SizeUtils.px2dp(mView.getActivity(), 100)));
  132. tv.setTextSize(SizeUtils.px2dp(mView.getActivity(), 30));
  133. tv.setTextColor(Color.RED);
  134. tv.setBackgroundColor(mView.getActivity().getResources().getColor(R.color.translucent_background));
  135. tv.setText("当前在Debug模式下(->application->setIsDebug)");
  136. tv.setOnClickListener(new View.OnClickListener() {
  137. @Override
  138. public void onClick(View view) {
  139. // MMKVUtil.getInstance().clearAll();
  140. }
  141. });
  142. mView.getRootView().addView(tv);
  143. }
  144. }
  145. @Override
  146. public void showSelectGradeWindow() {
  147. mView.getRootView().post(new Runnable() {
  148. @Override
  149. public void run() {
  150. PopWindowUtil.showSelectGradeWindow(mView.getActivity(), mView.getRootView(), 0, new PopUtilClickListener() {
  151. @Override
  152. public void clickCancel() {
  153. }
  154. @Override
  155. public void clickSubmit(Object object) {
  156. // Toast.makeText(mView.getActivity(), "选择了:" + EfunboxUtil.getEnumByCNGrade(object.toString()), Toast.LENGTH_SHORT).show();
  157. MMKVUtil.getInstance().encode(MMKVEncodeKey.USER_GRADE, EfunboxUtil.getEnumByCNGrade(object.toString()));
  158. }
  159. });
  160. }
  161. });
  162. }
  163. @Override
  164. public void userIsLogin() {
  165. mUserApi.isLogin(mView.getActivity(), DeviceUuidFactory.getUuid(), new Callback() {
  166. @Override
  167. public void onSuccess(HttpInfo info) throws IOException {
  168. HttpResultBean<UserBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<UserBean>>() {
  169. }.getType());
  170. Logger.e("info.get:" + info.getRetDetail());
  171. if (bean.getCode().equals("300")) {
  172. //没有用户数据
  173. if (TextUtils.isEmpty(MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE))) {
  174. //没有选择过年纪,选择年纪
  175. Logger.e("TextUtils.isEmpty(MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE)");
  176. showSelectGradeWindow();
  177. } else {
  178. Logger.e("TextUtils.isEmpty(MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE)--else");
  179. //选择过年纪。无处理
  180. }
  181. // registerMobile("18655365222");
  182. mView.setCheckIndex();
  183. } else {
  184. Consts.setUID(bean.getData().getUid());
  185. //用户是否登录,登录了,创建Consts的userbean
  186. Consts.setmConstsUserBean(bean.getData());
  187. mView.setCheckIndex();
  188. mUserApi.loginSign(mView.getActivity(), new Callback() {
  189. @Override
  190. public void onSuccess(HttpInfo info) throws IOException {
  191. HttpResultBean<SignBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<SignBean>>() {
  192. }.getType());
  193. if (bean.getData().getIsSign()) {
  194. CusToast.getInstance(mView.getActivity()).show("恭喜签到成功\n奖励" + bean.getData().getCount() + "朵小红花", 2000);
  195. }
  196. }
  197. @Override
  198. public void onFailure(HttpInfo info) throws IOException {
  199. }
  200. });
  201. }
  202. }
  203. @Override
  204. public void onFailure(HttpInfo info) throws IOException {
  205. if (TextUtils.isEmpty(MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE))) {
  206. //没有选择过年纪,选择年纪
  207. showSelectGradeWindow();
  208. } else {
  209. //选择过年纪。无处理
  210. }
  211. mView.setCheckIndex();
  212. }
  213. });
  214. }
  215. @Override
  216. public void registerMobile(String mobileNo) {
  217. if (EfunboxUtil.isMobileNO(mobileNo)) {
  218. Map<String, String> map = new HashMap<>();
  219. map.put("deviceCode", DeviceUuidFactory.getUuid());
  220. map.put("channel", Consts.getUmengChannel());
  221. map.put("mobileNo", mobileNo);
  222. if (MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE).equals("") || MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE) == null) {
  223. //如果没有,默认给一年级
  224. map.put("grade", "PRIMARY_FIRST_GRADE");
  225. } else {
  226. map.put("grade", MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE));
  227. }
  228. String json = ((BaseActivity) mView.getActivity()).getGson().toJson(map);
  229. mUserApi.registerMobile(mView.getActivity(), json, new Callback() {
  230. @Override
  231. public void onSuccess(HttpInfo info) throws IOException {
  232. Logger.e("手机号注册成功:" + info.getRetDetail());
  233. HttpResultBean<UserBean> bean = info.getRetDetail(new TypeToken<HttpResultBean<UserBean>>() {
  234. }.getType());
  235. Consts.setUID(bean.getData().getUid());
  236. //用户是否登录,登录了,创建Consts的userbean
  237. Consts.setmConstsUserBean(bean.getData());
  238. }
  239. @Override
  240. public void onFailure(HttpInfo info) throws IOException {
  241. Logger.e("手机号注册失败:" + info.getRetDetail());
  242. Toast.makeText(mView.getActivity(), "注册失败", Toast.LENGTH_SHORT).show();
  243. }
  244. });
  245. } else {
  246. Toast.makeText(mView.getActivity(), "手机号不正确", Toast.LENGTH_SHORT).show();
  247. }
  248. }
  249. @Override
  250. public void refRecordById(String id) {
  251. switch (mRadioCheckIndex) {
  252. case 1:
  253. mRecommendFragment.getPresenter().getRecordInfoById(id);
  254. break;
  255. case 2:
  256. mFollowFragment.getPresenter().getRecordInfoById(id);
  257. break;
  258. }
  259. }
  260. @Override
  261. public void refMyFragment() {
  262. if (mRadioCheckIndex == 0) {
  263. mUserFragment = new MyTabFragment();
  264. changeFragmentLayout(mUserFragment);
  265. }
  266. }
  267. public boolean onKeyDown(int keyCode, KeyEvent event) {
  268. switch (keyCode) {
  269. case KeyEvent.KEYCODE_BACK:
  270. case KeyEvent.KEYCODE_ESCAPE:
  271. PopWindowUtil.showExitAppWindow(mView.getActivity(), mView.getRootView());
  272. return true;
  273. }
  274. return true;
  275. }
  276. }