Parcourir la source

小程序订单调试

skyline il y a 1 mois
Parent
commit
180519a162

+ 28 - 26
haha-service/src/main/java/com/haha/service/impl/OrderServiceImpl.java

@@ -13,6 +13,7 @@ import com.haha.common.enums.PayStatus;
 import com.haha.common.enums.PaymentChannel;
 import com.haha.common.enums.PaymentChannel;
 import com.haha.common.exception.BusinessException;
 import com.haha.common.exception.BusinessException;
 import com.haha.common.utils.EntityLabelUtils;
 import com.haha.common.utils.EntityLabelUtils;
+import com.haha.common.utils.OrderUtils;
 import com.haha.common.vo.OrderItemVO;
 import com.haha.common.vo.OrderItemVO;
 import com.haha.common.vo.OrderVO;
 import com.haha.common.vo.OrderVO;
 import com.haha.entity.Device;
 import com.haha.entity.Device;
@@ -52,7 +53,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 
     private final DeviceMapper deviceMapper;
     private final DeviceMapper deviceMapper;
     private final ShopMapper shopMapper;
     private final ShopMapper shopMapper;
-    
+
     @Autowired
     @Autowired
     @Lazy
     @Lazy
     private PaymentService paymentService;
     private PaymentService paymentService;
@@ -70,7 +71,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     private InviteActivityService inviteActivityService;
     private InviteActivityService inviteActivityService;
 
 
     @Override
     @Override
-    public IPage<Order> getPage(int page, int pageSize, String orderNo, String deviceId, 
+    public IPage<Order> getPage(int page, int pageSize, String orderNo, String deviceId,
                                  String payStatus, Integer status, String startDate, String endDate) {
                                  String payStatus, Integer status, String startDate, String endDate) {
         // 确保分页参数有效(MyBatis-Plus 要求页码从 1 开始)
         // 确保分页参数有效(MyBatis-Plus 要求页码从 1 开始)
         if (page < 1) {
         if (page < 1) {
@@ -79,11 +80,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         if (pageSize < 1 || pageSize > 100) {
         if (pageSize < 1 || pageSize > 100) {
             pageSize = 10;  // 默认每页 10 条,最大 100 条
             pageSize = 10;  // 默认每页 10 条,最大 100 条
         }
         }
-        
+
         log.info("订单分页查询:page={}, pageSize={}, orderNo={}, deviceId={}", page, pageSize, orderNo, deviceId);
         log.info("订单分页查询:page={}, pageSize={}, orderNo={}, deviceId={}", page, pageSize, orderNo, deviceId);
-        
+
         LambdaQueryWrapper<Order> wrapper = new LambdaQueryWrapper<>();
         LambdaQueryWrapper<Order> wrapper = new LambdaQueryWrapper<>();
-        
+
         // 构建查询条件
         // 构建查询条件
         wrapper.like(orderNo != null && !orderNo.isEmpty(), Order::getOrderNo, orderNo)
         wrapper.like(orderNo != null && !orderNo.isEmpty(), Order::getOrderNo, orderNo)
                .like(deviceId != null && !deviceId.isEmpty(), Order::getDeviceId, deviceId)
                .like(deviceId != null && !deviceId.isEmpty(), Order::getDeviceId, deviceId)
@@ -105,10 +106,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 
         // 分页查询
         // 分页查询
         IPage<Order> orderPage = this.page(new Page<>(page, pageSize), wrapper);
         IPage<Order> orderPage = this.page(new Page<>(page, pageSize), wrapper);
-        
+
         // 填充标签字段和关联信息
         // 填充标签字段和关联信息
         orderPage.getRecords().forEach(this::fillOrderLabels);
         orderPage.getRecords().forEach(this::fillOrderLabels);
-        
+
         return orderPage;
         return orderPage;
     }
     }
 
 
@@ -128,7 +129,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         if (order == null) {
         if (order == null) {
             return null;
             return null;
         }
         }
-        
+
         OrderVO vo = new OrderVO();
         OrderVO vo = new OrderVO();
         vo.setId(order.getId());
         vo.setId(order.getId());
         vo.setOrderNo(order.getOrderNo());
         vo.setOrderNo(order.getOrderNo());
@@ -145,10 +146,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         vo.setPayTime(order.getPayTime());
         vo.setPayTime(order.getPayTime());
         vo.setVideoUrl(order.getVideoUrl());
         vo.setVideoUrl(order.getVideoUrl());
         vo.setConfidence(order.getConfidence());
         vo.setConfidence(order.getConfidence());
-        
+
         List<OrderItemVO> products = orderGoodsService.getVOByOrderId(id);
         List<OrderItemVO> products = orderGoodsService.getVOByOrderId(id);
         vo.setProducts(products);
         vo.setProducts(products);
-        
+
         return vo;
         return vo;
     }
     }
 
 
@@ -231,8 +232,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         statistics.put("todayAmount", todayAmount != null ? todayAmount.setScale(2, RoundingMode.HALF_UP).toString() : "0.00");
         statistics.put("todayAmount", todayAmount != null ? todayAmount.setScale(2, RoundingMode.HALF_UP).toString() : "0.00");
 
 
         // 平均订单金额
         // 平均订单金额
-        BigDecimal averageAmount = completedOrders > 0 && totalAmount != null 
-            ? totalAmount.divide(BigDecimal.valueOf(completedOrders), 2, RoundingMode.HALF_UP) 
+        BigDecimal averageAmount = completedOrders > 0 && totalAmount != null
+            ? totalAmount.divide(BigDecimal.valueOf(completedOrders), 2, RoundingMode.HALF_UP)
             : BigDecimal.ZERO;
             : BigDecimal.ZERO;
         statistics.put("averageAmount", averageAmount.toString());
         statistics.put("averageAmount", averageAmount.toString());
 
 
@@ -302,18 +303,18 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 
     /**
     /**
      * 从AI识别结果创建订单
      * 从AI识别结果创建订单
-     * 
+     *
      * 业务流程:
      * 业务流程:
      * 1. 幂等性检查:防止重复创建订单
      * 1. 幂等性检查:防止重复创建订单
      * 2. 保存商品识别信息(此时不计算金额,因为AI识别结果不包含价格)
      * 2. 保存商品识别信息(此时不计算金额,因为AI识别结果不包含价格)
      * 3. 解析视频URL等资源信息
      * 3. 解析视频URL等资源信息
      * 4. 创建订单记录,状态为待支付,金额为0(等待订单回调时由设备端提供实付金额)
      * 4. 创建订单记录,状态为待支付,金额为0(等待订单回调时由设备端提供实付金额)
-     * 
+     *
      * 注意:
      * 注意:
      * - AI识别结果(sku_list)只包含商品编码(code)和数量(quantity),不包含价格
      * - AI识别结果(sku_list)只包含商品编码(code)和数量(quantity),不包含价格
      * - 商品价格在订单回调时由设备端计算并传来
      * - 商品价格在订单回调时由设备端计算并传来
      * - 此方法只创建订单框架,实际金额在handleOrderCallback中更新
      * - 此方法只创建订单框架,实际金额在handleOrderCallback中更新
-     * 
+     *
      * @param activityId 活动ID(设备开门会话ID)
      * @param activityId 活动ID(设备开门会话ID)
      * @param deviceId 设备ID
      * @param deviceId 设备ID
      * @param userId 用户ID
      * @param userId 用户ID
@@ -334,7 +335,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 return existingOrder;
                 return existingOrder;
             }
             }
         }
         }
-        
+
         // 【步骤2】解析视频URL等资源信息
         // 【步骤2】解析视频URL等资源信息
         String videoUrl = null;
         String videoUrl = null;
         if (resourceInfoStr != null && !resourceInfoStr.isEmpty()) {
         if (resourceInfoStr != null && !resourceInfoStr.isEmpty()) {
@@ -349,6 +350,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         // 3. 设备端会根据商品编码查询价格,并计算优惠后得到最终实付金额
         // 3. 设备端会根据商品编码查询价格,并计算优惠后得到最终实付金额
         if (userId != null && deviceId != null) {
         if (userId != null && deviceId != null) {
             Order order = new Order();
             Order order = new Order();
+            order.setOrderNo(OrderUtils.getOrderNo());
             order.setActivityId(activityId);                          // 开门会话ID
             order.setActivityId(activityId);                          // 开门会话ID
             order.setUserId(Long.parseLong(userId));                  // 用户ID
             order.setUserId(Long.parseLong(userId));                  // 用户ID
             order.setDeviceId(deviceId);                              // 设备ID
             order.setDeviceId(deviceId);                              // 设备ID
@@ -390,7 +392,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             var statusLabel = EntityLabelUtils.getStatusLabel("order", order.getStatus());
             var statusLabel = EntityLabelUtils.getStatusLabel("order", order.getStatus());
             order.setStatusLabel(statusLabel.getLabel());
             order.setStatusLabel(statusLabel.getLabel());
         }
         }
-        
+
         // 如果 payType 为空但 payChannel 有值,从 payChannel 获取描述
         // 如果 payType 为空但 payChannel 有值,从 payChannel 获取描述
         if (order.getPayType() == null || order.getPayType().isEmpty()) {
         if (order.getPayType() == null || order.getPayType().isEmpty()) {
             if (order.getPayChannel() != null && !order.getPayChannel().isEmpty()) {
             if (order.getPayChannel() != null && !order.getPayChannel().isEmpty()) {
@@ -404,7 +406,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 order.setPayType("免费");
                 order.setPayType("免费");
             }
             }
         }
         }
-        
+
         // 根据 deviceId 查询设备信息,获取门店名称
         // 根据 deviceId 查询设备信息,获取门店名称
         if (order.getDeviceId() != null && !order.getDeviceId().isEmpty()) {
         if (order.getDeviceId() != null && !order.getDeviceId().isEmpty()) {
             try {
             try {
@@ -432,9 +434,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     public Order createOrderWithPayScore(String activityId, String deviceId, String userId,
     public Order createOrderWithPayScore(String activityId, String deviceId, String userId,
                                           String skuListStr, String resourceInfoStr, BigDecimal confidence,
                                           String skuListStr, String resourceInfoStr, BigDecimal confidence,
                                           String openId) {
                                           String openId) {
-        Order order = createOrderFromRecognition(activityId, deviceId, userId, 
+        Order order = createOrderFromRecognition(activityId, deviceId, userId,
                 skuListStr, resourceInfoStr, confidence);
                 skuListStr, resourceInfoStr, confidence);
-        
+
         if (order == null) {
         if (order == null) {
             return null;
             return null;
         }
         }
@@ -446,9 +448,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 
         try {
         try {
             PayScoreResult result = payScoreService.createPayScoreOrder(order.getId(), openId);
             PayScoreResult result = payScoreService.createPayScoreOrder(order.getId(), openId);
-            
+
             if (result.isSuccess()) {
             if (result.isSuccess()) {
-                log.info("[支付分集成] 支付分服务订单创建成功 - orderId: {}, outOrderNo: {}", 
+                log.info("[支付分集成] 支付分服务订单创建成功 - orderId: {}, outOrderNo: {}",
                         order.getId(), result.getOutOrderNo());
                         order.getId(), result.getOutOrderNo());
                 order.setPayScoreOrderId(result.getOutOrderNo());
                 order.setPayScoreOrderId(result.getOutOrderNo());
                 order.setPayScoreState(result.getState());
                 order.setPayScoreState(result.getState());
@@ -456,7 +458,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 order.setPayType("微信支付分");
                 order.setPayType("微信支付分");
                 this.updateById(order);
                 this.updateById(order);
             } else {
             } else {
-                log.warn("[支付分集成] 支付分服务订单创建失败 - orderId: {}, errorCode: {}, errorMsg: {}", 
+                log.warn("[支付分集成] 支付分服务订单创建失败 - orderId: {}, errorCode: {}, errorMsg: {}",
                         order.getId(), result.getErrorCode(), result.getErrorMsg());
                         order.getId(), result.getErrorCode(), result.getErrorMsg());
             }
             }
         } catch (Exception e) {
         } catch (Exception e) {
@@ -468,17 +470,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
 
     /**
     /**
      * 使用支付分完结订单(扣费)
      * 使用支付分完结订单(扣费)
-     * 
+     *
      * 业务流程:
      * 业务流程:
      * 1. 验证订单是否存在
      * 1. 验证订单是否存在
      * 2. 检查是否创建了支付分服务订单
      * 2. 检查是否创建了支付分服务订单
      * 3. 调用微信支付分完结接口进行扣费
      * 3. 调用微信支付分完结接口进行扣费
      * 4. 扣费成功后触发邀请激活逻辑(异步)
      * 4. 扣费成功后触发邀请激活逻辑(异步)
-     * 
+     *
      * 注意:
      * 注意:
      * - 如果订单未使用支付分,直接更新订单状态
      * - 如果订单未使用支付分,直接更新订单状态
      * - 优惠金额已在设备端计算,totalAmount为实付金额
      * - 优惠金额已在设备端计算,totalAmount为实付金额
-     * 
+     *
      * @param orderId 订单ID
      * @param orderId 订单ID
      * @param totalAmount 订单总金额(设备端已计算优惠后的实付金额)
      * @param totalAmount 订单总金额(设备端已计算优惠后的实付金额)
      * @return 是否完结成功
      * @return 是否完结成功