huanglizhi 10 月之前
父节点
当前提交
ca3f259bb5
共有 17 个文件被更改,包括 431 次插入7 次删除
  1. 22 0
      raycos_common/src/main/java/com/raycos/raycoscommon/Internal/datacenterapi/TbAmzToken.java
  2. 44 0
      raycos_common/src/main/java/com/raycos/raycoscommon/Internal/datacenterapi/TbStoreInfo.java
  3. 27 0
      raycos_common/src/main/java/com/raycos/raycoscommon/Internal/datacenterapi/config/LwaClientInfoNacos.java
  4. 1 1
      raycos_common/src/main/java/com/raycos/raycoscommon/RaycosCommonApplication.java
  5. 3 0
      raycos_datacenter_api/src/main/java/com/raycos/raycosdatacenterapi/RaycosDatacenterApiApplication.java
  6. 15 0
      raycos_datacenter_api/src/main/java/com/raycos/raycosdatacenterapi/authorize/AmazonController.java
  7. 48 0
      raycos_datacenter_api/src/main/java/com/raycos/raycosdatacenterapi/authorize/AmzTokenController.java
  8. 18 0
      raycos_datacenter_api/src/main/java/com/raycos/raycosdatacenterapi/authorize/AmzTokenService.java
  9. 55 0
      raycos_datacenter_api/src/main/java/com/raycos/raycosdatacenterapi/authorize/StoreInfoController.java
  10. 17 0
      raycos_datacenter_api/src/main/java/com/raycos/raycosdatacenterapi/authorize/StoreInfoService.java
  11. 53 6
      raycos_datacenter_api/src/main/java/com/raycos/raycosdatacenterapi/authorize/impl/AmzAuthorizeServiceImpl.java
  12. 44 0
      raycos_datacenter_api/src/main/java/com/raycos/raycosdatacenterapi/authorize/impl/AmzTokenServiceImpl.java
  13. 38 0
      raycos_datacenter_api/src/main/java/com/raycos/raycosdatacenterapi/authorize/impl/StoreInfoServiceImpl.java
  14. 26 0
      raycos_datacenter_api/src/main/java/com/raycos/raycosdatacenterapi/config/MybatisPlusConfig.java
  15. 12 0
      raycos_datacenter_api/src/main/java/com/raycos/raycosdatacenterapi/mapper/TbAmzTokenMapper.java
  16. 7 0
      raycos_datacenter_api/src/main/java/com/raycos/raycosdatacenterapi/mapper/TbStoreInfoMapper.java
  17. 1 0
      raycos_datacenter_api/src/main/resources/application.yml

+ 22 - 0
raycos_common/src/main/java/com/raycos/raycoscommon/Internal/datacenterapi/TbAmzToken.java

@@ -0,0 +1,22 @@
+package com.raycos.raycoscommon.Internal.datacenterapi;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class TbAmzToken {
+
+    private Long id;
+    private String accessToken;
+    private String tokenType;
+    private Long expiresIn;
+    private String refreshToken;
+    private String sellingPartnerId;
+
+
+
+}

+ 44 - 0
raycos_common/src/main/java/com/raycos/raycoscommon/Internal/datacenterapi/TbStoreInfo.java

@@ -0,0 +1,44 @@
+package com.raycos.raycoscommon.Internal.datacenterapi;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class TbStoreInfo {
+
+    /**
+     * 主键ID
+     */
+    private Long id;
+    /**
+     * 店铺名称
+     */
+    private String storeName;
+    /**
+     * 店铺类型 跨境:1 本土:2
+     */
+    private Integer storeType;
+    /**
+     * 店铺类型 FBA:1 FBM:2
+     */
+    private Integer storeModel;
+    /**
+     * 平台账号
+     */
+    private String platformAccount;
+    /**
+     * 区域
+     */
+    private String  region;
+
+    /**
+     * 站点
+     */
+    private String  site;
+
+
+}

+ 27 - 0
raycos_common/src/main/java/com/raycos/raycoscommon/Internal/datacenterapi/config/LwaClientInfoNacos.java

@@ -0,0 +1,27 @@
+package com.raycos.raycoscommon.Internal.datacenterapi.config;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.stereotype.Component;
+
+@Component
+@RefreshScope
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class LwaClientInfoNacos {
+    @Value("${grant_type}")
+    private  String grantType;
+    private  String code;
+    @Value("${redirect_uri}")
+    private  String redirectUri;
+    @Value("${client_id}")
+    private  String clientId;
+    @Value("${client_secret}")
+    private  String clientSecret;
+
+
+}

+ 1 - 1
raycos_common/src/main/java/com/raycos/raycoscommon/Internal/RaycosCommonApplication.java → raycos_common/src/main/java/com/raycos/raycoscommon/RaycosCommonApplication.java

@@ -1,4 +1,4 @@
-package com.raycos.raycoscommon.Internal;
+package com.raycos.raycoscommon;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;

+ 3 - 0
raycos_datacenter_api/src/main/java/com/raycos/raycosdatacenterapi/RaycosDatacenterApiApplication.java

@@ -5,6 +5,7 @@ import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.context.annotation.ComponentScan;
 import org.springframework.scheduling.annotation.EnableScheduling;
 
 @EnableDiscoveryClient
@@ -12,6 +13,8 @@ import org.springframework.scheduling.annotation.EnableScheduling;
 @SpringBootApplication
 @MapperScan("com/raycos/raycosdatacenterapi/mapper")
 
+// 添加扫描范围
+@ComponentScan(basePackages = {"com.raycos.raycoscommon","com.raycos.raycosdatacenterapi"})
 
 //扫描spring 定时任务
 @EnableScheduling

+ 15 - 0
raycos_datacenter_api/src/main/java/com/raycos/raycosdatacenterapi/authorize/AmazonController.java

@@ -3,6 +3,7 @@ package com.raycos.raycosdatacenterapi.authorize;
 import com.alibaba.fastjson2.JSONObject;
 import com.raycos.raycoscommon.Internal.Result;
 import com.raycos.raycoscommon.Internal.datacenterapi.TbAmzAuthorize;
+import com.raycos.raycoscommon.Internal.datacenterapi.config.LwaClientInfoNacos;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -10,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
 import java.util.List;
 
 /**
@@ -25,6 +27,8 @@ public class AmazonController {
 
     @Autowired
     private AmzAuthorizeService authorizeService;
+    @Resource
+    private  LwaClientInfoNacos lwaClientInfoNacos;
 
     @GetMapping("/authcode")
     public Result<String> getSpapiOauthCode(
@@ -72,6 +76,17 @@ public class AmazonController {
         }
         return new Result<List<TbAmzAuthorize>>().success(list);
     }
+    @GetMapping("/sellwa")
+    public  Result<LwaClientInfoNacos>  findLwa () {
+        Result<LwaClientInfoNacos> ss = new Result<>();
+
+        String jsonString = JSONObject.toJSONString(lwaClientInfoNacos);
+        log.info("lwaClientInfoNacos  " + jsonString);
+        ss.success(lwaClientInfoNacos);
+
+        return ss;
+
+    }
 
 
 }

+ 48 - 0
raycos_datacenter_api/src/main/java/com/raycos/raycosdatacenterapi/authorize/AmzTokenController.java

@@ -0,0 +1,48 @@
+package com.raycos.raycosdatacenterapi.authorize;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.raycos.raycoscommon.Internal.Result;
+import com.raycos.raycoscommon.Internal.datacenterapi.TbAmzToken;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@Slf4j
+@RequestMapping("/erp/token")
+public class AmzTokenController {
+
+    @Autowired
+    private AmzTokenService amzTokenService;
+
+    @GetMapping
+    public Result<List<TbAmzToken>> selToken (){
+        Result<List<TbAmzToken>> tr = new Result<>();
+        try{
+            List<TbAmzToken> list = amzTokenService.selAmzToken(null);
+            tr.success(list);
+        }catch (Exception e){
+
+            tr.fail();
+        }
+        return  tr;
+    }
+
+    @PostMapping
+    public  Result<String > addToken (@RequestBody TbAmzToken tbAmzToken ){
+        Result<String> rt = new Result<>();
+        try{
+            log.info( "  新增 token   来了老弟  " + JSONObject.toJSONString(tbAmzToken));
+            amzTokenService.addAmzToken( tbAmzToken );
+            rt.success();
+        }catch (Exception e){
+            log.error(" 新增token 异常 ",e);
+            rt.fail();
+        }
+        return  rt;
+
+    }
+
+}

+ 18 - 0
raycos_datacenter_api/src/main/java/com/raycos/raycosdatacenterapi/authorize/AmzTokenService.java

@@ -0,0 +1,18 @@
+package com.raycos.raycosdatacenterapi.authorize;
+
+import com.raycos.raycoscommon.Internal.datacenterapi.TbAmzToken;
+
+import java.util.List;
+
+public interface AmzTokenService {
+
+    void  addAmzToken (TbAmzToken tbAmzToken)throws Exception;
+
+    void  delAmzToken (TbAmzToken tbAmzToken)throws Exception;
+
+    void  editAmzToken (TbAmzToken tbAmzToken)throws Exception;
+
+    List<TbAmzToken> selAmzToken (TbAmzToken tbAmzToken)throws Exception;
+
+
+}

+ 55 - 0
raycos_datacenter_api/src/main/java/com/raycos/raycosdatacenterapi/authorize/StoreInfoController.java

@@ -0,0 +1,55 @@
+package com.raycos.raycosdatacenterapi.authorize;
+
+import com.raycos.raycoscommon.Internal.Result;
+import com.raycos.raycoscommon.Internal.datacenterapi.TbStoreInfo;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@Slf4j
+@RequestMapping("/erp/store")
+public class StoreInfoController {
+
+
+    @Autowired
+    private  StoreInfoService storeInfoService;
+
+
+    @PostMapping("/add")
+    public Result<String> addStoreInfo (@RequestBody TbStoreInfo tbStoreInfo){
+        Result<String> rt = new  Result<>();
+        try{
+            tbStoreInfo.setStoreName("美国,加拿大,墨西哥,巴西");
+            tbStoreInfo.setStoreType(1);
+            tbStoreInfo.setStoreModel(2);
+            storeInfoService.addStoreInfo(tbStoreInfo);
+            rt.success();
+            rt.setMsg("保存成功!");
+        }catch (Exception e ){
+            log.error(  e.getMessage() , e);
+            rt.fail();
+        }
+        return  rt;
+    }
+
+
+
+    @GetMapping("/sel")
+    public Result<List<TbStoreInfo> > selStoreInfo (  ){
+        Result<List<TbStoreInfo> > rt = new  Result<>();
+        try{
+            List<TbStoreInfo> tbStoreInfos = storeInfoService.selStoreInfo(null);
+            rt.success( tbStoreInfos );
+            rt.setMsg("查询成功!");
+        }catch (Exception e ){
+            log.error(  e.getMessage() , e);
+            rt.fail();
+        }
+        return  rt;
+    }
+
+
+}

+ 17 - 0
raycos_datacenter_api/src/main/java/com/raycos/raycosdatacenterapi/authorize/StoreInfoService.java

@@ -0,0 +1,17 @@
+package com.raycos.raycosdatacenterapi.authorize;
+
+import com.raycos.raycoscommon.Internal.datacenterapi.TbStoreInfo;
+
+import java.util.List;
+
+public interface StoreInfoService {
+    void  addStoreInfo (TbStoreInfo tbStoreInfo)throws Exception;
+
+    void  delStoreInfo (TbStoreInfo tbStoreInfo)throws Exception;
+
+    void  editStoreInfo (TbStoreInfo tbStoreInfo)throws Exception;
+
+    List<TbStoreInfo> selStoreInfo (TbStoreInfo tbStoreInfo)throws Exception;
+
+
+}

+ 53 - 6
raycos_datacenter_api/src/main/java/com/raycos/raycosdatacenterapi/authorize/impl/AmzAuthorizeServiceImpl.java

@@ -1,10 +1,19 @@
 package com.raycos.raycosdatacenterapi.authorize.impl;
 
+
+import com.alibaba.fastjson2.JSONObject;
 import com.raycos.raycoscommon.Internal.datacenterapi.TbAmzAuthorize;
+import com.raycos.raycoscommon.Internal.datacenterapi.TbAmzToken;
 import com.raycos.raycosdatacenterapi.authorize.AmzAuthorizeService;
+import com.raycos.raycosdatacenterapi.authorize.AmzTokenService;
 import com.raycos.raycosdatacenterapi.mapper.TbAmzAuthorizeMapper;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
 import org.springframework.stereotype.Service;
+import org.springframework.util.Assert;
 import org.springframework.web.client.RestTemplate;
 
 import java.util.List;
@@ -15,29 +24,36 @@ import java.util.List;
  */
 
 @Service
+@Slf4j
 public class AmzAuthorizeServiceImpl implements AmzAuthorizeService {
 
 
     @Autowired
     private TbAmzAuthorizeMapper tbAmzAuthorizeMapper;
 
+    @Autowired
+    private AmzTokenService amzTokenService;
+
     @Autowired
     private RestTemplate restTemplate;
 
     @Override
     public List<TbAmzAuthorize> selectAll() throws Exception {
-
-
         List<TbAmzAuthorize> list = tbAmzAuthorizeMapper.selectList(null);
 
         return list;
-
-
     }
 
     @Override
     public void addAmzAuthorize(TbAmzAuthorize tbAmzAuthorize) throws Exception {
+        // 亚马逊 回调接口  返回 LWA code
         tbAmzAuthorizeMapper.insert(tbAmzAuthorize);
+        try {
+            // 使用LWA code 获取长短令牌
+            getAccessToken(tbAmzAuthorize);
+        } catch (Exception e) {
+            log.error(" 亚马逊授权 LWACODE 刷新令牌失败   "+e.getMessage(), e);
+        }
     }
 
     /**
@@ -49,9 +65,40 @@ public class AmzAuthorizeServiceImpl implements AmzAuthorizeService {
     @Override
     public void getAccessToken(TbAmzAuthorize tbAmzAuthorize) throws Exception {
 
-        //
 
-//        restTemplate.
+        RestTemplate restTemplate = new RestTemplate();
+        String url = "https://api.amazon.com/auth/o2/token";
+
+        // 设置请求头
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_JSON);
+
+        JSONObject params = new JSONObject();
+        params.put("grant_type", "authorization_code");
+        params.put("code", tbAmzAuthorize.getSpapiOauthCode());
+        params.put("redirect_uri", "https://apisaas.raycos.net/erp/amz/authcode");
+        params.put("client_id", "amzn1.application-oa2-client.2d001c4aeaaf438f98ee0b07070c1cf8");
+        params.put("client_secret", "amzn1.oa2-cs.v1.52b13f4ce04e83046b3426b620b6bfb94fd3ce61c815c6f68858af69d0ccbe54");
+
+        // 设置请求体
+        String requestBody = params.toString();
+        // 创建请求实体
+        HttpEntity<String> request = new HttpEntity<>(requestBody, headers);
+        // 发送 POST 请求
+        String response = restTemplate.postForObject(url, request, String.class);
+
+        log.info("Response: " + response);
+
+        try {
+            JSONObject json = JSONObject.parseObject(response);
+            Assert.notNull(json.get("access_token"), " 获取令牌接口返回异常 请查看返回分析 "+json);
+            TbAmzToken tbAmzToken = JSONObject.parseObject(response, TbAmzToken.class);
+            amzTokenService.addAmzToken(tbAmzToken);
+
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            throw e;
+        }
 
 
     }

+ 44 - 0
raycos_datacenter_api/src/main/java/com/raycos/raycosdatacenterapi/authorize/impl/AmzTokenServiceImpl.java

@@ -0,0 +1,44 @@
+package com.raycos.raycosdatacenterapi.authorize.impl;
+
+import com.raycos.raycoscommon.Internal.datacenterapi.TbAmzToken;
+import com.raycos.raycosdatacenterapi.authorize.AmzTokenService;
+import com.raycos.raycosdatacenterapi.mapper.TbAmzTokenMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.Assert;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.List;
+
+
+@Service
+@Slf4j
+public class AmzTokenServiceImpl implements AmzTokenService {
+
+    @Autowired
+    private TbAmzTokenMapper tbAmzTokenMapper;
+
+    @Autowired
+    private RestTemplate restTemplate;
+    @Override
+    public void addAmzToken(TbAmzToken tbAmzToken) throws Exception {
+        tbAmzTokenMapper.insert(tbAmzToken);
+    }
+
+    @Override
+    public void delAmzToken(TbAmzToken tbAmzToken) throws Exception {
+        Assert.notNull( tbAmzToken.getId() , "请检查提交参数!");
+        tbAmzTokenMapper.delAmzToken(tbAmzToken.getId());
+    }
+
+    @Override
+    public void editAmzToken(TbAmzToken tbAmzToken) throws Exception {
+
+    }
+
+    @Override
+    public List<TbAmzToken> selAmzToken(TbAmzToken tbAmzToken) throws Exception {
+        return tbAmzTokenMapper.selectList(null);
+    }
+}

+ 38 - 0
raycos_datacenter_api/src/main/java/com/raycos/raycosdatacenterapi/authorize/impl/StoreInfoServiceImpl.java

@@ -0,0 +1,38 @@
+package com.raycos.raycosdatacenterapi.authorize.impl;
+
+import com.raycos.raycoscommon.Internal.datacenterapi.TbStoreInfo;
+import com.raycos.raycosdatacenterapi.authorize.StoreInfoService;
+import com.raycos.raycosdatacenterapi.mapper.TbStoreInfoMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+@Slf4j
+public class StoreInfoServiceImpl implements StoreInfoService {
+
+    @Autowired
+    private TbStoreInfoMapper tbStoreInfoMapper;
+
+    @Override
+    public void addStoreInfo(TbStoreInfo tbStoreInfo) throws Exception {
+        tbStoreInfoMapper.insert( tbStoreInfo);
+    }
+
+    @Override
+    public void delStoreInfo(TbStoreInfo tbStoreInfo) throws Exception {
+
+    }
+
+    @Override
+    public void editStoreInfo(TbStoreInfo tbStoreInfo) throws Exception {
+
+    }
+
+    @Override
+    public List<TbStoreInfo> selStoreInfo(TbStoreInfo tbStoreInfo) throws Exception {
+        return tbStoreInfoMapper.selectList(null);
+    }
+}

+ 26 - 0
raycos_datacenter_api/src/main/java/com/raycos/raycosdatacenterapi/config/MybatisPlusConfig.java

@@ -0,0 +1,26 @@
+package com.raycos.raycosdatacenterapi.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.core.config.GlobalConfig;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisPlusConfig {
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+        return interceptor;
+    }
+
+    @Bean
+    public GlobalConfig globalConfig() {
+        GlobalConfig globalConfig = new GlobalConfig();
+        globalConfig.setDbConfig(new GlobalConfig.DbConfig().setIdType(IdType.INPUT));
+        return globalConfig;
+    }
+}

+ 12 - 0
raycos_datacenter_api/src/main/java/com/raycos/raycosdatacenterapi/mapper/TbAmzTokenMapper.java

@@ -0,0 +1,12 @@
+package com.raycos.raycosdatacenterapi.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.raycos.raycoscommon.Internal.datacenterapi.TbAmzToken;
+import org.apache.ibatis.annotations.Delete;
+import org.apache.ibatis.annotations.Param;
+
+public interface TbAmzTokenMapper extends BaseMapper<TbAmzToken> {
+    @Delete("DELETE FROM  tb_amz_token  WHERE id = #{id}")
+    int delAmzToken(@Param("id") Long id );
+
+}

+ 7 - 0
raycos_datacenter_api/src/main/java/com/raycos/raycosdatacenterapi/mapper/TbStoreInfoMapper.java

@@ -0,0 +1,7 @@
+package com.raycos.raycosdatacenterapi.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.raycos.raycoscommon.Internal.datacenterapi.TbStoreInfo;
+
+public interface TbStoreInfoMapper  extends BaseMapper<TbStoreInfo> {
+}

+ 1 - 0
raycos_datacenter_api/src/main/resources/application.yml

@@ -20,6 +20,7 @@ spring:
   config:
     import:
       - nacos:nacos-config-example.properties?refreshEnabled=true
+      - nacos:Lwa_client_information.yaml?refreshEnabled=true
 
   profiles:
     active: dev