diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/library/LibraryProduct.java b/mall-common/src/main/java/com/suisung/mall/common/modules/library/LibraryProduct.java index 0caa0651..8824bbff 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/modules/library/LibraryProduct.java +++ b/mall-common/src/main/java/com/suisung/mall/common/modules/library/LibraryProduct.java @@ -11,6 +11,7 @@ import lombok.NoArgsConstructor; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; +import java.util.List; @Data @Builder @@ -32,6 +33,7 @@ public class LibraryProduct implements Serializable { private String sname; @ApiModelProperty(value = "商品标题", example = "小米12 Pro") + @TableField(updateStrategy = FieldStrategy.NOT_EMPTY) private String title; @ApiModelProperty(value = "条形码/Barcode", example = "6923450657713") @@ -39,9 +41,11 @@ public class LibraryProduct implements Serializable { private String barcode; @ApiModelProperty(value = "第一级分类", example = "生鲜") + @TableField(updateStrategy = FieldStrategy.NOT_EMPTY) private String category_1st; @ApiModelProperty(value = "第二级分类", example = "牛肉") + @TableField(updateStrategy = FieldStrategy.NOT_EMPTY) private String category_2nd; @ApiModelProperty(value = "商品分类", example = "牛肉") @@ -94,4 +98,11 @@ public class LibraryProduct implements Serializable { @ApiModelProperty(value = "更新时间", example = "2023-01-02 15:30:00") @TableField(value = "updated_at") private Date updatedAt; + +// @ApiModelProperty(value = "来源ID", example = "vendor_001") +// @TableField(value = "product_short_name", updateStrategy = FieldStrategy.NOT_EMPTY) +// private String productShortName; + + @TableField(exist = false) + private List product_image_list; } \ No newline at end of file diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/library/LibraryProductImage.java b/mall-common/src/main/java/com/suisung/mall/common/modules/library/LibraryProductImage.java index e8346d41..f084ab02 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/modules/library/LibraryProductImage.java +++ b/mall-common/src/main/java/com/suisung/mall/common/modules/library/LibraryProductImage.java @@ -9,6 +9,7 @@ package com.suisung.mall.common.modules.library; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; @@ -34,13 +35,16 @@ public class LibraryProductImage implements Serializable { private Long id; @ApiModelProperty(value = "商品ID", position = 2, example = "1001") + @TableField(value = "product_id") private Long productId; @ApiModelProperty(value = "图片地址", position = 3, example = "/media/images/product/1001.jpg") + @TableField(value = "image_url") private String imageUrl; @ApiModelProperty(value = "是否主图 1-主图 0-副图", position = 4, example = "1") + @TableField(value = "is_main") private Boolean isMain; @ApiModelProperty(value = "排序值,越小越前面", position = 5, example = "10") @@ -50,8 +54,10 @@ public class LibraryProductImage implements Serializable { private Integer status; @ApiModelProperty(value = "创建时间", position = 7, example = "2023-01-01 12:30:00") + @TableField(value = "created_at") private Date createdAt; @ApiModelProperty(value = "更新时间", position = 8, example = "2023-01-01 13:15:00") + @TableField(value = "updated_at") private Date updatedAt; } \ No newline at end of file diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/page/ShopPageApp.java b/mall-common/src/main/java/com/suisung/mall/common/modules/page/ShopPageApp.java index ae38892a..ff97f6ec 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/modules/page/ShopPageApp.java +++ b/mall-common/src/main/java/com/suisung/mall/common/modules/page/ShopPageApp.java @@ -80,6 +80,6 @@ public class ShopPageApp implements Serializable { @TableField(exist = false) private String tpl_label; - @ApiModelProperty(value = "市场展示图片,用,隔开") + @ApiModelProperty(value = "市场展示图片,[{'imageUrl:'','content':''},{}]") private String app_market_images; } diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/sync/StoreDbConfig.java b/mall-common/src/main/java/com/suisung/mall/common/modules/sync/StoreDbConfig.java index 230b2337..608fd3bc 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/modules/sync/StoreDbConfig.java +++ b/mall-common/src/main/java/com/suisung/mall/common/modules/sync/StoreDbConfig.java @@ -142,4 +142,8 @@ public class StoreDbConfig implements Serializable { @TableField(value = "automatic",updateStrategy = FieldStrategy.NOT_EMPTY) @ApiModelProperty(value = "默认次日补全库存(思迅同步时配置)") private Integer automatic; + + @TableField(value = "client_version",updateStrategy = FieldStrategy.NOT_EMPTY) + @ApiModelProperty(value = "客户端版本:1商云10,2商瑞9.7,3商祺") + private String clientVersion; } \ No newline at end of file diff --git a/mall-common/src/main/java/com/suisung/mall/common/pojo/dto/LibraryProductDTO.java b/mall-common/src/main/java/com/suisung/mall/common/pojo/dto/LibraryProductDTO.java index ecc9d5ad..526db52c 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/pojo/dto/LibraryProductDTO.java +++ b/mall-common/src/main/java/com/suisung/mall/common/pojo/dto/LibraryProductDTO.java @@ -42,7 +42,7 @@ public class LibraryProductDTO implements Serializable { if (this.product_image_list != null) { for (ProductImage image : this.product_image_list) { if (image != null) { - image.image_url = addDomainPrefix(imageDomain, image.getImage_url()); + image.imageUrl = addDomainPrefix(imageDomain, image.getImageUrl()); } } } @@ -66,9 +66,10 @@ public class LibraryProductDTO implements Serializable { @EqualsAndHashCode(callSuper = false) @ApiModel(value = "商品库的商品图片", description = "商品库的商品图片") public static class ProductImage implements Serializable { - private Long product_id; - private String image_url; - private Integer is_main; + private Long id; + private Long productId; + private String imageUrl; + private Integer isMain; private Integer seq; } } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/library/service/LibraryProductImageService.java b/mall-shop/src/main/java/com/suisung/mall/shop/library/service/LibraryProductImageService.java index df7cfb46..f822fe86 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/library/service/LibraryProductImageService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/library/service/LibraryProductImageService.java @@ -8,5 +8,8 @@ package com.suisung.mall.shop.library.service; -public interface LibraryProductImageService { +import com.suisung.mall.common.modules.library.LibraryProductImage; +import com.suisung.mall.core.web.service.IBaseService; + +public interface LibraryProductImageService extends IBaseService { } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/library/service/LibraryProductService.java b/mall-shop/src/main/java/com/suisung/mall/shop/library/service/LibraryProductService.java index 8b06c877..27dc4be0 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/library/service/LibraryProductService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/library/service/LibraryProductService.java @@ -38,4 +38,7 @@ public interface LibraryProductService extends IBaseService { Page findLibraryProductPage(Integer pageNum, Integer pageSize); CommonResult updateBatchLibraryProductDTO(List products); + + + CommonResult shopImportToLib(Integer storeId); } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/library/service/impl/LibraryProductImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/library/service/impl/LibraryProductImpl.java index a250f78f..4f3b7acc 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/library/service/impl/LibraryProductImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/library/service/impl/LibraryProductImpl.java @@ -1,15 +1,9 @@ -/* - * Copyright (c) 2025. Lorem ipsum dolor sit amet, consectetur adipiscing elit. - * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan. - * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna. - * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus. - * Vestibulum commodo. Ut rhoncus gravida arcu. - */ package com.suisung.mall.shop.library.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.suisung.mall.common.feignService.AccountService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -18,25 +12,44 @@ import com.suisung.mall.common.api.CommonResult; import com.suisung.mall.common.domain.UserDto; import com.suisung.mall.common.exception.ApiException; import com.suisung.mall.common.modules.library.LibraryProduct; +import com.suisung.mall.common.modules.library.LibraryProductImage; +import com.suisung.mall.common.modules.product.ShopProductBase; +import com.suisung.mall.common.modules.product.ShopProductImage; import com.suisung.mall.common.pojo.dto.LibraryProductDTO; import com.suisung.mall.common.utils.ContextUtil; +import com.suisung.mall.common.utils.FilePathUtils; import com.suisung.mall.core.consts.ConstantRedis; import com.suisung.mall.core.web.service.RedisService; import com.suisung.mall.core.web.service.impl.BaseServiceImpl; import com.suisung.mall.shop.library.mapper.LibraryProductMapper; +import com.suisung.mall.shop.library.service.LibraryProductImageService; import com.suisung.mall.shop.library.service.LibraryProductService; +import com.suisung.mall.shop.number.service.ShopNumberSeqService; +import com.suisung.mall.shop.page.service.OssService; +import com.suisung.mall.shop.product.service.ShopProductBaseService; +import com.suisung.mall.shop.product.service.ShopProductImageService; +import com.suisung.mall.shop.sixun.utils.CommonUtil; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.TransactionDefinition; import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.support.TransactionTemplate; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; +import java.util.*; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.stream.Collectors; @Service +@Slf4j +@Transactional public class LibraryProductImpl extends BaseServiceImpl implements LibraryProductService { @Resource @@ -49,6 +62,29 @@ public class LibraryProductImpl extends BaseServiceImpl page= this.lists(queryWrapper,pageNum, pageSize); List libraryProductList= page.getRecords(); + + List libraryProductIds= libraryProductList.stream().map(LibraryProduct::getId).collect(Collectors.toList()); + QueryWrapper queryWrapperImage = new QueryWrapper<>(); + queryWrapperImage.in("product_id", libraryProductIds); + List libraryProductImageList= libraryProductImageService.list(queryWrapperImage); + + Map> listMap=new HashMap<>(); + libraryProductImageList.forEach(libraryProductImage -> { + libraryProductImage.setImageUrl(staticDomain+libraryProductImage.getImageUrl()); + List productImageList=listMap.get(libraryProductImage.getProductId()); + if(null==productImageList){ + productImageList=new ArrayList<>(); + } + productImageList.add(libraryProductImage); + listMap.put(libraryProductImage.getProductId(),productImageList); + }); + libraryProductList.forEach(libraryProduct->{ libraryProduct.setThumb(staticDomain+libraryProduct.getThumb()); + if(null==listMap.get(libraryProduct.getId())){ + libraryProduct.setProduct_image_list(Collections.emptyList()); + }else { + libraryProduct.setProduct_image_list(listMap.get(libraryProduct.getId())); + } }); page.setRecords(libraryProductList); return page; @@ -131,6 +189,7 @@ public class LibraryProductImpl extends BaseServiceImpl updateTableIds=new ArrayList<>(); + List updateProductImageList=new ArrayList<>(); products.forEach(product->{ if (null==product.getId()){ throw new ApiException("id is null"); @@ -138,11 +197,26 @@ public class LibraryProductImpl extends BaseServiceImpl queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("store_id", storeId); + queryWrapper.eq("product_state_id",1001); + long total= shopProductBaseService.count(queryWrapper); + if(total<0){ + return CommonResult.failed("暂无同步数据"); + } + int pages= CommonUtil.getPagesCount((int) total,limitSize); + ExecutorService executor = Executors.newFixedThreadPool(6); + List> futures = new ArrayList<>(); + for (int i=1;i<=pages;i++){ + List shopProductBaseList= shopProductBaseService.lists(queryWrapper,i,limitSize).getRecords(); + QueryWrapper queryWrapper1 = new QueryWrapper<>(); + Map shopProductBaseMap=new HashMap<>(); + shopProductBaseList.forEach(m->{ + shopProductBaseMap.put(m.getProduct_id(),m); + }); + List productIds = shopProductBaseList.stream().map(ShopProductBase::getProduct_id).collect(Collectors.toList()); + queryWrapper1.in("product_id",productIds); + List shopProductImageList=shopProductImageService.list(queryWrapper1); + int finalI=i; + futures.add(executor.submit(() -> { + saveBatchLib(shopProductImageList,shopProductBaseMap); + return "成功" + finalI; + })); + } + // 等待所有任务完成 + for (Future future : futures) { + try { + log.info("同步图库任务结果: {}", future.get()); + } catch (Exception e) { + log.info("同步图库任务执行异常: {}", e.getMessage()); + } + } + executor.shutdown(); + copyToLib();//异步执行复制 + return CommonResult.success("导入成功:路径复制中..."); + } + /** + * 批量保存到图库 + * @param shopProductImageList + * @param shopProductBaseMap + */ + public void saveBatchLib(List shopProductImageList,Map shopProductBaseMap){ + TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager); + transactionTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); + transactionTemplate.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED); + transactionTemplate.setTimeout(60); // 60秒超时 + transactionTemplate.execute(status->{ + try { + List addLibraryProductList=new ArrayList<>(); + List addLibraryProductImageList=new ArrayList<>(); + Map existMap=checkedIsExist(shopProductBaseMap); + List filterShopProductImages = filterExistLibrary(shopProductImageList,shopProductBaseMap,existMap); + // redis获取id + List libraryIds= shopNumberSeqService.getBatchLibraryProductId(filterShopProductImages.size()); + for(int i=0;i queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("status",2); + long total=libraryProductImageService.count(queryWrapper); + if(total<0){ + log.info("暂无同步数据"); + return; + } + Integer pages = CommonUtil.getPagesCount((int) total,limitSize); + ExecutorService executor = Executors.newFixedThreadPool(6); + List> futures = new ArrayList<>(); + for (int i=1;i<=pages;i++){ + int finalI=i; + List libraryProductImageList= libraryProductImageService.lists(queryWrapper,i,limitSize).getRecords(); + futures.add(executor.submit(() -> { + cosCopyUrl(libraryProductImageList); + return "成功:"+finalI; + })); + } + for (Future future : futures) { + try { + log.info("商品从店铺复制到图库成功:{}", future.get()); + } catch (Exception e) { + log.info("商品从店铺复制到图库执行异常:{}", e.getMessage()); + } + } + } + + /** + * cos的文件复制 + * @param libraryProductImageList + */ + public void cosCopyUrl(List libraryProductImageList){ +// TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager); +// transactionTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); +// transactionTemplate.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED); +// transactionTemplate.setTimeout(60); // 60秒超时 +// transactionTemplate.execute(status->{ + try { + + List updateLibraryProductList=new ArrayList<>(); + List updateLibraryProductImagetList=new ArrayList<>(); + for(LibraryProductImage libraryProductImage:libraryProductImageList){ + //文件复制 + FilePathUtils.FilePath filePath=new FilePathUtils().splitPathWithString(libraryProductImage.getImageUrl()); + String ossTargetUrl=LIBRARY_PATH+ DateUtil.format(libraryProductImage.getCreatedAt(),"yyyyMMdd")+"/"+filePath.getFilename(); + boolean result=ossService.copyFileUrl(filePath.getPath()+filePath.getFilename(),ossTargetUrl); + if (result){ + LibraryProduct libraryProduct=new LibraryProduct(); + libraryProduct.setId(libraryProductImage.getProductId()); + libraryProduct.setThumb(ossTargetUrl); + libraryProduct.setStatus(1); + updateLibraryProductList.add(libraryProduct); + + libraryProductImage.setProductId(libraryProduct.getId()); + libraryProductImage.setStatus(1); + libraryProductImage.setImageUrl(ossTargetUrl); + updateLibraryProductImagetList.add(libraryProductImage); + } + } + + if(!updateLibraryProductList.isEmpty()){//更新主图路径 + this.updateBatchById(updateLibraryProductList,updateLibraryProductList.size()); + } + if(!updateLibraryProductImagetList.isEmpty()){//更新副图路径 + libraryProductImageService.updateBatchById(updateLibraryProductImagetList,updateLibraryProductImagetList.size()); + } + + //return "成功"; + }catch (Exception e){ + // status.setRollbackOnly(); + log.info("处理数据异常:{}",e.getMessage()); + //return "失败"; + } + //}); + + } + + /** + * 校验是否存在,存在则去除 + * @param shopProductBaseMap + * @return + */ + private Map checkedIsExist(Map shopProductBaseMap){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + shopProductBaseMap.forEach((k,shopProductBase)->{ + if(StringUtils.isNotEmpty(shopProductBase.getProduct_number()) + && StringUtils.isNotEmpty(shopProductBase.getProduct_name())){ + queryWrapper.or(q->q.eq("barcode", shopProductBase.getProduct_number()). + eq("name",shopProductBase.getProduct_name())); + } + if (StringUtils.isEmpty(shopProductBase.getProduct_number())) { + queryWrapper.or(q->q.eq("name", shopProductBase.getProduct_name())); + } + }); + Map resultMap=new HashMap<>(); + List libraryProducts= this.list(queryWrapper); + for(LibraryProduct libraryProduct:libraryProducts){ + resultMap.put(libraryProduct.getBarcode()+"_"+libraryProduct.getName(),libraryProduct.getName()); + } + return resultMap; + } + + /** + * 去除存在的图片 + * @param shopProductImageList + * @param shopProductBaseMap + * @param existMap + * @return + */ + private List filterExistLibrary(List shopProductImageList,Map shopProductBaseMap, Map existMap){ + Iterator iterator = shopProductImageList.iterator(); + while(iterator.hasNext()){ + ShopProductImage shopProductImage = iterator.next(); + ShopProductBase shopProductBase=shopProductBaseMap.get(shopProductImage.getProduct_id()); + String key=shopProductBase.getProduct_number()+"_"+shopProductBase.getProduct_name(); + if(existMap.containsKey(key)){//存在则去除 + iterator.remove(); + } + } + return shopProductImageList; + } + + /** + * 清除缓存数据 + */ + private void clearCacheData(){ + Set item_keys = redisService.keys(ConstantRedis.Cache_NameSpace +"library_product_image"+ "*"); + redisService.del(item_keys); + Set base_keys = redisService.keys(ConstantRedis.Cache_NameSpace +"library_product"+ "*"); + redisService.del(base_keys); + } } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/page/controller/admin/ShopPageAppController.java b/mall-shop/src/main/java/com/suisung/mall/shop/page/controller/admin/ShopPageAppController.java index 0cc7096d..440fa94d 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/page/controller/admin/ShopPageAppController.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/page/controller/admin/ShopPageAppController.java @@ -176,10 +176,30 @@ public class ShopPageAppController extends BaseControllerImpl { data.put("items", items); data.put("current_tpl", current_tpl); - return CommonResult.success(data); } + @ApiOperation(value = "获取空白的编辑app模版", notes = "获取空白的编辑app模版") + @RequestMapping(value = "/getBlankTpl", method = RequestMethod.GET) + public CommonResult getBlankTpl() { + UserDto user = ContextUtil.getCurrentUser(); + if (user == null) { + throw new ApiUserException(I18nUtil._("用户信息异常!")); + } + Map blankTpl = new HashMap(); + blankTpl.put("tpl_id",107); + blankTpl.put("tpl_label","shop7"); + blankTpl.put("tpl_cat_name",""); + blankTpl.put("tpl_name","DIY模板"); + blankTpl.put("user_id",0); + blankTpl.put("tpl_buildin",0); + blankTpl.put("tpl_type",3); + blankTpl.put("tpl_image","https:\\/\\/static.shopsuite.cn\\/xcxfile\\/preview\\/diy.png"); + blankTpl.put("app_id",0); + blankTpl.put("id",107); + return CommonResult.success(blankTpl); + } + @ApiOperation(value = "店铺风格表-编辑app模版", notes = "店铺风格表-编辑app模版") @RequestMapping(value = "/editApp", method = RequestMethod.GET) diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/page/service/OssService.java b/mall-shop/src/main/java/com/suisung/mall/shop/page/service/OssService.java index d94ca7e2..e162b3ba 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/page/service/OssService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/page/service/OssService.java @@ -73,4 +73,5 @@ public interface OssService { */ COSObjectSummary findNewestFile(String folder); + boolean copyFileUrl(String s, String ossTargetUrl); } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/page/service/impl/OssServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/page/service/impl/OssServiceImpl.java index dbba7329..68742a41 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/page/service/impl/OssServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/page/service/impl/OssServiceImpl.java @@ -666,4 +666,32 @@ public class OssServiceImpl implements OssService { return localFolder; } + /** + * cos文件复制 + * @param ossSourcUrl + * @param ossTargetUrl + * @return + */ + public boolean copyFileUrl(String ossSourcUrl, String ossTargetUrl) { + int i=3; + while (i>0) { + try { + i--; + COSClient ossCli = initCOSClient(); + CopyObjectRequest copyObjectRequest = new CopyObjectRequest( + TENGXUN_BUCKET_NAME, ossSourcUrl, TENGXUN_BUCKET_NAME, ossTargetUrl); + CopyObjectResult result = ossCli.copyObject(copyObjectRequest); + return true; + //logger.info("文件复制成功:{}",ossTargetUrl); + //logger.info("result:{}",result); + }catch (Exception e){ + if(i==0){ + logger.error("腾讯云复制出错:{}",e.getMessage()); + return false; + } + } + } + return true; + } + } \ No newline at end of file diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sync/keymanage/RedisKey.java b/mall-shop/src/main/java/com/suisung/mall/shop/sync/keymanage/RedisKey.java index 25ea1adb..b276f4fe 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/sync/keymanage/RedisKey.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sync/keymanage/RedisKey.java @@ -28,4 +28,6 @@ public class RedisKey { public static final String STOREDATALIBRARYID="storedata:libraryId"; public static final String STOREDATAGOODBATCHLOCK="store:data:goodsbatchLock"; + + public static final String STOREDATASHOPBASEPAGE="storedata:ShopBasePage"; } diff --git a/sql/shop/dev/20251122_dml.sql b/sql/shop/dev/20251122_dml.sql new file mode 100644 index 00000000..02b9e498 --- /dev/null +++ b/sql/shop/dev/20251122_dml.sql @@ -0,0 +1 @@ +alter table store_db_config add client_version char(10) NOT NULL DEFAULT '1' COMMENT '客户端版本:1商云10,2商瑞9.7,3商祺'; \ No newline at end of file diff --git a/sql/shop/dev/20251124_ddl.sql b/sql/shop/dev/20251124_ddl.sql new file mode 100644 index 00000000..fe3a6da7 --- /dev/null +++ b/sql/shop/dev/20251124_ddl.sql @@ -0,0 +1,3 @@ +INSERT INTO `admin_base_protocol` (`ctl`, `met`, `db`, `rights_id`, `log`, `path`,`comment`) VALUES ('/admin/shop/shop-page-app/getBlankTpl', 'index', 'master', '', '0', '/admin/shop/shop-page-app/getBlankTpl','dy空白模板'); +update shop_page_app set app_market_images='[]'; +alter table shop_page_app modify column app_market_images json COMMENT '市场展示图片'; \ No newline at end of file