|
@@ -1,23 +1,28 @@
|
|
|
package com.bs.logisticslnfoapi.controller;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.aliyuncs.CommonRequest;
|
|
|
import com.aliyuncs.CommonResponse;
|
|
|
import com.aliyuncs.DefaultAcsClient;
|
|
|
import com.aliyuncs.IAcsClient;
|
|
|
+import com.aliyuncs.exceptions.ClientException;
|
|
|
import com.aliyuncs.http.MethodType;
|
|
|
+import com.aliyuncs.http.ProtocolType;
|
|
|
import com.aliyuncs.profile.DefaultProfile;
|
|
|
+import com.aliyuncs.profile.IClientProfile;
|
|
|
+import com.aliyuncs.sts.model.v20150401.AssumeRoleRequest;
|
|
|
+import com.aliyuncs.sts.model.v20150401.AssumeRoleResponse;
|
|
|
import com.bs.logisticslnfoapi.bean.ApiLog;
|
|
|
import com.bs.logisticslnfoapi.bean.alibb.AlibbQuerySmsDetailsRequest;
|
|
|
import com.bs.logisticslnfoapi.bean.alibb.AlibbSendSmsRequest;
|
|
|
+import com.bs.logisticslnfoapi.bean.alibb.OssTokenBean;
|
|
|
+import com.bs.logisticslnfoapi.bean.alibb.OssTokenRequestBean;
|
|
|
import com.bs.logisticslnfoapi.service.log.LogService;
|
|
|
import com.bs.logisticslnfoapi.util.Enum.PlatformEnum;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.web.bind.annotation.CrossOrigin;
|
|
|
-import org.springframework.web.bind.annotation.RequestBody;
|
|
|
-import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
-import org.springframework.web.bind.annotation.RestController;
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
@@ -35,6 +40,10 @@ import java.util.Date;
|
|
|
@RequestMapping(value ="/logistics/alibb")
|
|
|
public class AlibbController {
|
|
|
|
|
|
+ // 目前只有"cn-hangzhou"这个region可用, 不要使用填写其他region的值
|
|
|
+ public static final String REGION_CN_HANGZHOU = "cn-hangzhou";
|
|
|
+ public static final String STS_API_VERSION = "2015-04-01";
|
|
|
+
|
|
|
@Autowired
|
|
|
private LogService logService;
|
|
|
|
|
@@ -66,6 +75,7 @@ public class AlibbController {
|
|
|
addLog(startTime, JSON.toJSONString(request), response,request.getUrl());
|
|
|
return response.getData();
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* 阿里巴巴短信结果查询
|
|
|
* @param request
|
|
@@ -101,9 +111,65 @@ public class AlibbController {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * APP获取OSS临时token接口
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @PostMapping("/ossSecurityToken")
|
|
|
+ public Object ossSecurityToken(@RequestBody OssTokenRequestBean ossTokenRequestBean) throws Exception{
|
|
|
+ try {
|
|
|
+ ossTokenRequestBean.setProtocolType(ProtocolType.HTTPS);
|
|
|
+ final AssumeRoleResponse stsResponse = assumeRole(ossTokenRequestBean.getAccessKeyId(), ossTokenRequestBean.getAccessKeySecret(), ossTokenRequestBean.getRoleArn(), ossTokenRequestBean.getRoleSessionName(),
|
|
|
+ ossTokenRequestBean.getPolicy(), ossTokenRequestBean.getProtocolType(), ossTokenRequestBean.getDurationSeconds());
|
|
|
+ log.info("【Alibb APP获取OSS临时token接口返回参数】:{}",JSONObject.toJSONString(stsResponse.getCredentials()));
|
|
|
+ return OssTokenBean.builder()
|
|
|
+ .statusCode("200")
|
|
|
+ .accessKeyId(stsResponse.getCredentials().getAccessKeyId())
|
|
|
+ .accessKeySecret(stsResponse.getCredentials().getAccessKeySecret())
|
|
|
+ .securityToken(stsResponse.getCredentials().getSecurityToken())
|
|
|
+ .expiration(stsResponse.getCredentials().getExpiration())
|
|
|
+ .build();
|
|
|
+ } catch (ClientException e) {
|
|
|
+ return OssTokenBean.builder()
|
|
|
+ .statusCode("500")
|
|
|
+ .ErrorCode(e.getErrCode())
|
|
|
+ .ErrorMessage(e.getErrMsg())
|
|
|
+ .build();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ protected AssumeRoleResponse assumeRole(String accessKeyId, String accessKeySecret, String roleArn,
|
|
|
+ String roleSessionName, String policy, ProtocolType protocolType, long durationSeconds) throws ClientException
|
|
|
+ {
|
|
|
+ try {
|
|
|
+ // 创建一个 Aliyun Acs Client, 用于发起 OpenAPI 请求
|
|
|
+ IClientProfile profile = DefaultProfile.getProfile(REGION_CN_HANGZHOU, accessKeyId, accessKeySecret);
|
|
|
+ DefaultAcsClient client = new DefaultAcsClient(profile);
|
|
|
+
|
|
|
+ // 创建一个 AssumeRoleRequest 并设置请求参数
|
|
|
+ final AssumeRoleRequest request = new AssumeRoleRequest();
|
|
|
+ request.setVersion(STS_API_VERSION);
|
|
|
+ request.setMethod(MethodType.POST);
|
|
|
+ request.setProtocol(protocolType);
|
|
|
+
|
|
|
+ request.setRoleArn(roleArn);
|
|
|
+ request.setRoleSessionName(roleSessionName);
|
|
|
+ request.setPolicy(policy);
|
|
|
+ request.setDurationSeconds(durationSeconds);
|
|
|
+
|
|
|
+ // 发起请求,并得到response
|
|
|
+ final AssumeRoleResponse response = client.getAcsResponse(request);
|
|
|
+
|
|
|
+ return response;
|
|
|
+ } catch (ClientException e) {
|
|
|
+ throw e;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 阿里调用接口新增日志
|
|
|
* @param startTime
|
|
|
- * @param commonRequest
|
|
|
+ * @param request
|
|
|
* @param response
|
|
|
*/
|
|
|
private void addLog(long startTime, String request, CommonResponse response,String url) {
|