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:
王非凡
2025-12-19 09:07:35 +00:00
committed by 苏竹红
parent bd2d97130a
commit 32ae1b7315
10 changed files with 131 additions and 6 deletions

View File

@@ -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),

View File

@@ -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()

View File

@@ -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();
}

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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

View File

@@ -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&noticeType=zx&corpId=%s&appType=%s&eid=%s
zx.iot.appId=p-ts3PhNyf
zx.iot.appSecret=X4cVmfxM+

View File

@@ -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=

View File

@@ -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

View File

@@ -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