订单详情

This commit is contained in:
Jerry Yan 2025-01-03 16:46:16 +08:00
parent a91389ca99
commit 8e95d1b390
5 changed files with 69 additions and 142 deletions

View File

@ -31,7 +31,7 @@ public interface OrderMapper {
*/
int addOrderItems(List<OrderItemEntity> orderItems);
int getOrderCount(OrderReqQuery query);
int countByUserId(Long userId);
List<OrderAppRespVO> appList(OrderAppPageReq orderReqQuery);

View File

@ -77,21 +77,14 @@ public class OrderAppRespVO {
@ApiModelProperty("订单退款时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date refundAt;
private Long scenicId;
@ApiModelProperty("景区名称")
private String scenicName;
@ApiModelProperty("商品名称")
private String goodsName;
@ApiModelProperty("拍摄时间")
private Date shootingTime;
/**
* 商品类型0其他1成片2原片3模板成片
*/
@ApiModelProperty("商品类型,1成片2源素材")
@ApiModelProperty("商品类型0成片12源素材")
private Integer goodsType;
@ApiModelProperty("封面图片(来自模版封面图片)")
private String coverUrl;
@ApiModelProperty("原素材类型1视频2图像")
private Integer sourceType;
@ApiModelProperty("订单明细")
private List<OrderItemVO> orderItemList;
}

View File

@ -38,8 +38,10 @@ public class OrderItemVO {
private String videoUrl;
@ApiModelProperty("图片存储地址")
private String imgUrl;
private String coverUrl;
@ApiModelProperty("原素材类型1视频2图像")
private Integer sourceType;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
private Date shootingTime;
}

View File

@ -261,24 +261,13 @@ public class OrderServiceImpl implements OrderService {
@Override
public ApiResponse<Integer> getOrderCountByUserId(Long userId) {
OrderReqQuery query = new OrderReqQuery();
query.setMemberId(userId);
return ApiResponse.success(orderMapper.getOrderCount(query));
return ApiResponse.success(orderMapper.countByUserId(userId));
}
@Override
public ApiResponse<PageInfo<OrderAppRespVO>> appPageQuery(OrderAppPageReq orderReqQuery) {
PageHelper.startPage(orderReqQuery.getPageNum(), orderReqQuery.getPageSize());
List<OrderAppRespVO> list = orderMapper.appList(orderReqQuery);
for (OrderAppRespVO appRespVO : list) {
List<OrderItemVO> orderItemList = appRespVO.getOrderItemList();
if (orderItemList != null && !orderItemList.isEmpty()) {
OrderItemVO itemVO = orderItemList.get(NumberConstant.ZERO);
appRespVO.setScenicName(itemVO.getScenicName());
appRespVO.setGoodsName(itemVO.getGoodsName());
appRespVO.setSourceType(itemVO.getSourceType());
}
}
PageInfo<OrderAppRespVO> pageInfo = new PageInfo<>(list);
return ApiResponse.success(pageInfo);
}
@ -286,13 +275,6 @@ public class OrderServiceImpl implements OrderService {
@Override
public ApiResponse<OrderAppRespVO> appDetail(Long id) {
OrderAppRespVO orderAppRespVO = orderMapper.appDetail(id);
List<OrderItemVO> orderItemList = orderAppRespVO.getOrderItemList();
if (orderItemList != null && !orderItemList.isEmpty()) {
OrderItemVO itemVO = orderItemList.get(NumberConstant.ZERO);
orderAppRespVO.setScenicName(itemVO.getScenicName());
orderAppRespVO.setGoodsName(itemVO.getGoodsName());
orderAppRespVO.setSourceType(itemVO.getSourceType());
}
return ApiResponse.success(orderAppRespVO);
}

View File

@ -49,38 +49,67 @@
<result column="cancel_at" property="cancelAt"/>
<result column="create_at" property="createAt"/>
<result column="update_at" property="updateAt"/>
<result column="coverUrl" property="coverUrl"/>
<result column="shootingTime" property="shootingTime"/>
<result column="scenic_id" property="scenicId"/>
<result column="scenicName" property="scenicName"/>
<collection property="orderItemList" select="getOrderItemList" column="id" ofType="com.ycwl.basic.model.pc.order.resp.OrderItemVO">
<result column="oiId" property="id"/>
<result column="orderId" property="orderId"/>
<result column="goods_id" property="goodsId"/>
<result column="face_id" property="faceId"/>
<result column="scenicName" property="scenicName"/>
<result column="goodsName" property="goodsName"/>
<result column="scenic_name" property="scenicName"/>
<result column="goods_name" property="goodsName"/>
<result column="videoUrl" property="videoUrl"/>
<result column="coverUrl" property="coverUrl"/>
<result column="imgUrl" property="imgUrl"/>
<result column="sourceType" property="sourceType"/>
</collection>
</resultMap>
<select id="getOrderItemList" parameterType="java.lang.Long" resultType="com.ycwl.basic.model.pc.order.resp.OrderItemVO">
select oi.id oiId,oi.order_id orderId,oi.goods_id,
sc.name scenicName,t.cover_url coverUrl,
if(oi.goods_type='1',t.name,(select count(1) from order_item oi2 where oi2.order_id=oi.order_id)) as goodsName,
if(oi.goods_type='1',
(select task.face_id from task where task.id = vd.task_id),
(select id face_id from face where FIND_IN_SET(sr.face_sample_id, face.match_sample_ids) > 0 limit 1)
) as face_id,
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,
if(oi.goods_type='1',vd.create_time,sr.create_time) createTime
from order_item oi
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)
where oi.order_id=#{id}
WITH member_video_data AS (
SELECT mv.member_id, mv.video_id, t.cover_url, t.name, mv.face_id, v.video_url
FROM member_video mv
LEFT JOIN template t ON mv.template_id = t.id
LEFT JOIN video v ON mv.video_id = v.id
),
member_source_data AS (
SELECT ms.member_id, ms.source_id, ms.face_id, s.video_url, s.url
FROM member_source ms
LEFT JOIN source s ON ms.source_id = s.id
)
SELECT
oi.id AS oiId,
oi.order_id AS orderId,
oi.goods_id,
sc.id AS scenic_id,
sc.name AS scenic_name,
CASE oi.goods_type
WHEN '0' THEN mvd.cover_url
END AS coverUrl,
oi.goods_type,
CASE oi.goods_type
WHEN '0' THEN mvd.name
WHEN '1' THEN '原片'
WHEN '2' THEN '照片'
ELSE '其他'
END AS goods_name,
CASE oi.goods_type
WHEN '0' THEN mvd.face_id
WHEN '1' THEN msd.face_id
WHEN '2' THEN msd.face_id
END AS face_id,
CASE oi.goods_type
WHEN '0' THEN mvd.video_url
WHEN '1' THEN msd.video_url
END AS videoUrl,
CASE oi.goods_type
WHEN '1' THEN msd.url
WHEN '2' THEN msd.url
END AS imgUrl
FROM order_item oi
LEFT JOIN `order` o ON oi.order_id = o.id
LEFT JOIN scenic sc ON o.scenic_id = sc.id
LEFT JOIN member_video_data mvd ON o.member_id = mvd.member_id AND oi.goods_id = mvd.video_id
LEFT JOIN member_source_data msd ON o.member_id = msd.member_id AND oi.goods_id = msd.source_id
WHERE oi.order_id = #{id};
</select>
<insert id="add">
@ -211,113 +240,34 @@
left join scenic s on o.scenic_id = s.id
where o.id = #{id}
</select>
<select id="getOrderCount" resultType="java.lang.Integer">
<select id="countByUserId" resultType="java.lang.Integer">
select count(1) num
from `order` o
left join member m on o.member_id = m.id
<where>
<if test="id!= null ">
and o.id = #{id}
</if>
<if test="memberId!= null ">
and o.member_id = #{memberId}
</if>
<if test="memberNickname!= null and memberNickname!=''">
and m.nickname like concat('%',#{memberNickname},'%')
</if>
<if test="memberRealName!= null and memberRealName!=''">
and m.real_name like concat('%',#{memberRealName},'%')
</if>
<if test="price!= null ">
and o.price = #{price}
</if>
<if test="payPrice!= null ">
and pay_price = #{payPrice}
</if>
<if test="remark!= null and remark!= ''">
and remark like concat('%',#{remark},'%')
</if>
<if test="brokerId!= null ">
and o.broker_id = #{brokerId}
</if>
<if test="promoCode!= null and promoCode!= ''">
and o.promo_code like concat('%',#{promoCode},'%')
</if>
<if test="refundReason!= null and refundReason!= ''">
and refund_reason like concat('%',#{refundReason},'%')
</if>
<if test="refundStatus!= null ">
and refund_status = #{refundStatus}
</if>
<if test="status!= null ">
and o.`status` = #{status}
</if>
<if test="startCreateTime!= null ">
and o.create_at >= #{startCreateTime}
</if>
<if test="endCreateTime!= null ">
and o.create_at &lt;= #{endCreateTime}
</if>
<if test="startPayTime!= null ">
and pay_at &gt;= #{startPayTime}
</if>
<if test="endPayTime!= null ">
and pay_at &lt;= #{endPayTime}
</if>
<if test="startRefundTime!= null ">
and refund_at &gt;= #{startRefundTime}
</if>
<if test="endRefundTime!= null ">
and refund_at &lt;= #{endRefundTime}
</if>
<if test="startCancelTime!= null ">
and cancel_at &gt;= #{startCancelTime}
</if>
<if test="endCancelTime!= null ">
and cancel_at &lt;= #{endCancelTime}
</if>
</where>
where o.member_id = #{userId}
</select>
<select id="appList" resultMap="AppBaseResultMap">
select DISTINCT 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`, o.create_at, refund_at, pay_at, cancel_at, o.goods_type, vd.create_time shootingTime,
t.cover_url coverUrl
select DISTINCT o.id, o.member_id,o.openid, o.price, pay_price, remark, o.broker_id, o.promo_code,
refund_reason, refund_status, o.`status`, o.create_at, refund_at, pay_at, cancel_at, o.goods_type,
sc.name scenicName
from `order` AS 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 o.goods_type='2' and oi.goods_id = sr.id
left join video vd on o.goods_type='1' and oi.goods_id = vd.id
left join template t on o.goods_type='1' and vd.template_id=t.id
left join scenic sc on o.scenic_id = sc.id
<where>
<if test="memberId!=null">
and o.member_id=#{memberId}
</if>
<if test="type!= null ">
<if test="type== 0 ">
and o.goods_type = 1
</if>
<if test="type== 1 ">
and o.goods_type = 2 and sr.type = 1
</if>
<if test="type== 2 ">
and o.goods_type = 2 and sr.type = 2
</if>
and o.goods_type = #{type}
</if>
</where>
order by o.create_at desc
</select>
<select id="appDetail" resultMap="AppBaseResultMap">
select distinct 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,o.goods_type, o.create_at, o.scenic_id
,t.cover_url coverUrl
select distinct o.id, o.member_id,o.openid, o.price, pay_price, remark, o.broker_id, o.promo_code,
refund_reason, refund_status, o.`status`, o.create_at, refund_at, pay_at, cancel_at, o.goods_type,
o.scenic_id, sc.name scenicName
from `order` AS 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 o.goods_type='2' and oi.goods_id = sr.id
left join video vd on o.goods_type='1' and oi.goods_id = vd.id
left join template t on o.goods_type='1' and vd.template_id=t.id
left join scenic sc on (o.goods_type='1' and vd.scenic_id=sc.id) or (o.goods_type='2' and sr.scenic_id=sc.id)
left join scenic sc on o.scenic_id = sc.id
where o.id = #{id}
</select>
<select id="refundList" resultType="com.ycwl.basic.model.pc.order.resp.OrderRespVO">