no message

This commit is contained in:
2025-10-25 20:36:47 +08:00
parent 09412ff8fe
commit d47caef111
7 changed files with 237 additions and 7 deletions

View File

@ -1,7 +1,9 @@
package com.sczx.order.controller; package com.sczx.order.controller;
import com.meituan.sdk.auth.MeituanTokenResponse; import com.meituan.sdk.auth.MeituanTokenResponse;
import com.sczx.order.common.Result;
import com.sczx.order.service.DouyinService; import com.sczx.order.service.DouyinService;
import com.sczx.order.service.MeiTuanService;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -19,26 +21,51 @@ public class VerifyController {
@Autowired @Autowired
private DouyinService douyinService; private DouyinService douyinService;
@ApiOperation(value = "接收需同步数据接口") @Autowired
private MeiTuanService meituanService;
@ApiOperation(value = "接收美团Token数据接口")
@GetMapping("/authorization") @GetMapping("/authorization")
public String authorization(@RequestParam("code") String code, @RequestParam("sign") String sign, @RequestParam("developerId") Long developerId, @RequestParam("businessId") int businessId, public Result<String> authorization(@RequestParam("code") String code, @RequestParam("sign") String sign, @RequestParam("developerId") Long developerId, @RequestParam("businessId") int businessId,
@RequestParam("state") String state){ @RequestParam("state") String state){
log.info("接收美团授权数据 - code: {}, sign: {}, developerId: {}, businessId: {}, state: {}", log.info("接收美团授权数据 - code: {}, sign: {}, developerId: {}, businessId: {}, state: {}",
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 = "接收需据接口") @ApiOperation(value = "接收需据接口")
@GetMapping("/prepare") @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; 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;
}
} }

View File

@ -12,4 +12,6 @@ public interface DouyinService {
void prepare(List<String> orderIds) throws Exception; void prepare(List<String> orderIds) throws Exception;
MeituanTokenResponse getAccessToken(String code); MeituanTokenResponse getAccessToken(String code);
MeituanTokenResponse prepare(String code);
} }

View File

@ -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<TuangouReceiptConsumeResponse> consume(String code);
MeituanTokenResponse refreshAccessToken(String refreshToken);
}

View File

@ -9,8 +9,11 @@ import com.douyin.openapi.credential.models.Config;
import com.meituan.sdk.DefaultMeituanClient; import com.meituan.sdk.DefaultMeituanClient;
import com.meituan.sdk.MeituanClient; import com.meituan.sdk.MeituanClient;
import com.meituan.sdk.MeituanResponse;
import com.meituan.sdk.auth.MeituanTokenResponse; import com.meituan.sdk.auth.MeituanTokenResponse;
import com.meituan.sdk.internal.utils.SignerUtil; 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.common.Result;
import com.sczx.order.config.DouyinTokenManager; import com.sczx.order.config.DouyinTokenManager;
import com.sczx.order.exception.InnerException; import com.sczx.order.exception.InnerException;
@ -47,7 +50,9 @@ public class DouyinServiceImpl implements DouyinService {
private Long DeveloperId = 116997L; private Long DeveloperId = 116997L;
private String Signkey = "n8xihtshk7t1luvi"; private String Signkey = "n8xlhtshk7t1luvi";
private String accessToken = "V2-26b8d231854d3fdf6a5c06273377a65e441e4c9f1c8cea4959c510bf0dd19ed7657e34bebe4b74aa455b80d3c757cd8a66e3ece9148e6d6838778db5f9600cf383dbf89c0cc27f07f777c98649bd94fe";
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
@ -61,6 +66,8 @@ public class DouyinServiceImpl implements DouyinService {
String longUrl = connection.getHeaderField("Location"); String longUrl = connection.getHeaderField("Location");
connection.disconnect(); connection.disconnect();
if (longUrl == null || longUrl.isEmpty()) { if (longUrl == null || longUrl.isEmpty()) {
return null; return null;
} }
@ -148,6 +155,34 @@ public class DouyinServiceImpl implements DouyinService {
return response; 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<TuangouReceiptPrepareResponse> 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) { } catch (Exception e) {
log.error("获取access_token异常", e); log.error("获取access_token异常", e);
return null; return null;

View File

@ -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<TuangouReceiptPrepareResponse> 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<TuangouReceiptConsumeResponse> 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<TuangouReceiptConsumeResponse> response = meituanClient.invokeApi(tuangouReceiptConsumeRequest, appAuthToken);
log.info("获取access_token响应结果: {}", JSONObject.toJSONString(response));
return response;
} catch (MtSdkException e) {
e.printStackTrace();
return null;
}
}
}

View File

@ -36,4 +36,7 @@ public interface StoreFacade {
@PostMapping("/wallet/distibIncome") @PostMapping("/wallet/distibIncome")
Result<Boolean> distibIncome(@RequestBody DistibIncomeReq distibIncomeReq); Result<Boolean> distibIncome(@RequestBody DistibIncomeReq distibIncomeReq);
@PostMapping("/store/recordToken")
Result<Boolean> recordToken(@RequestParam(name = "storeNumber") String storeNumber, @RequestParam(name = "token") String token);
} }

View File

@ -106,4 +106,17 @@ public class StoreInteg {
} }
return false; return false;
} }
public boolean recordToken(String storeNumber, String token){
try{
Result<Boolean> result = storeFacade.recordToken(storeNumber, token);
if(result.isSuccess()){
return result.getData();
}
} catch (Exception e){
log.error("记录门店token失败",e);
throw new InnerException("记录门店token失败");
}
return false;
}
} }