package com.ycwl.basic.controller.mobile; import com.github.pagehelper.PageInfo; import com.ycwl.basic.biz.OrderBiz; import com.ycwl.basic.biz.PriceBiz; import com.ycwl.basic.constant.BaseContextHandler; import com.ycwl.basic.mapper.FaceMapper; import com.ycwl.basic.model.jwt.JwtInfo; import com.ycwl.basic.model.mobile.order.IsBuyBatchRespVO; import com.ycwl.basic.model.mobile.order.IsBuyRespVO; import com.ycwl.basic.model.mobile.order.OrderAppPageReq; import com.ycwl.basic.model.mobile.order.RefundOrderReq; import com.ycwl.basic.model.pc.face.resp.FaceRespVO; import com.ycwl.basic.model.pc.order.req.CreateBatchOrderReqVO; import com.ycwl.basic.model.pc.order.req.CreateOrderReqVO; import com.ycwl.basic.model.pc.order.resp.OrderAppRespVO; import com.ycwl.basic.pay.entity.PayResponse; import com.ycwl.basic.service.pc.OrderService; import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.JwtTokenUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.Map; /** * @Author:longbinbin * @Date:2024/12/4 17:16 */ @RestController @RequestMapping("/api/mobile/order/v1") @Api(tags = "订单相关接口") public class AppOrderController { @Autowired private OrderService orderService; @Autowired private OrderBiz orderBiz; @Autowired private PriceBiz priceBiz; @Autowired private FaceMapper faceMapper; @ApiOperation("用户端订单列表查询") @PostMapping("/page") public ApiResponse> pageQuery(@RequestBody OrderAppPageReq orderReqQuery) { String userId = BaseContextHandler.getUserId(); orderReqQuery.setMemberId(Long.valueOf(userId)); return orderService.appPageQuery(orderReqQuery); } @ApiOperation("用户端订单详情查询") @GetMapping("getOrderDetails/{id}") public ApiResponse getOrderDetails(@PathVariable("id") Long id) { return orderService.appDetail(id); } @ApiOperation("用户端订单新增") @PostMapping("/addOrder") public ApiResponse> addOrder(@RequestBody CreateOrderReqVO orderAddReq) throws Exception { JwtInfo worker = JwtTokenUtil.getWorker(); return orderService.createOrder(worker.getUserId(), orderAddReq); } @ApiOperation("查询订单") @GetMapping("/queryOrder") public ApiResponse queryOrder(@RequestParam("orderId") Long orderId) { return ApiResponse.success(orderService.queryOrder(orderId)); } @ApiOperation("用户端打包订单新增") @PostMapping("/addBatchOrder") public ApiResponse> addOrder(@RequestBody CreateBatchOrderReqVO batchOrderReqVO) throws Exception { JwtInfo worker = JwtTokenUtil.getWorker(); return orderService.createBatchOrder(worker.getUserId(), batchOrderReqVO); } @ApiOperation("获取用户订单数量") @GetMapping("/getUserOrderCount") public ApiResponse getUserOrderCount() { Long userId = Long.parseLong(BaseContextHandler.getUserId()); return orderService.getOrderCountByUserId(userId); } @ApiOperation(value = "发起退款", notes = "发起退款") @PostMapping("/refundOrder") public ApiResponse refundOrder(@RequestBody RefundOrderReq refundOrderReq) { return orderService.refundOrder(refundOrderReq); } @GetMapping("/scenic/{scenicId}/query") public ApiResponse isBuy(@PathVariable("scenicId") Long scenicId, @RequestParam("type") Integer type, @RequestParam("goodsId") Long goodsId) { Long userId = Long.parseLong(BaseContextHandler.getUserId()); return ApiResponse.success(orderBiz.isBuy(userId, scenicId, type, goodsId)); } @GetMapping("/scenic/{scenicId}/queryBatchPrice") public ApiResponse queryPrice(@PathVariable("scenicId") Long scenicId, @RequestParam("type") Integer type, @RequestParam(value = "faceId", required = false) Long faceId, @RequestParam(value = "goodsIds", required = false) String goodsIds) { Long userId = Long.parseLong(BaseContextHandler.getUserId()); if (faceId == null) { FaceRespVO lastFaceByUserId = faceMapper.findLastFaceByUserId(BaseContextHandler.getUserId()); if (lastFaceByUserId == null) { return ApiResponse.fail("您还未上传人脸"); } faceId = lastFaceByUserId.getId(); } IsBuyBatchRespVO buy = priceBiz.isBuy(userId, faceId, scenicId, type, goodsIds); if (buy == null) { return ApiResponse.fail("该套餐暂未开放购买"); } return ApiResponse.success(buy); } }