3.新增淘宝店铺对外接口-根据淘宝 UserID(mallId)获取 ERP 店铺 ID,根据 ERP 店铺 ID 获取运费模板 ID (还未联调) from:shaoyx

This commit is contained in:
Administrator 2026-07-02 16:12:14 +08:00
parent bce68368ce
commit 861eb69545
8 changed files with 246 additions and 0 deletions

View File

@ -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;
/**
* 根据淘宝 UserIDmallId获取 ERP 店铺 ID
*/
@SaIgnore
@GetMapping("/getShopId")
public R<TaoBaoShopInfoVo> getShopId(@NotNull(message = "mallId不能为空") @RequestParam Long mallId) {
return R.ok(taoBaoService.getShopByMallId(mallId));
}
/**
* 根据 ERP 店铺 ID 获取运费模板 ID (还未联调)
*/
@SaIgnore
@GetMapping("/getTemplateId")
public R<TaoBaoTemplateInfoVo> getTemplateId(@NotNull(message = "shopId不能为空") @RequestParam Long shopId) {
return R.ok(taoBaoService.getTemplateByShopId(shopId));
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.zhishu.mapper.TaoBaoMapper">
<select id="selectShopByMallId" resultType="org.dromara.zhishu.domain.vo.TaoBaoShopInfoVo">
select id as shopId, mall_id as mallId, token
from t_shop
where mall_id = #{mallId}
and shop_type = #{shopType}
and del_flag = '0'
limit 1
</select>
<select id="selectTemplateByShopId" resultType="org.dromara.zhishu.domain.vo.TaoBaoTemplateInfoVo">
select s.id as shopId, s.token, d.template_id as templateId
from t_shop s
left join t_shop_detail d on d.shop_id = s.id
where s.id = #{shopId}
and s.shop_type = #{shopType}
and s.del_flag = '0'
limit 1
</select>
</mapper>