思迅同步代码优化

This commit is contained in:
liyj 2025-05-21 15:58:06 +08:00
parent 3c680bdf13
commit f0cc3b4c08
7 changed files with 36 additions and 16 deletions

View File

@ -284,11 +284,11 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService
private void syncAllGoods(DataBaseInfo dataBaseInfo, CommentModel commentModel){ private void syncAllGoods(DataBaseInfo dataBaseInfo, CommentModel commentModel){
String where="where 1=1"; String where="where 1=1";
Integer total =0; Integer total =0;
String parentId=getAndCacheTree(dataBaseInfo,dataBaseInfo.getCategoryName());//加载缓存用的
if(DicEnum.SYNCTYPE_02.getCode().equals(dataBaseInfo.getSyncType())){ if(DicEnum.SYNCTYPE_02.getCode().equals(dataBaseInfo.getSyncType())){
if (StringUtils.isNotEmpty(dataBaseInfo.getCategoryName())) { if (StringUtils.isNotEmpty(dataBaseInfo.getCategoryName())) {
String parentId=getAndCacheTree(dataBaseInfo,dataBaseInfo.getCategoryName());
String childrens= commonCache.get(CommonCache.CACHE_CATEGROY+parentId);
//syncGoodsSearchModel.setItemClsno(childrens); //syncGoodsSearchModel.setItemClsno(childrens);
String childrens= commonCache.get(CommonCache.CACHE_CATEGROY+parentId);
where += " and b.item_clsno in ('" + childrens + "')"; where += " and b.item_clsno in ('" + childrens + "')";
} }
if(StringUtils.isNotEmpty(commentModel.getSyncTime())){ if(StringUtils.isNotEmpty(commentModel.getSyncTime())){
@ -336,7 +336,6 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService
folders.add(String.valueOf(i)); folders.add(String.valueOf(i));
syncCount+=sxSyncGoods.size(); syncCount+=sxSyncGoods.size();
} }
// folders.add(String.valueOf(2));
//folders.add(String.valueOf(4)); //folders.add(String.valueOf(4));
//folders.add(String.valueOf(5)); //folders.add(String.valueOf(5));
log.info("商品分类总共有{}条数据,同步完成{}条",total,syncCount); log.info("商品分类总共有{}条数据,同步完成{}条",total,syncCount);

View File

@ -149,4 +149,6 @@ public interface ShopBaseProductCategoryService extends IBaseService<ShopBasePro
*/ */
Map getCategoryListByStoreId(String storeId); Map getCategoryListByStoreId(String storeId);
void clearCategoryCache(String storeId);
} }

View File

@ -1252,10 +1252,18 @@ public class ShopBaseProductCategoryServiceImpl extends BaseServiceImpl<ShopBase
map=new HashMap(); map=new HashMap();
for (Map category_row : category_tmp_rows) { for (Map category_row : category_tmp_rows) {
map.put(category_row.get("category_name"),category_row.get("category_id")); map.put(category_row.get("category_name"),category_row.get("category_id"));
map.put(category_row.get("category_id"),category_row.get("type_id"));
} }
if (CollUtil.isNotEmpty(map)) redisService.set(cache_key, map, 60 * 60); if (CollUtil.isNotEmpty(map)) redisService.set(cache_key, map, 60 * 60);
} }
return map; return map;
} }
@Override
public void clearCategoryCache(String storeId) {
String cache_key = String.format("storeCategory:%s", storeId);
// 设置cache
redisService.del(cache_key);
}
} }

View File

@ -178,6 +178,9 @@ public class ShopNumberSeqServiceImpl extends BaseServiceImpl<ShopNumberSeqMappe
int count=0; int count=0;
for (int i = 0; i < shopNumberSeqList.size(); i++) { for (int i = 0; i < shopNumberSeqList.size(); i++) {
shopNumberSeqMapper.myUpdateSeq(shopNumberSeqList.get(i)); shopNumberSeqMapper.myUpdateSeq(shopNumberSeqList.get(i));
Long number = shopNumberSeqList.get(i).getNumber();
shopNumberSeqList.get(i).setNumber(number);
this.edit(shopNumberSeqList.get(i));
count++; count++;
} }
log.info("更新成功{}条数据",count); log.info("更新成功{}条数据",count);

View File

@ -107,12 +107,12 @@ public class SyncThirdDataController {
@RequestParam String appKey, @RequestParam String appKey,
@RequestParam String sign, @RequestParam String sign,
@RequestParam String syncType) { @RequestParam String syncType) {
new Thread(new Runnable() { // new Thread(new Runnable() {
@Override // @Override
public void run() { // public void run() {
syncThirdDataService.SyncReadSxFileData(appKey,sign,syncType,folders); syncThirdDataService.SyncReadSxFileData(appKey,sign,syncType,folders);
} // }
}).start(); // }).start();
return new ThirdApiRes().success("服务器已处理文件"); return new ThirdApiRes().success("服务器已处理文件");
} }

View File

@ -574,10 +574,11 @@ public abstract class SyncBaseThirdSxAbstract{
shopProductIndex.setCoupon_type_id(0);// product_assist_data // 辅助属性值列(DOT) shopProductIndex.setCoupon_type_id(0);// product_assist_data // 辅助属性值列(DOT)
shopProductIndex.setProduct_transport_id(String.valueOf(StateCode.DELIVERY_TYPE_SAME_CITY)); shopProductIndex.setProduct_transport_id(String.valueOf(StateCode.DELIVERY_TYPE_SAME_CITY));
ShopBaseProductCategory category_row = productCategoryService.get(categoryId); if(categoryId!=0){
if (ObjectUtil.isNotEmpty(category_row)) { Integer typeId = (Integer) categoryMap.get(categoryId);
Integer type_id = category_row.getType_id(); if (ObjectUtil.isNotEmpty(typeId)) {
shopProductIndex.setType_id(type_id); shopProductIndex.setType_id(typeId);
}
} }
// shop_product_data // shop_product_data
@ -668,7 +669,7 @@ public abstract class SyncBaseThirdSxAbstract{
QueryWrapper<ShopProductBase> baseWrapper=new QueryWrapper<>(); QueryWrapper<ShopProductBase> baseWrapper=new QueryWrapper<>();
baseWrapper.select("MAX(product_id) as product_id"); baseWrapper.select("MAX(product_id) as product_id");
ShopProductBase shopProductBase= shopProductBaseServiceImpl.getOne(baseWrapper); ShopProductBase shopProductBase= shopProductBaseServiceImpl.getOne(baseWrapper);
Long productId= shopProductBase.getProduct_id()+1; Long productId= shopProductBase.getProduct_id();
//QueryWrapper<ShopNumberSeq> baseSeWrapper=new QueryWrapper(); //QueryWrapper<ShopNumberSeq> baseSeWrapper=new QueryWrapper();
//baseSeWrapper.eq("prefix", "product_id"); //baseSeWrapper.eq("prefix", "product_id");
ShopNumberSeq shopNumberSeqBase= new ShopNumberSeq(); ShopNumberSeq shopNumberSeqBase= new ShopNumberSeq();
@ -679,7 +680,7 @@ public abstract class SyncBaseThirdSxAbstract{
QueryWrapper<ShopProductItem> itemQuery=new QueryWrapper<>(); QueryWrapper<ShopProductItem> itemQuery=new QueryWrapper<>();
itemQuery.select("MAX(item_id) as item_id"); itemQuery.select("MAX(item_id) as item_id");
ShopProductItem shopProductItem= shopProductItemServiceImpl.getOne(itemQuery); ShopProductItem shopProductItem= shopProductItemServiceImpl.getOne(itemQuery);
Long itemtId= shopProductItem.getItem_id()+1; Long itemtId= shopProductItem.getItem_id();
// QueryWrapper<ShopNumberSeq> itemWrapper=new QueryWrapper(); // QueryWrapper<ShopNumberSeq> itemWrapper=new QueryWrapper();
//itemWrapper.eq("prefix", "item_id"); //itemWrapper.eq("prefix", "item_id");
ShopNumberSeq shopNumberSeqItem= new ShopNumberSeq(); ShopNumberSeq shopNumberSeqItem= new ShopNumberSeq();

View File

@ -43,6 +43,7 @@ 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.core.web.service.RedisService;
import com.suisung.mall.shop.base.service.ShopBaseProductCategoryService;
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.sixun.dao.SxDataDao; import com.suisung.mall.shop.sixun.dao.SxDataDao;
@ -72,6 +73,7 @@ import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.File; import java.io.File;
@ -122,7 +124,8 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
private final static String CLIENTFILEPATH="sxclient/"; private final static String CLIENTFILEPATH="sxclient/";
@Autowired
private ShopBaseProductCategoryService shopBaseProductCategoryService;
/** /**
* 批量保存商品的分类 * 批量保存商品的分类
@ -452,6 +455,7 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
* @param folders * @param folders
*/ */
@Override @Override
@Async
public void SyncReadSxFileData(String appKey, String sign, String syncType, List<String> folders) { public void SyncReadSxFileData(String appKey, String sign, String syncType, List<String> folders) {
SyncApp syncApp = syncAppService.getOne(new LambdaQueryWrapper<SyncApp>() SyncApp syncApp = syncAppService.getOne(new LambdaQueryWrapper<SyncApp>()
.select(SyncApp::getApp_key, SyncApp::getApp_secret,SyncApp::getStore_id) .select(SyncApp::getApp_key, SyncApp::getApp_secret,SyncApp::getStore_id)
@ -473,6 +477,7 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
}); });
syncPrimaryKey(); syncPrimaryKey();
shopNumberSeqService.clearKey(); shopNumberSeqService.clearKey();
shopBaseProductCategoryService.clearCategoryCache(storeId);
ExecutorService executor = Executors.newFixedThreadPool(6); ExecutorService executor = Executors.newFixedThreadPool(6);
List<Future<?>> futures = new ArrayList<>(); List<Future<?>> futures = new ArrayList<>();
// 提交任务 // 提交任务
@ -488,7 +493,7 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
while (true){ while (true){
count++; count++;
String taskName=newFolders.get(taskId); String taskName=newFolders.get(taskId);
String fileName="good_"+taskId+".txt"; String fileName="good_"+(taskId+1)+".txt";
JSONArray jsonArray=new ThreadFileUtils().processFolder(taskName,newFolders.get(taskId)); JSONArray jsonArray=new ThreadFileUtils().processFolder(taskName,newFolders.get(taskId));
try { try {
baseSaveOrUpdateGoodsBatch(jsonArray,storeId); baseSaveOrUpdateGoodsBatch(jsonArray,storeId);
@ -497,6 +502,7 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
return "成功" + taskId; return "成功" + taskId;
}catch (Exception e){ }catch (Exception e){
if(count<2){ if(count<2){
//Thread.sleep(100);
continue; continue;
} }
fails.getAndIncrement(); fails.getAndIncrement();
@ -519,6 +525,7 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
//记录到数据库 //记录到数据库
syncPrimaryKey(); syncPrimaryKey();
shopNumberSeqService.clearKey(); shopNumberSeqService.clearKey();
shopBaseProductCategoryService.clearCategoryCache(storeId);
List<SyncFileLog> syncFileLogs=new ArrayList<>(); List<SyncFileLog> syncFileLogs=new ArrayList<>();
for (int i = 0; i < failFolders.size(); i++) { for (int i = 0; i < failFolders.size(); i++) {
String path=failFolders.get(i); String path=failFolders.get(i);