| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- package com.zxyj.controller.guide;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.zxyj.common.Result;
- import com.zxyj.entity.PackageOrder;
- import com.zxyj.mapper.PackageOrderMapper;
- import io.swagger.v3.oas.annotations.Operation;
- import io.swagger.v3.oas.annotations.tags.Tag;
- import org.springframework.web.bind.annotation.*;
- import javax.annotation.Resource;
- import java.math.BigDecimal;
- import java.util.HashMap;
- import java.util.Map;
- @Tag(name = "成长规划师订单", description = "成长规划师订单与佣金接口")
- @RestController
- @RequestMapping("/api/guide/orders")
- public class GuideOrderController {
- @Resource
- private PackageOrderMapper packageOrderMapper;
- @PostMapping("/list")
- @Operation(summary = "获取订单列表")
- public Result<Map<String, Object>> getOrders(@RequestAttribute("userId") Long guideId,
- @RequestBody(required = false) Map<String, Object> params) {
- Integer page = (params != null && params.get("page") != null) ? Integer.valueOf(params.get("page").toString()) : 1;
- Integer size = (params != null && params.get("size") != null) ? Integer.valueOf(params.get("size").toString()) : 10;
- String status = (params != null && params.get("status") != null) ? params.get("status").toString() : null;
- LambdaQueryWrapper<PackageOrder> wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(PackageOrder::getGuideId, guideId);
- if (status != null && !status.isEmpty()) {
- wrapper.eq(PackageOrder::getStatus, status);
- }
- wrapper.orderByDesc(PackageOrder::getCreatedAt);
- Page<PackageOrder> pagination = new Page<>(page, size);
- Page<PackageOrder> result = packageOrderMapper.selectPage(pagination, wrapper);
- Map<String, Object> response = new HashMap<>();
- response.put("records", result.getRecords());
- response.put("total", result.getTotal());
- response.put("pages", result.getPages());
- response.put("current", result.getCurrent());
- return Result.success(response);
- }
- @PostMapping("/stats")
- @Operation(summary = "获取订单统计")
- public Result<Map<String, Object>> getOrderStats(@RequestAttribute("userId") Long guideId) {
- LambdaQueryWrapper<PackageOrder> wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(PackageOrder::getGuideId, guideId);
- Long totalOrders = packageOrderMapper.selectCount(wrapper);
- Long paidOrders = packageOrderMapper.selectCount(new LambdaQueryWrapper<PackageOrder>()
- .eq(PackageOrder::getGuideId, guideId)
- .eq(PackageOrder::getStatus, "paid"));
- BigDecimal totalRevenue = packageOrderMapper.selectList(new LambdaQueryWrapper<PackageOrder>()
- .eq(PackageOrder::getGuideId, guideId)
- .eq(PackageOrder::getStatus, "paid"))
- .stream()
- .map(PackageOrder::getPrice)
- .reduce(BigDecimal.ZERO, BigDecimal::add);
- Map<String, Object> stats = new HashMap<>();
- stats.put("totalOrders", totalOrders);
- stats.put("paidOrders", paidOrders);
- stats.put("totalRevenue", totalRevenue);
- stats.put("pendingOrders", totalOrders - paidOrders);
- return Result.success(stats);
- }
- @PostMapping("/detail")
- @Operation(summary = "获取订单详情")
- public Result<PackageOrder> getOrderDetail(@RequestAttribute("userId") Long guideId,
- @RequestBody Map<String, Object> params) {
- if (params == null || params.get("id") == null) {
- return Result.error("缺少订单ID");
- }
- Long id = Long.valueOf(params.get("id").toString());
- PackageOrder order = packageOrderMapper.selectById(id);
- if (order == null) {
- return Result.error("订单不存在");
- }
- if (!order.getGuideId().equals(guideId)) {
- return Result.error("无权查看");
- }
- return Result.success(order);
- }
- }
|