checkInSlice.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. import {createSlice} from "@reduxjs/toolkit";
  2. import {buildReqReducer, reqAgentCheck, reqCheckinCheck, reqCheckinGet} from "@features/api";
  3. import {REQ_STATUS} from "@api/config";
  4. import {formatCash, getHttpMsg} from "@utils/helpers";
  5. import {toast} from "react-toastify";
  6. const i18n=global.i18n;
  7. const reducerCheckinCheck=(state,action,arg)=>{
  8. let payload=action.payload;
  9. if (payload!=null&&payload.code===200){
  10. let data=payload.data;
  11. if (data){
  12. let config=data.config;
  13. let RewardDay=[];
  14. let RewardScore=[];
  15. let nDayNumber=-1;
  16. let cbRecord=[];
  17. if (config){
  18. for (let i = 0; i < config.length; i++) {
  19. let item=config[i];
  20. let DayNumber=parseInt(item.DayNumber);
  21. let RecordDay=parseInt(data.RecordDay.substring(i,i+1))>0?1:0;
  22. let RewScore=parseInt(formatCash(item.RewardScore,true));
  23. let SignInDay=parseInt(item.SignInDay);
  24. RewardDay.push(DayNumber);
  25. RewardScore.push(RewScore);
  26. cbRecord.push(RecordDay);
  27. nDayNumber=SignInDay;
  28. }
  29. }
  30. // nDayNumber=Number(data.NextDayNumber)
  31. let LastDate=0;
  32. let NextGetTime=0;
  33. let isCanCheckIn=0;
  34. if (data.LastDate!=null){
  35. LastDate=data.LastDate;
  36. LastDate=LastDate.split(".").shift();
  37. LastDate=Date.parse(LastDate+"-03:00");
  38. NextGetTime=LastDate+86400000;
  39. }
  40. let now=Date.now();
  41. if (now-NextGetTime>0){
  42. isCanCheckIn=1;
  43. }
  44. let NextDayNumber=Number(data.NextDayNumber);
  45. if (NextDayNumber>7){
  46. NextDayNumber=7
  47. isCanCheckIn=0;
  48. }
  49. state.checkInData={
  50. RewardDay,
  51. RewardScore,
  52. cbRecord,
  53. nDayNumber,
  54. LastDate,
  55. NextDayNumber
  56. }
  57. state.NextGetTime=NextGetTime;
  58. state.isCanCheckIn=isCanCheckIn;
  59. let callback=arg;
  60. if (callback!=null)callback(isCanCheckIn);
  61. }
  62. }
  63. }
  64. const checkinCheckStatus=(state,status,arg)=>{
  65. state.status.CheckInCheck=status;
  66. }
  67. const reducerCheckinGet=(state,action,arg)=>{
  68. let payload=action.payload;
  69. let msg=getHttpMsg(payload);
  70. if (payload!=null&&payload.code===200){
  71. let data=payload.data;
  72. // global.showDropCoins();
  73. msg=i18n.t("CheckIn.get_success");
  74. if(msg&&msg!=="")toast.success(msg);
  75. }
  76. else {
  77. if(msg&&msg!=="")toast.error(msg);
  78. }
  79. if (arg.callback)arg.callback(payload);
  80. }
  81. const checkinGetStatus=(state,status,arg)=>{
  82. state.status.CheckInGet=status;
  83. }
  84. export const CheckInSlice = createSlice({
  85. name: 'checkIn',
  86. initialState: {
  87. checkInData:{
  88. // nDayNumber:2,
  89. // cbRecord:[1],
  90. // RewardDay:[1,2,3,4,5,6,7],
  91. // RewardScore:[1,1,1,2,2,2,2]
  92. nDayNumber:-1,
  93. cbRecord:[],
  94. RewardDay:[],
  95. RewardScore:[],
  96. LastDate:0,
  97. },
  98. NextGetTime:0,
  99. isCanCheckIn:0,
  100. status:{
  101. CheckInCheck:REQ_STATUS.NONE,
  102. CheckInGet:REQ_STATUS.NONE,
  103. }
  104. },
  105. reducers: {
  106. },
  107. extraReducers: (builder) => {
  108. buildReqReducer(builder,reqCheckinCheck,reducerCheckinCheck,checkinCheckStatus);
  109. buildReqReducer(builder,reqCheckinGet,reducerCheckinGet,checkinGetStatus);
  110. },
  111. })
  112. export const {} = CheckInSlice.actions;
  113. export const getCheckInData=(state)=>{
  114. return state.checkIn.checkInData;
  115. }
  116. export const getCheckInStatus=(state)=>{
  117. return state.checkIn.status;
  118. }
  119. export const getNextGetTime=(state)=>{
  120. return state.checkIn.NextGetTime;
  121. }
  122. export const getIsCanCheckIn=(state)=>{
  123. return state.checkIn.isCanCheckIn;
  124. }
  125. export default CheckInSlice.reducer;