lutong 1 месяц назад
Родитель
Сommit
b8d7d4e6d8

+ 10 - 11
alien-dining/src/main/java/shop/alien/dining/service/impl/StoreOrderServiceImpl.java

@@ -123,8 +123,7 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
         BigDecimal discountAmount = dto.getDiscountAmount() != null ? dto.getDiscountAmount() : BigDecimal.ZERO;
         BigDecimal payAmount = dto.getPayAmount() != null ? dto.getPayAmount() : BigDecimal.ZERO;
         
-        // 验证优惠券(可选,couponId 可以为 null)
-        // 注意:订单总金额、优惠金额、实付金额都由前端计算并传入,后端不再验证
+        // 优惠券仅校验是否存在及是否属于该门店,不做金额校验;订单总金额、餐具费、优惠金额、实付金额完全采用前端传参
         LifeDiscountCoupon coupon = null;
         
         if (dto.getCouponId() != null) {
@@ -209,15 +208,15 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
                 Integer addDishCountBefore = orderDetailMapper.selectCount(checkBeforeAddDishWrapper);
                 isFirstAddDish = (addDishCountBefore == null || addDishCountBefore == 0);
                 
-                // 更新订单信息(使用前端计算的金额,但经过后端验证
+                // 更新订单信息(完全采用前端传参,不做金额校验
                 order.setDinerCount(dto.getDinerCount());
                 order.setContactPhone(dto.getContactPhone());
                 order.setTablewareFee(tablewareFee);
-                order.setTotalAmount(totalAmount); // 使用验证后的订单总金额
+                order.setTotalAmount(totalAmount);
                 order.setCouponId(dto.getCouponId());
                 order.setCurrentCouponId(dto.getCouponId());
-                order.setDiscountAmount(discountAmount); // 使用验证后的优惠金额
-                order.setPayAmount(payAmount); // 使用验证后的实付金额
+                order.setDiscountAmount(discountAmount);
+                order.setPayAmount(payAmount);
                 order.setRemark(dto.getRemark());
                 order.setUpdatedUserId(userId);
                 order.setUpdatedTime(now);
@@ -257,11 +256,11 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
             order.setPayUserId(userId);
             order.setPayUserPhone(userPhone);
             order.setOrderStatus(0); // 待支付
-            order.setTotalAmount(totalAmount); // 使用验证后的订单总金额
+            order.setTotalAmount(totalAmount);
             order.setCouponId(dto.getCouponId());
-            order.setCurrentCouponId(dto.getCouponId()); // 记录当前使用的优惠券
-            order.setDiscountAmount(discountAmount); // 使用验证后的优惠金额
-            order.setPayAmount(payAmount); // 使用验证后的实付金额
+            order.setCurrentCouponId(dto.getCouponId());
+            order.setDiscountAmount(discountAmount);
+            order.setPayAmount(payAmount);
             
             // 如果immediatePay为0,只创建订单不支付;为1则创建订单并支付
             // 暂时不实现立即支付,由前端调用支付接口
@@ -323,7 +322,7 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
             }
         }
 
-        // 创建订单明细
+        // 创建订单明细(单价、小计来自购物车)
         // 如果是更新订单,需要判断哪些商品是新增的或数量增加的,标记为加餐
         // 餐具的特殊ID(用于标识餐具项)
         final Integer TABLEWARE_CUISINE_ID = -1;

+ 6 - 6
alien-entity/src/main/java/shop/alien/entity/store/dto/CreateOrderDTO.java

@@ -7,13 +7,13 @@ import lombok.Data;
 import javax.validation.constraints.NotNull;
 
 /**
- * 创建订单DTO
+ * 创建订单DTO(订单总金额、餐具费、优惠金额、实付金额完全采用前端传参,不做后台金额校验)
  *
  * @author system
  * @since 2025-01-XX
  */
 @Data
-@ApiModel(value = "CreateOrderDTO对象", description = "创建订单")
+@ApiModel(value = "CreateOrderDTO对象", description = "创建订单,金额完全采用前端传参")
 public class CreateOrderDTO {
 
     @ApiModelProperty(value = "桌号ID", required = true)
@@ -26,16 +26,16 @@ public class CreateOrderDTO {
     @ApiModelProperty(value = "优惠券ID(可选,不选择优惠券时传 null 或不传此字段)")
     private Integer couponId;
 
-    @ApiModelProperty(value = "订单总金额(由前端计算,菜品总价,不含餐具费和优惠金额)")
+    @ApiModelProperty(value = "订单总金额(前端传参,不做后台校验)")
     private java.math.BigDecimal totalAmount;
 
-    @ApiModelProperty(value = "餐具费(由前端计算,基于门店餐具费单价 × 就餐人数)")
+    @ApiModelProperty(value = "餐具费(前端传参,不做后台校验)")
     private java.math.BigDecimal tablewareFee;
 
-    @ApiModelProperty(value = "优惠金额(由前端计算,如果使用优惠券则必传,不使用优惠券时传 0 或不传)")
+    @ApiModelProperty(value = "优惠金额(前端传参,不做后台校验)")
     private java.math.BigDecimal discountAmount;
 
-    @ApiModelProperty(value = "实付金额(由前端计算,订单总金额 + 餐具费 - 优惠金额)")
+    @ApiModelProperty(value = "实付金额(前端传参,不做后台校验)")
     private java.math.BigDecimal payAmount;
 
     @ApiModelProperty(value = "联系电话")