master:系统功能调优;
parent
4118903d16
commit
a026a39366
|
|
@ -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<Integer> 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}")
|
||||
|
|
|
|||
|
|
@ -40,11 +40,54 @@ public class AdValidator {
|
|||
return matchedWords;
|
||||
}
|
||||
|
||||
// 使用 HashSet 存储违禁词(全局唯一,避免重复初始化)
|
||||
// 全局违禁词 HashSet(自动去重,O(1) 查询)
|
||||
private static final Set<String> PROHIBITED_WORDS_SET = new HashSet<>(Arrays.asList(
|
||||
"最", "最佳", "最优", "最好", "最大", "最高", "最便宜", "最时尚", "最舒适", "最流行",
|
||||
"最先进", "最顶级", "首选", "唯一", "独家", "全网第一", "行业领先", "销量冠军",
|
||||
"100%", "绝对", "无敌", "完美", "终极", "极致", "巅峰", "史无前例", "遥遥领先",
|
||||
// === 极限用词 ===
|
||||
"国家级", "世界级", "最高级", "第一", "唯一", "首个", "首选", "顶级", "国家级产品", "独家", "首家", "最新", "最先进",
|
||||
"第一品牌", "金牌", "名牌", "优秀", "顶级", "独家", "全网销量第一", "全球首发", "全国首家", "全网首发", "世界领先",
|
||||
"顶级工艺", "王牌", "销量冠军", "第一", "NO1", "Top1", "极致", "永久", "王牌", "鞋王", "掌门人", "领袖品牌",
|
||||
"独一无二", "绝无仅有", "史无前例", "万能", "最高", "最低", "最", "最具", "最便宜", "最新", "最先进", "最大程度",
|
||||
"最新技术", "最舒适", "最柔软", "最时尚", "最受欢迎", "最先", "绝对", "大牌", "精确", "超赚", "领导品牌", "领先上市",
|
||||
"巨星", "著名", "奢侈", "世界级", "高档", "正品", "100%舒适", "零磨脚", "绝对合脚", "彻底柔软", "永不变形",
|
||||
"万能搭配", "立显腿长", "瞬间增高", "一穿就美", "市场占有率第一", "行业第一品牌", "全网独家", "全球销量冠军",
|
||||
"全网唯一正品", "行业领导者", "史上最强女鞋", "巅峰之作", "终极舒适", "巅峰品质", "至尊享受", "至臻奢华",
|
||||
"绝版限量", "无可替代", "空前绝后", "史上最美", "一夜变美", "三天合脚", "永久耐穿", "一穿就瘦", "立显气质",
|
||||
"秒杀一切竞品", "超越所有品牌", "无可匹敌", "史上最软", "舒适碾压", "终极保障", "全球最佳女鞋", "行业标杆",
|
||||
"无懈可击", "完美无缺", "史上最优惠", "绝对领先", "无可争议的第一", "全球公认最佳", "史上最划算女鞋",
|
||||
|
||||
// === 时限用词 ===
|
||||
"随时结束", "仅此一次", "随时涨价", "马上降价", "最后一波", "再不抢就没了", "不会更便宜了", "错过就没机会了",
|
||||
"限时特惠", "最后3小时", "倒计时抢购", "即将售罄", "库存告急", "最后XX双", "员工内购价", "老板跑路价",
|
||||
"赔本甩卖", "史上最低价", "今日特价", "明天涨价", "错过今天后悔一年", "紧急降价", "最后机会", "逾期不候",
|
||||
"错过再无", "限时秒杀", "最后清仓", "工厂直降", "年度最低", "清货特卖", "亏本处理", "最后疯抢", "限时折扣",
|
||||
"最后优惠", "限时特价", "最后一天", "最后机会", "限量发售", "售完即止", "抢完为止", "手慢无", "即将涨价",
|
||||
"最后降价", "错过等一年", "限时福利", "最后促销", "限时优惠", "最后特价", "限时抢购", "最后大促", "限时活动",
|
||||
"最后让利", "限时放价", "最后甩卖", "限时清仓", "最后特惠", "限时特卖", "最后折扣", "限时秒杀价", "最后疯抢价",
|
||||
"限时钜惠", "最后清货", "限时让利", "最后特供", "限时专享", "最后放送", "限时特供", "最后特卖", "限时专供",
|
||||
"最后放价", "限时专享价", "最后放量",
|
||||
|
||||
// === 权威用词 ===
|
||||
"国家领导人推荐", "明星同款", "网红爆款", "央视推荐", "时尚教主力荐", "国际设计师专属", "米兰时装周指定",
|
||||
"巴黎秀场专用", "超模必备", "皇室御用", "贵族专属", "奥斯卡颁奖同款", "格莱美红毯款", "维密天使同款",
|
||||
"一线女星私服", "顶流带货", "时尚博主强推", "穿搭达人必备", "国际大牌代工", "奢侈品牌同源", "欧洲皇室御用品牌",
|
||||
"好莱坞明星首选", "国际超模私藏", "时尚杂志封面款", "四大时装周发布款", "国际设计师联名", "全球买手精选",
|
||||
"奢侈品牌平替", "国际一线同款", "奢侈品牌原单", "国际大牌代工厂直供", "奢侈品牌供应商", "国际知名品牌同款",
|
||||
"奢侈品牌授权", "国际认证品质", "欧盟标准认证", "国际质检认证", "全球顶级皮料", "意大利进口真皮", "法国小牛皮",
|
||||
"西班牙进口皮革", "德国工艺制造", "英国皇室认证", "日本匠心工艺", "韩国潮流设计", "美国明星同款", "澳洲进口羊皮",
|
||||
"国际权威检测", "全球顶级舒适认证", "国际足踝健康认证", "欧洲舒适标准认证", "国际红点设计奖", "IF设计大奖",
|
||||
"国际时尚大奖", "全球鞋履设计金奖", "国际女鞋排行榜TOP1", "全球热销冠军", "国际电商平台销量第一",
|
||||
"海外代购爆款", "全球断货王", "国际网红带货王",
|
||||
|
||||
// === 免检用词 ===
|
||||
"质量免检", "无需国家质量检测", "无需质检", "免检认证", "100%合格", "绝对无瑕疵", "出厂即完美", "零次品保证",
|
||||
"无需验货", "直接放心穿", "质检全优", "超越国家标准", "超行业标准", "免检工艺", "免检材质", "免检皮料",
|
||||
"免检舒适度", "免检耐磨度", "免检透气性", "免检防滑性", "免检柔软度", "免检弹性", "免检支撑性", "免检贴合度",
|
||||
"免检缓震性", "免检耐折性", "免检抗变形", "免检环保性", "免检无异味", "免检无甲醛", "免检无重金属",
|
||||
"免检无致癌物", "免检亲肤性", "免检防臭性", "免检抗菌性", "免检防霉性", "免检防水性", "免检色牢度",
|
||||
"免检不掉色", "免检不脱胶", "免检不开线", "免检不断底", "免检不磨脚", "免检不变形", "免检不褪色",
|
||||
"免检不起球", "免检不勾丝", "免检不脱皮", "免检不裂面", "免检不爆漆", "免检五金件", "免检鞋跟", "免检鞋底",
|
||||
"免检内里", "免检鞋垫", "免检鞋带", "免检装饰件", "免检缝线", "免检胶水", "免检定型", "免检包装",
|
||||
|
||||
"微信", "QQ", "加V", "私聊", "联系客服", "电话", "下单", "购买",
|
||||
"小红书", "抖音", "微博", "官网", "网址", "二维码"
|
||||
));
|
||||
|
|
|
|||
|
|
@ -12,14 +12,6 @@ import java.util.List;
|
|||
*/
|
||||
public interface IStoreHomepageService {
|
||||
|
||||
/**
|
||||
* 新增档口首页各部分图
|
||||
*
|
||||
* @param homepageDTO 新增档口首页各部分图
|
||||
* @return Integer
|
||||
*/
|
||||
Integer insert(StoreHomeDecorationDTO homepageDTO);
|
||||
|
||||
/**
|
||||
* 获取档口首页各个部分的图信息
|
||||
*
|
||||
|
|
|
|||
|
|
@ -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<StoreHomepage> 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<Store>()
|
||||
.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();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取档口首页各个部分的图信息
|
||||
*
|
||||
|
|
|
|||
|
|
@ -227,8 +227,7 @@ public class StoreProductColorSizeServiceImpl implements IStoreProductColorSizeS
|
|||
List<StorePrintSnDTO.SPSizeVO> sizeQuantityList = colorSizeVO.getSizeQuantityList();
|
||||
// storeProductColorId 下 所有的条码
|
||||
List<StorePrintSnResDTO.SPSizeSnDTO> 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));
|
||||
|
|
|
|||
|
|
@ -66,6 +66,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
#{storeProdId}
|
||||
</foreach>
|
||||
</if>
|
||||
ORDER BY
|
||||
spf.store_prod_id DESC,
|
||||
spf.order_num
|
||||
</select>
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue