paySlice.js 16 KB

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