技术文档
方法相同入参 AOP 使用说明
Shopee 刊登业务梳理文档
亚马逊刊登相关业务知识
刊登监控设计方案
亚马逊跟卖设计
Fanno 刊登业务梳理文档
日志收集 方案设计
PIB 刊登方案设计
Temu 刊登方案设计
ShopTokenInfo Aop集成MBC方案
香港定时卡刊登任务方案
push-message 、receive-message 省流方案
OZON 刊登方案设计
Lazada视频上传方案
广州同步店铺框架搭建
Shopify翻版
Amazon交接
TikTok 由global模式切换replicate模式调研
tiktok 折扣活动对接方案
Target 初期调研
本文档使用 MrDoc 发布
-
+
首页
ShopTokenInfo Aop集成MBC方案
## 一. 背景 #### 现在Java中台很多项目都集成了@ShopTokenInfoAop这个注解,并且通过这个注解在ThreadLocal里面获取到调度中心店铺对象。但是根据现在业务发展和架构的调整,该方案已经越来越无法满足业务的需求。因此现在需要对这方面进行一些调整 ## 二. 目的 > #### 1. 让PHP能直接通过AppId(生成新版Token),erpShopId就能调用中台接口 > #### 2. 回调PHP接口(非MQ方式)需要传erpShopId过去, 而非调度中心shopId > #### 3. 能更好的支持不同平台加解密accessToken方式 ## 三. 影响 #### 1.根据下述操作步骤集成了MBC以后,就会开始走新逻辑。而这个新逻辑也会兼容旧逻辑的处理方式 #### 2.没有根据下述操作步骤集成MBC,那么就只会走旧逻辑处理方式。就无法针对于PHP新版Token进行处理(如果接口不给到PHP使用或项目没有使用@ShopTokenInfoAop,暂时可以不用做任何处理) ## 业务图:  ## 伪代码如下: ```java @Autowired(required = false) private MpsBizBaseDataCacheService mpsBizBaseDataCacheService; public void getShopToken(Long platformId) throws Exception { ShopTokenInfo shopToken; if (null != mpsBizBaseDataCacheService) { // 处理新逻辑(兼容旧逻辑) } else { // 处理旧逻辑 } } ``` #### PS: 可以看到mpsBizBaseDataCacheService通过懒加载方式注入到服务里面。这就意味着如果不在yml里面集成下述配置,依然是可以运行起来并且走旧的业务逻辑。mpsBizBaseDataCacheService具体接口和执行结果在下方! ## 四. 操作 ### 1. yml集成 ```yml mdc: log: enable: true cache: enable: true mps-meta: enable: true redis-template-bean: mpsMetaCacheTemplate mdc-meta: enable: true redis-template-bean: mdcMetaCacheTemplate redis: enable: true primary: defaultTemplete servers: defaultTemplete: host: ${host} port: ${port} password: ${password} timeout: ${timeout} database: ${database} mpsMetaCacheTemplate: host: ${host} port: ${port} password: ${password} timeout: ${timeout} database: ${database} mdcMetaCacheTemplate: host: ${host} port: ${port} password: ${password} timeout: ${timeout} database: ${database} ``` ### 2. 重启项目即可 > #### Q: 为什么不需要依赖jar包呢? > #### A: 因为Jar包已经被依赖进biz-mps-base-util里面了。因此是不需要下游服务进行依赖 ## 五. MpsBizBaseDataCacheService接口提供服务 ### 接口服务: ```java @Api(tags = "缓存测试") @RestController @RequestMapping("/mps/cache") @Slf4j public class MpsCacheController { /** * 注入缓存的service */ @Autowired private MpsBizBaseDataCacheService mpsBizBaseDataCacheService; @Autowired private MdcBizBaseDataCacheService mdcBizBaseDataCacheService; @ApiOperation("获取调度中心开发者账号的短令牌") @GetMapping("/getAccessToken/{appId}") public RestResultVo<String> getAccessToken(@PathVariable("appId") Long appId) { return new RestResultVo<>(GlobalResultCode.OK.getCode(), GlobalResultCode.OK.getMsg(), mdcBizBaseDataCacheService.getMpsDeveloperAccessToken(appId)); } @ApiOperation("根据平台编号获取平台信息") @GetMapping("/getPlatfromInfo/{platformId}") @ApiImplicitParam(name = "platformId", value = "平台编号", dataType = "Long", paramType = "path", example = "1", required = true) public RestResultVo<MpsPlatFormCache> getPlatfromInfo(@PathVariable("platformId") Long platformId) { /** * 根据平台编号获取平台的缓存信息 */ MpsPlatFormCache mpsPlatFormCache = mpsBizBaseDataCacheService.getMpsPlatFormCache(platformId); return new RestResultVo<MpsPlatFormCache>(GlobalResultCode.OK.getCode(), GlobalResultCode.OK.getMsg(), mpsPlatFormCache); } @ApiOperation("根据调度中心店铺编号获取店铺信息") @GetMapping("/getMpsShopInfo/{shopId}") @ApiImplicitParam(name = "shopId", value = "调度中心店铺编号", dataType = "Long", paramType = "path", example = "10001", required = true) public RestResultVo<MpsShopCache> getMpsShopInfo(@PathVariable("shopId") Long shopId) { /** * 更具调度中心店铺编号获取店铺缓存信息 */ return new RestResultVo<MpsShopCache>(GlobalResultCode.OK.getCode(), GlobalResultCode.OK.getMsg(), mpsBizBaseDataCacheService.getMpsShopCache(shopId)); } @ApiOperation("根据ERP店铺编号获取调度中心店铺信息") @GetMapping("/getShopConfByErpShop/{appId}/{erpShopId}") @ApiImplicitParams({ @ApiImplicitParam(name = "appId", value = "开发者账号", dataType = "Long", paramType = "path", example = "10001", required = true), @ApiImplicitParam(name = "erpShopId", value = "ERP店铺编号", dataType = "int", paramType = "path", example = "10001", required = true) }) public RestResultVo<MpsShopConfCache> getShopConfByErpShop(@PathVariable("appId") Long appId, @PathVariable("erpShopId") Integer erpShopId) { /** * 根据ERP店铺编号获取调度中心店铺和ERP店铺的关联关系 */ return new RestResultVo<MpsShopConfCache>(GlobalResultCode.OK.getCode(), GlobalResultCode.OK.getMsg(), mpsBizBaseDataCacheService.getMpsShopConfCache(appId, erpShopId)); } @ApiOperation("根据调度中心店铺编号获取调度中心店铺信息") @GetMapping("/getShopConfByShop/{shopId}") @ApiImplicitParam(name = "shopId", value = "调度中心店铺编号", dataType = "Long", paramType = "path", example = "10001", required = true) public RestResultVo<MpsShopConfCache> getShopConfByShop(@PathVariable("shopId") Long shopId){ /** * 根据调度中心店铺编号获取调度中心店铺和ERP店铺的关联关系 */ return new RestResultVo<MpsShopConfCache>(GlobalResultCode.OK.getCode(), GlobalResultCode.OK.getMsg(), mpsBizBaseDataCacheService.getMpsShopConfCache(shopId)); } @ApiOperation("获取当前请求的调度中心店铺信息") @GetMapping("/getCurrentShopCache") public RestResultVo<MpsShopCache> getCurrentShopCache(){ /** * 根据调度中心店铺编号获取调度中心店铺和ERP店铺的关联关系 */ return new RestResultVo<MpsShopCache>(GlobalResultCode.OK.getCode(), GlobalResultCode.OK.getMsg(), mpsBizBaseDataCacheService.getCurrentMpsShopCache()); } } ``` ### 测试结果: - 根据平台编号获取平台的缓存信息  - 根据调度中心店铺编号获取店铺缓存信息  - 根据ERP店铺编号获取调度中心店铺和ERP店铺的关联关系  - 根据调度中心店铺编号获取调度中心店铺和ERP店铺的关联关系  ## 六. 尾声 >#### 此方案会在下周三(2023-03-29 晚上进行升级), 请各位悉知! 有什么问题可以联系方罗
thread
2023年3月21日 16:30
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码