diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreHomepageController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreHomepageController.java index 9db7a7b82..63b21dbe1 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreHomepageController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreHomepageController.java @@ -31,14 +31,6 @@ public class StoreHomepageController extends XktBaseController { final IStoreHomepageService storeHomeService; - @PreAuthorize("@ss.hasAnyRoles('admin,general_admin,store')||@ss.hasSupplierSubRole()") - @ApiOperation(value = "新增档口装修数据", httpMethod = "POST", response = R.class) - @Log(title = "新增档口装修数据", businessType = BusinessType.INSERT) - @PostMapping("/decoration") - public R addDecoration(@Validated @RequestBody StoreHomeDecorationVO decorationVO) { - return R.ok(storeHomeService.insert(BeanUtil.toBean(decorationVO, StoreHomeDecorationDTO.class))); - } - @PreAuthorize("@ss.hasAnyRoles('admin,general_admin,store')||@ss.hasSupplierSubRole()") @ApiOperation(value = "查询档口装修数据", httpMethod = "GET", response = R.class) @GetMapping(value = "/decoration/{storeId}") diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/AdValidator.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/AdValidator.java index a91a617d0..31dffd9e4 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/AdValidator.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/AdValidator.java @@ -40,11 +40,54 @@ public class AdValidator { return matchedWords; } - // 使用 HashSet 存储违禁词(全局唯一,避免重复初始化) + // 全局违禁词 HashSet(自动去重,O(1) 查询) private static final Set PROHIBITED_WORDS_SET = new HashSet<>(Arrays.asList( - "最", "最佳", "最优", "最好", "最大", "最高", "最便宜", "最时尚", "最舒适", "最流行", - "最先进", "最顶级", "首选", "唯一", "独家", "全网第一", "行业领先", "销量冠军", - "100%", "绝对", "无敌", "完美", "终极", "极致", "巅峰", "史无前例", "遥遥领先", + // === 极限用词 === + "国家级", "世界级", "最高级", "第一", "唯一", "首个", "首选", "顶级", "国家级产品", "独家", "首家", "最新", "最先进", + "第一品牌", "金牌", "名牌", "优秀", "顶级", "独家", "全网销量第一", "全球首发", "全国首家", "全网首发", "世界领先", + "顶级工艺", "王牌", "销量冠军", "第一", "NO1", "Top1", "极致", "永久", "王牌", "鞋王", "掌门人", "领袖品牌", + "独一无二", "绝无仅有", "史无前例", "万能", "最高", "最低", "最", "最具", "最便宜", "最新", "最先进", "最大程度", + "最新技术", "最舒适", "最柔软", "最时尚", "最受欢迎", "最先", "绝对", "大牌", "精确", "超赚", "领导品牌", "领先上市", + "巨星", "著名", "奢侈", "世界级", "高档", "正品", "100%舒适", "零磨脚", "绝对合脚", "彻底柔软", "永不变形", + "万能搭配", "立显腿长", "瞬间增高", "一穿就美", "市场占有率第一", "行业第一品牌", "全网独家", "全球销量冠军", + "全网唯一正品", "行业领导者", "史上最强女鞋", "巅峰之作", "终极舒适", "巅峰品质", "至尊享受", "至臻奢华", + "绝版限量", "无可替代", "空前绝后", "史上最美", "一夜变美", "三天合脚", "永久耐穿", "一穿就瘦", "立显气质", + "秒杀一切竞品", "超越所有品牌", "无可匹敌", "史上最软", "舒适碾压", "终极保障", "全球最佳女鞋", "行业标杆", + "无懈可击", "完美无缺", "史上最优惠", "绝对领先", "无可争议的第一", "全球公认最佳", "史上最划算女鞋", + + // === 时限用词 === + "随时结束", "仅此一次", "随时涨价", "马上降价", "最后一波", "再不抢就没了", "不会更便宜了", "错过就没机会了", + "限时特惠", "最后3小时", "倒计时抢购", "即将售罄", "库存告急", "最后XX双", "员工内购价", "老板跑路价", + "赔本甩卖", "史上最低价", "今日特价", "明天涨价", "错过今天后悔一年", "紧急降价", "最后机会", "逾期不候", + "错过再无", "限时秒杀", "最后清仓", "工厂直降", "年度最低", "清货特卖", "亏本处理", "最后疯抢", "限时折扣", + "最后优惠", "限时特价", "最后一天", "最后机会", "限量发售", "售完即止", "抢完为止", "手慢无", "即将涨价", + "最后降价", "错过等一年", "限时福利", "最后促销", "限时优惠", "最后特价", "限时抢购", "最后大促", "限时活动", + "最后让利", "限时放价", "最后甩卖", "限时清仓", "最后特惠", "限时特卖", "最后折扣", "限时秒杀价", "最后疯抢价", + "限时钜惠", "最后清货", "限时让利", "最后特供", "限时专享", "最后放送", "限时特供", "最后特卖", "限时专供", + "最后放价", "限时专享价", "最后放量", + + // === 权威用词 === + "国家领导人推荐", "明星同款", "网红爆款", "央视推荐", "时尚教主力荐", "国际设计师专属", "米兰时装周指定", + "巴黎秀场专用", "超模必备", "皇室御用", "贵族专属", "奥斯卡颁奖同款", "格莱美红毯款", "维密天使同款", + "一线女星私服", "顶流带货", "时尚博主强推", "穿搭达人必备", "国际大牌代工", "奢侈品牌同源", "欧洲皇室御用品牌", + "好莱坞明星首选", "国际超模私藏", "时尚杂志封面款", "四大时装周发布款", "国际设计师联名", "全球买手精选", + "奢侈品牌平替", "国际一线同款", "奢侈品牌原单", "国际大牌代工厂直供", "奢侈品牌供应商", "国际知名品牌同款", + "奢侈品牌授权", "国际认证品质", "欧盟标准认证", "国际质检认证", "全球顶级皮料", "意大利进口真皮", "法国小牛皮", + "西班牙进口皮革", "德国工艺制造", "英国皇室认证", "日本匠心工艺", "韩国潮流设计", "美国明星同款", "澳洲进口羊皮", + "国际权威检测", "全球顶级舒适认证", "国际足踝健康认证", "欧洲舒适标准认证", "国际红点设计奖", "IF设计大奖", + "国际时尚大奖", "全球鞋履设计金奖", "国际女鞋排行榜TOP1", "全球热销冠军", "国际电商平台销量第一", + "海外代购爆款", "全球断货王", "国际网红带货王", + + // === 免检用词 === + "质量免检", "无需国家质量检测", "无需质检", "免检认证", "100%合格", "绝对无瑕疵", "出厂即完美", "零次品保证", + "无需验货", "直接放心穿", "质检全优", "超越国家标准", "超行业标准", "免检工艺", "免检材质", "免检皮料", + "免检舒适度", "免检耐磨度", "免检透气性", "免检防滑性", "免检柔软度", "免检弹性", "免检支撑性", "免检贴合度", + "免检缓震性", "免检耐折性", "免检抗变形", "免检环保性", "免检无异味", "免检无甲醛", "免检无重金属", + "免检无致癌物", "免检亲肤性", "免检防臭性", "免检抗菌性", "免检防霉性", "免检防水性", "免检色牢度", + "免检不掉色", "免检不脱胶", "免检不开线", "免检不断底", "免检不磨脚", "免检不变形", "免检不褪色", + "免检不起球", "免检不勾丝", "免检不脱皮", "免检不裂面", "免检不爆漆", "免检五金件", "免检鞋跟", "免检鞋底", + "免检内里", "免检鞋垫", "免检鞋带", "免检装饰件", "免检缝线", "免检胶水", "免检定型", "免检包装", + "微信", "QQ", "加V", "私聊", "联系客服", "电话", "下单", "购买", "小红书", "抖音", "微博", "官网", "网址", "二维码" )); diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/IStoreHomepageService.java b/xkt/src/main/java/com/ruoyi/xkt/service/IStoreHomepageService.java index cbae0aa39..30e1fc27c 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/IStoreHomepageService.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/IStoreHomepageService.java @@ -12,14 +12,6 @@ import java.util.List; */ public interface IStoreHomepageService { - /** - * 新增档口首页各部分图 - * - * @param homepageDTO 新增档口首页各部分图 - * @return Integer - */ - Integer insert(StoreHomeDecorationDTO homepageDTO); - /** * 获取档口首页各个部分的图信息 * diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreHomepageServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreHomepageServiceImpl.java index 3bcfa3898..45eed4cf4 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreHomepageServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreHomepageServiceImpl.java @@ -53,36 +53,6 @@ public class StoreHomepageServiceImpl implements IStoreHomepageService { final StoreProductCategoryAttributeMapper prodCateAttrMapper; final StoreCertificateMapper storeCertMapper; - /** - * 新增档口首页各部分图 - * - * @param homepageDTO 新增档口首页各部分图 - * @return Integer - */ - @Override - @Transactional - public Integer insert(StoreHomeDecorationDTO homepageDTO) { - // 用户是否为档口管理者或子账户 - if (!SecurityUtils.isAdmin() && !SecurityUtils.isStoreManagerOrSub(homepageDTO.getStoreId())) { - throw new ServiceException("当前用户非档口管理者或子账号,无权限操作!", HttpStatus.ERROR); - } - List homepageList = this.insertToHomepage(homepageDTO); - if (CollectionUtils.isEmpty(homepageList)) { - return 0; - } - // 当前档口首页各部分总的文件大小 - BigDecimal totalSize = homepageDTO.getBigBannerList().stream().map(x -> ObjectUtils.defaultIfNull(x.getFileSize(), BigDecimal.ZERO)).reduce(BigDecimal.ZERO, BigDecimal::add); - Store store = Optional.ofNullable(this.storeMapper.selectOne(new LambdaQueryWrapper() - .eq(Store::getId, homepageDTO.getStoreId()).eq(Store::getDelFlag, Constants.UNDELETED))) - .orElseThrow(() -> new ServiceException("档口不存在!", HttpStatus.ERROR)); - store.setTemplateNum(homepageDTO.getTemplateNum()); - // 更新档口首页使用的总的文件容量 - store.setStorageUsage(ObjectUtils.defaultIfNull(store.getStorageUsage(), BigDecimal.ZERO).add(totalSize)); - this.storeMapper.updateById(store); - return homepageList.size(); - } - - /** * 获取档口首页各个部分的图信息 * diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductColorSizeServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductColorSizeServiceImpl.java index 1509af619..d54a947d0 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductColorSizeServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreProductColorSizeServiceImpl.java @@ -227,8 +227,7 @@ public class StoreProductColorSizeServiceImpl implements IStoreProductColorSizeS List sizeQuantityList = colorSizeVO.getSizeQuantityList(); // storeProductColorId 下 所有的条码 List sizeSnList = new ArrayList<>(); - for (int j = 0; j < sizeQuantityList.size(); j++) { - final StorePrintSnDTO.SPSizeVO quantityVO = sizeQuantityList.get(j); + for (final StorePrintSnDTO.SPSizeVO quantityVO : sizeQuantityList) { // 获取系统条码对应信息 final String key = colorSizeVO.getStoreProdId() + ":" + colorSizeVO.getStoreColorId() + ":" + quantityVO.getSize(); StoreProductColorSize colorSize = colorSizeMap.get(key); @@ -246,7 +245,7 @@ public class StoreProductColorSizeServiceImpl implements IStoreProductColorSizeS snList.add(colorSize.getSnPrefix() + String.format("%08d", nextSn)); } // 更新下一个待打印条码开始值 - updateList.add( colorSize.setNextSn(nextSn)); + updateList.add(colorSize.setNextSn(nextSn)); sizeSnList.add(new StorePrintSnResDTO.SPSizeSnDTO().setSize(quantityVO.getSize()).setSnList(snList)); } printSnList.add(new StorePrintSnResDTO().setStoreProdColorId(colorSizeVO.getStoreProdColorId()).setSizeSnList(sizeSnList)); diff --git a/xkt/src/main/resources/mapper/StoreProductFileMapper.xml b/xkt/src/main/resources/mapper/StoreProductFileMapper.xml index 1a5158439..0d226f3e0 100644 --- a/xkt/src/main/resources/mapper/StoreProductFileMapper.xml +++ b/xkt/src/main/resources/mapper/StoreProductFileMapper.xml @@ -66,6 +66,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{storeProdId} + ORDER BY + spf.store_prod_id DESC, + spf.order_num