From 3227a40a749027253b45b58eaae280ccfb7676f3 Mon Sep 17 00:00:00 2001 From: wangfukang <15630117759@163.com> Date: Tue, 10 Nov 2026 15:55:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E6=8B=BC=E5=9B=A2=E6=95=B0?= =?UTF-8?q?=E6=8D=AE1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hiver-admin/test-output/test-report.html | 16 ++-- .../controller/manage/DictDataController.java | 74 ++++++++++++++++++- .../controller/manage/SettingController.java | 18 ++++- .../java/cc/hiver/base/entity/DictData.java | 3 + .../base/serviceimpl/DictDataServiceImpl.java | 6 ++ .../mall/controller/ProductController.java | 1 + .../mall/controller/ShopAreaController.java | 11 +++ .../java/cc/hiver/mall/entity/MallOrder.java | 2 + .../java/cc/hiver/mall/entity/Product.java | 3 + .../java/cc/hiver/mall/entity/ShopArea.java | 4 + .../cc/hiver/mall/mq/OrderDelayConsumer.java | 25 +++++++ .../hiver/mall/pojo/dto/CreateOrderDTO.java | 3 + .../cc/hiver/mall/pojo/vo/ProductPageVO.java | 3 + .../java/cc/hiver/mall/pojo/vo/ProductVo.java | 3 + .../mybatis/MallOrderGroupServiceImpl.java | 54 +++++++++++--- .../mybatis/MallOrderServiceImpl.java | 64 +++++++++++++--- .../mall/utils/DaQuReceiptRenderUtil.java | 58 ++++++++++++--- .../cloudprint/CloudReceiptRenderUtil.java | 2 + .../db/product_more_buy_product_ids.sql | 2 + .../db/shop_area_campus_text_enabled.sql | 2 + .../main/resources/mapper/ProductMapper.xml | 13 ++-- .../social/controller/WechatController.java | 10 ++- 22 files changed, 330 insertions(+), 47 deletions(-) create mode 100644 hiver-modules/hiver-mall/src/main/resources/db/product_more_buy_product_ids.sql create mode 100644 hiver-modules/hiver-mall/src/main/resources/db/shop_area_campus_text_enabled.sql diff --git a/hiver-admin/test-output/test-report.html b/hiver-admin/test-output/test-report.html index fcdf9fb6..702986d8 100644 --- a/hiver-admin/test-output/test-report.html +++ b/hiver-admin/test-output/test-report.html @@ -35,7 +35,7 @@ Hiver
  • -ʮÔÂ 29, 2026 13:09:25 +ʮһÔÂ 10, 2026 14:35:16
  • @@ -84,7 +84,7 @@

    passTest

    -

    13:09:26 ÏÂÎç / 0.023 secs

    +

    14:35:17 ÏÂÎç / 0.03 secs

    @@ -92,9 +92,9 @@
    #test-id=1
    passTest
    -10.29.2026 13:09:26 -10.29.2026 13:09:26 -0.023 secs +11.10.2026 14:35:17 +11.10.2026 14:35:17 +0.03 secs
    @@ -104,7 +104,7 @@ Pass - 13:09:26 + 14:35:17 Test passed @@ -128,13 +128,13 @@

    Started

    -

    ʮÔÂ 29, 2026 13:09:25

    +

    ʮһÔÂ 10, 2026 14:35:16

    Ended

    -

    ʮÔÂ 29, 2026 13:09:26

    +

    ʮһÔÂ 10, 2026 14:35:17

    diff --git a/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/DictDataController.java b/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/DictDataController.java index a41dd284..f05de2fb 100644 --- a/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/DictDataController.java +++ b/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/DictDataController.java @@ -18,6 +18,7 @@ import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.Pageable; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; @@ -49,6 +50,8 @@ public class DictDataController { @ApiOperation(value = "多条件分页获取用户列表") public Result> getByCondition(DictData dictData, PageVo pageVo) { + pageVo.setSortOrder("sortOrder"); + pageVo.setOrderOrder("asc"); List values = redisTemplate.hValues("DICTDATA_CACHE:" + dictData.getDictId()); if (values != null && !values.isEmpty()) { List allDatas = new ArrayList<>(); @@ -56,13 +59,82 @@ public class DictDataController { DictData dto = JSONUtil.toBean(v.toString(), DictData.class); allDatas.add(dto); } - Page pageResult = new PageImpl<>(allDatas, PageUtil.initPage(pageVo), allDatas.size()); + allDatas = filterByCondition(allDatas, dictData); + allDatas.sort(this::compareBySortOrderAsc); + Pageable pageable = PageUtil.initPage(pageVo); + Page pageResult = new PageImpl<>(getPageContent(allDatas, pageable), pageable, allDatas.size()); return new ResultUtil>().setData(pageResult); } Page page = dictDataService.findByCondition(dictData, PageUtil.initPage(pageVo)); return new ResultUtil>().setData(page); } + + private int compareBySortOrderAsc(DictData first, DictData second) { + if (first == null && second == null) { + return 0; + } + if (first == null) { + return 1; + } + if (second == null) { + return -1; + } + if (first.getSortOrder() == null && second.getSortOrder() == null) { + return 0; + } + if (first.getSortOrder() == null) { + return 1; + } + if (second.getSortOrder() == null) { + return -1; + } + return first.getSortOrder().compareTo(second.getSortOrder()); + } + + private List filterByCondition(List allDatas, DictData condition) { + if (condition == null) { + return allDatas; + } + List filteredDatas = new ArrayList<>(); + for (DictData data : allDatas) { + if (matchCondition(data, condition)) { + filteredDatas.add(data); + } + } + return filteredDatas; + } + + private boolean matchCondition(DictData data, DictData condition) { + if (data == null) { + return false; + } + if (condition.getTitle() != null && !"".equals(condition.getTitle()) + && (data.getTitle() == null || !data.getTitle().contains(condition.getTitle()))) { + return false; + } + if (condition.getStatus() != null && !condition.getStatus().equals(data.getStatus())) { + return false; + } + if (condition.getDictId() != null && !"".equals(condition.getDictId()) + && !condition.getDictId().equals(data.getDictId())) { + return false; + } + if (condition.getMerchantType() != null && !condition.getMerchantType().equals(data.getMerchantType())) { + return false; + } + return true; + } + + private List getPageContent(List allDatas, Pageable pageable) { + int startIndex = (int) pageable.getOffset(); + if (startIndex >= allDatas.size()) { + return new ArrayList<>(); + } + int endIndex = Math.min(startIndex + pageable.getPageSize(), allDatas.size()); + return allDatas.subList(startIndex, endIndex); + } + @RequestMapping(value = "/getByType/{type}", method = RequestMethod.GET) @ApiOperation(value = "通过类型获取") @Cacheable(key = "#type") diff --git a/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/SettingController.java b/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/SettingController.java index 23b424e8..f8a85ace 100644 --- a/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/SettingController.java +++ b/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/SettingController.java @@ -34,6 +34,10 @@ import java.util.Map; @Api(tags = "基本配置接口") @RequestMapping("/hiver/setting") public class SettingController { + private static final String APP_UPDATE_OSS_ENDPOINT = "https://jewel-shop.oss-cn-beijing.aliyuncs.com"; + private static final String APP_UPDATE_OSS_ENDPOINT_HTTP = "http://jewel-shop.oss-cn-beijing.aliyuncs.com"; + private static final String APP_UPDATE_DOWNLOAD_DOMAIN = "https://static.hbkuaishi.com"; + @Autowired private SettingService settingService; @@ -316,6 +320,18 @@ public class SettingController { if (setting == null || StrUtil.isBlank(setting.getValue())) { return null; } - return new Gson().fromJson(setting.getValue(), AppUpdateSetting.class); + AppUpdateSetting appUpdateSetting = new Gson().fromJson(setting.getValue(), AppUpdateSetting.class); + if (appUpdateSetting != null && StrUtil.isNotBlank(appUpdateSetting.getUrl())) { + appUpdateSetting.setUrl(normalizeAppUpdateUrl(appUpdateSetting.getUrl())); + } + return appUpdateSetting; + } + + private String normalizeAppUpdateUrl(String url) { + if (StrUtil.isBlank(url)) { + return url; + } + return url.replace(APP_UPDATE_OSS_ENDPOINT, APP_UPDATE_DOWNLOAD_DOMAIN) + .replace(APP_UPDATE_OSS_ENDPOINT_HTTP, APP_UPDATE_DOWNLOAD_DOMAIN); } } diff --git a/hiver-modules/hiver-base/src/main/java/cc/hiver/base/entity/DictData.java b/hiver-modules/hiver-base/src/main/java/cc/hiver/base/entity/DictData.java index 5626e25b..ce99d6ad 100644 --- a/hiver-modules/hiver-base/src/main/java/cc/hiver/base/entity/DictData.java +++ b/hiver-modules/hiver-base/src/main/java/cc/hiver/base/entity/DictData.java @@ -39,6 +39,9 @@ public class DictData extends HiverBaseEntity { @Column(precision = 10, scale = 2) private BigDecimal sortOrder; + @ApiModelProperty(value = "分类用途 0不区分 1外卖 2团购") + private Integer merchantType; + @ApiModelProperty(value = "是否启用 0启用 -1禁用") private Integer status = CommonConstant.STATUS_NORMAL; diff --git a/hiver-modules/hiver-base/src/main/java/cc/hiver/base/serviceimpl/DictDataServiceImpl.java b/hiver-modules/hiver-base/src/main/java/cc/hiver/base/serviceimpl/DictDataServiceImpl.java index 5f3d74a0..d79793d9 100644 --- a/hiver-modules/hiver-base/src/main/java/cc/hiver/base/serviceimpl/DictDataServiceImpl.java +++ b/hiver-modules/hiver-base/src/main/java/cc/hiver/base/serviceimpl/DictDataServiceImpl.java @@ -51,6 +51,7 @@ public class DictDataServiceImpl implements DictDataService { Path titleField = root.get("title"); Path statusField = root.get("status"); Path dictIdField = root.get("dictId"); + Path merchantTypeField = root.get("merchantType"); List list = new ArrayList<>(); @@ -69,6 +70,11 @@ public class DictDataServiceImpl implements DictDataService { list.add(cb.equal(dictIdField, dictData.getDictId())); } + // 分类用途 + if (dictData.getMerchantType() != null) { + list.add(cb.equal(merchantTypeField, dictData.getMerchantType())); + } + Predicate[] arr = new Predicate[list.size()]; cq.where(list.toArray(arr)); return null; diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ProductController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ProductController.java index a89a9e4b..4108b39c 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ProductController.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ProductController.java @@ -493,6 +493,7 @@ public class ProductController { if (CharSequenceUtil.isNotBlank(productPageQuery.getCategoryId()) && !productPageQuery.getCategoryId().equals(p.getCategoryId())) return false; if (productPageQuery.getIsPush() != null && !productPageQuery.getIsPush().equals(p.getIsPush())) return false; if (productPageQuery.getIsMust() != null && !productPageQuery.getIsMust().equals(p.getIsMust())) return false; + if (productPageQuery.getIsMoreBuy() != null && !productPageQuery.getIsMoreBuy().equals(p.getIsMoreBuy())) return false; if (productPageQuery.getDelFlag() != null && !productPageQuery.getDelFlag().equals(p.getDelFlag())) return false; if (CharSequenceUtil.isNotBlank(productPageQuery.getKeywords())) { if (p.getProductName() == null || !p.getProductName().contains(productPageQuery.getKeywords())) { 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 03b5c8dd..0759cd06 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 @@ -313,6 +313,7 @@ public class ShopAreaController { shopArea.setAreaKind(1); shopArea.setExpressErrandEnabled(1); shopArea.setErrandPlanetVisible(1); + shopArea.setCampusTextEnabled(0); return null; } Integer areaKind = shopArea.getAreaKind(); @@ -331,6 +332,16 @@ public class ShopAreaController { return ResultUtil.error("快递/跑腿开关仅支持:1开启,0关闭"); } } + if (shopArea.getAreaKind() != 2) { + shopArea.setCampusTextEnabled(0); + } else { + Integer campusTextEnabled = shopArea.getCampusTextEnabled(); + if (campusTextEnabled == null) { + shopArea.setCampusTextEnabled(0); + } else if (campusTextEnabled != 0 && campusTextEnabled != 1) { + return ResultUtil.error("文案按照校园显示开关仅支持:1开启,0关闭"); + } + } Integer errandPlanetVisible = shopArea.getErrandPlanetVisible(); if (errandPlanetVisible == null) { shopArea.setErrandPlanetVisible(1); diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/MallOrder.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/MallOrder.java index 87a6dab8..a1f8a171 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/MallOrder.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/MallOrder.java @@ -84,6 +84,8 @@ public class MallOrder implements Serializable { private Date shopMakeTime; @ApiModelProperty(value = "自取订单用户要求出餐 默认mull 1为用户要求") private Integer userRequireMake; + @ApiModelProperty(value = "自取订单用户预约用餐/取餐时间") + private Date userRequireMakeTime; @ApiModelProperty(value = "学校id") private String regionId; @ApiModelProperty("是否免单") diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/Product.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/Product.java index 09fae761..b53f7256 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/Product.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/entity/Product.java @@ -140,6 +140,9 @@ public class Product implements Serializable { @ApiModelProperty(value = "是否为加料 0否 1是") private Integer isMoreBuy; + @ApiModelProperty(value = "可搭配商品ID,多个用逗号分隔") + private String moreBuyProductIds; + @ApiModelProperty(value = "餐盒费") private BigDecimal lunchBox; 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 16bc3857..051c89fd 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 @@ -91,6 +91,10 @@ public class ShopArea extends HiverBaseEntity { @Column(nullable = false, columnDefinition = "int default 1") private Integer errandPlanetVisible = 1; + @ApiModelProperty(value = "社会区域文案是否按照校园显示:1开启,0关闭") + @Column(nullable = false, columnDefinition = "int default 0") + private Integer campusTextEnabled = 0; + @Transient @TableField(exist = false) @ApiModelProperty(value = "父节点名称") diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/mq/OrderDelayConsumer.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/mq/OrderDelayConsumer.java index 8c53c283..218a64ce 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/mq/OrderDelayConsumer.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/mq/OrderDelayConsumer.java @@ -59,6 +59,9 @@ public class OrderDelayConsumer { @Autowired private JPushServiceImpl jPushService; + @Autowired + private OrderAsyncProducer orderAsyncProducer; + @Autowired private cc.hiver.mall.dao.mapper.MallRefundRecordMapper mallRefundRecordMapper; @@ -97,6 +100,9 @@ public class OrderDelayConsumer { case "Appointment_Shop_Cook_Notify": handleAppointmentShopCookNotify(orderId); break; + case "Store_Pickup_Cook_Notify": + handleStorePickupCookNotify(orderId); + break; case "Transfer_Arrive_Timeout": handleTransferArriveTimeout(orderId); break; @@ -265,6 +271,25 @@ public class OrderDelayConsumer { } } + private void handleStorePickupCookNotify(String orderId) { + MallOrder order = mallOrderMapper.selectById(orderId); + if (order == null + || !Integer.valueOf(2).equals(order.getDeliveryType()) + || Integer.valueOf(1).equals(order.getUserRequireMake()) + || order.getUserRequireMakeTime() == null + || order.getShopMakeTime() != null + || order.getStatus() == null + || order.getStatus() >= 4) { + return; + } + log.info("【订单延时处理】预约到店订单到达可出餐时间,向商家发送极光推送并打印 orderId={}", orderId); + Shop shop = shopMapper.selectById(order.getShopId()); + if (shop != null && StringUtils.isNotBlank(shop.getClientId())) { + jPushService.sendPushNotification(shop.getClientId(), "您有一笔预约到店订单可以出餐啦!", orderId); + } + orderAsyncProducer.sendCloudPrint(orderId, "SHOP_APPOINTMENT_MAKE"); + } + private void handleTransferArriveTimeout(String orderId) { MallDeliveryOrder delivery = getDeliveryOrder(orderId); if (delivery == null || !Integer.valueOf(1).equals(delivery.getTransferDelivery()) diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/dto/CreateOrderDTO.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/dto/CreateOrderDTO.java index c8814f98..7f6c4c63 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/dto/CreateOrderDTO.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/dto/CreateOrderDTO.java @@ -45,6 +45,9 @@ public class CreateOrderDTO { @ApiModelProperty(value = "自取订单用户要求出餐 默认mull 1为用户要求") private Integer userRequireMake; + @ApiModelProperty(value = "自取订单用户预约用餐/取餐时间") + private Date userRequireMakeTime; + @ApiModelProperty(value = "送货区域ID(用户收货地址关联区域id)") private String putAreaId; diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/ProductPageVO.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/ProductPageVO.java index 531f7b52..8f1cd8c0 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/ProductPageVO.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/ProductPageVO.java @@ -159,6 +159,9 @@ public class ProductPageVO { @ApiModelProperty(value = "是否为加料 0否 1是") private Integer isMoreBuy; + @ApiModelProperty(value = "可搭配商品ID,多个用逗号分隔") + private String moreBuyProductIds; + @ApiModelProperty(value = "盘点明细") private List checkStockAttributeVos; diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/ProductVo.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/ProductVo.java index 99997655..90b19d48 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/ProductVo.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/vo/ProductVo.java @@ -107,6 +107,9 @@ public class ProductVo extends HiverBaseEntity { @ApiModelProperty(value = "是否为加料 0否 1是") private Integer isMoreBuy; + @ApiModelProperty(value = "可搭配商品ID,多个用逗号分隔") + private String moreBuyProductIds; + @ApiModelProperty(value = "入库状态:0:待入库(未维护对应的采购价信息);1:已入库;新增商品时为已入库") private Integer inStorageStatus = 1; diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/MallOrderGroupServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/MallOrderGroupServiceImpl.java index a37a21d8..ddf5b78f 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/MallOrderGroupServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/MallOrderGroupServiceImpl.java @@ -57,6 +57,9 @@ public class MallOrderGroupServiceImpl extends ServiceImpl dq = new LambdaQueryWrapper<>(); @@ -2144,6 +2144,10 @@ public class MallOrderServiceImpl extends ServiceImpl").append(clean(text)).append("
    "); } + private static void boldLeft(StringBuilder sb, String text) { + sb.append("").append(clean(text)).append("
    "); + } + private static void center(StringBuilder sb, String text) { sb.append("").append(clean(text)).append("
    "); } diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/utils/cloudprint/CloudReceiptRenderUtil.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/utils/cloudprint/CloudReceiptRenderUtil.java index a983a823..b1340f5d 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/utils/cloudprint/CloudReceiptRenderUtil.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/utils/cloudprint/CloudReceiptRenderUtil.java @@ -48,6 +48,7 @@ public final class CloudReceiptRenderUtil { return normalizeDaQuContent(content) .replaceAll("([\\s\\S]*?)
    ", "$1
    ") .replaceAll("([\\s\\S]*?)
    ", "$1
    ") + .replaceAll("([\\s\\S]*?)
    ", "$1
    ") .replaceAll("([\\s\\S]*?)
    ", "$1
    ") .replaceAll("([\\s\\S]*?)
    ", "$1
    "); } @@ -56,6 +57,7 @@ public final class CloudReceiptRenderUtil { return normalizeDaQuContent(content) .replaceAll("([\\s\\S]*?)
    ", "
    $1
    \n") .replaceAll("([\\s\\S]*?)
    ", "$1\n") + .replaceAll("([\\s\\S]*?)
    ", "$1\n") .replaceAll("([\\s\\S]*?)
    ", "
    $1
    \n") .replaceAll("([\\s\\S]*?)
    ", "$1\n") .replace("
    ", "\n"); diff --git a/hiver-modules/hiver-mall/src/main/resources/db/product_more_buy_product_ids.sql b/hiver-modules/hiver-mall/src/main/resources/db/product_more_buy_product_ids.sql new file mode 100644 index 00000000..273f226e --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/resources/db/product_more_buy_product_ids.sql @@ -0,0 +1,2 @@ +ALTER TABLE `t_product` + ADD COLUMN `more_buy_product_ids` varchar(2000) DEFAULT NULL COMMENT '可搭配商品ID,多个用逗号分隔' AFTER `is_more_buy`; diff --git a/hiver-modules/hiver-mall/src/main/resources/db/shop_area_campus_text_enabled.sql b/hiver-modules/hiver-mall/src/main/resources/db/shop_area_campus_text_enabled.sql new file mode 100644 index 00000000..ddb7c63d --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/resources/db/shop_area_campus_text_enabled.sql @@ -0,0 +1,2 @@ +ALTER TABLE `t_shop_area` + ADD COLUMN `campus_text_enabled` int(11) NOT NULL DEFAULT 0 COMMENT '社会区域文案是否按照校园显示:1开启,0关闭'; diff --git a/hiver-modules/hiver-mall/src/main/resources/mapper/ProductMapper.xml b/hiver-modules/hiver-mall/src/main/resources/mapper/ProductMapper.xml index 91259398..b23163d7 100644 --- a/hiver-modules/hiver-mall/src/main/resources/mapper/ProductMapper.xml +++ b/hiver-modules/hiver-mall/src/main/resources/mapper/ProductMapper.xml @@ -39,6 +39,7 @@ + @@ -105,7 +106,7 @@ shop_id, category_id,attr_id, attribute_list, supplier_id,supplier_name, product_sn, barcode, price, purchase_price,commission, wholesale_price, product_picture, product_video, product_intro, sales_week, print_barcode, tail_warn,in_storage_status,customer_category_rule, attribute_list_price, is_push, - is_must, order_filed, sell_begin_time, sell_end_time, start_pay_num, lunch_box, is_more_buy + is_must, order_filed, sell_begin_time, sell_end_time, start_pay_num, lunch_box, is_more_buy, more_buy_product_ids