| | |
| | | package com.doumee.api.web; |
| | | |
| | | import com.azure.core.annotation.Post; |
| | | import com.doumee.core.annotation.LoginRequired; |
| | | import com.doumee.core.annotation.LoginShopRequired; |
| | | import com.doumee.core.annotation.trace.Trace; |
| | | import com.doumee.core.model.ApiResponse; |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.dao.business.model.IdentityInfo; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.doumee.dao.business.model.Orders; |
| | | import com.doumee.dao.dto.*; |
| | | import com.doumee.dao.vo.OrderReleaseVO; |
| | | import com.doumee.service.business.IdentityInfoService; |
| | | import com.doumee.service.business.MemberService; |
| | | import com.doumee.dao.dto.CancelOrderDTO; |
| | | import com.doumee.dao.dto.CommentOrderDTO; |
| | | import com.doumee.dao.dto.ConfirmArriveDTO; |
| | | import com.doumee.dao.dto.CreateOrderDTO; |
| | | import com.doumee.dao.dto.DriverVerifyDTO; |
| | | import com.doumee.dao.dto.ShopVerifyDTO; |
| | | import com.doumee.dao.dto.StoreOutDTO; |
| | | import com.doumee.dao.dto.MyOrderDTO; |
| | | import com.doumee.dao.vo.MyOrderDetailVO; |
| | | import com.doumee.dao.vo.MyOrderVO; |
| | | import com.doumee.dao.vo.OverdueFeeVO; |
| | | import com.doumee.dao.vo.PayResponse; |
| | | import com.doumee.service.business.OrdersService; |
| | | 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.apache.shiro.authz.annotation.RequiresPermissions; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.validation.Valid; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * Created by IntelliJ IDEA. |
| | | * 订单接口 |
| | | * |
| | | * @Author : Rk |
| | | * @create 2025/7/10 9:29 |
| | | * @create 2025/7/15 15:49 |
| | | */ |
| | | @Api(tags = "订单业务") |
| | | @Api(tags = "订单接口") |
| | | @Trace(exclude = true) |
| | | @RestController |
| | | @RequestMapping("/web/orders") |
| | | @RequestMapping("/web/order") |
| | | @Slf4j |
| | | public class OrdersApi extends ApiController{ |
| | | |
| | | |
| | | @Autowired |
| | | private MemberService memberService; |
| | | public class OrdersApi extends ApiController { |
| | | |
| | | @Autowired |
| | | private OrdersService ordersService; |
| | | |
| | | @Autowired |
| | | private RedisTemplate<String, Object> redisTemplate; |
| | | |
| | | @LoginRequired |
| | | @ApiOperation(value = "发布订单 - 发单方", notes = "小程序端") |
| | | @PostMapping("/release") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), |
| | | }) |
| | | public ApiResponse<OrderReleaseVO> release(@RequestBody Orders orders) { |
| | | orders.setMember(this.getMemberResponse()); |
| | | return ApiResponse.success("操作成功",ordersService.create(orders)); |
| | | @ApiOperation(value = "创建订单", notes = "创建就地/异地寄存订单,返回微信支付参数") |
| | | @PostMapping("/create") |
| | | public ApiResponse<PayResponse> createOrder(@RequestBody @Valid CreateOrderDTO dto) { |
| | | PayResponse payResponse = ordersService.createOrder(dto, getMemberId()); |
| | | if (Objects.nonNull(payResponse) && StringUtils.isNotBlank(payResponse.getLockKey())) { |
| | | redisTemplate.delete(payResponse.getLockKey()); |
| | | } |
| | | return ApiResponse.success("操作成功", payResponse); |
| | | } |
| | | |
| | | @LoginRequired |
| | | @ApiOperation(value = "修改订单 - 发单方", notes = "小程序端") |
| | | @PostMapping("/updateOrder") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), |
| | | }) |
| | | public ApiResponse updateOrder(@RequestBody Orders orders) { |
| | | orders.setMember(this.getMemberResponse()); |
| | | ordersService.update(orders); |
| | | return ApiResponse.success("操作成功"); |
| | | @ApiOperation(value = "继续支付", notes = "待支付订单重新唤起微信支付") |
| | | @PostMapping("/continuePay/{orderId}") |
| | | public ApiResponse<PayResponse> continuePay(@PathVariable Integer orderId) { |
| | | return ApiResponse.success("操作成功", ordersService.continuePay(orderId, getMemberId())); |
| | | } |
| | | |
| | | @LoginRequired |
| | | @ApiOperation(value = "接单方确认订单费用 - 接单方", notes = "小程序端") |
| | | @PostMapping("/confirmFee") |
| | | @ApiOperation(value = "会员订单分页", notes = "小程序端,按状态筛选") |
| | | @PostMapping("/myPage") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), |
| | | }) |
| | | public ApiResponse confirmFee(@RequestBody ConfirmFeeOrderDTO orders) { |
| | | orders.setMember(this.getMemberResponse()); |
| | | ordersService.confirmFee(orders); |
| | | return ApiResponse.success("操作成功"); |
| | | public ApiResponse<PageData<MyOrderVO>> myPage(@RequestBody @Validated PageWrap<MyOrderDTO> pageWrap) { |
| | | return ApiResponse.success("查询成功", ordersService.findMyOrderPage(pageWrap, getMemberId())); |
| | | } |
| | | |
| | | |
| | | // @LoginRequired |
| | | // @ApiOperation(value = "修改订单日期 - 发单方", notes = "小程序端") |
| | | // @PostMapping("/updOrderData") |
| | | // @ApiImplicitParams({ |
| | | // @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), |
| | | // }) |
| | | // public ApiResponse updOrderData(@RequestBody UpdOrderDataDTO updOrderDataDTO) { |
| | | // updOrderDataDTO.setMember(this.getMemberResponse()); |
| | | // ordersService.updOrderData(updOrderDataDTO); |
| | | // return ApiResponse.success("操作成功"); |
| | | // } |
| | | |
| | | @LoginRequired |
| | | @ApiOperation(value = "手动接单 - 接单方", notes = "小程序端") |
| | | @GetMapping("/accept") |
| | | @LoginShopRequired |
| | | @ApiOperation(value = "门店订单分页", notes = "门店端,查询存件/取件门店为当前门店的订单") |
| | | @PostMapping("/shopPage") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "门店token值", required = true) |
| | | }) |
| | | public ApiResponse accept(@RequestParam Integer orderId) { |
| | | ordersService.accept(orderId,this.getMemberResponse()); |
| | | return ApiResponse.success("操作成功"); |
| | | public ApiResponse<PageData<MyOrderVO>> shopPage(@RequestBody @Validated PageWrap<MyOrderDTO> pageWrap) { |
| | | return ApiResponse.success("查询成功", ordersService.findShopOrderPage(pageWrap, getShopId())); |
| | | } |
| | | |
| | | @LoginRequired |
| | | @ApiOperation(value = "开始作业 - 发单方", notes = "小程序端") |
| | | @GetMapping("/begin") |
| | | @ApiOperation(value = "会员订单详情", notes = "小程序端,查询当前会员的订单详情") |
| | | @GetMapping("/detail/{orderId}") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), |
| | | @ApiImplicitParam(paramType = "path", dataType = "Integer", name = "orderId", value = "订单主键", required = true), |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true) |
| | | }) |
| | | public ApiResponse begin(@RequestParam Integer orderId) { |
| | | ordersService.begin(orderId,this.getMemberResponse()); |
| | | return ApiResponse.success("操作成功"); |
| | | public ApiResponse<MyOrderDetailVO> detail(@PathVariable Integer orderId) { |
| | | return ApiResponse.success("查询成功", ordersService.findMyOrderDetail(orderId, getMemberId())); |
| | | } |
| | | |
| | | @LoginRequired |
| | | @ApiOperation(value = "取消订单 - 发单方", notes = "小程序端") |
| | | @GetMapping("/cancelOrder") |
| | | @ApiOperation(value = "会员取消订单", notes = "仅异地寄存订单可取消") |
| | | @PostMapping("/cancel") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true) |
| | | }) |
| | | public ApiResponse cancelOrder(@RequestParam Integer orderId) { |
| | | ordersService.cancelOrder(orderId,this.getMemberResponse()); |
| | | return ApiResponse.success("操作成功"); |
| | | public ApiResponse cancel(@RequestBody @Validated CancelOrderDTO dto) { |
| | | ordersService.cancelOrder(dto.getOrderId(), getMemberId(), dto.getCancelReason()); |
| | | return ApiResponse.success("操作成功"); |
| | | } |
| | | |
| | | @LoginRequired |
| | | @ApiOperation(value = "取消前提示语 - 发单方", notes = "小程序端") |
| | | @GetMapping("/cancelTips") |
| | | @ApiOperation(value = "查询超时费用", notes = "查询订单逾期天数和逾期费用") |
| | | @GetMapping("/overdueFee/{orderId}") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), |
| | | @ApiImplicitParam(paramType = "path", dataType = "Integer", name = "orderId", value = "订单主键", required = true), |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true) |
| | | }) |
| | | public ApiResponse cancelTips(@RequestParam Integer orderId) { |
| | | ordersService.cancelTips(orderId,this.getMemberResponse()); |
| | | return ApiResponse.success("操作成功"); |
| | | public ApiResponse<OverdueFeeVO> overdueFee(@PathVariable Integer orderId) { |
| | | return ApiResponse.success("查询成功", ordersService.calculateOverdueFee(orderId)); |
| | | } |
| | | |
| | | |
| | | |
| | | @LoginRequired |
| | | @ApiOperation(value = "确认订单修改 - 接单方", notes = "小程序端") |
| | | @PostMapping("/confirmUpd") |
| | | @ApiOperation(value = "逾期费用支付", notes = "逾期订单唤起微信支付") |
| | | @PostMapping("/payOverdueFee/{orderId}") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), |
| | | @ApiImplicitParam(paramType = "path", dataType = "Integer", name = "orderId", value = "订单主键", required = true), |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true) |
| | | }) |
| | | public ApiResponse confirmUpd(@RequestBody ConfirmUpdOrderDTO confirmUpdOrderDTO) { |
| | | confirmUpdOrderDTO.setMember(this.getMemberResponse()); |
| | | ordersService.confirmUpd(confirmUpdOrderDTO); |
| | | return ApiResponse.success("操作成功"); |
| | | public ApiResponse<PayResponse> payOverdueFee(@PathVariable Integer orderId) { |
| | | return ApiResponse.success("操作成功", ordersService.payOverdueFee(orderId, getMemberId())); |
| | | } |
| | | |
| | | @LoginRequired |
| | | @ApiOperation(value = "完成订单 - 发单方", notes = "小程序端") |
| | | @PostMapping("/doneOrder") |
| | | @ApiOperation(value = "会员删除订单", notes = "仅已完成/已取消/已退款订单可删除,逻辑删除") |
| | | @PostMapping("/delete/{orderId}") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), |
| | | @ApiImplicitParam(paramType = "path", dataType = "Integer", name = "orderId", value = "订单主键", required = true), |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true) |
| | | }) |
| | | public ApiResponse<OrderReleaseVO> doneOrder(@RequestBody DoneOrderDTO doneOrderDTO) { |
| | | doneOrderDTO.setMember(getMemberResponse()); |
| | | return ApiResponse.success("操作成功",ordersService.doneOrder(doneOrderDTO)); |
| | | public ApiResponse deleteOrder(@PathVariable Integer orderId) { |
| | | ordersService.deleteMyOrder(orderId, getMemberId()); |
| | | return ApiResponse.success("删除成功"); |
| | | } |
| | | |
| | | @LoginRequired |
| | | @ApiOperation(value = "订单重新支付 - 发单方", notes = "小程序端") |
| | | @PostMapping("/reusePay") |
| | | @LoginShopRequired |
| | | @ApiOperation(value = "门店核销收件", notes = "门店通过核销码确认收件/取件") |
| | | @PostMapping("/shopVerify") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "门店token值", required = true) |
| | | }) |
| | | public ApiResponse<OrderReleaseVO> reusePay(@RequestBody ReusePayDTO reusePayDTO) { |
| | | reusePayDTO.setMember(getMemberResponse()); |
| | | return ApiResponse.success("操作成功",ordersService.reusePay(reusePayDTO)); |
| | | public ApiResponse shopVerify(@RequestBody @Validated ShopVerifyDTO dto) { |
| | | ordersService.shopVerifyOrder(dto.getVerifyCode(), getShopId(), dto.getImages(), dto.getRemark()); |
| | | return ApiResponse.success("核销成功"); |
| | | } |
| | | |
| | | @LoginShopRequired |
| | | @ApiOperation(value = "核销司机码", notes = "异地寄存且有取件门店的订单,通过司机核销码确认到店") |
| | | @PostMapping("/driverVerify") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true) |
| | | }) |
| | | public ApiResponse driverVerify(@RequestBody @Validated DriverVerifyDTO dto) { |
| | | ordersService.driverVerifyOrder(dto.getVerifyCode(), dto.getImages(), dto.getRemark(), getShopId()); |
| | | return ApiResponse.success("核销成功"); |
| | | } |
| | | |
| | | @LoginShopRequired |
| | | @ApiOperation(value = "门店订单详情", notes = "门店端查询订单详情,支持订单主键或核销码查询") |
| | | @GetMapping("/shopDetail") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "门店token值", required = true), |
| | | @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "orderId", value = "订单主键"), |
| | | @ApiImplicitParam(paramType = "query", dataType = "String", name = "verifyCode", value = "核销码") |
| | | }) |
| | | public ApiResponse<MyOrderDetailVO> shopDetail(@RequestParam(required = false) Integer orderId, |
| | | @RequestParam(required = false) String verifyCode) { |
| | | return ApiResponse.success("查询成功", ordersService.findShopOrderDetail(orderId, verifyCode)); |
| | | } |
| | | |
| | | @LoginShopRequired |
| | | @ApiOperation(value = "门店确认出库", notes = "取件门店确认出库,订单完成") |
| | | @PostMapping("/storeOut") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "门店token值", required = true) |
| | | }) |
| | | public ApiResponse storeOut(@RequestBody @Validated StoreOutDTO dto) { |
| | | ordersService.confirmStoreOut(dto.getOrderId(), getShopId(), dto.getImages(), dto.getRemark()); |
| | | return ApiResponse.success("出库成功"); |
| | | } |
| | | |
| | | @LoginShopRequired |
| | | @ApiOperation(value = "确认顾客到店", notes = "门店确认顾客已到店取件,检查逾期/退款") |
| | | @PostMapping("/confirmArrived") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "门店token值", required = true) |
| | | }) |
| | | public ApiResponse confirmArrived(@RequestBody @Validated ConfirmArriveDTO dto) { |
| | | ordersService.confirmCustomerArrived(dto.getOrderId(), getShopId()); |
| | | return ApiResponse.success("操作成功"); |
| | | } |
| | | |
| | | @LoginRequired |
| | | @ApiOperation(value = "订单评价 - 发单方", notes = "小程序端") |
| | | @ApiOperation(value = "订单评价", notes = "已完成且未评价的订单可进行评价") |
| | | @PostMapping("/comment") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true) |
| | | }) |
| | | public ApiResponse comment(@RequestBody CommentDTO commentDTO) { |
| | | commentDTO.setMember(this.getMemberResponse()); |
| | | ordersService.comment(commentDTO); |
| | | return ApiResponse.success("操作成功"); |
| | | } |
| | | |
| | | |
| | | |
| | | @LoginRequired |
| | | @ApiOperation("分页查询") |
| | | @PostMapping("/page") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), |
| | | }) |
| | | public ApiResponse<PageData<Orders>> findPage (@RequestBody PageWrap<Orders> pageWrap) { |
| | | pageWrap.getModel().setMember(this.getMemberResponse()); |
| | | return ApiResponse.success(ordersService.findPageForMini(pageWrap)); |
| | | } |
| | | |
| | | @LoginRequired |
| | | @ApiOperation(value = "订单详情", notes = "小程序端") |
| | | @GetMapping("/getDetail") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), |
| | | }) |
| | | public ApiResponse<Orders> getDetail(@RequestParam Integer orderId) { |
| | | return ApiResponse.success("操作成功",ordersService.getDetail(orderId,this.getMemberResponse())); |
| | | } |
| | | |
| | | @LoginRequired |
| | | @ApiOperation("获取预计金额(分)") |
| | | @PostMapping("/getTotal") |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), |
| | | }) |
| | | public ApiResponse<Long> getTotal(@RequestBody Orders orders) { |
| | | return ApiResponse.success(ordersService.getTotal(orders)); |
| | | public ApiResponse comment(@RequestBody @Validated CommentOrderDTO dto) { |
| | | ordersService.commentOrder(dto, getMemberId()); |
| | | return ApiResponse.success("评价成功"); |
| | | } |
| | | |
| | | |