package com.doumee.api.web.mall; import com.baomidou.mybatisplus.core.metadata.IPage; import com.doumee.api.web.ApiController; import com.doumee.config.annotation.LoginRequired; import com.doumee.core.annotation.trace.Trace; import com.doumee.core.model.ApiResponse; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.kuaidi100.DeliveryDTO; import com.doumee.core.utils.kuaidi100.ExpressUtils; import com.doumee.core.wx.SendWxMessage; import com.doumee.dao.business.model.Goodsorder; import com.doumee.dao.business.model.Member; import com.doumee.dao.web.dto.CouponDTO; import com.doumee.dao.web.request.OrderPayRequest; import com.doumee.dao.web.request.PageRequest; import com.doumee.dao.web.request.goods.DealOrderRequest; import com.doumee.dao.web.request.goods.MemberOrderRequest; import com.doumee.dao.web.request.goods.OrderCommentRequest; import com.doumee.dao.web.response.MyPageResponse; import com.doumee.dao.web.response.OrderCommentResponse; import com.doumee.dao.web.response.OrderDetailResponse; import com.doumee.dao.web.response.goods.MemberOrderResponse; import com.doumee.dao.web.response.goods.PayResponse; 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.web.bind.annotation.*; import javax.validation.Valid; import java.math.BigDecimal; import java.util.Date; /** * Created by IntelliJ IDEA. * * @Author : Rk * @create 2023/3/24 14:30 */ @Api(tags = "订单信息业务") @Trace(exclude = true) @RestController @RequestMapping("/web/orders") @Slf4j public class OrderApi extends ApiController { @LoginRequired @ApiOperation("咖啡计划已订阅列表") @PostMapping("/planOrdersPage") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), @ApiImplicitParam(paramType = "query", dataType = "Long", name = "current", value = "页码", required = true), @ApiImplicitParam(paramType = "query", dataType = "Long", name = "size", value = "每页记录数", required = true), @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "goodsId", value = "商品主键", required = true) }) public ApiResponse> planOrdersPage(PageRequest pageable, Integer goodsId) { IPage page = goodsorderDetailService.pageList(pageable.toPage(),goodsId,getMemberId()); return ApiResponse.success("查询成功",page); } @LoginRequired @ApiOperation("订单评价分页列表") @PostMapping("/orderCommentPage") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), @ApiImplicitParam(paramType = "query", dataType = "Long", name = "current", value = "页码", required = true), @ApiImplicitParam(paramType = "query", dataType = "Long", name = "size", value = "每页记录数", required = true), @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "goodsId", value = "商品主键", required = true) }) public ApiResponse> orderCommentPage(PageRequest pageable,Integer goodsId) { IPage page = orderCommentService.pageList(pageable.toPage(),goodsId); return ApiResponse.success("查询成功",page); } @LoginRequired @ApiOperation("会员优惠券") @GetMapping("/memberCouponPage") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), @ApiImplicitParam(paramType = "query", dataType = "Long", name = "current", value = "页码", required = true), @ApiImplicitParam(paramType = "query", dataType = "Long", name = "size", value = "每页记录数", required = true), @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "couponType", value = "优惠券类别:0商家优惠券 1平台优惠券", required = true), @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "limitPrice", value = "满额", required = false) }) public ApiResponse> memberCouponPage(PageRequest pageable, Integer couponType, BigDecimal limitPrice) { IPage page = memberCouponService.memberCouponPage(pageable.toPage(),limitPrice,getMemberId(),couponType); return ApiResponse.success("查询成功",page); } @LoginRequired @ApiOperation("可用优惠券数量") @GetMapping("/memberCouponNum") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "couponType", value = "优惠券类别", required = true), @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "limitPrice", value = "满额", required = true) }) public ApiResponse memberCouponNum(Integer couponType, BigDecimal limitPrice) { return ApiResponse.success("查询成功", memberCouponService.memberCouponNum(limitPrice,getMemberId(),couponType)); } @LoginRequired @ApiOperation("订单支付") @PostMapping("/orderPay") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true) }) public ApiResponse orderPay(@Valid @RequestBody OrderPayRequest orderPayRequest) { orderPayRequest.setMemberId(getMemberId()); return ApiResponse.success("操作成功", goodsorderService.orderPay(orderPayRequest)); } @LoginRequired @ApiOperation("订单重新支付") @GetMapping("/replayPay") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true) }) public ApiResponse orderPay(@RequestParam Integer orderId) { return ApiResponse.success("操作成功", goodsorderService.replayPay(orderId)); } @LoginRequired @ApiOperation("订单详情") @GetMapping("/orderDetail") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "orderId", value = "订单主键", required = true), }) public ApiResponse orderDetail(@RequestParam Integer orderId) { return ApiResponse.success("查询成功", goodsorderService.getGoodsOrderDetail(orderId)); } @LoginRequired @ApiOperation("我的订单列表") @PostMapping("/orderPage") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), }) public ApiResponse> orderPage(@RequestBody PageWrap pageWrap) { pageWrap.getModel().setMemberId(getMemberId()); IPage page = goodsorderService.getGoodsOrderPage(pageWrap); return ApiResponse.success("查询成功",page); } @LoginRequired @ApiOperation("修改订单收货地址") @PostMapping("/updateAddress") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), }) public ApiResponse updateAddress(@RequestBody DealOrderRequest dealOrderRequest) { dealOrderRequest.setMemberId(getMemberId()); goodsorderService.updAddress(dealOrderRequest); return ApiResponse.success("操作成功"); } @LoginRequired @ApiOperation("取消订单") @PostMapping("/cancelOrder") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), }) public ApiResponse cancelOrder(@RequestBody DealOrderRequest dealOrderRequest) { goodsorderService.cancelOrder(dealOrderRequest.getOrderId(),getMemberId(),dealOrderRequest.getCancelInfo()); return ApiResponse.success("操作成功"); } @LoginRequired @ApiOperation("催发货") @PostMapping("/urgeSend") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), }) public ApiResponse urgeSend(@RequestBody DealOrderRequest dealOrderRequest) { goodsorderService.urgeSend(dealOrderRequest.getOrderId(),getMemberId()); return ApiResponse.success("操作成功"); } @LoginRequired @ApiOperation("确认收货") @PostMapping("/affirmOrder") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), }) public ApiResponse affirmOrder(@RequestBody DealOrderRequest dealOrderRequest) { goodsorderService.affirmOrder(dealOrderRequest.getOrderId(),getMemberId()); return ApiResponse.success("操作成功"); } @LoginRequired @ApiOperation("订单评论") @PostMapping("/orderComment") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), }) public ApiResponse orderComment(@RequestBody OrderCommentRequest orderCommentRequest) { orderCommentRequest.setMemberId(getMemberId()); goodsorderService.orderComment(orderCommentRequest); return ApiResponse.success("操作成功"); } @LoginRequired @ApiOperation("订单统计") @GetMapping("/ordersStatistics") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), }) public ApiResponse ordersStatistics() { return ApiResponse.success("操作成功",goodsorderService.ordersStatistics(getMemberId())); } @LoginRequired @ApiOperation("物流查询") @GetMapping("/queryExpress") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), @ApiImplicitParam(paramType = "query", dataType = "String", name = "expressCode", value = "物流单号", required = true), @ApiImplicitParam(paramType = "query", dataType = "String", name = "company", value = "物流公司", required = true), @ApiImplicitParam(paramType = "query", dataType = "String", name = "phone", value = "手机号", required = true), }) public ApiResponse queryExpress(@RequestParam String expressCode,@RequestParam String company,@RequestParam String phone) { DeliveryDTO deliveryDTO = ExpressUtils.queryExpress(expressCode,company,phone); return ApiResponse.success("操作成功",deliveryDTO); } }