refactor(order):优化订单详情查询逻辑
- 移除不必要的 QueryWrapper 导入 - 将 OrderItem 实体替换为 OrderItemVO 视图对象 - 新增 selectItemInfoByOrderIds 方法用于批量查询订单详情- 简化订单详情分组与绑定逻辑 - 在 OrderItemVO 中增加核销相关字段及状态枚举支持
This commit is contained in:
parent
1305061781
commit
606ffbefdf
@ -1,11 +1,13 @@
|
||||
package com.wzj.soopin.order.domain.vo;
|
||||
|
||||
import com.wzj.soopin.order.emum.VerificationCodeStatus;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import org.dromara.common.core.domain.model.BaseAudit;
|
||||
import org.dromara.common.excel.annotation.Excel;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 订单中所包含的商品 数据视图对象
|
||||
@ -92,4 +94,39 @@ public class OrderItemVO extends BaseAudit {
|
||||
private String tenantId;
|
||||
|
||||
private String tenantName;
|
||||
|
||||
@Schema(description = "ID")
|
||||
private Long verificationId;
|
||||
|
||||
@Schema(description = "核销码")
|
||||
private String code;
|
||||
/**
|
||||
* 状态 见{@link VerificationCodeStatus}
|
||||
*/
|
||||
@Schema(description = "状态")
|
||||
private Integer status;
|
||||
|
||||
@Schema(description = "用户id")
|
||||
private Long memberId;
|
||||
|
||||
@Schema(description = "用户昵称")
|
||||
private String memberName;
|
||||
|
||||
@Schema(description = "使用时间")
|
||||
private LocalDateTime usedTime;
|
||||
|
||||
@Schema(description = "使用商家id")
|
||||
private String usedMerchantId;
|
||||
|
||||
@Schema(description = "过期时间")
|
||||
private LocalDateTime expireTime;
|
||||
|
||||
@Schema(description = "核销时间")
|
||||
private LocalDateTime verificationTime;
|
||||
|
||||
@Schema(description = "核销结果")
|
||||
private Integer result;
|
||||
|
||||
@Schema(description = "失败原因")
|
||||
private String reason;
|
||||
}
|
||||
|
@ -72,4 +72,22 @@ public interface OrderItemMapper extends BaseMapperPlus<OrderItem, OrderItemVO>
|
||||
IPage<MerchantOrderVO> selectMerchatOrderPage(@Param("page") Page<Object> page, @Param("query") OrderItemBo query);
|
||||
|
||||
MerchantOrderVO selectMerchatOrder(@Param("tenantId") String tenantId, @Param("orderItemId") Long orderItemId, @Param("verificationCode") String verificationCode);
|
||||
|
||||
|
||||
@Select("<script>" +
|
||||
"SELECT " +
|
||||
" oi.*, " +
|
||||
" vc.id verificationId, " +
|
||||
" vc.* " +
|
||||
"FROM " +
|
||||
" oms_order_item oi " +
|
||||
" LEFT JOIN oms_verification_codes vc ON oi.id = vc.order_item_id " +
|
||||
"WHERE " +
|
||||
" oi.order_id IN " +
|
||||
" <foreach item='id' collection='orderIds' open='(' separator=',' close=')'>" +
|
||||
" #{id}" +
|
||||
" </foreach>" +
|
||||
"</script>")
|
||||
List<OrderItemVO> selectItemInfoByOrderIds(@Param("orderIds") List<Long> orderIds);
|
||||
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.wzj.soopin.order.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.wzj.soopin.goods.mapper.SkuMapper;
|
||||
@ -8,7 +7,7 @@ import com.wzj.soopin.order.convert.OrderConvert;
|
||||
import com.wzj.soopin.order.convert.OrderItemConvert;
|
||||
import com.wzj.soopin.order.domain.bo.OrderBo;
|
||||
import com.wzj.soopin.order.domain.entity.Order;
|
||||
import com.wzj.soopin.order.domain.entity.OrderItem;
|
||||
import com.wzj.soopin.order.domain.vo.OrderItemVO;
|
||||
import com.wzj.soopin.order.domain.vo.OrderVO;
|
||||
import com.wzj.soopin.order.mapper.OrderItemMapper;
|
||||
import com.wzj.soopin.order.mapper.OrderMapper;
|
||||
@ -47,20 +46,10 @@ public class MemberOrderServiceImpl extends ServiceImpl<OrderMapper, Order> impl
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 根据订单id查询订单详情
|
||||
QueryWrapper<OrderItem> orderItemQueryWrapper = new QueryWrapper<>();
|
||||
orderItemQueryWrapper.in("order_id", orderIds);
|
||||
List<OrderItem> orderItemList = orderItemMapper.selectList(orderItemQueryWrapper);
|
||||
|
||||
List<OrderItemVO> orderItemVOList =orderItemMapper.selectItemInfoByOrderIds(orderIds);
|
||||
// 按照订单id分组订单详情
|
||||
Map<Long, List<OrderItem>> orderItemMapByOrderId = orderItemList.stream()
|
||||
.collect(Collectors.groupingBy(OrderItem::getOrderId));
|
||||
|
||||
for (OrderVO orderVO : orderVOList) {
|
||||
List<OrderItem> orderItems = orderItemMapByOrderId.get(orderVO.getId());
|
||||
if (orderItems != null) {
|
||||
orderVO.setItems(orderItemConvert.toVO(orderItems));
|
||||
}
|
||||
}
|
||||
Map<Long, List<OrderItemVO>> orderItemMapByOrderId = orderItemVOList.stream().collect(Collectors.groupingBy(OrderItemVO::getOrderId));
|
||||
orderVOList.forEach(orderVO -> orderVO.setItems(orderItemMapByOrderId.get(orderVO.getId())));
|
||||
|
||||
return orderVOPage;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user