22 Revize bd9708c855 ... cd7d23b481

Autor SHA1 Zpráva Datum
  Yangzw cd7d23b481 Merge branch 'master' of http://47.107.29.61:3000/feifan/mall-backend-business into dev/2024/0806/update-business-Y před 2 měsíci
  Yangzw 3d5a52a45b 补充定时查询支付订单2 před 2 měsíci
  Yangzw f46e18ad38 补充定时查询支付订单 před 2 měsíci
  Yangzw a6df66d8f7 更新定时查询支付订单 před 2 měsíci
  Yangzw 6070e4431b 更新物流查询 před 2 měsíci
  Yangzw f065a1631b 更新物流查询 před 2 měsíci
  Yangzw 9d4b18fd81 更新物流查询 před 2 měsíci
  Yangzw 1d3fd480a7 更新物流查询 před 2 měsíci
  Yangzw a5aa19e52b 修改售后订单的金额回显,加上消费分字段,退款修改金额可以为0 před 2 měsíci
  Yangzw 39d0376b7b Merge branch 'dev/2024/0806/update-business-Y' of feifan/mall-backend-business into master před 2 měsíci
  Yangzw 40736c7048 Merge branch 'dev/2024/0806/update-business-Y' of feifan/mall-backend-business into master před 2 měsíci
  Yangzw c93285db68 Merge branch 'dev/2024/0806/update-business-Y' of feifan/mall-backend-business into master před 3 měsíci
  Yangzw b831592bb2 Merge branch 'dev/2024/0806/update-business-Y' of feifan/mall-backend-business into master před 3 měsíci
  Yangzw 011e51e653 Merge branch 'dev/2024/0806/update-business-Y' of feifan/mall-backend-business into master před 3 měsíci
  Yangzw 7793d9f356 Merge branch 'dev/2024/0806/update-business-Y' of feifan/mall-backend-business into master před 3 měsíci
  Yangzw b601477bba Merge branch 'dev/2024/0806/update-business-Y' of feifan/mall-backend-business into master před 3 měsíci
  Yangzw 7b0e3c2007 Merge branch 'dev/2024/0719/update-business-Y' of feifan/mall-backend-business into master před 3 měsíci
  Yangzw 6802dd06bd Merge branch 'dev/2024/0719/update-business-Y' of feifan/mall-backend-business into master před 3 měsíci
  Yangzw 75356e650f Merge branch 'dev/2024/0713/update-business-Y' of feifan/mall-backend-business into master před 3 měsíci
  Yangzw 3bb0836842 Merge branch 'dev/2024/0713/update-business-Y' of feifan/mall-backend-business into master před 3 měsíci
  Yangzw 9d2c716523 Merge branch 'dev/2024/0703/update-business-Y' of feifan/mall-backend-business into master před 4 měsíci
  Yangzw e1871c4ec5 Merge branch 'dev/2024/0703/update-business-Y' of feifan/mall-backend-business into master před 4 měsíci
100 změnil soubory, kde provedl 3317 přidání a 94 odebrání
  1. 4 0
      feifan-framework/feifan-spring-boot-starter-biz-pay/src/main/java/cn/newfeifan/mall/framework/pay/core/client/impl/PayClientFactoryImpl.java
  2. 1 0
      feifan-framework/feifan-spring-boot-starter-biz-pay/src/main/java/cn/newfeifan/mall/framework/pay/core/enums/channel/PayChannelEnum.java
  3. 5 0
      feifan-module-distri/feifan-module-distri-api/src/main/java/cn/newfeifan/mall/module/distri/constant/DistriConstants.java
  4. 31 0
      feifan-module-distri/feifan-module-distri-api/src/main/java/cn/newfeifan/mall/module/distri/enums/ConsumptionEnum.java
  5. 3 0
      feifan-module-distri/feifan-module-distri-api/src/main/java/cn/newfeifan/mall/module/distri/enums/ErrorCodeConstants.java
  6. 34 0
      feifan-module-distri/feifan-module-distri-api/src/main/java/cn/newfeifan/mall/module/distri/enums/SocialStatusEnum.java
  7. 6 0
      feifan-module-distri/feifan-module-distri-biz/pom.xml
  8. 48 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/consumptionchangelog/vo/ConsumptionChangeLogPageReqVO.java
  9. 59 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/consumptionchangelog/vo/ConsumptionChangeLogRespVO.java
  10. 43 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/consumptionchangelog/vo/ConsumptionChangeLogSaveReqVO.java
  11. 9 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/dailybill/vo/DailyBillPageReqVO.java
  12. 12 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/dailybill/vo/DailyBillRespVO.java
  13. 11 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/dailybill/vo/DailyBillSaveReqVO.java
  14. 29 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/duser/vo/DuserInfoVO.java
  15. 56 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/duser/vo/DuserPageReqVO.java
  16. 92 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/duser/vo/DuserRespVO.java
  17. 57 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/duser/vo/DuserSaveReqVO.java
  18. 56 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/integral/vo/IntegralPageReqVO.java
  19. 66 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/integral/vo/IntegralRespVO.java
  20. 58 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/integral/vo/IntegralSaveReqVO.java
  21. 9 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptdailybill/vo/PtDailyBillPageReqVO.java
  22. 12 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptdailybill/vo/PtDailyBillRespVO.java
  23. 12 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptdailybill/vo/PtDailyBillSaveReqVO.java
  24. 36 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptprofit/vo/PtProfitPageReqVO.java
  25. 38 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptprofit/vo/PtProfitRespVO.java
  26. 31 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptprofit/vo/PtProfitSaveReqVO.java
  27. 2 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptsettlement/vo/PtSettlementPageReqVO.java
  28. 3 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptsettlement/vo/PtSettlementRespVO.java
  29. 3 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptsettlement/vo/PtSettlementSaveReqVO.java
  30. 54 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/sharepath/vo/SharePathPageReqVO.java
  31. 66 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/sharepath/vo/SharePathRespVO.java
  32. 50 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/sharepath/vo/SharePathSaveReqVO.java
  33. 22 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/sharepath/vo/SharePathTreeReqVO.java
  34. 18 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/sharepath/vo/SharePathtransFerenceRelaReqVO.java
  35. 32 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/sharepath/vo/TreeNode.java
  36. 4 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/shopsettlement/excelvo/ShopSettlementExcelRespVO.java
  37. 2 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/shopsettlement/vo/ShopSettlementPageReqVO.java
  38. 4 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/shopsettlement/vo/ShopSettlementRespVO.java
  39. 3 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/shopsettlement/vo/ShopSettlementSaveReqVO.java
  40. 15 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/socialstatus/bo/SocialStatusBO.java
  41. 33 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/socialstatus/vo/SocialStatusPageReqVO.java
  42. 35 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/socialstatus/vo/SocialStatusRespVO.java
  43. 33 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/socialstatus/vo/SocialStatusSaveReqVO.java
  44. 50 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/socialstatuschangelog/vo/SocialStatusChangeLogPageReqVO.java
  45. 55 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/socialstatuschangelog/vo/SocialStatusChangeLogRespVO.java
  46. 44 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/socialstatuschangelog/vo/SocialStatusChangeLogSaveReqVO.java
  47. 26 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/socialstatuschangelog/vo/UserSignSocialLogRespVO.java
  48. 75 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/usertopupconsumptionpointsorder/vo/UserTopUpConsumptionPointsOrderPageReqVO.java
  49. 87 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/usertopupconsumptionpointsorder/vo/UserTopUpConsumptionPointsOrderRespVO.java
  50. 74 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/usertopupconsumptionpointsorder/vo/UserTopUpConsumptionPointsOrderSaveReqVO.java
  51. 1 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/convert/shopsettlement/ShopSettlementConvert.java
  52. 64 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/consumptionchangelog/ConsumptionChangeLogDO.java
  53. 13 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/dailybill/DailyBillDO.java
  54. 4 3
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/duser/DuserDO.java
  55. 4 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/integral/IntegralDO.java
  56. 13 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/ptdailybill/PtDailyBillDO.java
  57. 5 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/ptsettlement/PtSettlementDO.java
  58. 69 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/sharepath/SharePathDO.java
  59. 4 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/shopsettlement/ShopSettlementDO.java
  60. 43 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/socialstatus/SocialStatusDO.java
  61. 64 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/socialstatuschangelog/SocialStatusChangeLogDO.java
  62. 96 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/usertopupconsumptionpointsorder/UserTopUpConsumptionPointsOrderDO.java
  63. 28 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/consumptionchangelog/ConsumptionChangeLogMapper.java
  64. 36 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/duser/DuserMapper.java
  65. 11 8
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/ptprofit/PtProfitMapper.java
  66. 60 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/sharepath/SharePathMapper.java
  67. 27 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/socialstatus/SocialStatusMapper.java
  68. 42 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/socialstatuschangelog/SocialStatusChangeLogMapper.java
  69. 41 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/usertopupconsumptionpointsorder/UserTopUpConsumptionPointsOrderMapper.java
  70. 23 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/mq/consumer/topupconsumptionpoints/topupconsumptionpoints/TopUpConsumptionPointsConsumer.java
  71. 56 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/consumptionchangelog/ConsumptionChangeLogService.java
  72. 87 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/consumptionchangelog/ConsumptionChangeLogServiceImpl.java
  73. 11 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/duser/DuserService.java
  74. 59 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/duser/DuserServiceImpl.java
  75. 29 1
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/integral/IntegralService.java
  76. 79 39
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/integral/IntegralServiceImpl.java
  77. 63 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ptprofit/PtProfitService.java
  78. 85 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ptprofit/PtProfitServiceImpl.java
  79. 5 4
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ptprofitlog/PtProfitLogService.java
  80. 18 1
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ptprofitlog/PtProfitLogServiceImpl.java
  81. 19 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/sharepath/SharePathService.java
  82. 36 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/sharepath/SharePathServiceImpl.java
  83. 65 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/socialstatus/SocialStatusService.java
  84. 96 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/socialstatus/SocialStatusServiceImpl.java
  85. 23 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/socialstatuschangelog/SocialStatusChangeLogService.java
  86. 40 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/socialstatuschangelog/SocialStatusChangeLogServiceImpl.java
  87. 67 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/usertopupconsumptionpointsorder/UserTopUpConsumptionPointsOrderService.java
  88. 122 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/usertopupconsumptionpointsorder/UserTopUpConsumptionPointsOrderServiceImpl.java
  89. 6 2
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/dal/dataobject/spuapply/SpuApplyDO.java
  90. 11 8
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/service/spuapply/SpuApplyServiceImpl.java
  91. 9 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/aftersale/vo/AfterSaleBaseVO.java
  92. 9 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/aftersale/vo/AfterSalePageReqVO.java
  93. 4 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/excelVO/DailyBillOrderRespVO.java
  94. 10 6
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/excelVO/SettlementOrderRespVO.java
  95. 9 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/vo/TradeOrderBaseVO.java
  96. 3 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/app/order/vo/AppTradeOrderDetailRespVO.java
  97. 5 3
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/convert/order/TradeOrderConvert.java
  98. 13 19
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/dataobject/aftersale/AfterSaleDO.java
  99. 9 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/dataobject/order/TradeOrderDO.java
  100. 13 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/dataobject/order/TradeOrderItemDO.java

+ 4 - 0
feifan-framework/feifan-spring-boot-starter-biz-pay/src/main/java/cn/newfeifan/mall/framework/pay/core/client/impl/PayClientFactoryImpl.java

@@ -16,6 +16,7 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 
 import static cn.newfeifan.mall.framework.pay.core.enums.channel.PayChannelEnum.*;
+import static cn.newfeifan.mall.framework.pay.core.enums.channel.PayChannelEnum.ZERO_PURCHASE;
 
 /**
  * 支付客户端的工厂实现类
@@ -54,6 +55,9 @@ public class PayClientFactoryImpl implements PayClientFactory {
 
         //富友支付
         clientClass.put(JSAPI, WxPubPayClient.class);
+
+        // 短信验证码支付
+        clientClass.put(ZERO_PURCHASE, MockPayClient.class);
     }
 
     @Override

+ 1 - 0
feifan-framework/feifan-spring-boot-starter-biz-pay/src/main/java/cn/newfeifan/mall/framework/pay/core/enums/channel/PayChannelEnum.java

@@ -31,6 +31,7 @@ public enum PayChannelEnum {
     MOCK("mock", "模拟支付", NonePayClientConfig.class),
 
     WALLET("wallet", "钱包支付", NonePayClientConfig.class),
+    ZERO_PURCHASE("zero_purchase", "零元购", NonePayClientConfig.class),
 
     JSAPI("JSAPI","富友微信公众号支付", NonePayClientConfig.class);
 

+ 5 - 0
feifan-module-distri/feifan-module-distri-api/src/main/java/cn/newfeifan/mall/module/distri/constant/DistriConstants.java

@@ -10,6 +10,11 @@ public class DistriConstants {
 
     public static final Integer MILLION = 1000000;      //百万倍
 
+    public static final Long PT_ID = 1L;
+
+    public static final Boolean IS_EFFECTIVE  = true;
+
+
     // 数据库中,积分比金钱大的倍数,即钱转成积分要乘于此参数
     public static final Integer MONEY2INTEGRAL = PERCENT/100;
     // MONEY2INTEGRAL的BigDecimal版本

+ 31 - 0
feifan-module-distri/feifan-module-distri-api/src/main/java/cn/newfeifan/mall/module/distri/enums/ConsumptionEnum.java

@@ -0,0 +1,31 @@
+package cn.newfeifan.mall.module.distri.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum ConsumptionEnum {
+
+    PT_TOP_TUP(1,"平台充值"),
+    COMMISSION_TRANSITION(2,"佣金转化为消费分"),
+    CONSUMPTION_TRANSFER(3,"消费分转出"),
+    CONSUMPTION_RECIPIENT(4,"消费分转入"),
+    COMMISSION_WITHDRAWAL(5,"佣金提现"),
+    PAY_ORDER(6,"购物支付"),
+    REFUND_ORDER(7,"退回退款返回"),
+    TOP_UP_GET(8,"充值获得"),
+    ;
+
+    private final Integer type;
+    private final String name;
+
+    public static String getName(Integer type){
+        for (ConsumptionEnum value : ConsumptionEnum.values()) {
+            if(value.getType().equals(type)){
+                return value.getName();
+            }
+        }
+        return null;
+    }
+}

+ 3 - 0
feifan-module-distri/feifan-module-distri-api/src/main/java/cn/newfeifan/mall/module/distri/enums/ErrorCodeConstants.java

@@ -30,4 +30,7 @@ public interface ErrorCodeConstants {
     ErrorCode ORDER_SETTLEMENT_NOT_EXISTS = new ErrorCode(1_003_031_005, "该结算订单二级表记录不存在");
     ErrorCode PT_DAILY_BILL_NOT_EXISTS = new ErrorCode(1_003_031_006, "平台每日账单不存在");
 
+    ErrorCode CONSUMPTION_CHANGE_LOG_NOT_EXISTS = new ErrorCode(1_002_030_036, "消费分变动记录不存在");
+    ErrorCode USER_TOP_UP_CONSUMPTION_POINTS_ORDER_NOT_EXISTS = new ErrorCode(1_002_030_037, "用户充值消费订单分不存在");
+
 }

+ 34 - 0
feifan-module-distri/feifan-module-distri-api/src/main/java/cn/newfeifan/mall/module/distri/enums/SocialStatusEnum.java

@@ -0,0 +1,34 @@
+package cn.newfeifan.mall.module.distri.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum SocialStatusEnum {
+
+    REGISTER_SOCIAL(1,"本人注册用户"),
+    REGISTER_ANCESTOR_SOCIAL(2,"成功推荐新用户注册"),
+    SIGN_IN_SOCIAL(3,"签到获取的基础身价值"),
+    FAVORITE_SOCIAL(4,"收藏一个商品获取的身价值"),
+    SHOPPING_SOCIAL(5,"购物自得身价值"),
+    SHOPPING_ANCESTOR_SOCIAL(6,"直推人购物,推荐人获得身价");
+
+    /**
+     * 类型
+     */
+    private final Integer status;
+    /**
+     * 类型的名字
+     */
+    private final String name;
+
+    public static SocialStatusEnum getSocialStatusEnumByCode(int status) {
+        for (SocialStatusEnum socialStatusEnum : SocialStatusEnum.values()) {
+            if (socialStatusEnum.getStatus() == status) {
+                return socialStatusEnum;
+            }
+        }
+        return null;
+    }
+}

+ 6 - 0
feifan-module-distri/feifan-module-distri-biz/pom.xml

@@ -113,5 +113,11 @@
             <groupId>cn.newfeifan.zx</groupId>
             <artifactId>feifan-spring-boot-starter-biz-ip</artifactId>
         </dependency>
+        <dependency>
+            <groupId>cn.newfeifan.zx</groupId>
+            <artifactId>feifan-module-pay-biz</artifactId>
+            <version>2.0.0-jdk8-snapshot</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 </project>

+ 48 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/consumptionchangelog/vo/ConsumptionChangeLogPageReqVO.java

@@ -0,0 +1,48 @@
+package cn.newfeifan.mall.module.distri.controller.admin.consumptionchangelog.vo;
+
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static cn.newfeifan.mall.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 平台消费分变动记录分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class ConsumptionChangeLogPageReqVO extends PageParam {
+
+    @Schema(description = "用户ID", example = "10871")
+    private Long userId;
+
+    @Schema(description = "变动的消费分")
+    private Long consumptionPoints;
+
+    @Schema(description = "变动后消费分")
+    private Long afterConsumptionPoints;
+
+    @Schema(description = "消费分变动类型", example = "2")
+    private Integer consumptionStatus;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+    @Schema(description = "实际消费分")
+    private Long practicalConsumptionPoints;
+
+    @Schema(description = "消费分产生对象", example = "23323")
+    private Long generateUserId;
+
+    @Schema(description = "订单Id", example = "18715")
+    private Long orderId;
+
+    @Schema(description = "订单编号")
+    private String orderNo;
+
+}

+ 59 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/consumptionchangelog/vo/ConsumptionChangeLogRespVO.java

@@ -0,0 +1,59 @@
+package cn.newfeifan.mall.module.distri.controller.admin.consumptionchangelog.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 平台消费分变动记录 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class ConsumptionChangeLogRespVO {
+
+    @Schema(description = "日志编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "7160")
+    @ExcelProperty("日志编号")
+    private Long id;
+
+    @Schema(description = "用户ID", example = "10871")
+    @ExcelProperty("用户ID")
+    private Long userId;
+
+    @Schema(description = "变动的消费分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("变动的消费分")
+    private Long consumptionPoints;
+
+    @Schema(description = "变动后消费分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("变动后消费分")
+    private Long afterConsumptionPoints;
+
+    @Schema(description = "消费分变动类型", example = "2")
+    @ExcelProperty("消费分变动类型")
+    private Integer consumptionStatus;
+
+    @Schema(description = "类型名称")
+    private String consumptionStatusName;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "实际消费分")
+    @ExcelProperty("实际消费分")
+    private Long practicalConsumptionPoints;
+
+    @Schema(description = "消费分产生对象", example = "23323")
+    private Long generateUserId;
+
+    private String generateUserName;
+
+    @Schema(description = "订单Id", example = "18715")
+    @ExcelProperty("订单Id")
+    private Long orderId;
+
+    @Schema(description = "订单编号")
+    @ExcelProperty("订单编号")
+    private String orderNo;
+
+}

+ 43 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/consumptionchangelog/vo/ConsumptionChangeLogSaveReqVO.java

@@ -0,0 +1,43 @@
+package cn.newfeifan.mall.module.distri.controller.admin.consumptionchangelog.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Builder;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Schema(description = "管理后台 - 平台消费分变动记录新增/修改 Request VO")
+@Data
+@Builder
+public class ConsumptionChangeLogSaveReqVO {
+
+    @Schema(description = "日志编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "7160")
+    private Long id;
+
+    @Schema(description = "用户ID", example = "10871")
+    private Long userId;
+
+    @Schema(description = "变动的消费分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "变动的消费分不能为空")
+    private Long consumptionPoints;
+
+    @Schema(description = "变动后消费分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "变动后消费分不能为空")
+    private Long afterConsumptionPoints;
+
+    @Schema(description = "消费分变动类型", example = "2")
+    private Integer consumptionStatus;
+
+    @Schema(description = "实际消费分")
+    private Long practicalConsumptionPoints;
+
+    @Schema(description = "消费分产生对象", example = "23323")
+    private Long generateUserId;
+
+    @Schema(description = "订单Id", example = "18715")
+    private Long orderId;
+
+    @Schema(description = "订单编号")
+    private String orderNo;
+
+}

+ 9 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/dailybill/vo/DailyBillPageReqVO.java

@@ -56,4 +56,13 @@ public class DailyBillPageReqVO extends PageParam {
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDate[] orderCalcTime;
 
+    @Schema(description = "消费分")
+    private Long consumptionPoints;
+
+    @Schema(description = "确收消费分")
+    private Long receivedConsumptionPoints;
+
+    @Schema(description = "退款消费分")
+    private Long refundConsumptionPoints;
+
 }

+ 12 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/dailybill/vo/DailyBillRespVO.java

@@ -72,6 +72,18 @@ public class DailyBillRespVO {
     @ExcelProperty("订单所属日期")
     private LocalDate orderCalcTime;
 
+    @Schema(description = "消费分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("消费分")
+    private Long consumptionPoints;
+
+    @Schema(description = "确收消费分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("确收消费分")
+    private Long receivedConsumptionPoints;
+
+    @Schema(description = "退款消费分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("退款消费分")
+    private Long refundConsumptionPoints;
+
     public String getOrderCalcTime() {
         return orderCalcTime.toString();
     }

+ 11 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/dailybill/vo/DailyBillSaveReqVO.java

@@ -56,4 +56,15 @@ public class DailyBillSaveReqVO {
     @NotNull(message = "订单所属日期不能为空")
     private LocalDate orderCalcTime;
 
+    @Schema(description = "消费分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "消费分不能为空")
+    private Long consumptionPoints;
+
+    @Schema(description = "确收消费分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "确收消费分不能为空")
+    private Long receivedConsumptionPoints;
+
+    @Schema(description = "退款消费分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "退款消费分不能为空")
+    private Long refundConsumptionPoints;
 }

+ 29 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/duser/vo/DuserInfoVO.java

@@ -0,0 +1,29 @@
+package cn.newfeifan.mall.module.distri.controller.admin.duser.vo;
+
+import cn.newfeifan.mall.module.distri.dal.dataobject.integral.IntegralDO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Schema(description = "管理后台 - 用户基础信息 Request VO")
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class DuserInfoVO {
+
+
+    @Schema(description = "用户积分信息", example = "IntegralDO")
+    private IntegralDO integralDO;
+
+    @Schema(description = "用户直推人人数", example = "88")
+    private Integer descNo;
+
+    @Schema(description = "团队昨日贡献值=直推奖+合赢奖", example = "88")
+    private Long descPrice;
+
+    @Schema(description = "团队历史总贡献值=直推奖+合赢奖", example = "88")
+    private Long descTotalPrice;
+}

+ 56 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/duser/vo/DuserPageReqVO.java

@@ -0,0 +1,56 @@
+package cn.newfeifan.mall.module.distri.controller.admin.duser.vo;
+
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static cn.newfeifan.mall.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 推荐用户分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class DuserPageReqVO extends PageParam {
+
+    @Schema(description = "团队人员ID", example = "17459")
+    private Long userId;
+
+    @Schema(description = "团队人员姓名", example = "李四")
+    private String name;
+
+    @Schema(description = "团队人员手机号码")
+    private String mobile;
+
+    @Schema(description = "团队人员来源")
+    private Integer source;
+
+    @Schema(description = "团队用户当前积分", example = "11037")
+    private Long integralId;
+
+    @Schema(description = "团队用户当前身价id", example = "22096")
+    private Long socialStatusId;
+
+    @Schema(description = "团队用户当前点数")
+    private Long socialStatusPoint;
+
+    @Schema(description = "用户类型", example = "3773")
+    private Long categoryId;
+    @Schema(description = "身价距下一级所需点数")
+    private Long socialUpNeed;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+
+    @Schema(description = "用户名称", example = "张三")
+    private String nickName;
+
+    @Schema(description = "用户名")
+    private String username;
+}

+ 92 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/duser/vo/DuserRespVO.java

@@ -0,0 +1,92 @@
+package cn.newfeifan.mall.module.distri.controller.admin.duser.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 推荐用户 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class DuserRespVO {
+
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23853")
+    @ExcelProperty("用户编号")
+    private Long id;
+
+    @Schema(description = "团队人员ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "17459")
+    @ExcelProperty("团队人员ID")
+    private Long userId;
+
+    @Schema(description = "团队人员姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
+    @ExcelProperty("团队人员姓名")
+    private String name;
+
+    @Schema(description = "团队人员手机号码", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("团队人员手机号码")
+    private String mobile;
+
+    @Schema(description = "团队人员来源")
+    @ExcelProperty("团队人员来源")
+    private Integer source;
+
+    @Schema(description = "团队用户当前积分", requiredMode = Schema.RequiredMode.REQUIRED, example = "11037")
+    @ExcelProperty("团队用户当前积分")
+    private Long integralId;
+
+    @Schema(description = "团队用户当前身价id", example = "22096")
+    @ExcelProperty("团队用户当前身价(id)")
+    private Long socialStatusId;
+
+    @Schema(description = "团队用户当前身价等级", example = "等级1")
+    @ExcelProperty("团队用户当前身价(等级)")
+    private String socialStatusLevel;
+
+    @Schema(description = "团队用户当前身价等级名称", example = "白银")
+    @ExcelProperty("团队用户当前身价(等级)")
+    private String socialStatusLevelName;
+
+    @Schema(description = "团队用户当前点数")
+    @ExcelProperty("团队用户当前点数")
+    private Long socialStatusPoint;
+
+    @Schema(description = "用户类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "3773")
+    @ExcelProperty("用户类型")
+    private Long categoryId;
+    @Schema(description = "身价距下一级所需点数")
+    @ExcelProperty("身价距下一级所需点数")
+    private Long socialUpNeed;
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "用户名称", example = "张三")
+    @ExcelProperty("用户名称")
+    private String nickName;
+
+    @Schema(description = "推荐人姓名", example = "张三")
+    private String ancNickName;
+
+    @Schema(description = "直推人总数")
+    private Long descendantCount;
+
+    @Schema(description = "后代总数")
+    private Long childrenCount;
+
+    @Schema(description = "用户头像")
+    private String avatar;
+
+    @Schema(description = "用户积分")
+    private Long integral;
+
+    @Schema(description = "用户名")
+    private String username;
+
+    @Schema(description = "冻结积分")
+    private Long freezeIntegral;
+
+    @Schema(description = "推荐人用户名")
+    private String ancUsername;
+}

+ 57 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/duser/vo/DuserSaveReqVO.java

@@ -0,0 +1,57 @@
+package cn.newfeifan.mall.module.distri.controller.admin.duser.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+@Schema(description = "管理后台 - 推荐用户新增/修改 Request VO")
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class DuserSaveReqVO {
+
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23853")
+    private Long id;
+
+    @Schema(description = "团队人员ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "17459")
+    @NotNull(message = "团队人员ID不能为空")
+    private Long userId;
+
+    @Schema(description = "团队人员姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
+    @NotEmpty(message = "团队人员姓名不能为空")
+    private String name;
+
+    @Schema(description = "团队人员手机号码", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "团队人员手机号码不能为空")
+    private String mobile;
+
+    @Schema(description = "团队人员来源")
+    private Long source;
+
+    @Schema(description = "团队用户当前积分", requiredMode = Schema.RequiredMode.REQUIRED, example = "11037")
+    @NotNull(message = "团队用户当前积分不能为空")
+    private Long integralId;
+
+    @Schema(description = "团队用户当前身价id", example = "22096")
+    private Long socialStatusId;
+
+    @Schema(description = "团队用户当前点数")
+    private Long socialStatusPoint;
+
+    @Schema(description = "身价距下一级所需点数")
+    private Long socialUpNeed;
+
+    @Schema(description = "用户类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "3773")
+    @NotNull(message = "用户类型不能为空")
+    private Long categoryId;
+
+    @Schema(description = "用户名称", example = "张三")
+    private String nickName;
+
+}

+ 56 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/integral/vo/IntegralPageReqVO.java

@@ -0,0 +1,56 @@
+package cn.newfeifan.mall.module.distri.controller.admin.integral.vo;
+
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static cn.newfeifan.mall.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 推荐用户积分分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class IntegralPageReqVO extends PageParam {
+
+    @Schema(description = "用户ID", example = "19778")
+    private Long userId;
+
+    @Schema(description = "用户类型", example = "17348")
+    private Long categoryId;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+    @Schema(description = "用户名称", example = "赵六")
+    private String name;
+
+    @Schema(description = "用户昵称", example = "赵六")
+    private String nickName;
+
+    @Schema(description = "当前积分")
+    private Long currentQuota;
+
+    @Schema(description = "冻结积分")
+    private Long freezeQuota;
+
+    @Schema(description = "合赢奖累计获取积分")
+    private Long accumulatedQuota;
+
+    @Schema(description = "直推奖累计获取积分")
+    private Long ancestorQuota;
+
+    @Schema(description = "最高可获取积分")
+    private Long highQuota;
+
+    @Schema(description = "累计获取的峰值")
+    private Long highQuotaTotal;
+
+    @Schema(description = "当前消费分")
+    private Long consumptionPoints;
+}

+ 66 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/integral/vo/IntegralRespVO.java

@@ -0,0 +1,66 @@
+package cn.newfeifan.mall.module.distri.controller.admin.integral.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 推荐用户积分 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class IntegralRespVO {
+
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "19201")
+    @ExcelProperty("用户编号")
+    private Long id;
+
+    @Schema(description = "用户ID", example = "19778")
+    @ExcelProperty("用户ID")
+    private Long userId;
+
+    @Schema(description = "用户类型", example = "17348")
+    @ExcelProperty("用户类型")
+    private Long categoryId;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "用户名称", example = "赵六")
+    @ExcelProperty("用户名称")
+    private String name;
+
+    @Schema(description = "用户昵称", example = "赵六")
+    @ExcelProperty("用户昵称")
+    private String nickName;
+
+    @Schema(description = "当前积分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("当前积分")
+    private Long currentQuota;
+
+    @Schema(description = "冻结积分")
+    @ExcelProperty("冻结积分")
+    private Long freezeQuota;
+
+    @Schema(description = "合赢奖累计获取积分")
+    @ExcelProperty("合赢奖累计获取积分")
+    private Long accumulatedQuota;
+
+    @Schema(description = "直推奖累计获取积分")
+    @ExcelProperty("直推奖累计获取积分")
+    private Long ancestorQuota;
+
+    @Schema(description = "最高可获取积分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("最高可获取积分")
+    private Long highQuota;
+
+    @Schema(description = "累计获取的峰值")
+    @ExcelProperty("累计获取的峰值")
+    private Long highQuotaTotal;
+
+    @Schema(description = "当前消费分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("当前消费分")
+    private Long consumptionPoints;
+}

+ 58 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/integral/vo/IntegralSaveReqVO.java

@@ -0,0 +1,58 @@
+package cn.newfeifan.mall.module.distri.controller.admin.integral.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotNull;
+
+
+@Schema(description = "管理后台 - 推荐用户积分新增/修改 Request VO")
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class IntegralSaveReqVO {
+
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "19201")
+    private Long id;
+
+    @Schema(description = "用户ID", example = "19778")
+    private Long userId;
+
+    @Schema(description = "用户类型", example = "17348")
+    private Long categoryId;
+
+    @Schema(description = "用户名称", example = "赵六")
+    private String name;
+
+    @Schema(description = "用户昵称", example = "赵六")
+    private String nickName;
+
+    @Schema(description = "当前积分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "当前积分不能为空")
+    private Long currentQuota;
+
+    @Schema(description = "冻结积分")
+    private Long freezeQuota;
+
+    @Schema(description = "合赢奖累计获取积分")
+    private Long accumulatedQuota;
+
+    @Schema(description = "直推奖累计获取积分")
+    private Long ancestorQuota;
+
+    @Schema(description = "最高可获取积分", requiredMode = Schema.RequiredMode.REQUIRED)
+    private Long highQuota;
+
+    @Schema(description = "冻结的最高可获取积分", requiredMode = Schema.RequiredMode.REQUIRED)
+    private Long freezeHighQuota;
+
+    @Schema(description = "累计获取的峰值")
+    private Long highQuotaTotal;
+
+    @Schema(description = "当前消费分", requiredMode = Schema.RequiredMode.REQUIRED)
+    private Long consumptionPoints;
+}

+ 9 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptdailybill/vo/PtDailyBillPageReqVO.java

@@ -50,4 +50,13 @@ public class PtDailyBillPageReqVO extends PageParam {
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;
 
+    @Schema(description = "消费分")
+    private Long consumptionPoints;
+
+    @Schema(description = "确收消费分")
+    private Long receivedConsumptionPoints;
+
+    @Schema(description = "退款消费分")
+    private Long refundConsumptionPoints;
+
 }

+ 12 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptdailybill/vo/PtDailyBillRespVO.java

@@ -57,6 +57,18 @@ public class PtDailyBillRespVO {
     @ExcelProperty("创建时间")
     private LocalDateTime createTime;
 
+    @Schema(description = "消费分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("消费分")
+    private Long consumptionPoints;
+
+    @Schema(description = "确收消费分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("确收消费分")
+    private Long receivedConsumptionPoints;
+
+    @Schema(description = "退款消费分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("退款消费分")
+    private Long refundConsumptionPoints;
+
     public String getOrderCalcTime() {
         return orderCalcTime.toString();
     }

+ 12 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptdailybill/vo/PtDailyBillSaveReqVO.java

@@ -50,4 +50,16 @@ public class PtDailyBillSaveReqVO {
     @NotEmpty(message = "订单ID列表,文本类型不能为空")
     private String orderIds;
 
+    @Schema(description = "消费分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "消费分不能为空")
+    private Long consumptionPoints;
+
+    @Schema(description = "确收消费分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "确收消费分不能为空")
+    private Long receivedConsumptionPoints;
+
+    @Schema(description = "退款消费分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "退款消费分不能为空")
+    private Long refundConsumptionPoints;
+
 }

+ 36 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptprofit/vo/PtProfitPageReqVO.java

@@ -0,0 +1,36 @@
+package cn.newfeifan.mall.module.distri.controller.admin.ptprofit.vo;
+
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static cn.newfeifan.mall.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 平台利润分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class PtProfitPageReqVO extends PageParam {
+
+    @Schema(description = "平台服务费(毛利下的百分比收益)")
+    private Long ptAdd;
+
+    @Schema(description = "平台收益(0.3888 之外的收益)")
+    private Long ptGrossAdd;
+
+    @Schema(description = "平台总收益")
+    private Long ptTotalAdd;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+    @Schema(description = "利润")
+    private Long profit;
+
+}

+ 38 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptprofit/vo/PtProfitRespVO.java

@@ -0,0 +1,38 @@
+package cn.newfeifan.mall.module.distri.controller.admin.ptprofit.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 平台利润 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class PtProfitRespVO {
+
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "24754")
+    @ExcelProperty("用户编号")
+    private Long id;
+
+    @Schema(description = "平台服务费(毛利下的百分比收益)")
+    @ExcelProperty("平台服务费(毛利下的百分比收益)")
+    private Long ptAdd;
+
+    @Schema(description = "平台收益(0.3888 之外的收益)")
+    @ExcelProperty("平台收益(0.3888 之外的收益)")
+    private Long ptGrossAdd;
+
+    @Schema(description = "平台总收益")
+    @ExcelProperty("平台总收益")
+    private Long ptTotalAdd;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "利润", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("利润")
+    private Long profit;
+}

+ 31 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptprofit/vo/PtProfitSaveReqVO.java

@@ -0,0 +1,31 @@
+package cn.newfeifan.mall.module.distri.controller.admin.ptprofit.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+
+@Schema(description = "管理后台 - 平台利润新增/修改 Request VO")
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class PtProfitSaveReqVO {
+
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "24754")
+    private Long id;
+
+    @Schema(description = "平台服务费(毛利下的百分比收益)")
+    private Long ptAdd;
+
+    @Schema(description = "平台收益(0.3888 之外的收益)")
+    private Long ptGrossAdd;
+
+    @Schema(description = "平台总收益")
+    private Long ptTotalAdd;
+
+    @Schema(description = "利润", requiredMode = Schema.RequiredMode.REQUIRED)
+    private Long profit;
+}

+ 2 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptsettlement/vo/PtSettlementPageReqVO.java

@@ -34,4 +34,6 @@ public class PtSettlementPageReqVO extends PageParam {
     @Schema(description = "是否结账")
     private Boolean platformTransferConfirm;
 
+    @Schema(description = "抵扣消费分")
+    private Long consumptionPoints;
 }

+ 3 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptsettlement/vo/PtSettlementRespVO.java

@@ -37,4 +37,7 @@ public class PtSettlementRespVO {
     @ExcelProperty("是否结账")
     private Boolean platformTransferConfirm;
 
+    @Schema(description = "抵扣消费分")
+    @ExcelProperty("抵扣消费分")
+    private Long consumptionPoints;
 }

+ 3 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptsettlement/vo/PtSettlementSaveReqVO.java

@@ -27,4 +27,7 @@ public class PtSettlementSaveReqVO {
     @Schema(description = "是否结账")
     private Boolean platformTransferConfirm;
 
+    @Schema(description = "抵扣消费分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "抵扣消费分不能为空")
+    private Long consumptionPoints;
 }

+ 54 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/sharepath/vo/SharePathPageReqVO.java

@@ -0,0 +1,54 @@
+package cn.newfeifan.mall.module.distri.controller.admin.sharepath.vo;
+
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static cn.newfeifan.mall.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 分销用户关系分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class SharePathPageReqVO extends PageParam {
+
+    @Schema(description = "层级")
+    private Integer depth;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+    @Schema(description = "推荐人")
+    private Long ancestor;
+
+    @Schema(description = "直推人")
+    private Long descendant;
+
+    @Schema(description = "顺序")
+    private Integer sort;
+
+
+    @Schema(description = "推荐人姓名", example = "王五")
+    private String ancName;
+
+    @Schema(description = "推荐人手机号")
+    private String ancPhone;
+
+    @Schema(description = "直推人姓名", example = "李四")
+    private String descName;
+
+    @Schema(description = "推荐人手机号")
+    private String descPhone;
+
+    @Schema(description = "直推人昵称", example = "张三")
+    private String descNickName;
+    @Schema(description = "推荐人昵称", example = "非繁人")
+    private String ancNickName;
+
+}

+ 66 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/sharepath/vo/SharePathRespVO.java

@@ -0,0 +1,66 @@
+package cn.newfeifan.mall.module.distri.controller.admin.sharepath.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 分销用户关系 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class SharePathRespVO {
+
+    @Schema(description = "层级")
+    @ExcelProperty("层级")
+    private Integer depth;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "12537")
+    @ExcelProperty("id")
+    private Long id;
+
+    @Schema(description = "推荐人")
+    @ExcelProperty("推荐人")
+    private Long ancestor;
+
+    @Schema(description = "直推人")
+    @ExcelProperty("直推人")
+    private Long descendant;
+
+    @Schema(description = "顺序")
+    @ExcelProperty("顺序")
+    private Integer sort;
+
+
+    @Schema(description = "推荐人姓名", example = "王五")
+    @ExcelProperty("推荐人姓名")
+    private String ancName;
+
+    @Schema(description = "推荐人手机号")
+    @ExcelProperty("推荐人手机号")
+    private String ancPhone;
+
+    @Schema(description = "直推人姓名", example = "李四")
+    @ExcelProperty("直推人姓名")
+    private String descName;
+
+    @Schema(description = "推荐人手机号")
+    @ExcelProperty("推荐人手机号")
+    private String descPhone;
+
+    @Schema(description = "推荐人昵称", example = "非繁人")
+    @ExcelProperty("推荐人昵称")
+    private String ancNickName;
+
+    @Schema(description = "直推人昵称", example = "张三")
+    @ExcelProperty("直推人昵称")
+    private String descNickName;
+
+    @Schema(description = "用户头像")
+    private String avatar;
+}

+ 50 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/sharepath/vo/SharePathSaveReqVO.java

@@ -0,0 +1,50 @@
+package cn.newfeifan.mall.module.distri.controller.admin.sharepath.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Schema(description = "管理后台 - 分销用户关系新增/修改 Request VO")
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SharePathSaveReqVO {
+
+    @Schema(description = "层级")
+    private Integer depth;
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "12537")
+    private Long id;
+
+    @Schema(description = "推荐人")
+    private Long ancestor;
+
+    @Schema(description = "直推人")
+    private Long descendant;
+
+    @Schema(description = "顺序")
+    private Integer sort;
+
+    @Schema(description = "链接来源")
+    private Long source;
+
+
+    @Schema(description = "推荐人姓名", example = "王五")
+    private String ancName;
+
+    @Schema(description = "推荐人手机号")
+    private String ancPhone;
+
+    @Schema(description = "直推人姓名", example = "李四")
+    private String descName;
+
+    @Schema(description = "推荐人手机号")
+    private String descPhone;
+    @Schema(description = "推荐人昵称", example = "非繁人")
+    private String ancNickName;
+    @Schema(description = "直推人昵称", example = "张三")
+    private String descNickName;
+}

+ 22 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/sharepath/vo/SharePathTreeReqVO.java

@@ -0,0 +1,22 @@
+package cn.newfeifan.mall.module.distri.controller.admin.sharepath.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.ToString;
+
+import javax.validation.constraints.NotNull;
+
+@Schema(description = "管理后台 - 分销用户关系树 Request VO")
+@Data
+@ToString(callSuper = true)
+public class SharePathTreeReqVO {
+    @Schema(description = "名称")
+    private String nickName;
+
+    @Schema(description = "电话")
+    private String mobile;
+
+    @Schema(description = "最大层级")
+    @NotNull(message = "最大层级不能为空")
+    private Integer maxDepth;
+}

+ 18 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/sharepath/vo/SharePathtransFerenceRelaReqVO.java

@@ -0,0 +1,18 @@
+package cn.newfeifan.mall.module.distri.controller.admin.sharepath.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "管理后台 - 分销用户关系转让 Request VO")
+@Data
+public class SharePathtransFerenceRelaReqVO {
+
+
+    @Schema(description = "转让人")
+    private Long ancestor;
+
+    @Schema(description = "被转让人")
+    private Long descendant;
+
+
+}

+ 32 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/sharepath/vo/TreeNode.java

@@ -0,0 +1,32 @@
+package cn.newfeifan.mall.module.distri.controller.admin.sharepath.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class TreeNode {
+    private Long userId;
+    private String name; // 节点名称
+    private String nickname;
+    private String phone;
+    private Integer deep;
+    private Integer value; // 节点值,某些节点可能没有值
+    private Long parentId; // 父亲Id
+    private Boolean hasSon;
+    private Integer sort;
+    private List<TreeNode> children; // 子节点列表
+
+    public Boolean getHasSon() {
+        if (children == null) {
+            return false;
+        }
+        return !children.isEmpty();
+    }
+}

+ 4 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/shopsettlement/excelvo/ShopSettlementExcelRespVO.java

@@ -28,6 +28,10 @@ public class ShopSettlementExcelRespVO {
     @ExcelProperty("抵扣积分")
     private Double shopAmount;
 
+    @Schema(description = "抵扣消费分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("抵扣消费分")
+    private Double shopConsumptionPoints;
+
     @Schema(description = "共计成本价格(高精度 + 成本)")
     @ExcelProperty("应结(成本)")
     private Double shopTotalHighAmount;

+ 2 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/shopsettlement/vo/ShopSettlementPageReqVO.java

@@ -43,4 +43,6 @@ public class ShopSettlementPageReqVO extends PageParam {
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;
 
+    @Schema(description = "抵扣消费分")
+    private Long ShopConsumptionPoints;
 }

+ 4 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/shopsettlement/vo/ShopSettlementRespVO.java

@@ -52,4 +52,8 @@ public class ShopSettlementRespVO {
     @ExcelProperty("创建时间")
     private LocalDateTime createTime;
 
+    @Schema(description = "抵扣消费分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("抵扣消费分")
+    private Long shopConsumptionPoints;
+
 }

+ 3 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/shopsettlement/vo/ShopSettlementSaveReqVO.java

@@ -39,4 +39,7 @@ public class ShopSettlementSaveReqVO {
     @Schema(description = "转账凭证附件")
     private String attachment;
 
+    @Schema(description = "抵扣消费分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "抵扣消费分不能为空")
+    private Long shopConsumptionPoints;
 }

+ 15 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/socialstatus/bo/SocialStatusBO.java

@@ -0,0 +1,15 @@
+package cn.newfeifan.mall.module.distri.controller.admin.socialstatus.bo;
+
+import lombok.Builder;
+import lombok.Data;
+
+/**
+ * 身价状态业务对象
+ * 用于封装与社交状态相关的业务数据
+ */
+@Data
+@Builder
+public class SocialStatusBO {
+    private Long id; // 主键ID
+    private Long socialUpNeed; // 身价升级需求值
+}

+ 33 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/socialstatus/vo/SocialStatusPageReqVO.java

@@ -0,0 +1,33 @@
+package cn.newfeifan.mall.module.distri.controller.admin.socialstatus.vo;
+
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static cn.newfeifan.mall.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 分销用户身价分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class SocialStatusPageReqVO extends PageParam {
+
+    @Schema(description = "身价等级")
+    private String level;
+
+    @Schema(description = "身价名称", example = "芋艿")
+    private String name;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+    @Schema(description = "升级所需点数")
+    private Long point;
+
+}

+ 35 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/socialstatus/vo/SocialStatusRespVO.java

@@ -0,0 +1,35 @@
+package cn.newfeifan.mall.module.distri.controller.admin.socialstatus.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 分销用户身价 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class SocialStatusRespVO {
+
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "19722")
+    @ExcelProperty("用户编号")
+    private Long id;
+
+    @Schema(description = "身价等级")
+    @ExcelProperty("身价等级")
+    private String level;
+
+    @Schema(description = "身价名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
+    @ExcelProperty("身价名称")
+    private String name;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "升级所需点数")
+    @ExcelProperty("升级所需点数")
+    private Long point;
+
+}

+ 33 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/socialstatus/vo/SocialStatusSaveReqVO.java

@@ -0,0 +1,33 @@
+package cn.newfeifan.mall.module.distri.controller.admin.socialstatus.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotEmpty;
+
+@Schema(description = "管理后台 - 分销用户身价新增/修改 Request VO")
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SocialStatusSaveReqVO {
+
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "19722")
+    private Long id;
+
+    @Schema(description = "身价等级")
+    private String level;
+
+    @Schema(description = "身价名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
+    @NotEmpty(message = "身价名称不能为空")
+    private String name;
+
+    @Schema(description = "升级所需点数")
+    private Long point;
+
+
+
+}

+ 50 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/socialstatuschangelog/vo/SocialStatusChangeLogPageReqVO.java

@@ -0,0 +1,50 @@
+package cn.newfeifan.mall.module.distri.controller.admin.socialstatuschangelog.vo;
+
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static cn.newfeifan.mall.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 会员身价变化日志分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class SocialStatusChangeLogPageReqVO extends PageParam {
+
+    @Schema(description = "会员资产变化类别id", example = "8042")
+    private Long socialStatusChangeCategoryId;
+
+    @Schema(description = "身价点数在本类别操作的变化值")
+    private Long variationValue;
+
+    @Schema(description = "操作对应业务对象id,例如订单id", example = "24060")
+    private Long objectId;
+
+    @Schema(description = "是否已生效")
+    private Boolean effective;
+
+    @Schema(description = "描述", example = "随便")
+    private String description;
+
+    @Schema(description = "计划生效时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] planEffectiveTime;
+
+    @Schema(description = "实际生效时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] actualEffectiveTime;
+
+    @Schema(description = "操作时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+    @Schema(description = "用户ID", example = "4593")
+    private Long userId;
+
+}

+ 55 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/socialstatuschangelog/vo/SocialStatusChangeLogRespVO.java

@@ -0,0 +1,55 @@
+package cn.newfeifan.mall.module.distri.controller.admin.socialstatuschangelog.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 会员身价变化日志 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class SocialStatusChangeLogRespVO {
+
+    @Schema(description = "会员身价变化日志id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27452")
+    @ExcelProperty("会员身价变化日志id")
+    private Long id;
+
+    @Schema(description = "会员资产变化类别id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8042")
+    @ExcelProperty("会员资产变化类别id")
+    private Long socialStatusChangeCategoryId;
+
+    @Schema(description = "身价点数在本类别操作的变化值", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("身价点数在本类别操作的变化值")
+    private Long variationValue;
+
+    @Schema(description = "操作对应业务对象id,例如订单id", requiredMode = Schema.RequiredMode.REQUIRED, example = "24060")
+    @ExcelProperty("操作对应业务对象id,例如订单id")
+    private Long objectId;
+
+    @Schema(description = "是否已生效", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("是否已生效")
+    private Boolean effective;
+
+    @Schema(description = "描述", example = "随便")
+    @ExcelProperty("描述")
+    private String description;
+
+    @Schema(description = "计划生效时间")
+    @ExcelProperty("计划生效时间")
+    private LocalDateTime planEffectiveTime;
+
+    @Schema(description = "实际生效时间")
+    @ExcelProperty("实际生效时间")
+    private LocalDateTime actualEffectiveTime;
+
+    @Schema(description = "操作时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("操作时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4593")
+    @ExcelProperty("用户ID")
+    private Long userId;
+
+}

+ 44 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/socialstatuschangelog/vo/SocialStatusChangeLogSaveReqVO.java

@@ -0,0 +1,44 @@
+package cn.newfeifan.mall.module.distri.controller.admin.socialstatuschangelog.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 会员身价变化日志新增/修改 Request VO")
+@Data
+public class SocialStatusChangeLogSaveReqVO {
+
+    @Schema(description = "会员身价变化日志id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27452")
+    private Long id;
+
+    @Schema(description = "会员资产变化类别id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8042")
+    @NotNull(message = "会员资产变化类别id不能为空")
+    private Long socialStatusChangeCategoryId;
+
+    @Schema(description = "身价点数在本类别操作的变化值", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "身价点数在本类别操作的变化值不能为空")
+    private Long variationValue;
+
+    @Schema(description = "操作对应业务对象id,例如订单id", requiredMode = Schema.RequiredMode.REQUIRED, example = "24060")
+    @NotNull(message = "操作对应业务对象id,例如订单id不能为空")
+    private Long objectId;
+
+    @Schema(description = "是否已生效", requiredMode = Schema.RequiredMode.REQUIRED)
+    private Boolean effective;
+
+    @Schema(description = "描述", example = "随便")
+    private String description;
+
+    @Schema(description = "计划生效时间")
+    private LocalDateTime planEffectiveTime;
+
+    @Schema(description = "实际生效时间")
+    private LocalDateTime actualEffectiveTime;
+
+    @Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4593")
+    @NotNull(message = "用户ID不能为空")
+    private Long userId;
+
+}

+ 26 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/socialstatuschangelog/vo/UserSignSocialLogRespVO.java

@@ -0,0 +1,26 @@
+package cn.newfeifan.mall.module.distri.controller.admin.socialstatuschangelog.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static cn.newfeifan.mall.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 会员签到身价变化日志分页 Request VO")
+@Data
+public class UserSignSocialLogRespVO {
+    @Schema(description = "编号", example = "8042")
+    private Long id;
+
+    @Schema(description = "身价点数在本类别操作的变化值")
+    private Long variationValue;
+
+    @Schema(description = "操作时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime createTime;
+
+    @Schema(description = "排序", example = "1")
+    private Integer sort;
+}

+ 75 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/usertopupconsumptionpointsorder/vo/UserTopUpConsumptionPointsOrderPageReqVO.java

@@ -0,0 +1,75 @@
+package cn.newfeifan.mall.module.distri.controller.admin.usertopupconsumptionpointsorder.vo;
+
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static cn.newfeifan.mall.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 用户充值消费分订单分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class UserTopUpConsumptionPointsOrderPageReqVO extends PageParam {
+
+    @Schema(description = "订单流水号")
+    private String no;
+
+    @Schema(description = "订单来源终端")
+    private Integer terminal;
+
+    @Schema(description = "用户编号", example = "29707")
+    private Long userId;
+
+    @Schema(description = "用户 IP")
+    private String userIp;
+
+    @Schema(description = "商品标题")
+    private String subject;
+
+    @Schema(description = "充值消费分")
+    private Long topUpConsumptionPoints;
+
+    @Schema(description = "到账消费分")
+    private Long practicalConsumptionPoints;
+
+    @Schema(description = "用户名", example = "李四")
+    private String userName;
+
+    @Schema(description = "支付订单编号", example = "9840")
+    private Long payOrderId;
+
+    @Schema(description = "是否已支付:[0:未支付 1:已经支付过]", example = "2")
+    private Boolean payStatus;
+
+    @Schema(description = "订单支付时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] payTime;
+
+    @Schema(description = "支付成功的支付渠道")
+    private String payChannelCode;
+
+    @Schema(description = "订单完成时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] finishTime;
+
+    @Schema(description = "订单取消时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] cancelTime;
+
+    @Schema(description = "应付金额(总),单位:分", example = "5880")
+    private Integer payPrice;
+
+    @Schema(description = "计算百分比模板")
+    private String percentTemplate;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 87 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/usertopupconsumptionpointsorder/vo/UserTopUpConsumptionPointsOrderRespVO.java

@@ -0,0 +1,87 @@
+package cn.newfeifan.mall.module.distri.controller.admin.usertopupconsumptionpointsorder.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 用户充值消费分订单 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class UserTopUpConsumptionPointsOrderRespVO {
+
+    @Schema(description = "用户充值消费分订单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3828")
+    @ExcelProperty("用户充值消费分订单编号")
+    private Long id;
+
+    @Schema(description = "订单流水号", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("订单流水号")
+    private String no;
+
+    @Schema(description = "订单来源终端", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("订单来源终端")
+    private Integer terminal;
+
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "29707")
+    @ExcelProperty("用户编号")
+    private Long userId;
+
+    @Schema(description = "用户 IP", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("用户 IP")
+    private String userIp;
+
+    @Schema(description = "商品标题", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("商品标题")
+    private String subject;
+
+    @Schema(description = "充值消费分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("充值消费分")
+    private Long topUpConsumptionPoints;
+
+    @Schema(description = "到账消费分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("到账消费分")
+    private Long practicalConsumptionPoints;
+
+    @Schema(description = "用户名", example = "李四")
+    @ExcelProperty("用户名")
+    private String userName;
+
+    @Schema(description = "支付订单编号", example = "9840")
+    @ExcelProperty("支付订单编号")
+    private Long payOrderId;
+
+    @Schema(description = "是否已支付:[0:未支付 1:已经支付过]", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @ExcelProperty("是否已支付:[0:未支付 1:已经支付过]")
+    private Boolean payStatus;
+
+    @Schema(description = "订单支付时间")
+    @ExcelProperty("订单支付时间")
+    private LocalDateTime payTime;
+
+    @Schema(description = "支付成功的支付渠道")
+    @ExcelProperty("支付成功的支付渠道")
+    private String payChannelCode;
+
+    @Schema(description = "订单完成时间")
+    @ExcelProperty("订单完成时间")
+    private LocalDateTime finishTime;
+
+    @Schema(description = "订单取消时间")
+    @ExcelProperty("订单取消时间")
+    private LocalDateTime cancelTime;
+
+    @Schema(description = "应付金额(总),单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "5880")
+    @ExcelProperty("应付金额(总),单位:分")
+    private Integer payPrice;
+
+    @Schema(description = "计算百分比模板")
+    @ExcelProperty("计算百分比模板")
+    private String percentTemplate;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 74 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/usertopupconsumptionpointsorder/vo/UserTopUpConsumptionPointsOrderSaveReqVO.java

@@ -0,0 +1,74 @@
+package cn.newfeifan.mall.module.distri.controller.admin.usertopupconsumptionpointsorder.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 用户充值消费分订单新增/修改 Request VO")
+@Data
+public class UserTopUpConsumptionPointsOrderSaveReqVO {
+
+    @Schema(description = "用户充值消费分订单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3828")
+    private Long id;
+
+    @Schema(description = "订单流水号", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "订单流水号不能为空")
+    private String no;
+
+    @Schema(description = "订单来源终端", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "订单来源终端不能为空")
+    private Integer terminal;
+
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "29707")
+    @NotNull(message = "用户编号不能为空")
+    private Long userId;
+
+    @Schema(description = "用户 IP", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "用户 IP不能为空")
+    private String userIp;
+
+    @Schema(description = "商品标题", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "商品标题不能为空")
+    private String subject;
+
+    @Schema(description = "充值消费分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "充值消费分不能为空")
+    private Long topUpConsumptionPoints;
+
+    @Schema(description = "到账消费分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "到账消费分不能为空")
+    private Long practicalConsumptionPoints;
+
+    @Schema(description = "用户名", example = "李四")
+    private String userName;
+
+    @Schema(description = "支付订单编号", example = "9840")
+    private Long payOrderId;
+
+    @Schema(description = "是否已支付:[0:未支付 1:已经支付过]", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @NotNull(message = "是否已支付:[0:未支付 1:已经支付过]不能为空")
+    private Boolean payStatus;
+
+    @Schema(description = "订单支付时间")
+    private LocalDateTime payTime;
+
+    @Schema(description = "支付成功的支付渠道")
+    private String payChannelCode;
+
+    @Schema(description = "订单完成时间")
+    private LocalDateTime finishTime;
+
+    @Schema(description = "订单取消时间")
+    private LocalDateTime cancelTime;
+
+    @Schema(description = "应付金额(总),单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "5880")
+    @NotNull(message = "应付金额(总),单位:分不能为空")
+    private Integer payPrice;
+
+    @Schema(description = "计算百分比模板")
+    private String percentTemplate;
+
+}

+ 1 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/convert/shopsettlement/ShopSettlementConvert.java

@@ -18,6 +18,7 @@ public interface ShopSettlementConvert {
         for (ShopSettlementExcelRespVO respVO : respVOList) {
             respVO.setPlatformCollectionAmount(respVO.getPlatformCollectionAmount() / ONE_HUNDRED);
             respVO.setShopAmount(respVO.getShopAmount() / MILLION);
+            respVO.setShopConsumptionPoints(respVO.getShopConsumptionPoints() / MILLION);
             respVO.setShopTotalHighAmount(Math.floor(respVO.getShopTotalHighAmount() / ONE_HUNDRED * ONE_HUNDRED) / ONE_HUNDRED);       // 将小数点后的位数截断,保留两位但不进行四舍五入
         }
         return respVOList;

+ 64 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/consumptionchangelog/ConsumptionChangeLogDO.java

@@ -0,0 +1,64 @@
+package cn.newfeifan.mall.module.distri.dal.dataobject.consumptionchangelog;
+
+import cn.newfeifan.mall.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+/**
+ * 平台消费分变动记录 DO
+ *
+ * @author 非繁人
+ */
+@TableName("distri_consumption_change_log")
+@KeySequence("distri_consumption_change_log_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ConsumptionChangeLogDO extends BaseDO {
+
+    /**
+     * 日志编号
+     */
+    @TableId
+    private Long id;
+    /**
+     * 用户ID
+     */
+    private Long userId;
+    /**
+     * 变动的消费分
+     */
+    private Long consumptionPoints;
+    /**
+     * 变动后消费分
+     */
+    private Long afterConsumptionPoints;
+    /**
+     * 消费分变动类型
+     */
+    private Integer consumptionStatus;
+    /**
+     * 实际消费分
+     */
+    private Long practicalConsumptionPoints;
+
+    /**
+     * 消费分产生对象
+     */
+    private Long generateUserId;
+    /**
+     * 订单Id
+     */
+    private Long orderId;
+    /**
+     * 订单编号
+     */
+    private String orderNo;
+
+
+}

+ 13 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/dailybill/DailyBillDO.java

@@ -73,4 +73,17 @@ public class DailyBillDO extends BaseDO {
      */
     private LocalDate orderCalcTime;
 
+    /**
+     * 消费分
+     */
+    private Long consumptionPoints;
+    /**
+     * 确收消费分
+     */
+    private Long receivedConsumptionPoints;
+    /**
+     * 退款消费分
+     */
+    private Long refundConsumptionPoints;
+
 }

+ 4 - 3
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/duser/DuserDO.java

@@ -1,9 +1,6 @@
 package cn.newfeifan.mall.module.distri.dal.dataobject.duser;
 
 import lombok.*;
-import java.util.*;
-import java.time.LocalDateTime;
-import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.annotation.*;
 import cn.newfeifan.mall.framework.mybatis.core.dataobject.BaseDO;
 
@@ -51,6 +48,10 @@ public class DuserDO extends BaseDO {
      * 团队用户当前身价(等级)
      */
     private Integer socialStatus;
+    /**
+     * 团队用户当前身价id
+     */
+    private Long socialStatusId;
     /**
      * 团队用户当前点数
      */

+ 4 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/integral/IntegralDO.java

@@ -69,4 +69,8 @@ public class IntegralDO extends BaseDO {
      */
     private Long highQuotaTotal;
 
+    /**
+     * 当前消费分
+     */
+    private Long consumptionPoints;
 }

+ 13 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/ptdailybill/PtDailyBillDO.java

@@ -65,4 +65,17 @@ public class PtDailyBillDO extends BaseDO {
      */
     private String orderIds;
 
+    /**
+     * 消费分
+     */
+    private Long consumptionPoints;
+    /**
+     * 确收消费分
+     */
+    private Long receivedConsumptionPoints;
+    /**
+     * 退款消费分
+     */
+    private Long refundConsumptionPoints;
+
 }

+ 5 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/ptsettlement/PtSettlementDO.java

@@ -45,4 +45,9 @@ public class PtSettlementDO extends BaseDO {
      */
     private Boolean platformTransferConfirm;
 
+    /**
+     * 抵扣消费分
+     */
+    private Long consumptionPoints;
+
 }

+ 69 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/sharepath/SharePathDO.java

@@ -0,0 +1,69 @@
+package cn.newfeifan.mall.module.distri.dal.dataobject.sharepath;
+
+import cn.newfeifan.mall.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+/**
+ * 分销用户关系 DO
+ *
+ * @author 非繁人
+ */
+@TableName("distri_share_path")
+@KeySequence("distri_share_path_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SharePathDO extends BaseDO {
+
+    /**
+     * 层级
+     */
+    private Integer depth;
+    /**
+     * id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 推荐人
+     */
+    private Long ancestor;
+    /**
+     * 直推人
+     */
+    private Long descendant;
+    /**
+     * 顺序
+     */
+    private Integer sort;
+    /**
+     * 推荐人姓名
+     */
+    private String ancName;
+    /**
+     * 推荐人手机号
+     */
+    private String ancPhone;
+    /**
+     * 直推人姓名
+     */
+    private String descName;
+    /**
+     * 推荐人手机号
+     */
+    private String descPhone;
+    /**
+     * 直推人昵称
+     */
+    private String descNickName;
+    /**
+     * 推荐人昵称
+     */
+    private String ancNickName;
+}

+ 4 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/shopsettlement/ShopSettlementDO.java

@@ -57,4 +57,8 @@ public class ShopSettlementDO extends BaseDO {
      */
     private String attachment;
 
+    /**
+     * 抵扣消费分
+     */
+    private Long shopConsumptionPoints;
 }

+ 43 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/socialstatus/SocialStatusDO.java

@@ -0,0 +1,43 @@
+package cn.newfeifan.mall.module.distri.dal.dataobject.socialstatus;
+
+import cn.newfeifan.mall.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+/**
+ * 分销用户身价 DO
+ *
+ * @author 非繁人
+ */
+@TableName("distri_social_status")
+@KeySequence("distri_social_status_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SocialStatusDO extends BaseDO {
+
+    /**
+     * 用户编号
+     */
+    @TableId
+    private Long id;
+    /**
+     * 身价等级
+     */
+    private String level;
+    /**
+     * 身价名称
+     */
+    private String name;
+    /**
+     * 升级所需点数
+     */
+    private Long point;
+
+
+}

+ 64 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/socialstatuschangelog/SocialStatusChangeLogDO.java

@@ -0,0 +1,64 @@
+package cn.newfeifan.mall.module.distri.dal.dataobject.socialstatuschangelog;
+
+import cn.newfeifan.mall.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+import java.time.LocalDateTime;
+
+/**
+ * 会员身价变化日志 DO
+ *
+ * @author 非繁人
+ */
+@TableName("distri_social_status_change_log")
+@KeySequence("distri_social_status_change_log_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SocialStatusChangeLogDO extends BaseDO {
+
+    /**
+     * 会员身价变化日志id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 会员资产变化类别id
+     */
+    private Long socialStatusChangeCategoryId;
+    /**
+     * 身价点数在本类别操作的变化值
+     */
+    private Long variationValue;
+    /**
+     * 操作对应业务对象id,例如订单id
+     */
+    private Long objectId;
+    /**
+     * 是否已生效
+     */
+    private Boolean effective;
+    /**
+     * 描述
+     */
+    private String description;
+    /**
+     * 计划生效时间
+     */
+    private LocalDateTime planEffectiveTime;
+    /**
+     * 实际生效时间
+     */
+    private LocalDateTime actualEffectiveTime;
+    /**
+     * 用户ID
+     */
+    private Long userId;
+
+}

+ 96 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/usertopupconsumptionpointsorder/UserTopUpConsumptionPointsOrderDO.java

@@ -0,0 +1,96 @@
+package cn.newfeifan.mall.module.distri.dal.dataobject.usertopupconsumptionpointsorder;
+
+import cn.newfeifan.mall.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+import java.time.LocalDateTime;
+
+/**
+ * 用户充值消费分订单 DO
+ *
+ * @author 非繁人
+ */
+@TableName("distri_user_top_up_consumption_points_order")
+@KeySequence("distri_user_top_up_consumption_points_order_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class UserTopUpConsumptionPointsOrderDO extends BaseDO {
+
+    /**
+     * 用户充值消费分订单编号
+     */
+    @TableId
+    private Long id;
+    /**
+     * 订单流水号
+     */
+    private String no;
+    /**
+     * 订单来源终端
+     */
+    private Integer terminal;
+    /**
+     * 用户编号
+     */
+    private Long userId;
+    /**
+     * 用户 IP
+     */
+    private String userIp;
+    /**
+     * 商品标题
+     */
+    private String subject;
+    /**
+     * 充值消费分
+     */
+    private Long topUpConsumptionPoints;
+    /**
+     * 到账消费分
+     */
+    private Long practicalConsumptionPoints;
+    /**
+     * 用户名
+     */
+    private String userName;
+    /**
+     * 支付订单编号
+     */
+    private Long payOrderId;
+    /**
+     * 是否已支付:[0:未支付 1:已经支付过]
+     */
+    private Boolean payStatus;
+    /**
+     * 订单支付时间
+     */
+    private LocalDateTime payTime;
+    /**
+     * 支付成功的支付渠道
+     */
+    private String payChannelCode;
+    /**
+     * 订单完成时间
+     */
+    private LocalDateTime finishTime;
+    /**
+     * 订单取消时间
+     */
+    private LocalDateTime cancelTime;
+    /**
+     * 应付金额(总),单位:分
+     */
+    private Integer payPrice;
+    /**
+     * 计算百分比模板
+     */
+    private String percentTemplate;
+
+}

+ 28 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/consumptionchangelog/ConsumptionChangeLogMapper.java

@@ -0,0 +1,28 @@
+package cn.newfeifan.mall.module.distri.dal.mysql.consumptionchangelog;
+
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.mybatis.core.mapper.BaseMapperX;
+import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.newfeifan.mall.module.distri.controller.admin.consumptionchangelog.vo.ConsumptionChangeLogPageReqVO;
+import cn.newfeifan.mall.module.distri.dal.dataobject.consumptionchangelog.ConsumptionChangeLogDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 平台消费分变动记录 Mapper
+ *
+ * @author 非繁人
+ */
+@Mapper
+public interface ConsumptionChangeLogMapper extends BaseMapperX<ConsumptionChangeLogDO> {
+
+    default PageResult<ConsumptionChangeLogDO> selectPage(ConsumptionChangeLogPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<ConsumptionChangeLogDO>()
+                .eqIfPresent(ConsumptionChangeLogDO::getUserId, reqVO.getUserId())
+                .eqIfPresent(ConsumptionChangeLogDO::getConsumptionPoints, reqVO.getConsumptionPoints())
+                .eqIfPresent(ConsumptionChangeLogDO::getAfterConsumptionPoints, reqVO.getAfterConsumptionPoints())
+                .eqIfPresent(ConsumptionChangeLogDO::getConsumptionStatus, reqVO.getConsumptionStatus())
+                .betweenIfPresent(ConsumptionChangeLogDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(ConsumptionChangeLogDO::getId));
+    }
+
+}

+ 36 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/duser/DuserMapper.java

@@ -0,0 +1,36 @@
+package cn.newfeifan.mall.module.distri.dal.mysql.duser;
+
+
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.mybatis.core.mapper.BaseMapperX;
+import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.newfeifan.mall.module.distri.controller.admin.duser.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.duser.DuserDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 推荐用户 Mapper
+ *
+ * @author 非繁人
+ */
+@Mapper
+public interface DuserMapper extends BaseMapperX<DuserDO> {
+
+
+    default PageResult<DuserDO> selectPage(DuserPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<DuserDO>()
+                .eqIfPresent(DuserDO::getUserId, reqVO.getUserId())
+                .likeIfPresent(DuserDO::getName, reqVO.getName())
+                .eqIfPresent(DuserDO::getMobile, reqVO.getMobile())
+                .eqIfPresent(DuserDO::getIntegralId, reqVO.getIntegralId())
+                .eqIfPresent(DuserDO::getSocialStatusId, reqVO.getSocialStatusId())
+                .eqIfPresent(DuserDO::getSocialStatusPoint, reqVO.getSocialStatusPoint())
+                .betweenIfPresent(DuserDO::getCreateTime, reqVO.getCreateTime())
+                .eqIfPresent(DuserDO::getSource, reqVO.getSource())
+                .eqIfPresent(DuserDO::getSocialUpNeed, reqVO.getSocialUpNeed())
+                .eqIfPresent(DuserDO::getCategoryId, reqVO.getCategoryId())
+                .likeIfPresent(DuserDO::getNickName, reqVO.getNickName())
+                .orderByAsc(DuserDO::getId));
+    }
+    int hasParent(Long userId);
+}

+ 11 - 8
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/ptprofit/PtProfitMapper.java

@@ -1,6 +1,9 @@
 package cn.newfeifan.mall.module.distri.dal.mysql.ptprofit;
 
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
 import cn.newfeifan.mall.framework.mybatis.core.mapper.BaseMapperX;
+import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.newfeifan.mall.module.distri.controller.admin.ptprofit.vo.PtProfitPageReqVO;
 import cn.newfeifan.mall.module.distri.dal.dataobject.ptprofit.PtProfitDO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -17,14 +20,14 @@ import java.util.Map;
 @Mapper
 public interface PtProfitMapper extends BaseMapperX<PtProfitDO> {
 
-//    default PageResult<PtProfitDO> selectPage(PtProfitPageReqVO reqVO) {
-//        return selectPage(reqVO, new LambdaQueryWrapperX<PtProfitDO>()
-//                .eqIfPresent(PtProfitDO::getPtAdd, reqVO.getPtAdd())
-//                .eqIfPresent(PtProfitDO::getPtGrossAdd, reqVO.getPtGrossAdd())
-//                .eqIfPresent(PtProfitDO::getPtTotalAdd, reqVO.getPtTotalAdd())
-//                .betweenIfPresent(PtProfitDO::getCreateTime, reqVO.getCreateTime())
-//                .orderByDesc(PtProfitDO::getId));
-//    }
+    default PageResult<PtProfitDO> selectPage(PtProfitPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<PtProfitDO>()
+                .eqIfPresent(PtProfitDO::getPtAdd, reqVO.getPtAdd())
+                .eqIfPresent(PtProfitDO::getPtGrossAdd, reqVO.getPtGrossAdd())
+                .eqIfPresent(PtProfitDO::getPtTotalAdd, reqVO.getPtTotalAdd())
+                .betweenIfPresent(PtProfitDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(PtProfitDO::getId));
+    }
 
     @Update("UPDATE distri_integral SET current_quota = current_quota + #{amount},freeze_quota = freeze_quota + #{freeze_mount} WHERE (current_quota + #{amount2})>=0 and user_id=#{userId} and (freeze_quota + #{freeze_mount2})>=0 ")
     int updateUserIntegral(@Param("amount") Long amount,

+ 60 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/sharepath/SharePathMapper.java

@@ -0,0 +1,60 @@
+package cn.newfeifan.mall.module.distri.dal.mysql.sharepath;
+
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.mybatis.core.mapper.BaseMapperX;
+import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.newfeifan.mall.module.distri.controller.admin.sharepath.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.sharepath.SharePathDO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 分销用户关系 Mapper
+ *
+ * @author 非繁人
+ */
+@Mapper
+public interface SharePathMapper extends BaseMapperX<SharePathDO> {
+
+    default PageResult<SharePathDO> selectPage(SharePathPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<SharePathDO>()
+                .eqIfPresent(SharePathDO::getDepth, reqVO.getDepth())
+                .betweenIfPresent(SharePathDO::getCreateTime, reqVO.getCreateTime())
+                .eqIfPresent(SharePathDO::getAncestor, reqVO.getAncestor())
+                .eqIfPresent(SharePathDO::getDescendant, reqVO.getDescendant())
+                .eqIfPresent(SharePathDO::getSort, reqVO.getSort())
+                .likeIfPresent(SharePathDO::getAncName, reqVO.getAncName())
+                .eqIfPresent(SharePathDO::getAncPhone, reqVO.getAncPhone())
+                .likeIfPresent(SharePathDO::getDescName, reqVO.getDescName())
+                .eqIfPresent(SharePathDO::getDescPhone, reqVO.getDescPhone())
+                .likeIfPresent(SharePathDO::getAncNickName, reqVO.getAncNickName())
+                .likeIfPresent(SharePathDO::getDescNickName, reqVO.getDescNickName())
+                .orderByDesc(SharePathDO::getId));
+    }
+
+    void addNode(@Param("parentId") Long parentId,
+                 @Param("parentName") String parentName,
+                 @Param("parentNickName") String parentNickName,
+                 @Param("parentMobile") String parentMobile,
+
+                 @Param("newDescendantId") Long newDescendantId,
+                 @Param("newDescendantName") String newDescendantName,
+                 @Param("newDescendantNickName") String newDescendantNickName,
+                 @Param("newDescendantMobile") String newDescendantMobile);
+
+
+    int getMaxSortByParentId(@Param("parentId") Long parentId);
+
+    // 删除节点及其子节点的旧祖先关系
+    void deleteOldAncestors(@Param("nodeId") Long nodeId);
+
+    // 添加节点及其子节点的新祖先关系
+    void addNewAncestors(@Param("nodeId") Long nodeId, @Param("newParentId") Long newParentId);
+
+}
+
+
+
+

+ 27 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/socialstatus/SocialStatusMapper.java

@@ -0,0 +1,27 @@
+package cn.newfeifan.mall.module.distri.dal.mysql.socialstatus;
+
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.mybatis.core.mapper.BaseMapperX;
+import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.newfeifan.mall.module.distri.controller.admin.socialstatus.vo.SocialStatusPageReqVO;
+import cn.newfeifan.mall.module.distri.dal.dataobject.socialstatus.SocialStatusDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 分销用户身价 Mapper
+ *
+ * @author 非繁人
+ */
+@Mapper
+public interface SocialStatusMapper extends BaseMapperX<SocialStatusDO> {
+
+    default PageResult<SocialStatusDO> selectPage(SocialStatusPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<SocialStatusDO>()
+                .eqIfPresent(SocialStatusDO::getLevel, reqVO.getLevel())
+                .likeIfPresent(SocialStatusDO::getName, reqVO.getName())
+                .betweenIfPresent(SocialStatusDO::getCreateTime, reqVO.getCreateTime())
+                .eqIfPresent(SocialStatusDO::getPoint, reqVO.getPoint())
+                .orderByDesc(SocialStatusDO::getId));
+    }
+
+}

+ 42 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/socialstatuschangelog/SocialStatusChangeLogMapper.java

@@ -0,0 +1,42 @@
+package cn.newfeifan.mall.module.distri.dal.mysql.socialstatuschangelog;
+
+
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.mybatis.core.mapper.BaseMapperX;
+import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.newfeifan.mall.module.distri.controller.admin.socialstatuschangelog.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.socialstatuschangelog.SocialStatusChangeLogDO;
+import cn.newfeifan.mall.module.distri.enums.SocialStatusEnum;
+import org.apache.ibatis.annotations.Mapper;
+
+
+/**
+ * 会员身价变化日志 Mapper
+ *
+ * @author 非繁人
+ */
+@Mapper
+public interface SocialStatusChangeLogMapper extends BaseMapperX<SocialStatusChangeLogDO> {
+
+    default PageResult<SocialStatusChangeLogDO> selectPage(SocialStatusChangeLogPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<SocialStatusChangeLogDO>()
+                .eqIfPresent(SocialStatusChangeLogDO::getSocialStatusChangeCategoryId, reqVO.getSocialStatusChangeCategoryId())
+                .eqIfPresent(SocialStatusChangeLogDO::getVariationValue, reqVO.getVariationValue())
+                .eqIfPresent(SocialStatusChangeLogDO::getObjectId, reqVO.getObjectId())
+                .eqIfPresent(SocialStatusChangeLogDO::getEffective, reqVO.getEffective())
+                .eqIfPresent(SocialStatusChangeLogDO::getDescription, reqVO.getDescription())
+                .betweenIfPresent(SocialStatusChangeLogDO::getPlanEffectiveTime, reqVO.getPlanEffectiveTime())
+                .betweenIfPresent(SocialStatusChangeLogDO::getActualEffectiveTime, reqVO.getActualEffectiveTime())
+                .betweenIfPresent(SocialStatusChangeLogDO::getCreateTime, reqVO.getCreateTime())
+                .eqIfPresent(SocialStatusChangeLogDO::getUserId, reqVO.getUserId())
+                .orderByDesc(SocialStatusChangeLogDO::getId));
+    }
+
+     default PageResult<SocialStatusChangeLogDO> getUserSignLog(SocialStatusChangeLogPageReqVO pageReqVO){
+        return selectPage(pageReqVO ,new LambdaQueryWrapperX<SocialStatusChangeLogDO>()
+                .eq(SocialStatusChangeLogDO::getUserId, pageReqVO.getUserId())
+                .eq(SocialStatusChangeLogDO::getSocialStatusChangeCategoryId, SocialStatusEnum.SIGN_IN_SOCIAL.getStatus())
+                .orderByDesc(SocialStatusChangeLogDO::getCreateTime)
+        );
+     }
+}

+ 41 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/usertopupconsumptionpointsorder/UserTopUpConsumptionPointsOrderMapper.java

@@ -0,0 +1,41 @@
+package cn.newfeifan.mall.module.distri.dal.mysql.usertopupconsumptionpointsorder;
+
+
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.mybatis.core.mapper.BaseMapperX;
+import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.newfeifan.mall.module.distri.controller.admin.usertopupconsumptionpointsorder.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.usertopupconsumptionpointsorder.UserTopUpConsumptionPointsOrderDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 用户充值消费分订单 Mapper
+ *
+ * @author 非繁人
+ */
+@Mapper
+public interface UserTopUpConsumptionPointsOrderMapper extends BaseMapperX<UserTopUpConsumptionPointsOrderDO> {
+
+    default PageResult<UserTopUpConsumptionPointsOrderDO> selectPage(UserTopUpConsumptionPointsOrderPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<UserTopUpConsumptionPointsOrderDO>()
+                .eqIfPresent(UserTopUpConsumptionPointsOrderDO::getNo, reqVO.getNo())
+                .eqIfPresent(UserTopUpConsumptionPointsOrderDO::getTerminal, reqVO.getTerminal())
+                .eqIfPresent(UserTopUpConsumptionPointsOrderDO::getUserId, reqVO.getUserId())
+                .eqIfPresent(UserTopUpConsumptionPointsOrderDO::getUserIp, reqVO.getUserIp())
+                .eqIfPresent(UserTopUpConsumptionPointsOrderDO::getSubject, reqVO.getSubject())
+                .eqIfPresent(UserTopUpConsumptionPointsOrderDO::getTopUpConsumptionPoints, reqVO.getTopUpConsumptionPoints())
+                .eqIfPresent(UserTopUpConsumptionPointsOrderDO::getPracticalConsumptionPoints, reqVO.getPracticalConsumptionPoints())
+                .likeIfPresent(UserTopUpConsumptionPointsOrderDO::getUserName, reqVO.getUserName())
+                .eqIfPresent(UserTopUpConsumptionPointsOrderDO::getPayOrderId, reqVO.getPayOrderId())
+                .eqIfPresent(UserTopUpConsumptionPointsOrderDO::getPayStatus, reqVO.getPayStatus())
+                .betweenIfPresent(UserTopUpConsumptionPointsOrderDO::getPayTime, reqVO.getPayTime())
+                .eqIfPresent(UserTopUpConsumptionPointsOrderDO::getPayChannelCode, reqVO.getPayChannelCode())
+                .betweenIfPresent(UserTopUpConsumptionPointsOrderDO::getFinishTime, reqVO.getFinishTime())
+                .betweenIfPresent(UserTopUpConsumptionPointsOrderDO::getCancelTime, reqVO.getCancelTime())
+                .eqIfPresent(UserTopUpConsumptionPointsOrderDO::getPayPrice, reqVO.getPayPrice())
+                .eqIfPresent(UserTopUpConsumptionPointsOrderDO::getPercentTemplate, reqVO.getPercentTemplate())
+                .betweenIfPresent(UserTopUpConsumptionPointsOrderDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(UserTopUpConsumptionPointsOrderDO::getId));
+    }
+
+}

+ 23 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/mq/consumer/topupconsumptionpoints/topupconsumptionpoints/TopUpConsumptionPointsConsumer.java

@@ -0,0 +1,23 @@
+package cn.newfeifan.mall.module.distri.mq.consumer.topupconsumptionpoints.topupconsumptionpoints;
+
+import cn.newfeifan.mall.module.distri.service.usertopupconsumptionpointsorder.UserTopUpConsumptionPointsOrderService;
+import cn.newfeifan.mall.module.pay.dal.dataobject.order.PayOrderDO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.event.EventListener;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+@Component
+@Slf4j
+public class TopUpConsumptionPointsConsumer {
+
+    @Resource
+    private UserTopUpConsumptionPointsOrderService userTopUpConsumptionPointsOrderService;
+
+    @EventListener
+    public void onMessage(PayOrderDO payOrderDO) {
+        //修改订单状态,并计算权益
+        userTopUpConsumptionPointsOrderService.topUpConsumptionPoints(payOrderDO);
+    }
+}

+ 56 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/consumptionchangelog/ConsumptionChangeLogService.java

@@ -0,0 +1,56 @@
+package cn.newfeifan.mall.module.distri.service.consumptionchangelog;
+
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.module.distri.controller.admin.consumptionchangelog.vo.ConsumptionChangeLogPageReqVO;
+import cn.newfeifan.mall.module.distri.controller.admin.consumptionchangelog.vo.ConsumptionChangeLogRespVO;
+import cn.newfeifan.mall.module.distri.controller.admin.consumptionchangelog.vo.ConsumptionChangeLogSaveReqVO;
+import cn.newfeifan.mall.module.distri.dal.dataobject.consumptionchangelog.ConsumptionChangeLogDO;
+
+import javax.validation.Valid;
+
+/**
+ * 平台消费分变动记录 Service 接口
+ *
+ * @author 非繁人
+ */
+public interface ConsumptionChangeLogService {
+
+    /**
+     * 创建平台消费分变动记录
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createConsumptionChangeLog(@Valid ConsumptionChangeLogSaveReqVO createReqVO);
+
+    /**
+     * 更新平台消费分变动记录
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateConsumptionChangeLog(@Valid ConsumptionChangeLogSaveReqVO updateReqVO);
+
+    /**
+     * 删除平台消费分变动记录
+     *
+     * @param id 编号
+     */
+    void deleteConsumptionChangeLog(Long id);
+
+    /**
+     * 获得平台消费分变动记录
+     *
+     * @param id 编号
+     * @return 平台消费分变动记录
+     */
+    ConsumptionChangeLogDO getConsumptionChangeLog(Long id);
+
+    /**
+     * 获得平台消费分变动记录分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 平台消费分变动记录分页
+     */
+    PageResult<ConsumptionChangeLogRespVO> getConsumptionChangeLogPage(ConsumptionChangeLogPageReqVO pageReqVO);
+
+}

+ 87 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/consumptionchangelog/ConsumptionChangeLogServiceImpl.java

@@ -0,0 +1,87 @@
+package cn.newfeifan.mall.module.distri.service.consumptionchangelog;
+
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.common.util.object.BeanUtils;
+import cn.newfeifan.mall.module.distri.controller.admin.consumptionchangelog.vo.ConsumptionChangeLogPageReqVO;
+import cn.newfeifan.mall.module.distri.controller.admin.consumptionchangelog.vo.ConsumptionChangeLogRespVO;
+import cn.newfeifan.mall.module.distri.controller.admin.consumptionchangelog.vo.ConsumptionChangeLogSaveReqVO;
+import cn.newfeifan.mall.module.distri.dal.dataobject.consumptionchangelog.ConsumptionChangeLogDO;
+import cn.newfeifan.mall.module.distri.dal.mysql.consumptionchangelog.ConsumptionChangeLogMapper;
+import cn.newfeifan.mall.module.distri.enums.ConsumptionEnum;
+import cn.newfeifan.mall.module.member.dal.dataobject.user.MemberUserDO;
+import cn.newfeifan.mall.module.member.service.user.MemberUserService;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+
+import static cn.newfeifan.mall.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.newfeifan.mall.module.distri.enums.ErrorCodeConstants.CONSUMPTION_CHANGE_LOG_NOT_EXISTS;
+
+/**
+ * 平台消费分变动记录 Service 实现类
+ *
+ * @author 非繁人
+ */
+@Service
+@Validated
+public class ConsumptionChangeLogServiceImpl implements ConsumptionChangeLogService {
+
+    @Resource
+    private ConsumptionChangeLogMapper consumptionChangeLogMapper;
+
+    @Resource
+    private MemberUserService memberUserService;
+
+    @Override
+    public Long createConsumptionChangeLog(ConsumptionChangeLogSaveReqVO createReqVO) {
+        // 插入
+        ConsumptionChangeLogDO consumptionChangeLog = BeanUtils.toBean(createReqVO, ConsumptionChangeLogDO.class);
+        consumptionChangeLogMapper.insert(consumptionChangeLog);
+        // 返回
+        return consumptionChangeLog.getId();
+    }
+
+    @Override
+    public void updateConsumptionChangeLog(ConsumptionChangeLogSaveReqVO updateReqVO) {
+        // 校验存在
+        validateConsumptionChangeLogExists(updateReqVO.getId());
+        // 更新
+        ConsumptionChangeLogDO updateObj = BeanUtils.toBean(updateReqVO, ConsumptionChangeLogDO.class);
+        consumptionChangeLogMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteConsumptionChangeLog(Long id) {
+        // 校验存在
+        validateConsumptionChangeLogExists(id);
+        // 删除
+        consumptionChangeLogMapper.deleteById(id);
+    }
+
+    private void validateConsumptionChangeLogExists(Long id) {
+        if (consumptionChangeLogMapper.selectById(id) == null) {
+            throw exception(CONSUMPTION_CHANGE_LOG_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public ConsumptionChangeLogDO getConsumptionChangeLog(Long id) {
+        return consumptionChangeLogMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<ConsumptionChangeLogRespVO> getConsumptionChangeLogPage(ConsumptionChangeLogPageReqVO pageReqVO) {
+        PageResult<ConsumptionChangeLogRespVO> bean = BeanUtils.toBean(consumptionChangeLogMapper.selectPage(pageReqVO), ConsumptionChangeLogRespVO.class);
+
+        for (ConsumptionChangeLogRespVO consumptionChangeLogRespVO : bean.getList()) {
+            consumptionChangeLogRespVO.setConsumptionStatusName(ConsumptionEnum.getName(consumptionChangeLogRespVO.getConsumptionStatus()));
+            if(consumptionChangeLogRespVO.getGenerateUserId() != null){
+                MemberUserDO user = memberUserService.getUser(consumptionChangeLogRespVO.getGenerateUserId());
+                consumptionChangeLogRespVO.setGenerateUserName(user.getUsername());
+            }
+        }
+        return bean;
+    }
+
+}

+ 11 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/duser/DuserService.java

@@ -0,0 +1,11 @@
+package cn.newfeifan.mall.module.distri.service.duser;
+
+/**
+ * 推荐用户 Service 接口
+ *
+ * @author 非繁人
+ */
+public interface DuserService {
+
+    void updateDuserSocial(Long userId, Long social, Integer socialStatus);
+}

+ 59 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/duser/DuserServiceImpl.java

@@ -0,0 +1,59 @@
+package cn.newfeifan.mall.module.distri.service.duser;
+
+import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.newfeifan.mall.module.distri.controller.admin.socialstatus.bo.SocialStatusBO;
+import cn.newfeifan.mall.module.distri.dal.dataobject.duser.DuserDO;
+import cn.newfeifan.mall.module.distri.dal.mysql.duser.DuserMapper;
+import cn.newfeifan.mall.module.distri.enums.SocialStatusEnum;
+import cn.newfeifan.mall.module.distri.service.socialstatus.SocialStatusService;
+import cn.newfeifan.mall.module.distri.service.socialstatuschangelog.SocialStatusChangeLogService;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+import java.util.Objects;
+
+import static cn.newfeifan.mall.module.distri.constant.DistriConstants.PT_ID;
+
+/**
+ * 推荐用户 Service 实现类
+ *
+ * @author 非繁人
+ */
+@Service
+@Validated
+public class DuserServiceImpl implements DuserService {
+
+    @Resource
+    private DuserMapper duserMapper;
+    @Resource
+    private SocialStatusChangeLogService socialStatusChangeLogService;
+
+    @Resource
+    private SocialStatusService socialStatusService;
+
+    @Override
+    public void updateDuserSocial(Long userId, Long social, Integer socialStatus) {
+
+        //平台不参与身价
+        if(Objects.equals(userId, PT_ID)){
+            return;
+        }
+
+        //计算本次获得的身价
+        DuserDO duser = getDuserByUser(userId);
+        duser.setSocialStatusPoint(duser.getSocialStatusPoint() + social);
+
+        SocialStatusBO socialStatusBO = socialStatusService.calculateSocial(duser.getSocialStatusPoint());
+        duser.setSocialUpNeed(socialStatusBO.getSocialUpNeed());
+        duser.setSocialStatusId(socialStatusBO.getId());
+
+        duserMapper.updateById(duser);
+
+        socialStatusChangeLogService.createSocialStatusChangeLog(userId, social,userId, SocialStatusEnum.getSocialStatusEnumByCode(socialStatus));
+    }
+
+    private DuserDO getDuserByUser(Long id) {
+        return duserMapper.selectOne(new LambdaQueryWrapperX<DuserDO>().eq(DuserDO::getUserId, id));
+    }
+}

+ 29 - 1
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/integral/IntegralService.java

@@ -1,7 +1,11 @@
 package cn.newfeifan.mall.module.distri.service.integral;
 
+import cn.newfeifan.mall.module.distri.controller.admin.integral.vo.IntegralSaveReqVO;
+import cn.newfeifan.mall.module.distri.dal.dataobject.integral.IntegralDO;
 import cn.newfeifan.mall.module.distri.enums.CaclEnum;
 
+import javax.validation.Valid;
+
 /**
  * 推荐用户积分 Service 接口
  *
@@ -63,7 +67,7 @@ public interface IntegralService {
      * @param amount       用户积分变化金额,可为负数
      * @param freezeAmount 用户冻结积分变化金额,可为负数
      */
-    void updateUserIntegral(Long generateUserId,//导致产生积分变动的用户ID
+    Boolean updateUserIntegral(Long generateUserId,//导致产生积分变动的用户ID
                             Long userId, CaclEnum caclEnum, Long amount, Long freezeAmount,
                             Long tradeOrderId,
                             String orderNum
@@ -90,4 +94,28 @@ public interface IntegralService {
      * @param orderNum 订单号
      */
     void updateIntegralFreezeHighQuota(Long generateUserId, Long userId, CaclEnum caclEnum, Long totalFreezeHighQuota, Long tradeOrderId, String orderNum);
+
+    /**
+     * 修改用户消费积分
+     * @param generateUserId 用户
+     * @param userId 用户
+     * @param payConsumptionPoints 消费分
+     * @param tradeOrderId  订单id
+     * @param tradeOrderNum 订单编号
+     */
+    void updateUserConsumptionPoints(Long generateUserId, Long userId, Long payConsumptionPoints, Long tradeOrderId, String tradeOrderNum);
+
+    /**
+     * 根据用户ID查询是否有钱包
+     * @param descendant 用户id
+     * @return 钱包
+     */
+    IntegralDO selectByUser(Long descendant);
+
+    /**
+     * 更新推荐用户积分
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateIntegral(@Valid IntegralSaveReqVO updateReqVO);
 }

+ 79 - 39
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/integral/IntegralServiceImpl.java

@@ -1,20 +1,28 @@
 package cn.newfeifan.mall.module.distri.service.integral;
 
+import cn.newfeifan.mall.framework.common.util.object.BeanUtils;
+import cn.newfeifan.mall.module.distri.controller.admin.consumptionchangelog.vo.ConsumptionChangeLogSaveReqVO;
+import cn.newfeifan.mall.module.distri.controller.admin.integral.vo.IntegralSaveReqVO;
 import cn.newfeifan.mall.module.distri.controller.admin.ptprofitlog.vo.PtProfitLogSaveReqVO;
 import cn.newfeifan.mall.module.distri.dal.dataobject.integral.IntegralDO;
 import cn.newfeifan.mall.module.distri.dal.dataobject.orderpercentage.OrderPercentageDO;
-import cn.newfeifan.mall.module.distri.dal.dataobject.ptprofitlog.PtProfitLogDO;
 import cn.newfeifan.mall.module.distri.dal.mysql.integral.IntegralMapper;
 import cn.newfeifan.mall.module.distri.dal.mysql.ptprofit.PtProfitMapper;
 import cn.newfeifan.mall.module.distri.enums.CaclEnum;
+import cn.newfeifan.mall.module.distri.enums.ConsumptionEnum;
+import cn.newfeifan.mall.module.distri.service.consumptionchangelog.ConsumptionChangeLogService;
 import cn.newfeifan.mall.module.distri.service.orderpercentage.OrderPercentageService;
 import cn.newfeifan.mall.module.distri.service.ptprofitlog.PtProfitLogService;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 import java.util.Map;
 
+import static cn.newfeifan.mall.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.newfeifan.mall.module.distri.enums.ErrorCodeConstants.INTEGRAL_NOT_EXISTS;
+
 /**
  * 推荐用户积分 Service 实现类
  *
@@ -33,6 +41,9 @@ public class IntegralServiceImpl implements IntegralService {
     @Resource
     private OrderPercentageService orderPercentageService;
 
+    @Resource
+    private ConsumptionChangeLogService consumptionChangeLogService;
+
     /**
      * add by Ben
      * 修改用户积分
@@ -43,58 +54,50 @@ public class IntegralServiceImpl implements IntegralService {
      * @param freezeAmount 用户冻结积分变化金额,可为负数
      */
     @Override
-    public void updateUserIntegral(Long generateUserId,//导致产生积分变动的用户ID
+    public Boolean updateUserIntegral(Long generateUserId,//导致产生积分变动的用户ID
                                    Long userId, CaclEnum caclEnum, Long amount, Long freezeAmount,
                                    Long tradeOrderId,
                                    String orderNum
     ) {
-        //修改用户积分钱包的积分
-        IntegralDO integralDO = integralMapper.selectOne(IntegralDO::getUserId, userId);
-
-        // 退款返回 为 +
-        integralDO.setCurrentQuota(integralDO.getCurrentQuota() + amount);
+        Boolean success = null;
 
-        // 直推奖超出额度
-        Long ancestorQuotaAmount = 0L;
-        // 如果是推荐人
-        if (caclEnum.getType().equals(CaclEnum.ORDER_REFUND_INTEGRAL_ANCESTER.getType())) {
+        //修改用户积分钱包的积分
+        int effectRowNum = ptProfitMapper.updateUserIntegral(amount,amount,freezeAmount,freezeAmount,userId);
 
-            PtProfitLogDO profitLog = ptProfitLogService.selectProfitLogByUserIdWithProfitStatus(userId, CaclEnum.RECOMMENDED_PERSON_QUOTA.getType(), orderNum);
+        if (effectRowNum==1) {//如果成功修改积分记录
+            success = true;
 
-            if(profitLog.getAncestorQuotaAmount() != null && profitLog.getAncestorQuotaAmount() != 0){
-                ancestorQuotaAmount = profitLog.getAncestorQuotaAmount();
-            }
-            integralDO.setCurrentQuota(integralDO.getCurrentQuota() + ancestorQuotaAmount);
-            // 退回扣减的最大可用额度,和累加获得的直推奖额度
-            integralDO.setHighQuota(integralDO.getHighQuota() - amount - ancestorQuotaAmount);
-            integralDO.setAncestorQuota(integralDO.getAncestorQuota() + amount + ancestorQuotaAmount);
-        }
+            //用户修改后的当前可用的钱包余额
+            Long afterAmount = null;
+            //用户修改后的冻结积分钱包余额
+            Long afterFreezeAmount = null;
 
-        integralMapper.updateById(integralDO);
+            //查询用户修改后的积分
+            Map<String, Object> map = ptProfitMapper.selectUserIntegral(userId);
+            Object currentQuotaObj = map.get("current_quota");
+            Object freezeQuotaObj = map.get("freeze_quota");
 
-        //用户修改后的当前可用的钱包余额
-        Long afterAmount = null;
-        //用户修改后的冻结积分钱包余额
-        Long afterFreezeAmount = null;
+            afterAmount = (Long)currentQuotaObj;
+            afterFreezeAmount = (Long)freezeQuotaObj;
 
-        //查询用户修改后的积分
-        Map<String, Object> map = ptProfitMapper.selectUserIntegral(userId);
-        Object currentQuotaObj = map.get("current_quota");
-        Object freezeQuotaObj = map.get("freeze_quota");
+            if(afterAmount<0||afterFreezeAmount<0){
+                throw new RuntimeException("用户钱包为负数:用户IO为"+userId+"的用户可用钱包为"+afterAmount+",冻结钱包为"+afterFreezeAmount);
+            }
 
-        afterAmount = (Long) currentQuotaObj;
-        afterFreezeAmount = (Long) freezeQuotaObj;
+            //记录用户的积分变动日志
+            ptProfitLogService.addMessage(generateUserId,//导致产生积分变动的用户ID
+                    userId, caclEnum, amount, afterAmount,
+                    freezeAmount, afterFreezeAmount,null,tradeOrderId,orderNum);
 
-        //记录用户的积分变动日志
-        if (caclEnum.getType().equals(CaclEnum.ORDER_REFUND_INTEGRAL_ANCESTER.getType())) {
-            OrderPercentageDO orderPercentageDO = orderPercentageService.queryStatus();
-            ptProfitLogService.addMessage(generateUserId, userId, caclEnum, amount + ancestorQuotaAmount, afterAmount,
-                    freezeAmount, afterFreezeAmount, null, tradeOrderId, orderNum, -amount - ancestorQuotaAmount, integralDO.getHighQuota() + Long.parseLong(orderPercentageDO.getBaseMaxQuota()));
-        } else {
-            ptProfitLogService.addMessage(generateUserId, userId, caclEnum, amount, afterAmount,
-                    freezeAmount, afterFreezeAmount, null, tradeOrderId, orderNum, null, null);
+        }else if(effectRowNum<1){//如果钱包积分不足,不够抵扣
+            success = false;
+        } else if (effectRowNum>1) {
+//            success = false;
+            throw new RuntimeException("用户IO为"+userId+"的用户钱包不只一个!");
         }
 
+        return success;
+
     }
 
     @Override
@@ -122,6 +125,43 @@ public class IntegralServiceImpl implements IntegralService {
         ptProfitLogService.createPtProfitLog(profitLogSaveReqVO);
     }
 
+    @Override
+    public void updateUserConsumptionPoints(Long generateUserId, Long userId, Long payConsumptionPoints, Long tradeOrderId, String tradeOrderNum) {
+        // 获取用户钱包,然后退回消费分
+        IntegralDO integralDO = integralMapper.selectOne(IntegralDO::getUserId, userId);
+        integralDO.setConsumptionPoints(integralDO.getConsumptionPoints() + payConsumptionPoints);
+        integralMapper.updateById(integralDO);
+
+        // 记录消费分变动日志
+        consumptionChangeLogService.createConsumptionChangeLog(ConsumptionChangeLogSaveReqVO.builder()
+                        .userId(userId)
+                        .generateUserId(generateUserId)
+                        .consumptionPoints(payConsumptionPoints)
+                        .afterConsumptionPoints(integralDO.getConsumptionPoints())
+                        .consumptionStatus(ConsumptionEnum.REFUND_ORDER.getType())
+                .build());
+
+    }
+
+    @Override
+    public IntegralDO selectByUser(Long descendant) {
+        return integralMapper.selectOne(new LambdaQueryWrapper<IntegralDO>().eq(IntegralDO::getUserId, descendant));
+    }
+
+    @Override
+    public void updateIntegral(IntegralSaveReqVO updateReqVO) {
+        // 校验存在
+        validateIntegralExists(updateReqVO.getId());
+        // 更新
+        IntegralDO updateObj = BeanUtils.toBean(updateReqVO, IntegralDO.class);
+        integralMapper.updateById(updateObj);
+    }
+    private void validateIntegralExists(Long id) {
+        if (integralMapper.selectById(id) == null) {
+            throw exception(INTEGRAL_NOT_EXISTS);
+        }
+    }
+
 //
 //    /**
 //     * 修改用户身价

+ 63 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ptprofit/PtProfitService.java

@@ -0,0 +1,63 @@
+package cn.newfeifan.mall.module.distri.service.ptprofit;
+
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.module.distri.controller.admin.ptprofit.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.ptprofit.PtProfitDO;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * 平台利润 Service 接口
+ *
+ * @author 非繁人
+ */
+public interface PtProfitService {
+
+    /**
+     * 创建平台利润
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createPtProfit(@Valid PtProfitSaveReqVO createReqVO);
+
+    /**
+     * 更新平台利润
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updatePtProfit(@Valid PtProfitSaveReqVO updateReqVO);
+
+    /**
+     * 删除平台利润
+     *
+     * @param id 编号
+     */
+    void deletePtProfit(Long id);
+
+    /**
+     * 获得平台利润
+     *
+     * @param id 编号
+     * @return 平台利润
+     */
+    PtProfitDO getPtProfit(Long id);
+
+    /**
+     * 获得平台利润分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 平台利润分页
+     */
+    PageResult<PtProfitDO> getPtProfitPage(PtProfitPageReqVO pageReqVO);
+
+    /**
+     * 获取当前平台信息
+     */
+    PtProfitDO getPtProfit();
+
+
+    void saveBatch(List<PtProfitSaveReqVO> ptProfitSaveReqVOS);
+
+}

+ 85 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ptprofit/PtProfitServiceImpl.java

@@ -0,0 +1,85 @@
+package cn.newfeifan.mall.module.distri.service.ptprofit;
+
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.common.util.object.BeanUtils;
+import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.newfeifan.mall.module.distri.controller.admin.ptprofit.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.ptprofit.PtProfitDO;
+import cn.newfeifan.mall.module.distri.dal.mysql.ptprofit.PtProfitMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+import static cn.newfeifan.mall.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.newfeifan.mall.module.distri.enums.ErrorCodeConstants.PT_PROFIT_NOT_EXISTS;
+
+/**
+ * 平台利润 Service 实现类
+ *
+ * @author 非繁人
+ */
+@Service
+@Validated
+public class PtProfitServiceImpl implements PtProfitService {
+
+    @Resource
+    private PtProfitMapper ptProfitMapper;
+
+    @Override
+    public Long createPtProfit(PtProfitSaveReqVO createReqVO) {
+        // 插入
+        PtProfitDO ptProfit = BeanUtils.toBean(createReqVO, PtProfitDO.class);
+        ptProfitMapper.insert(ptProfit);
+        // 返回
+        return ptProfit.getId();
+    }
+
+    @Override
+    public void updatePtProfit(PtProfitSaveReqVO updateReqVO) {
+        // 校验存在
+        validatePtProfitExists(updateReqVO.getId());
+        // 更新
+        PtProfitDO updateObj = BeanUtils.toBean(updateReqVO, PtProfitDO.class);
+        ptProfitMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deletePtProfit(Long id) {
+        // 校验存在
+        validatePtProfitExists(id);
+        // 删除
+        ptProfitMapper.deleteById(id);
+    }
+
+    private void validatePtProfitExists(Long id) {
+        if (ptProfitMapper.selectById(id) == null) {
+            throw exception(PT_PROFIT_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public PtProfitDO getPtProfit(Long id) {
+        return ptProfitMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<PtProfitDO> getPtProfitPage(PtProfitPageReqVO pageReqVO) {
+        return ptProfitMapper.selectPage(pageReqVO);
+    }
+
+    @Override
+    public PtProfitDO getPtProfit() {
+        return ptProfitMapper.selectList(new LambdaQueryWrapperX<PtProfitDO>()).get(0);
+    }
+
+    @Override
+    public void saveBatch(List<PtProfitSaveReqVO> ptProfitSaveReqVOS) {
+
+        List<PtProfitDO> ptProfit = BeanUtils.toBean(ptProfitSaveReqVOS, PtProfitDO.class);
+        ptProfitMapper.insertBatch(ptProfit);
+
+    }
+
+}

+ 5 - 4
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ptprofitlog/PtProfitLogService.java

@@ -63,12 +63,13 @@ public interface PtProfitLogService {
 
     //记录用户的积分变动日志
     void addMessage(Long generateUserId,//导致产生积分变动的用户ID
-                    Long userId, CaclEnum caclEnum, Integer amount,
-                    Integer afterAmount, Integer freezeAmount,
-                    Integer afterFreezeAmount, String percentTemplate,
+                    Long userId, //实际变动积分的用户ID
+                    CaclEnum caclEnum, Long amount,
+                    Long afterAmount, Long freezeAmount,
+                    Long afterFreezeAmount, String percentTemplate,
                     Long tradeOrderId,
                     String OrderNum
-                    );
+    );
 
     void addMessage(Long generateUserId,//导致产生积分变动的用户ID
             Long userId, CaclEnum caclEnum, Long amount, Long afterAmount,

+ 18 - 1
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ptprofitlog/PtProfitLogServiceImpl.java

@@ -86,7 +86,24 @@ public class PtProfitLogServiceImpl implements PtProfitLogService {
     }
 
     @Override
-    public void addMessage(Long generateUserId,Long userId, CaclEnum caclEnum, Integer amount, Integer afterAmount, Integer freezeAmount, Integer afterFreezeAmount, String percentTemplate, Long tradeOrderId, String OrderNum) {
+    public void addMessage(Long generateUserId,//导致产生积分变动的用户ID
+                           Long userId, //实际变动积分的用户ID
+                           CaclEnum caclEnum, Long amount, Long afterAmount,
+                           Long freezeAmount, Long afterFreezeAmount,
+                           String percentTemplate,
+                           Long tradeOrderId,
+                           String OrderNum
+    ) {
+        PtProfitLogSaveReqVO ptProfitLog = PtProfitLogSaveReqVO.builder()
+                .afterAmount(afterAmount)
+                .amount(amount)
+                .percentTemplate(percentTemplate)
+                .userId(userId)
+                .generateUserId(generateUserId)
+                .profitStatus(caclEnum.getType()).orderId(tradeOrderId).orderNo(OrderNum)
+                .freezeAmount(freezeAmount).afterFreezeAmount(afterFreezeAmount)
+                .build();
+        ptProfitLogMapper.insert(BeanUtils.toBean(ptProfitLog, PtProfitLogDO.class));
 
     }
 

+ 19 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/sharepath/SharePathService.java

@@ -0,0 +1,19 @@
+package cn.newfeifan.mall.module.distri.service.sharepath;
+
+import cn.newfeifan.mall.module.distri.dal.dataobject.sharepath.SharePathDO;
+
+
+/**
+ * 分销用户关系 Service 接口
+ *
+ * @author 非繁人
+ */
+public interface SharePathService {
+    /**
+     * 通过直推人, 获取当前的直推关系
+     *
+     * @param userId 用户id
+     * @return 推荐人
+     */
+    SharePathDO getSharePathByDescendant(Long userId);
+}

+ 36 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/sharepath/SharePathServiceImpl.java

@@ -0,0 +1,36 @@
+package cn.newfeifan.mall.module.distri.service.sharepath;
+
+import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.newfeifan.mall.module.distri.dal.dataobject.sharepath.SharePathDO;
+import cn.newfeifan.mall.module.distri.dal.mysql.sharepath.SharePathMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * 分销用户关系 Service 实现类
+ *
+ * @author 非繁人
+ */
+@Service
+@Validated
+public class SharePathServiceImpl implements SharePathService {
+
+    @Resource
+    private SharePathMapper sharePathMapper;
+    @Override
+    public SharePathDO getSharePathByDescendant(Long userId) {
+
+        List<SharePathDO> sharePathDOS = sharePathMapper.selectList(new LambdaQueryWrapperX<SharePathDO>().eqIfPresent(SharePathDO::getDescendant, userId)
+                .eqIfPresent(SharePathDO::getDepth, 1));
+        if (sharePathDOS.isEmpty()) {
+            return null;
+        }
+        return sharePathDOS.get(0);
+    }
+
+
+
+}

+ 65 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/socialstatus/SocialStatusService.java

@@ -0,0 +1,65 @@
+package cn.newfeifan.mall.module.distri.service.socialstatus;
+
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.module.distri.controller.admin.socialstatus.bo.SocialStatusBO;
+import cn.newfeifan.mall.module.distri.controller.admin.socialstatus.vo.SocialStatusPageReqVO;
+import cn.newfeifan.mall.module.distri.controller.admin.socialstatus.vo.SocialStatusSaveReqVO;
+import cn.newfeifan.mall.module.distri.dal.dataobject.socialstatus.SocialStatusDO;
+
+import javax.validation.Valid;
+
+/**
+ * 分销用户身价 Service 接口
+ *
+ * @author 非繁人
+ */
+public interface SocialStatusService {
+
+    /**
+     * 创建分销用户身价
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createSocialStatus(@Valid SocialStatusSaveReqVO createReqVO);
+
+    /**
+     * 更新分销用户身价
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateSocialStatus(@Valid SocialStatusSaveReqVO updateReqVO);
+
+    /**
+     * 删除分销用户身价
+     *
+     * @param id 编号
+     */
+    void deleteSocialStatus(Long id);
+
+    /**
+     * 获得分销用户身价
+     *
+     * @param id 编号
+     * @return 分销用户身价
+     */
+    SocialStatusDO getSocialStatus(Long id);
+
+    /**
+     * 获得分销用户身价分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 分销用户身价分页
+     */
+    PageResult<SocialStatusDO> getSocialStatusPage(SocialStatusPageReqVO pageReqVO);
+
+
+    /**
+     * 获得身价对象
+     *
+     * @param point 用户当前身价
+     * @return 身价对象
+     */
+    SocialStatusBO calculateSocial(Long point);
+
+}

+ 96 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/socialstatus/SocialStatusServiceImpl.java

@@ -0,0 +1,96 @@
+package cn.newfeifan.mall.module.distri.service.socialstatus;
+
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.common.util.object.BeanUtils;
+import cn.newfeifan.mall.module.distri.controller.admin.socialstatus.bo.SocialStatusBO;
+import cn.newfeifan.mall.module.distri.controller.admin.socialstatus.vo.SocialStatusPageReqVO;
+import cn.newfeifan.mall.module.distri.controller.admin.socialstatus.vo.SocialStatusSaveReqVO;
+import cn.newfeifan.mall.module.distri.dal.dataobject.socialstatus.SocialStatusDO;
+import cn.newfeifan.mall.module.distri.dal.mysql.socialstatus.SocialStatusMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+import static cn.newfeifan.mall.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.newfeifan.mall.module.distri.enums.ErrorCodeConstants.SOCIAL_STATUS_NOT_EXISTS;
+
+/**
+ * 分销用户身价 Service 实现类
+ *
+ * @author 非繁人
+ */
+@Service
+@Validated
+public class SocialStatusServiceImpl implements SocialStatusService {
+
+    @Resource
+    private SocialStatusMapper socialStatusMapper;
+
+    @Override
+    public Long createSocialStatus(SocialStatusSaveReqVO createReqVO) {
+        // 插入
+        SocialStatusDO socialStatus = BeanUtils.toBean(createReqVO, SocialStatusDO.class);
+        socialStatusMapper.insert(socialStatus);
+        // 返回
+        return socialStatus.getId();
+    }
+
+    @Override
+    public void updateSocialStatus(SocialStatusSaveReqVO updateReqVO) {
+        // 校验存在
+        validateSocialStatusExists(updateReqVO.getId());
+        // 更新
+        SocialStatusDO updateObj = BeanUtils.toBean(updateReqVO, SocialStatusDO.class);
+        socialStatusMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteSocialStatus(Long id) {
+        // 校验存在
+        validateSocialStatusExists(id);
+        // 删除
+        socialStatusMapper.deleteById(id);
+    }
+
+    private void validateSocialStatusExists(Long id) {
+        if (socialStatusMapper.selectById(id) == null) {
+            throw exception(SOCIAL_STATUS_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public SocialStatusDO getSocialStatus(Long id) {
+        return socialStatusMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<SocialStatusDO> getSocialStatusPage(SocialStatusPageReqVO pageReqVO) {
+        return socialStatusMapper.selectPage(pageReqVO);
+    }
+
+    @Override
+    public SocialStatusBO calculateSocial(Long point) {
+        List<SocialStatusDO> socialStatusDOS = socialStatusMapper.selectList(new LambdaQueryWrapper<SocialStatusDO>()
+                .orderByAsc(SocialStatusDO::getPoint)
+        );
+
+        SocialStatusBO socialStatusBO = SocialStatusBO.builder().build();
+        for (int i = 0; i < socialStatusDOS.size(); i++) {
+            if (point < socialStatusDOS.get(i).getPoint()) {
+                socialStatusBO.setId(socialStatusDOS.get(i - 1).getId());
+                socialStatusBO.setSocialUpNeed(socialStatusDOS.get(i).getPoint() - point);
+                break;
+            }
+        }
+        if(socialStatusBO.getId() == null){
+            socialStatusBO.setId(socialStatusDOS.get(socialStatusDOS.size() - 1).getId());
+            socialStatusBO.setSocialUpNeed(0L);
+        }
+        return socialStatusBO;
+    }
+
+
+}

+ 23 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/socialstatuschangelog/SocialStatusChangeLogService.java

@@ -0,0 +1,23 @@
+package cn.newfeifan.mall.module.distri.service.socialstatuschangelog;
+
+import cn.newfeifan.mall.module.distri.enums.SocialStatusEnum;
+
+
+/**
+ * 会员身价变化日志 Service 接口
+ *
+ * @author 非繁人
+ */
+public interface SocialStatusChangeLogService {
+
+    /**
+     * 创建会员身价变化日志
+     *
+     * @param userId 用户编号
+     * @param socialValue 身价值
+     * @param objectId 业务对象编号
+     * @param socialStatusEnum 业务对象枚举
+     * @return 编号
+     */
+    Long createSocialStatusChangeLog(Long userId, Long socialValue, Long objectId, SocialStatusEnum socialStatusEnum);
+}

+ 40 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/socialstatuschangelog/SocialStatusChangeLogServiceImpl.java

@@ -0,0 +1,40 @@
+package cn.newfeifan.mall.module.distri.service.socialstatuschangelog;
+
+import cn.newfeifan.mall.module.distri.dal.dataobject.socialstatuschangelog.SocialStatusChangeLogDO;
+import cn.newfeifan.mall.module.distri.dal.mysql.socialstatuschangelog.SocialStatusChangeLogMapper;
+import cn.newfeifan.mall.module.distri.enums.SocialStatusEnum;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+
+import static cn.newfeifan.mall.module.distri.constant.DistriConstants.IS_EFFECTIVE;
+
+/**
+ * 会员身价变化日志 Service 实现类
+ *
+ * @author 非繁人
+ */
+@Service
+@Validated
+public class SocialStatusChangeLogServiceImpl implements SocialStatusChangeLogService {
+
+    @Resource
+    private SocialStatusChangeLogMapper socialStatusChangeLogMapper;
+
+    @Override
+    public Long createSocialStatusChangeLog(Long userId, Long socialValue, Long objectId, SocialStatusEnum socialStatusEnum) {
+        // 插入
+        SocialStatusChangeLogDO socialStatusChangeLog = SocialStatusChangeLogDO.builder()
+                .socialStatusChangeCategoryId(Long.valueOf(socialStatusEnum.getStatus()))
+                .description(socialStatusEnum.getName())
+                .variationValue(socialValue)
+                .objectId(objectId)
+                .effective(IS_EFFECTIVE)
+                .userId(userId).build();
+        socialStatusChangeLogMapper.insert(socialStatusChangeLog);
+        // 返回
+        return socialStatusChangeLog.getId();
+    }
+
+}

+ 67 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/usertopupconsumptionpointsorder/UserTopUpConsumptionPointsOrderService.java

@@ -0,0 +1,67 @@
+package cn.newfeifan.mall.module.distri.service.usertopupconsumptionpointsorder;
+
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.module.distri.controller.admin.usertopupconsumptionpointsorder.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.usertopupconsumptionpointsorder.UserTopUpConsumptionPointsOrderDO;
+import cn.newfeifan.mall.module.pay.dal.dataobject.order.PayOrderDO;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * 用户充值消费分订单 Service 接口
+ *
+ * @author 非繁人
+ */
+public interface UserTopUpConsumptionPointsOrderService {
+
+    /**
+     * 创建用户充值消费分订单
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createUserTopUpConsumptionPointsOrder(@Valid UserTopUpConsumptionPointsOrderSaveReqVO createReqVO);
+
+    /**
+     * 更新用户充值消费分订单
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateUserTopUpConsumptionPointsOrder(@Valid UserTopUpConsumptionPointsOrderSaveReqVO updateReqVO);
+
+    /**
+     * 删除用户充值消费分订单
+     *
+     * @param id 编号
+     */
+    void deleteUserTopUpConsumptionPointsOrder(Long id);
+
+    /**
+     * 获得用户充值消费分订单
+     *
+     * @param id 编号
+     * @return 用户充值消费分订单
+     */
+    UserTopUpConsumptionPointsOrderDO getUserTopUpConsumptionPointsOrder(Long id);
+
+    /**
+     * 获得用户充值消费分订单分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 用户充值消费分订单分页
+     */
+    PageResult<UserTopUpConsumptionPointsOrderDO> getUserTopUpConsumptionPointsOrderPage(UserTopUpConsumptionPointsOrderPageReqVO pageReqVO);
+
+    /**
+     * 充值消费
+     * @param payOrderDO 支付订单
+     */
+    void topUpConsumptionPoints(PayOrderDO payOrderDO);
+
+    /**
+     * 获取充值消费列表
+     * @return 充值列表
+     */
+    List<UserTopUpConsumptionPointsOrderDO> getUserTopUpConsumptionPointsOrderList();
+}

+ 122 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/usertopupconsumptionpointsorder/UserTopUpConsumptionPointsOrderServiceImpl.java

@@ -0,0 +1,122 @@
+package cn.newfeifan.mall.module.distri.service.usertopupconsumptionpointsorder;
+
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.common.util.object.BeanUtils;
+import cn.newfeifan.mall.module.distri.controller.admin.consumptionchangelog.vo.ConsumptionChangeLogSaveReqVO;
+import cn.newfeifan.mall.module.distri.controller.admin.integral.vo.IntegralSaveReqVO;
+import cn.newfeifan.mall.module.distri.controller.admin.usertopupconsumptionpointsorder.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.integral.IntegralDO;
+import cn.newfeifan.mall.module.distri.dal.dataobject.usertopupconsumptionpointsorder.UserTopUpConsumptionPointsOrderDO;
+import cn.newfeifan.mall.module.distri.dal.mysql.usertopupconsumptionpointsorder.UserTopUpConsumptionPointsOrderMapper;
+import cn.newfeifan.mall.module.distri.enums.ConsumptionEnum;
+import cn.newfeifan.mall.module.distri.service.consumptionchangelog.ConsumptionChangeLogService;
+import cn.newfeifan.mall.module.distri.service.integral.IntegralService;
+import cn.newfeifan.mall.module.pay.dal.dataobject.order.PayOrderDO;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.util.List;
+
+import static cn.newfeifan.mall.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.newfeifan.mall.module.distri.enums.ErrorCodeConstants.USER_TOP_UP_CONSUMPTION_POINTS_ORDER_NOT_EXISTS;
+
+/**
+ * 用户充值消费分订单 Service 实现类
+ *
+ * @author 非繁人
+ */
+@Service
+@Validated
+public class UserTopUpConsumptionPointsOrderServiceImpl implements UserTopUpConsumptionPointsOrderService {
+
+    @Resource
+    private UserTopUpConsumptionPointsOrderMapper userTopUpConsumptionPointsOrderMapper;
+    @Resource
+    private IntegralService integralService;
+    @Resource
+    private ConsumptionChangeLogService consumptionChangeLogService;
+
+    @Override
+    public Long createUserTopUpConsumptionPointsOrder(UserTopUpConsumptionPointsOrderSaveReqVO createReqVO) {
+        // 插入
+        UserTopUpConsumptionPointsOrderDO userTopUpConsumptionPointsOrder = BeanUtils.toBean(createReqVO, UserTopUpConsumptionPointsOrderDO.class);
+        userTopUpConsumptionPointsOrderMapper.insert(userTopUpConsumptionPointsOrder);
+        // 返回
+        return userTopUpConsumptionPointsOrder.getId();
+    }
+
+    @Override
+    public void updateUserTopUpConsumptionPointsOrder(UserTopUpConsumptionPointsOrderSaveReqVO updateReqVO) {
+        // 校验存在
+        validateUserTopUpConsumptionPointsOrderExists(updateReqVO.getId());
+        // 更新
+        UserTopUpConsumptionPointsOrderDO updateObj = BeanUtils.toBean(updateReqVO, UserTopUpConsumptionPointsOrderDO.class);
+        userTopUpConsumptionPointsOrderMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteUserTopUpConsumptionPointsOrder(Long id) {
+        // 校验存在
+        validateUserTopUpConsumptionPointsOrderExists(id);
+        // 删除
+        userTopUpConsumptionPointsOrderMapper.deleteById(id);
+    }
+
+    private void validateUserTopUpConsumptionPointsOrderExists(Long id) {
+        if (userTopUpConsumptionPointsOrderMapper.selectById(id) == null) {
+            throw exception(USER_TOP_UP_CONSUMPTION_POINTS_ORDER_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public UserTopUpConsumptionPointsOrderDO getUserTopUpConsumptionPointsOrder(Long id) {
+        return userTopUpConsumptionPointsOrderMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<UserTopUpConsumptionPointsOrderDO> getUserTopUpConsumptionPointsOrderPage(UserTopUpConsumptionPointsOrderPageReqVO pageReqVO) {
+        pageReqVO.setPayStatus(true);
+        return userTopUpConsumptionPointsOrderMapper.selectPage(pageReqVO);
+    }
+
+    @Override
+    public void topUpConsumptionPoints(PayOrderDO payOrderDO) {
+        UserTopUpConsumptionPointsOrderDO topUpOrder = userTopUpConsumptionPointsOrderMapper.selectById(payOrderDO.getMerchantOrderId());
+
+        if(topUpOrder.getPayStatus()){
+            return;
+        }
+
+        // 修改订单状态
+        userTopUpConsumptionPointsOrderMapper.updateById(UserTopUpConsumptionPointsOrderDO.builder()
+                .id(topUpOrder.getId())
+                .payStatus(true)
+                .payTime(LocalDateTime.now())
+                .payChannelCode(payOrderDO.getChannelCode())
+                .finishTime(LocalDateTime.now())
+                .build());
+
+        // 获取钱包
+        IntegralDO integralDO = integralService.selectByUser(topUpOrder.getUserId());
+        integralDO.setConsumptionPoints(integralDO.getConsumptionPoints() + topUpOrder.getPracticalConsumptionPoints());
+        integralService.updateIntegral(BeanUtils.toBean(integralDO, IntegralSaveReqVO.class));
+
+        // 消费分变动日志
+        consumptionChangeLogService.createConsumptionChangeLog(ConsumptionChangeLogSaveReqVO.builder()
+                .userId(topUpOrder.getUserId())
+                .consumptionStatus(ConsumptionEnum.TOP_UP_GET.getType())
+                .consumptionPoints(topUpOrder.getPracticalConsumptionPoints())
+                .afterConsumptionPoints(integralDO.getConsumptionPoints())
+                .practicalConsumptionPoints(topUpOrder.getTopUpConsumptionPoints())
+                .generateUserId(topUpOrder.getUserId())
+                .build());
+    }
+
+    @Override
+    public List<UserTopUpConsumptionPointsOrderDO> getUserTopUpConsumptionPointsOrderList() {
+        return userTopUpConsumptionPointsOrderMapper.selectList(UserTopUpConsumptionPointsOrderDO::getPayStatus,true);
+    }
+
+}

+ 6 - 2
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/dal/dataobject/spuapply/SpuApplyDO.java

@@ -1,8 +1,11 @@
 package cn.newfeifan.mall.module.product.dal.dataobject.spuapply;
 
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 import lombok.*;
 import java.time.LocalDateTime;
 import java.math.BigDecimal;
+import java.util.List;
+
 import com.baomidou.mybatisplus.annotation.*;
 import cn.newfeifan.mall.framework.mybatis.core.dataobject.BaseDO;
 
@@ -11,7 +14,7 @@ import cn.newfeifan.mall.framework.mybatis.core.dataobject.BaseDO;
  *
  * @author 非繁人
  */
-@TableName("product_spu_apply")
+@TableName(value = "product_spu_apply", autoResultMap = true)
 @KeySequence("product_spu_apply_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
 @Data
 @EqualsAndHashCode(callSuper = true)
@@ -67,7 +70,8 @@ public class SpuApplyDO extends BaseDO {
  数组,以逗号分隔
  最多上传15张
      */
-    private String sliderPicUrls;
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private List<String> sliderPicUrls;
     /**
      * 排序字段
      */

+ 11 - 8
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/service/spuapply/SpuApplyServiceImpl.java

@@ -88,7 +88,7 @@ public class SpuApplyServiceImpl implements SpuApplyService {
 
         SpuApplyDO spuApply = BeanUtils.toBean(createReqVO, SpuApplyDO.class);
         // 初始化 SPU 中 SKU 相关属性
-        initSpuFromSkus(spuApply, skuSaveReqList);
+        initSpuFromSkus(spuApply, skuSaveReqList, true);
 
         //加入商户、店铺信息
         UserShopDetailsVO userShopDetails = userService.getUserShopDetails();
@@ -118,10 +118,11 @@ public class SpuApplyServiceImpl implements SpuApplyService {
      * 基于 SKU 的信息,初始化 SPU 的信息
      * 主要是计数相关的字段,例如说市场价、最大最小价、库存等等
      *
-     * @param spu  商品 SPU
-     * @param skus 商品 SKU 数组
+     * @param spu   商品 SPU
+     * @param skus  商品 SKU 数组
+     * @param isAdd 是否为新增
      */
-    private void initSpuFromSkus(SpuApplyDO spu, List<SkuApplySaveReqVO> skus) {
+    private void initSpuFromSkus(SpuApplyDO spu, List<SkuApplySaveReqVO> skus, Boolean isAdd) {
         //是否是高精度商品
         if (!spu.getHighPrecision()) {
             // sku 单价最低的商品的价格
@@ -139,7 +140,9 @@ public class SpuApplyServiceImpl implements SpuApplyService {
         spu.setStock(getSumValue(skus, SkuApplySaveReqVO::getStock, Integer::sum));
         // 若是 spu 已有状态则不处理
         if (spu.getStatus() == null) {
-//            spu.setStatus(ProductSpuStatusEnum.ENABLE.getStatus()); // 默认状态为上架
+            if (isAdd) {
+                spu.setStatus(ProductSpuStatusEnum.ENABLE.getStatus()); // 默认状态为上架
+            }
             spu.setSalesCount(0); // 默认商品销量
             spu.setBrowseCount(0); // 默认商品浏览量
         }
@@ -167,7 +170,7 @@ public class SpuApplyServiceImpl implements SpuApplyService {
         SpuApplyDO updateObj = BeanUtils.toBean(updateReqVO, SpuApplyDO.class);
         SpuApplyDO spuApplyDO = spuApplyMapper.selectById(updateReqVO.getId());
         updateObj.setStatus(spuApplyDO.getStatus());
-        initSpuFromSkus(updateObj, skuSaveReqList);
+        initSpuFromSkus(updateObj, skuSaveReqList, false);
 
         //最大推广费, 单位: 分  add by Ben
         Integer maxPromotionFee = 0;
@@ -338,14 +341,14 @@ public class SpuApplyServiceImpl implements SpuApplyService {
     public void updateSpuStatus(ProductSpuUpdateStatusReqVO updateReqVO) {
 
         // 商户不允许回收商品
-        if(updateReqVO.getStatus().equals(ProductSpuStatusEnum.RECYCLE.getStatus())){
+        if (updateReqVO.getStatus().equals(ProductSpuStatusEnum.RECYCLE.getStatus())) {
             ErrorCode ERROR = new ErrorCode(1_008_005_001, "商户不允许回收商品");
             throw exception(ERROR);
         }
 
         // 如果商户的商品在回收站中,则商品不允许上下架
         SpuApplyDO spuApplyDO = spuApplyMapper.selectById(updateReqVO.getId());
-        if(spuApplyDO.getStatus().equals(ProductSpuStatusEnum.RECYCLE.getStatus())){
+        if (spuApplyDO.getStatus().equals(ProductSpuStatusEnum.RECYCLE.getStatus())) {
             ErrorCode SPU_SAVE_FAIL_CATEGORY_LEVEL_ERROR = new ErrorCode(1_008_005_001, "商品在回收站中不允许上下架");
             throw exception(SPU_SAVE_FAIL_CATEGORY_LEVEL_ERROR);
         }

+ 9 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/aftersale/vo/AfterSaleBaseVO.java

@@ -118,4 +118,13 @@ public class AfterSaleBaseVO {
 
     @Schema(description = "店铺id", example = "20588")
     private Long shopId;
+
+    @Schema(description = "退还的使用的消费分")
+    private Long refundConsumptionPoints;
+
+    @Schema(description = "退款总金额,单位:分")
+    private Long refundPriceTotal;
+
+    @Schema(description = "退还的使用的积分")
+    private Long refundIntegral;
 }

+ 9 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/aftersale/vo/AfterSalePageReqVO.java

@@ -57,4 +57,13 @@ public class AfterSalePageReqVO extends PageParam {
 
     @Schema(description = "用户id", example = "1")
     private Long userId;
+
+    @Schema(description = "退还的使用的消费分")
+    private Long refundConsumptionPoints;
+
+    @Schema(description = "退款总金额,单位:分")
+    private Long refundPriceTotal;
+
+    @Schema(description = "退还的使用的积分")
+    private Long refundIntegral;
 }

+ 4 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/excelVO/DailyBillOrderRespVO.java

@@ -31,6 +31,10 @@ public class DailyBillOrderRespVO {
     @ExcelProperty("积分抵扣")
     private Double payIntegral;
 
+    @Schema(description = "支付消费分")
+    @ExcelProperty("消费分抵扣")
+    private Double payConsumptionPoints;
+
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
     @ExcelProperty("下单时间")
     private LocalDateTime createTime;

+ 10 - 6
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/excelVO/SettlementOrderRespVO.java

@@ -17,20 +17,24 @@ public class SettlementOrderRespVO {
 
     @Schema(description = "应付金额(总)", requiredMode = Schema.RequiredMode.REQUIRED, example = "26217")
     @ExcelProperty("销售额")
-    private Double payPrice;
+    private Double totalPrice;
 
     @Schema(description = "确收现金")
     @ExcelProperty("确收现金")
-    private Double payCash;
+    private Double payPrice;
 
-    @Schema(description = "退款金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "23373")
-    @ExcelProperty("退款金额")
-    private Double refundPrice;
+//    @Schema(description = "退款金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "23373")
+//    @ExcelProperty("退款金额")
+//    private Double refundPrice;
 
-    @Schema(description = "支付积分")
+    @Schema(description = "确收积分")
     @ExcelProperty("确收积分")
     private Double payIntegral;
 
+    @Schema(description = "确收消费分")
+    @ExcelProperty("确收消费分")
+    private Double payConsumptionPoints;
+
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
     @ExcelProperty("下单时间")
     private LocalDateTime createTime;

+ 9 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/vo/TradeOrderBaseVO.java

@@ -156,4 +156,13 @@ public class TradeOrderBaseVO {
 
     @Schema(description = "售后状态", example = "0")
     private Integer refundStatus;
+
+    @Schema(description = "支付积分")
+    private Long payIntegral;
+
+    @Schema(description = "支付的消费分")
+    private Long payConsumptionPoints;
+
+    @Schema(description = "退回的消费分")
+    private Long refundConsumption;
 }

+ 3 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/app/order/vo/AppTradeOrderDetailRespVO.java

@@ -147,4 +147,7 @@ public class AppTradeOrderDetailRespVO {
 
     @Schema(description = "支付积分", example = "10000")
     private Long payIntegral;
+
+    @Schema(description = "本订单使用消费分", example = "36")
+    private Long payConsumptionPoints;
 }

+ 5 - 3
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/convert/order/TradeOrderConvert.java

@@ -298,11 +298,12 @@ public interface TradeOrderConvert {
     default List<SettlementOrderRespVO> convertSettOrder(List<TradeOrderDO> list) {
         List<SettlementOrderRespVO> respVOS = BeanUtils.toBean(list, SettlementOrderRespVO.class);
         for (SettlementOrderRespVO respVO : respVOS) {
-            respVO.setPayPrice(respVO.getPayPrice() / ONE_HUNDRED);
-            respVO.setRefundPrice(respVO.getRefundPrice() / ONE_HUNDRED);
+            respVO.setTotalPrice(respVO.getTotalPrice() / ONE_HUNDRED);
+//            respVO.setRefundPrice(respVO.getRefundPrice() / ONE_HUNDRED);
             respVO.setPayIntegral(respVO.getPayIntegral() / MILLION);
+            respVO.setPayConsumptionPoints(respVO.getPayConsumptionPoints() / MILLION);
 
-            respVO.setPayCash(respVO.getPayPrice() - respVO.getRefundPrice());
+            respVO.setPayPrice(respVO.getPayPrice() / ONE_HUNDRED);
 
         }
         return respVOS;
@@ -314,6 +315,7 @@ public interface TradeOrderConvert {
             respVO.setPayPrice(respVO.getPayPrice() / ONE_HUNDRED);
             respVO.setRefundPrice(respVO.getRefundPrice() / ONE_HUNDRED);
             respVO.setPayIntegral(respVO.getPayIntegral() / MILLION);
+            respVO.setPayConsumptionPoints(respVO.getPayConsumptionPoints() / MILLION);
             respVO.setPayCash(respVO.getPayPrice() - respVO.getRefundPrice());
         }
         return respVOS;

+ 13 - 19
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/dataobject/aftersale/AfterSaleDO.java

@@ -33,37 +33,31 @@ public class AfterSaleDO extends BaseDO {
     private Long id;
     /**
      * 售后单号
-     *
      * 例如说,1146347329394184195
      */
     private String no;
     /**
      * 退款状态
-     *
      * 枚举 {@link AfterSaleStatusEnum}
      */
     private Integer status;
     /**
      * 售后方式
-     *
      * 枚举 {@link AfterSaleWayEnum}
      */
     private Integer way;
     /**
      * 售后类型
-     *
      * 枚举 {@link AfterSaleTypeEnum}
      */
     private Integer type;
     /**
      * 用户编号
-     *
      * 关联 MemberUserDO 的 id 编号
      */
     private Long userId;
     /**
      * 申请原因
-     *
      * type = 退款,对应 trade_after_sale_refund_reason 类型
      * type = 退货退款,对应 trade_after_sale_refund_and_return_reason 类型
      */
@@ -74,7 +68,6 @@ public class AfterSaleDO extends BaseDO {
     private String applyDescription;
     /**
      * 补充凭证图片
-     *
      * 数组,以逗号分隔
      */
     @TableField(typeHandler = JacksonTypeHandler.class)
@@ -83,52 +76,44 @@ public class AfterSaleDO extends BaseDO {
     // ========== 交易订单相关 ==========
     /**
      * 交易订单编号
-     *
      * 关联 {@link TradeOrderDO#getId()}
      */
     private Long orderId;
     /**
      * 订单流水号
-     *
      * 冗余 {@link TradeOrderDO#getNo()}
      */
     private String orderNo;
     /**
      * 交易订单项编号
-     *
      * 关联 {@link TradeOrderItemDO#getId()}
      */
     private Long orderItemId;
     /**
      * 商品 SPU 编号
-     *
      * 关联 ProductSpuDO 的 id 字段
      * 冗余 {@link TradeOrderItemDO#getSpuId()}
      */
     private Long spuId;
     /**
      * 商品 SPU 名称
-     *
      * 关联 ProductSkuDO 的 name 字段
      * 冗余 {@link TradeOrderItemDO#getSpuName()}
      */
     private String spuName;
     /**
      * 商品 SKU 编号
-     *
      * 关联 ProductSkuDO 的编号
      */
     private Long skuId;
     /**
      * 属性数组,JSON 格式
-     *
      * 冗余 {@link TradeOrderItemDO#getProperties()}
      */
     @TableField(typeHandler = TradeOrderItemDO.PropertyTypeHandler.class)
     private List<TradeOrderItemDO.Property> properties;
     /**
      * 商品图片
-     *
      * 冗余 {@link TradeOrderItemDO#getPicUrl()}
      */
     private String picUrl;
@@ -145,13 +130,11 @@ public class AfterSaleDO extends BaseDO {
     private LocalDateTime auditTime;
     /**
      * 审批人
-     *
      * 关联 AdminUserDO 的 id 编号
      */
     private Long auditUserId;
     /**
      * 审批备注
-     *
      * 注意,只有审批不通过才会填写
      */
     private String auditReason;
@@ -163,7 +146,6 @@ public class AfterSaleDO extends BaseDO {
     private Integer refundPrice;
     /**
      * 支付退款编号
-     *
      * 对接 pay-module-biz 支付服务的退款订单编号,即 PayRefundDO 的 id 编号
      */
     private Long payRefundId;
@@ -175,7 +157,6 @@ public class AfterSaleDO extends BaseDO {
     // ========== 退货相关 ==========
     /**
      * 退货物流公司编号
-     *
      * 关联 LogisticsDO 的 id 编号
      */
     private Long logisticsId;
@@ -208,4 +189,17 @@ public class AfterSaleDO extends BaseDO {
      */
     private Long merchantId;
 
+    /**
+     * 退还的使用的消费分
+     */
+    private Long refundConsumptionPoints;
+    /**
+     * 退款总金额,单位:分
+     */
+    private Long refundPriceTotal;
+    /**
+     * 退还的使用的积分
+     */
+    private Long refundIntegral;
+
 }

+ 9 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/dataobject/order/TradeOrderDO.java

@@ -374,4 +374,13 @@ public class TradeOrderDO extends BaseDO {
      * 发货信息附件
      */
     private String attachment;
+
+    /**
+     * 支付消费分
+     */
+    private Long payConsumptionPoints;
+    /**
+     * 退还的使用的消费分
+     */
+    private Long refundConsumption;
 }

+ 13 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/dataobject/order/TradeOrderItemDO.java

@@ -185,6 +185,19 @@ public class TradeOrderItemDO extends BaseDO {
 
     private BigDecimal highPrecisionPrice;
 
+    /**
+     * 支付消费分
+     */
+    private Long payConsumptionPoints;
+    /**
+     * 退还的使用的消费分
+     */
+    private Long refundConsumption;
+    /**
+     * 成本价,单位: 分
+     */
+    private Integer costPrice;
+
     /**
      * 商品属性
      */

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů