MemberViewModel.java 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604
  1. package com.datarecovery.master.module.member;
  2. import android.graphics.Color;
  3. import android.text.SpannableStringBuilder;
  4. import android.text.Spanned;
  5. import android.text.TextUtils;
  6. import android.text.style.ForegroundColorSpan;
  7. import android.util.Pair;
  8. import androidx.lifecycle.LiveData;
  9. import androidx.lifecycle.MutableLiveData;
  10. import com.atmob.app.lib.base.BaseViewModel;
  11. import com.atmob.app.lib.livedata.SingleLiveEvent;
  12. import com.atmob.common.runtime.ActivityUtil;
  13. import com.atmob.common.runtime.ContextUtil;
  14. import com.datarecovery.master.R;
  15. import com.datarecovery.master.data.api.bean.MemberGoodsBean;
  16. import com.datarecovery.master.data.api.bean.PayOptionsBean;
  17. import com.datarecovery.master.data.api.bean.WechatPaymentSignBean;
  18. import com.datarecovery.master.data.api.response.MemberDetailResponse;
  19. import com.datarecovery.master.data.api.response.MemberPayResponse;
  20. import com.datarecovery.master.data.consts.ChannelId;
  21. import com.datarecovery.master.data.consts.Constants;
  22. import com.datarecovery.master.data.consts.ErrorCode;
  23. import com.datarecovery.master.data.consts.EventId;
  24. import com.datarecovery.master.data.repositories.AccountRepository;
  25. import com.datarecovery.master.data.repositories.ConfigRepository;
  26. import com.datarecovery.master.data.repositories.DeviceFuncRepository;
  27. import com.datarecovery.master.data.repositories.MemberRepository;
  28. import com.datarecovery.master.data.repositories.PayRepository;
  29. import com.datarecovery.master.handler.EventHelper;
  30. import com.datarecovery.master.module.imgrecover.ImageRecoverActivity;
  31. import com.datarecovery.master.module.login.LoginActivity;
  32. import com.datarecovery.master.module.main.MainActivity;
  33. import com.datarecovery.master.module.member.bean.EvaluateBean;
  34. import com.datarecovery.master.module.member.bean.SuperScenesBean;
  35. import com.datarecovery.master.module.wxrecover.WeChatRecoverActivity;
  36. import com.datarecovery.master.utils.BoxingUtil;
  37. import com.datarecovery.master.utils.Maps;
  38. import com.datarecovery.master.utils.OrderReportHelper;
  39. import com.datarecovery.master.utils.ReportUtil;
  40. import com.datarecovery.master.utils.RxHttpHandler;
  41. import com.datarecovery.master.utils.ToastUtil;
  42. import com.google.gson.Gson;
  43. import java.util.ArrayList;
  44. import java.util.HashMap;
  45. import java.util.List;
  46. import java.util.Map;
  47. import java.util.Objects;
  48. import java.util.concurrent.TimeUnit;
  49. import javax.inject.Inject;
  50. import atmob.reactivex.rxjava3.annotations.NonNull;
  51. import atmob.reactivex.rxjava3.core.SingleObserver;
  52. import atmob.reactivex.rxjava3.disposables.Disposable;
  53. import atmob.rxjava.utils.RxJavaUtil;
  54. import dagger.hilt.android.lifecycle.HiltViewModel;
  55. import plus.pay.AgilePay;
  56. import plus.pay.alipay.AlipayInfo;
  57. import plus.pay.listener.AgilePayState;
  58. import plus.pay.wxpay.WXpayInfo;
  59. @HiltViewModel
  60. public class MemberViewModel extends BaseViewModel {
  61. private final MemberRepository memberRepository;
  62. private final MutableLiveData<String> subscribeTxt = new MutableLiveData<>();
  63. private final MutableLiveData<List<MemberGoodsBean>> memberGoodsList = new MutableLiveData<>();
  64. private final MutableLiveData<List<PayOptionsBean>> payWayList = new MutableLiveData<>();
  65. private final MutableLiveData<MemberGoodsBean> selectBean = new MutableLiveData<>();
  66. private String serviceContentTxt;
  67. private final MutableLiveData<List<EvaluateBean>> evaluateList = new MutableLiveData<>();
  68. private final SingleLiveEvent<String> onSubscribeSuccessEvent = new SingleLiveEvent<>();
  69. private final Gson gson;
  70. private final AccountRepository accountRepository;
  71. private final PayRepository payRepository;
  72. private final DeviceFuncRepository deviceFuncRepository;
  73. private final SingleLiveEvent<Boolean> showLoadingEvent = new SingleLiveEvent<>();
  74. private final SingleLiveEvent<?> showChoicePayWayDialog = new SingleLiveEvent<>();
  75. private final MutableLiveData<String[]> scenesDataList = new MutableLiveData<>();
  76. private final SingleLiveEvent<Pair<String, String>> showWxQRPaymentEvent = new SingleLiveEvent<>();
  77. private final SingleLiveEvent<Pair<String, String>> showAliQRPaymentEvent = new SingleLiveEvent<>();
  78. private final HashMap<String, MemberGoodsBean> orderIdItemMap = new HashMap<>();
  79. @MemberType
  80. private String memberType;
  81. private final List<Pair<CharSequence, CharSequence>> informationList = new ArrayList<>();
  82. @Inject
  83. public MemberViewModel(MemberRepository memberRepository, Gson gson, AccountRepository accountRepository, PayRepository payRepository, DeviceFuncRepository deviceFuncRepository) {
  84. this.memberRepository = memberRepository;
  85. this.deviceFuncRepository = deviceFuncRepository;
  86. this.accountRepository = accountRepository;
  87. this.payRepository = payRepository;
  88. this.gson = gson;
  89. }
  90. public LiveData<String[]> getScenesDataList() {
  91. return scenesDataList;
  92. }
  93. public String getMemberType() {
  94. return memberType;
  95. }
  96. public LiveData<String> getSubscribeTxt() {
  97. return subscribeTxt;
  98. }
  99. public LiveData<Pair<String, String>> getShowWxQRPaymentEvent() {
  100. return showWxQRPaymentEvent;
  101. }
  102. public LiveData<Pair<String, String>> getShowAliQRPaymentEvent() {
  103. return showAliQRPaymentEvent;
  104. }
  105. public LiveData<Boolean> getShowLoadingEvent() {
  106. return showLoadingEvent;
  107. }
  108. public LiveData<?> getShowChoicePayWayDialog() {
  109. return showChoicePayWayDialog;
  110. }
  111. public String getServiceContentTxt() {
  112. return serviceContentTxt;
  113. }
  114. public LiveData<MemberGoodsBean> getSelectBean() {
  115. return selectBean;
  116. }
  117. public void setSelectBean(MemberGoodsBean bean) {
  118. if (bean != null) {
  119. EventHelper.report(EventId.hf1000601, Maps.asMap(EventId.EVENT_ID, ReportUtil.getReportId(memberType)));
  120. }
  121. selectBean.setValue(bean);
  122. }
  123. public LiveData<List<MemberGoodsBean>> getMemberGoodsList() {
  124. return memberGoodsList;
  125. }
  126. public LiveData<List<PayOptionsBean>> getPayWayList() {
  127. return payWayList;
  128. }
  129. public LiveData<List<EvaluateBean>> getEvaluateList() {
  130. return evaluateList;
  131. }
  132. public LiveData<String> getOnSubscribeSuccessEvent() {
  133. return onSubscribeSuccessEvent;
  134. }
  135. public void setMemberType(@MemberType String type) {
  136. if (!TextUtils.isEmpty(memberType)) {
  137. return;
  138. }
  139. this.memberType = type;
  140. if (Objects.equals(memberType, MemberType.APP_IMAGE_CLEAN)) {
  141. subscribeTxt.setValue(ContextUtil.getContext().getString(R.string.member_clear_buy));
  142. } else {
  143. subscribeTxt.setValue(ContextUtil.getContext().getString(R.string.member_recover_buy));
  144. }
  145. reportId();
  146. initCommentData();
  147. refreshMemberDetail();
  148. }
  149. private void reportId() {
  150. switch (memberType) {
  151. case MemberType.APP_WX_MESSAGE_RECOVER:
  152. EventHelper.report(EventId.hf1000501);
  153. EventHelper.timeEvent(EventId.hf1000516);
  154. break;
  155. case MemberType.APP_WX_FRIEND_RECOVER:
  156. EventHelper.report(EventId.hf1000503);
  157. EventHelper.timeEvent(EventId.hf1000518);
  158. break;
  159. case MemberType.APP_IMAGE_RECOVER:
  160. EventHelper.report(EventId.hf1000505);
  161. EventHelper.timeEvent(EventId.hf1000520);
  162. break;
  163. case MemberType.APP_FILE_RECOVER:
  164. EventHelper.report(EventId.hf1000507);
  165. EventHelper.timeEvent(EventId.hf1000522);
  166. break;
  167. case MemberType.APP_VIDEO_RECOVER:
  168. EventHelper.report(EventId.hf1000509);
  169. EventHelper.timeEvent(EventId.hf1000524);
  170. break;
  171. case MemberType.APP_AUDIO_RECOVER:
  172. EventHelper.report(EventId.hf1000511);
  173. EventHelper.timeEvent(EventId.hf1000526);
  174. break;
  175. case MemberType.APP_IMAGE_CLEAN:
  176. EventHelper.report(EventId.hf1000513);
  177. EventHelper.timeEvent(EventId.hf1000528);
  178. break;
  179. }
  180. }
  181. private void initCommentData() {
  182. List<EvaluateBean> evaluateBeans = new ArrayList<>();
  183. evaluateBeans.add(new EvaluateBean(R.drawable.icon_evaluate_1, "冬季温暖优雅", "我非常满意数据恢复服务的效果。他们专业的团队帮助我成功恢复了丢失的文件,让我感到非常安心和放心。他们高效的工作速度和专业的技术水平让我对他们的服务印象深刻。强烈推荐!"));
  184. evaluateBeans.add(new EvaluateBean(R.drawable.icon_evaluate_2, "Starlight99", "我遇到了数据丢失的问题,但幸运的是找到了文件数据恢复大师。他们的技术团队非常专业,通过他们的努力,我成功地恢复了关键文件。他们提供的服务超出了我的期望,我对他们的工作非常满意。如果您需要数据恢复,我强烈推荐选择他们!"));
  185. evaluateBeans.add(new EvaluateBean(R.drawable.icon_evaluate_3, "FreeSpirit777", "文件数据恢复大师为我提供了出色的帮助。他们的团队非常耐心地解释了整个恢复过程,并及时与我沟通进展。最重要的是,他们成功地找回了我认为已经永远丢失的数据。感谢他们的专业和高效服务!"));
  186. evaluateList.setValue(evaluateBeans);
  187. }
  188. public void refreshMemberDetail() {
  189. if (TextUtils.isEmpty(memberType)) {
  190. return;
  191. }
  192. memberRepository.memberDetail(memberType)
  193. .subscribe(new SingleObserver<MemberDetailResponse>() {
  194. @Override
  195. public void onSubscribe(@NonNull Disposable d) {
  196. addDisposable(d);
  197. }
  198. @Override
  199. public void onSuccess(@NonNull MemberDetailResponse memberDetailResponse) {
  200. memberGoodsList.setValue(memberDetailResponse.getList());
  201. payWayList.setValue(memberDetailResponse.getPayOptions());
  202. serviceContentTxt = memberDetailResponse.getDescription();
  203. List<MemberGoodsBean> list = memberDetailResponse.getList();
  204. if (list != null && !list.isEmpty()) {
  205. for (MemberGoodsBean bean : list) {
  206. if (Objects.equals(bean.getAuths(), MemberType.APP_WX_MESSAGE_RECOVER)) {
  207. scenesDataList.setValue(new String[]{"微信好友误删", "微信信息恢复", "导出微信记录", "左滑误删消息"});
  208. break;
  209. } else if (Objects.equals(bean.getAuths(), MemberType.APP_WX_FRIEND_RECOVER)) {
  210. scenesDataList.setValue(new String[]{"微信好友被删", "微信好友找回", "恢复恢复好友"});
  211. break;
  212. } else if (Objects.equals(bean.getAuths(), MemberType.APP_IMAGE_RECOVER)) {
  213. scenesDataList.setValue(new String[]{"相册误删图片", "手机图片丢失", "手机照片找回"});
  214. break;
  215. } else if (Objects.equals(bean.getAuths(), MemberType.APP_FILE_RECOVER)) {
  216. scenesDataList.setValue(new String[]{"手机文件清理", "多类型文件找回", "微信/QQ文件找回"});
  217. break;
  218. } else if (Objects.equals(bean.getAuths(), MemberType.APP_VIDEO_RECOVER)) {
  219. scenesDataList.setValue(new String[]{"误删手机视频", "手机视频丢失", "手机视频找回"});
  220. break;
  221. } else if (Objects.equals(bean.getAuths(), MemberType.APP_AUDIO_RECOVER)) {
  222. scenesDataList.setValue(new String[]{"误删手机音频", "手机音频丢失", "手机音频找回"});
  223. break;
  224. } else if (Objects.equals(bean.getAuths(), MemberType.APP_IMAGE_CLEAN)) {
  225. scenesDataList.setValue(new String[]{"手机图片彻底删除", "选择清除手机图片", "扫描手机图片"});
  226. break;
  227. }
  228. }
  229. }
  230. }
  231. @Override
  232. public void onError(@NonNull Throwable e) {
  233. e.printStackTrace();
  234. }
  235. });
  236. }
  237. public boolean isMember() {
  238. return false;
  239. }
  240. public MemberGoodsBean getMostBuyItem() {
  241. List<MemberGoodsBean> memberBeans = memberGoodsList.getValue();
  242. if (memberBeans == null) {
  243. return null;
  244. }
  245. for (MemberGoodsBean memberBean : memberBeans) {
  246. if (Objects.equals(memberBean.getAuths(), MemberType.APP_SUPER_RECOVER)) {
  247. return memberBean;
  248. }
  249. }
  250. return null;
  251. }
  252. public void setCurrentSelectedMember(MemberGoodsBean memberBean) {
  253. if (Objects.equals(memberBean, selectBean.getValue())) {
  254. return;
  255. }
  256. selectBean.setValue(memberBean);
  257. }
  258. public void onRetainMemberSubscribeClick() {
  259. // if (!BoxingUtil.boxing(accountRepository.getIsLogin().getValue())) {
  260. // ToastUtil.show(R.string.no_login, ToastUtil.LENGTH_SHORT);
  261. // LoginActivity.start(ActivityUtil.getTopActivity());
  262. // return;
  263. // }
  264. MemberGoodsBean mostBuyItem = getMostBuyItem();
  265. if (mostBuyItem == null) {
  266. return;
  267. }
  268. setCurrentSelectedMember(mostBuyItem);
  269. //选择支付方式
  270. showChoicePayWayDialog.call();
  271. }
  272. public void onMemberSubscribeClick() {
  273. if (ConfigRepository.isTargetSuffixChannel(ChannelId.VIVO)) {
  274. if (!BoxingUtil.boxing(accountRepository.getIsLogin().getValue())) {
  275. ToastUtil.show(R.string.no_login, ToastUtil.LENGTH_SHORT);
  276. LoginActivity.start(ActivityUtil.getTopActivity(), ReportUtil.getReportId(memberType));
  277. return;
  278. }
  279. }
  280. EventHelper.report(EventId.hf1000602, Maps.asMap(EventId.EVENT_ID, ReportUtil.getReportId(memberType)));
  281. MemberGoodsBean currentSelected = selectBean.getValue();
  282. if (currentSelected == null) {
  283. return;
  284. }
  285. //选择支付方式
  286. showChoicePayWayDialog.call();
  287. }
  288. public void submitOrder(int payPlatform, int payMethod) {
  289. MemberGoodsBean bean = selectBean.getValue();
  290. if (bean == null) {
  291. return;
  292. }
  293. if (payPlatform == 1 && payMethod == 2) {
  294. } else if (payPlatform == 4 && payMethod == 2) {
  295. } else if (payPlatform == 1 && payMethod == 1) {
  296. EventHelper.report(EventId.hf1000603, Maps.asMap(EventId.EVENT_ID, "hf11023"));
  297. } else if (payPlatform == 4 && payMethod == 1) {
  298. EventHelper.report(EventId.hf1000603, Maps.asMap(EventId.EVENT_ID, "hf11024"));
  299. }
  300. memberRepository.requestPayOrder(bean.getId(), payPlatform, payMethod).subscribe(new SingleObserver<MemberPayResponse>() {
  301. @Override
  302. public void onSubscribe(@NonNull Disposable d) {
  303. addDisposable(d);
  304. showLoadingEvent.setValue(true);
  305. }
  306. @Override
  307. public void onSuccess(@NonNull MemberPayResponse memberPayResponse) {
  308. showLoadingEvent.setValue(false);
  309. orderIdItemMap.put(memberPayResponse.getOutTradeNo(), bean);
  310. payRepository.refreshOrderPageList();
  311. if (payPlatform == 1 && payMethod == 2) {
  312. onWeChatPay(memberPayResponse.getWechatPayPrepayJson(), memberPayResponse.getOutTradeNo());
  313. } else if (payPlatform == 4 && payMethod == 2) {
  314. onWeChatScanPay(memberPayResponse.getWechatPayPrepayJson(), memberPayResponse.getOutTradeNo());
  315. } else if (payPlatform == 1 && payMethod == 1) {
  316. onAliPay(memberPayResponse.getAlipayOrderString(), memberPayResponse.getOutTradeNo());
  317. } else if (payPlatform == 4 && payMethod == 1) {
  318. onAliPayScan(memberPayResponse.getAlipayQrcodeHtml(), memberPayResponse.getOutTradeNo());
  319. }
  320. }
  321. @Override
  322. public void onError(@NonNull Throwable throwable) {
  323. throwable.printStackTrace();
  324. showLoadingEvent.setValue(false);
  325. if (throwable instanceof RxHttpHandler.ServerErrorException) {
  326. RxHttpHandler.ServerErrorException serverErrorException = (RxHttpHandler.ServerErrorException) throwable;
  327. if (serverErrorException.getCode() == ErrorCode.ERROR_CODE_NO_LOGIN_ERROR) {
  328. ToastUtil.show(R.string.no_login, ToastUtil.LENGTH_SHORT);
  329. LoginActivity.start(ActivityUtil.getTopActivity(), ReportUtil.getReportId(memberType));
  330. } else if (serverErrorException.getCode() == ErrorCode.ERROR_CODE_HAS_PERMISSION_ERROR) {
  331. deviceFuncRepository.refreshFuncAuths();
  332. payRepository.refreshOrderPageList();
  333. } else {
  334. ToastUtil.show(serverErrorException.getMsg(), ToastUtil.LENGTH_SHORT);
  335. }
  336. } else {
  337. ToastUtil.show(R.string.member_payment_failed, ToastUtil.LENGTH_SHORT);
  338. }
  339. }
  340. });
  341. }
  342. private void onAliPayScan(String s, String orderId) {
  343. showAliQRPaymentEvent.setValue(new Pair<>(s, orderId));
  344. }
  345. private void onAliPay(String s, String orderId) {
  346. AlipayInfo alipayInfo = new AlipayInfo();
  347. alipayInfo.setContent(s);
  348. requestSdkPay(alipayInfo, orderId, Constants.PAYMENT_WAY_ALIPAY);
  349. }
  350. private void onWeChatScanPay(String s, String orderId) {
  351. showWxQRPaymentEvent.setValue(new Pair<>(s, orderId));
  352. }
  353. private void onWeChatPay(String s, String orderId) {
  354. try {
  355. WechatPaymentSignBean wechatPaymentSignBean = gson.fromJson(s, WechatPaymentSignBean.class);
  356. WXpayInfo wXpayInfo = new WXpayInfo();
  357. wXpayInfo.setAppid(wechatPaymentSignBean.getAppId());
  358. wXpayInfo.setPartnerid(wechatPaymentSignBean.getPartnerId());
  359. wXpayInfo.setPrepayid(wechatPaymentSignBean.getPrePayId());
  360. wXpayInfo.set_package(wechatPaymentSignBean.getPackageName());
  361. wXpayInfo.setNoncestr(wechatPaymentSignBean.getRandomStr());
  362. wXpayInfo.setTimestamp(wechatPaymentSignBean.getTimeStamp());
  363. wXpayInfo.setSign(wechatPaymentSignBean.getSign());
  364. requestSdkPay(wXpayInfo, orderId, Constants.PAYMENT_WAY_WECHAT);
  365. } catch (Exception e) {
  366. e.printStackTrace();
  367. }
  368. }
  369. private void requestSdkPay(Object payInfo, String orderId, int payWay) {
  370. AgilePay.pay(payInfo, ActivityUtil.getTopActivity(), new AgilePayState() {
  371. @Override
  372. public void error(int errno, String error) {
  373. if (errno == 6001) {
  374. //用户取消支付
  375. EventHelper.report(EventId.hf1000606, Maps.asMap(EventId.EVENT_ID, "hf11028"));
  376. return;
  377. }
  378. EventHelper.report(EventId.hf1000606, Maps.asMap(EventId.EVENT_ID, "hf11022"));
  379. ToastUtil.show(R.string.member_payment_failed, ToastUtil.LENGTH_SHORT);
  380. }
  381. @Override
  382. public void payError(int errno, String error) {
  383. if (errno == 6001) {
  384. //用户取消支付
  385. EventHelper.report(EventId.hf1000606, Maps.asMap(EventId.EVENT_ID, "hf11028"));
  386. return;
  387. }
  388. EventHelper.report(EventId.hf1000606, Maps.asMap(EventId.EVENT_ID, "hf11022"));
  389. ToastUtil.show(R.string.member_payment_failed, ToastUtil.LENGTH_SHORT);
  390. }
  391. @Override
  392. public void paySuccess(String result) {
  393. MemberGoodsBean bean = orderIdItemMap.get(orderId);
  394. if (bean != null) {
  395. EventHelper.reportPay(bean.getAmount(), orderId, payWay, bean.getName());
  396. }
  397. queryOrderStatus(orderId, payWay, true, false);
  398. }
  399. @Override
  400. public void payBefore() {
  401. }
  402. });
  403. }
  404. public @NonNull Disposable queryOrderStatus(String orderId, int payWay, boolean showLoading, boolean isReportPay) {
  405. MemberGoodsBean memberBean = orderIdItemMap.get(orderId);
  406. if (memberBean != null && isReportPay) {
  407. OrderReportHelper.recordOrderId(memberBean.getAmount(), orderId, payWay, memberBean.getName());
  408. }
  409. return memberRepository.getPayStatus(orderId, 100, 3)
  410. .doOnSubscribe(disposable -> {
  411. if (showLoading) {
  412. showLoadingEvent.setValue(true);
  413. addDisposable(RxJavaUtil.timer(10, TimeUnit.SECONDS, () -> showLoadingEvent.setValue(false)));
  414. }
  415. })
  416. .doOnSuccess(success -> {
  417. if (isReportPay) {
  418. if (BoxingUtil.boxing(success) && memberBean != null) {
  419. EventHelper.reportPay(memberBean.getAmount(), orderId, payWay, memberBean.getName());
  420. }
  421. }
  422. })
  423. .subscribe(aBoolean -> {
  424. showLoadingEvent.setValue(false);
  425. if (BoxingUtil.boxing(aBoolean)) {
  426. EventHelper.report(EventId.hf1000604, Maps.asMap(EventId.EVENT_ID, ReportUtil.getReportId(memberType)));
  427. if (memberBean != null) {
  428. Map<String, Object> map = new HashMap<>();
  429. if (Objects.equals(memberBean.getAuths(), MemberType.APP_SUPER_RECOVER)) {
  430. map.put(EventId.EVENT_ID, "hf11026");
  431. EventHelper.report(EventId.hf1000605, map);
  432. } else if (Objects.equals(memberBean.getAuths(), MemberType.APP_IMAGE_CLEAN) && memberBean.isPopular()) {
  433. map.put(EventId.EVENT_ID, "hf11027");
  434. EventHelper.report(EventId.hf1000605, map);
  435. } else {
  436. map.put(EventId.EVENT_ID, "hf11025");
  437. }
  438. map.put(EventId.EVENT_TYPE1, ReportUtil.getReportId(memberType));
  439. EventHelper.report(EventId.hf1000605, map);
  440. }
  441. payRepository.refreshOrderPageList();
  442. onSubscribeSuccessEvent.setValue(orderId);
  443. }
  444. }, throwable -> {
  445. throwable.printStackTrace();
  446. showLoadingEvent.setValue(false);
  447. });
  448. }
  449. @Override
  450. protected void onCleared() {
  451. super.onCleared();
  452. switch (memberType) {
  453. case MemberType.APP_WX_MESSAGE_RECOVER:
  454. EventHelper.report(EventId.hf1000516);
  455. break;
  456. case MemberType.APP_WX_FRIEND_RECOVER:
  457. EventHelper.report(EventId.hf1000518);
  458. break;
  459. case MemberType.APP_IMAGE_RECOVER:
  460. EventHelper.report(EventId.hf1000520);
  461. break;
  462. case MemberType.APP_FILE_RECOVER:
  463. EventHelper.report(EventId.hf1000522);
  464. break;
  465. case MemberType.APP_VIDEO_RECOVER:
  466. EventHelper.report(EventId.hf1000524);
  467. break;
  468. case MemberType.APP_AUDIO_RECOVER:
  469. EventHelper.report(EventId.hf1000526);
  470. break;
  471. case MemberType.APP_IMAGE_CLEAN:
  472. EventHelper.report(EventId.hf1000528);
  473. break;
  474. }
  475. }
  476. public List<Pair<CharSequence, CharSequence>> getInformationList() {
  477. informationList.clear();
  478. switch (memberType) {
  479. case MemberType.APP_WX_MESSAGE_RECOVER:
  480. informationList.add(new Pair<>(getInformationCharSequence("134*****190 购买了", "超级恢复"), "1分钟前"));
  481. informationList.add(new Pair<>(getInformationCharSequence("123*****810 购买了", "微信消息恢复"), "3分钟前"));
  482. informationList.add(new Pair<>(getInformationCharSequence("122*****910 购买了", "超级恢复"), "7分钟前"));
  483. informationList.add(new Pair<>(getInformationCharSequence("187*****724 购买了", "超级恢复"), "9分钟前"));
  484. informationList.add(new Pair<>(getInformationCharSequence("156*****586 购买了", "微信消息恢复"), "11分钟前"));
  485. break;
  486. case MemberType.APP_WX_FRIEND_RECOVER:
  487. informationList.add(new Pair<>(getInformationCharSequence("145*****356 购买了", "微信好友恢复"), "2分钟前"));
  488. informationList.add(new Pair<>(getInformationCharSequence("176*****457 购买了", "微信好友恢复"), "6分钟前"));
  489. informationList.add(new Pair<>(getInformationCharSequence("163*****246 购买了", "超级恢复"), "10分钟前"));
  490. informationList.add(new Pair<>(getInformationCharSequence("162*****471 购买了", "超级恢复"), "13分钟前"));
  491. informationList.add(new Pair<>(getInformationCharSequence("192*****279 购买了", "微信好友恢复"), "14分钟前"));
  492. break;
  493. case MemberType.APP_IMAGE_RECOVER:
  494. informationList.add(new Pair<>(getInformationCharSequence("194*****356 购买了", "图片恢复"), "5分钟前"));
  495. informationList.add(new Pair<>(getInformationCharSequence("176*****457 购买了", "超级恢复"), "6分钟前"));
  496. informationList.add(new Pair<>(getInformationCharSequence("165*****126 购买了", "超级恢复"), "9分钟前"));
  497. informationList.add(new Pair<>(getInformationCharSequence("174*****471 购买了", "超级恢复"), "13分钟前"));
  498. informationList.add(new Pair<>(getInformationCharSequence("175*****279 购买了", "图片恢复"), "16分钟前"));
  499. break;
  500. case MemberType.APP_FILE_RECOVER:
  501. informationList.add(new Pair<>(getInformationCharSequence("143*****356 购买了", "文件恢复"), "5分钟前"));
  502. informationList.add(new Pair<>(getInformationCharSequence("144*****352 购买了", "超级恢复"), "6分钟前"));
  503. informationList.add(new Pair<>(getInformationCharSequence("153*****421 购买了", "文件恢复"), "9分钟前"));
  504. informationList.add(new Pair<>(getInformationCharSequence("159*****471 购买了", "超级恢复"), "13分钟前"));
  505. informationList.add(new Pair<>(getInformationCharSequence("165*****279 购买了", "文件恢复"), "16分钟前"));
  506. break;
  507. case MemberType.APP_VIDEO_RECOVER:
  508. informationList.add(new Pair<>(getInformationCharSequence("165*****356 购买了", "视频恢复"), "2分钟前"));
  509. informationList.add(new Pair<>(getInformationCharSequence("167*****245 购买了", "超级恢复"), "6分钟前"));
  510. informationList.add(new Pair<>(getInformationCharSequence("182*****412 购买了", "视频恢复"), "7分钟前"));
  511. informationList.add(new Pair<>(getInformationCharSequence("199*****471 购买了", "超级恢复"), "13分钟前"));
  512. informationList.add(new Pair<>(getInformationCharSequence("131*****276 购买了", "超级恢复"), "15分钟前"));
  513. break;
  514. case MemberType.APP_AUDIO_RECOVER:
  515. informationList.add(new Pair<>(getInformationCharSequence("187*****096 购买了", "视频恢复"), "2分钟前"));
  516. informationList.add(new Pair<>(getInformationCharSequence("178*****045 购买了", "超级恢复"), "3分钟前"));
  517. informationList.add(new Pair<>(getInformationCharSequence("193*****012 购买了", "视频恢复"), "6分钟前"));
  518. informationList.add(new Pair<>(getInformationCharSequence("199*****571 购买了", "超级恢复"), "8分钟前"));
  519. informationList.add(new Pair<>(getInformationCharSequence("150*****170 购买了", "超级恢复"), "11分钟前"));
  520. break;
  521. case MemberType.APP_IMAGE_CLEAN:
  522. informationList.add(new Pair<>(getInformationCharSequence("163*****754 购买了", "图片清除(永久)"), "2分钟前"));
  523. informationList.add(new Pair<>(getInformationCharSequence("195*****346 购买了", "图片清除(永久)"), "3分钟前"));
  524. informationList.add(new Pair<>(getInformationCharSequence("193*****054 购买了", "图片清除(年)"), "6分钟前"));
  525. informationList.add(new Pair<>(getInformationCharSequence("131*****571 购买了", "图片清除(永久)"), "8分钟前"));
  526. informationList.add(new Pair<>(getInformationCharSequence("148*****117 购买了", "图片清除(年)"), "11分钟前"));
  527. break;
  528. }
  529. return informationList;
  530. }
  531. public CharSequence getInformationCharSequence(String prefix, String suffix) {
  532. return new SpannableStringBuilder()
  533. .append(prefix)
  534. .append(String.format("%s", suffix), new ForegroundColorSpan(Color.parseColor("#FFF187")), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  535. }
  536. }