MemberActivity.java 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. package com.datarecovery.master.module.member;
  2. import android.app.Activity;
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.os.Bundle;
  6. import android.util.Pair;
  7. import androidx.annotation.NonNull;
  8. import androidx.annotation.Nullable;
  9. import androidx.recyclerview.widget.GridLayoutManager;
  10. import androidx.recyclerview.widget.LinearLayoutManager;
  11. import com.atmob.app.lib.base.BaseActivity;
  12. import com.datarecovery.master.databinding.ActivityMemberBinding;
  13. import com.datarecovery.master.dialog.AlipayQrCodeDialog;
  14. import com.datarecovery.master.dialog.ChoosePaymentWayDialog;
  15. import com.datarecovery.master.dialog.CommonLoadingDialog;
  16. import com.datarecovery.master.dialog.MemberRetentionDialog;
  17. import com.datarecovery.master.dialog.WechatPayQrCodeDialog;
  18. import com.datarecovery.master.module.audiorecover.AudioRecoverActivity;
  19. import com.datarecovery.master.module.filerecover.FileRecoverActivity;
  20. import com.datarecovery.master.module.imgrecover.ImageRecoverActivity;
  21. import com.datarecovery.master.module.videorecover.VideoRecoverActivity;
  22. import com.datarecovery.master.module.wxrecover.WeChatRecoverActivity;
  23. import com.datarecovery.master.utils.BoxingUtil;
  24. import com.datarecovery.master.utils.GridLayoutItemDecoration;
  25. import com.gyf.immersionbar.ImmersionBar;
  26. import java.util.Objects;
  27. import dagger.hilt.android.AndroidEntryPoint;
  28. @AndroidEntryPoint
  29. public class MemberActivity extends BaseActivity<ActivityMemberBinding> {
  30. private static final String MEMBER_TYPE = "member_type";
  31. private MemberViewModel memberViewModel;
  32. private GoodsItemAdapter goodsItemAdapter;
  33. private NormalScenesAdapter normalScenesAdapter;
  34. private SuperScenesAdapter superScenesAdapter;
  35. private GridLayoutManager gridLayoutManager;
  36. private GridLayoutItemDecoration gridLayoutItemDecoration;
  37. private MemberEvaluateAdapter memberEvaluateAdapter;
  38. private MemberRetentionDialog memberRetentionDialog;
  39. private ChoosePaymentWayDialog choosePaymentWayDialog;
  40. private CommonLoadingDialog commonLoadingDialog;
  41. private AlipayQrCodeDialog alipayQrCodeDialog;
  42. private WechatPayQrCodeDialog wechatPayQrCodeDialog;
  43. public static void start(Context context, @MemberType String type) {
  44. Intent intent = new Intent(context, MemberActivity.class);
  45. if (!(context instanceof Activity)) {
  46. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  47. }
  48. intent.putExtra(MEMBER_TYPE, type);
  49. context.startActivity(intent);
  50. }
  51. @Override
  52. protected void onCreate(@Nullable Bundle savedInstanceState) {
  53. super.onCreate(savedInstanceState);
  54. initView();
  55. initObserver();
  56. initData();
  57. }
  58. private void initData() {
  59. Intent intent = getIntent();
  60. if (intent != null) {
  61. memberViewModel.setMemberType(intent.getStringExtra(MEMBER_TYPE));
  62. }
  63. }
  64. private void initView() {
  65. addTopStatusBarHeight(binding.toolbar);
  66. goodsItemAdapter = new GoodsItemAdapter(this);
  67. binding.memberDetailList.setAdapter(goodsItemAdapter);
  68. binding.memberDetailList.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
  69. goodsItemAdapter.setOnItemSelectListener(goodsBean -> memberViewModel.setSelectBean(goodsBean));
  70. normalScenesAdapter = new NormalScenesAdapter();
  71. superScenesAdapter = new SuperScenesAdapter();
  72. gridLayoutManager = new GridLayoutManager(this, 4);
  73. binding.scenesRyView.setLayoutManager(gridLayoutManager);
  74. gridLayoutItemDecoration = new GridLayoutItemDecoration();
  75. binding.scenesRyView.addItemDecoration(gridLayoutItemDecoration);
  76. memberEvaluateAdapter = new MemberEvaluateAdapter();
  77. binding.userEvaluateRyView.setLayoutManager(new LinearLayoutManager(this));
  78. binding.userEvaluateRyView.setAdapter(memberEvaluateAdapter);
  79. binding.iconBack.setOnClickListener(v -> onBackPressed());
  80. }
  81. private void initObserver() {
  82. memberViewModel.getOnSubscribeSuccessEvent().observe(this, orderId -> {
  83. dismissQrCodeDialog(orderId);
  84. setPaySuccessGo();
  85. finish();
  86. });
  87. memberViewModel.getShowAliQRPaymentEvent().observe(this, this::showAlipayQrCodeDialog);
  88. memberViewModel.getShowWxQRPaymentEvent().observe(this, this::showWxQrCodeDialog);
  89. memberViewModel.getShowLoadingEvent().observe(this, this::showLoading);
  90. memberViewModel.getMemberGoodsList().observe(this, goodsItemAdapter::submit);
  91. memberViewModel.getSelectBean().observe(this, bean -> {
  92. if (bean == null) {
  93. return;
  94. }
  95. if (Objects.equals(bean.getAuths(), MemberType.APP_SUPER_RECOVER)) {
  96. gridLayoutManager.setSpanCount(4);
  97. gridLayoutItemDecoration.setParam(4, 0, 0.0361111111111111f);
  98. superScenesAdapter.setData(memberViewModel.getSuperScenesBeans());
  99. binding.scenesRyView.setAdapter(superScenesAdapter);
  100. } else {
  101. gridLayoutManager.setSpanCount(2);
  102. gridLayoutItemDecoration.setParam(2, 0, 0.0166666666666667f);
  103. normalScenesAdapter.setData(bean.getScenesArray());
  104. binding.scenesRyView.setAdapter(normalScenesAdapter);
  105. }
  106. });
  107. memberViewModel.getEvaluateList().observe(this, evaluateBeans -> memberEvaluateAdapter.submit(evaluateBeans));
  108. memberViewModel.getShowChoicePayWayDialog().observe(this, o -> showChoosePaymentWayDialog());
  109. }
  110. private void setPaySuccessGo() {
  111. switch (memberViewModel.getMemberType()) {
  112. case MemberType.APP_WX_MESSAGE_RECOVER:
  113. case MemberType.APP_WX_FRIEND_RECOVER:
  114. WeChatRecoverActivity.start(this);
  115. break;
  116. case MemberType.APP_IMAGE_RECOVER:
  117. ImageRecoverActivity.start(this, ImageRecoverActivity.Type.RECOVER);
  118. break;
  119. case MemberType.APP_FILE_RECOVER:
  120. FileRecoverActivity.start(this);
  121. break;
  122. case MemberType.APP_VIDEO_RECOVER:
  123. VideoRecoverActivity.start(this);
  124. break;
  125. case MemberType.APP_AUDIO_RECOVER:
  126. AudioRecoverActivity.start(this);
  127. break;
  128. case MemberType.APP_IMAGE_CLEAN:
  129. ImageRecoverActivity.start(this, ImageRecoverActivity.Type.DELETE);
  130. break;
  131. }
  132. }
  133. private void showWxQrCodeDialog(Pair<String, String> params) {
  134. if (params == null || params.first == null || params.second == null) {
  135. return;
  136. }
  137. if (wechatPayQrCodeDialog == null) {
  138. wechatPayQrCodeDialog = new WechatPayQrCodeDialog(this);
  139. }
  140. wechatPayQrCodeDialog.show(params.first, params.second, memberViewModel);
  141. }
  142. private void showAlipayQrCodeDialog(Pair<String, String> params) {
  143. if (params == null || params.first == null || params.second == null) {
  144. return;
  145. }
  146. if (alipayQrCodeDialog == null) {
  147. alipayQrCodeDialog = new AlipayQrCodeDialog(this);
  148. }
  149. alipayQrCodeDialog.show(params.first, params.second, memberViewModel);
  150. }
  151. private void dismissQrCodeDialog(String orderId) {
  152. if (alipayQrCodeDialog != null) {
  153. if (Objects.equals(orderId, alipayQrCodeDialog.getCurrentOrderId())) {
  154. alipayQrCodeDialog.dismiss();
  155. }
  156. }
  157. if (wechatPayQrCodeDialog != null) {
  158. if (Objects.equals(orderId, wechatPayQrCodeDialog.getCurrentOrderId())) {
  159. wechatPayQrCodeDialog.dismiss();
  160. }
  161. }
  162. }
  163. private void showLoading(Boolean show) {
  164. if (BoxingUtil.boxing(show)) {
  165. if (commonLoadingDialog == null) {
  166. commonLoadingDialog = new CommonLoadingDialog(this);
  167. commonLoadingDialog.setMessageGone();
  168. }
  169. commonLoadingDialog.show();
  170. } else {
  171. if (commonLoadingDialog != null) {
  172. commonLoadingDialog.dismiss();
  173. }
  174. }
  175. }
  176. private void showChoosePaymentWayDialog() {
  177. if (choosePaymentWayDialog == null) {
  178. choosePaymentWayDialog = new ChoosePaymentWayDialog(this, this, memberViewModel.getSubscribeTxt(), memberViewModel.getPayWayList().getValue());
  179. }
  180. choosePaymentWayDialog.setActionHandler((payPlatform, payMethod) -> memberViewModel.submitOrder(payPlatform, payMethod));
  181. choosePaymentWayDialog.paymentShow();
  182. }
  183. private void showMemberRetentionDialog() {
  184. if (memberRetentionDialog == null) {
  185. memberRetentionDialog = new MemberRetentionDialog(this)
  186. .setActionHandler(new MemberRetentionDialog.ActionHandler() {
  187. @Override
  188. public void onCloseClick() {
  189. finish();
  190. }
  191. @Override
  192. public void onContinueClick() {
  193. memberViewModel.onRetainMemberSubscribeClick();
  194. }
  195. });
  196. }
  197. memberRetentionDialog.show();
  198. }
  199. @Override
  200. public void onBackPressed() {
  201. if (Objects.equals(memberViewModel.getMemberType(), MemberType.APP_IMAGE_CLEAN)) {
  202. super.onBackPressed();
  203. return;
  204. }
  205. if (!memberViewModel.isMember()) {
  206. showMemberRetentionDialog();
  207. } else {
  208. super.onBackPressed();
  209. }
  210. }
  211. @Override
  212. protected void configImmersion(@NonNull ImmersionBar immersionBar) {
  213. immersionBar.statusBarDarkFont(true);
  214. }
  215. @Override
  216. protected void initViewModel() {
  217. super.initViewModel();
  218. memberViewModel = getViewModelProvider().get(MemberViewModel.class);
  219. binding.setMemberViewModel(memberViewModel);
  220. }
  221. @Override
  222. protected boolean shouldImmersion() {
  223. return true;
  224. }
  225. }