CommissionController.java 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. package com.etotem.cfc.controller;
  2. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  3. import com.etotem.cfc.common.Result;
  4. import com.etotem.cfc.dto.CommissionSummaryDTO;
  5. import com.etotem.cfc.entity.CommissionRecord;
  6. import com.etotem.cfc.service.CommissionService;
  7. import org.springframework.web.bind.annotation.*;
  8. import javax.annotation.Resource;
  9. import java.util.HashMap;
  10. import java.util.Map;
  11. @RestController
  12. @RequestMapping("/api/commission")
  13. public class CommissionController {
  14. @Resource
  15. private CommissionService commissionService;
  16. @PostMapping("/summary")
  17. public Result<CommissionSummaryDTO> summary(@RequestAttribute("userId") Long userId) {
  18. return Result.success(commissionService.getSummary(userId));
  19. }
  20. @PostMapping("/list")
  21. public Result<Page<CommissionRecord>> list(@RequestAttribute("userId") Long userId,
  22. @RequestBody Map<String, Integer> params) {
  23. int page = params.getOrDefault("page", 1);
  24. int size = params.getOrDefault("size", 20);
  25. return Result.success(commissionService.getList(userId, page, size));
  26. }
  27. /**
  28. * 获取团队统计(L1/L2人数、团队佣金)
  29. */
  30. @PostMapping("/team")
  31. public Result<Map<String, Object>> team(@RequestAttribute("userId") Long userId) {
  32. Map<String, Object> stats = commissionService.getTeamStats(userId);
  33. return Result.success(stats);
  34. }
  35. /**
  36. * 获取佣金统计面板数据(今日/本月/累计/可提现/L1/L2)
  37. */
  38. @PostMapping("/stats")
  39. public Result<Map<String, Object>> stats(@RequestAttribute("userId") Long userId) {
  40. Map<String, Object> stats = commissionService.getCommissionStats(userId);
  41. return Result.success(stats);
  42. }
  43. /**
  44. * 获取可提现余额详情
  45. */
  46. @PostMapping("/balance")
  47. public Result<Map<String, Object>> balance(@RequestAttribute("userId") Long userId) {
  48. CommissionSummaryDTO summary = commissionService.getSummary(userId);
  49. Map<String, Object> balanceInfo = new HashMap<>();
  50. balanceInfo.put("availableAmount", summary.getAvailableAmount());
  51. balanceInfo.put("settledAmount", summary.getSettledAmount());
  52. balanceInfo.put("pendingAmount", summary.getPendingAmount());
  53. balanceInfo.put("totalCommission", summary.getTotalCommission());
  54. balanceInfo.put("withdrawnAmount", summary.getWithdrawnAmount());
  55. return Result.success(balanceInfo);
  56. }
  57. /**
  58. * 获取团队成员列表(L1/L2分页)
  59. */
  60. @PostMapping("/team/list")
  61. public Result<Map<String, Object>> teamList(@RequestAttribute("userId") Long userId,
  62. @RequestBody Map<String, Object> params) {
  63. int page = params.get("page") != null ? (Integer) params.get("page") : 1;
  64. int size = params.get("size") != null ? (Integer) params.get("size") : 20;
  65. String level = params.get("level") != null ? (String) params.get("level") : "ALL";
  66. return Result.success(commissionService.getTeamList(userId, level, page, size));
  67. }
  68. /**
  69. * 获取佣金转化漏斗数据
  70. */
  71. @PostMapping("/funnel")
  72. public Result<Map<String, Object>> funnel(@RequestAttribute("userId") Long userId) {
  73. return Result.success(commissionService.getCommissionFunnel(userId));
  74. }
  75. /**
  76. * 团队消费额分级汇总
  77. */
  78. @PostMapping("/team/consumption")
  79. public Result<Map<String, Object>> teamConsumption(@RequestAttribute("userId") Long userId,
  80. @RequestBody Map<String, Object> params) {
  81. Integer maxLevel = params.get("maxLevel") != null
  82. ? ((Number) params.get("maxLevel")).intValue()
  83. : 3;
  84. return Result.success(commissionService.getTeamConsumption(userId, maxLevel));
  85. }
  86. /**
  87. * 获取我的推荐人
  88. */
  89. @PostMapping("/my-referrer")
  90. public Result<Map<String, Object>> myReferrer(@RequestAttribute("userId") Long userId) {
  91. return Result.success(commissionService.getMyReferrer(userId));
  92. }
  93. /**
  94. * 团队树形扁平数据
  95. */
  96. @PostMapping("/team/tree")
  97. public Result<Map<String, Object>> teamTree(@RequestAttribute("userId") Long userId,
  98. @RequestBody Map<String, Object> params) {
  99. Integer maxLevel = params.get("maxLevel") != null
  100. ? ((Number) params.get("maxLevel")).intValue()
  101. : 3;
  102. return Result.success(commissionService.getTeamTree(userId, maxLevel));
  103. }
  104. }