package com.etotem.cfc.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.etotem.cfc.common.Result; import com.etotem.cfc.dto.CommissionSummaryDTO; import com.etotem.cfc.entity.CommissionRecord; import com.etotem.cfc.service.CommissionService; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.HashMap; import java.util.Map; @RestController @RequestMapping("/api/commission") public class CommissionController { @Resource private CommissionService commissionService; @PostMapping("/summary") public Result summary(@RequestAttribute("userId") Long userId) { return Result.success(commissionService.getSummary(userId)); } @PostMapping("/list") public Result> list(@RequestAttribute("userId") Long userId, @RequestBody Map params) { int page = params.getOrDefault("page", 1); int size = params.getOrDefault("size", 20); return Result.success(commissionService.getList(userId, page, size)); } /** * 获取团队统计(L1/L2人数、团队佣金) */ @PostMapping("/team") public Result> team(@RequestAttribute("userId") Long userId) { Map stats = commissionService.getTeamStats(userId); return Result.success(stats); } /** * 获取佣金统计面板数据(今日/本月/累计/可提现/L1/L2) */ @PostMapping("/stats") public Result> stats(@RequestAttribute("userId") Long userId) { Map stats = commissionService.getCommissionStats(userId); return Result.success(stats); } /** * 获取可提现余额详情 */ @PostMapping("/balance") public Result> balance(@RequestAttribute("userId") Long userId) { CommissionSummaryDTO summary = commissionService.getSummary(userId); Map balanceInfo = new HashMap<>(); balanceInfo.put("availableAmount", summary.getAvailableAmount()); balanceInfo.put("settledAmount", summary.getSettledAmount()); balanceInfo.put("pendingAmount", summary.getPendingAmount()); balanceInfo.put("totalCommission", summary.getTotalCommission()); balanceInfo.put("withdrawnAmount", summary.getWithdrawnAmount()); return Result.success(balanceInfo); } /** * 获取团队成员列表(L1/L2分页) */ @PostMapping("/team/list") public Result> teamList(@RequestAttribute("userId") Long userId, @RequestBody Map params) { int page = params.get("page") != null ? (Integer) params.get("page") : 1; int size = params.get("size") != null ? (Integer) params.get("size") : 20; String level = params.get("level") != null ? (String) params.get("level") : "ALL"; return Result.success(commissionService.getTeamList(userId, level, page, size)); } /** * 获取佣金转化漏斗数据 */ @PostMapping("/funnel") public Result> funnel(@RequestAttribute("userId") Long userId) { return Result.success(commissionService.getCommissionFunnel(userId)); } /** * 团队消费额分级汇总 */ @PostMapping("/team/consumption") public Result> teamConsumption(@RequestAttribute("userId") Long userId, @RequestBody Map params) { Integer maxLevel = params.get("maxLevel") != null ? ((Number) params.get("maxLevel")).intValue() : 3; return Result.success(commissionService.getTeamConsumption(userId, maxLevel)); } /** * 获取我的推荐人 */ @PostMapping("/my-referrer") public Result> myReferrer(@RequestAttribute("userId") Long userId) { return Result.success(commissionService.getMyReferrer(userId)); } /** * 团队树形扁平数据 */ @PostMapping("/team/tree") public Result> teamTree(@RequestAttribute("userId") Long userId, @RequestBody Map params) { Integer maxLevel = params.get("maxLevel") != null ? ((Number) params.get("maxLevel")).intValue() : 3; return Result.success(commissionService.getTeamTree(userId, maxLevel)); } }