搬家完善

20230922-ljl-fixBug
qiushengjie 1 year ago
parent b9c29ba823
commit b094876952

@ -99,7 +99,7 @@
<artifactId>sdk-java</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${project.basedir}/../lib/doudian-sdk-java-1.1.0-20230904163615.jar</systemPath>
<systemPath>${project.basedir}/../lib/doudian-sdk-java-1.1.0-20230910152032.jar</systemPath>
</dependency>
</dependencies>

@ -33,23 +33,27 @@ public class TestRedisService extends SPIBaseService implements ExtensionService
public BaseResponse<String> handle(BaseRequest<ItemDTO> req) {
try{
initHandle(req);
ItemDTO itemDTO = req.getData();
if(itemDTO.getTitle().equals("initProcess")){
for (long i = 0; i < 30; i++) {
redisFIFOService.pop(RedisKeyConst.MOVE_PRODUCT_PUBLISH_QUEUE);
}
// for (long i = 0; i < 10; i++) {
// redisFIFOService.pop(RedisKeyConst.MOVE_PRODUCT_PUBLISH_QUEUE);
// }
// for (long i = 13; i < 20; i++) {
// MoveProductPublishQueue moveProductPublishQueue = moveProductPublishQueueService.selectByPrimaryKey(i);
// if(moveProductPublishQueue != null){
// redisFIFOService.push(RedisKeyConst.MOVE_PRODUCT_PUBLISH_QUEUE, String.valueOf(moveProductPublishQueue.getMoveCollectTaskDetailId()));
// }
// }
for (long i = 13; i < 30; i++) {
MoveProductPublishQueue moveProductPublishQueue = moveProductPublishQueueService.selectByPrimaryKey(i);
if(moveProductPublishQueue != null){
redisFIFOService.push(RedisKeyConst.MOVE_PRODUCT_PUBLISH_QUEUE, String.valueOf(moveProductPublishQueue.getMoveCollectTaskDetailId()));
}
}
}
//to pic
for (long i = 13; i < 20; i++) {
MoveProductPublishToPicQueue data = moveProductPublishToPicQueueService.selectByPrimaryKey(i);
if (data != null && data.getLocked() == 0) {
redisFIFOService.push(RedisKeyConst.MOVE_PRODUCT_PUBLISH_TO_PIC_QUEUE, String.valueOf(data.getMoveProductPublishToPicQueueId()));
if(itemDTO.getTitle().equals("initToPic")){
for (long i = 13; i < 30; i++) {
MoveProductPublishToPicQueue data = moveProductPublishToPicQueueService.selectByPrimaryKey(i);
if (data != null && data.getLocked() == 0) {
redisFIFOService.push(RedisKeyConst.MOVE_PRODUCT_PUBLISH_TO_PIC_QUEUE, String.valueOf(data.getMoveProductPublishToPicQueueId()));
}
}
}

@ -1,6 +1,9 @@
package com.ms.api;
import com.alibaba.fastjson.JSON;
import com.doudian.open.api.open_getAuthInfo.OpenGetAuthInfoRequest;
import com.doudian.open.api.open_getAuthInfo.OpenGetAuthInfoResponse;
import com.doudian.open.api.open_getAuthInfo.param.OpenGetAuthInfoParam;
import com.jinritemai.cloud.base.api.BaseRequest;
import com.jinritemai.cloud.base.api.BaseResponse;
import com.jinritemai.cloud.base.api.ExtensionService;
@ -30,10 +33,16 @@ public class TestSpiService extends SPIBaseService implements ExtensionServiceHa
public BaseResponse<String> handle(BaseRequest<ItemDTO> req) {
try{
initHandle(req);
Ret ret = ImageTool.getImageDataFromUrl("https://cbu01.alicdn.com/img/ibank/O1CN01ZreKXT29btoEcxLsC_!!2213203708087-0-cib.jpg");
System.out.println(JSON.toJSONString(ret));
String result = JSON.toJSONString(ret);
ItemDTO itemDTO = req.getData();
String result = "";
if(itemDTO.getTitle().equals("authInfo")){
OpenGetAuthInfoRequest request = new OpenGetAuthInfoRequest();
OpenGetAuthInfoParam param = request.getParam();
param.setAuthId(shopId + "");
OpenGetAuthInfoResponse response = request.execute();
result = JSON.toJSONString(response);
System.out.println();
}
return R.ok(result);
}catch (Throwable e){

@ -10,7 +10,8 @@ import com.ms.api.tool.CommonTool;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@Component
@ -311,4 +312,34 @@ public class MoveService {
return sizeTemplateId;
}
public 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());
}
}

@ -11,6 +11,11 @@ public class AppConst {
public static final String TEST_SHOP_ID="4463798";
public static final String TEST_APP_ID="7264840234423027259";
public static final int descriptionMaxPicCount = 50; //商品描述最大图片数
public static final int descriptionMaxLength = 10000; //商品描述最大字符长度
public static boolean isSupportDs() {
return true;
}

@ -1,5 +1,10 @@
package com.ms.api.task;
import com.doudian.open.api.material_queryMaterialDetail.MaterialQueryMaterialDetailRequest;
import com.doudian.open.api.material_queryMaterialDetail.MaterialQueryMaterialDetailResponse;
import com.doudian.open.api.material_queryMaterialDetail.data.MaterialInfo;
import com.doudian.open.api.material_queryMaterialDetail.data.MaterialQueryMaterialDetailData;
import com.doudian.open.api.material_queryMaterialDetail.param.MaterialQueryMaterialDetailParam;
import com.doudian.open.core.AccessToken;
import com.ms.api.common.E;
import com.ms.api.common.Ret;
@ -157,9 +162,9 @@ public class MoveMaterialAuditProcessTaskService extends TaskBaseService {
ret.setQueueMsg(queueMsg);
return ret;
}
StrObjMap materialInfo = (StrObjMap) ret.getData().get("material_info"); // 实际是这个结构 ['data']['material_info'];
String auditStatus = (String) materialInfo.get("audit_status");
MaterialQueryMaterialDetailData retData = (MaterialQueryMaterialDetailData) ret.getData().get("data");
MaterialInfo materialInfo = retData.getMaterialInfo();
int auditStatus = materialInfo.getAuditStatus();
log.info("auditStatus :" + auditStatus);
if (Arrays.asList(MaterialConst.materialAuditStatusWait, MaterialConst.materialAuditStatusProcess).contains(auditStatus)) {
Ret mRet = CommonTool.failResult();
@ -168,9 +173,9 @@ public class MoveMaterialAuditProcessTaskService extends TaskBaseService {
mRet.setQueueMsg(queueMsg);
return mRet;
}
String status = (auditStatus.equals(MaterialConst.materialAuditStatusSuccess)) ? StatusConst.success : StatusConst.fail;
String byteUrl = (String) materialInfo.get("byte_url");
String auditRejectDesc = (String) materialInfo.get("audit_reject_desc");
String status = (auditStatus == MaterialConst.materialAuditStatusSuccess) ? StatusConst.success : StatusConst.fail;
String byteUrl = materialInfo.getByteUrl();
String auditRejectDesc = materialInfo.getAuditRejectDesc();
materialBizAuditStatusLog.setStatus(status);
materialBizAuditStatusLog.setByteUrl(byteUrl);
materialBizAuditStatusLog.setFailReason(ret.getReason());
@ -199,17 +204,16 @@ public class MoveMaterialAuditProcessTaskService extends TaskBaseService {
private Ret getMaterialQueryMaterialDetailFromDd(String materialId, AccessToken accessToken) {
// 请求抖店接口
// MaterialQueryMaterialDetailRequest request = new MaterialQueryMaterialDetailRequest();
// MaterialQueryMaterialDetailParam param = request.getParam();
// param.setMaterialId(materialId);
// MaterialQueryMaterialDetailResponse response = request.execute(accessToken);
// Ret checkRet = CommonTool.checkDdApiRetStatus(response);
// if (CommonTool.isFailRet(checkRet)) {
// return checkRet;
// }
MaterialQueryMaterialDetailRequest request = new MaterialQueryMaterialDetailRequest();
MaterialQueryMaterialDetailParam param = request.getParam();
param.setMaterialId(materialId);
MaterialQueryMaterialDetailResponse response = request.execute(accessToken);
Ret checkRet = CommonTool.checkDdApiRetStatus(response);
if (CommonTool.isFailRet(checkRet)) {
return checkRet;
}
// return CommonTool.successResult("data", checkRet.getData().get("data"));
return CommonTool.failResult();
return CommonTool.successResult("data", response.getData());
}
/**

@ -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);

Loading…
Cancel
Save