|
|
|
@ -4,8 +4,14 @@ import com.alibaba.fastjson.JSON;
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
|
import com.doudian.open.api.material_batchUploadImageSync.MaterialBatchUploadImageSyncRequest;
|
|
|
|
|
import com.doudian.open.api.material_batchUploadImageSync.MaterialBatchUploadImageSyncResponse;
|
|
|
|
|
import com.doudian.open.api.material_batchUploadImageSync.data.SuccessMapItem;
|
|
|
|
|
import com.doudian.open.api.material_batchUploadImageSync.param.MaterialBatchUploadImageSyncParam;
|
|
|
|
|
import com.doudian.open.api.material_batchUploadImageSync.param.MaterialsItem;
|
|
|
|
|
import com.doudian.open.api.material_getFolderInfo.MaterialGetFolderInfoRequest;
|
|
|
|
|
import com.doudian.open.api.material_getFolderInfo.MaterialGetFolderInfoResponse;
|
|
|
|
|
import com.doudian.open.api.material_getFolderInfo.data.ChildFolderItem;
|
|
|
|
|
import com.doudian.open.api.material_getFolderInfo.data.MaterialGetFolderInfoData;
|
|
|
|
|
import com.doudian.open.api.material_getFolderInfo.param.MaterialGetFolderInfoParam;
|
|
|
|
|
import com.doudian.open.core.AccessToken;
|
|
|
|
|
import com.ms.api.biz.MoveService;
|
|
|
|
|
import com.ms.api.bo.CategoryBO;
|
|
|
|
@ -263,7 +269,7 @@ public class ProcessProductPublishTaskService extends TaskBaseService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Ret uploadMoveProductImg(long shopId, JSONObject productDetailBase, String folderId, AccessToken accessToken) {
|
|
|
|
|
List<String> imgUrls = getMovePublishAllImgs(productDetailBase);
|
|
|
|
|
List<String> imgUrls = moveService.getMovePublishAllImgs(productDetailBase);
|
|
|
|
|
log.info("getMovePublishAllImgs : " + imgUrls);
|
|
|
|
|
imgUrls = uploadImgsFilterExist(shopId, imgUrls);
|
|
|
|
|
log.info("uploadImgsFilterExist : " + imgUrls);
|
|
|
|
@ -329,53 +335,38 @@ public class ProcessProductPublishTaskService extends TaskBaseService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private String realGetUploadImgFolderId(long shopId, AccessToken accessToken, boolean forceApi) {
|
|
|
|
|
// String key = String.format("shop_move_upload_img_folder_id_%s", shopId);
|
|
|
|
|
// if (forceApi) {
|
|
|
|
|
// redisService.delete(key);
|
|
|
|
|
// }
|
|
|
|
|
// String folderId = redisService.get(key);
|
|
|
|
|
// if (StringUtils.isNotBlank(folderId)) {
|
|
|
|
|
// return folderId;
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// JSONObject filter = new JSONObject();
|
|
|
|
|
// filter.put("folderId", 0);
|
|
|
|
|
// filter.put("pageNum", 1);
|
|
|
|
|
// filter.put("pageSize", 20);
|
|
|
|
|
// Ret ret = getMaterialFolderInfoFromDd(filter, accessToken);
|
|
|
|
|
// folder = (ret.getData().get("data")).getfolder_info().getchild_folder();
|
|
|
|
|
// for (childFolder : folder) {
|
|
|
|
|
// if ($childFolder['folder_name'] == MaterialConst::getDefaultFolderName()) {
|
|
|
|
|
// $folderId = $childFolder['folder_id'];
|
|
|
|
|
// break;
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// if (StringUtils.isNotBlank(folderId)) {
|
|
|
|
|
// redisService.set(key, folderId, 3600 * 24);
|
|
|
|
|
// return folderId;
|
|
|
|
|
// }
|
|
|
|
|
String key = String.format("shop_move_upload_img_folder_id_%s", shopId);
|
|
|
|
|
if (forceApi) {
|
|
|
|
|
redisService.delete(key);
|
|
|
|
|
}
|
|
|
|
|
String folderId = redisService.get(key);
|
|
|
|
|
if (StringUtils.isNotBlank(folderId)) {
|
|
|
|
|
return folderId;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 并发
|
|
|
|
|
// $folderId = $this->redis->get(RedisKeyConst::getShopMoveUploadImgFolderId($shopId));
|
|
|
|
|
// if ($log) {
|
|
|
|
|
// $log->info('getUploadImgFolderId from redis2 ret :'. print_r($folderId, true));
|
|
|
|
|
// }
|
|
|
|
|
// if ($folderId) {
|
|
|
|
|
// return $folderId;
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// $filter = [
|
|
|
|
|
// 'name' => MaterialConst::getDefaultFolderName(),
|
|
|
|
|
// 'parentId' => 0,
|
|
|
|
|
// ];
|
|
|
|
|
// $ret = $this->createFolderMaterialToDd($filter, $accessToken);
|
|
|
|
|
// if ($log) {
|
|
|
|
|
// $log->info('createFolderMaterialToDd ret :'. print_r($ret, true));
|
|
|
|
|
// }
|
|
|
|
|
// $this->redis->set(RedisKeyConst::getShopMoveUploadImgFolderId($shopId), $ret['data']['folder_id'], 3600 * 24);
|
|
|
|
|
// return $ret['data']['folder_id'];
|
|
|
|
|
return null;
|
|
|
|
|
JSONObject filter = new JSONObject();
|
|
|
|
|
filter.put("folderId", "0");
|
|
|
|
|
filter.put("pageNum", 1);
|
|
|
|
|
filter.put("pageSize", 20);
|
|
|
|
|
Ret ret = getMaterialFolderInfoFromDd(filter, accessToken);
|
|
|
|
|
if(CommonTool.isFailRet(ret)){
|
|
|
|
|
E.throwMSException("文件夹信息获取失败");
|
|
|
|
|
}
|
|
|
|
|
MaterialGetFolderInfoData materialGetFolderInfoParam = (MaterialGetFolderInfoData)ret.getData().get("data");
|
|
|
|
|
List<ChildFolderItem> folder = materialGetFolderInfoParam.getFolderInfo().getChildFolder();
|
|
|
|
|
for (ChildFolderItem childFolderItem : folder) {
|
|
|
|
|
if (childFolderItem.getFolderName().equals(MaterialConst.moveDefaultFolderName)) {
|
|
|
|
|
folderId = childFolderItem.getFolderId();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(folderId)) {
|
|
|
|
|
redisService.set(key, folderId, 3600 * 24);
|
|
|
|
|
return folderId;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return "0";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Ret getMaterialFolderInfoFromDd(JSONObject filter, AccessToken accessToken) {
|
|
|
|
@ -383,21 +374,18 @@ public class ProcessProductPublishTaskService extends TaskBaseService {
|
|
|
|
|
int pageSize = (int) filter.getOrDefault("pageSize", 50);
|
|
|
|
|
String folderId = (String) filter.getOrDefault("folderId", MaterialConst.moveDefaultFolderName);
|
|
|
|
|
|
|
|
|
|
MaterialGetFolderInfoRequest request = new MaterialGetFolderInfoRequest();
|
|
|
|
|
MaterialGetFolderInfoParam param = request.getParam();
|
|
|
|
|
param.setFolderId(folderId);
|
|
|
|
|
param.setPageNum(pageName);
|
|
|
|
|
param.setPageSize(pageSize);
|
|
|
|
|
MaterialGetFolderInfoResponse response = request.execute(accessToken);
|
|
|
|
|
Ret checkRet = CommonTool.checkDdApiRetStatus(response);
|
|
|
|
|
if (CommonTool.isFailRet(checkRet)) {
|
|
|
|
|
return checkRet;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// MaterialGetFolderInfoRequest request = new MaterialGetFolderInfoRequest();
|
|
|
|
|
// MaterialGetFolderInfoParam param = request.getParam();
|
|
|
|
|
// param.setFolderId(folderId);
|
|
|
|
|
// param.setPageNum(pageName);
|
|
|
|
|
// param.setPageSize(pageSize);
|
|
|
|
|
// MaterialGetFolderInfoResponse response = request.execute(accessToken);
|
|
|
|
|
//
|
|
|
|
|
// Ret checkRet = CommonTool.checkDdApiRetStatus(response);
|
|
|
|
|
// if (CommonTool.isFailRet(checkRet)) {
|
|
|
|
|
// return checkRet;
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// return CommonTool.successResult("data", response.getData());
|
|
|
|
|
return null;
|
|
|
|
|
return CommonTool.successResult("data", response.getData());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Ret realUploadMoveProductImgToDd(long shopId, List<String> imgUrls, String folderId, String distinct, AccessToken accessToken) {
|
|
|
|
@ -419,32 +407,26 @@ public class ProcessProductPublishTaskService extends TaskBaseService {
|
|
|
|
|
param.setMaterials(materials);
|
|
|
|
|
MaterialBatchUploadImageSyncResponse response = request.execute(accessToken);
|
|
|
|
|
Ret checkRet = CommonTool.checkDdApiRetStatus(response);
|
|
|
|
|
// if (CommonTool.isFailRet(checkRet)) {
|
|
|
|
|
// return checkRet;
|
|
|
|
|
// }
|
|
|
|
|
//TODO
|
|
|
|
|
// Map<String, SuccessMapItem> successMap = response.getData().getSuccessMap();
|
|
|
|
|
if (CommonTool.isFailRet(checkRet)) {
|
|
|
|
|
return checkRet;
|
|
|
|
|
}
|
|
|
|
|
Map<String, SuccessMapItem> successMap = response.getData().getSuccessMap();
|
|
|
|
|
StrStrMap materialIdAndOriginUrlMap = new StrStrMap();
|
|
|
|
|
List<String> materialIds = new ArrayList<>();
|
|
|
|
|
// successMap.forEach((k, v) -> {
|
|
|
|
|
// materialIdAndOriginUrlMap.put(v.getMaterialId(), v.getOriginUrl());
|
|
|
|
|
// materialIds.add(v.getMaterialId());
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
materialIds = materials.stream().map(MaterialsItem::getRequestId).collect(Collectors.toList());
|
|
|
|
|
materials.forEach(materialsItem -> materialIdAndOriginUrlMap.put(materialsItem.getRequestId(), materialsItem.getUrl()));
|
|
|
|
|
|
|
|
|
|
successMap.forEach((k, v) -> {
|
|
|
|
|
materialIdAndOriginUrlMap.put(v.getMaterialId(), v.getOriginUrl());
|
|
|
|
|
materialIds.add(v.getMaterialId());
|
|
|
|
|
});
|
|
|
|
|
Ret saveRet = saveMaterialAuditStatusBuffer(shopId, materialIds, materialIdAndOriginUrlMap);
|
|
|
|
|
if (CommonTool.isFailRet(saveRet)) {
|
|
|
|
|
return saveRet;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Ret ret = CommonTool.successResult();
|
|
|
|
|
// StrObjMap mData = new StrObjMap();
|
|
|
|
|
// mData.put("data", saveRet.getData());
|
|
|
|
|
// mData.put("logId", saveRet.getData().get("log_id"));
|
|
|
|
|
// ret.setData(mData);
|
|
|
|
|
StrObjMap mData = new StrObjMap();
|
|
|
|
|
//mData.put("data", saveRet.getData());
|
|
|
|
|
//mData.put("logId", saveRet.getData().get("log_id"));
|
|
|
|
|
ret.setData(mData);
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -494,36 +476,6 @@ public class ProcessProductPublishTaskService extends TaskBaseService {
|
|
|
|
|
return imgUrls;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<String> getMovePublishAllImgs(JSONObject productDetailBase) {
|
|
|
|
|
List<String> imgUrls = new ArrayList<>();
|
|
|
|
|
imgUrls.addAll(Arrays.asList(((String) productDetailBase.getOrDefault("mainImgUrls", "")).split("\\|")));
|
|
|
|
|
imgUrls.addAll(Arrays.asList(((String) productDetailBase.getOrDefault("noteImgUrls", "")).split("\\|")));
|
|
|
|
|
imgUrls.addAll(Arrays.asList(((String) productDetailBase.getOrDefault("specPic", "")).split(",")));
|
|
|
|
|
|
|
|
|
|
if (productDetailBase.get("whiteBgImgUrl") != null && !productDetailBase.get("whiteBgImgUrl").equals("")) {
|
|
|
|
|
imgUrls.add((String) productDetailBase.get("whiteBgImgUrl"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (productDetailBase.get("longPicUrl") != null && !productDetailBase.get("longPicUrl").equals("")) {
|
|
|
|
|
imgUrls.add((String) productDetailBase.get("longPicUrl"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// TODO
|
|
|
|
|
List<Map<String, Object>> qualityList = (List<Map<String, Object>>) productDetailBase.getOrDefault("qualityList", new ArrayList<>());
|
|
|
|
|
for (Map<String, Object> quality : qualityList) {
|
|
|
|
|
List<Map<String, String>> qualityAttachments = (List<Map<String, String>>) quality.getOrDefault("quality_attachments", new ArrayList<>());
|
|
|
|
|
for (Map<String, String> temp : qualityAttachments) {
|
|
|
|
|
if (temp.get("url") != null) {
|
|
|
|
|
imgUrls.add(temp.get("url"));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 去重和过滤空串
|
|
|
|
|
Set<String> uniqueUrls = new HashSet<>(imgUrls);
|
|
|
|
|
return uniqueUrls.stream().filter(url -> url != null && !url.isEmpty()).collect(Collectors.toList());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Ret buildCreateProductV2Data(JSONObject mMoveBaseData, MoveProductPublishQueueBO queueMsg, AccessToken accessToken, MoveShopSettingBO condition) {
|
|
|
|
|
Ret getPostDataRet = getCompletePostData(mMoveBaseData, queueMsg, accessToken);
|
|
|
|
|
if (CommonTool.isFailRet(getPostDataRet)) {
|
|
|
|
@ -1609,21 +1561,7 @@ public class ProcessProductPublishTaskService extends TaskBaseService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Ret getSourceProductDataByType(MoveProductPublishQueueBO queueMsg) {
|
|
|
|
|
JSONObject sourceProductData = null;
|
|
|
|
|
//TODO 看下cnaliDsDetailId有没有影响
|
|
|
|
|
// String cnaliDsDetailId = queueMsg.getCnaliDsDetailId();
|
|
|
|
|
// if (!StringUtils.isBlank(cnaliDsDetailId)) {
|
|
|
|
|
//// $sourceProductDataRet = $this->dsClient->getSourceProductData($queueMsg['shop_id'], AppConst::getDsPlatform(), $cnaliDsDetailId);
|
|
|
|
|
//// if (CommonTool::isFailRet($sourceProductDataRet)) {
|
|
|
|
|
//// return $sourceProductDataRet;
|
|
|
|
|
//// }
|
|
|
|
|
//// $sourceProductData = $sourceProductDataRet['productInfo'];
|
|
|
|
|
// } else {
|
|
|
|
|
// sourceProductData = getSourceProductData(queueMsg);
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
sourceProductData = getSourceProductData(queueMsg);
|
|
|
|
|
|
|
|
|
|
JSONObject sourceProductData = getSourceProductData(queueMsg);
|
|
|
|
|
return CommonTool.successResult("sourceProductData", sourceProductData);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1687,7 +1625,7 @@ public class ProcessProductPublishTaskService extends TaskBaseService {
|
|
|
|
|
if (CommonTool.isSuccessRet(processRet)) {
|
|
|
|
|
JSONObject productDetailBase = (JSONObject) processRet.getData().get("productDetailBase");
|
|
|
|
|
// 要搬家的所有图片
|
|
|
|
|
List<String> imgUrls = getMovePublishAllImgs(productDetailBase);
|
|
|
|
|
List<String> imgUrls = moveService.getMovePublishAllImgs(productDetailBase);
|
|
|
|
|
|
|
|
|
|
// 图片素材相关
|
|
|
|
|
StrStrMap urlAndMaterialIdMap = getUrlAndMaterialIdMapBySourceUrl(shopId, imgUrls);
|
|
|
|
|