| Pass |
- 11:55:05 |
+ 18:08:32 |
Test passed
|
@@ -128,13 +128,13 @@
Started
-
¾ÅÔ 22, 2026 11:55:05
+
¾ÅÔ 29, 2026 18:08:31
Ended
-
¾ÅÔ 22, 2026 11:55:05
+
¾ÅÔ 29, 2026 18:08:32
diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/AdminMallOrderGroupController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/AdminMallOrderGroupController.java
index fb9a3d10..30322adb 100644
--- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/AdminMallOrderGroupController.java
+++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/AdminMallOrderGroupController.java
@@ -97,6 +97,7 @@ public class AdminMallOrderGroupController {
private String productName;
private String productPicture;
private String productId;
+ private java.math.BigDecimal storeOriginalPrice;
private Shop shopItem;
}
@@ -400,6 +401,7 @@ public class AdminMallOrderGroupController {
vo.setProductName(buildDisplayProductName(group, product));
vo.setProductPicture(group.getProductPicture());
vo.setProductId(group.getProductId());
+ vo.setStoreOriginalPrice(getStoreOriginalPrice(product == null ? null : product.getAttributeListPrice()));
vo.setShopItem(shop);
return vo;
}
@@ -409,14 +411,10 @@ public class AdminMallOrderGroupController {
if (StringUtils.isBlank(productName) && product != null) {
productName = product.getProductName();
}
- String specPrice = getFirstSpecPrice(product == null ? null : product.getAttributeListPrice());
- if (StringUtils.isBlank(productName) || StringUtils.isBlank(specPrice)) {
- return productName;
- }
- return productName + "-店内原价" + specPrice + "元";
+ return productName;
}
- private String getFirstSpecPrice(String attributeListPrice) {
+ private java.math.BigDecimal getStoreOriginalPrice(String attributeListPrice) {
if (StringUtils.isBlank(attributeListPrice)) {
return null;
}
@@ -426,7 +424,7 @@ public class AdminMallOrderGroupController {
return null;
}
JSONObject firstSpec = specs.getJSONObject(0);
- return firstSpec == null ? null : firstSpec.getStr("specPrice");
+ return firstSpec == null ? null : firstSpec.getBigDecimal("specPrice");
} catch (Exception e) {
log.warn("解析商品规格原价失败 attributeListPrice={}: {}", attributeListPrice, e.getMessage());
return null;
diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ShopAreaController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ShopAreaController.java
index f8ee15e8..f0258e4e 100644
--- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ShopAreaController.java
+++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ShopAreaController.java
@@ -311,6 +311,7 @@ public class ShopAreaController {
shopArea.setRadiusMeters(null);
shopArea.setGeoPolygon(null);
shopArea.setAreaKind(1);
+ shopArea.setExpressErrandEnabled(1);
return null;
}
Integer areaKind = shopArea.getAreaKind();
@@ -319,6 +320,16 @@ public class ShopAreaController {
} else if (areaKind != 1 && areaKind != 2) {
return ResultUtil.error("区域类型仅支持:1校园区域,2社会区域");
}
+ if (shopArea.getAreaKind() != 2) {
+ shopArea.setExpressErrandEnabled(1);
+ } else {
+ Integer expressErrandEnabled = shopArea.getExpressErrandEnabled();
+ if (expressErrandEnabled == null) {
+ shopArea.setExpressErrandEnabled(1);
+ } else if (expressErrandEnabled != 0 && expressErrandEnabled != 1) {
+ return ResultUtil.error("快递/跑腿开关仅支持:1开启,0关闭");
+ }
+ }
Integer commissionRatio = shopArea.getCommissionRatio();
if (commissionRatio == null) {
shopArea.setCommissionRatio(0);
diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ShopController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ShopController.java
index 7c39e4b3..168ca74b 100644
--- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ShopController.java
+++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ShopController.java
@@ -145,6 +145,9 @@ public class ShopController {
shop.setRegion("");
shop.setRegionId(null);
}
+ if (shop.getStoreConsumeOnly() == null) {
+ shop.setStoreConsumeOnly(0);
+ }
shopService.save(shop);
@@ -196,6 +199,9 @@ public class ShopController {
oldShop.setRegion("");
oldShop.setRegionId(null);
}
+ if (shop.getStoreConsumeOnly() != null) {
+ oldShop.setStoreConsumeOnly(shop.getStoreConsumeOnly());
+ }
UpdateUtils.copyNonNullProperties(shop, oldShop);
// 4. 更新数据库(此时更新的是带有完整数据的 oldShop,不会误清空其他字段)
shopService.update(oldShop);
diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/Shop.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/Shop.java
index 4de41eea..83769faa 100644
--- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/Shop.java
+++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/Shop.java
@@ -187,6 +187,9 @@ public class Shop extends HiverBaseEntity {
@ApiModelProperty(value = "是否支持堂食 0否 1是")
private Integer supportDineIn;
+ @ApiModelProperty(value = "是否只做到店消费 0否 1是")
+ private Integer storeConsumeOnly;
+
@ApiModelProperty(value = "是否支持商家自配送 0否 1是")
private Integer supportShopDelivery;
diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/ShopArea.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/ShopArea.java
index 0d060e39..f520c472 100644
--- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/ShopArea.java
+++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/ShopArea.java
@@ -83,6 +83,10 @@ public class ShopArea extends HiverBaseEntity {
@Column(nullable = false, columnDefinition = "int default 1")
private Integer areaKind = 1;
+ @ApiModelProperty(value = "社会区域是否开启快递/跑腿:1开启,0关闭")
+ @Column(nullable = false, columnDefinition = "int default 1")
+ private Integer expressErrandEnabled = 1;
+
@Transient
@TableField(exist = false)
@ApiModelProperty(value = "父节点名称")
diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/quartz/GroupBuyExpireTask.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/quartz/GroupBuyExpireTask.java
index eed60ede..f217dbe8 100644
--- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/quartz/GroupBuyExpireTask.java
+++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/quartz/GroupBuyExpireTask.java
@@ -35,6 +35,8 @@ public class GroupBuyExpireTask {
private static final String SHOP_CACHE_PREFIX = "SHOP_CACHE:";
private static final String SHOP_PRODUCTS_PREFIX = "SHOP_PRODUCTS:";
private static final String SHOP_GROUP_ORDERS_PREFIX = "SHOP_GROUP_ORDERS:";
+ private static final String MOCK_SHOP_SALE_MAX_PREFIX = "MOCK_SHOP_SALE_MAX:";
+ private static final String MOCK_PRODUCT_SALE_MAX_PREFIX = "MOCK_PRODUCT_SALE_MAX:";
private static final int MOCK_GROUP_SHOP_COUNT = 20;
private static final int MOCK_GROUP_TARGET_MEMBERS = 2;
private static final int SALE_SHOP_COUNT = 40;
@@ -202,18 +204,21 @@ public class GroupBuyExpireTask {
private boolean increaseShopSaleCache(Map.Entry