Merge #16 into master from cc_20250916_new
大屏Iot获取token接口
* cc_20250916_new: (6 commits squashed)
- feat:第三方Iot接口对接
- Merge branch 'refs/heads/master' into cc_20250916_new
# Conflicts:
#	coolstore-partner-web/src/main/resources/application-local.properties
- fix
- fix:修改http请求工具
- Merge branch 'refs/heads/master' into cc_20250916_new
# Conflicts:
#	coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java
#	coolstore-partner-web/src/main/resources/application-ab.properties
#	coolstore-partner-web/src/main/resources/application-local.properties
#	coolstore-partner-web/src/main/resources/application-online.properties
#	coolstore-partner-web/src/main/resources/application-test.properties
- fix:短信签名修改
Signed-off-by: 王非凡 <accounts_67eba0c5fee9c49c80c8e2b4@mail.teambition.com>
Reviewed-by: 苏竹红 <570057076@qq.com>
Merged-by: 苏竹红 <570057076@qq.com>
CR-link: https://codeup.aliyun.com/692ea314dec569489f6f167c/hangzhou/java/custom_zxjp/change/16
This commit is contained in:
@@ -314,8 +314,11 @@ public enum ErrorCodeEnum {
|
||||
MESSAGE_NOT_HANDLED(1610008,"当前消息无需处理,请确认消息处理类型!",null),
|
||||
MESSAGE_PUBLISH(1610009,"您选择通知任务正在发布中,请稍后重试!",null),
|
||||
|
||||
NOT_FLAGSHIP_STORE(1610010,"非直营店,无法跳过缴费阶段!",null),
|
||||
NOT_FLAGSHIP_STORE_NOT_EXIST(1610011,"当前阶段加盟类型不能变更!",null),
|
||||
NOT_FLAGSHIP_STORE(16100005,"非直营店,无法跳过缴费阶段!",null),
|
||||
NOT_FLAGSHIP_STORE_NOT_EXIST(16100006,"当前阶段加盟类型不能变更!",null),
|
||||
|
||||
API_ERROR(1610007,"第三方API请求异常",null),
|
||||
|
||||
JOIN_MODE_NOT_ALLOW_OPERATE(1610012,"加盟部人员只能新建加盟店或联营店,请确认!",null),
|
||||
STORE_NOT_FIND(1610013,"门店不存在",null),
|
||||
SHOP_NAME_INVALID(1610014, "门店名称包含禁止关键词",null),
|
||||
|
||||
@@ -133,7 +133,7 @@ public class CommonService {
|
||||
return;
|
||||
}
|
||||
List<String> signNameList = new ArrayList<>();
|
||||
signNameList.add("酷店掌");
|
||||
signNameList.add("杭州好多店智能科技");
|
||||
AsyncClient client = null;
|
||||
try {
|
||||
StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.cool.store.service.iot;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 第三方Iot
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2025/10/20
|
||||
*/
|
||||
public interface ThirdIotService {
|
||||
|
||||
/**
|
||||
* 获取token
|
||||
*/
|
||||
Map<String, Object> getToken();
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
package com.cool.store.service.iot.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cool.store.mq.util.HttpRestTemplateService;
|
||||
import com.cool.store.service.iot.ThirdIotService;
|
||||
import com.cool.store.utils.Md5Utils;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.text.MessageFormat;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 第三方Iot 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2025/10/20
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
public class ThirdIotServiceImpl implements ThirdIotService {
|
||||
private final HttpRestTemplateService restTemplateService;
|
||||
|
||||
@Value("${zx.iot.appId}")
|
||||
private String appId;
|
||||
@Value("${zx.iot.appSecret}")
|
||||
private String appSecret;
|
||||
|
||||
public static final String BASE_URL = "https://zhengxin.ks.osvlabs.com:31310/api";
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getToken() {
|
||||
String url = BASE_URL + "/system/third-party/auth?timestamp={0}&appId={1}&sign={2}";
|
||||
Long timestamp = System.currentTimeMillis() / 1000;
|
||||
HashMap<String, Object> params = new HashMap<>();
|
||||
params.put("appId", appId);
|
||||
params.put("timestamp", timestamp);
|
||||
String sign = sign(params, appSecret);
|
||||
log.info("send request");
|
||||
Map result = restTemplateService.postForObject(MessageFormat.format(url, String.valueOf(timestamp), appId, sign), null, Map.class);
|
||||
log.info("response:{}", JSONObject.toJSONString(result));
|
||||
return result;
|
||||
}
|
||||
|
||||
private static String sign(Map<String, Object> param, String appSecret) {
|
||||
String paramStr = param.entrySet().stream()
|
||||
.sorted(Map.Entry.comparingByKey())
|
||||
.map(entry -> entry.getKey() + "=" + entry.getValue())
|
||||
.collect(Collectors.joining("&"));
|
||||
return Md5Utils.md5(paramStr + appSecret).toUpperCase();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package com.cool.store.controller.webb;
|
||||
|
||||
import com.cool.store.service.iot.ThirdIotService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 第三方Iot 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2025/10/20
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/pc/third/iot")
|
||||
@Api(tags = "第三方Iot")
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
public class ThirdIotController {
|
||||
private final ThirdIotService thirdIotService;
|
||||
|
||||
@ApiOperation("获取token")
|
||||
@PostMapping("/token")
|
||||
public Map<String, Object> getToken() {
|
||||
return thirdIotService.getToken();
|
||||
}
|
||||
}
|
||||
@@ -147,6 +147,8 @@ hqt.token.grant_type=client_credentials
|
||||
hqt.token.client.id=WrPffdGpcWkcPsbN
|
||||
hqt.token.client.secret=rYe9Cwug5LwQNIBJAiW0a7weF9CAhYCD
|
||||
|
||||
zx.iot.appId=p-ts3PhNyf
|
||||
zx.iot.appSecret=X4cVmfxM+
|
||||
#fuwuhao appId
|
||||
wechat.mp.appId=wx4a18ef8bb41aa55c
|
||||
wechat.mp.appSecret=793904b58f4ecdead3bbe4312c5f5c45
|
||||
|
||||
@@ -85,3 +85,6 @@ enterprise.dingCorpId=wpayJeDAAAklx_q1jGhyGUd4yEh8vV_g
|
||||
|
||||
|
||||
qywx.task.notice.url2=https://store-h5.coolstore.cn/?corpId=%s&appType=%s#/notice?target=%s¬iceType=zx&corpId=%s&appType=%s&eid=%s
|
||||
|
||||
zx.iot.appId=p-ts3PhNyf
|
||||
zx.iot.appSecret=X4cVmfxM+
|
||||
@@ -143,6 +143,9 @@ hqt.token.grant_type=client_credentials
|
||||
hqt.token.client.id=WrPffdGpcWkcPsbN
|
||||
hqt.token.client.secret=rYe9Cwug5LwQNIBJAiW0a7weF9CAhYCD
|
||||
|
||||
zx.iot.appId=p-ts3PhNyf
|
||||
zx.iot.appSecret=X4cVmfxM+
|
||||
|
||||
wallet.url=https://api.dev.wenmatech.com:443
|
||||
wallet.api.yzt.key=360155690205317
|
||||
cool.api.rsa.private.key=MIIEpQIBAAKCAQEA0erPAWesjkp9J4htmfCyqKS9npmT9dW3KqWTfb4c7x/QBUtKuokWOO0XikHd4bGUa9kl+twSv/5A3kYz1B9eg6wRuDJoads+G5U7rVQjzdoUtLaf3lNXkuSehl4uHUPQfNa6vcmvzraXPxJjEpYzj9WZh7uJqq2oSgw42H1qdbFCXSaE5BwsOb+2vZXjzh4RO10Sy3Qb1UqGsoZoxVzrtDeEctCjrecFyQr96L2UtYa4NTxSTfu4rgObrwIOMvqqnLsXEzK/rd6kIHYjkZYQCOa48AedWp2YKQ7Ldclj+VMLnXvl42J9exVkbs++8k3P5sI9fdZX4Ey2RBjnSoAo/QIDAQABAoIBACbBGi8I+CE77M+13wAu4RkD8xL7CQc3ic2ojGqIRPi7r5CuphD6mpzvXqtyfhd7DKr9h8bAxwBlnQ28ObjVgsI96/aM7dxvMs/uVPpqwIJyWuTDG5A05EPVC9REQnC6Mp09mnPL7rZz3Mfy6dIGY2YQWfwmWiPl1B45k+wZ+WPZPI0JVnvRzM881kf4aAhEAt08i9VoihylwVAjWIPmLuhf6ZcqI5q8iUsjfO22wZJsudVTCA/dsJdNxv+1RDKeYnSLJL79cZQcodqEhFqTy6vnn2dMsaHH7dpphU27barxUjeL482SR7kFfMqEXn5sltRn/3ep+3sf4Ph2vMtoZeECgYEA6gXzEtT9ZOeAMp4BRGmfNZ0TQLprPPVSwudz/uUBE4j/vyhfXkh9p7hqwyoxN+Z8b65yINvx8yP6hge6ek/MyAwBCZyfIRxZAPZu1eEGoYKl391ubFt2EIVqrN2DtAvzHMr5B/E2VHBq6AJm/rERFX5oKsg6zHS9tPLhgGnWVd0CgYEA5aFWOrtiqZJlp1MHQ4OeWBJatBSynkORdxCW7ic0CKbkYus0NSz1SsvskpbnfEXNB53x98qJxRhSopg/DC4m7XqxjSf9lY3HH4Y/9907olj33yGAnLWC88GivVndt577u/XhYRCk33vOQ3GoibEdjnpMOkWmOfwYG/FsRWWQvaECgYEA1N2siEisZIgel+wZAv2AD+hchtgKi1wqd5bIb+Yl4HsRBfPXK4+MnG6mzfcm5c4FCiEHNtRZc+waCKgm+vJzNtOUbgXEyP1cCAAgOPOCcI7CCqsDshRPhB+XNL4Y+kCUVnBZrNu/q3bGB1uIC8tL2t0sKx4OPcNCe8EhVQjwKRECgYEA4uothdhKRPtwDIsVsHfN74Yjr7SMVay7gIcaPrjqyGnzYnS+oJWOx50AaFNK6Rko5JAF3jF9NxE0B4yfMPAic6Y88hpEkpcJ4HMPn2Y1WdbFCu/WYgVUJICCys6VNLCcXj85umtyIY38Y9VbEMW/SV49GZBeFQqy4FoP/fvBrkECgYEAnfjTDYwgdmJdsUqyNzAocwcJXG2rVtYc7Txrl0TltcwuJmgoSywdzyOP2R9+NZsfoxWDzG0/yr15ApMvUcnnTwHN/8bGQ9SLatFLKqS4EtdwDKKS1JvNbs7V1myQGpt7jbShZOI0e6Fs4xP8ujxsLeGgiq9mZrS9UdRj5XKDoVM=
|
||||
|
||||
@@ -140,6 +140,9 @@ hqt.token.grant_type=client_credentials
|
||||
hqt.token.client.id=WrPffdGpcWkcPsbN
|
||||
hqt.token.client.secret=rYe9Cwug5LwQNIBJAiW0a7weF9CAhYCD
|
||||
|
||||
zx.iot.appId=p-ts3PhNyf
|
||||
zx.iot.appSecret=X4cVmfxM+
|
||||
|
||||
#fuwuhao appId
|
||||
wechat.mp.appId=wx4a18ef8bb41aa55c
|
||||
wechat.mp.appSecret=793904b58f4ecdead3bbe4312c5f5c45
|
||||
|
||||
@@ -145,6 +145,8 @@ hqt.token.grant_type=client_credentials
|
||||
hqt.token.client.id=WrPffdGpcWkcPsbN
|
||||
hqt.token.client.secret=rYe9Cwug5LwQNIBJAiW0a7weF9CAhYCD
|
||||
|
||||
zx.iot.appId=p-ts3PhNyf
|
||||
zx.iot.appSecret=X4cVmfxM+
|
||||
|
||||
#fuwuhao appId
|
||||
wechat.mp.appId=wx4a18ef8bb41aa55c
|
||||
@@ -152,9 +154,6 @@ wechat.mp.appSecret=793904b58f4ecdead3bbe4312c5f5c45
|
||||
#xiaochengxu appid
|
||||
wechat.miniapp.appId=wxd77a2761c1911ee1
|
||||
|
||||
zx.iot.appId=p-ts3PhNyf
|
||||
zx.iot.appSecret=X4cVmfxM+
|
||||
|
||||
|
||||
huoMa.token.url = https://www.huoMayunping.com/api/SAASLogin/merchant
|
||||
huoMa.id.url = https://www.huomayunping.com/api/reportCenter/executeSql
|
||||
|
||||
Reference in New Issue
Block a user