From d47caef1113765f8a7045b6af78b644d133e0b14 Mon Sep 17 00:00:00 2001 From: eric <465889110@qq.com> Date: Sat, 25 Oct 2025 20:36:47 +0800 Subject: [PATCH] no message --- .../order/controller/VerifyController.java | 39 ++++- .../com/sczx/order/service/DouyinService.java | 2 + .../sczx/order/service/MeiTuanService.java | 17 +++ .../order/service/impl/DouyinServiceImpl.java | 37 ++++- .../service/impl/MeiTuanServiceImpl.java | 133 ++++++++++++++++++ .../order/thirdpart/facade/StoreFacade.java | 3 + .../thirdpart/integration/StoreInteg.java | 13 ++ 7 files changed, 237 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/sczx/order/service/MeiTuanService.java create mode 100644 src/main/java/com/sczx/order/service/impl/MeiTuanServiceImpl.java diff --git a/src/main/java/com/sczx/order/controller/VerifyController.java b/src/main/java/com/sczx/order/controller/VerifyController.java index f7bb1f2..1a2af54 100644 --- a/src/main/java/com/sczx/order/controller/VerifyController.java +++ b/src/main/java/com/sczx/order/controller/VerifyController.java @@ -1,7 +1,9 @@ package com.sczx.order.controller; import com.meituan.sdk.auth.MeituanTokenResponse; +import com.sczx.order.common.Result; import com.sczx.order.service.DouyinService; +import com.sczx.order.service.MeiTuanService; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -19,26 +21,51 @@ public class VerifyController { @Autowired private DouyinService douyinService; - @ApiOperation(value = "接收需同步数据接口") + @Autowired + private MeiTuanService meituanService; + + @ApiOperation(value = "接收美团Token数据接口") @GetMapping("/authorization") - public String authorization(@RequestParam("code") String code, @RequestParam("sign") String sign, @RequestParam("developerId") Long developerId, @RequestParam("businessId") int businessId, - @RequestParam("state") String state){ + public Result authorization(@RequestParam("code") String code, @RequestParam("sign") String sign, @RequestParam("developerId") Long developerId, @RequestParam("businessId") int businessId, + @RequestParam("state") String state){ log.info("接收美团授权数据 - code: {}, sign: {}, developerId: {}, businessId: {}, state: {}", code, sign, developerId, businessId, state); + //接收code,记录state(门店编号) + //MeituanTokenResponse response = meituanService.getAccessToken(code,state); - return code; + return Result.ok(meituanService.getAccessToken(code,state)); } @ApiOperation(value = "接收需据接口") @GetMapping("/prepare") - public MeituanTokenResponse prepare(@RequestParam("code") String code) throws Exception { + public MeituanTokenResponse prepare(@RequestParam("code") String code,@RequestParam("state") String state) throws Exception { - MeituanTokenResponse response = douyinService.getAccessToken( code); + MeituanTokenResponse response = meituanService.getAccessToken( code,state); return response; } + @ApiOperation(value = "接收需据接口") + @GetMapping("/mtprepare") + public MeituanTokenResponse mtprepare(@RequestParam("code") String code) throws Exception { + + + MeituanTokenResponse response = meituanService.prepare( code); + + return response; + } + + + @ApiOperation(value = "接收需据接口") + @GetMapping("/consume") + public MeituanTokenResponse consume(@RequestParam("code") String code) throws Exception { + + + MeituanTokenResponse response = meituanService.prepare( code); + + return response; + } } diff --git a/src/main/java/com/sczx/order/service/DouyinService.java b/src/main/java/com/sczx/order/service/DouyinService.java index 3448513..c6a7359 100644 --- a/src/main/java/com/sczx/order/service/DouyinService.java +++ b/src/main/java/com/sczx/order/service/DouyinService.java @@ -12,4 +12,6 @@ public interface DouyinService { void prepare(List orderIds) throws Exception; MeituanTokenResponse getAccessToken(String code); + + MeituanTokenResponse prepare(String code); } diff --git a/src/main/java/com/sczx/order/service/MeiTuanService.java b/src/main/java/com/sczx/order/service/MeiTuanService.java new file mode 100644 index 0000000..61e94f3 --- /dev/null +++ b/src/main/java/com/sczx/order/service/MeiTuanService.java @@ -0,0 +1,17 @@ +package com.sczx.order.service; + +import com.meituan.sdk.MeituanResponse; +import com.meituan.sdk.auth.MeituanTokenResponse; +import com.meituan.sdk.model.ddzh.tuangou.tuangouReceiptConsume.TuangouReceiptConsumeResponse; + +public interface MeiTuanService { + + MeituanTokenResponse getAccessToken(String code , String state); + + MeituanTokenResponse prepare(String code); + + MeituanResponse consume(String code); + + MeituanTokenResponse refreshAccessToken(String refreshToken); + +} diff --git a/src/main/java/com/sczx/order/service/impl/DouyinServiceImpl.java b/src/main/java/com/sczx/order/service/impl/DouyinServiceImpl.java index 29a95b4..388e217 100644 --- a/src/main/java/com/sczx/order/service/impl/DouyinServiceImpl.java +++ b/src/main/java/com/sczx/order/service/impl/DouyinServiceImpl.java @@ -9,8 +9,11 @@ import com.douyin.openapi.credential.models.Config; import com.meituan.sdk.DefaultMeituanClient; import com.meituan.sdk.MeituanClient; +import com.meituan.sdk.MeituanResponse; import com.meituan.sdk.auth.MeituanTokenResponse; import com.meituan.sdk.internal.utils.SignerUtil; +import com.meituan.sdk.model.ddzh.tuangou.tuangouReceiptPrepare.TuangouReceiptPrepareRequest; +import com.meituan.sdk.model.ddzh.tuangou.tuangouReceiptPrepare.TuangouReceiptPrepareResponse; import com.sczx.order.common.Result; import com.sczx.order.config.DouyinTokenManager; import com.sczx.order.exception.InnerException; @@ -47,7 +50,9 @@ public class DouyinServiceImpl implements DouyinService { private Long DeveloperId = 116997L; - private String Signkey = "n8xihtshk7t1luvi"; + private String Signkey = "n8xlhtshk7t1luvi"; + + private String accessToken = "V2-26b8d231854d3fdf6a5c06273377a65e441e4c9f1c8cea4959c510bf0dd19ed7657e34bebe4b74aa455b80d3c757cd8a66e3ece9148e6d6838778db5f9600cf383dbf89c0cc27f07f777c98649bd94fe"; @Transactional(rollbackFor = Exception.class) @Override @@ -61,6 +66,8 @@ public class DouyinServiceImpl implements DouyinService { String longUrl = connection.getHeaderField("Location"); connection.disconnect(); + + if (longUrl == null || longUrl.isEmpty()) { return null; } @@ -148,6 +155,34 @@ public class DouyinServiceImpl implements DouyinService { return response; + } catch (Exception e) { + log.error("获取access_token异常", e); + return null; + } + } + + @Override + public MeituanTokenResponse prepare(String code) { + try { + MeituanClient meituanClient = DefaultMeituanClient.builder(DeveloperId, Signkey).build(); + + TuangouReceiptPrepareRequest tuangouReceiptPrepareRequest = new TuangouReceiptPrepareRequest(); + + tuangouReceiptPrepareRequest.setReceiptCode("0107945394376"); + + String appAuthToken = accessToken; + MeituanResponse response = meituanClient.invokeApi(tuangouReceiptPrepareRequest, appAuthToken); + + log.info("获取prepare响应结果: {}", JSONObject.toJSONString(response)); + if (response.isSuccess()) { + TuangouReceiptPrepareResponse resp = response.getData(); + System.out.println(resp); + } else { + System.out.println("调用失败"); + } + return null; + + } catch (Exception e) { log.error("获取access_token异常", e); return null; diff --git a/src/main/java/com/sczx/order/service/impl/MeiTuanServiceImpl.java b/src/main/java/com/sczx/order/service/impl/MeiTuanServiceImpl.java new file mode 100644 index 0000000..a377d8f --- /dev/null +++ b/src/main/java/com/sczx/order/service/impl/MeiTuanServiceImpl.java @@ -0,0 +1,133 @@ +package com.sczx.order.service.impl; + + +import com.alibaba.fastjson.JSONObject; +import com.meituan.sdk.DefaultMeituanClient; +import com.meituan.sdk.MeituanClient; +import com.meituan.sdk.MeituanResponse; +import com.meituan.sdk.auth.MeituanTokenResponse; +import com.meituan.sdk.internal.exceptions.MtSdkException; +import com.meituan.sdk.model.ddzh.tuangou.tuangouReceiptConsume.TuangouReceiptConsumeRequest; +import com.meituan.sdk.model.ddzh.tuangou.tuangouReceiptConsume.TuangouReceiptConsumeResponse; +import com.meituan.sdk.model.ddzh.tuangou.tuangouReceiptPrepare.TuangouReceiptPrepareRequest; +import com.meituan.sdk.model.ddzh.tuangou.tuangouReceiptPrepare.TuangouReceiptPrepareResponse; +import com.sczx.order.exception.BizException; +import com.sczx.order.service.MeiTuanService; +import com.sczx.order.thirdpart.integration.StoreInteg; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Slf4j +@Service +public class MeiTuanServiceImpl implements MeiTuanService { + + + private Long DeveloperId = 116997L; + + private String Signkey = "n8xlhtshk7t1luvi"; + + //private String accessToken = "V2-26b8d231854d3fdf6a5c06273377a65e441e4c9f1c8cea4959c510bf0dd19ed7657e34bebe4b74aa455b80d3c757cd8a66e3ece9148e6d6838778db5f9600cf383dbf89c0cc27f07f777c98649bd94fe"; + + private String accessToken = "V2-549da132ffebe5ce5731a17ae166cb899e13c579900d6cbc4163b60e4d40440ccbe8e56d25c3341cd1003c5529c407085c06af2eb41d2d091353b4d2be6f887582d9d4bf247cf9a511581ad46ade47e8"; + + @Autowired + private StoreInteg storeInteg; + + @Override + public MeituanTokenResponse getAccessToken(String code, String state) { + try { + // 使用美团SDK构建客户端 + MeituanClient client = DefaultMeituanClient.builder(DeveloperId, Signkey).build(); + + + // 使用美团SDK的getOAuthToken方法获取token + //MeituanTokenResponse response = client.getOAuthToken(58, code); + + + //log.info("获取access_token响应结果: {}", JSONObject.toJSONString(response)); + //String token = response.getData().getAccessToken(); + + storeInteg.recordToken(state, accessToken); + + return null; + + + } catch (Exception e) { + throw new BizException("订单不存在"); + } + } + + @Override + public MeituanTokenResponse prepare(String code) { + try { + MeituanClient meituanClient = DefaultMeituanClient.builder(DeveloperId, Signkey).build(); + + TuangouReceiptPrepareRequest tuangouReceiptPrepareRequest = new TuangouReceiptPrepareRequest(); + + tuangouReceiptPrepareRequest.setReceiptCode("0106972239359"); + + String appAuthToken = accessToken; + MeituanResponse response = meituanClient.invokeApi(tuangouReceiptPrepareRequest, appAuthToken); + + log.info("获取access_token响应结果: {}", JSONObject.toJSONString(response)); + + if (response.isSuccess()) { + TuangouReceiptPrepareResponse resp = response.getData(); + System.out.println(resp); + } else { + System.out.println("调用失败"); + } + return null; + + + } catch (Exception e) { + log.error("获取access_token异常", e); + return null; + } + } + + + @Override + public MeituanTokenResponse refreshAccessToken(String refreshToken) { + try { + MeituanClient meituanClient = DefaultMeituanClient.builder(DeveloperId, Signkey).build(); + + MeituanTokenResponse response = meituanClient.refreshToken(58, refreshToken); + + return response; + + } catch (Exception e) { + log.error("获取access_token异常", e); + return null; + } + } + + @Override + public MeituanResponse consume (String code) { + try { + MeituanClient meituanClient = DefaultMeituanClient.builder(DeveloperId, Signkey).build(); + + TuangouReceiptConsumeRequest tuangouReceiptConsumeRequest = new TuangouReceiptConsumeRequest(); + + tuangouReceiptConsumeRequest.setReceiptCode("0106972239359"); + tuangouReceiptConsumeRequest.setCount(1); + tuangouReceiptConsumeRequest.setRequestId("fdae143414"); + tuangouReceiptConsumeRequest.setAppShopAccountName("customer"); + tuangouReceiptConsumeRequest.setAppShopAccount("customer"); + + + String appAuthToken = accessToken; + MeituanResponse response = meituanClient.invokeApi(tuangouReceiptConsumeRequest, appAuthToken); + + log.info("获取access_token响应结果: {}", JSONObject.toJSONString(response)); + return response; + } catch (MtSdkException e) { + e.printStackTrace(); + return null; + } + } + + +} + diff --git a/src/main/java/com/sczx/order/thirdpart/facade/StoreFacade.java b/src/main/java/com/sczx/order/thirdpart/facade/StoreFacade.java index 4604433..1f4b335 100644 --- a/src/main/java/com/sczx/order/thirdpart/facade/StoreFacade.java +++ b/src/main/java/com/sczx/order/thirdpart/facade/StoreFacade.java @@ -36,4 +36,7 @@ public interface StoreFacade { @PostMapping("/wallet/distibIncome") Result distibIncome(@RequestBody DistibIncomeReq distibIncomeReq); + + @PostMapping("/store/recordToken") + Result recordToken(@RequestParam(name = "storeNumber") String storeNumber, @RequestParam(name = "token") String token); } diff --git a/src/main/java/com/sczx/order/thirdpart/integration/StoreInteg.java b/src/main/java/com/sczx/order/thirdpart/integration/StoreInteg.java index 8bf93c4..d0eb264 100644 --- a/src/main/java/com/sczx/order/thirdpart/integration/StoreInteg.java +++ b/src/main/java/com/sczx/order/thirdpart/integration/StoreInteg.java @@ -106,4 +106,17 @@ public class StoreInteg { } return false; } + + public boolean recordToken(String storeNumber, String token){ + try{ + Result result = storeFacade.recordToken(storeNumber, token); + if(result.isSuccess()){ + return result.getData(); + } + } catch (Exception e){ + log.error("记录门店token失败",e); + throw new InnerException("记录门店token失败"); + } + return false; + } }