From 92cf5b25698f7f60eb9489d0566a02f853c02b9e Mon Sep 17 00:00:00 2001 From: wangfukang <15630117759@163.com> Date: Mon, 24 Aug 2026 12:00: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/AuthController.java | 1 + .../hiver/mall/controller/ShopController.java | 44 ++++-- .../AdminAgreementSettingController.java | 81 ++++++++++ .../AgreementSettingController.java | 45 ++++++ .../legal/entity/MallAgreementSetting.java | 33 ++++ .../mapper/MallAgreementSettingMapper.java | 9 ++ .../legal/pojo/AgreementSettingPageQuery.java | 29 ++++ .../service/MallAgreementSettingService.java | 19 +++ .../impl/MallAgreementSettingServiceImpl.java | 149 ++++++++++++++++++ .../mall/serviceimpl/ShopServiceImpl.java | 8 +- .../resources/db/mall_agreement_setting.sql | 37 +++++ 12 files changed, 450 insertions(+), 21 deletions(-) create mode 100644 hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/legal/controller/AdminAgreementSettingController.java create mode 100644 hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/legal/controller/AgreementSettingController.java create mode 100644 hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/legal/entity/MallAgreementSetting.java create mode 100644 hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/legal/mapper/MallAgreementSettingMapper.java create mode 100644 hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/legal/pojo/AgreementSettingPageQuery.java create mode 100644 hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/legal/service/MallAgreementSettingService.java create mode 100644 hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/legal/service/impl/MallAgreementSettingServiceImpl.java create mode 100644 hiver-modules/hiver-mall/src/main/resources/db/mall_agreement_setting.sql diff --git a/hiver-admin/test-output/test-report.html b/hiver-admin/test-output/test-report.html index 946274e1..b577a2c6 100644 --- a/hiver-admin/test-output/test-report.html +++ b/hiver-admin/test-output/test-report.html @@ -35,7 +35,7 @@ Hiver
  • -八月 17, 2026 12:43:15 +八月 24, 2026 11:57:28
  • @@ -84,7 +84,7 @@

    passTest

    -

    12:43:16 下午 / 0.026 secs

    +

    11:57:28 上午 / 0.022 secs

    @@ -92,9 +92,9 @@
    #test-id=1
    passTest
    -08.17.2026 12:43:16 -08.17.2026 12:43:16 -0.026 secs +08.24.2026 11:57:28 +08.24.2026 11:57:28 +0.022 secs
    @@ -104,7 +104,7 @@ Pass - 12:43:16 + 11:57:28 Test passed @@ -128,13 +128,13 @@

    Started

    -

    八月 17, 2026 12:43:15

    +

    八月 24, 2026 11:57:28

    Ended

    -

    八月 17, 2026 12:43:16

    +

    八月 24, 2026 11:57:28

    diff --git a/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/AuthController.java b/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/AuthController.java index 9faf7a80..44a95fac 100644 --- a/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/AuthController.java +++ b/hiver-modules/hiver-base/src/main/java/cc/hiver/base/controller/manage/AuthController.java @@ -562,6 +562,7 @@ public class AuthController { // 20241010 鎵撳嵃鏂瑰紡 瀛楁榛樿缁 0 shop.setPrintingMethod(ShopConstant.PRINTING_METHOD[0]); shop.setContactPhone(registerShopVo.getMobile()); + shop.setStatus(0); shopService.save(shop); shopService.refreshShopCache(shop.getId(), shop.getRegionId()); // 澧炲姞搴楅摵鍜屽憳宸ュ叧鑱旇〃淇℃伅 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 091a92b7..51d66929 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 @@ -323,9 +323,13 @@ public class ShopController { try { ShopListPageCache cache = JSONUtil.toBean(cacheJson, ShopListPageCache.class); if (cache != null && cache.getContent() != null) { - fillBaseDeliveryFee(cache.getContent(), regionId); - Page pageResult = new PageImpl<>(cache.getContent(), PageUtil.initPage(pageVo), cache.getTotalElements()); - return new ResultUtil>().setData(pageResult); + if (containsUserHiddenShop(cache.getContent())) { + redisTemplateHelper.delete(defaultPageCacheKey); + } else { + fillBaseDeliveryFee(cache.getContent(), regionId); + Page pageResult = new PageImpl<>(cache.getContent(), PageUtil.initPage(pageVo), cache.getTotalElements()); + return new ResultUtil>().setData(pageResult); + } } } catch (Exception e) { redisTemplateHelper.delete(defaultPageCacheKey); @@ -344,6 +348,10 @@ public class ShopController { continue; } s.setShopTakeaway(dto.getShopTakeaway()); + // 鐢ㄦ埛绔笉杩斿洖宸茬鐢ㄥ簵閾猴紱鍚庡彴鏌ヨ鐢 shopIcon 鏍囪瘑锛屼笉鍙楀奖鍝嶃 + if (!adminQuery && !isUserVisibleShop(s)) { + continue; + } if (CharSequenceUtil.isNotBlank(shop.getShopArea())) { if (!shop.getShopArea().equals(s.getShopArea())) { continue; @@ -365,10 +373,6 @@ public class ShopController { continue; } } - //宸茬鐢 - if(s.getStatus() != null && s.getStatus() < 1 && !adminQuery){ - continue; - } if (CharSequenceUtil.isNotBlank(shop.getShopType())) { if (!shop.getShopType().equals(s.getShopType())) { continue; @@ -574,18 +578,34 @@ public class ShopController { return dto; } + private boolean containsUserHiddenShop(List shops) { + for (Shop shop : shops) { + if (!isUserVisibleShop(shop)) { + return true; + } + } + return false; + } + + private boolean isUserVisibleShop(Shop shop) { + return shop != null && !ShopConstant.SHOP_STATUS_LOCK.equals(shop.getStatus()); + } + private int compareUserShopPriority(Shop s1, Shop s2, String currentTime) { - int compareResult = Integer.compare(getTakeawayStatusOrder(s1), getTakeawayStatusOrder(s2)); + int compareResult = Integer.compare(getShopStatusOrder(s1), getShopStatusOrder(s2)); if (compareResult != 0) { return compareResult; } - compareResult = Integer.compare(getBusinessTimeOrder(s1, currentTime), getBusinessTimeOrder(s2, currentTime)); + compareResult = Integer.compare(getTakeawayStatusOrder(s1), getTakeawayStatusOrder(s2)); if (compareResult != 0) { return compareResult; } - Integer status1 = s1.getStatus() == null ? ShopConstant.SHOP_STATUS_LOCK : s1.getStatus(); - Integer status2 = s2.getStatus() == null ? ShopConstant.SHOP_STATUS_LOCK : s2.getStatus(); - return status1.compareTo(status2); + return Integer.compare(getBusinessTimeOrder(s1, currentTime), getBusinessTimeOrder(s2, currentTime)); + } + + private int getShopStatusOrder(Shop shop) { + Integer status = shop == null ? null : shop.getStatus(); + return ShopConstant.SHOP_STATUS_NORMAL.equals(status) ? 0 : 1; } private int getTakeawayStatusOrder(Shop shop) { diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/legal/controller/AdminAgreementSettingController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/legal/controller/AdminAgreementSettingController.java new file mode 100644 index 00000000..5a66a10f --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/legal/controller/AdminAgreementSettingController.java @@ -0,0 +1,81 @@ +package cc.hiver.mall.legal.controller; + +import cc.hiver.core.common.utils.ResultUtil; +import cc.hiver.core.common.vo.Result; +import cc.hiver.mall.legal.entity.MallAgreementSetting; +import cc.hiver.mall.legal.pojo.AgreementSettingPageQuery; +import cc.hiver.mall.legal.service.MallAgreementSettingService; +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@Api(tags = "鍗忚璁剧疆鍚庡彴绠$悊鎺ュ彛") +@RequestMapping("/hiver/mall/admin/agreementSetting") +@Transactional +public class AdminAgreementSettingController { + + @Autowired + private MallAgreementSettingService agreementSettingService; + + @RequestMapping(value = "/page", method = RequestMethod.GET) + @ApiOperation("鍒嗛〉鑾峰彇鍗忚璁剧疆") + public Result> page(AgreementSettingPageQuery query) { + return new ResultUtil>().setData(agreementSettingService.pageAgreementSettings(query)); + } + + @RequestMapping(value = "/get", method = RequestMethod.GET) + @ApiOperation("鏍规嵁ID鑾峰彇鍗忚璁剧疆") + public Result get(String id) { + if (StringUtils.isBlank(id)) { + return ResultUtil.error("鍗忚ID涓嶈兘涓虹┖"); + } + return new ResultUtil().setData(agreementSettingService.getById(id)); + } + + @RequestMapping(value = "/save", method = RequestMethod.POST) + @ApiOperation("鏂板鍗忚璁剧疆") + public Result save(MallAgreementSetting setting) { + if (setting == null || StringUtils.isBlank(setting.getTitle())) { + return ResultUtil.error("鍗忚鏍囬涓嶈兘涓虹┖"); + } + try { + return new ResultUtil().setData(agreementSettingService.saveAgreementSetting(setting)); + } catch (IllegalArgumentException e) { + return ResultUtil.error(e.getMessage()); + } + } + + @RequestMapping(value = "/edit", method = RequestMethod.POST) + @ApiOperation("缂栬緫鍗忚璁剧疆") + public Result edit(MallAgreementSetting setting) { + if (setting == null || StringUtils.isBlank(setting.getId())) { + return ResultUtil.error("鍗忚ID涓嶈兘涓虹┖"); + } + if (StringUtils.isBlank(setting.getTitle())) { + return ResultUtil.error("鍗忚鏍囬涓嶈兘涓虹┖"); + } + try { + MallAgreementSetting saved = agreementSettingService.editAgreementSetting(setting); + return saved == null ? ResultUtil.error("鍗忚涓嶅瓨鍦") : new ResultUtil().setData(saved); + } catch (IllegalArgumentException e) { + return ResultUtil.error(e.getMessage()); + } + } + + @RequestMapping(value = "/delByIds", method = RequestMethod.POST) + @ApiOperation("鎵归噺鍒犻櫎鍗忚璁剧疆") + public Result delByIds(String ids) { + if (StringUtils.isBlank(ids)) { + return ResultUtil.error("鍗忚ID涓嶈兘涓虹┖"); + } + boolean result = agreementSettingService.removeByIdsString(ids); + return result ? ResultUtil.success("鍒犻櫎鎴愬姛") : ResultUtil.error("鍒犻櫎澶辫触"); + } +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/legal/controller/AgreementSettingController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/legal/controller/AgreementSettingController.java new file mode 100644 index 00000000..f0be773a --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/legal/controller/AgreementSettingController.java @@ -0,0 +1,45 @@ +package cc.hiver.mall.legal.controller; + +import cc.hiver.core.common.utils.ResultUtil; +import cc.hiver.core.common.vo.Result; +import cc.hiver.mall.legal.entity.MallAgreementSetting; +import cc.hiver.mall.legal.service.MallAgreementSettingService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@Api(tags = "骞冲彴鍗忚鎺ュ彛") +@RequestMapping("/hiver/app/agreementSetting") +public class AgreementSettingController { + + @Autowired + private MallAgreementSettingService agreementSettingService; + + @RequestMapping(value = "/list", method = RequestMethod.GET) + @ApiOperation("鑾峰彇鍚敤鍗忚鍒楄〃") + public Result> list() { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(MallAgreementSetting::getStatus, 1); + wrapper.orderByAsc(MallAgreementSetting::getSortOrder); + wrapper.orderByDesc(MallAgreementSetting::getCreateTime); + return new ResultUtil>().setData(agreementSettingService.list(wrapper)); + } + + @RequestMapping(value = "/getByCode", method = RequestMethod.GET) + @ApiOperation("鏍规嵁缂栫爜鑾峰彇鍗忚璇︽儏") + public Result getByCode(String code) { + if (StringUtils.isBlank(code)) { + return ResultUtil.error("鍗忚缂栫爜涓嶈兘涓虹┖"); + } + MallAgreementSetting setting = agreementSettingService.getEnabledByCode(code); + return new ResultUtil().setData(setting); + } +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/legal/entity/MallAgreementSetting.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/legal/entity/MallAgreementSetting.java new file mode 100644 index 00000000..41625961 --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/legal/entity/MallAgreementSetting.java @@ -0,0 +1,33 @@ +package cc.hiver.mall.legal.entity; + +import cc.hiver.core.base.HiverBaseEntity; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 骞冲彴鍗忚閰嶇疆銆 + */ +@Data +@ApiModel(value = "骞冲彴鍗忚閰嶇疆") +@TableName(value = "t_mall_agreement_setting", autoResultMap = true) +public class MallAgreementSetting extends HiverBaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "鍗忚缂栫爜") + private String code; + + @ApiModelProperty(value = "鍗忚鏍囬") + private String title; + + @ApiModelProperty(value = "鍗忚鍐呭") + private String content; + + @ApiModelProperty(value = "鎺掑簭") + private Integer sortOrder; + + @ApiModelProperty(value = "鐘舵侊細0绂佺敤锛1鍚敤") + private Integer status; +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/legal/mapper/MallAgreementSettingMapper.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/legal/mapper/MallAgreementSettingMapper.java new file mode 100644 index 00000000..fa87067c --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/legal/mapper/MallAgreementSettingMapper.java @@ -0,0 +1,9 @@ +package cc.hiver.mall.legal.mapper; + +import cc.hiver.mall.legal.entity.MallAgreementSetting; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +@Repository +public interface MallAgreementSettingMapper extends BaseMapper { +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/legal/pojo/AgreementSettingPageQuery.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/legal/pojo/AgreementSettingPageQuery.java new file mode 100644 index 00000000..e6f092b3 --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/legal/pojo/AgreementSettingPageQuery.java @@ -0,0 +1,29 @@ +package cc.hiver.mall.legal.pojo; + +import cc.hiver.core.base.HiverBasePageQuery; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel("鍗忚閰嶇疆鍒嗛〉鏌ヨ瀵硅薄") +public class AgreementSettingPageQuery extends HiverBasePageQuery { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "鍏煎鍚庡彴 pageNumber 鍙傛暟") + private Integer pageNumber; + + @ApiModelProperty(value = "鍗忚鏍囬") + private String title; + + @ApiModelProperty(value = "鍗忚缂栫爜") + private String code; + + @ApiModelProperty(value = "鐘舵侊細0绂佺敤锛1鍚敤") + private Integer status; + + public int currentPage() { + return pageNumber == null || pageNumber <= 0 ? getPageNum() : pageNumber; + } +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/legal/service/MallAgreementSettingService.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/legal/service/MallAgreementSettingService.java new file mode 100644 index 00000000..f4ad0ac8 --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/legal/service/MallAgreementSettingService.java @@ -0,0 +1,19 @@ +package cc.hiver.mall.legal.service; + +import cc.hiver.mall.legal.entity.MallAgreementSetting; +import cc.hiver.mall.legal.pojo.AgreementSettingPageQuery; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface MallAgreementSettingService extends IService { + + IPage pageAgreementSettings(AgreementSettingPageQuery query); + + MallAgreementSetting saveAgreementSetting(MallAgreementSetting setting); + + MallAgreementSetting editAgreementSetting(MallAgreementSetting setting); + + MallAgreementSetting getEnabledByCode(String code); + + boolean removeByIdsString(String ids); +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/legal/service/impl/MallAgreementSettingServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/legal/service/impl/MallAgreementSettingServiceImpl.java new file mode 100644 index 00000000..46f15c27 --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/legal/service/impl/MallAgreementSettingServiceImpl.java @@ -0,0 +1,149 @@ +package cc.hiver.mall.legal.service.impl; + +import cc.hiver.mall.legal.entity.MallAgreementSetting; +import cc.hiver.mall.legal.mapper.MallAgreementSettingMapper; +import cc.hiver.mall.legal.pojo.AgreementSettingPageQuery; +import cc.hiver.mall.legal.service.MallAgreementSettingService; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class MallAgreementSettingServiceImpl extends ServiceImpl implements MallAgreementSettingService { + + @Override + public IPage pageAgreementSettings(AgreementSettingPageQuery query) { + if (query == null) { + query = new AgreementSettingPageQuery(); + } + Page page = new Page<>(query.currentPage(), query.getPageSize()); + QueryWrapper wrapper = new QueryWrapper<>(); + if (StrUtil.isNotBlank(query.getTitle())) { + wrapper.like("title", query.getTitle().trim()); + } + if (StrUtil.isNotBlank(query.getCode())) { + wrapper.eq("code", query.getCode().trim()); + } + if (query.getStatus() != null) { + wrapper.eq("status", query.getStatus()); + } + String sortColumn = resolveSortColumn(query.getSort()); + if (StrUtil.isNotBlank(sortColumn)) { + if ("desc".equalsIgnoreCase(query.getOrder())) { + wrapper.orderByDesc(sortColumn); + } else { + wrapper.orderByAsc(sortColumn); + } + } else { + wrapper.orderByAsc("sort_order").orderByDesc("create_time"); + } + return page(page, wrapper); + } + + @Override + public MallAgreementSetting saveAgreementSetting(MallAgreementSetting setting) { + fillDefaults(setting); + checkCodeUnique(setting); + save(setting); + return setting; + } + + @Override + public MallAgreementSetting editAgreementSetting(MallAgreementSetting setting) { + MallAgreementSetting old = getById(setting.getId()); + if (old == null) { + return null; + } + if (StrUtil.isBlank(setting.getCode())) { + setting.setCode(old.getCode()); + } + if (setting.getSortOrder() == null) { + setting.setSortOrder(old.getSortOrder()); + } + if (setting.getStatus() == null) { + setting.setStatus(old.getStatus()); + } + fillDefaults(setting); + checkCodeUnique(setting); + updateById(setting); + return getById(setting.getId()); + } + + @Override + public MallAgreementSetting getEnabledByCode(String code) { + if (StrUtil.isBlank(code)) { + return null; + } + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(MallAgreementSetting::getCode, code.trim()); + wrapper.eq(MallAgreementSetting::getStatus, 1); + wrapper.last("limit 1"); + return getOne(wrapper, false); + } + + @Override + public boolean removeByIdsString(String ids) { + if (StrUtil.isBlank(ids)) { + return false; + } + List idList = Arrays.stream(ids.split(",")) + .map(String::trim) + .filter(StrUtil::isNotBlank) + .collect(Collectors.toList()); + return !idList.isEmpty() && removeByIds(idList); + } + + private void fillDefaults(MallAgreementSetting setting) { + if (StrUtil.isBlank(setting.getCode())) { + setting.setCode("CUSTOM_" + setting.getId()); + } else { + setting.setCode(setting.getCode().trim()); + } + if (setting.getTitle() != null) { + setting.setTitle(setting.getTitle().trim()); + } + if (setting.getSortOrder() == null) { + setting.setSortOrder(0); + } + if (setting.getStatus() == null) { + setting.setStatus(1); + } + } + + private void checkCodeUnique(MallAgreementSetting setting) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(MallAgreementSetting::getCode, setting.getCode()); + if (StrUtil.isNotBlank(setting.getId())) { + wrapper.ne(MallAgreementSetting::getId, setting.getId()); + } + if (count(wrapper) > 0) { + throw new IllegalArgumentException("鍗忚缂栫爜宸插瓨鍦"); + } + } + + private String resolveSortColumn(String sort) { + if (StrUtil.isBlank(sort)) { + return ""; + } + switch (sort) { + case "title": + return "title"; + case "createTime": + return "create_time"; + case "updateTime": + return "update_time"; + case "sortOrder": + return "sort_order"; + default: + return ""; + } + } +} diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/ShopServiceImpl.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/ShopServiceImpl.java index bc5039f2..08b387f6 100644 --- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/ShopServiceImpl.java +++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/ShopServiceImpl.java @@ -201,9 +201,9 @@ public class ShopServiceImpl implements ShopService { cq.orderBy(orderList); } else if (!isCountQuery(cq)) { List orderList = new ArrayList<>(); + orderList.add(cb.asc(buildShopStatusOrder(statusField, cb))); orderList.add(cb.asc(buildTakeawayStatusOrder(root, cq, cb))); orderList.add(cb.asc(buildBusinessTimeOrder(root, cq, cb, currentBusinessTime))); - orderList.add(cb.asc(statusField)); for (Sort.Order order : pageSort) { if ("status".equals(order.getProperty())) { continue; @@ -223,6 +223,12 @@ public class ShopServiceImpl implements ShopService { return Long.class.equals(resultType) || long.class.equals(resultType); } + private Expression buildShopStatusOrder(Path statusField, CriteriaBuilder cb) { + return cb.selectCase() + .when(cb.equal(statusField, ShopConstant.SHOP_STATUS_NORMAL), 0) + .otherwise(1); + } + private Expression buildTakeawayStatusOrder(Root root, CriteriaQuery cq, CriteriaBuilder cb) { Subquery statusQuery = cq.subquery(Integer.class); Root takeawayRoot = statusQuery.from(ShopTakeaway.class); diff --git a/hiver-modules/hiver-mall/src/main/resources/db/mall_agreement_setting.sql b/hiver-modules/hiver-mall/src/main/resources/db/mall_agreement_setting.sql new file mode 100644 index 00000000..a864648c --- /dev/null +++ b/hiver-modules/hiver-mall/src/main/resources/db/mall_agreement_setting.sql @@ -0,0 +1,37 @@ +CREATE TABLE IF NOT EXISTS `t_mall_agreement_setting` ( + `id` varchar(32) NOT NULL COMMENT '涓婚敭', + `create_by` varchar(255) DEFAULT NULL COMMENT '鍒涘缓鑰', + `create_time` datetime DEFAULT NULL COMMENT '鍒涘缓鏃堕棿', + `update_by` varchar(255) DEFAULT NULL COMMENT '鏇存柊鑰', + `update_time` datetime DEFAULT NULL COMMENT '鏇存柊鏃堕棿', + `del_flag` int(11) DEFAULT 0 COMMENT '鍒犻櫎鏍囧織', + `code` varchar(100) NOT NULL COMMENT '鍗忚缂栫爜', + `title` varchar(120) NOT NULL COMMENT '鍗忚鏍囬', + `content` longtext COMMENT '鍗忚鍐呭', + `sort_order` int(11) DEFAULT 0 COMMENT '鎺掑簭', + `status` int(11) DEFAULT 1 COMMENT '鐘舵侊細0绂佺敤锛1鍚敤', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_mall_agreement_setting_code` (`code`), + KEY `idx_mall_agreement_setting_status_sort` (`status`, `sort_order`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='骞冲彴鍗忚閰嶇疆'; + +INSERT INTO `t_mall_agreement_setting` +(`id`, `create_time`, `del_flag`, `code`, `title`, `content`, `sort_order`, `status`) +VALUES +('900000000000000001', NOW(), 0, 'USER_AGREEMENT', '鐢ㄦ埛鍗忚', '', 10, 1), +('900000000000000002', NOW(), 0, 'PRIVACY_POLICY', '闅愮鏀跨瓥', '', 20, 1), +('900000000000000003', NOW(), 0, 'STORE_CONSUME_SERVICE', '鍒板簵娑堣垂鏈嶅姟鍗忚', '', 30, 1), +('900000000000000004', NOW(), 0, 'FOOD_SAFETY_MANAGEMENT', '椁愰ギ瀹夊叏绠$悊鍔炴硶', '', 40, 1), +('900000000000000005', NOW(), 0, 'CATERING_PROVIDER_REVIEW_REGISTRATION', '鍏ョ綉椁愰ギ鏈嶅姟鎻愪緵鑰呭鏌ョ櫥璁拌鑼', '', 50, 1), +('900000000000000006', NOW(), 0, 'FOOD_SAFETY_INCIDENT_DISPOSAL', '椋熷搧瀹夊叏浜嬫晠澶勭疆瑙勮寖', '', 60, 1), +('900000000000000007', NOW(), 0, 'FOOD_SAFETY_COMPLAINT_REPORT', '椋熷搧瀹夊叏鎶曡瘔涓炬姤瑙勮寖', '', 70, 1), +('900000000000000008', NOW(), 0, 'FOOD_SAFETY_VIOLATION_STOP_REPORT', '椋熷搧瀹夊叏杩濇硶琛屼负鍒舵鍙婃姤鍛婅鑼', '', 80, 1), +('900000000000000009', NOW(), 0, 'PLATFORM_USER_REVIEW', '骞冲彴鐢ㄦ埛璇勪环瑙勮寖', '', 90, 1), +('900000000000000010', NOW(), 0, 'TAKEAWAY_MERCHANT_ENVIRONMENTAL_INITIATIVE', '澶栧崠鍟嗗鐜繚鍊¤涔', '', 100, 1), +('900000000000000011', NOW(), 0, 'TAKEAWAY_USER_SERVICE_TERMS', '澶栧崠鐢ㄦ埛鏈嶅姟鏉℃', '', 110, 1), +('900000000000000012', NOW(), 0, 'SERIOUS_VIOLATION_SERVICE_STOP', '涓ラ噸杩濇硶琛屼负骞冲彴鏈嶅姟鍋滄瑙勮寖', '', 120, 1), +('900000000000000013', NOW(), 0, 'FOOD_SAFETY_AGREEMENT', '椋熷搧瀹夊叏鍗忚', '', 130, 1) +ON DUPLICATE KEY UPDATE + `title` = VALUES(`title`), + `sort_order` = VALUES(`sort_order`), + `status` = VALUES(`status`);