活动同步新增活动iten

This commit is contained in:
liyj 2025-07-08 18:09:05 +08:00
parent e0bda00d71
commit e0430f3624
9 changed files with 246 additions and 152 deletions

View File

@ -1,6 +1,7 @@
package com.suisung.mall.common.modules.store; package com.suisung.mall.common.modules.store;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
@ -81,5 +82,6 @@ public class ShopStoreActivityItem implements Serializable {
@ApiModelProperty(value = "积分商品已售数量") @ApiModelProperty(value = "积分商品已售数量")
private Integer activity_points_product_sale_num; private Integer activity_points_product_sale_num;
@TableField(exist = false)
private String product_group;
} }

View File

@ -6223,7 +6223,7 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl<ShopProductBaseM
List<ShopProductItem> shopProductItems= shopProductItemService.list(queryWrapper); List<ShopProductItem> shopProductItems= shopProductItemService.list(queryWrapper);
Map<Long,Integer> countMap=shopProductItems.stream().collect(Collectors.toMap(ShopProductItem::getProduct_id,ShopProductItem::getItem_quantity)); Map<Long,Integer> countMap=shopProductItems.stream().collect(Collectors.toMap(ShopProductItem::getProduct_id,ShopProductItem::getItem_quantity));
items.forEach(shopProductIndex -> { items.forEach(shopProductIndex -> {
shopProductIndex.put("item_quantity",MapUtil.getLong(countMap,shopProductIndex.get("product_id"))); shopProductIndex.put("itemQuantity",MapUtil.getLong(countMap,shopProductIndex.get("product_id")));
}); });
return items; return items;
} }

View File

@ -2251,15 +2251,21 @@ public class ShopProductItemServiceImpl extends BaseServiceImpl<ShopProductItemM
* 一对多如product_id:1002,item_number:120_121;数据格式为item_id,item_id item_unit_price,item_unit_price * 一对多如product_id:1002,item_number:120_121;数据格式为item_id,item_id item_unit_price,item_unit_price
* 最终组合item_id,item_id_item_unit_price,item_unit_price * 最终组合item_id,item_id_item_unit_price,item_unit_price
*/ */
queryWrapper.select("product_id","GROUP_CONCAT(item_id SEPARATOR ',') AS mergedItemId","GROUP_CONCAT(item_unit_price SEPARATOR ',') AS mergedUnitPrices"); queryWrapper.select("product_id","GROUP_CONCAT(item_id SEPARATOR ',') AS mergedItemId","GROUP_CONCAT(item_unit_price SEPARATOR ',') AS mergedUnitPrices,category_id");
productNumbers.forEach(productNumber -> { productNumbers.forEach(productNumber -> {
queryWrapper.or(q->q.eq("store_id",store_id).eq("item_src_id",productNumber)); queryWrapper.or(q->q.eq("store_id",store_id).eq("item_src_id",productNumber));
}); });
queryWrapper.eq("store_id",store_id); queryWrapper.eq("store_id",store_id);
queryWrapper.groupBy("product_id"); queryWrapper.groupBy("product_id");
List<ShopProductItem> shopProductItems= this.list(queryWrapper); List<ShopProductItem> shopProductItems= this.list(queryWrapper);
Map map=shopProductItems.stream().collect(Collectors.toMap(ShopProductItem::getProduct_id,shopProductItem->shopProductItem.getMergedItemId() // Map map=shopProductItems.stream().collect(Collectors.toMap(ShopProductItem::getProduct_id,shopProductItem->shopProductItem.getMergedItemId()
+"_"+shopProductItem.getMergedUnitPrices())); // +"_"+shopProductItem.getMergedUnitPrices()));
Map<String,String> map=new HashMap();
shopProductItems.forEach(item -> {
map.put(String.valueOf(item.getProduct_id()),item.getMergedItemId()+"_"+item.getMergedUnitPrices());
map.put(item.getProduct_id()+":category_id",String.valueOf(item.getCategory_id()));
});
return map; return map;
} }

View File

@ -20,4 +20,5 @@ public interface ShopStoreActivityItemService extends IBaseService<ShopStoreActi
List<Map> getNormalItem(List<Long> item_ids); List<Map> getNormalItem(List<Long> item_ids);
Map<String,Long> getExistingActvieShopItem(List<String> activityIds,Integer storeId);
} }

View File

@ -196,4 +196,21 @@ public class ShopStoreActivityItemServiceImpl extends BaseServiceImpl<ShopStoreA
return saveOrUpdate(activityItem); return saveOrUpdate(activityItem);
} }
@Override
public Map<String, Long> getExistingActvieShopItem( List<String> activityIds,Integer storeId) {
QueryWrapper<ShopStoreActivityItem> queryWrapper = new QueryWrapper<>();
queryWrapper.select("CONCAT_WS('-', activity_id, product_id,item_id) AS product_group,activity_item_id");
activityIds.forEach(activityId -> {
queryWrapper.or(q->q.eq("activity_id", activityId).eq("store_id", storeId));
});
Map<String, Long> result = new HashMap<>();
List<ShopStoreActivityItem> shopStoreActivityItems=list(queryWrapper);
shopStoreActivityItems.forEach(shopStoreActivityItem -> {
result.put(shopStoreActivityItem.getProduct_group(),shopStoreActivityItem.getActivity_item_id());
});
return result;
}
} }

View File

@ -45,4 +45,7 @@ public class ActiveModel implements Serializable {
@ApiModelProperty(value = "活动id") @ApiModelProperty(value = "活动id")
private String flowNo; private String flowNo;
@ApiModelProperty(value = "购买下限")
private BigDecimal activity_item_min_quantity;
} }

View File

@ -44,4 +44,7 @@ public class ActiveShopInfo {
@ApiModelProperty(value = "活动id") @ApiModelProperty(value = "活动id")
private String flowNo; private String flowNo;
@ApiModelProperty(value = "购买下限")
private BigDecimal activityItemMinQuantity;
} }

View File

@ -978,9 +978,6 @@ public abstract class SyncBaseThirdSxAbstract{
.map(object->{ .map(object->{
final JSONObject jsonObj= (JSONObject) object; final JSONObject jsonObj= (JSONObject) object;
ShopStoreActivityBase shopStoreActivityBase=new ShopStoreActivityBase(); ShopStoreActivityBase shopStoreActivityBase=new ShopStoreActivityBase();
shopStoreActivityBase.setActivity_name(jsonObj.getStr("activityName"));
shopStoreActivityBase.setActivity_state(jsonObj.getInt("activityState"));
shopStoreActivityBase.setActivity_starttime(jsonObj.getDate("activityStarttime"));
shopStoreActivityBase.setFlow_no(jsonObj.getStr("flowNo")); shopStoreActivityBase.setFlow_no(jsonObj.getStr("flowNo"));
return shopStoreActivityBase; return shopStoreActivityBase;
}) })
@ -992,7 +989,8 @@ public abstract class SyncBaseThirdSxAbstract{
Map<String,String> resultMap=new HashMap<>(); Map<String,String> resultMap=new HashMap<>();
existing.forEach(shopStoreActivityBase -> { existing.forEach(shopStoreActivityBase -> {
resultMap.put(shopStoreActivityBase.getActivity_name()+"_"+shopStoreActivityBase.getActivity_starttime().getTime()+"_"+shopStoreActivityBase.getActivity_state()+"_"+shopStoreActivityBase.getFlow_no(),shopStoreActivityBase.getActivity_id()+"__"+(StringUtils.isEmpty(shopStoreActivityBase.getActivity_rule())?"0":shopStoreActivityBase.getActivity_rule())); resultMap.put(shopStoreActivityBase.getFlow_no(),
shopStoreActivityBase.getActivity_id()+"__"+(StringUtils.isEmpty(shopStoreActivityBase.getActivity_rule())?"0":shopStoreActivityBase.getActivity_rule()));
}); });
return resultMap; return resultMap;
@ -1014,9 +1012,7 @@ public abstract class SyncBaseThirdSxAbstract{
QueryWrapper<ShopStoreActivityBase> query = new QueryWrapper<>(); QueryWrapper<ShopStoreActivityBase> query = new QueryWrapper<>();
query.select("activity_name", "activity_state","activity_starttime","activity_rule","activity_endtime","activity_id","flow_no"); query.select("activity_name", "activity_state","activity_starttime","activity_rule","activity_endtime","activity_id","flow_no");
shopStoreActivityBases.forEach(shopStoreActivityBase -> { shopStoreActivityBases.forEach(shopStoreActivityBase -> {
query.or(q -> q.eq("activity_name", shopStoreActivityBase.getActivity_name()).eq("activity_state",shopStoreActivityBase.getActivity_state()) query.or(q -> q.eq("flow_no",shopStoreActivityBase.getFlow_no())
.eq("activity_starttime",shopStoreActivityBase.getActivity_starttime())
.eq("flow_no",shopStoreActivityBase.getFlow_no())
.eq("store_id", storeId)); .eq("store_id", storeId));
}); });

View File

@ -37,6 +37,7 @@ import com.suisung.mall.common.modules.base.ShopBaseProductCategory;
import com.suisung.mall.common.modules.sixun.SxSyncGoods; import com.suisung.mall.common.modules.sixun.SxSyncGoods;
import com.suisung.mall.common.modules.sixun.SxSyncVip; import com.suisung.mall.common.modules.sixun.SxSyncVip;
import com.suisung.mall.common.modules.store.ShopStoreActivityBase; import com.suisung.mall.common.modules.store.ShopStoreActivityBase;
import com.suisung.mall.common.modules.store.ShopStoreActivityItem;
import com.suisung.mall.common.modules.sync.StoreDbConfig; import com.suisung.mall.common.modules.sync.StoreDbConfig;
import com.suisung.mall.common.modules.sync.SyncApp; import com.suisung.mall.common.modules.sync.SyncApp;
import com.suisung.mall.common.modules.sync.SyncConfig; import com.suisung.mall.common.modules.sync.SyncConfig;
@ -45,10 +46,10 @@ import com.suisung.mall.common.pojo.req.SyncThirdMemberReq;
import com.suisung.mall.common.pojo.res.ThirdApiRes; import com.suisung.mall.common.pojo.res.ThirdApiRes;
import com.suisung.mall.common.utils.I18nUtil; import com.suisung.mall.common.utils.I18nUtil;
import com.suisung.mall.common.utils.StringUtils; 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.ShopBaseProductBrandService;
import com.suisung.mall.shop.base.service.ShopBaseProductCategoryService; import com.suisung.mall.shop.base.service.ShopBaseProductCategoryService;
import com.suisung.mall.shop.base.service.ShopBaseProductSpecService; import com.suisung.mall.shop.base.service.ShopBaseProductSpecService;
import com.suisung.mall.shop.chain.controller.admin.ShopChainItemController;
import com.suisung.mall.shop.number.service.ShopNumberSeqService; import com.suisung.mall.shop.number.service.ShopNumberSeqService;
import com.suisung.mall.shop.page.service.OssService; import com.suisung.mall.shop.page.service.OssService;
import com.suisung.mall.shop.product.service.ShopProductBaseService; import com.suisung.mall.shop.product.service.ShopProductBaseService;
@ -64,6 +65,7 @@ import com.suisung.mall.shop.sixun.service.SxSyncVipService;
import com.suisung.mall.shop.sixun.utils.CommonUtil; import com.suisung.mall.shop.sixun.utils.CommonUtil;
import com.suisung.mall.shop.sixun.utils.FileUtils; import com.suisung.mall.shop.sixun.utils.FileUtils;
import com.suisung.mall.shop.store.service.ShopStoreActivityBaseService; import com.suisung.mall.shop.store.service.ShopStoreActivityBaseService;
import com.suisung.mall.shop.store.service.ShopStoreActivityItemService;
import com.suisung.mall.shop.sync.Utils.ActiveShopJsonUtils; import com.suisung.mall.shop.sync.Utils.ActiveShopJsonUtils;
import com.suisung.mall.shop.sync.Utils.BigDecimalFormatter; import com.suisung.mall.shop.sync.Utils.BigDecimalFormatter;
import com.suisung.mall.shop.sync.Utils.ThreadFileUtils; import com.suisung.mall.shop.sync.Utils.ThreadFileUtils;
@ -88,7 +90,6 @@ import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@ -173,6 +174,11 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
@Autowired @Autowired
private ShopBaseProductBrandService productBrandService; private ShopBaseProductBrandService productBrandService;
@Autowired
private ShopStoreActivityItemService shopStoreActivityItemService;
@Autowired
private ShopChainItemController item;
/** /**
* 批量保存商品的分类 * 批量保存商品的分类
* *
@ -927,7 +933,6 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
} }
@Override @Override
@Async
public void syncActives(String appKey, String sign, JSONArray activeJsonArray) { public void syncActives(String appKey, String sign, JSONArray activeJsonArray) {
if (StrUtil.isBlank(appKey) || StrUtil.isBlank(sign) || ObjectUtil.isEmpty(activeJsonArray)) { if (StrUtil.isBlank(appKey) || StrUtil.isBlank(sign) || ObjectUtil.isEmpty(activeJsonArray)) {
logger.error("缺少必要参数!"); logger.error("缺少必要参数!");
@ -946,11 +951,17 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
} }
String storeId = syncAppO.getStore_id(); String storeId = syncAppO.getStore_id();
//活动逻辑 //活动逻辑
new Thread(new Runnable() {
@Override
public void run() {
batchSaveShopStoreActivityBase(activeJsonArray, Integer.valueOf(storeId)); batchSaveShopStoreActivityBase(activeJsonArray, Integer.valueOf(storeId));
} }
}).start();
}
/** /**
* 批量新增或更新活动数据 * 批量新增或更新活动数据
*
* @param jsonArray * @param jsonArray
*/ */
private void batchSaveShopStoreActivityBase(JSONArray jsonArray, Integer storeId) { private void batchSaveShopStoreActivityBase(JSONArray jsonArray, Integer storeId) {
@ -988,10 +999,10 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
String flowNo = jsonObj.getStr("flowNo"); String flowNo = jsonObj.getStr("flowNo");
// Date activityReleasetime= jsonObj.getDate("activityReleasetime"); // Date activityReleasetime= jsonObj.getDate("activityReleasetime");
BigDecimal discount = jsonObj.getBigDecimal("discount"); BigDecimal discount = jsonObj.getBigDecimal("discount");
String key=activityName+"_"+activityStarttime.getTime()+"_"+activityState+"_"+flowNo;
shopStoreActivityBase.setActivity_state(activityState); shopStoreActivityBase.setActivity_state(activityState);
shopStoreActivityBase.setActivity_name(activityName); shopStoreActivityBase.setActivity_name(activityName);
shopStoreActivityBase.setActivity_type(1);//免费参与 shopStoreActivityBase.setActivity_type(1);//免费参与
shopStoreActivityBase.setActivity_title(activityName);
// shopStoreActivityBase.setActivity_releasetime(activityReleasetime); // shopStoreActivityBase.setActivity_releasetime(activityReleasetime);
shopStoreActivityBase.setStore_id(storeId); shopStoreActivityBase.setStore_id(storeId);
shopStoreActivityBase.setActivity_on_is_off(0); shopStoreActivityBase.setActivity_on_is_off(0);
@ -1002,8 +1013,8 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
shopStoreActivityBase.setSubsite_id(0); shopStoreActivityBase.setSubsite_id(0);
shopStoreActivityBase.setUser_id(userId); shopStoreActivityBase.setUser_id(userId);
shopStoreActivityBase.setFlow_no(flowNo); shopStoreActivityBase.setFlow_no(flowNo);
if(stringIntegerMap.containsKey(key)){//更新 if (stringIntegerMap.containsKey(flowNo)) {//更新
String keyVal= MapUtil.getStr(stringIntegerMap,key); String keyVal = MapUtil.getStr(stringIntegerMap, flowNo);
shopStoreActivityBase.setActivity_id(MapUtil.getInt(stringIntegerMap, keyVal.split("_")[0])); shopStoreActivityBase.setActivity_id(MapUtil.getInt(stringIntegerMap, keyVal.split("_")[0]));
synchronized (updateShopStoreActivityBaseList) { synchronized (updateShopStoreActivityBaseList) {
updateShopStoreActivityBaseList.add(shopStoreActivityBase); updateShopStoreActivityBaseList.add(shopStoreActivityBase);
@ -1013,7 +1024,6 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
addshopStoreActivityBaseList.add(shopStoreActivityBase); addshopStoreActivityBaseList.add(shopStoreActivityBase);
} }
} }
}); });
if (CollectionUtil.isNotEmpty(addshopStoreActivityBaseList)) { if (CollectionUtil.isNotEmpty(addshopStoreActivityBaseList)) {
shopStoreActivityBaseService.saveBatch(addshopStoreActivityBaseList, addshopStoreActivityBaseList.size()); shopStoreActivityBaseService.saveBatch(addshopStoreActivityBaseList, addshopStoreActivityBaseList.size());
@ -1029,12 +1039,12 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
* 将商品添加到活动 * 将商品添加到活动
* 1找出匹配的活动 * 1找出匹配的活动
* 2新增商品到活动列表 * 2新增商品到活动列表
*
* @param appKey * @param appKey
* @param sign * @param sign
* @param activeJsonArray * @param activeJsonArray
*/ */
@Override @Override
@Async
public void syncActiveShops(String appKey, String sign, JSONArray activeJsonArray) { public void syncActiveShops(String appKey, String sign, JSONArray activeJsonArray) {
if (StrUtil.isBlank(appKey) || StrUtil.isBlank(sign) || ObjectUtil.isEmpty(activeJsonArray)) { if (StrUtil.isBlank(appKey) || StrUtil.isBlank(sign) || ObjectUtil.isEmpty(activeJsonArray)) {
logger.error("缺少必要参数!"); logger.error("缺少必要参数!");
@ -1054,12 +1064,17 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
} }
String storeId = syncAppO.getStore_id(); String storeId = syncAppO.getStore_id();
//把商品添加到活动的逻辑 //把商品添加到活动的逻辑
new Thread(new Runnable() {
@Override
public void run() {
batchAddActiveShopBase(activeJsonArray, Integer.valueOf(storeId)); batchAddActiveShopBase(activeJsonArray, Integer.valueOf(storeId));
}
}).start();
} }
/** /**
* 批量新增或更新活动商品数据 * 批量新增或更新活动商品数据
*
* @param jsonArray * @param jsonArray
*/ */
private void batchAddActiveShopBase(JSONArray jsonArray, Integer storeId) { private void batchAddActiveShopBase(JSONArray jsonArray, Integer storeId) {
@ -1076,6 +1091,18 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
Map<String, Long> shopProduckKeyMap = shopProductBaseService.getProductBasicIdByStore(storeId, productNumbers);//获取货架号对应的商品id Map<String, Long> shopProduckKeyMap = shopProductBaseService.getProductBasicIdByStore(storeId, productNumbers);//获取货架号对应的商品id
Map<String, String> shopItemKeyMap = shopProductItemService.getProductItemIdByStore(storeId, productNumbers);//获取商品id对应的item的id Map<String, String> shopItemKeyMap = shopProductItemService.getProductItemIdByStore(storeId, productNumbers);//获取商品id对应的item的id
List<String> activityIds = new ArrayList<>();
if (!stringIntegerMap.isEmpty()) {
stringIntegerMap.forEach((k, v) -> {
String activityId = v.split("__")[0];
activityIds.add(activityId);
});
}
Map<String, Long> shopStoreActvityItems = shopStoreActivityItemService.getExistingActvieShopItem(activityIds, storeId);
//activity_id, product_id,item_id
List<ShopStoreActivityItem> addShopStoreActivityItems = new ArrayList<>();
List<ShopStoreActivityItem> updteShopStoreActivityItems = new ArrayList<>();
Map<String, String> rulesChe = new HashMap();//存储rule格式activeId:rules,如果不存在则从数据库取存在则从缓存取数据 Map<String, String> rulesChe = new HashMap();//存储rule格式activeId:rules,如果不存在则从数据库取存在则从缓存取数据
jsonArray.forEach(object -> { jsonArray.forEach(object -> {
final JSONObject jsonObj = (JSONObject) object; final JSONObject jsonObj = (JSONObject) object;
@ -1099,29 +1126,29 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
Date activityStarttime = jsonObj.getDate("activityStarttime"); Date activityStarttime = jsonObj.getDate("activityStarttime");
Integer activityState = jsonObj.getInt("activityState"); Integer activityState = jsonObj.getInt("activityState");
String flowNo = jsonObj.getStr("flowNo"); String flowNo = jsonObj.getStr("flowNo");
if (stringIntegerMap.containsKey(flowNo)) {//更新
String key=activityName+"_"+activityStarttime.getTime()+"_"+activityState+"_"+flowNo; String keyVal = MapUtil.getStr(stringIntegerMap, flowNo);
String activityId = keyVal.split("__")[0];
if(stringIntegerMap.containsKey(key)){//更新
String keyVal=MapUtil.getStr(stringIntegerMap,key);
String activityId=keyVal.split("_")[0];
String rules = ""; String rules = "";
if (null != rulesChe.get(activityId)) { if (null != rulesChe.get(activityId)) {
rules = rulesChe.get(activityId); rules = rulesChe.get(activityId);
} else { } else {
rules = keyVal.split("__")[1].equals("0") ? null : keyVal.split("_")[1]; rules = keyVal.split("__")[1].equals("0") ? null : keyVal.split("_")[1];
} }
String itemIds= shopItemKeyMap.get(productId); String itemIds = shopItemKeyMap.get(String.valueOf(productId));
// if(null!=itemIds){ // if(null!=itemIds){
// itemIds= (String) shopItemKeyMap.get(String.valueOf(productId)); // itemIds= (String) shopItemKeyMap.get(String.valueOf(productId));
// } // }
assert itemIds != null; assert itemIds != null;
BigDecimal oldPrice;
BigDecimal specPrice;
BigDecimal newDiscout = new BigDecimal(1);
if (activityTypeId == 1) {//限时秒杀 if (activityTypeId == 1) {//限时秒杀
ruleType = ActiveShopJsonUtils.SECKILL; ruleType = ActiveShopJsonUtils.SECKILL;
BigDecimal oldPrice=jsonObj.getBigDecimal("oldPrice"); oldPrice = jsonObj.getBigDecimal("oldPrice");
BigDecimal specPrice=jsonObj.getBigDecimal("specPrice"); specPrice = jsonObj.getBigDecimal("specPrice");
if (oldPrice.compareTo(BigDecimal.ZERO) > 0 && specPrice.compareTo(BigDecimal.ZERO) > 0) { if (oldPrice.compareTo(BigDecimal.ZERO) > 0 && specPrice.compareTo(BigDecimal.ZERO) > 0) {
BigDecimal newDiscout=specPrice.divide(oldPrice,4, RoundingMode.HALF_UP); newDiscout = specPrice.divide(oldPrice, 4, RoundingMode.HALF_UP);
newItems.addAll(getFulReduItemList(itemIds, ruleType, newDiscout));//获取满减规则的itemid newItems.addAll(getFulReduItemList(itemIds, ruleType, newDiscout));//获取满减规则的itemid
} }
} }
@ -1140,10 +1167,39 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
String newRules = ActiveShopJsonUtils.buildPromotionRule(ruleType, rules, newItems); String newRules = ActiveShopJsonUtils.buildPromotionRule(ruleType, rules, newItems);
rulesChe.put(activityId, newRules); rulesChe.put(activityId, newRules);
String[] itemIdsArray = itemIds.split("_")[0].split(",");
String category_id = shopItemKeyMap.get(productId + ":category_id");
String unitprices = itemIds.split("_")[1];
String[] priceArray = unitprices.split(",");
for (int i = 0; i < itemIdsArray.length; i++) {
ShopStoreActivityItem shopStoreActivityItem = new ShopStoreActivityItem();
shopStoreActivityItem.setActivity_id(Integer.valueOf(activityId));
shopStoreActivityItem.setActivity_type_id(activityTypeId);
shopStoreActivityItem.setActivity_item_state(activityState);
shopStoreActivityItem.setActivity_item_starttime(activityStarttime);
shopStoreActivityItem.setActivity_item_endtime(jsonObj.getDate("activityEndtime"));
shopStoreActivityItem.setProduct_id(productId);
shopStoreActivityItem.setItem_id(Long.valueOf(itemIdsArray[i]));
shopStoreActivityItem.setActivity_item_min_quantity(jsonObj.getBigDecimal("activityItemMinQuantity").intValue());
shopStoreActivityItem.setCategory_id(Integer.valueOf(category_id));
shopStoreActivityItem.setStore_id(storeId);
String activityItemKey = activityId + "-" + productId + "-" + itemIdsArray[i];
Long shopActivyItemId = shopStoreActvityItems.get(activityItemKey);
if (newDiscout.compareTo(BigDecimal.ZERO) < 1) {
continue;
}
BigDecimal price = new BigDecimal(priceArray[i]).multiply(newDiscout).setScale(2, RoundingMode.HALF_UP);
shopStoreActivityItem.setActivity_item_price(price);
if (ObjectUtil.isNotEmpty(shopActivyItemId)) {
shopStoreActivityItem.setActivity_item_id(shopActivyItemId);
updteShopStoreActivityItems.add(shopStoreActivityItem);
} else {
addShopStoreActivityItems.add(shopStoreActivityItem);
}
}
} }
}); });
if (!rulesChe.isEmpty()) { if (!rulesChe.isEmpty()) {
rulesChe.forEach((k, v) -> { rulesChe.forEach((k, v) -> {
if (StringUtils.isNotEmpty(v)) { if (StringUtils.isNotEmpty(v)) {
@ -1157,7 +1213,17 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
if (CollectionUtil.isNotEmpty(updateShopStoreActivityBaseList)) { if (CollectionUtil.isNotEmpty(updateShopStoreActivityBaseList)) {
shopStoreActivityBaseService.updateBatchById(updateShopStoreActivityBaseList); shopStoreActivityBaseService.updateBatchById(updateShopStoreActivityBaseList);
} }
if (CollectionUtil.isNotEmpty(addShopStoreActivityItems)) {
shopStoreActivityItemService.saveBatch(addShopStoreActivityItems, addShopStoreActivityItems.size());
}
if(CollectionUtil.isNotEmpty(updteShopStoreActivityItems)){
shopStoreActivityItemService.updateBatchById(updteShopStoreActivityItems,updteShopStoreActivityItems.size());
}
logger.info("同步活动商品数据结束:更新共{}条活动数据,商品数据为{}条",updateShopStoreActivityBaseList.size(),jsonArray.size()); logger.info("同步活动商品数据结束:更新共{}条活动数据,商品数据为{}条",updateShopStoreActivityBaseList.size(),jsonArray.size());
logger.info("同步活动商品数据结束:新增数据{}条,更新{}条活动数据,商品数据为{}条",addShopStoreActivityItems.size(),updteShopStoreActivityItems.size(),jsonArray.size());
} }
/** /**