PayStore.ts 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. import {
  2. APP_FIRST_PACK,
  3. APP_FIRST_PACK_VISIBLE,
  4. APP_PAYMENT_ORDER,
  5. APP_PAY_ORDER_LIST,
  6. APP_RECHARGE_CONFIG,
  7. APP_WEEKLY_PASS,
  8. } from '@scripts/api';
  9. import { success } from '@scripts/api/ApiHelper';
  10. import { ApiEnvelope, Http } from '@scripts/request';
  11. import {
  12. IFirstPack,
  13. IFirstPackVisible,
  14. IGoodsConfig,
  15. IPaymentOrder,
  16. IPaymentOrderRequest,
  17. IPayOrderItem,
  18. IPayOrderPageData,
  19. IRechargeConfigData,
  20. } from './data';
  21. function formatGoods(list: IGoodsConfig[], callbackfn?: (item: IGoodsConfig, index: number) => void) {
  22. list.forEach((goods, index) => {
  23. goods.gears = JSON.parse(goods.gear);
  24. goods.cp = Number(goods.cp);
  25. goods.cp_reward = Number(goods.cp_reward);
  26. goods.cp_reward_display_percent = Number(goods.cp_reward_display_percent);
  27. goods.gc = Number(goods.gc);
  28. goods.gc_reward = Number(goods.gc_reward);
  29. goods.gc_reward_display_percent = Number(goods.gc_reward_display_percent);
  30. goods.gc_vip_reward = Number(goods.gc_vip_reward);
  31. goods.gc_vip_reward_display_percent = Number(goods.gc_vip_reward_display_percent);
  32. goods.sc = Number(goods.sc);
  33. goods.sc_reward = Number(goods.sc_reward);
  34. goods.sc_reward_display_percent = Number(goods.sc_reward_display_percent);
  35. callbackfn && callbackfn(goods, index);
  36. })
  37. return list;
  38. }
  39. class PayStore {
  40. private _config: IGoodsConfig[] = [];
  41. private _payOrderList: IPayOrderItem[] = [];
  42. private _firstPackVisible = false;
  43. public get config() { return this._config; }
  44. public get payOrderList() { return this._payOrderList; }
  45. public get firstPackVisible() { return this._firstPackVisible; }
  46. async reqRechargeConfig() {
  47. const res = await Http.call<IRechargeConfigData>(APP_RECHARGE_CONFIG);
  48. if (success(res) && res.data) {
  49. let icon_id = 1;
  50. const goods_list = Array.isArray(res.data.list) ? res.data.list : [];
  51. this._config = formatGoods(goods_list, goods => {
  52. goods.icon_id = icon_id;
  53. icon_id++;
  54. })
  55. return true
  56. }
  57. return false;
  58. }
  59. async reqPaymentOrder(params: IPaymentOrderRequest): Promise<boolean> {
  60. const res = await Http.call<Record<string, unknown>>(APP_PAYMENT_ORDER, params as any);
  61. if (success(res) && res.data && !Array.isArray(res.data)) {
  62. return true;
  63. }
  64. return false;
  65. }
  66. async reqPayOrderList(page = 1, pageSize = 10) {
  67. const res = await Http.call<IPayOrderPageData>(APP_PAY_ORDER_LIST, { page, pageSize });
  68. if (success(res) && res.data) {
  69. this._payOrderList = Array.isArray(res.data.data) ? res.data.data : [];
  70. return true;
  71. }
  72. return false;
  73. }
  74. /** 首冲入口是否可见 */
  75. async reqFirstPackVisible() {
  76. const res = await Http.call<IFirstPackVisible>(APP_FIRST_PACK_VISIBLE);
  77. if (success(res)) {
  78. this._firstPackVisible = res.data.show;
  79. return res.data.show;
  80. }
  81. return false;
  82. }
  83. async reqFirstPackInfo() {
  84. const res = await Http.call<IFirstPack>(APP_FIRST_PACK);
  85. if (success(res)) {
  86. formatGoods(res.data.list);
  87. }
  88. return res;
  89. }
  90. async reqWeeklyPass() {
  91. const res = await Http.call(APP_WEEKLY_PASS);
  92. }
  93. clear() {
  94. this._payOrderList = [];
  95. }
  96. }
  97. export const payStore = new PayStore();