From 3114fc7046c4289615239e29c54d0644aaf3316c Mon Sep 17 00:00:00 2001 From: longbinbin <2284496322@qq.com> Date: Thu, 5 Dec 2024 14:46:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E7=A7=BB=E5=8A=A8=E7=AB=AF?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=88=97=E8=A1=A8=E5=92=8C=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/mobile/AppOrderController.java | 17 +- .../com/ycwl/basic/mapper/pc/OrderMapper.java | 8 +- .../pc/order/entity/OrderItemEntity.java | 4 +- .../model/pc/order/req/OrderItemDTO.java | 8 +- .../model/pc/order/req/OrderReqQuery.java | 1 + .../model/pc/order/resp/OrderAppRespVO.java | 88 ++++++++ .../model/pc/order/resp/OrderItemVO.java | 14 +- .../service/impl/pc/OrderServiceImpl.java | 37 +++ .../ycwl/basic/service/pc/OrderService.java | 7 + src/main/resources/mapper/pc/OrderMapper.xml | 212 +++++++++++++++++- 10 files changed, 374 insertions(+), 22 deletions(-) create mode 100644 src/main/java/com/ycwl/basic/model/pc/order/resp/OrderAppRespVO.java diff --git a/src/main/java/com/ycwl/basic/controller/mobile/AppOrderController.java b/src/main/java/com/ycwl/basic/controller/mobile/AppOrderController.java index 05e8708..dc0924c 100644 --- a/src/main/java/com/ycwl/basic/controller/mobile/AppOrderController.java +++ b/src/main/java/com/ycwl/basic/controller/mobile/AppOrderController.java @@ -1,5 +1,6 @@ package com.ycwl.basic.controller.mobile; +import com.ycwl.basic.annotation.IgnoreToken; import com.ycwl.basic.model.pc.order.req.OrderAddOrUpdateReq; import com.ycwl.basic.model.pc.order.req.OrderReqQuery; import com.ycwl.basic.service.pc.OrderService; @@ -23,14 +24,17 @@ public class AppOrderController { @ApiOperation("用户端订单列表查询") @PostMapping("/page") + @IgnoreToken public ApiResponse pageQuery(@RequestBody OrderReqQuery orderReqQuery) { //TODO 添加用户openid查询条件,仅查询当前用户自己的订单 - return orderService.pageQuery(orderReqQuery); + + return orderService.appPageQuery(orderReqQuery); } @ApiOperation("用户端订单详情查询") @GetMapping("getOrderDetails/{id}") + @IgnoreToken public ApiResponse getOrderDetails(@PathVariable("id") Long id) { - return orderService.detail(id); + return orderService.appDetail(id); } @ApiOperation("用户端订单新增") @@ -46,4 +50,13 @@ public class AppOrderController { //TODO 处理购买逻辑 return ApiResponse.success(""); } + + @ApiOperation("获取用户订单数量") + @GetMapping("/getUserOrderCount") + public ApiResponse getUserOrderCount() { + //TODO 获取用户信息 + Long userId = 1L; + + return orderService.getOrderCountByUserId(userId); + } } diff --git a/src/main/java/com/ycwl/basic/mapper/pc/OrderMapper.java b/src/main/java/com/ycwl/basic/mapper/pc/OrderMapper.java index 4d12694..32c6e94 100644 --- a/src/main/java/com/ycwl/basic/mapper/pc/OrderMapper.java +++ b/src/main/java/com/ycwl/basic/mapper/pc/OrderMapper.java @@ -1,10 +1,11 @@ package com.ycwl.basic.mapper.pc; -import com.ycwl.basic.model.pc.order.entity.OrderEntity; import com.ycwl.basic.model.pc.order.entity.OrderItemEntity; import com.ycwl.basic.model.pc.order.req.OrderAddOrUpdateReq; import com.ycwl.basic.model.pc.order.req.OrderReqQuery; +import com.ycwl.basic.model.pc.order.resp.OrderAppRespVO; import com.ycwl.basic.model.pc.order.resp.OrderRespVO; +import com.ycwl.basic.utils.ApiResponse; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -29,4 +30,9 @@ public interface OrderMapper { */ int addOrderItems(List orderItems); + ApiResponse getOrderCount(OrderReqQuery query); + + List appList(OrderReqQuery orderReqQuery); + + OrderAppRespVO appDetail(Long id); } diff --git a/src/main/java/com/ycwl/basic/model/pc/order/entity/OrderItemEntity.java b/src/main/java/com/ycwl/basic/model/pc/order/entity/OrderItemEntity.java index 91ffb88..abef6a9 100644 --- a/src/main/java/com/ycwl/basic/model/pc/order/entity/OrderItemEntity.java +++ b/src/main/java/com/ycwl/basic/model/pc/order/entity/OrderItemEntity.java @@ -19,11 +19,11 @@ public class OrderItemEntity { */ private Long orderId; /** - * 商品类型,0其他,1成片,2原片,3模板成片 + * 商品类型,0其他,1成片,,2源素材 */ private Integer goodsType; /** - * 商品ID,goods_type=1关联video.id,=2关联source.id,=3关联template.id + * 商品ID,goods_type=1关联video.id,=2关联source.id */ private Long goodsId; diff --git a/src/main/java/com/ycwl/basic/model/pc/order/req/OrderItemDTO.java b/src/main/java/com/ycwl/basic/model/pc/order/req/OrderItemDTO.java index 157ad45..2727d04 100644 --- a/src/main/java/com/ycwl/basic/model/pc/order/req/OrderItemDTO.java +++ b/src/main/java/com/ycwl/basic/model/pc/order/req/OrderItemDTO.java @@ -18,13 +18,13 @@ public class OrderItemDTO { @ApiModelProperty("订单id") private Long orderId; /** - * 商品类型,0其他,1成片,2原片,3模板成片 + * 商品类型,0其他,1成片,2原片 */ - @ApiModelProperty("商品类型,0其他,1成片,2原片,3模板成片") + @ApiModelProperty("商品类型,0其他,1成片,,2源素材") private Integer goodsType; /** - * 商品ID,goods_type=1关联video.id,=2关联source.id,=3关联template.id + * 商品ID,goods_type=1关联video.id,=2关联source.id */ - @ApiModelProperty("商品ID,goods_type=1关联video.id,=2关联source.id,=3关联template.id") + @ApiModelProperty("商品ID,goods_type=1关联video.id,=2关联source.id") private Long goodsId; } diff --git a/src/main/java/com/ycwl/basic/model/pc/order/req/OrderReqQuery.java b/src/main/java/com/ycwl/basic/model/pc/order/req/OrderReqQuery.java index 1cbcc94..94aea47 100644 --- a/src/main/java/com/ycwl/basic/model/pc/order/req/OrderReqQuery.java +++ b/src/main/java/com/ycwl/basic/model/pc/order/req/OrderReqQuery.java @@ -17,6 +17,7 @@ import java.util.Date; @Data @ApiModel(value = "订单查询对象") public class OrderReqQuery extends BaseQueryParameterReq { + private Long memberId; @ApiModelProperty("用户昵称") private String memberNickname; @ApiModelProperty("用户真实名称") diff --git a/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderAppRespVO.java b/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderAppRespVO.java new file mode 100644 index 0000000..704d5bc --- /dev/null +++ b/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderAppRespVO.java @@ -0,0 +1,88 @@ +package com.ycwl.basic.model.pc.order.resp; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * @Author:longbinbin + * @Date:2024/11/29 15:59 + */ +@Data +@ApiModel("移动端订单信息响应类") +public class OrderAppRespVO { + private Long id; + /** + * 价格 + */ + @ApiModelProperty("价格") + private BigDecimal price; + /** + * 实际支付价格 + */ + @ApiModelProperty("实际支付价格") + private BigDecimal payPrice; + /** + * 备注 + */ + @ApiModelProperty("备注") + private String remark; + /** + * 退款原因 + */ + @ApiModelProperty("退款原因") + private String refundReason; + /** + * 退款状态,0未提出,1已通过,2待审核 + */ + @ApiModelProperty("退款状态,0未提出,1已通过,2待审核") + private Integer refundStatus; + /** + * 状态,0未支付,1已支付,2已退款,9已取消 + */ + @ApiModelProperty("状态,0未支付,1已支付,2已退款,9已取消") + private Integer status; + /** + * 订单创建时间 + */ + @ApiModelProperty("订单创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createAt; + /** + * 订单更新时间 + */ + @ApiModelProperty("订单更新时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date updateAt; + /** + * 订单支付时间 + */ + @ApiModelProperty("订单支付时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date payAt; + /** + * 订单取消时间 + */ + @ApiModelProperty("订单取消时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date cancelAt; + /** + * 订单退款时间 + */ + @ApiModelProperty("订单退款时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date refundAt; + @ApiModelProperty("景区名称") + private String scenicName; + @ApiModelProperty("商品名称") + private String goodsName; + @ApiModelProperty("拍摄时间") + private Date shootingTime; + @ApiModelProperty("订单明细") + private List orderItemList; +} diff --git a/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderItemVO.java b/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderItemVO.java index 2bf4103..d76f6cf 100644 --- a/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderItemVO.java +++ b/src/main/java/com/ycwl/basic/model/pc/order/resp/OrderItemVO.java @@ -22,11 +22,21 @@ public class OrderItemVO { /** * 商品类型,0其他,1成片,2原片,3模板成片 */ - @ApiModelProperty("商品类型,0其他,1成片,2原片,3模板成片") + @ApiModelProperty("商品类型,0其他,1成片,2源素材") private Integer goodsType; /** * 商品ID,goods_type=1关联video.id,=2关联source.id,=3关联template.id */ - @ApiModelProperty("商品ID,goods_type=1关联video.id,=2关联source.id,=3关联template.id") + @ApiModelProperty("商品ID,goods_type=1关联video.id,=2关联source.id") private Long goodsId; + @ApiModelProperty("景区名称") + private String scenicName; + @ApiModelProperty("商品名称 模版名称/原片x个/照片x个") + private String goodsName; + @ApiModelProperty("视频链接") + private String videoUrl; + @ApiModelProperty("图片存储地址") + private String imgUrl; + @ApiModelProperty("原素材类型:1视频,2图像") + private Integer sourceType; } diff --git a/src/main/java/com/ycwl/basic/service/impl/pc/OrderServiceImpl.java b/src/main/java/com/ycwl/basic/service/impl/pc/OrderServiceImpl.java index 136674c..7ad2170 100644 --- a/src/main/java/com/ycwl/basic/service/impl/pc/OrderServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/impl/pc/OrderServiceImpl.java @@ -8,6 +8,8 @@ import com.ycwl.basic.model.pc.order.entity.OrderItemEntity; import com.ycwl.basic.model.pc.order.req.OrderAddOrUpdateReq; import com.ycwl.basic.model.pc.order.req.OrderItemDTO; import com.ycwl.basic.model.pc.order.req.OrderReqQuery; +import com.ycwl.basic.model.pc.order.resp.OrderAppRespVO; +import com.ycwl.basic.model.pc.order.resp.OrderItemVO; import com.ycwl.basic.model.pc.order.resp.OrderRespVO; import com.ycwl.basic.service.pc.OrderService; import com.ycwl.basic.utils.ApiResponse; @@ -82,4 +84,39 @@ public class OrderServiceImpl implements OrderService { } return ApiResponse.success(update); } + + @Override + public ApiResponse getOrderCountByUserId(Long userId) { + OrderReqQuery query = new OrderReqQuery(); + query.setMemberId(userId); + return orderMapper.getOrderCount(query); + } + + @Override + public ApiResponse> appPageQuery(OrderReqQuery orderReqQuery) { + PageHelper.startPage(orderReqQuery.getPageNum(), orderReqQuery.getPageSize()); + List list = orderMapper.appList(orderReqQuery); + for (OrderAppRespVO appRespVO : list) { + List orderItemList = appRespVO.getOrderItemList(); + if(orderItemList!= null && orderItemList.size() > 0){ + OrderItemVO itemVO = orderItemList.get(0); + appRespVO.setScenicName(itemVO.getScenicName()); + appRespVO.setGoodsName(itemVO.getGoodsName()); + } + } + PageInfo pageInfo = new PageInfo<>(list); + return ApiResponse.success(pageInfo); + } + + @Override + public ApiResponse appDetail(Long id) { + OrderAppRespVO orderAppRespVO=orderMapper.appDetail(id); + List orderItemList = orderAppRespVO.getOrderItemList(); + if(orderItemList!= null && orderItemList.size() > 0){ + OrderItemVO itemVO = orderItemList.get(0); + orderAppRespVO.setScenicName(itemVO.getScenicName()); + orderAppRespVO.setGoodsName(itemVO.getGoodsName()); + } + return ApiResponse.success(orderAppRespVO); + } } diff --git a/src/main/java/com/ycwl/basic/service/pc/OrderService.java b/src/main/java/com/ycwl/basic/service/pc/OrderService.java index 782eecf..e181270 100644 --- a/src/main/java/com/ycwl/basic/service/pc/OrderService.java +++ b/src/main/java/com/ycwl/basic/service/pc/OrderService.java @@ -4,6 +4,7 @@ import com.github.pagehelper.PageInfo; import com.ycwl.basic.model.pc.order.entity.OrderEntity; import com.ycwl.basic.model.pc.order.req.OrderAddOrUpdateReq; import com.ycwl.basic.model.pc.order.req.OrderReqQuery; +import com.ycwl.basic.model.pc.order.resp.OrderAppRespVO; import com.ycwl.basic.model.pc.order.resp.OrderRespVO; import com.ycwl.basic.utils.ApiResponse; @@ -19,4 +20,10 @@ public interface OrderService { ApiResponse detail(Long orderId); ApiResponse add(OrderAddOrUpdateReq query); ApiResponse update(OrderAddOrUpdateReq query); + + ApiResponse getOrderCountByUserId(Long userId); + + ApiResponse> appPageQuery(OrderReqQuery orderReqQuery); + + ApiResponse appDetail(Long id); } diff --git a/src/main/resources/mapper/pc/OrderMapper.xml b/src/main/resources/mapper/pc/OrderMapper.xml index e93287b..a9f37e1 100644 --- a/src/main/resources/mapper/pc/OrderMapper.xml +++ b/src/main/resources/mapper/pc/OrderMapper.xml @@ -1,7 +1,7 @@ - + @@ -25,6 +25,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -73,12 +103,92 @@ delete from `order` where id = #{id} - + select o.id, o.member_id,m.nickname ,m.real_name , o.openid, o.price, pay_price, remark, o.broker_id, o.promo_code, refund_reason, refund_status, o.`status`, refund_at, pay_at, cancel_at,oi.id oiId, oi.goods_type, oi.goods_id from `order` o left join member m on o.member_id = m.id left join order_item oi on o.id = oi.order_id + left join source sr on oi.goods_type='2' and oi.goods_id = sr.id + left join video vd on oi.goods_type='1' and oi.goods_id = vd.id + + + and o.id = #{id} + + + and m.nickname like concat('%',#{memberNickname},'%') + + + and m.real_name like concat('%',#{memberRealName},'%') + + + and o.price = #{price} + + + and pay_price = #{payPrice} + + + and remark like concat('%',#{remark},'%') + + + and o.broker_id = #{brokerId} + + + and o.promo_code like concat('%',#{promoCode},'%') + + + and refund_reason like concat('%',#{refundReason},'%') + + + and refund_status = #{refundStatus} + + + and o.`status` = #{status} + + + and o.create_at >= #{startCreateTime} + + + and o.create_at <= #{endCreateTime} + + + and pay_at >= #{startPayTime} + + + and pay_at <= #{endPayTime} + + + and refund_at >= #{startRefundTime} + + + and refund_at <= #{endRefundTime} + + + and cancel_at >= #{startCancelTime} + + + and cancel_at <= #{endCancelTime} + + + order by o.create_at desc + + + - + select o.id, o.member_id,m.nickname ,m.real_name , o.openid, o.price, pay_price, remark, o.broker_id, o.promo_code, + refund_reason, refund_status, o.`status`, refund_at, pay_at, cancel_at,oi.id oiId, oi.goods_type, oi.goods_id, + sc.name scenicName, + if(oi.goods_type='1',t.name,(select count(1) from order_item oi2 where oi2.order_id=o.id)) as goodsName, + if(oi.goods_type='1',vd.video_url,sr.video_url) videoUrl, + if(oi.goods_type='2',sr.url,null) imgUrl, + if(oi.goods_type='2',sr.type,null) sourceType + from `order` o + left join member m on o.member_id = m.id left join order_item oi on o.id = oi.order_id - left join template t on oi.goods_type='3' and oi.goods_id = t.id left join source sr on oi.goods_type='2' and oi.goods_id = sr.id left join video vd on oi.goods_type='1' and oi.goods_id = vd.id + left join template t on oi.goods_type='1' and vd.template_id=t.id + left join scenic sc on (oi.goods_type='1' and vd.scenic_id=sc.id) or (oi.goods_type='2' and sr.scenic_id=sc.id) + + + and m.nickname like concat('%',#{memberNickname},'%') + + + and m.real_name like concat('%',#{memberRealName},'%') + + + and o.price = #{price} + + + and pay_price = #{payPrice} + + + and remark like concat('%',#{remark},'%') + + + and o.broker_id = #{brokerId} + + + and o.promo_code like concat('%',#{promoCode},'%') + + + and refund_reason like concat('%',#{refundReason},'%') + + + and refund_status = #{refundStatus} + + + and o.`status` = #{status} + + + and o.create_at >= #{startCreateTime} + + + and o.create_at <= #{endCreateTime} + + + and pay_at >= #{startPayTime} + + + and pay_at <= #{endPayTime} + + + and refund_at >= #{startRefundTime} + + + and refund_at <= #{endRefundTime} + + + and cancel_at >= #{startCancelTime} + + + and cancel_at <= #{endCancelTime} + + + order by o.create_at desc + + \ No newline at end of file