From 861eb69545582c55a4a49f35872b94c80d21eeb4 Mon Sep 17 00:00:00 2001 From: Administrator <1269936630@qq.com> Date: Thu, 2 Jul 2026 16:12:14 +0800 Subject: [PATCH] =?UTF-8?q?3.=E6=96=B0=E5=A2=9E=E6=B7=98=E5=AE=9D=E5=BA=97?= =?UTF-8?q?=E9=93=BA=E5=AF=B9=E5=A4=96=E6=8E=A5=E5=8F=A3-=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E6=B7=98=E5=AE=9D=20UserID=EF=BC=88mallId=EF=BC=89?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=20ERP=20=E5=BA=97=E9=93=BA=20ID=EF=BC=8C?= =?UTF-8?q?=E6=A0=B9=E6=8D=AE=20ERP=20=E5=BA=97=E9=93=BA=20ID=20=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E8=BF=90=E8=B4=B9=E6=A8=A1=E6=9D=BF=20ID=20(=E8=BF=98?= =?UTF-8?q?=E6=9C=AA=E8=81=94=E8=B0=83)=20from:shaoyx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhishu/controller/TaoBaoController.java | 47 +++++++++++++++++++ .../zhishu/domain/vo/TaoBaoShopInfoVo.java | 31 ++++++++++++ .../domain/vo/TaoBaoTemplateInfoVo.java | 31 ++++++++++++ .../dromara/zhishu/mapper/TaoBaoMapper.java | 23 +++++++++ .../zhishu/service/ITaoBaoService.java | 20 ++++++++ .../zhishu/service/impl/ShopServiceImpl.java | 24 ++++++++++ .../service/impl/TaoBaoServiceImpl.java | 44 +++++++++++++++++ .../resources/mapper/zhishu/TaoBaoMapper.xml | 26 ++++++++++ 8 files changed, 246 insertions(+) create mode 100644 ruoyi-modules/ruoyi-zhishu/src/main/java/org/dromara/zhishu/controller/TaoBaoController.java create mode 100644 ruoyi-modules/ruoyi-zhishu/src/main/java/org/dromara/zhishu/domain/vo/TaoBaoShopInfoVo.java create mode 100644 ruoyi-modules/ruoyi-zhishu/src/main/java/org/dromara/zhishu/domain/vo/TaoBaoTemplateInfoVo.java create mode 100644 ruoyi-modules/ruoyi-zhishu/src/main/java/org/dromara/zhishu/mapper/TaoBaoMapper.java create mode 100644 ruoyi-modules/ruoyi-zhishu/src/main/java/org/dromara/zhishu/service/ITaoBaoService.java create mode 100644 ruoyi-modules/ruoyi-zhishu/src/main/java/org/dromara/zhishu/service/impl/TaoBaoServiceImpl.java create mode 100644 ruoyi-modules/ruoyi-zhishu/src/main/resources/mapper/zhishu/TaoBaoMapper.xml diff --git a/ruoyi-modules/ruoyi-zhishu/src/main/java/org/dromara/zhishu/controller/TaoBaoController.java b/ruoyi-modules/ruoyi-zhishu/src/main/java/org/dromara/zhishu/controller/TaoBaoController.java new file mode 100644 index 0000000..60acf63 --- /dev/null +++ b/ruoyi-modules/ruoyi-zhishu/src/main/java/org/dromara/zhishu/controller/TaoBaoController.java @@ -0,0 +1,47 @@ +package org.dromara.zhishu.controller; + +import cn.dev33.satoken.annotation.SaIgnore; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.web.core.BaseController; +import org.dromara.zhishu.domain.vo.TaoBaoShopInfoVo; +import org.dromara.zhishu.domain.vo.TaoBaoTemplateInfoVo; +import org.dromara.zhishu.service.ITaoBaoService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +/** + * 淘宝店铺对外接口(供 Go 分销系统调用) + */ +@Validated +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/taobao") +public class TaoBaoController extends BaseController { + + @Autowired + private final ITaoBaoService taoBaoService; + + /** + * 根据淘宝 UserID(mallId)获取 ERP 店铺 ID + */ + @SaIgnore + @GetMapping("/getShopId") + public R getShopId(@NotNull(message = "mallId不能为空") @RequestParam Long mallId) { + return R.ok(taoBaoService.getShopByMallId(mallId)); + } + + /** + * 根据 ERP 店铺 ID 获取运费模板 ID (还未联调) + */ + @SaIgnore + @GetMapping("/getTemplateId") + public R getTemplateId(@NotNull(message = "shopId不能为空") @RequestParam Long shopId) { + return R.ok(taoBaoService.getTemplateByShopId(shopId)); + } +} diff --git a/ruoyi-modules/ruoyi-zhishu/src/main/java/org/dromara/zhishu/domain/vo/TaoBaoShopInfoVo.java b/ruoyi-modules/ruoyi-zhishu/src/main/java/org/dromara/zhishu/domain/vo/TaoBaoShopInfoVo.java new file mode 100644 index 0000000..b26d71b --- /dev/null +++ b/ruoyi-modules/ruoyi-zhishu/src/main/java/org/dromara/zhishu/domain/vo/TaoBaoShopInfoVo.java @@ -0,0 +1,31 @@ +package org.dromara.zhishu.domain.vo; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 淘宝店铺信息(供 Go 分销系统) + */ +@Data +public class TaoBaoShopInfoVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * ERP 店铺 ID + */ + private Long shopId; + + /** + * 淘宝 UserID + */ + private Long mallId; + + /** + * 店铺 Token + */ + private String token; +} diff --git a/ruoyi-modules/ruoyi-zhishu/src/main/java/org/dromara/zhishu/domain/vo/TaoBaoTemplateInfoVo.java b/ruoyi-modules/ruoyi-zhishu/src/main/java/org/dromara/zhishu/domain/vo/TaoBaoTemplateInfoVo.java new file mode 100644 index 0000000..cff51a3 --- /dev/null +++ b/ruoyi-modules/ruoyi-zhishu/src/main/java/org/dromara/zhishu/domain/vo/TaoBaoTemplateInfoVo.java @@ -0,0 +1,31 @@ +package org.dromara.zhishu.domain.vo; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 淘宝运费模板信息(供 Go 分销系统) + */ +@Data +public class TaoBaoTemplateInfoVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * ERP 店铺 ID + */ + private Long shopId; + + /** + * 运费模板 ID + */ + private Long templateId; + + /** + * 店铺 Token + */ + private String token; +} diff --git a/ruoyi-modules/ruoyi-zhishu/src/main/java/org/dromara/zhishu/mapper/TaoBaoMapper.java b/ruoyi-modules/ruoyi-zhishu/src/main/java/org/dromara/zhishu/mapper/TaoBaoMapper.java new file mode 100644 index 0000000..4c38e33 --- /dev/null +++ b/ruoyi-modules/ruoyi-zhishu/src/main/java/org/dromara/zhishu/mapper/TaoBaoMapper.java @@ -0,0 +1,23 @@ +package org.dromara.zhishu.mapper; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.dromara.zhishu.domain.vo.TaoBaoShopInfoVo; +import org.dromara.zhishu.domain.vo.TaoBaoTemplateInfoVo; + +/** + * 淘宝店铺 Mapper + */ +@Mapper +public interface TaoBaoMapper { + + /** + * 根据淘宝 UserID 查询店铺信息 + */ + TaoBaoShopInfoVo selectShopByMallId(@Param("mallId") Long mallId, @Param("shopType") String shopType); + + /** + * 根据 ERP 店铺 ID 查询运费模板信息 + */ + TaoBaoTemplateInfoVo selectTemplateByShopId(@Param("shopId") Long shopId, @Param("shopType") String shopType); +} diff --git a/ruoyi-modules/ruoyi-zhishu/src/main/java/org/dromara/zhishu/service/ITaoBaoService.java b/ruoyi-modules/ruoyi-zhishu/src/main/java/org/dromara/zhishu/service/ITaoBaoService.java new file mode 100644 index 0000000..d157d8f --- /dev/null +++ b/ruoyi-modules/ruoyi-zhishu/src/main/java/org/dromara/zhishu/service/ITaoBaoService.java @@ -0,0 +1,20 @@ +package org.dromara.zhishu.service; + +import org.dromara.zhishu.domain.vo.TaoBaoShopInfoVo; +import org.dromara.zhishu.domain.vo.TaoBaoTemplateInfoVo; + +/** + * 淘宝店铺 Service + */ +public interface ITaoBaoService { + + /** + * 根据淘宝 UserID 获取 ERP 店铺信息 + */ + TaoBaoShopInfoVo getShopByMallId(Long mallId); + + /** + * 根据 ERP 店铺 ID 获取运费模板信息 + */ + TaoBaoTemplateInfoVo getTemplateByShopId(Long shopId); +} diff --git a/ruoyi-modules/ruoyi-zhishu/src/main/java/org/dromara/zhishu/service/impl/ShopServiceImpl.java b/ruoyi-modules/ruoyi-zhishu/src/main/java/org/dromara/zhishu/service/impl/ShopServiceImpl.java index 39c61f5..04e43c6 100644 --- a/ruoyi-modules/ruoyi-zhishu/src/main/java/org/dromara/zhishu/service/impl/ShopServiceImpl.java +++ b/ruoyi-modules/ruoyi-zhishu/src/main/java/org/dromara/zhishu/service/impl/ShopServiceImpl.java @@ -597,6 +597,30 @@ public class ShopServiceImpl implements IShopService { * 同步孔夫子/闲鱼/淘宝等店铺的订阅状态(统一走 Go 接口) */ private void syncShopSubscriptionStatus(ShopVo shopVo) { + if (isTaobaoShopType(shopVo.getShopType())) { + syncTaobaoShopSubscriptionStatus(shopVo); + return; + } + applyGoSubscriptionSync(shopVo); + } + + /** + * 淘宝店铺:未订阅时保持本地状态,避免 Go 孔夫子接口误标为已订阅; + * 仅在已订阅/已到期后走 Go 同步续期信息。 + */ + private void syncTaobaoShopSubscriptionStatus(ShopVo shopVo) { + String currentStatus = StringUtils.isBlank(shopVo.getIsExpiration()) ? "0" : shopVo.getIsExpiration(); + if ("0".equals(currentStatus)) { + if (StringUtils.isBlank(shopVo.getIsExpiration())) { + updateShopSubscribeStatusQuietly(shopVo.getId(), null, "0", null); + } + shopVo.setIsExpiration("0"); + return; + } + applyGoSubscriptionSync(shopVo); + } + + private void applyGoSubscriptionSync(ShopVo shopVo) { String result2 = InterfaceUtils.getInterface(UrlUtil.getServiceGoUrl(), "/api/user/getKfzUserRecbusiness?userId=" + shopVo.getId()); Map resultMap = JSONObject.parseObject(result2, Map.class); diff --git a/ruoyi-modules/ruoyi-zhishu/src/main/java/org/dromara/zhishu/service/impl/TaoBaoServiceImpl.java b/ruoyi-modules/ruoyi-zhishu/src/main/java/org/dromara/zhishu/service/impl/TaoBaoServiceImpl.java new file mode 100644 index 0000000..be0c438 --- /dev/null +++ b/ruoyi-modules/ruoyi-zhishu/src/main/java/org/dromara/zhishu/service/impl/TaoBaoServiceImpl.java @@ -0,0 +1,44 @@ +package org.dromara.zhishu.service.impl; + +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.zhishu.domain.vo.TaoBaoShopInfoVo; +import org.dromara.zhishu.domain.vo.TaoBaoTemplateInfoVo; +import org.dromara.zhishu.mapper.TaoBaoMapper; +import org.dromara.zhishu.service.ITaoBaoService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * 淘宝店铺 Service 实现 + */ +@RequiredArgsConstructor +@Service +public class TaoBaoServiceImpl implements ITaoBaoService { + + private static final String TB_SHOP_TYPE = "6"; + + @Autowired + private final TaoBaoMapper taoBaoMapper; + + @Override + public TaoBaoShopInfoVo getShopByMallId(Long mallId) { + TaoBaoShopInfoVo shopInfo = taoBaoMapper.selectShopByMallId(mallId, TB_SHOP_TYPE); + if (shopInfo == null || shopInfo.getShopId() == null) { + throw new ServiceException("未查询到淘宝店铺"); + } + return shopInfo; + } + + @Override + public TaoBaoTemplateInfoVo getTemplateByShopId(Long shopId) { + TaoBaoTemplateInfoVo templateInfo = taoBaoMapper.selectTemplateByShopId(shopId, TB_SHOP_TYPE); + if (templateInfo == null || templateInfo.getShopId() == null) { + throw new ServiceException("未查询到淘宝店铺"); + } + if (templateInfo.getTemplateId() == null) { + throw new ServiceException("店铺未设置运费模板"); + } + return templateInfo; + } +} diff --git a/ruoyi-modules/ruoyi-zhishu/src/main/resources/mapper/zhishu/TaoBaoMapper.xml b/ruoyi-modules/ruoyi-zhishu/src/main/resources/mapper/zhishu/TaoBaoMapper.xml new file mode 100644 index 0000000..492d85c --- /dev/null +++ b/ruoyi-modules/ruoyi-zhishu/src/main/resources/mapper/zhishu/TaoBaoMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + +