package com.mzl.flower.web.customer; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.mzl.flower.base.BaseController; import com.mzl.flower.base.R; import com.mzl.flower.base.ReturnDataDTO; import com.mzl.flower.config.exception.ValidationException; import com.mzl.flower.dto.request.payment.OrderEvaluateDTO; import com.mzl.flower.dto.request.payment.OrderQueryDTO; import com.mzl.flower.dto.response.payment.CustomerOrderCountDTO; import com.mzl.flower.dto.response.payment.OrderDTO; import com.mzl.flower.dto.response.payment.OrderItemListDTO; import com.mzl.flower.dto.response.payment.OrderListDTO; import com.mzl.flower.service.payment.OrderService; import com.mzl.flower.service.payment.UserPaymentV3Service; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/api/customer/order") @Api(value = "订单管理-花店", tags = "订单管理-花店") @Validated @Slf4j public class OrderCustomerController extends BaseController { @Autowired private OrderService orderService; @Autowired private UserPaymentV3Service paymentV3Service; @GetMapping("/list") @ApiOperation(value = "查询订单列表") public ResponseEntity>> selectOrderList(Page page, OrderQueryDTO dto){ return returnData(R.SUCCESS.getCode(), orderService.selectCustomerOrderList(page, dto)); } @GetMapping("/list/view") @ApiOperation(value = "订单详情") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "订单id", required = true, dataType = "String", paramType = "query") }) public ResponseEntity> getOrderInfo(String id){ return returnData(R.SUCCESS.getCode(), orderService.getOrderInfo(id)); } @GetMapping("/item/list") @ApiOperation(value = "订单商品明细") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "订单id", required = true, dataType = "String", paramType = "query") }) public ResponseEntity>> getPtCuOrderItems(String id){ return returnData(R.SUCCESS.getCode(), orderService.getPtCuOrderItems(id)); } @GetMapping("/receive/confirm") @ApiOperation(value = "确认收货") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "订单id", required = true, dataType = "String", paramType = "query") }) public ResponseEntity> confirmOrderReceive(String id){ orderService.confirmOrderReceive(id); return returnData(R.SUCCESS.getCode(), null); } @GetMapping("/payAgain") @ApiOperation(value = "重新支付") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "订单id", required = true, dataType = "String", paramType = "query") }) public ResponseEntity> payAgain(String id){ boolean f = paymentV3Service.checkOrderStatus(id, true); if(f){ throw new ValidationException("订单不可再支付"); } return returnData(R.SUCCESS.getCode(), paymentV3Service.payAgain(id)); } @GetMapping(value = "/refund") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "订单id", required = true, dataType = "String", paramType = "query"), }) @ApiOperation(value = "退款") public ResponseEntity refundOrder(String id) { orderService.refundCheck(id); paymentV3Service.refundOrder(id); return returnData(R.SUCCESS.getCode(), null); } /*@GetMapping(value = "/refund/check") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "订单id", required = true, dataType = "String", paramType = "query"), }) @ApiOperation(value = "查询退款") public ResponseEntity refundQuery(String id) { return returnData(R.SUCCESS.getCode(), paymentV3Service.refundQuery(id)); }*/ @PostMapping("/evaluate") @ApiOperation(value = "评价") public ResponseEntity evaluateOrder(@RequestBody OrderEvaluateDTO dto) { orderService.evaluateOrder(dto); return returnData(R.SUCCESS.getCode(), null); } @GetMapping(value = "/count/{status}") @ApiOperation(value = "订单数量") public ResponseEntity> getMyOrderStatusCount(@PathVariable String status) { return returnData(R.SUCCESS.getCode(), orderService.getMyOrderStatusCount(status)); } @GetMapping(value = "/statistics/count") @ApiOperation(value = "订单数量统计") public ResponseEntity> getCustomerOrderCount() { return returnData(R.SUCCESS.getCode(), orderService.getCustomerOrderCount()); } @GetMapping(value = "/cancel") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "订单id", required = true, dataType = "String", paramType = "query"), }) @ApiOperation(value = "取消订单") public ResponseEntity cancelOrder(String id) { boolean f = paymentV3Service.checkOrderStatus(id); if(!f){ paymentV3Service.cancelOrder(id); } return returnData(R.SUCCESS.getCode(), null); } @GetMapping(value = "/delete") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "订单id", required = true, dataType = "String", paramType = "query"), }) @ApiOperation(value = "删除订单") public ResponseEntity deleteOrder(String id) { orderService.deleteOrder(id); return returnData(R.SUCCESS.getCode(), null); } }