1、保存订单商品,2、验证参数是否合法
This commit is contained in:
@@ -198,8 +198,36 @@ public class OrderBusinessService {
|
||||
shopOrder.setComments(orderConfig.getDefaultConfig().getDefaultComments());
|
||||
}
|
||||
|
||||
// 设置默认支付状态
|
||||
shopOrder.setPayStatus(false);
|
||||
// 设置价格相关字段(解决数据库字段没有默认值的问题)
|
||||
if (shopOrder.getPayPrice() == null) {
|
||||
shopOrder.setPayPrice(shopOrder.getTotalPrice()); // 实际付款默认等于订单总额
|
||||
}
|
||||
|
||||
if (shopOrder.getPrice() == null) {
|
||||
shopOrder.setPrice(shopOrder.getTotalPrice()); // 用于统计的价格默认等于订单总额
|
||||
}
|
||||
|
||||
if (shopOrder.getReducePrice() == null) {
|
||||
shopOrder.setReducePrice(BigDecimal.ZERO); // 减少金额默认为0
|
||||
}
|
||||
|
||||
if (shopOrder.getMoney() == null) {
|
||||
shopOrder.setMoney(shopOrder.getTotalPrice()); // 用于积分赠送的价格默认等于订单总额
|
||||
}
|
||||
|
||||
// 设置默认状态
|
||||
shopOrder.setPayStatus(false); // 未付款
|
||||
shopOrder.setOrderStatus(0); // 未使用
|
||||
shopOrder.setDeliveryStatus(10); // 未发货
|
||||
shopOrder.setIsInvoice(0); // 未开发票
|
||||
shopOrder.setIsSettled(0); // 未结算
|
||||
shopOrder.setCheckBill(0); // 未对账
|
||||
shopOrder.setVersion(0); // 当前版本
|
||||
|
||||
// 设置默认支付类型(如果没有指定)
|
||||
if (shopOrder.getPayType() == null) {
|
||||
shopOrder.setPayType(1); // 默认微信支付
|
||||
}
|
||||
|
||||
return shopOrder;
|
||||
}
|
||||
@@ -213,6 +241,8 @@ public class OrderBusinessService {
|
||||
BigDecimal testAmount = orderConfig.getTestAccount().getTestPayAmount();
|
||||
shopOrder.setPrice(testAmount);
|
||||
shopOrder.setTotalPrice(testAmount);
|
||||
shopOrder.setPayPrice(testAmount); // 确保实际付款也设置为测试金额
|
||||
shopOrder.setMoney(testAmount); // 确保积分计算金额也设置为测试金额
|
||||
log.info("应用测试账号规则,用户:{},测试金额:{}", loginUser.getPhone(), testAmount);
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.gxwebsoft.common.system.entity.User;
|
||||
import com.gxwebsoft.shop.config.OrderConfigProperties;
|
||||
import com.gxwebsoft.shop.dto.OrderCreateRequest;
|
||||
import com.gxwebsoft.shop.entity.ShopGoods;
|
||||
import com.gxwebsoft.shop.entity.ShopOrder;
|
||||
import com.gxwebsoft.shop.service.OrderBusinessService;
|
||||
import com.gxwebsoft.shop.service.ShopGoodsService;
|
||||
import com.gxwebsoft.shop.service.ShopOrderGoodsService;
|
||||
@@ -240,4 +241,39 @@ class OrderValidationTest {
|
||||
assertTrue(cause instanceof BusinessException);
|
||||
assertTrue(cause.getMessage().contains("订单金额计算错误"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testBuildShopOrder_RequiredFields() throws Exception {
|
||||
// Mock 配置
|
||||
OrderConfigProperties.DefaultConfig defaultConfig = new OrderConfigProperties.DefaultConfig();
|
||||
defaultConfig.setDefaultComments("默认备注");
|
||||
when(orderConfig.getDefaultConfig()).thenReturn(defaultConfig);
|
||||
|
||||
// 使用反射调用 buildShopOrder 方法
|
||||
java.lang.reflect.Method buildMethod = OrderBusinessService.class
|
||||
.getDeclaredMethod("buildShopOrder", OrderCreateRequest.class, User.class);
|
||||
buildMethod.setAccessible(true);
|
||||
|
||||
ShopOrder result = (ShopOrder) buildMethod.invoke(orderBusinessService, testRequest, testUser);
|
||||
|
||||
// 验证必需字段都已设置
|
||||
assertNotNull(result.getPayPrice(), "payPrice 不能为空");
|
||||
assertNotNull(result.getPrice(), "price 不能为空");
|
||||
assertNotNull(result.getReducePrice(), "reducePrice 不能为空");
|
||||
assertNotNull(result.getMoney(), "money 不能为空");
|
||||
assertNotNull(result.getPayStatus(), "payStatus 不能为空");
|
||||
assertNotNull(result.getOrderStatus(), "orderStatus 不能为空");
|
||||
assertNotNull(result.getDeliveryStatus(), "deliveryStatus 不能为空");
|
||||
assertNotNull(result.getPayType(), "payType 不能为空");
|
||||
|
||||
// 验证默认值
|
||||
assertEquals(testRequest.getTotalPrice(), result.getPayPrice());
|
||||
assertEquals(testRequest.getTotalPrice(), result.getPrice());
|
||||
assertEquals(BigDecimal.ZERO, result.getReducePrice());
|
||||
assertEquals(testRequest.getTotalPrice(), result.getMoney());
|
||||
assertEquals(false, result.getPayStatus());
|
||||
assertEquals(Integer.valueOf(0), result.getOrderStatus());
|
||||
assertEquals(Integer.valueOf(10), result.getDeliveryStatus());
|
||||
assertEquals(Integer.valueOf(1), result.getPayType());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user