PayStore.ts 3.3 KB

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