MainPresenter.java 12 KB

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