|
@@ -70,8 +70,6 @@ import java.util.stream.Collectors;
|
|
|
@Service
|
|
|
public class JdApiServiceImpl implements JdApiService {
|
|
|
|
|
|
-// private final String tenantId = "prod".equals(SpringUtil.getActiveProfile()) ? "wdly" : "wdlytest";
|
|
|
-
|
|
|
@Autowired
|
|
|
private JdOrderService jdOrderService;
|
|
|
@Autowired
|
|
@@ -92,12 +90,12 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
private DictTenantDataService dictTenantDataService;
|
|
|
|
|
|
/**
|
|
|
- * 获取AccessToken
|
|
|
+ * 通过code获取AccessToken
|
|
|
*/
|
|
|
@Override
|
|
|
public void getAccessTokenByCode(String code) {
|
|
|
//获取AccessToken并存入数据库
|
|
|
- String path = "https://open-oauth.jd.com/oauth2/access_token?app_key=%s&app_secret=%s&grant_type=authorization_code&code=%s";
|
|
|
+ String path = RunParamConstant.JD_GET_ACCESS_TOKEN_URL;
|
|
|
path = String.format(path, JdParamConstant.appKey, JdParamConstant.appSecret, code);
|
|
|
try {
|
|
|
JSONObject responseJson = getJSON(new HttpGet(path));
|
|
@@ -112,8 +110,8 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
|
|
|
@Override
|
|
|
public String build2LoginUrl() {
|
|
|
- String url = "https://open-oauth.jd.com/oauth2/to_login?app_key=%s&response_type=code&redirect_uri=%s&state=%s&scope=snsapi_base";
|
|
|
- //TODO redirect_uri需要加上项目的域名
|
|
|
+ String url = RunParamConstant.JD_LOGIN_URL;
|
|
|
+ //redirect_uri需要加上项目的域名
|
|
|
url = String.format(url, JdParamConstant.appKey, RunParamConstant.redirect_uri, DateUtil.format(new Date(), "yyyyMMddHHmmss"));
|
|
|
return url;
|
|
|
}
|
|
@@ -163,25 +161,27 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
return request;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- @Override
|
|
|
- public void test() {
|
|
|
-// SecurityUtils.setTenantId(tenantId);
|
|
|
-// List<ProductInfo> list = productInfoService.list(q->q.eq(ProductInfo::getName,"44"));
|
|
|
-// SecurityUtils.clearTenantId();
|
|
|
- DynamicDataSourceContextHolder.push(SourceConstant.BASE);
|
|
|
- SecurityUtils.setTenantId(RunParamConstant.tenantId);
|
|
|
- DictTenantTypeDto dto = new DictTenantTypeDto();
|
|
|
- dto.setCode("123");
|
|
|
- dto.setTenantId(RunParamConstant.tenantId);
|
|
|
- dictTenantTypeService.add(dto);
|
|
|
- SecurityUtils.clearTenantId();
|
|
|
- DynamicDataSourceContextHolder.poll();
|
|
|
-
|
|
|
- System.out.println(123);
|
|
|
+ //每小时执行一次
|
|
|
+ @Scheduled(cron = "0 0 0/1 * * ? ")
|
|
|
+ //每分钟执行一次
|
|
|
+// @Scheduled(cron = "0 0/1 * * * ? ")
|
|
|
+ void refreshToken(){
|
|
|
+ JdInfoVo jdInfoVo = jdInfoService.getOne();
|
|
|
+ //如果过期时间减去当前时间小于90分钟,则要刷新token
|
|
|
+ if(ObjectUtil.isNotNull(jdInfoVo.getExpireTime())){
|
|
|
+ long between = DateUtil.between(DateUtil.date(), jdInfoVo.getExpireTime(), DateUnit.MINUTE, false);
|
|
|
+ if(between <= 0){
|
|
|
+ if(jdInfoVo.getOnline()>0){
|
|
|
+ jdInfoVo.setOnline(0);
|
|
|
+ jdInfoService.updateById(jdInfoVo);
|
|
|
+ }
|
|
|
+ }else if(90 >= between){
|
|
|
+ refreshToken(jdInfoVo);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
* 刷新Token
|
|
|
*/
|
|
@@ -204,27 +204,6 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //每小时执行一次
|
|
|
- @Scheduled(cron = "0 0 0/1 * * ? ")
|
|
|
- //每分钟执行一次
|
|
|
-// @Scheduled(cron = "0 0/1 * * * ? ")
|
|
|
- void refreshToken(){
|
|
|
- JdInfoVo jdInfoVo = jdInfoService.getOne();
|
|
|
- //如果过期时间减去当前时间小于90分钟,则要刷新token
|
|
|
- if(ObjectUtil.isNotNull(jdInfoVo.getExpireTime())){
|
|
|
- long between = DateUtil.between(DateUtil.date(), jdInfoVo.getExpireTime(), DateUnit.MINUTE, false);
|
|
|
- if(between <= 0){
|
|
|
- if(jdInfoVo.getOnline()>0){
|
|
|
- jdInfoVo.setOnline(0);
|
|
|
- jdInfoService.updateById(jdInfoVo);
|
|
|
- }
|
|
|
- }else if(90 >= between){
|
|
|
- refreshToken(jdInfoVo);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 开始京东订单采集
|
|
|
* @author hj
|
|
@@ -269,6 +248,28 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 刷新京东状态
|
|
|
+ * @param
|
|
|
+ */
|
|
|
+ @Async
|
|
|
+ public void refreshJdState(){
|
|
|
+ ThreadUtil.safeSleep(RunParamConstant.SLEEP_ONE_MINUTE);
|
|
|
+ JdClient jdClient = jdClientFactory.getJdClient();
|
|
|
+ while (true){
|
|
|
+ JdInfoVo jdInfoVo = validJdInfo();
|
|
|
+ if(ObjectUtil.isNull(jdInfoVo)){
|
|
|
+ ThreadUtil.safeSleep(RunParamConstant.SLEEP_TEN_SECOND);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ handleRefreshDate(jdClient);
|
|
|
+ log.info("刷新京东状态完成");
|
|
|
+ ThreadUtil.safeSleep(RunParamConstant.SLEEP_TEN_SECOND);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private static final Map<String, String> componentDictTypeMap = new HashMap<String, String>(){{
|
|
|
put("confirmState", "回告状态");
|
|
|
put("orderAttribute", "订单属性");
|
|
@@ -297,27 +298,13 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
add("3");
|
|
|
}};
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
- * 刷新京东状态
|
|
|
- * @param
|
|
|
+ * 处理刷新token数据
|
|
|
+ * @author hj
|
|
|
+ * @date 2023/12/21 9:01
|
|
|
+ * @param jdClient
|
|
|
*/
|
|
|
- @Async
|
|
|
- public void refreshJdState(){
|
|
|
- ThreadUtil.safeSleep(RunParamConstant.SLEEP_ONE_MINUTE);
|
|
|
- JdClient jdClient = jdClientFactory.getJdClient();
|
|
|
- while (true){
|
|
|
- JdInfoVo jdInfoVo = validJdInfo();
|
|
|
- if(ObjectUtil.isNull(jdInfoVo)){
|
|
|
- ThreadUtil.safeSleep(RunParamConstant.SLEEP_TEN_SECOND);
|
|
|
- continue;
|
|
|
- }
|
|
|
- handleRefreshDate(jdClient);
|
|
|
- log.info("刷新京东状态完成");
|
|
|
- ThreadUtil.safeSleep(RunParamConstant.SLEEP_TEN_SECOND);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
public void handleRefreshDate(JdClient jdClient) {
|
|
|
DynamicDataSourceContextHolder.push(SourceConstant.VICTORIATOURIST);
|
|
|
SecurityUtils.setTenantId(RunParamConstant.tenantId);
|
|
@@ -435,8 +422,9 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
put("21", "等待删除确认");
|
|
|
put("22", "已删除");
|
|
|
}};
|
|
|
+
|
|
|
/**
|
|
|
- * 处理jd退货状态
|
|
|
+ * 处理jd退货状态字典
|
|
|
* @author hj
|
|
|
* @date 2023/12/20 22:27
|
|
|
*/
|
|
@@ -456,6 +444,12 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
SecurityUtils.clearTenantId();
|
|
|
DynamicDataSourceContextHolder.poll();
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 处理字典表
|
|
|
+ * @author hj
|
|
|
+ * @date 2023/12/21 9:01
|
|
|
+ */
|
|
|
|
|
|
private void handleDictData(List<CommonDictData> commonDictDataList, DictTenantType dictTenantType) {
|
|
|
//查出原来的字典
|
|
@@ -769,15 +763,6 @@ public class JdApiServiceImpl implements JdApiService {
|
|
|
return JSONObject.parseObject(responseStr);
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 计算时间公共方法
|
|
|
- */
|
|
|
- private Date calculateTime(Date date,Integer field, Integer amount){
|
|
|
- Calendar calendar = Calendar.getInstance();
|
|
|
- calendar.setTime(date);
|
|
|
- calendar.add(field, amount);
|
|
|
- return calendar.getTime();
|
|
|
- }
|
|
|
|
|
|
/**
|
|
|
* 将jd返回的json对象转换成jdInfoVo
|