From ec9ec45cb0ac9e3681cc02d9b5c1002c19acd768 Mon Sep 17 00:00:00 2001 From: liyj <1617420630@qq.com> Date: Mon, 7 Jul 2025 18:14:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=89=B9=E9=87=8F=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=92=8C=E5=BA=93=E5=AD=98=E6=9F=A5=E8=AF=A2=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=EF=BC=8C=E4=BC=98=E5=8C=96=E9=83=A8=E5=88=86=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mall/common/constant/RedisConstant.java | 1 + .../modules/product/ShopProductIndex.java | 9 +- .../modules/product/ShopProductInfo.java | 3 + .../service/ShopBaseProductBrandService.java | 4 + .../impl/ShopBaseProductBrandServiceImpl.java | 30 ++++ .../admin/ShopProductBaseController.java | 8 + .../service/ShopProductBaseService.java | 2 + .../impl/ShopProductBaseServiceImpl.java | 154 +++++++++++------- .../mall/shop/sixun/dto/SxCategoryModel.java | 3 +- .../controller/SyncThirdDataController.java | 10 +- .../sync/service/SyncThirdDataService.java | 6 + .../service/impl/SyncBaseThirdSxAbstract.java | 13 +- .../impl/SyncThirdDataServiceImpl.java | 55 +++++-- 13 files changed, 219 insertions(+), 79 deletions(-) diff --git a/mall-common/src/main/java/com/suisung/mall/common/constant/RedisConstant.java b/mall-common/src/main/java/com/suisung/mall/common/constant/RedisConstant.java index e8537f4a..780791b6 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/constant/RedisConstant.java +++ b/mall-common/src/main/java/com/suisung/mall/common/constant/RedisConstant.java @@ -30,4 +30,5 @@ public class RedisConstant { public static final String Product_Cate_Key = ConstantRedis.Cache_NameSpace + "product_cate_Key"; + public static final String Store_Brand_Key = ConstantRedis.Cache_NameSpace + "store_brand_key"; } diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductIndex.java b/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductIndex.java index 20d3fa5d..53c63eed 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductIndex.java +++ b/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductIndex.java @@ -1,9 +1,6 @@ package com.suisung.mall.common.modules.product; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.annotation.Version; +import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -212,4 +209,8 @@ public class ShopProductIndex implements Serializable { @ApiModelProperty("是否特价商品,0否,1是") private String is_special="0"; + + @ApiModelProperty("统计库存") + @TableField(exist = false) + private Integer item_quantity=0; } diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductInfo.java b/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductInfo.java index 051a42f9..2a51617a 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductInfo.java +++ b/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductInfo.java @@ -103,6 +103,9 @@ public class ShopProductInfo implements Serializable { @TableField(updateStrategy=NOT_EMPTY) private Integer product_shop_card_discount; + @ApiModelProperty("统计库存") + @TableField(exist = false) + private Integer item_quantity=0; // @ApiModelProperty(value = "产品名称") // @TableField(exist=false) // private String productName; diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/base/service/ShopBaseProductBrandService.java b/mall-shop/src/main/java/com/suisung/mall/shop/base/service/ShopBaseProductBrandService.java index d8322f56..3dd83068 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/base/service/ShopBaseProductBrandService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/base/service/ShopBaseProductBrandService.java @@ -50,4 +50,8 @@ public interface ShopBaseProductBrandService extends IBaseService getBrandMapByStoreId(String storeId); + + void clearBrandMapByStoreId(String storeId); + } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/base/service/impl/ShopBaseProductBrandServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/base/service/impl/ShopBaseProductBrandServiceImpl.java index bc2db4be..d0cf5f5f 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/base/service/impl/ShopBaseProductBrandServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/base/service/impl/ShopBaseProductBrandServiceImpl.java @@ -7,6 +7,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.suisung.mall.common.constant.RedisConstant; import com.suisung.mall.common.domain.UserDto; import com.suisung.mall.common.exception.ApiException; import com.suisung.mall.common.modules.base.ShopBaseProductBrand; @@ -15,6 +16,7 @@ import com.suisung.mall.common.utils.CheckUtil; import com.suisung.mall.common.utils.FilterUtils; import com.suisung.mall.common.utils.I18nUtil; import com.suisung.mall.common.utils.TinyPinyinUtils; +import com.suisung.mall.core.web.service.RedisService; import com.suisung.mall.core.web.service.impl.BaseServiceImpl; import com.suisung.mall.shop.base.mapper.ShopBaseProductBrandMapper; import com.suisung.mall.shop.base.service.ShopBaseProductBrandService; @@ -51,6 +53,9 @@ public class ShopBaseProductBrandServiceImpl extends BaseServiceImpl> brandMap() { QueryWrapper queryWrapper= new QueryWrapper<>(); @@ -261,4 +266,29 @@ public class ShopBaseProductBrandServiceImpl extends BaseServiceImpl getBrandMapByStoreId(String storeId) { + String key= RedisConstant.Store_Brand_Key+":"+storeId; + if(redisService.hasKey(key)){ + Object o= redisService.hGetAll(key); + return Convert.toMap(String.class, Integer.class, o); + } + Map resultMap=new HashMap<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("store_id", Integer.valueOf(storeId)); + List list=this.list(queryWrapper); + if(CollUtil.isNotEmpty(list)){ + resultMap= list.stream().collect(Collectors.toMap(ShopBaseProductBrand::getBrand_name, ShopBaseProductBrand::getBrand_id)); + } + return resultMap; + } + @Override + public void clearBrandMapByStoreId(String storeId) { + String key= RedisConstant.Store_Brand_Key+":"+storeId; + if(redisService.hasKey(key)){ + redisService.del(key); + } + } + } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/product/controller/admin/ShopProductBaseController.java b/mall-shop/src/main/java/com/suisung/mall/shop/product/controller/admin/ShopProductBaseController.java index 3912900c..0aff3cc7 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/product/controller/admin/ShopProductBaseController.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/product/controller/admin/ShopProductBaseController.java @@ -92,6 +92,14 @@ public class ShopProductBaseController extends BaseControllerImpl { return CommonResult.success(shopProductBaseService.removeByProductId(product_id)); } + @ApiOperation(value = "商品批量删除", notes = "商品批量删除") + @RequestMapping(value = "/deleteBatch", method = RequestMethod.POST) + public CommonResult deleteBatch(@RequestParam(name = "product_ids") String product_ids) { + return CommonResult.success(shopProductBaseService.removeByProductIds(product_ids)); + } + + + @ApiOperation(value = "商品基础表-商品审核", notes = "商品基础表-商品审核") @RequestMapping(value = "/verify", method = RequestMethod.POST) public CommonResult verify(@RequestParam(name = "product_id") Long product_id, diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/product/service/ShopProductBaseService.java b/mall-shop/src/main/java/com/suisung/mall/shop/product/service/ShopProductBaseService.java index 39431663..e2ba2d1f 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/product/service/ShopProductBaseService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/product/service/ShopProductBaseService.java @@ -202,6 +202,8 @@ public interface ShopProductBaseService extends IBaseService { boolean removeByProductId(Long product_id); + boolean removeByProductIds(String product_ids); + CommonResult enable(); long getOrderNum(Integer product_state_id, Integer store_id, Boolean day_flag, Integer subsite_id); diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductBaseServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductBaseServiceImpl.java index cf7882f0..e787c5a0 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductBaseServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductBaseServiceImpl.java @@ -6,6 +6,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -88,7 +89,6 @@ import java.math.RoundingMode; import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; import static com.suisung.mall.common.utils.ContextUtil.getCurrentUser; @@ -213,11 +213,7 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl item_ids_all = (List) CollUtil.union(item_ids_new, item_ids_old); - - List item_ids_deprecate = (List) CollUtil.disjunction(item_ids_all, item_ids_new); - // item_ids_deprecate 的值如:[40,41,42] 商品 SKU ID 集合 -// logger.info("商品 SKU ID item_ids_deprecate: {}", item_ids_deprecate); //start 清理sku相关数据 if (CollUtil.isNotEmpty(item_ids_deprecate)) { @@ -2742,9 +2735,9 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl wrapper, Integer pageNum, Integer pageSize) { Map map = new HashMap(); - Integer store_id = Convert.toInt(getCurrentUser().getStore_id(), 1); + Integer store_id = Convert.toInt(getCurrentUser().getStore_id(),1); Integer nodeid = Convert.toInt(getParameter("nodeid"), 0); - + boolean openCount=getParameter("openCount",false);//1是开启,0是不开启 if (CheckUtil.isNotEmpty(nodeid)) { IPage listItem = shopProductBaseMapper.listItem(new Page<>(1, 9999), nodeid); List item_ids = Convert.toList(Long.class, listItem.getRecords()); @@ -2774,10 +2767,9 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl cond_row = new QueryWrapper<>(); cond_row.orderByDesc("product_id"); + List category_ids = new ArrayList<>(); if (CheckUtil.isNotEmpty(category_id)) { List categoryList = shopBaseProductCategoryService.getCategoryByParentId(category_id, true, true); - List category_ids = new ArrayList<>(); - if (CollUtil.isNotEmpty(categoryList)) { category_ids = categoryList.stream().map(s -> Convert.toInt(s.get("category_id"))).distinct().collect(Collectors.toList()); } @@ -2910,7 +2902,6 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl items = (List) data.get("items"); @@ -2980,17 +2971,16 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl itemsMap= (List) data.get("items"); + data.put("items", countItemQuantity(itemsMap));//统计存储 + data.put("allRecords",countArrays[0]);//全部 + data.put("normalRecords",countArrays[1]);//销售中 + data.put("offRecords",countArrays[2]);//仓库中 + data.put("illegalRecords",countArrays[3]);//违规禁售 + data.put("unCheckedRecords",countArrays[4]);//未分配或者待审核 } return data; } @@ -3146,20 +3136,17 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl itemQueryWrapper = new QueryWrapper<>(); itemQueryWrapper.eq("product_id", product_id); if (shopOrderItemService.findOne(itemQueryWrapper) != null) { throw new ApiException(I18nUtil._("不能删除被购买的商品!")); } - // 不使用缓存 ShopProductBase shopProductBase = getById(product_id); Map row = Convert.toMap(Object.class, Object.class, shopProductBase); @@ -3602,6 +3589,7 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl items = newShopProductItemList.get(i); processProductItems(items, productId, addItemSeqs); @@ -6143,51 +6136,51 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl category_ids,Integer storeId) { + //商品状态:1001-正常;1002-下架仓库中;1003-待审核; 1000-违规禁售,1003 int taskCount = 5; CompletableFuture count1 = CompletableFuture.supplyAsync(() -> { - QueryWrapper queryWrapper = new QueryWrapper<>(); - if (ObjectUtil.isNotEmpty(shopProductIndex.getCategory_id())) { - queryWrapper.eq("category_id", shopProductIndex.getCategory_id()); + QueryWrapper queryWrapper=new QueryWrapper<>(); + if(CollectionUtil.isNotEmpty(category_ids)){ + queryWrapper.in("category_id",category_ids); } - queryWrapper.eq("store_id", shopProductIndex.getStore_id()); + queryWrapper.eq("store_id",storeId); return ((int) shopProductIndexService.count(queryWrapper)); }); CompletableFuture count2 = CompletableFuture.supplyAsync(() -> { - QueryWrapper queryWrapper = new QueryWrapper<>(); - if (ObjectUtil.isNotEmpty(shopProductIndex.getCategory_id())) { - queryWrapper.eq("category_id", shopProductIndex.getCategory_id()); + QueryWrapper queryWrapper=new QueryWrapper<>(); + if(CollectionUtil.isNotEmpty(category_ids)){ + queryWrapper.in("category_id",category_ids); } - queryWrapper.eq("store_id", shopProductIndex.getStore_id()); - queryWrapper.eq("product_state_id", StateCode.PRODUCT_STATE_NORMAL); + queryWrapper.eq("store_id",storeId); + queryWrapper.eq("product_state_id",StateCode.PRODUCT_STATE_NORMAL); return ((int) shopProductIndexService.count(queryWrapper)); }); CompletableFuture count3 = CompletableFuture.supplyAsync(() -> { - QueryWrapper queryWrapper = new QueryWrapper<>(); - if (ObjectUtil.isNotEmpty(shopProductIndex.getCategory_id())) { - queryWrapper.eq("category_id", shopProductIndex.getCategory_id()); + QueryWrapper queryWrapper=new QueryWrapper<>(); + if(CollectionUtil.isNotEmpty(category_ids)){ + queryWrapper.in("category_id",category_ids); } - queryWrapper.eq("store_id", shopProductIndex.getStore_id()); - queryWrapper.eq("product_state_id", StateCode.PRODUCT_STATE_OFF_THE_SHELF); + queryWrapper.eq("store_id",storeId); + queryWrapper.eq("product_state_id",StateCode.PRODUCT_STATE_OFF_THE_SHELF); return ((int) shopProductIndexService.count(queryWrapper)); }); CompletableFuture count4 = CompletableFuture.supplyAsync(() -> { - QueryWrapper queryWrapper = new QueryWrapper<>(); - if (ObjectUtil.isNotEmpty(shopProductIndex.getCategory_id())) { - queryWrapper.eq("category_id", shopProductIndex.getCategory_id()); + QueryWrapper queryWrapper=new QueryWrapper<>(); + if(CollectionUtil.isNotEmpty(category_ids)){ + queryWrapper.in("category_id",category_ids); } - queryWrapper.eq("store_id", shopProductIndex.getStore_id()); - queryWrapper.eq("product_state_id", StateCode.PRODUCT_STATE_ILLEGAL); + queryWrapper.eq("store_id",storeId); + queryWrapper.eq("product_state_id",StateCode.PRODUCT_STATE_ILLEGAL); return ((int) shopProductIndexService.count(queryWrapper)); }); CompletableFuture count5 = CompletableFuture.supplyAsync(() -> { - QueryWrapper queryWrapper = new QueryWrapper<>(); - if (ObjectUtil.isNotEmpty(shopProductIndex.getCategory_id())) { - queryWrapper.eq("category_id", shopProductIndex.getCategory_id()); + QueryWrapper queryWrapper=new QueryWrapper<>(); + if(CollectionUtil.isNotEmpty(category_ids)){ + queryWrapper.in("category_id",category_ids); } - queryWrapper.eq("store_id", shopProductIndex.getStore_id()); - queryWrapper.eq("product_state_id", StateCode.PRODUCT_STATE_OFF_THE_SHELF_UNCHECK); + queryWrapper.eq("store_id",storeId); + queryWrapper.eq("product_state_id",StateCode.PRODUCT_STATE_OFF_THE_SHELF_UNCHECK); return ((int) shopProductIndexService.count(queryWrapper)); }); @@ -6209,4 +6202,53 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl countItemQuantity(List items){ + if(items.isEmpty()){ + return items; + } + List prductIds=items.stream().map(map -> { + return (Long)map.get("product_id"); + }).collect(Collectors.toList()); + Integer storId= MapUtil.getInt(items.get(0),"store_id",1); + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.select("product_id,sum(item_quantity) as item_quantity"); + queryWrapper.in("product_id",prductIds); + queryWrapper.eq("store_id",storId); + queryWrapper.groupBy("product_id"); + List shopProductItems= shopProductItemService.list(queryWrapper); + Map countMap=shopProductItems.stream().collect(Collectors.toMap(ShopProductItem::getProduct_id,ShopProductItem::getItem_quantity)); + items.forEach(shopProductIndex -> { + shopProductIndex.put("item_quantity",MapUtil.getLong(countMap,shopProductIndex.get("product_id"))); + }); + return items; + } + + @Override + @Transactional + public boolean removeByProductIds(String product_ids) { + if(product_ids.contains(",")){ + String[] productIds= product_ids.split(","); + if(productIds.length>delate_batch_limit){ + throw new ApiException("最大删除数量为100"); + } + Arrays.stream(productIds) + .filter(Objects::nonNull) // 先过滤null + .distinct().forEach(productId->{ + try { + removeByProductId(Long.valueOf(productId)); + }catch (RuntimeException e){ + throw new ApiException(e.getMessage()); + } + }); + }else { + removeByProductId(Long.valueOf(product_ids)); + } + return true; + } + } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sixun/dto/SxCategoryModel.java b/mall-shop/src/main/java/com/suisung/mall/shop/sixun/dto/SxCategoryModel.java index 5775db46..173165df 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/sixun/dto/SxCategoryModel.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sixun/dto/SxCategoryModel.java @@ -30,5 +30,6 @@ public class SxCategoryModel { private String first_category_name; @ApiModelProperty(value = "第二级父类") private String second_category_name; - + @ApiModelProperty(value = "品牌名称") + private String brandName; } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sync/controller/SyncThirdDataController.java b/mall-shop/src/main/java/com/suisung/mall/shop/sync/controller/SyncThirdDataController.java index abc4d050..86e26bb8 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/sync/controller/SyncThirdDataController.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sync/controller/SyncThirdDataController.java @@ -166,7 +166,6 @@ public class SyncThirdDataController { return new ThirdApiRes().success("服务器已执行活动数据操作"); } - //todo test @ApiOperation(value = "同步活动商品数据", notes = "同步活动商品数据") @RequestMapping(value = "/syncAtiveShop", method = RequestMethod.POST) public ThirdApiRes syncAtiveShop(@RequestParam String appKey, @@ -176,4 +175,13 @@ public class SyncThirdDataController { return new ThirdApiRes().success("服务器已执行活动数据操作"); } + //todo test + @ApiOperation(value = "刷新时间", notes = "刷新时间") + @RequestMapping(value = "/syncRefreshTime", method = RequestMethod.POST) + public ThirdApiRes syncRefreshTime(@RequestParam String appKey, + @RequestParam String sign) { + + return syncThirdDataService.syncRefreshTime(appKey,sign); + } + } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/SyncThirdDataService.java b/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/SyncThirdDataService.java index fecf7994..dfd8cdd1 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/SyncThirdDataService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/SyncThirdDataService.java @@ -14,6 +14,7 @@ import com.suisung.mall.common.pojo.req.SyncThirdMemberReq; import com.suisung.mall.common.pojo.res.ThirdApiRes; import org.springframework.core.io.Resource; import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import java.util.Date; @@ -161,4 +162,9 @@ public interface SyncThirdDataService { * 同步匹配商品图库数据 */ void syncShopImages(Integer storeId); + + /** + * 刷新时间 + */ + ThirdApiRes syncRefreshTime(@RequestParam String appKey, @RequestParam String sign); } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncBaseThirdSxAbstract.java b/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncBaseThirdSxAbstract.java index 9e369583..58206863 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncBaseThirdSxAbstract.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncBaseThirdSxAbstract.java @@ -116,6 +116,7 @@ public abstract class SyncBaseThirdSxAbstract{ ShopBaseProductType productType=new ShopBaseProductType(); productType.setType_is_draft(1);//发布 productType.setStore_id(Integer.valueOf(storeId)); + String brandName=o.getStr("brandName","其他品牌"); if (o != null) { // 重要:分类类型处理(强调共性) Integer typeId = 1001; @@ -125,11 +126,19 @@ public abstract class SyncBaseThirdSxAbstract{ if (productType != null) { typeId = productType.getType_id(); } else { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("store_id",Integer.valueOf(storeId)); + queryWrapper.eq("brand_name",brandName); + ShopBaseProductBrand shopBaseProductBrand=productBrandService.findOne(queryWrapper); // 新增一个类型 ShopBaseProductType newProductType = new ShopBaseProductType(); newProductType.setType_name(o.getStr("product_type")); newProductType.setType_buildin(0); + newProductType.setType_is_draft(0);//发布 newProductType.setStore_id(Integer.valueOf(storeId)); + if(null!=shopBaseProductBrand){ + newProductType.setType_brand_ids(String.valueOf(shopBaseProductBrand.getBrand_id())); + } if (productTypeService.save(newProductType)) { typeId = newProductType.getType_id(); } @@ -510,6 +519,7 @@ public abstract class SyncBaseThirdSxAbstract{ accountUserInfo.setUser_id(userId); accountUserInfo.setUser_type_id(0); accountUserInfo.setUser_mobile(user_mobile); + accountUserInfo.setUser_realname(syncThirdMemberReq.getUser_realname()); accountUserInfo.setUser_level_card(syncThirdMemberReq.getUser_level_card()); //user_level_id accountUserInfo.setUser_level_id(1); // todo select id @@ -655,7 +665,7 @@ public abstract class SyncBaseThirdSxAbstract{ * @param storeId * @return */ - public int baseSaveOrUpdateGoodsBatch(JSONArray goodsListJSON,String storeId,String isNegativeAllowed,String priorityMode){ + public int baseSaveOrUpdateGoodsBatch(JSONArray goodsListJSON,String storeId,String isNegativeAllowed,String priorityMode,Map brandMaps){ AtomicInteger resultCount = new AtomicInteger(); Map categoryMap= productCategoryService.getCategoryListByStoreId(storeId);//热数据加载 List shopProductBaseList=new ArrayList<>(); @@ -751,6 +761,7 @@ public abstract class SyncBaseThirdSxAbstract{ shopProductIndex.setCoupon_type_id(0);// product_assist_data // 辅助属性值列(DOT) shopProductIndex.setProduct_transport_id(String.valueOf(StateCode.DELIVERY_TYPE_SAME_CITY)); shopProductIndex.setIs_special(shopProductBase.getIs_special()); + shopProductIndex.setBrand_id(brandMaps.get(jsonObj.getStr("brand_name"))); if(categoryId!=0){ Integer typeId = (Integer) categoryMap.get(categoryId.toString()); if (ObjectUtil.isNotEmpty(typeId)) { diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncThirdDataServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncThirdDataServiceImpl.java index eb077f4d..7fa25913 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncThirdDataServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncThirdDataServiceImpl.java @@ -46,6 +46,7 @@ import com.suisung.mall.common.pojo.res.ThirdApiRes; import com.suisung.mall.common.utils.I18nUtil; import com.suisung.mall.common.utils.StringUtils; import com.suisung.mall.core.web.service.RedisService; +import com.suisung.mall.shop.base.service.ShopBaseProductBrandService; import com.suisung.mall.shop.base.service.ShopBaseProductCategoryService; import com.suisung.mall.shop.base.service.ShopBaseProductSpecService; import com.suisung.mall.shop.number.service.ShopNumberSeqService; @@ -88,6 +89,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import java.io.File; @@ -135,9 +137,6 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements @Autowired private OssService ossService; - @Autowired - private RedisService redisService; - @Lazy @Autowired private RedisTemplate redisTemplate; @@ -171,6 +170,9 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements @Autowired private AccountService accountService; + @Autowired + private ShopBaseProductBrandService productBrandService; + /** * 批量保存商品的分类 * @@ -570,6 +572,8 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements List failFolders = new ArrayList<>(); List failMessage = new ArrayList<>(); shopBaseProductCategoryService.getCategoryListByStoreId(storeId); + // getBrandMapByStoreId() + Map brandMaps= productBrandService.getBrandMapByStoreId(storeId); QueryWrapper storeDbConfigQueryWrapper = new QueryWrapper<>(); storeDbConfigQueryWrapper.eq("store_id", storeId); StoreDbConfig storeDbConfig = storeDbConfigService.getOne(storeDbConfigQueryWrapper); @@ -586,7 +590,7 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements String fileName = "good_" + (taskId + 1) + ".txt"; JSONArray jsonArray = new ThreadFileUtils().processFolder(taskName, newFolders.get(taskId)); try { - baseSaveOrUpdateGoodsBatch(jsonArray, storeId,isNegativeAllowed,priorityMode); + baseSaveOrUpdateGoodsBatch(jsonArray, storeId,isNegativeAllowed,priorityMode,brandMaps); success.getAndIncrement(); threadNum.decrementAndGet(); return "成功" + taskId; @@ -618,6 +622,7 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements shopBaseProductCategoryService.clearCategoryCache(storeId); shopProductSpecItemService.clearExistItem(Integer.valueOf(storeId)); baseProductSpecService.clearShopBaseProductSpecMap(Integer.valueOf(storeId)); + productBrandService.clearBrandMapByStoreId(storeId); List syncFileLogs = new ArrayList<>(); for (int i = 0; i < failFolders.size(); i++) { String path = failFolders.get(i); @@ -659,6 +664,7 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements syncShopImageService.syncMapingShopImages(storeId); } + @Override public ResponseEntity downloadToClient(String primaryKey, String clienVersionName) { logger.info("primaryKey:{}", primaryKey); @@ -917,18 +923,6 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements String newfolder=new FileUtils().getSyncTypeFlag(syncType,clientPath)+storeId+FileUtils.pathSeparator+folders.get(0)+FileUtils.pathSeparator; upLoadZipToOss(newfolder);//上传文件到cos - //更新当前的获取时间,用户客户端获取 - try { - QueryWrapper storeDbConfigQueryWrapper = new QueryWrapper<>(); - storeDbConfigQueryWrapper.eq("store_id", storeId); - StoreDbConfig storeDbConfig=storeDbConfigService.getOne(storeDbConfigQueryWrapper); - if(ObjectUtil.isNotEmpty(storeDbConfig)){ - storeDbConfig.setRefreshTime(refreshDate); - storeDbConfigService.saveOrUpdate(storeDbConfig); - } - }catch (RuntimeException e){ - logger.error("同步时间失败"+e.getMessage()); - } return new ThirdApiRes().success("上传成功"); } @@ -1233,4 +1227,33 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements } + @Override + public ThirdApiRes syncRefreshTime(@RequestParam String appKey, @RequestParam String sign) { + if (StrUtil.isBlank(appKey) || StrUtil.isBlank(sign) ) { + return new ThirdApiRes().fail(1003, I18nUtil._("缺少必要参数!")); + } + // 验签、appid,必要参数判断 + SyncApp syncApp = syncAppService.getOne(new LambdaQueryWrapper() + .select(SyncApp::getApp_key, SyncApp::getApp_secret,SyncApp::getStore_id) + .eq(SyncApp::getApp_key, appKey) + .eq(SyncApp::getApp_secret,sign)); + if (syncApp == null) { + return new ThirdApiRes().fail(1001, I18nUtil._("签名有误!")); + } + Date tenMinutesAgo = Date.from(Instant.now().minus(Duration.ofMinutes(30)));//校准误差 + Date refreshDate = DateUtil.date(tenMinutesAgo); + //更新当前的获取时间,用户客户端获取 + try { + QueryWrapper storeDbConfigQueryWrapper = new QueryWrapper<>(); + storeDbConfigQueryWrapper.eq("store_id", syncApp.getStore_id()); + StoreDbConfig storeDbConfig=storeDbConfigService.getOne(storeDbConfigQueryWrapper); + if(ObjectUtil.isNotEmpty(storeDbConfig)){ + storeDbConfig.setRefreshTime(refreshDate); + storeDbConfigService.saveOrUpdate(storeDbConfig); + } + }catch (RuntimeException e){ + logger.error("同步时间失败"+e.getMessage()); + } + return new ThirdApiRes().success("时间同步完成"); + } }