1、保存订单商品,2、验证参数是否合法
This commit is contained in:
@@ -183,11 +183,21 @@ public class OrderBusinessService {
|
|||||||
// 复制请求参数到订单对象
|
// 复制请求参数到订单对象
|
||||||
BeanUtils.copyProperties(request, shopOrder);
|
BeanUtils.copyProperties(request, shopOrder);
|
||||||
|
|
||||||
|
// 确保租户ID正确设置(关键字段,影响微信支付证书路径)
|
||||||
|
shopOrder.setTenantId(loginUser.getTenantId());
|
||||||
|
|
||||||
|
// 验证关键字段
|
||||||
|
if (shopOrder.getTenantId() == null) {
|
||||||
|
throw new BusinessException("租户ID不能为空,这会导致微信支付证书路径错误");
|
||||||
|
}
|
||||||
|
|
||||||
// 设置用户相关信息
|
// 设置用户相关信息
|
||||||
shopOrder.setUserId(loginUser.getUserId());
|
shopOrder.setUserId(loginUser.getUserId());
|
||||||
shopOrder.setOpenid(loginUser.getOpenid());
|
shopOrder.setOpenid(loginUser.getOpenid());
|
||||||
shopOrder.setPayUserId(loginUser.getUserId());
|
shopOrder.setPayUserId(loginUser.getUserId());
|
||||||
|
|
||||||
|
log.debug("构建订单对象 - 租户ID:{},用户ID:{}", shopOrder.getTenantId(), shopOrder.getUserId());
|
||||||
|
|
||||||
// 生成订单号
|
// 生成订单号
|
||||||
if (shopOrder.getOrderNo() == null) {
|
if (shopOrder.getOrderNo() == null) {
|
||||||
shopOrder.setOrderNo(Long.toString(IdUtil.getSnowflakeNextId()));
|
shopOrder.setOrderNo(Long.toString(IdUtil.getSnowflakeNextId()));
|
||||||
|
|||||||
@@ -275,5 +275,41 @@ class OrderValidationTest {
|
|||||||
assertEquals(Integer.valueOf(0), result.getOrderStatus());
|
assertEquals(Integer.valueOf(0), result.getOrderStatus());
|
||||||
assertEquals(Integer.valueOf(10), result.getDeliveryStatus());
|
assertEquals(Integer.valueOf(10), result.getDeliveryStatus());
|
||||||
assertEquals(Integer.valueOf(1), result.getPayType());
|
assertEquals(Integer.valueOf(1), result.getPayType());
|
||||||
|
|
||||||
|
// 验证关键字段 - 租户ID(影响微信支付证书路径)
|
||||||
|
assertNotNull(result.getTenantId(), "tenantId 不能为空");
|
||||||
|
assertEquals(testRequest.getTenantId(), result.getTenantId(), "tenantId 必须正确设置");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testBuildShopOrder_TenantIdValidation() throws Exception {
|
||||||
|
// 创建一个新的请求对象,租户ID为空
|
||||||
|
OrderCreateRequest requestWithoutTenant = new OrderCreateRequest();
|
||||||
|
requestWithoutTenant.setType(0);
|
||||||
|
requestWithoutTenant.setTitle("测试订单");
|
||||||
|
requestWithoutTenant.setTotalPrice(new BigDecimal("99.00"));
|
||||||
|
requestWithoutTenant.setTenantId(null); // 设置为空
|
||||||
|
|
||||||
|
// 准备商品项
|
||||||
|
OrderCreateRequest.OrderGoodsItem goodsItem = new OrderCreateRequest.OrderGoodsItem();
|
||||||
|
goodsItem.setGoodsId(10018);
|
||||||
|
goodsItem.setQuantity(1);
|
||||||
|
requestWithoutTenant.setGoodsItems(Arrays.asList(goodsItem));
|
||||||
|
|
||||||
|
// 使用反射调用 buildShopOrder 方法
|
||||||
|
java.lang.reflect.Method buildMethod = OrderBusinessService.class
|
||||||
|
.getDeclaredMethod("buildShopOrder", OrderCreateRequest.class, User.class);
|
||||||
|
buildMethod.setAccessible(true);
|
||||||
|
|
||||||
|
// 执行验证 - 应该抛出异常
|
||||||
|
Exception exception = assertThrows(Exception.class, () -> {
|
||||||
|
buildMethod.invoke(orderBusinessService, requestWithoutTenant, testUser);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 检查是否是 InvocationTargetException 包装的 BusinessException
|
||||||
|
assertTrue(exception instanceof java.lang.reflect.InvocationTargetException);
|
||||||
|
Throwable cause = exception.getCause();
|
||||||
|
assertTrue(cause instanceof BusinessException);
|
||||||
|
assertTrue(cause.getMessage().contains("租户ID不能为空"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user