From a6f53f45354a6e109c0779fd56e289cbd39c7e66 Mon Sep 17 00:00:00 2001 From: Jack <46790855@qq.com> Date: Fri, 8 Aug 2025 10:33:27 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BE=E5=BA=A6=E6=9C=8D=E5=8A=A1=20fib=20bu?= =?UTF-8?q?g?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mall-shop/pom.xml | 1 + .../suisung/mall/shop/components/BaiduAi.java | 185 +++++++-------- .../suisung/mall/shop/config/BaiduConfig.java | 24 +- .../impl/ShopProductBaseServiceImpl.java | 219 +++++++++--------- pom.xml | 29 ++- 5 files changed, 227 insertions(+), 231 deletions(-) diff --git a/mall-shop/pom.xml b/mall-shop/pom.xml index 96cf2bdc..9247fd05 100644 --- a/mall-shop/pom.xml +++ b/mall-shop/pom.xml @@ -314,6 +314,7 @@ + local diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/components/BaiduAi.java b/mall-shop/src/main/java/com/suisung/mall/shop/components/BaiduAi.java index 130cb28f..2773c890 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/components/BaiduAi.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/components/BaiduAi.java @@ -5,7 +5,6 @@ import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; -import com.suisung.mall.common.exception.ApiException; import com.suisung.mall.common.pojo.dto.BaiduAiBriefDTO; import com.suisung.mall.common.utils.CheckUtil; import com.suisung.mall.common.utils.HttpServletUtils; @@ -14,20 +13,26 @@ import com.suisung.mall.shop.config.BaiduConfig; import okhttp3.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; -import java.io.IOException; -import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; + +@Component public class BaiduAi { static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder().build(); private static final Logger log = LoggerFactory.getLogger(BaiduAi.class); - public static void main(String[] args) { + @Autowired + private BaiduConfig baiduConfig; + + + public void main(String[] args) { String url = "https://lancerdt.oss-accelerate.aliyuncs.com/mall/images/media/store/10002/20240123d3c27007baf740c9bdc429f850259501.jpg"; BaiduAiBriefDTO brief = new BaiduAiBriefDTO(); @@ -67,90 +72,7 @@ public class BaiduAi { } - public static String addProductImg(String url, BaiduAiBriefDTO brief) { - Map map = new HashMap<>(); - map.put("url", url); - map.put("brief", JSON.toJSONString(brief)); - - String par = ""; - - try { - par = HttpServletUtils.generateParams(map, "utf-8"); - - MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded"); - RequestBody body = RequestBody.create(mediaType, par); - Request request = new Request.Builder() - .url("https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/product/add?access_token=" + BaiduConfig.getAccessToken()) - .method("POST", body) - .addHeader("Content-Type", "application/x-www-form-urlencoded") - .addHeader("Accept", "application/json") - .build(); - Response response = HTTP_CLIENT.newCall(request).execute(); - - String resultStr = response.body().string(); - System.out.println(resultStr); - - JSONObject jsonObject = JSONUtil.parseObj(resultStr); - Integer errCode = Convert.toInt(jsonObject.get("error_code")); -// String errMessage = Convert.toStr(jsonObject.get("error_msg")); - String contSign = Convert.toStr(jsonObject.get("cont_sign")); - - if (CheckUtil.isNotEmpty(errCode)) { - return ""; - } - - return contSign; - } catch (Exception e) { - log.error("Baidu Ai 添加图片异常", e.getMessage()); - return ""; - } - } - - - public static String editProductImg(String url, BaiduAiBriefDTO brief) { - Map map = new HashMap<>(); - map.put("url", url); - map.put("brief", JSON.toJSONString(brief)); - - String par = ""; - - try { - par = HttpServletUtils.generateParams(map, "utf-8"); - - MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded"); - RequestBody body = RequestBody.create(mediaType, par); - Request request = new Request.Builder() - .url("https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/product/update?access_token=" + BaiduConfig.getAccessToken()) - .method("POST", body) - .addHeader("Content-Type", "application/x-www-form-urlencoded") - .addHeader("Accept", "application/json") - .build(); - Response response = HTTP_CLIENT.newCall(request).execute(); - - String resultStr = response.body().string(); - System.out.println(resultStr); - - JSONObject jsonObject = JSONUtil.parseObj(resultStr); - - Integer errCode = Convert.toInt(jsonObject.get("error_code")); - String errMessage = Convert.toStr(jsonObject.get("error_msg")); - String contSign = Convert.toStr(jsonObject.get("cont_sign")); - - if (CheckUtil.isEmpty(errCode)) { - - } else { - return ""; - } - - return contSign; - } catch (Exception e) { - log.error("Baidu Ai 编辑图片异常", e.getMessage()); - return ""; - } - } - - - public static String removeProductImg(String url, String cont_sign) { + public String removeProductImg(String url, String cont_sign) { Map map = new HashMap<>(); if (CheckUtil.isNotEmpty(url)) { @@ -169,7 +91,7 @@ public class BaiduAi { MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded"); RequestBody body = RequestBody.create(mediaType, par); Request request = new Request.Builder() - .url("https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/product/delete?access_token=" + BaiduConfig.getAccessToken()) + .url("https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/product/delete?access_token=" + baiduConfig.getAccessToken()) .method("POST", body) .addHeader("Content-Type", "application/x-www-form-urlencoded") .addHeader("Accept", "application/json") @@ -195,7 +117,7 @@ public class BaiduAi { } } - public static List searchProductImg(String url, Integer pn, Integer rn) { + public List searchProductImg(String url, Integer pn, Integer rn) { Map map = new HashMap<>(); map.put("url", url); @@ -216,7 +138,7 @@ public class BaiduAi { MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded"); RequestBody body = RequestBody.create(mediaType, par); Request request = new Request.Builder() - .url("https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/product/search?access_token=" + BaiduConfig.getAccessToken()) + .url("https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/product/search?access_token=" + baiduConfig.getAccessToken()) .method("POST", body) .addHeader("Content-Type", "application/x-www-form-urlencoded") .addHeader("Accept", "application/json") @@ -254,4 +176,85 @@ public class BaiduAi { return null; } } + + public String addProductImg(String url, BaiduAiBriefDTO brief) { + Map map = new HashMap<>(); + map.put("url", url); + map.put("brief", JSON.toJSONString(brief)); + + String par = ""; + + try { + par = HttpServletUtils.generateParams(map, "utf-8"); + + MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded"); + RequestBody body = RequestBody.create(mediaType, par); + Request request = new Request.Builder() + .url("https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/product/add?access_token=" + baiduConfig.getAccessToken()) + .method("POST", body) + .addHeader("Content-Type", "application/x-www-form-urlencoded") + .addHeader("Accept", "application/json") + .build(); + Response response = HTTP_CLIENT.newCall(request).execute(); + + String resultStr = response.body().string(); + System.out.println(resultStr); + + JSONObject jsonObject = JSONUtil.parseObj(resultStr); + Integer errCode = Convert.toInt(jsonObject.get("error_code")); +// String errMessage = Convert.toStr(jsonObject.get("error_msg")); + String contSign = Convert.toStr(jsonObject.get("cont_sign")); + + if (CheckUtil.isNotEmpty(errCode)) { + return ""; + } + + return contSign; + } catch (Exception e) { + log.error("Baidu Ai 添加图片异常", e.getMessage()); + return ""; + } + } + + public String editProductImg(String url, BaiduAiBriefDTO brief) { + Map map = new HashMap<>(); + map.put("url", url); + map.put("brief", JSON.toJSONString(brief)); + + String par = ""; + + try { + par = HttpServletUtils.generateParams(map, "utf-8"); + + MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded"); + RequestBody body = RequestBody.create(mediaType, par); + Request request = new Request.Builder() + .url("https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/product/update?access_token=" + baiduConfig.getAccessToken()) + .method("POST", body) + .addHeader("Content-Type", "application/x-www-form-urlencoded") + .addHeader("Accept", "application/json") + .build(); + Response response = HTTP_CLIENT.newCall(request).execute(); + + String resultStr = response.body().string(); + System.out.println(resultStr); + + JSONObject jsonObject = JSONUtil.parseObj(resultStr); + + Integer errCode = Convert.toInt(jsonObject.get("error_code")); + String errMessage = Convert.toStr(jsonObject.get("error_msg")); + String contSign = Convert.toStr(jsonObject.get("cont_sign")); + + if (CheckUtil.isEmpty(errCode)) { + + } else { + return ""; + } + + return contSign; + } catch (Exception e) { + log.error("Baidu Ai 编辑图片异常", e.getMessage()); + return ""; + } + } } \ No newline at end of file diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/config/BaiduConfig.java b/mall-shop/src/main/java/com/suisung/mall/shop/config/BaiduConfig.java index 2babd723..11d0daee 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/config/BaiduConfig.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/config/BaiduConfig.java @@ -1,9 +1,7 @@ package com.suisung.mall.shop.config; -import com.suisung.mall.shop.base.service.AccountBaseConfigService; import okhttp3.*; import org.json.JSONObject; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; @@ -13,26 +11,20 @@ import java.io.IOException; * OSS对象存储相关配置 */ @Configuration +//@Service public class BaiduConfig { - @Autowired - static private AccountBaseConfigService accountBaseConfigService; + static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder().build(); @Value("#{accountBaseConfigService.getConfig('baidu_app_id')}") - static private String appId; - + private String appId; @Value("#{accountBaseConfigService.getConfig('baidu_secret_id')}") - static private String apiKey; - + private String apiKey; @Value("#{accountBaseConfigService.getConfig('baidu_secret_key')}") - static private String secretKey; - + private String secretKey; @Value("#{accountBaseConfigService.getConfig('baidu_translate_app_id')}") - static private String translateAppId; - + private String translateAppId; @Value("#{accountBaseConfigService.getConfig('baidu_translate_app_key')}") - static private String translateAppKey; - - static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder().build(); + private String translateAppKey; /** * 从用户的AK,SK生成鉴权签名(Access Token) @@ -40,7 +32,7 @@ public class BaiduConfig { * @return 鉴权签名(Access Token) * @throws IOException IO异常 */ - public static String getAccessToken() throws IOException { + public String getAccessToken() throws IOException { MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded"); RequestBody body = RequestBody.create(mediaType, "grant_type=client_credentials&client_id=" + apiKey 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 1e30364a..48e38401 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 @@ -25,7 +25,6 @@ import com.suisung.mall.common.constant.CommonConstant; import com.suisung.mall.common.constant.ConfigConstant; import com.suisung.mall.common.constant.MqConstant; import com.suisung.mall.common.domain.UserDto; -import com.suisung.mall.common.enums.DicEnum; import com.suisung.mall.common.exception.ApiException; import com.suisung.mall.common.feignService.EduService; import com.suisung.mall.common.feignService.SearchService; @@ -49,7 +48,6 @@ import com.suisung.mall.common.utils.CSVUtils; import com.suisung.mall.common.utils.CheckUtil; import com.suisung.mall.common.utils.CommonUtil; import com.suisung.mall.common.utils.I18nUtil; -import com.suisung.mall.core.web.service.RedisService; import com.suisung.mall.core.web.service.impl.BaseServiceImpl; import com.suisung.mall.shop.activity.service.ShopActivityGroupbookingService; import com.suisung.mall.shop.base.service.*; @@ -65,8 +63,6 @@ import com.suisung.mall.shop.product.pojo.vo.ProductVo; import com.suisung.mall.shop.product.service.*; import com.suisung.mall.shop.sixun.service.SxSyncGoodsService; import com.suisung.mall.shop.store.service.*; -import com.suisung.mall.shop.sync.service.ProductMappingService; -import com.suisung.mall.shop.sync.service.StoreDbConfigService; import com.suisung.mall.shop.user.service.*; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -106,6 +102,7 @@ import static io.seata.common.util.LambdaUtils.distinctByKey; @Transactional @Service public class ShopProductBaseServiceImpl extends BaseServiceImpl implements ShopProductBaseService { + private final static int delate_batch_limit = 100;//删除最大限制 private final Logger logger = LoggerFactory.getLogger(ShopProductBaseServiceImpl.class); @Autowired private ShopBaseProductCategoryService shopBaseProductCategoryService; @@ -201,15 +198,10 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl indexQueryWrapper = new QueryWrapper<>(); indexQueryWrapper.eq("product_number", product_number); - indexQueryWrapper.eq("store_id",store_id); + indexQueryWrapper.eq("store_id", store_id); ShopProductIndex temp_info_row = shopProductIndexService.findOne(indexQueryWrapper); if (temp_info_row != null && !ObjectUtil.equal(temp_info_row.getProduct_id(), productId)) { // 商品货号已经存在,不可重 @@ -999,8 +991,8 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl itemSeqQueryWrapper = new QueryWrapper<>(); - itemSeqQueryWrapper.eq("item_id",item_row.getItem_id()); - itemSeqQueryWrapper.eq("product_id",item_row.getProduct_id()); - product_item_seq_row= shopProductItemSeqService.findOne(itemSeqQueryWrapper); - if(null!=product_item_seq_row){ + itemSeqQueryWrapper.eq("item_id", item_row.getItem_id()); + itemSeqQueryWrapper.eq("product_id", item_row.getProduct_id()); + product_item_seq_row = shopProductItemSeqService.findOne(itemSeqQueryWrapper); + if (null != product_item_seq_row) { product_item_seq_row.setProduct_item_seq_id(product_item_seq_id); product_item_seq_row.setProduct_item_seq_val(product_item_seq_val); shopProductItemSeqService.updateSeqIdByItemIdAndProductId(product_item_seq_row); @@ -1081,24 +1073,24 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl cartQueryWrapper = new QueryWrapper<>(); cartQueryWrapper.in("item_id", item_ids_deprecate); - List shopUserCarts=shopUserCartService.list(cartQueryWrapper); - List shopUserCartIds=shopUserCarts.stream().map(ShopUserCart::getCart_id).collect(Collectors.toList()); - if(CollectionUtil.isNotEmpty(shopUserCarts)){ + List shopUserCarts = shopUserCartService.list(cartQueryWrapper); + List shopUserCartIds = shopUserCarts.stream().map(ShopUserCart::getCart_id).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(shopUserCarts)) { shopUserCartService.removeBatchByIds(shopUserCartIds); } QueryWrapper seqQueryWrapper = new QueryWrapper<>(); seqQueryWrapper.in("item_id", item_ids_deprecate); - List shopProductItemSeqs=shopProductItemSeqService.list(seqQueryWrapper); - List shopProductItemSeqIds=shopProductItemSeqs.stream().map(ShopProductItemSeq::getProduct_item_seq_id).collect(Collectors.toList()); - if(CollectionUtil.isNotEmpty(shopProductItemSeqIds)) { + List shopProductItemSeqs = shopProductItemSeqService.list(seqQueryWrapper); + List shopProductItemSeqIds = shopProductItemSeqs.stream().map(ShopProductItemSeq::getProduct_item_seq_id).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(shopProductItemSeqIds)) { shopProductItemSeqService.removeBatchByIds(shopProductItemSeqIds); } QueryWrapper activityItemQueryWrapper = new QueryWrapper<>(); activityItemQueryWrapper.in("item_id", item_ids_deprecate); - List shopStoreActivityItems= shopStoreActivityItemService.list(activityItemQueryWrapper); - List shopStoreActivityItemIds=shopStoreActivityItems.stream().map(ShopStoreActivityItem::getActivity_item_id).collect(Collectors.toList()); - if(CollectionUtil.isNotEmpty(shopStoreActivityItemIds)) { + List shopStoreActivityItems = shopStoreActivityItemService.list(activityItemQueryWrapper); + List shopStoreActivityItemIds = shopStoreActivityItems.stream().map(ShopStoreActivityItem::getActivity_item_id).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(shopStoreActivityItemIds)) { shopStoreActivityItemService.removeBatchByIds(shopStoreActivityItemIds); } if (!shopProductItemService.remove(item_ids_deprecate)) { @@ -2756,9 +2748,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是不开启 + 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()); @@ -2993,15 +2985,15 @@ 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]);//未分配或者待审核 + if (openCount) { + Integer[] countArrays = countShopIndex(category_ids, store_id); + List 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; } @@ -3456,25 +3448,25 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl cartQueryWrapper = new QueryWrapper<>(); cartQueryWrapper.in("item_id", product_item_ids); - List shopUserCarts=shopUserCartService.list(cartQueryWrapper); - List shopUserCartIds=shopUserCarts.stream().map(ShopUserCart::getCart_id).collect(Collectors.toList()); - if(CollectionUtil.isNotEmpty(shopUserCartIds)){ + List shopUserCarts = shopUserCartService.list(cartQueryWrapper); + List shopUserCartIds = shopUserCarts.stream().map(ShopUserCart::getCart_id).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(shopUserCartIds)) { shopUserCartService.removeBatchByIds(shopUserCartIds); } QueryWrapper seqQueryWrapper = new QueryWrapper<>(); seqQueryWrapper.in("item_id", product_item_ids); - List shopProductItemSeqs=shopProductItemSeqService.list(seqQueryWrapper); - List shopProductItemSeqIds=shopProductItemSeqs.stream().map(ShopProductItemSeq::getProduct_item_seq_id).collect(Collectors.toList()); - if(CollectionUtil.isNotEmpty(shopProductItemSeqIds)) { + List shopProductItemSeqs = shopProductItemSeqService.list(seqQueryWrapper); + List shopProductItemSeqIds = shopProductItemSeqs.stream().map(ShopProductItemSeq::getProduct_item_seq_id).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(shopProductItemSeqIds)) { shopProductItemSeqService.removeBatchByIds(shopProductItemSeqIds); } } QueryWrapper itemQueryWrapper = new QueryWrapper<>(); itemQueryWrapper.eq("product_id", product_id); - ShopStoreActivityItem shopStoreActivityItem=shopStoreActivityItemService.findOne(itemQueryWrapper); - if(null!=shopStoreActivityItem){ + ShopStoreActivityItem shopStoreActivityItem = shopStoreActivityItemService.findOne(itemQueryWrapper); + if (null != shopStoreActivityItem) { shopStoreActivityItemService.remove(shopStoreActivityItem.getActivity_item_id()); } if (!remove(product_id)) { @@ -5358,12 +5350,12 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl p.getStore_id() + "_" + p.getProduct_number(), - p -> p.getProduct_id()+"_"+ p.getProduct_state_id() + p -> p.getProduct_id() + "_" + p.getProduct_state_id() )); } @@ -6092,7 +6084,7 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl existing = shopProductItemService.list(query); + List existing = shopProductItemService.list(query); // 4. 构建存在商品的映射表 return existing.stream() @@ -6112,7 +6104,7 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl query = new QueryWrapper<>(); - query.select("product_id", "store_id", "product_number","product_state_id"); + query.select("product_id", "store_id", "product_number", "product_state_id"); // 构建OR条件 (store_id=X AND product_number=Y) OR (store_id=A AND product_number=B)... storeProductPairs.forEach(pair -> { @@ -6204,51 +6196,51 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl category_ids,Integer storeId) { - //商品状态:1001-正常;1002-下架仓库中;1003-待审核; 1000-违规禁售,1003 + public Integer[] countShopIndex(List category_ids, Integer storeId) { + //商品状态:1001-正常;1002-下架仓库中;1003-待审核; 1000-违规禁售,1003 int taskCount = 5; CompletableFuture count1 = CompletableFuture.supplyAsync(() -> { - QueryWrapper queryWrapper=new QueryWrapper<>(); - if(CollectionUtil.isNotEmpty(category_ids)){ - queryWrapper.in("category_id",category_ids); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (CollectionUtil.isNotEmpty(category_ids)) { + queryWrapper.in("category_id", category_ids); } - queryWrapper.eq("store_id",storeId); + queryWrapper.eq("store_id", storeId); return ((int) shopProductIndexService.count(queryWrapper)); }); CompletableFuture count2 = CompletableFuture.supplyAsync(() -> { - QueryWrapper queryWrapper=new QueryWrapper<>(); - if(CollectionUtil.isNotEmpty(category_ids)){ - queryWrapper.in("category_id",category_ids); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (CollectionUtil.isNotEmpty(category_ids)) { + queryWrapper.in("category_id", category_ids); } - queryWrapper.eq("store_id",storeId); - 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(CollectionUtil.isNotEmpty(category_ids)){ - queryWrapper.in("category_id",category_ids); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (CollectionUtil.isNotEmpty(category_ids)) { + queryWrapper.in("category_id", category_ids); } - queryWrapper.eq("store_id",storeId); - 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(CollectionUtil.isNotEmpty(category_ids)){ - queryWrapper.in("category_id",category_ids); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (CollectionUtil.isNotEmpty(category_ids)) { + queryWrapper.in("category_id", category_ids); } - queryWrapper.eq("store_id",storeId); - 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(CollectionUtil.isNotEmpty(category_ids)){ - queryWrapper.in("category_id",category_ids); + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (CollectionUtil.isNotEmpty(category_ids)) { + queryWrapper.in("category_id", category_ids); } - queryWrapper.eq("store_id",storeId); - 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)); }); @@ -6271,27 +6263,28 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl countItemQuantity(List items){ - if(items.isEmpty()){ + private List countItemQuantity(List items) { + if (items.isEmpty()) { return items; } - List prductIds=items.stream().map(map -> { - return (Long)map.get("product_id"); + 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<>(); + 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.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)); + List shopProductItems = shopProductItemService.list(queryWrapper); + Map countMap = shopProductItems.stream().collect(Collectors.toMap(ShopProductItem::getProduct_id, ShopProductItem::getItem_quantity)); items.forEach(shopProductIndex -> { - shopProductIndex.put("itemQuantity",MapUtil.getLong(countMap,shopProductIndex.get("product_id"))); + shopProductIndex.put("itemQuantity", MapUtil.getLong(countMap, shopProductIndex.get("product_id"))); }); return items; } @@ -6299,13 +6292,13 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpldelate_batch_limit){ - throw new ApiException("最大删除数量为100"); - } - List productIdList=Arrays.asList(productIds); - return removeByProductBatch(productIdList); + if (product_ids.contains(",")) { + String[] productIds = product_ids.split(","); + if (productIds.length > delate_batch_limit) { + throw new ApiException("最大删除数量为100"); + } + List productIdList = Arrays.asList(productIds); + return removeByProductBatch(productIdList); } return removeByProductId(Long.valueOf(product_ids)); } @@ -6323,9 +6316,9 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl queryWrapper = new QueryWrapper<>(); - queryWrapper.in("product_id",productIdList); - List shopProductBaseList= shopProductBaseService.list(queryWrapper); - if(shopProductBaseList.size()!=productIdList.size()){ + queryWrapper.in("product_id", productIdList); + List shopProductBaseList = shopProductBaseService.list(queryWrapper); + if (shopProductBaseList.size() != productIdList.size()) { throw new ApiException("存在商品编号不存在,请检查"); } if (getCurrentUser().isPlatform() || batchCheckDataRights(storeId, shopProductBaseList)) { @@ -6347,12 +6340,12 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl shopProductBaseList){ - if(shopProductBaseList.isEmpty()){ + private boolean batchCheckDataRights(Integer storeId, List shopProductBaseList) { + if (shopProductBaseList.isEmpty()) { return false; } - for (ShopProductBase shopProductBase:shopProductBaseList){ - if(shopProductBase.getStore_id().intValue()!=storeId.intValue()){ + for (ShopProductBase shopProductBase : shopProductBaseList) { + if (shopProductBase.getStore_id().intValue() != storeId.intValue()) { return false; } } @@ -6402,25 +6395,25 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl cartQueryWrapper = new QueryWrapper<>(); cartQueryWrapper.in("item_id", product_item_ids); - List shopUserCarts=shopUserCartService.list(cartQueryWrapper); - List shopUserCartIds=shopUserCarts.stream().map(ShopUserCart::getCart_id).collect(Collectors.toList()); - if(CollectionUtil.isNotEmpty(shopUserCartIds)){ + List shopUserCarts = shopUserCartService.list(cartQueryWrapper); + List shopUserCartIds = shopUserCarts.stream().map(ShopUserCart::getCart_id).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(shopUserCartIds)) { shopUserCartService.removeBatchByIds(shopUserCartIds); } QueryWrapper seqQueryWrapper = new QueryWrapper<>(); seqQueryWrapper.in("item_id", product_item_ids); - List shopProductItemSeqs=shopProductItemSeqService.list(seqQueryWrapper); - List shopProductItemSeqIds=shopProductItemSeqs.stream().map(ShopProductItemSeq::getProduct_item_seq_id).collect(Collectors.toList()); - if(CollectionUtil.isNotEmpty(shopProductItemSeqIds)){ + List shopProductItemSeqs = shopProductItemSeqService.list(seqQueryWrapper); + List shopProductItemSeqIds = shopProductItemSeqs.stream().map(ShopProductItemSeq::getProduct_item_seq_id).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(shopProductItemSeqIds)) { shopProductItemSeqService.removeBatchByIds(shopProductItemSeqIds); } } QueryWrapper itemQueryWrapper = new QueryWrapper<>(); itemQueryWrapper.in("product_id", longProductList); - List items= shopStoreActivityItemService.list(itemQueryWrapper); - List itemIds=items.stream().map(ShopStoreActivityItem::getActivity_item_id).collect(Collectors.toList()); - if(CollectionUtil.isNotEmpty(itemIds)){ + List items = shopStoreActivityItemService.list(itemQueryWrapper); + List itemIds = items.stream().map(ShopStoreActivityItem::getActivity_item_id).collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(itemIds)) { shopStoreActivityItemService.removeBatchByIds(itemIds); } if (!removeBatchByIds(longProductList)) { diff --git a/pom.xml b/pom.xml index 2c4ed507..d77de4f3 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,7 @@ UTF-8 true - + 1.2.2 1.8 Hoxton.SR5 @@ -76,12 +76,12 @@ spring-boot-starter-test test - - org.springframework.boot - spring-boot-devtools - runtime - true - + + + + + + cn.hutool hutool-all @@ -296,7 +296,10 @@ + + + local @@ -323,7 +326,7 @@ web_dev Abc654321$^ com.mysql.cj.jdbc.Driver - + @@ -334,7 +337,7 @@ 15 6379 Gpff654321 - + @@ -462,7 +465,7 @@ prod - https://42.194.196.179:2275 + https://159.75.249.163:2275 /Users/panjunjie/code/docker_registry_ca_prod 172.16.0.11:8848 @@ -513,7 +516,11 @@ + + + + org.springframework.boot @@ -545,7 +552,7 @@ java:8 - ["java", "-jar", "-Xms128m", "-Xmx512m", "-XX:PermSize=64M", "-XX:MaxPermSize=512M", "-Dspring.profiles.active=${spring.profile}", "-Duser.timezone=Asia/Shanghai", "/${project.build.finalName}.jar"] + ["java", "-jar", "-Xms256m", "-Xmx512m", "-XX:PermSize=64M", "-XX:MaxPermSize=512M", "-Dspring.profiles.active=${spring.profile}", "-Duser.timezone=Asia/Shanghai", "/${project.build.finalName}.jar"] ${docker.ca}