PayStore.ts 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  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_WITHDRAW_BASE_INFO,
  8. APP_WITHDRAW_PAYOUT,
  9. APP_WITHDRAW_RECORD,
  10. APP_WITHDRAW_SET_INFO,
  11. } from '@scripts/api';
  12. import { success } from '@scripts/api/ApiHelper';
  13. import { ApiEnvelope, Http } from '@scripts/request';
  14. import {
  15. IFirstPack,
  16. IFirstPackVisible,
  17. IGoodsConfig,
  18. IPaymentOrder,
  19. IPaymentOrderRequest,
  20. IPayOrderItem,
  21. IPayOrderPageData,
  22. IRechargeConfigData,
  23. IWithdrawBaseInfo,
  24. IWithdrawBaseInfoRequest,
  25. IWithdrawPayoutRequest,
  26. IWithdrawRecordItem,
  27. IWithdrawRecordPageData,
  28. IWithdrawRecordRequest,
  29. IWithdrawSetInfoRequest,
  30. } from './data';
  31. function formatGoods(list: IGoodsConfig[], callbackfn?: (item: IGoodsConfig, index: number) => void) {
  32. list.forEach((goods, index) => {
  33. goods.gears = JSON.parse(goods.gear);
  34. goods.cp = Number(goods.cp);
  35. goods.cp_reward = Number(goods.cp_reward);
  36. goods.cp_reward_display_percent = Number(goods.cp_reward_display_percent);
  37. goods.gc = Number(goods.gc);
  38. goods.gc_reward = Number(goods.gc_reward);
  39. goods.gc_reward_display_percent = Number(goods.gc_reward_display_percent);
  40. goods.sc = Number(goods.sc);
  41. goods.sc_reward = Number(goods.sc_reward);
  42. goods.sc_reward_display_percent = Number(goods.sc_reward_display_percent);
  43. callbackfn && callbackfn(goods, index);
  44. })
  45. return list;
  46. }
  47. class PayStore {
  48. private _config: IGoodsConfig[] = [];
  49. private _payOrderList: IPayOrderItem[] = [];
  50. private _withdrawBaseInfo: IWithdrawBaseInfo = null;
  51. private _withdrawRecord: IWithdrawRecordItem[] = [];
  52. private _firstPackVisible = false;
  53. public get config() { return this._config; }
  54. public get payOrderList() { return this._payOrderList; }
  55. public get withdrawBaseInfo() { return this._withdrawBaseInfo; }
  56. public get withdrawRecord() { return this._withdrawRecord; }
  57. public get firstPackVisible() { return this._firstPackVisible; }
  58. async reqRechargeConfig() {
  59. const res = await Http.call<IRechargeConfigData>(APP_RECHARGE_CONFIG);
  60. if (success(res) && res.data) {
  61. let icon_id = 1;
  62. const goods_list = Array.isArray(res.data.list) ? res.data.list : [];
  63. this._config = formatGoods([...goods_list, ...goods_list], goods => {
  64. goods.icon_id = icon_id;
  65. icon_id++;
  66. })
  67. return true
  68. }
  69. return false;
  70. }
  71. async reqPaymentOrder(params: IPaymentOrderRequest): Promise<boolean> {
  72. const res = await Http.call<Record<string, unknown>>(APP_PAYMENT_ORDER, params as any);
  73. if (success(res) && res.data && !Array.isArray(res.data)) {
  74. return true;
  75. }
  76. return false;
  77. }
  78. async reqPayOrderList(page = 1, pageSize = 10) {
  79. const res = await Http.call<IPayOrderPageData>(APP_PAY_ORDER_LIST, { page, pageSize });
  80. if (success(res) && res.data) {
  81. this._payOrderList = Array.isArray(res.data.data) ? res.data.data : [];
  82. return true;
  83. }
  84. return false;
  85. }
  86. /** 首冲入口是否可见 */
  87. async reqFirstPackVisible() {
  88. const res = await Http.call<IFirstPackVisible>(APP_FIRST_PACK_VISIBLE);
  89. if (success(res)) {
  90. this._firstPackVisible = res.data.show;
  91. return res.data.show;
  92. }
  93. return false;
  94. }
  95. async reqFirstPackInfo() {
  96. const res = await Http.call<IFirstPack>(APP_FIRST_PACK);
  97. if (success(res)) {
  98. formatGoods(res.data.list);
  99. }
  100. return res;
  101. }
  102. async reqWithdrawBaseInfo(arg: IWithdrawBaseInfoRequest = {}): Promise<boolean> {
  103. const res = await Http.call<IWithdrawBaseInfo>(APP_WITHDRAW_BASE_INFO, {
  104. paypass: arg.paypass || '',
  105. });
  106. if (success(res) && res.data) {
  107. this._withdrawBaseInfo = this.parseWithdrawBaseInfo(res.data);
  108. return true;
  109. }
  110. return false;
  111. }
  112. async reqWithdrawRecord(arg: IWithdrawRecordRequest = {}) {
  113. const params: Record<string, unknown> = {
  114. paypass: arg.paypass || '',
  115. };
  116. if (arg.score_type !== undefined) params.score_type = arg.score_type;
  117. if (arg.sort_by !== undefined) params.sort_by = arg.sort_by;
  118. if (arg.sort !== undefined) params.sort = arg.sort;
  119. const res = await Http.call<IWithdrawRecordPageData>(APP_WITHDRAW_RECORD, params);
  120. if (success(res) && res.data) {
  121. this._withdrawRecord = Array.isArray(res.data.data) ? res.data.data : [];
  122. return true;
  123. }
  124. return false;
  125. }
  126. async reqWithdrawSetInfo(arg: IWithdrawSetInfoRequest): Promise<boolean> {
  127. const params = {
  128. paypass: arg.paypass || '',
  129. cbPixType: arg.PixType,
  130. bank: arg.bank,
  131. account: arg.account,
  132. userName: arg.userName,
  133. phone: arg.phone,
  134. PAN: arg.PAN,
  135. email: arg.email,
  136. IFSC: arg.IFSC,
  137. adhaar: arg.adhaar,
  138. branceBank: arg.branceBank,
  139. PixNum: arg.PixNum,
  140. code: arg.code || '',
  141. };
  142. const res = await Http.call(APP_WITHDRAW_SET_INFO, params);
  143. if (success(res)) {
  144. await this.reqWithdrawBaseInfo({ paypass: arg.paypass });
  145. return true;
  146. }
  147. return false;
  148. }
  149. async reqWithdrawPayout(arg: IWithdrawPayoutRequest): Promise<boolean> {
  150. const res = await Http.call(APP_WITHDRAW_PAYOUT, {
  151. paypass: arg.paypass || '',
  152. score: arg.score,
  153. });
  154. if (success(res)) {
  155. await this.reqWithdrawBaseInfo({ paypass: arg.paypass });
  156. return true;
  157. }
  158. return false;
  159. }
  160. clear() {
  161. this._payOrderList = [];
  162. this._withdrawBaseInfo = null;
  163. this._withdrawRecord = [];
  164. }
  165. private parseWithdrawBaseInfo(data: IWithdrawBaseInfo): IWithdrawBaseInfo {
  166. const info = { ...data };
  167. if (Number(info.SumCanExchange) < 0) info.SumCanExchange = 0;
  168. const defaultCooldown = Number(info.withdraw_info_cooldown_seconds || 0);
  169. const cashappCooldown = Number(
  170. info.withdraw_info_precheck?.cashapp?.cooldown_seconds ?? defaultCooldown,
  171. );
  172. const paypalCooldown = Number(
  173. info.withdraw_info_precheck?.paypal?.cooldown_seconds ?? defaultCooldown,
  174. );
  175. info.cashapp_update_cd = cashappCooldown > 0 ? Date.now() + cashappCooldown * 1000 : 0;
  176. info.paypal_update_cd = paypalCooldown > 0 ? Date.now() + paypalCooldown * 1000 : 0;
  177. info.lastUpdateTs = Date.now() - Number(info.withdraw_info_update_time_pass || 0) * 1000;
  178. return info;
  179. }
  180. }
  181. export const payStore = new PayStore();