1
0

22 Коммитууд bd9708c855 ... cd7d23b481

Эзэн SHA1 Мессеж Огноо
  Yangzw cd7d23b481 Merge branch 'master' of http://47.107.29.61:3000/feifan/mall-backend-business into dev/2024/0806/update-business-Y 10 сар өмнө
  Yangzw 3d5a52a45b 补充定时查询支付订单2 10 сар өмнө
  Yangzw f46e18ad38 补充定时查询支付订单 10 сар өмнө
  Yangzw a6df66d8f7 更新定时查询支付订单 10 сар өмнө
  Yangzw 6070e4431b 更新物流查询 10 сар өмнө
  Yangzw f065a1631b 更新物流查询 10 сар өмнө
  Yangzw 9d4b18fd81 更新物流查询 10 сар өмнө
  Yangzw 1d3fd480a7 更新物流查询 10 сар өмнө
  Yangzw a5aa19e52b 修改售后订单的金额回显,加上消费分字段,退款修改金额可以为0 10 сар өмнө
  Yangzw 39d0376b7b Merge branch 'dev/2024/0806/update-business-Y' of feifan/mall-backend-business into master 11 сар өмнө
  Yangzw 40736c7048 Merge branch 'dev/2024/0806/update-business-Y' of feifan/mall-backend-business into master 11 сар өмнө
  Yangzw c93285db68 Merge branch 'dev/2024/0806/update-business-Y' of feifan/mall-backend-business into master 11 сар өмнө
  Yangzw b831592bb2 Merge branch 'dev/2024/0806/update-business-Y' of feifan/mall-backend-business into master 11 сар өмнө
  Yangzw 011e51e653 Merge branch 'dev/2024/0806/update-business-Y' of feifan/mall-backend-business into master 11 сар өмнө
  Yangzw 7793d9f356 Merge branch 'dev/2024/0806/update-business-Y' of feifan/mall-backend-business into master 11 сар өмнө
  Yangzw b601477bba Merge branch 'dev/2024/0806/update-business-Y' of feifan/mall-backend-business into master 11 сар өмнө
  Yangzw 7b0e3c2007 Merge branch 'dev/2024/0719/update-business-Y' of feifan/mall-backend-business into master 11 сар өмнө
  Yangzw 6802dd06bd Merge branch 'dev/2024/0719/update-business-Y' of feifan/mall-backend-business into master 11 сар өмнө
  Yangzw 75356e650f Merge branch 'dev/2024/0713/update-business-Y' of feifan/mall-backend-business into master 1 жил өмнө
  Yangzw 3bb0836842 Merge branch 'dev/2024/0713/update-business-Y' of feifan/mall-backend-business into master 1 жил өмнө
  Yangzw 9d2c716523 Merge branch 'dev/2024/0703/update-business-Y' of feifan/mall-backend-business into master 1 жил өмнө
  Yangzw e1871c4ec5 Merge branch 'dev/2024/0703/update-business-Y' of feifan/mall-backend-business into master 1 жил өмнө
100 өөрчлөгдсөн 3317 нэмэгдсэн , 94 устгасан
  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;
+
     /**
      * 商品属性
      */

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно