checkInSlice.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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(item.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. if (data.LastDate!=null){
  34. LastDate=data.LastDate;
  35. LastDate=LastDate.split(".").shift();
  36. LastDate=Date.parse(LastDate+"-03:00");
  37. NextGetTime=LastDate+86400000;
  38. }
  39. let NextDayNumber=Number(data.NextDayNumber);
  40. if (NextDayNumber>7)NextDayNumber=7
  41. state.checkInData={
  42. RewardDay,
  43. RewardScore,
  44. cbRecord,
  45. nDayNumber,
  46. LastDate,
  47. NextDayNumber
  48. }
  49. state.NextGetTime=NextGetTime;
  50. }
  51. }
  52. }
  53. const checkinCheckStatus=(state,status,arg)=>{
  54. state.status.CheckInCheck=status;
  55. }
  56. const reducerCheckinGet=(state,action,arg)=>{
  57. let payload=action.payload;
  58. let msg=getHttpMsg(payload);
  59. if (payload!=null&&payload.code===200){
  60. let data=payload.data;
  61. // global.showDropCoins();
  62. msg=i18n.t("CheckIn.get_success");
  63. if(msg&&msg!=="")toast.success(msg);
  64. }
  65. else {
  66. if(msg&&msg!=="")toast.error(msg);
  67. }
  68. if (arg.callback)arg.callback(payload);
  69. }
  70. const checkinGetStatus=(state,status,arg)=>{
  71. state.status.CheckInGet=status;
  72. }
  73. export const CheckInSlice = createSlice({
  74. name: 'checkIn',
  75. initialState: {
  76. checkInData:{
  77. // nDayNumber:2,
  78. // cbRecord:[1],
  79. // RewardDay:[1,2,3,4,5,6,7],
  80. // RewardScore:[1,1,1,2,2,2,2]
  81. nDayNumber:-1,
  82. cbRecord:[],
  83. RewardDay:[],
  84. RewardScore:[],
  85. LastDate:0,
  86. },
  87. NextGetTime:0,
  88. status:{
  89. CheckInCheck:REQ_STATUS.NONE,
  90. CheckInGet:REQ_STATUS.NONE,
  91. }
  92. },
  93. reducers: {
  94. },
  95. extraReducers: (builder) => {
  96. buildReqReducer(builder,reqCheckinCheck,reducerCheckinCheck,checkinCheckStatus);
  97. buildReqReducer(builder,reqCheckinGet,reducerCheckinGet,checkinGetStatus);
  98. },
  99. })
  100. export const {} = CheckInSlice.actions;
  101. export const getCheckInData=(state)=>{
  102. return state.checkIn.checkInData;
  103. }
  104. export const getCheckInStatus=(state)=>{
  105. return state.checkIn.status;
  106. }
  107. export const getNextGetTime=(state)=>{
  108. return state.checkIn.NextGetTime;
  109. }
  110. export default CheckInSlice.reducer;