张伟杰
shopify上传图片文件流程优化
2025-06-25 上线发布计划
2025-07-02 上线发布计划
2025-07-09 上线发布计划
2025-07-21 ozon 广告管理新版接口调研分析
2025-07-23 上线计划
ozon & 美客多广告 工单调研
shopify 刊登流程优化
2025-07-30 上线计划
2025-08-06 上线发布计划
ebay 代码review
2025-08-13 上线发布计划
ebay 服务cpu 持续不减
2025-08-19 代码review
2025-08-20 上线计划
2025-08-27 上线计划
沃尔玛处理中
2025-09-03 上线计划
美客多up 模式刊登
2025-09-10 上线计划
2025-09-17 上线计划
2025-09-24 上线计划
2025-10-15 上线计划
2025-10-22 上线计划
2025-10-29 上线计划
2025-11-05 上线计划
2025-11-12 上线计划
美客多本地刷新es
ebay cpu 持续被拉高
2025-11-26 上线计划
2025-11-27 上线计划
tiktok 在线活动分站点拉取技术方案
2025-12-03 上线计划
2025-12-04 上线计划
2025-12-10 上线计划
2025-12-17 上线计划
2025-12-24 上线计划
target 平台商品刊登设计
美客多全球刊登支持up 模式调研
美客多全球up 模式刊登技术方案整理
2026-01-14 上线计划
2025-01-16 临时上线计划
2025-01-21 上线计划
2026-01-22 上线计划
2026-01-28 上线计划
2026-02-02 上线计划
2026-02-04 上线计划
2026-02-10 上线计划
2026-03-04 上线计划
2026-03-10 上线计划
2026-03-18 上线计划
2026-03-27 临时上线计划
2026-04-01 上线计划
2026-04-08 上线计划
2026-04-09 上线计划
2026-04-10 临时上线计划
本文档使用 MrDoc 发布
-
+
首页
tiktok 在线活动分站点拉取技术方案
## 背景 由于tiktok平台支持跨站点店铺运营,同一店铺(shopId)可关联多个国家/地区站点(如US、UK、DE、AU等)。tiktok平台接口支持按不同站点拉取特定活动商品数据,因此需要优化系统架构以支持: - **店多站点配置:一个店铺可配置多个tiktok站点** - **站点差异化拉取:根据不同站点特性拉取对应的活动商品** - **数据隔离存储:确保各站点商品数据独立存储和管理** ## 优化方案 同步tiktok 活动列表根据php 那边传递sites 集合 mdc-iapi-product 服务中添加sites 字段 mdc-tiktok-product 服务中消息入参添加sites 接收站点集合 mdc-open-api-product 服务中入参添加sites 接收广州的站点集合 1. **数据模型优化** ```sql ALTER TABLE `mabang_tiktokitem`.`db_tiktok_activity_discount1` ADD COLUMN `site` varchar(50) NULL COMMENT '店铺站点' AFTER `shop_id`; ALTER TABLE `mabang_tiktokitem`.`db_tiktok_activity_discount_item1` ADD COLUMN `site` varchar(50) NULL COMMENT '店铺站点' AFTER `shop_id`; ``` 2. **业务逻辑重构** ```java //入参调整为 List<String> sites,支持一个店铺下多站点场景 private void asyncShopActivity(String site, Long version) { //此处添加多站点集合循环拉取平台数据 for (String activityType : activityTypeList) { initActivityType = activityType; while (true) { // 调用平台接口 活动活动List TiktokActivityListResult tiktokActivityListResults = tiktokActivityService.queryActivityList(site, offset, initActivityStatus, initActivityType); // 最后一页 平台会返回错误,这里不作为错误处理 recover: unexpected server error if (tiktokActivityListResults == null || CollectionUtils.isEmpty(tiktokActivityListResults.getActivities())) { break; } } //结果集合映射会添加site 字段,确保各站点数据独立存储 ``` ```java public void pushActivityListToMdc(List<TiktokActivityListResult.Activity> activityList) { //添加站点字段信息,同步至广州数据 // 店铺信息 ShopTokenInfo shopTokenInfo = shopTokenInfoThreadLocal.get(); List<Message<?>> messageList = activityList.stream() .map(campaign -> { ActivityDto activityDto = new ActivityDto(); BeanUtils.copyProperties(campaign, activityDto); activityDto.setActivityCommands(JSON.toJSONString(campaign.getActivityCommands())); activityDto.setParticipationLimits(JSON.toJSONString(campaign.getParticipationLimits())); activityDto.setDiscount(JSON.toJSONString(campaign.getDiscount())); MdcScBackendMessage msbMessage = new MdcScBackendMessage(); msbMessage.setAppId(String.valueOf(shopTokenInfo.getAppId())); msbMessage.setPlatformId(String.valueOf(shopTokenInfo.getPlatformId())); msbMessage.setDevPartnerId(String.valueOf(shopTokenInfo.getAppId())); msbMessage.setShopId(String.valueOf(shopTokenInfo.getShopId())); msbMessage.setMsgType(MsgTypeEnum.ONLINE_ACTIVITY_TIKTOK); msbMessage.setMqType(MsgMqKeyConstants.MSG_ROCKETMQ); msbMessage.setActionType(MqActionTypeEnum.ADD.getKey()); msbMessage.setData(JSON.toJSONString(activityDto)); return MessageBuilder.withPayload(msbMessage).build(); }).collect(Collectors.toList()); rocketMqProducer.sendList(TopicConstants.MDC_SC_PUSHMESSAGE_TOPIC, messageList, Constants.SECONDS_THIRTY, Constants.INT_ZERO); log.info("推送活动消息到RocketMQ成功,消息内容为:{}", JSON.toJSONString(activityList)); } ``` ```java //添加site 站点字段信息,同步站点信息给活动商品至广州数据 public void pushActivityProductToMdc(TiktokActivityProductPushVo activityProductPushVo) { pushToPhp(MsgTypeEnum.ONLINE_ACTIVITY_PRODUCT_TIKTOK, MqActionTypeEnum.ADD, activityProductPushVo.getProduct(), "推送活动商品"); } ```
zhangweijie
2025年12月3日 09:53
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码