diff --git a/doc/source/auth/auth.php b/doc/source/auth/auth.php new file mode 100644 index 00000000..ba4c2025 --- /dev/null +++ b/doc/source/auth/auth.php @@ -0,0 +1,58 @@ + $this->appKey, + 'method' => 'token.create', + 'timestamp' => date('Y-m-d H:i:s'), + 'v' => 2, + 'param_json' => json_encode([ + 'code' => $code, + 'grant_type' => 'authorization_code', + ]) + ); + $params['sign'] = $this->createSign($params); + + $url = $this->buildUrl($this->tokenUrl, $params); + $url = $this->transferChars($url); + + $json = $this->curl($url); + $resp = json_decode($json, true); + return $resp['data']; + } + + + private function createSign($sysParams) { + ksort($sysParams); + + $md5Str = ''; + foreach ($sysParams as $key => $val) { + $md5Str .= $key . $val; + } + + $md5Str = $this->appSecret . $md5Str . $this->appSecret; + return md5($md5Str); + } + + + private function buildUrl($url, $requestParams) { + $params = ''; + foreach ($requestParams as $key => $val) { + $params .= $key . '=' . $val . '&'; + } + $params = substr($params, 0 , -1); + + $url = $url . '?' . $params; + + return $url; + } + + + private function transferChars($url) { + return str_replace(['"', ' '], ['%22', '%20'], $url);; + } +} \ No newline at end of file diff --git a/ms-biz/src/main/java/com/ms/api/DsTestJavaRequestService.java b/ms-biz/src/main/java/com/ms/api/DsTestJavaRequestService.java index fa110cc5..b81f369c 100644 --- a/ms-biz/src/main/java/com/ms/api/DsTestJavaRequestService.java +++ b/ms-biz/src/main/java/com/ms/api/DsTestJavaRequestService.java @@ -5,9 +5,11 @@ import com.jinritemai.cloud.base.api.BaseRequest; import com.jinritemai.cloud.base.api.BaseResponse; import com.jinritemai.cloud.base.api.ExtensionService; import com.jinritemai.cloud.base.api.ExtensionServiceHandler; +import com.ms.api.common.R; import com.ms.api.dto.ItemDTO; import com.ms.api.tool.DsFormRequestTemplate; import com.ms.api.common.UniqueKeyMultiValueMap; +import com.ms.api.tool.DsJsonRequestTemplate; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.MultiValueMap; @@ -18,22 +20,25 @@ import java.util.HashMap; @Slf4j public class DsTestJavaRequestService implements ExtensionServiceHandler { +// @Autowired +// private DsFormRequestTemplate dsFormRequestTemplate; + @Autowired - private DsFormRequestTemplate dsFormRequestTemplate; + private DsJsonRequestTemplate dsJsonRequestTemplate; @Override public BaseResponse handle(BaseRequest req) { - MultiValueMap params = new UniqueKeyMultiValueMap<>(); + MultiValueMap params = new UniqueKeyMultiValueMap<>(); // List arrayString = new ArrayList(); // arrayString.add("arrayString1"); // arrayString.add("arrayString2"); // params.add("arrayString", JSON.toJSONString(arrayString)); - HashMap mapStringString = new HashMap(); + HashMap mapStringString = new HashMap<>(); mapStringString.put("A","mapStringString1"); mapStringString.put("B","mapStringString2"); - params.add("mapStringString", JSON.toJSONString(mapStringString)); + params.add("mapStringString", mapStringString); // // List arrayInt64 = new ArrayList(); // arrayInt64.add(10000); @@ -53,17 +58,12 @@ public class DsTestJavaRequestService implements ExtensionServiceHandlerbuilder() - .success(true) - .message("success") - .data(res) - .code("10000") - .build(); + return R.ok(res); } } diff --git a/ms-biz/src/main/java/com/ms/api/spi/auth/GetPlatformAuthUrlService.java b/ms-biz/src/main/java/com/ms/api/spi/auth/GetPlatformAuthUrlService.java index 83b9ae49..f7e751f9 100644 --- a/ms-biz/src/main/java/com/ms/api/spi/auth/GetPlatformAuthUrlService.java +++ b/ms-biz/src/main/java/com/ms/api/spi/auth/GetPlatformAuthUrlService.java @@ -33,6 +33,8 @@ public class GetPlatformAuthUrlService extends SPIBaseService implements Extensi // ----逻辑校验---- // ----业务处理---- + // TODO 群里讨论过说,先判断下获取授权信息列表,如果授权过,就不用再获取这个链接 open/platform_shop/get_platform_auth_url + MultiValueMap params = new UniqueKeyMultiValueMap<>(); params.add("userId", SecurityTool.encodeByAES(fields.getUserId())); params.add("platform","ddMicroApp"); diff --git a/ms-biz/src/main/java/com/ms/api/spi/callback/PlatformAuthCallBackService.java b/ms-biz/src/main/java/com/ms/api/spi/common/CallBackMessageService.java similarity index 80% rename from ms-biz/src/main/java/com/ms/api/spi/callback/PlatformAuthCallBackService.java rename to ms-biz/src/main/java/com/ms/api/spi/common/CallBackMessageService.java index 5e6f943d..7d630223 100644 --- a/ms-biz/src/main/java/com/ms/api/spi/callback/PlatformAuthCallBackService.java +++ b/ms-biz/src/main/java/com/ms/api/spi/common/CallBackMessageService.java @@ -1,4 +1,4 @@ -package com.ms.api.spi.callback; +package com.ms.api.spi.common; import com.alibaba.fastjson.JSON; import com.jinritemai.cloud.base.api.BaseRequest; @@ -16,9 +16,9 @@ import java.util.Map; /** * 获取授权1688授权回调地址 */ -@ExtensionService("platformAuthCallBack") +@ExtensionService("callBackMessage") @Slf4j -public class PlatformAuthCallBackService extends SPIBaseService implements ExtensionServiceHandler> { +public class CallBackMessageService extends SPIBaseService implements ExtensionServiceHandler> { @Override public BaseResponse> handle(BaseRequest req) { diff --git a/ms-biz/src/main/java/com/ms/api/tool/DsJsonRequestTemplate.java b/ms-biz/src/main/java/com/ms/api/tool/DsJsonRequestTemplate.java new file mode 100644 index 00000000..533c371a --- /dev/null +++ b/ms-biz/src/main/java/com/ms/api/tool/DsJsonRequestTemplate.java @@ -0,0 +1,81 @@ +package com.ms.api.tool; + +import cn.hutool.crypto.SecureUtil; +import com.alibaba.fastjson.JSON; +import com.ms.api.common.UniqueKeyMultiValueMap; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Component; +import org.springframework.util.MultiValueMap; +import org.springframework.util.StringUtils; + +import java.util.Arrays; +import java.util.Set; + +/** + * 调用分销代理服务(DS)工具模板类 + * 表单形式 + */ +@Slf4j +@Component +public class DsJsonRequestTemplate { + + @Autowired + private CloudRequestTemplate cloudRequestTemplate; + + @Value("${jx.ds.host-prod}") + private String dsHostProd; + + @Value("${jx.ds.host-test}") + private String dsHostTest; + + @Value("${jx.ds.token-prod}") + private String dsTokenProd; + + @Value("${jx.ds.token-test}") + private String dsTokenTest; + + private String dsHost; + private String dsToken; + + public String execute(String url, T body) throws Exception { + // 选择环境 + if (StringUtils.isEmpty(dsHost)) { + String activeProfile = System.getenv("sys-deploy-env"); + if ("Prod".equals(activeProfile)) { + // 当前为生产环境 + dsHost = dsHostProd; + dsToken = dsTokenProd; + } else { + dsHost = dsHostTest; + dsToken = dsTokenTest; + } + } + + // 构建头部 + HttpHeaders headers = new HttpHeaders(); + // 微应用固定传msddMicro + headers.set("x-app-name", "msddMicro"); + // 使用json方式更符合外部服务管理 + headers.setContentType(MediaType.APPLICATION_JSON); + MultiValueMap params = (UniqueKeyMultiValueMap)body; + // 构建签名 + Set keySet = params.keySet(); + String[] keyArray = keySet.toArray(new String[0]); + Arrays.sort(keyArray); + StringBuilder sb = new StringBuilder(); + sb.append(dsToken); + for (String s : keyArray) { + sb.append(s).append(JSON.toJSONString(params.getFirst(s))); + } + sb.append(dsToken); + String sign = SecureUtil.md5(sb.toString()); + headers.set("x-dd-micro-app-sign", sign); + + return cloudRequestTemplate.executePost(dsHost + url, JSON.toJSONString(params), headers); + } + +}