{{wikiTitle}}
商品采集
目录:
一、功能概述
本模块提供一号通和99api商品采集服务。通过商品URL快速复制平台商品信息的功能,主要流程包括:
1.权限校验 → 2. URL参数校验 → 3. 第三方服务调用 → 4. 数据格式转换→ 5. 返回商品结构
1.一号通
1.接口定义:
@PreAuthorize("hasAuthority('admin:product:copy:product')")
@ApiOperation(value = "复制平台商品")
@RequestMapping(value = "/copy/product", method = RequestMethod.POST)
public CommonResult<Map<String, Object>> copyProduct(@RequestBody @Valid StoreCopyProductRequest request) {
return CommonResult.success(storeProductService.copyProduct(request.getUrl()));
}
2.服务层(StoreProductServiceImpl)
public MyRecord copyProduct(String url) {
// 调用第三方采集服务
JSONObject originData = onePassService.copyGoods(url);
// 数据格式转换
StoreProductRequest productRequest = ProductUtils.onePassCopyTransition(originData);
// 返回结构化数据
return new MyRecord().set("info", productRequest);
}
关键处理:
接口隔离:通过onePassService隔离第三方服务调用
适配器模式:ProductUtils实现数据格式转换
3. 第三方服务调用(OnePassServiceImpl)
public JSONObject copyGoods(String url) {
// 构建请求头
HashMap<String, String> header = onePassUtil.getCommonHeader(onePassUtil.getToken());
// 设置请求参数
MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
params.add("url", url);
// 发送POST请求
JSONObject response = onePassUtil.postFrom(
OnePassConstants.ONE_PASS_API_URL + OnePassConstants.ONE_PASS_API_COPY_GOODS_URI,
params,
header
);
// 提取有效数据
return response.getJSONObject("data");
}
2.99api
1.接口定义
@PreAuthorize("hasAuthority('admin:product:import:product')")
@ApiOperation(value = "导入99Api商品")
@RequestMapping(value = "/importProduct", method = RequestMethod.POST)
@ApiImplicitParams({
@ApiImplicitParam(name = "form", value = "导入平台1=淘宝,2=京东,3=苏宁,4=拼多多, 5=天猫", dataType = "int", required = true),
@ApiImplicitParam(name = "url", value = "URL", dataType = "String", required = true),
})
public CommonResult<StoreProductRequest> importProduct(
@RequestParam @Valid int form,
@RequestParam @Valid String url) throws IOException, JSONException {
StoreProductRequest productRequest = storeProductService.importProductFromUrl(url, form);
return CommonResult.success(productRequest);
}
2. 关键代码段
// 路由逻辑
public StoreProductRequest importProductFromUrl(String url, int tag) {
switch (tag) {
case 1: // 淘宝
return productUtils.getTaobaoProductInfo(url, tag);
case 2: // 京东
return productUtils.getJDProductInfo(url, tag);
// ...其他平台
default:
throw new CrmebException("不支持的平台类型");
}
}
// 数据转换示例(淘宝)
public StoreProductRequest getTaobaoProductInfo(String url, int tag) {
JSONObject tbJsonData = getApiResponse(url);
JSONObject item = tbJsonData.getJSONObject("item");
StoreProductRequest request = new StoreProductRequest();
request.setStoreName(item.getString("title"));
request.setSliderImage(parseImages(item)); // 多图处理
request.setAttr(parseSpecs(item)); // 规格解析
return request;
}




评论({{cateWiki.comment_num}})
{{commentWhere.order ? '评论从旧到新':'评论从新到旧'}}
{{cateWiki.page_view_num}}人看过该文档


评论(0)
{{commentWhere.order ? '评论从旧到新':'评论从新到旧'}}
165人看过该文档




{{item.user ? item.user.nickname : ''}} (自评)
{{item.content}}
{{item.create_time}} 删除




搜索结果
为您找到{{wikiCount}}条结果
{{item.page_view_num}}
{{item.like ? item.like.like_num : 0}}
{{item.comment ? item.comment.comment_num : 0}}
位置:{{path.name}} {{(i+1) == item.catalogue.path_data.length ? '':'/'}}


