diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/HqtTokenDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/HqtTokenDTO.java new file mode 100644 index 000000000..8587e66b2 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/HqtTokenDTO.java @@ -0,0 +1,22 @@ +package com.cool.store.dto; + +import lombok.Data; + +/** + * @Author: WangShuo + * @Date: 2025/07/24/17:19 + * @Version 1.0 + * @注释: + */ +@Data +public class HqtTokenDTO { + + private String access_token; + private String token_type; + private Long expires_in; + private String scope; + private String endPoint; + private String client_id; + + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/PushService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/PushService.java index f1c8f7ae4..e2e49e8c6 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/PushService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/PushService.java @@ -1,6 +1,7 @@ package com.cool.store.service; import com.cool.store.dto.GetAccessTokenDTO; +import com.cool.store.dto.HqtTokenDTO; import com.cool.store.dto.ModifyPasswordDTO; import com.cool.store.dto.XgjOrganizationDTO; import com.cool.store.request.AuditRequest; @@ -86,6 +87,12 @@ public interface PushService { XgjAccessTokenDTO getXgjAccessToken(); Integer getUnReadMessageNum(String partnerId); + /** + * @Auther: wangshuo + * @Date: 2025/7/24 + * @description:获取红圈通token + */ + HqtTokenDTO getHqtToken(); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PushServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PushServiceImpl.java index c7fad0eec..959340e75 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PushServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/PushServiceImpl.java @@ -2,6 +2,7 @@ package com.cool.store.service.impl; import com.alibaba.fastjson.JSONObject; import com.cool.store.dto.GetAccessTokenDTO; +import com.cool.store.dto.HqtTokenDTO; import com.cool.store.dto.ModifyPasswordDTO; import com.cool.store.dto.XgjOrganizationDTO; import com.cool.store.enums.ErrorCodeEnum; @@ -86,6 +87,20 @@ public class PushServiceImpl implements PushService { @Value("${ask.bot.url}") private String askBotUrl; + @Value("${hqt.token.url}") + private String hqtTokenUrl; + + @Value("${hqt.token.username}") + private String hqtUsername; + + @Value("${hqt.token.grant_type}") + private String hqtGrantType; + + @Value("${hqt.token.client.id}") + private String hqtClientId; + @Value("${hqt.token.client.secret}") + private String hqtClientSecret; + @Resource OkHttpClient okHttpClient; @Resource @@ -248,6 +263,39 @@ public class PushServiceImpl implements PushService { } } + @Override + public HqtTokenDTO getHqtToken() { + String url = hqtTokenUrl + "/hecom-tenancy/oauth/token"; + String auth = hqtClientId + ":" + hqtClientSecret; + String encodedAuth = Base64.getEncoder().encodeToString(auth.getBytes(StandardCharsets.UTF_8)); + Map requestBody = new HashMap<>(); + requestBody.put("grant_type",hqtGrantType); + requestBody.put("username",hqtUsername); + String jsonString = JSONObject.toJSONString(requestBody); + Request request = new Request.Builder() + .url(url) + .post(RequestBody.create(MediaType.parse("application/json"),jsonString)) + .header("Authorization", "Basic " + encodedAuth) + .addHeader("Content-Type", "application/json") + .addHeader("Host", "tc.cloud.hecom.cn") + .build(); + try (Response response = okHttpClient.newCall(request).execute()) { + if (!response.isSuccessful()) { + log.info("HTTP请求失败,msg: " + response.message()); + throw new ServiceException(ErrorCodeEnum.THIRD_API_ERROR, + "HTTP请求失败,状态码: " + response.code()); + } + String responseBody = response.body().string(); + HqtTokenDTO hqtTokenDTO = objectMapper.readValue(responseBody, HqtTokenDTO.class); + return hqtTokenDTO; + } catch (ServiceException e) { + throw e; + } catch (Exception e) { + log.error("API调用异常 - URL: {}, 错误: {}", url, e.getMessage(), e); + throw new ServiceException(ErrorCodeEnum.THIRD_API_ERROR, "接口调用异常: " + e.getMessage()); + } + } + private T executeApiCall(String url, Object requestBody, Class responseType, String username, String secret){ return executePostApiCall(url,requestBody,responseType,username,secret,null); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SignFranchiseServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SignFranchiseServiceImpl.java index bb529d8d6..df02cdbb8 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SignFranchiseServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/SignFranchiseServiceImpl.java @@ -543,7 +543,7 @@ public class SignFranchiseServiceImpl implements SignFranchiseService, AuditResu } addSignFranchiseResponse.setPayName(new ArrayList<>(payNameSet)); addSignFranchiseResponse.setPartnerPayData(partnerPayData); - Date earliestPayTime = payTimeList.stream() + Date earliestPayTime = payTimeList.stream().filter(Objects::nonNull) .min(Comparator.naturalOrder()) .orElse(null); addSignFranchiseResponse.setPayDate(earliestPayTime); diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCTestController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCTestController.java index 3898a38e1..0d42e65aa 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCTestController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/PCTestController.java @@ -4,6 +4,7 @@ import com.cool.store.constants.RedisConstant; import com.cool.store.dao.*; import com.cool.store.dto.FoodTokenDTO; import com.cool.store.dto.GetAccessTokenDTO; +import com.cool.store.dto.HqtTokenDTO; import com.cool.store.dto.ModifyPasswordDTO; import com.cool.store.entity.*; import com.cool.store.enums.DownSystemTypeEnum; @@ -419,4 +420,9 @@ public class PCTestController { return ResponseResult.success(Boolean.TRUE); } + @GetMapping("/getHqtToken") + public ResponseResult getHqtToken() { + return ResponseResult.success(pushService.getHqtToken()); + } + } diff --git a/coolstore-partner-web/src/main/resources/application-online.properties b/coolstore-partner-web/src/main/resources/application-online.properties index 59867a8b7..5bde8657b 100644 --- a/coolstore-partner-web/src/main/resources/application-online.properties +++ b/coolstore-partner-web/src/main/resources/application-online.properties @@ -128,4 +128,10 @@ cool.api.secret=wP4sN6dL8zK2xM9c special.user.id=wpayJeDAAAklx_q1jGhyGUd4yEh8vV_g_woayJeDAAAtwLSAPVMWbpGi9q4caSujg -ask.bot.url=https://auth.wx.askbot.cn \ No newline at end of file +ask.bot.url=https://auth.wx.askbot.cn + +hqt.token.url=https://tc.cloud.hecom.cn +hqt.token.username=18820154831 +hqt.token.grant_type=client_credentials +hqt.token.client.id=WrPffdGpcWkcPsbN +hqt.token.client.secret=rYe9Cwug5LwQNIBJAiW0a7weF9CAhYCD \ No newline at end of file diff --git a/coolstore-partner-web/src/main/resources/application-test.properties b/coolstore-partner-web/src/main/resources/application-test.properties index c3818e5ea..935fa3ee3 100644 --- a/coolstore-partner-web/src/main/resources/application-test.properties +++ b/coolstore-partner-web/src/main/resources/application-test.properties @@ -5,7 +5,7 @@ default.datasource.username=coolstore default.datasource.password=CSCErYcXniNYm7bT #redis -redis.host.uri=http://userInfo:Cx111111@tstore-coolcollege.redis.rds.aliyuncs.com:6379/0 +redis.host.uri=http://userInfo:Cx111111@tstore-coolcollege-open.redis.rds.aliyuncs.com:6379/0 #pagehelper pagehelper.helper-dialect=mysql @@ -134,3 +134,10 @@ special.user.id=wpayJeDAAAhGIFgUJpJN-zg39JuNbYhg_woayJeDAAA0TC8mkCJeXouw94hYA-D3 ask.bot.url=https://test.auth.wx.askbot.cn + +hqt.token.url=https://tc.cloud.hecom.cn +hqt.token.username=18820154831 +hqt.token.grant_type=client_credentials +hqt.token.client.id=WrPffdGpcWkcPsbN +hqt.token.client.secret=rYe9Cwug5LwQNIBJAiW0a7weF9CAhYCD +