paySlice.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585
  1. import {createSlice} from "@reduxjs/toolkit";
  2. import {REQ_STATUS} from "@api/config";
  3. import {
  4. buildReqReducer,
  5. reqChangePayPass,
  6. reqCPFSave,
  7. reqFirstPayConfig,
  8. reqFirstPayMulti,
  9. reqForgetPayPass, reqGameInfo,
  10. reqGetAccountsPayInfo,
  11. reqGetSecond,
  12. reqMexWithdrawSetInfo,
  13. reqPaymentOrder,
  14. reqPaymentOrderQR,
  15. reqPayOrderList,
  16. reqRechargeConfig,
  17. reqRuWithdrawSetInfo,
  18. reqWithdrawBaseInfo,
  19. reqWithdrawInfo,
  20. reqWithdrawPayout,
  21. reqWithdrawRecord,
  22. reqWithdrawSetInfo,
  23. reqWithdrawTax
  24. } from "@features/api";
  25. import {getHttpMsg} from "@utils/helpers";
  26. import {toast} from "react-toastify";
  27. const i18n=global.i18n;
  28. const objInfo={}
  29. const reducerRechargeConfig=(state,action,arg)=>{
  30. let payload=action.payload;
  31. if (payload!=null&&payload.code===200){
  32. let data=payload.data;
  33. if (data.list){
  34. state.config=data.list;
  35. state.showBonus=data.bonus_show;
  36. state.cpfFirst=data.cpf_first;
  37. // state.showBonus=true;
  38. }
  39. }
  40. }
  41. const rechargeConfigStatus=(state,status,arg)=>{
  42. state.status.RechargeConfig=status;
  43. }
  44. const reducerFirstPayConfig=(state,action,arg)=>{
  45. let payload=action.payload;
  46. // payload={
  47. // "data": {
  48. // "first_pay": {
  49. // "id": "1017",
  50. // "money": "10",
  51. // "gear": "[{\"id\":\"28\",\"name\":\"PIX\\u76f4\\u8fde\",\"status\":1,\"type\":3}]",
  52. // "status": "1",
  53. // "created_at": "2022-06-09 13:57:58.000",
  54. // "favorable_price": 20,
  55. // "image": "11",
  56. // "give": "10",
  57. // "first_pay": "1",
  58. // "name": "\u9996\u5145\u6863\u4f4d\u914d\u7f6e",
  59. // "gift_id": "201",
  60. // "channels": "-1"
  61. // },
  62. // "recomendar_recharge": "7"
  63. // },
  64. // "result": "",
  65. // "msg": "success",
  66. // "code": 200
  67. // };
  68. if (payload!=null&&payload.code===200){
  69. let data=payload.data;
  70. state.firstconfig=data;
  71. }
  72. }
  73. const firstPayConfigStatus=(state,status,arg)=>{
  74. state.status.FirstPayConfig=status;
  75. }
  76. const reducerGetAccountsPayInfo=(state,action,arg)=>{
  77. let payload=action.payload;
  78. if (payload!=null&&payload.code===200){
  79. let data=payload.data;
  80. state.payconfig=data;
  81. }
  82. }
  83. const getAccountsPayInfoStatus=(state,status,arg)=>{
  84. state.status.GetAccountsPayInfo=status;
  85. }
  86. const reducerPaymentOrder=(state,action,arg)=>{
  87. let payload=action.payload;
  88. // payload={
  89. // "data": {
  90. // "content": "00020101021226830014br.gov.bcb.pix2561pix.delbank.com.br\/v1\/qrcode\/vcharge22e43499260b46a9a5f303ca55204000053039865802BR5907DELBANK6007ARACAJU62070503***6304F3DF",
  91. // "money": 10,
  92. // "prdOrdNo": "BR5050013857473344515256"
  93. // },
  94. // "result": "",
  95. // "msg": "success",
  96. // "code": 200
  97. // };
  98. if (payload!=null&&payload.code===200){
  99. let data=payload.data;
  100. data.createAt=Date.now();
  101. if(data.deadline==null)data.deadline=15*60;
  102. data.status="pending";
  103. // data.qr_link="https://qr.nspk.ru/AS10003P3RH0LJ2A9ROO038L6NT5RU1M?type=01&bank=000000000001&sum=10000&cur=RUB&crc=F3D0";
  104. data.arg=Object.assign({},arg,{callback:null,user:null});
  105. state.currPayOrder=data;
  106. if (arg.callback!=null)arg.callback();
  107. }
  108. else
  109. {
  110. if (payload!=null){
  111. let msg=getHttpMsg(payload);
  112. toast.error(msg);
  113. }
  114. }
  115. }
  116. const paymentOrderStatus=(state,status,arg)=>{
  117. state.status.PaymentOrder=status;
  118. }
  119. const paymentOrderQRStatus=(state,status,arg)=>{
  120. state.status.PaymentOrderQR=status;
  121. }
  122. const reducerPayOrderList=(state,action,arg)=>{
  123. let payload=action.payload;
  124. if (payload!=null&&payload.code===200){
  125. let data=payload.data;
  126. if (data){
  127. state.payOrderList=data.data;
  128. }
  129. }
  130. }
  131. const payOrderListStatus=(state,status,arg)=>{
  132. state.status.PayOrderList=status;
  133. }
  134. const reducerWithdrawTax=(state,action,arg)=>{
  135. let payload=action.payload;
  136. if (payload&&payload.code===200){
  137. let data=payload.data;
  138. if (data){
  139. state.WithDrawTax=data.WithDrawTax;
  140. }
  141. }
  142. }
  143. const reducerWithdrawBaseInfo=(state,action,arg)=>{
  144. let payload=action.payload;
  145. if (payload&&payload.code===200){
  146. let data=payload.data;
  147. if (data){
  148. state.withdrawBaseInfo=data;
  149. }
  150. }
  151. let callback=arg;
  152. if (callback!=null){
  153. callback(payload);
  154. }
  155. }
  156. const withdrawBaseInfoStatus=(state,status,arg)=>{
  157. state.status.WithdrawBaseInfo=status;
  158. }
  159. const reducerWithdrawInfo=(state,action,arg)=>{
  160. let payload=action.payload;
  161. if (payload&&payload.code===200){
  162. let data=payload.data;
  163. if (data){
  164. if (data.info)state.withdrawInfo=data.info;
  165. }
  166. }
  167. }
  168. const withdrawInfoStatus=(state,status,arg)=>{
  169. state.status.WithdrawInfo=status;
  170. }
  171. const reducerChangePayPass=(state,action,arg)=>{
  172. let payload=action.payload;
  173. let msg=getHttpMsg(payload);
  174. if (payload&&payload.code===200){
  175. let data=payload.data;
  176. if (data){
  177. // state.withdrawInfo=data;
  178. }
  179. if (arg){
  180. if (arg.newpassword!=null){
  181. global.setWDPass(arg.newpassword);
  182. }
  183. }
  184. toast.success(msg);
  185. }
  186. else{
  187. toast.error(msg);
  188. }
  189. if (arg&&arg.callback!=null){
  190. arg.callback(payload);
  191. }
  192. }
  193. const changePayPassStatus=(state,status,arg)=>{
  194. state.status.ChangePayPass=status;
  195. }
  196. const reducerWithdrawRecord=(state,action,arg)=>{
  197. let payload=action.payload;
  198. if (payload&&payload.code===200){
  199. let data=payload.data;
  200. if (data&&data.data){
  201. state.withdrawRecord=data.data;
  202. }
  203. }
  204. }
  205. const withdrawRecordStatus=(state,status,arg)=>{
  206. state.status.WithdrawRecoard=status;
  207. }
  208. const reducerWithdrawSetInfo=(state,action,arg)=>{
  209. let payload=action.payload;
  210. let msg=payload.msg;
  211. if (msg==null)msg="";
  212. else msg=getHttpMsg(payload);
  213. if (payload&&payload.code===200){
  214. let data=payload.data;
  215. toast.success(msg);
  216. }
  217. else {
  218. toast.error(msg);
  219. }
  220. if (arg&&arg.callback!=null){
  221. arg.callback(payload);
  222. }
  223. }
  224. const withdrawSetInfoStatus=(state,status,arg)=>{
  225. state.status.WithdrawSetInfo=status;
  226. }
  227. const reducerWithdrawPayout=(state,action,arg)=>{
  228. let payload=action.payload;
  229. let msg=getHttpMsg(payload);
  230. if (payload&&payload.code===200){
  231. // toast.success(msg);
  232. toast.success(i18n.t("withdraw.tip.success"));
  233. }
  234. else
  235. {
  236. toast.error(msg);
  237. }
  238. if (arg&&arg.callback!=null){
  239. arg.callback(payload);
  240. }
  241. }
  242. const withdrawPayoutStatus=(state,status,arg)=>{
  243. state.status.WithdrawPayout=status;
  244. }
  245. const reducerSaveCPF=(state,action,arg)=>{
  246. let payload=action.payload;
  247. let msg=getHttpMsg(payload);
  248. if (payload&&payload.code===200){
  249. state.cpfFirst=false;
  250. toast.success(msg);
  251. }
  252. else
  253. {
  254. toast.error(msg);
  255. }
  256. if (arg&&arg.callback!=null){
  257. arg.callback(payload);
  258. }
  259. }
  260. const saveCPFStatus=(state,status,arg)=>{
  261. state.status.SaveCPF=status;
  262. }
  263. //FirstPayMulti
  264. const clearCDTimer=()=>{
  265. if (objInfo.cdTimer!=null){
  266. clearInterval(objInfo.cdTimer);
  267. objInfo.cdTimer=null;
  268. }
  269. }
  270. const checkPayMultiLeftTime=(data)=>{
  271. clearCDTimer();
  272. if (data==null)return;
  273. let leftitem=data.leftitem;
  274. if (leftitem!=null){
  275. let timeleft=leftitem.timeleft;
  276. if (timeleft>0){
  277. objInfo.cdTimer=setInterval(()=>{
  278. timeleft--;
  279. if (timeleft<=0){
  280. global.dispatch(reqFirstPayMulti());
  281. clearCDTimer();
  282. }
  283. else
  284. {
  285. global.dispatch(updateMultiCD(timeleft));
  286. }
  287. },1000);
  288. }
  289. }
  290. }
  291. const reducerFirstPayMulti=(state,action,arg)=>{
  292. let payload=action.payload;
  293. if (payload!=null&&payload.code===200){
  294. let data=payload.data;
  295. // data={
  296. // "leftitem":{
  297. // "gift_id": "201",
  298. // "money": "10",
  299. // "give": "10",
  300. // "favorable_price": "10",
  301. // "second_give": "5",
  302. // "timeleft":0,
  303. // },
  304. // "default": 1
  305. // }
  306. state.firstPayMulti=data;
  307. checkPayMultiLeftTime(data);
  308. }
  309. }
  310. const firstPayMultiStatus=(state,status,arg)=>{
  311. state.status.FirstPayMulti=status;
  312. }
  313. const reducerGetSecond=(state,action,arg)=>{
  314. let payload=action.payload;
  315. if (payload!=null&&payload.code===200){
  316. toast.success(i18n.t("firstPay.claim_success"));
  317. state.firstPayMulti=null;
  318. }
  319. else
  320. {
  321. let msg=getHttpMsg(payload);
  322. toast.error(msg);
  323. }
  324. if (arg&&arg.callback!=null){
  325. arg.callback(payload);
  326. }
  327. }
  328. const getSecondStatus=(state,status,arg)=>{
  329. state.status.GetSecond=status;
  330. }
  331. //FirstPayMulti
  332. //bonus pack
  333. const clearBonusPackCDTimer=()=>{
  334. if (objInfo.bpCDTimer!=null){
  335. clearInterval(objInfo.bpCDTimer);
  336. objInfo.bpCDTimer=null;
  337. }
  338. }
  339. const checkBonusPackLeftTime=(data)=>{
  340. clearBonusPackCDTimer();
  341. if (data==null)return;
  342. let timeleft=data.timeleft;
  343. if (timeleft>0){
  344. objInfo.bpCDTimer=setInterval(()=>{
  345. timeleft--;
  346. if (timeleft<=0){
  347. global.dispatch(reqGameInfo());
  348. clearBonusPackCDTimer();
  349. }
  350. else
  351. {
  352. global.dispatch(updateBonusPackCD(timeleft));
  353. }
  354. },1000);
  355. }
  356. }
  357. //bonus pack
  358. export const Pay=createSlice({
  359. name: 'pay',
  360. initialState: {
  361. status:{
  362. RechargeConfig:REQ_STATUS.NONE,
  363. FirstPayConfig:REQ_STATUS.NONE,
  364. GetAccountsPayInfo:REQ_STATUS.NONE,
  365. PaymentOrder:REQ_STATUS.NONE,
  366. ChangePayPass:REQ_STATUS.NONE,
  367. PayOrderList:REQ_STATUS.NONE,
  368. WithdrawRecoard:REQ_STATUS.NONE,
  369. WithdrawBaseInfo:REQ_STATUS.NONE,
  370. WithdrawInfo:REQ_STATUS.NONE,
  371. WithdrawSetInfo:REQ_STATUS.NONE,
  372. WithdrawPayout:REQ_STATUS.NONE,
  373. ForgetPayPass:REQ_STATUS.NONE,
  374. SaveCPF:REQ_STATUS.NONE,
  375. PaymentOrderQR:REQ_STATUS.NONE,
  376. FirstPayMulti:REQ_STATUS.NONE,
  377. GetSecond:REQ_STATUS.NONE,
  378. },
  379. config:[],
  380. payconfig:null,
  381. firstconfig:null,
  382. payType:null,
  383. currPayOrder:null,
  384. WithDrawTax:4,
  385. withdrawBaseInfo:null,
  386. withdrawInfo:null,
  387. payOrderList:null,
  388. withdrawRecord:null,
  389. changePayPassType:0,
  390. showBonus:false,
  391. cpfFirst:false,
  392. firstPayMulti:null,
  393. bonusPack:null
  394. },
  395. reducers: {
  396. updatePayFinish:((state, action) => {
  397. if (state.currPayOrder!=null){
  398. state.currPayOrder.status="success";
  399. //充值完成 message={Golds:12.xx,PayNum:10}
  400. toast.success(i18n.t("deposit.order_info.success"));
  401. }
  402. }),
  403. setChangePayPassType:((state, action) => {
  404. state.changePayPassType=action.payload;
  405. }),
  406. onSliceChangeUser:((state, action) => {
  407. state.isInit=false;
  408. }),
  409. updateMultiCD:((state, action) => {
  410. let payload=action.payload;
  411. if (payload!=null){
  412. if (state.firstPayMulti!=null&&state.firstPayMulti.leftitem!=null){
  413. state.firstPayMulti.leftitem.timeleft=payload;
  414. }
  415. }
  416. }),
  417. updateBonusPack:((state, action) => {
  418. let payload=action.payload;
  419. if (payload!=null){
  420. state.bonusPack=payload.bonus_pack;
  421. checkBonusPackLeftTime(payload.bonus_pack);
  422. }
  423. }),
  424. updateBonusPackCD:((state, action) => {
  425. let payload=action.payload;
  426. if (payload!=null){
  427. if (state.bonusPack!=null){
  428. state.bonusPack.timeleft=payload;
  429. }
  430. }
  431. })
  432. },
  433. extraReducers: (builder) => {
  434. buildReqReducer(builder,reqRechargeConfig,reducerRechargeConfig,rechargeConfigStatus);
  435. buildReqReducer(builder,reqFirstPayConfig,reducerFirstPayConfig,firstPayConfigStatus);
  436. buildReqReducer(builder,reqGetAccountsPayInfo,reducerGetAccountsPayInfo,getAccountsPayInfoStatus);
  437. buildReqReducer(builder,reqPaymentOrder,reducerPaymentOrder,paymentOrderStatus);
  438. buildReqReducer(builder,reqWithdrawTax,reducerWithdrawTax,null);
  439. buildReqReducer(builder,reqWithdrawBaseInfo,reducerWithdrawBaseInfo,withdrawBaseInfoStatus);
  440. buildReqReducer(builder,reqWithdrawInfo,reducerWithdrawInfo,withdrawInfoStatus);
  441. buildReqReducer(builder,reqChangePayPass,reducerChangePayPass,changePayPassStatus);
  442. buildReqReducer(builder,reqPayOrderList,reducerPayOrderList,payOrderListStatus);
  443. buildReqReducer(builder,reqWithdrawRecord,reducerWithdrawRecord,withdrawRecordStatus);
  444. buildReqReducer(builder,reqWithdrawSetInfo,reducerWithdrawSetInfo,withdrawSetInfoStatus);
  445. buildReqReducer(builder,reqWithdrawPayout,reducerWithdrawPayout,withdrawPayoutStatus);
  446. buildReqReducer(builder,reqForgetPayPass,reducerChangePayPass,changePayPassStatus);
  447. buildReqReducer(builder,reqMexWithdrawSetInfo,reducerWithdrawSetInfo,withdrawSetInfoStatus);
  448. buildReqReducer(builder,reqCPFSave,reducerSaveCPF,saveCPFStatus);
  449. buildReqReducer(builder,reqRuWithdrawSetInfo,reducerWithdrawSetInfo,withdrawSetInfoStatus);
  450. buildReqReducer(builder,reqPaymentOrderQR,reducerPaymentOrder,paymentOrderQRStatus);
  451. buildReqReducer(builder,reqFirstPayMulti,reducerFirstPayMulti,firstPayMultiStatus);
  452. buildReqReducer(builder,reqGetSecond,reducerGetSecond,getSecondStatus);
  453. },
  454. })
  455. export const {updatePayFinish,setChangePayPassType,updateMultiCD,updateBonusPack,updateBonusPackCD} = Pay.actions;
  456. export const getConfig=(state)=>{
  457. return state.pay.config;
  458. }
  459. export const getOFirstPay=(state)=>{
  460. return state.pay.firstconfig;
  461. }
  462. export const getFirstPay=(state)=>{
  463. let firstconfig=state.pay.firstconfig;
  464. let config=state.pay.config;
  465. let order=null;
  466. if (firstconfig!=null){
  467. let first_pay=firstconfig.first_pay;
  468. let recomendar_recharge=firstconfig.recomendar_recharge;
  469. if (first_pay!=null){
  470. let gear=JSON.parse(first_pay.gear);
  471. if (gear)gear=gear[0];
  472. order={
  473. goodsName:"firstpay",
  474. goodsPrice:first_pay.money,
  475. GiftsID: 201,
  476. cpf_first:0,
  477. give:first_pay.give,
  478. gear:gear
  479. }
  480. }
  481. else
  482. {
  483. for (let i = 0; i <config.length ; i++) {
  484. const elem = config[i];
  485. if (elem.id===recomendar_recharge){
  486. let gear=JSON.parse(elem.gear);
  487. if (gear)gear=gear[0];
  488. order={
  489. goodsName: "chip",
  490. goodsPrice: elem.money,
  491. GiftsID:elem.gift_id,
  492. cpf_first:0,
  493. give:elem.give,
  494. gear:gear
  495. }
  496. break;
  497. }
  498. }
  499. }
  500. }
  501. return order;
  502. }
  503. export const getPaymentOrderStatus=(state)=>{
  504. return state.pay.status.PaymentOrder;
  505. }
  506. export const getCurrPayOrder=(state)=>{
  507. return state.pay.currPayOrder;
  508. }
  509. export const getWithdrawBaseInfo=(state)=>{
  510. return state.pay.withdrawBaseInfo;
  511. }
  512. export const getWithdrawInfo=(state)=>{
  513. return state.pay.withdrawInfo;
  514. }
  515. export const getChangePayPassStatus=(state)=>{
  516. return state.pay.status.ChangePayPass;
  517. }
  518. export const getPayOrderStatus=(state)=>{
  519. return state.pay.status.PayOrderList;
  520. }
  521. export const getPayOrderList=(state)=>{
  522. return state.pay.payOrderList;
  523. }
  524. export const getWithdrawRecordStatus=(state)=>{
  525. return state.pay.status.WithdrawRecoard;
  526. }
  527. export const getWithdrawRecord=(state)=>{
  528. return state.pay.withdrawRecord;
  529. }
  530. export const getWithdrawTax=(state)=>{
  531. return state.pay.WithDrawTax;
  532. }
  533. export const getWDBaseInfoStatus=(state)=>{
  534. return state.pay.status.WithdrawBaseInfo;
  535. }
  536. export const getWDSetInfoStatus=(state)=>{
  537. return state.pay.status.WithdrawSetInfo;
  538. }
  539. export const getWDInfoStatus=(state)=>{
  540. return state.pay.status.WithdrawInfo;
  541. }
  542. export const getChangePayPassType=(state)=>{
  543. return state.pay.changePayPassType;
  544. }
  545. export const getWDPayoutStatus=(state)=>{
  546. return state.pay.status.WithdrawPayout;
  547. }
  548. export const getShowBonus=(state)=>{
  549. return state.pay.showBonus;
  550. }
  551. export const getPayConfigStatus=(state)=>{
  552. return state.pay.status.RechargeConfig;
  553. }
  554. export const getForgetPayPassStatus=(state)=>{
  555. return state.pay.status.ForgetPayPass;
  556. }
  557. export const getCPFFirst=(state)=>{
  558. return state.pay.cpfFirst;
  559. }
  560. export const getSaveCPFStatus=(state)=>{
  561. return state.pay.status.SaveCPF;
  562. }
  563. export const getPaymentOrderQRStatus=(state)=>{
  564. return state.pay.status.PaymentOrderQR;
  565. }
  566. export const getFirstPayMulti=(state)=>{
  567. return state.pay.firstPayMulti;
  568. }
  569. export const getGetSecondStatus=(state)=>{
  570. return state.pay.status.GetSecond;
  571. }
  572. //bonus pack
  573. export const getBonusPack=(state)=>{
  574. return state.pay.bonusPack;
  575. }
  576. export default Pay.reducer;
  577. export const reqPayConfig=(dispatch,userInfo)=>{
  578. dispatch(reqRechargeConfig());
  579. dispatch(reqFirstPayConfig(userInfo.UserID));
  580. // dispatch(reqGetAccountsPayInfo(userInfo.UserID));
  581. // dispatch(reqWithdrawTax());
  582. }