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.business.model.MemberCoupon; import com.doumee.dao.business.model.Shop; 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.PayDetailRequest; import com.doumee.dao.web.request.ShopOrderPayRequest; 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.MemberCouponResponse; 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 com.doumee.service.business.HotCityService; import com.doumee.service.business.impl.MemberCouponServiceImpl; 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.web.bind.annotation.*; import javax.validation.Valid; import java.math.BigDecimal; import java.util.Date; import java.util.List; /** * 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), @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "status", value = "状态:0=未使用;1=已使用;2=已过期", required = false) }) public ApiResponse> memberCouponPage(PageRequest pageable, Integer couponType, BigDecimal limitPrice, Integer status) { IPage page = memberCouponService.memberCouponPage(pageable.toPage(),limitPrice,getMemberId(),couponType,status); return ApiResponse.success("查询成功",page); } @LoginRequired @ApiOperation("会员优惠券详情") @GetMapping("/memberCouponDetail") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "id", value = "主键", required = true) }) public ApiResponse memberCouponDetail(Integer id) { return ApiResponse.success("查询成功",memberCouponService.getMemberCouponDetail(id)); } // @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("/getApplyCoupon") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), }) public ApiResponse> getApplyCoupon(@RequestBody List requestList) { return ApiResponse.success("查询成功", memberCouponService.getApplyCoupon(requestList,getMemberId())); } @LoginRequired @ApiOperation("经销商列表") @PostMapping("/shopPage") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), }) public ApiResponse> shopPage(@RequestBody PageWrap pageWrap) { IPage page = goodsorderService.getShopPage(pageWrap); return ApiResponse.success("查询成功",page); } @Autowired public MemberCouponServiceImpl memberCouponServiceImpl; @LoginRequired @ApiOperation("订单支付") @PostMapping("/orderPay") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true) }) public ApiResponse orderPay(@Valid @RequestBody ShopOrderPayRequest request) { request.setMemberId(getMemberId()); return ApiResponse.success("操作成功", goodsorderService.orderPay(request, memberCouponServiceImpl)); } @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.cancelOrderNew(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("/writeOffOrder") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), }) public ApiResponse writeOffOrder(@RequestBody DealOrderRequest dealOrderRequest) { goodsorderService.orderWriteOff(dealOrderRequest.getExchangeCode(),getMemberId()); return ApiResponse.success("操作成功"); } @LoginRequired @ApiOperation("订单删除") @PostMapping("/delOrder") @ApiImplicitParams({ @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true), }) public ApiResponse delOrder(@RequestBody DealOrderRequest dealOrderRequest) { goodsorderService.delOrder(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); } }