This commit is contained in:
六如
2024-11-10 23:17:17 +08:00
parent 0498d0f7b5
commit 1ee4b2384c
36 changed files with 178 additions and 382 deletions

View File

@@ -44,6 +44,33 @@ const apiRouters = [
roles: ["admin"] roles: ["admin"]
} }
} }
],
}
,
{
path: "/doc",
meta: {
title: "文档管理",
icon: "ep:document",
rank: 10
},
children: [
{
path: "/doc/setting",
name: "DocSetting",
meta: {
title: "基础配置",
roles: ["admin"]
}
},
{
path: "/doc/index",
name: "DocList",
meta: {
title: "文档管理",
roles: ["admin"]
}
}
] ]
} }
// , // ,

View File

@@ -0,0 +1,11 @@
<script setup lang="ts">
</script>
<template>
</template>
<style scoped lang="scss">
</style>

View File

@@ -44,9 +44,9 @@ import {
adaptive adaptive
@paginationChange="handlePaginationChange" @paginationChange="handlePaginationChange"
> >
<template #title> <!-- <template #title>
<el-button type="primary" @click="handleAdd">新增接口</el-button> <el-button type="primary" @click="handleAdd">新增接口</el-button>
</template> </template>-->
</PlusTable> </PlusTable>
<PlusDialogForm <PlusDialogForm
v-model:visible="dlgShow" v-model:visible="dlgShow"

View File

@@ -1,5 +1,6 @@
package com.gitee.sop.payment; package com.gitee.sop.payment;
import cn.torna.swaggerplugin.SwaggerPlugin; import cn.torna.swaggerplugin.SwaggerPlugin;
/** /**

View File

@@ -7,7 +7,6 @@ import com.gitee.sop.storyweb.open.resp.StoryResponse;
import com.gitee.sop.support.context.OpenContext; import com.gitee.sop.support.context.OpenContext;
import com.gitee.sop.support.dto.CommonFileData; import com.gitee.sop.support.dto.CommonFileData;
import com.gitee.sop.support.dto.FileData; import com.gitee.sop.support.dto.FileData;
import com.gitee.sop.support.dto.OpenRequest;
import com.gitee.sop.support.exception.OpenException; import com.gitee.sop.support.exception.OpenException;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.apache.dubbo.config.annotation.DubboService; import org.apache.dubbo.config.annotation.DubboService;
@@ -18,7 +17,6 @@ import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
@@ -32,23 +30,6 @@ public class OpenStoryImpl implements OpenStory {
@Override @Override
public Integer save(StorySaveDTO storySaveDTO) { public Integer save(StorySaveDTO storySaveDTO) {
System.out.println("save storySaveDTO:" + storySaveDTO);
System.out.println("appId:" + OpenContext.getAppId());
System.out.println("apiName:" + OpenContext.getApiName());
System.out.println("version:" + OpenContext.getVersion());
System.out.println("token:" + OpenContext.getAppAuthToken());
System.out.println("ip:" + OpenContext.getClientIp());
System.out.println("traceId:" + OpenContext.getTraceId());
System.out.println("locale:" + OpenContext.getLocale());
System.out.println("notifyUrl:" + OpenContext.getNotifyUrl());
Assert.notNull(OpenContext.getAppId());
Assert.notNull(OpenContext.getApiName());
Assert.notNull(OpenContext.getVersion());
Assert.notNull(OpenContext.getClientIp());
Assert.notNull(OpenContext.getTraceId());
Assert.notNull(OpenContext.getLocale());
return 1; return 1;
} }
@@ -91,30 +72,26 @@ public class OpenStoryImpl implements OpenStory {
// 演示获取上下文 // 演示获取上下文
@Override @Override
public StoryResponse getByIdV3(Long id, OpenRequest request) { public StoryResponse getContext(Long id, OpenContext context) {
StoryResponse storyResponse = new StoryResponse(); StoryResponse storyResponse = new StoryResponse();
storyResponse.setId(3); storyResponse.setId(3);
storyResponse.setName(request.toString()); storyResponse.setName(context.toString());
// 获取回调参数
String notifyUrl = request.getNotifyUrl(); String notifyUrl = context.getNotifyUrl();
System.out.println(notifyUrl); System.out.println(notifyUrl);
// 方式2
String notifyUrl2 = OpenContext.getNotifyUrl();
System.out.println(notifyUrl2);
System.out.println(Objects.equals(notifyUrl2, notifyUrl));
return storyResponse; return storyResponse;
} }
@Override @Override
public StoryResponse upload(StorySaveDTO storySaveDTO, FileData file) { public StoryResponse upload(StorySaveDTO storySaveDTO, FileData file) {
System.out.println("upload:" + storySaveDTO); System.out.println("getName:" + file.getName());
System.out.println("getOriginalFilename:" + file.getOriginalFilename());
checkFile(Arrays.asList(file)); checkFile(Arrays.asList(file));
StoryResponse storyResponse = new StoryResponse(); StoryResponse storyResponse = new StoryResponse();
storyResponse.setId(1); storyResponse.setId(1);
storyResponse.setName(storySaveDTO.getStoryName()); storyResponse.setName(file.getOriginalFilename());
return storyResponse; return storyResponse;
} }

View File

@@ -3,8 +3,8 @@ package com.gitee.sop.storyweb.open;
import com.gitee.sop.storyweb.open.req.StorySaveDTO; import com.gitee.sop.storyweb.open.req.StorySaveDTO;
import com.gitee.sop.storyweb.open.resp.StoryResponse; import com.gitee.sop.storyweb.open.resp.StoryResponse;
import com.gitee.sop.support.annotation.Open; import com.gitee.sop.support.annotation.Open;
import com.gitee.sop.support.context.OpenContext;
import com.gitee.sop.support.dto.FileData; import com.gitee.sop.support.dto.FileData;
import com.gitee.sop.support.dto.OpenRequest;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;
@@ -33,8 +33,8 @@ public interface OpenStory {
@Open(value = "story.get", version = "2.0") @Open(value = "story.get", version = "2.0")
StoryResponse getByIdV2(Long id); StoryResponse getByIdV2(Long id);
@Open(value = "story.get", version = "3.0") @Open(value = "story.get.context")
StoryResponse getByIdV3(Long id, OpenRequest request); StoryResponse getContext(Long id, OpenContext context);
// 默认方法,注解放在这里也有效 // 默认方法,注解放在这里也有效
@@ -52,13 +52,19 @@ public interface OpenStory {
// 演示多文件上传 // 演示多文件上传
@Open("story.upload.more") @Open("story.upload.more")
StoryResponse upload2(StorySaveDTO storySaveDTO, StoryResponse upload2(
StorySaveDTO storySaveDTO,
@NotNull(message = "身份证正面必填") FileData idCardFront, @NotNull(message = "身份证正面必填") FileData idCardFront,
@NotNull(message = "身份证背面必填") FileData idCardBack); @NotNull(message = "身份证背面必填") FileData idCardBack
);
// 演示多文件上传 // 演示多文件上传
@Open("story.upload.list") @Open("story.upload.list")
StoryResponse upload3(StorySaveDTO storySaveDTO, @Size(min = 2, message = "最少上传2个文件") List<FileData> files); StoryResponse upload3(
StorySaveDTO storySaveDTO,
@Size(min = 2, message = "最少上传2个文件")
List<FileData> files
);
// 下载 // 下载
@Open("story.download") @Open("story.download")

View File

@@ -18,11 +18,10 @@ import com.gitee.sop.gateway.service.RouteService;
import com.gitee.sop.gateway.service.interceptor.RouteInterceptor; import com.gitee.sop.gateway.service.interceptor.RouteInterceptor;
import com.gitee.sop.gateway.service.validate.Validator; import com.gitee.sop.gateway.service.validate.Validator;
import com.gitee.sop.gateway.util.ClassUtil; import com.gitee.sop.gateway.util.ClassUtil;
import com.gitee.sop.support.constants.AttachmentNames;
import com.gitee.sop.support.dto.CommonFileData; import com.gitee.sop.support.dto.CommonFileData;
import com.gitee.sop.support.dto.DefaultOpenRequest; import com.gitee.sop.support.context.DefaultOpenContext;
import com.gitee.sop.support.dto.FileData; import com.gitee.sop.support.dto.FileData;
import com.gitee.sop.support.dto.OpenRequest; import com.gitee.sop.support.context.OpenContext;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
@@ -33,8 +32,6 @@ import java.util.Optional;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.common.utils.ClassUtils; import org.apache.dubbo.common.utils.ClassUtils;
import org.apache.dubbo.rpc.RpcContext;
import org.apache.dubbo.rpc.RpcContextAttachment;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@@ -84,7 +81,6 @@ public class RouteServiceImpl implements RouteService {
} }
protected Object doRoute(ApiRequestContext apiRequestContext, ApiInfoDTO apiInfo) { protected Object doRoute(ApiRequestContext apiRequestContext, ApiInfoDTO apiInfo) {
setAttachment(apiRequestContext);
String paramInfo = apiInfo.getParamInfo(); String paramInfo = apiInfo.getParamInfo();
List<ParamInfoDTO> paramInfoList = JSON.parseArray(paramInfo, ParamInfoDTO.class); List<ParamInfoDTO> paramInfoList = JSON.parseArray(paramInfo, ParamInfoDTO.class);
return genericServiceInvoker.invoke( return genericServiceInvoker.invoke(
@@ -95,19 +91,6 @@ public class RouteServiceImpl implements RouteService {
); );
} }
protected void setAttachment(ApiRequestContext apiRequestContext) {
ApiRequest apiRequest = apiRequestContext.getApiRequest();
RpcContextAttachment clientAttachment = RpcContext.getClientAttachment();
clientAttachment.setAttachment(AttachmentNames.APP_ID, apiRequest.getAppId());
clientAttachment.setAttachment(AttachmentNames.API_NAME, apiRequest.getMethod());
clientAttachment.setAttachment(AttachmentNames.VERSION, apiRequest.getVersion());
clientAttachment.setAttachment(AttachmentNames.APP_AUTH_TOKEN, apiRequest.getAppAuthToken());
clientAttachment.setAttachment(AttachmentNames.NOTIFY_URL, apiRequest.getNotifyUrl());
clientAttachment.setAttachment(AttachmentNames.CLIENT_IP, apiRequestContext.getIp());
clientAttachment.setAttachment(AttachmentNames.TRACE_ID, apiRequestContext.getTraceId());
clientAttachment.setAttachment(AttachmentNames.LOCALE, apiRequestContext.getLocale().toLanguageTag());
}
protected void doPreRoute(ApiRequestContext apiRequestContext, ApiInfoDTO apiInfoDTO) { protected void doPreRoute(ApiRequestContext apiRequestContext, ApiInfoDTO apiInfoDTO) {
for (RouteInterceptor routeInterceptor : routeInterceptors) { for (RouteInterceptor routeInterceptor : routeInterceptors) {
routeInterceptor.preRoute(apiRequestContext, apiInfoDTO); routeInterceptor.preRoute(apiRequestContext, apiInfoDTO);
@@ -144,8 +127,8 @@ public class RouteServiceImpl implements RouteService {
String actualType = paramInfoDTO.getActualType(); String actualType = paramInfoDTO.getActualType();
// 上下文 // 上下文
if (Objects.equals(type, OpenRequest.class.getName())) { if (Objects.equals(type, OpenContext.class.getName())) {
OpenRequest openRequest = buildOpenRequest(apiRequestContext); OpenContext openRequest = buildOpenContext(apiRequestContext);
params.add(openRequest); params.add(openRequest);
} else if (Objects.equals(type, FileData.class.getName()) || Objects.equals(actualType, FileData.class.getName())) { } else if (Objects.equals(type, FileData.class.getName()) || Objects.equals(actualType, FileData.class.getName())) {
// 处理文件上传 // 处理文件上传
@@ -174,9 +157,9 @@ public class RouteServiceImpl implements RouteService {
return params.toArray(new Object[0]); return params.toArray(new Object[0]);
} }
protected OpenRequest buildOpenRequest(ApiRequestContext apiRequestContext) { protected OpenContext buildOpenContext(ApiRequestContext apiRequestContext) {
ApiRequest apiRequest = apiRequestContext.getApiRequest(); ApiRequest apiRequest = apiRequestContext.getApiRequest();
DefaultOpenRequest defaultOpenRequest = new DefaultOpenRequest(); DefaultOpenContext defaultOpenRequest = new DefaultOpenContext();
defaultOpenRequest.setAppId(apiRequest.getAppId()); defaultOpenRequest.setAppId(apiRequest.getAppId());
defaultOpenRequest.setApiName(apiRequest.getMethod()); defaultOpenRequest.setApiName(apiRequest.getMethod());
defaultOpenRequest.setVersion(apiRequest.getVersion()); defaultOpenRequest.setVersion(apiRequest.getVersion());

View File

@@ -25,7 +25,7 @@
<dependency> <dependency>
<groupId>com.alibaba</groupId> <groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId> <artifactId>fastjson</artifactId>
<version>2.0.16</version> <version>2.0.52</version>
</dependency> </dependency>
<dependency> <dependency>
@@ -44,7 +44,7 @@
<dependency> <dependency>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId> <artifactId>lombok</artifactId>
<version>1.18.4</version> <version>1.18.34</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
@@ -102,5 +102,12 @@
</plugin> </plugin>
</plugins> </plugins>
</build> </build>
<repositories>
<repository>
<id>maven_central</id>
<name>Maven Central</name>
<url>https://repo.maven.apache.org/maven2/</url>
</repository>
</repositories>
</project> </project>

View File

@@ -6,12 +6,11 @@ import com.alibaba.fastjson.parser.Feature;
import com.gitee.sop.sdk.common.DataNameBuilder; import com.gitee.sop.sdk.common.DataNameBuilder;
import com.gitee.sop.sdk.common.OpenConfig; import com.gitee.sop.sdk.common.OpenConfig;
import com.gitee.sop.sdk.common.RequestForm; import com.gitee.sop.sdk.common.RequestForm;
import com.gitee.sop.sdk.common.Result;
import com.gitee.sop.sdk.common.SopSdkConstants; import com.gitee.sop.sdk.common.SopSdkConstants;
import com.gitee.sop.sdk.common.SopSdkErrors; import com.gitee.sop.sdk.common.SopSdkErrors;
import com.gitee.sop.sdk.exception.SdkException; import com.gitee.sop.sdk.exception.SdkException;
import com.gitee.sop.sdk.request.BaseRequest; import com.gitee.sop.sdk.request.BaseRequest;
import com.gitee.sop.sdk.response.BaseResponse;
import com.gitee.sop.sdk.response.ErrorResponse;
import com.gitee.sop.sdk.sign.SopSignException; import com.gitee.sop.sdk.sign.SopSignException;
import com.gitee.sop.sdk.sign.SopSignature; import com.gitee.sop.sdk.sign.SopSignature;
import com.gitee.sop.sdk.sign.StringUtils; import com.gitee.sop.sdk.sign.StringUtils;
@@ -135,7 +134,7 @@ public class OpenClient {
* @param <T> 返回对应的Response * @param <T> 返回对应的Response
* @return 返回Response * @return 返回Response
*/ */
public <T extends BaseResponse> T execute(BaseRequest<T> request) { public <T> Result<T> execute(BaseRequest<T> request) {
return this.execute(request, null); return this.execute(request, null);
} }
@@ -147,7 +146,7 @@ public class OpenClient {
* @param <T> 返回对应的Response * @param <T> 返回对应的Response
* @return 返回Response * @return 返回Response
*/ */
public <T extends BaseResponse> T execute(BaseRequest<T> request, String accessToken) { public <T> Result<T> execute(BaseRequest<T> request, String accessToken) {
RequestForm requestForm = request.createRequestForm(this.openConfig); RequestForm requestForm = request.createRequestForm(this.openConfig);
// 表单数据 // 表单数据
Map<String, String> form = requestForm.getForm(); Map<String, String> form = requestForm.getForm();
@@ -191,28 +190,25 @@ public class OpenClient {
* @param <T> 返回结果 * @param <T> 返回结果
* @return 返回对于的Response对象 * @return 返回对于的Response对象
*/ */
protected <T extends BaseResponse> T parseResponse(String resp, BaseRequest<T> request) { protected <T> Result<T> parseResponse(String resp, BaseRequest<T> request) {
String method = request.getMethod(); String method = request.getMethod();
String rootNodeName = dataNameBuilder.build(method); String rootNodeName = dataNameBuilder.build(method);
JSONObject jsonObject = JSON.parseObject(resp, Feature.OrderedField); JSONObject jsonObject = JSON.parseObject(resp, Feature.OrderedField);
String errorResponseName = this.openConfig.getErrorResponseName();
boolean errorResponse = jsonObject.containsKey(errorResponseName);
if (errorResponse) {
rootNodeName = errorResponseName;
}
JSONObject data = jsonObject.getJSONObject(rootNodeName); JSONObject data = jsonObject.getJSONObject(rootNodeName);
String sign = jsonObject.getString(openConfig.getSignName()); String sign = jsonObject.getString(openConfig.getSignName());
// 是否要验证返回的sign // 是否要验证返回的sign
if (StringUtils.areNotEmpty(sign, publicKeyPlatform)) { if (StringUtils.areNotEmpty(sign, publicKeyPlatform)) {
String signContent = buildBizJson(rootNodeName, resp); String signContent = buildBizJson(rootNodeName, resp);
if (!this.checkResponseSign(signContent, sign, publicKeyPlatform)) { if (!this.checkResponseSign(signContent, sign, publicKeyPlatform)) {
ErrorResponse error = SopSdkErrors.CHECK_RESPONSE_SIGN_ERROR.getErrorResponse(); return SopSdkErrors.CHECK_RESPONSE_SIGN_ERROR.getErrorResult();
data = JSON.parseObject(JSON.toJSONString(error));
} }
} }
T t = data.toJavaObject(request.getResponseClass()); Result result = jsonObject.toJavaObject(Result.class);
t.setBody(jsonObject.getString(rootNodeName)); if (data != null) {
return t; T dataObj = data.toJavaObject(request.getResponseClass());
result.setData(dataObj);
}
return result;
} }
/** /**

View File

@@ -4,9 +4,9 @@ import com.alibaba.fastjson.JSON;
import com.gitee.sop.sdk.common.OpenConfig; import com.gitee.sop.sdk.common.OpenConfig;
import com.gitee.sop.sdk.common.RequestForm; import com.gitee.sop.sdk.common.RequestForm;
import com.gitee.sop.sdk.common.RequestMethod; import com.gitee.sop.sdk.common.RequestMethod;
import com.gitee.sop.sdk.common.Result;
import com.gitee.sop.sdk.common.SopSdkErrors; import com.gitee.sop.sdk.common.SopSdkErrors;
import com.gitee.sop.sdk.common.UploadFile; import com.gitee.sop.sdk.common.UploadFile;
import com.gitee.sop.sdk.response.ErrorResponse;
import java.io.IOException; import java.io.IOException;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
@@ -68,7 +68,7 @@ public class OpenRequest {
} }
protected String causeException(Exception e) { protected String causeException(Exception e) {
ErrorResponse result = SopSdkErrors.HTTP_ERROR.getErrorResponse(); Result result = SopSdkErrors.HTTP_ERROR.getErrorResult();
return JSON.toJSONString(result); return JSON.toJSONString(result);
} }
} }

View File

@@ -14,7 +14,7 @@ package com.gitee.sop.sdk.common;
* @author 六如 * @author 六如
*/ */
public class CustomDataNameBuilder implements DataNameBuilder { public class CustomDataNameBuilder implements DataNameBuilder {
private String dataName = "result"; private String dataName = "data";
public CustomDataNameBuilder() { public CustomDataNameBuilder() {
} }

View File

@@ -7,10 +7,10 @@ import lombok.Data;
*/ */
@Data @Data
public class OpenConfig { public class OpenConfig {
public static DataNameBuilder DATA_NAME_BUILDER = new DefaultDataNameBuilder(); public static DataNameBuilder DATA_NAME_BUILDER = new CustomDataNameBuilder();
/** 成功返回码值 */ /** 成功返回码值 */
private String successCode = "10000"; private String successCode = "0";
/** 默认版本号 */ /** 默认版本号 */
private String defaultVersion = "1.0"; private String defaultVersion = "1.0";
/** 字符编码 */ /** 字符编码 */

View File

@@ -0,0 +1,23 @@
package com.gitee.sop.sdk.common;
import com.alibaba.fastjson.annotation.JSONField;
import com.gitee.sop.sdk.sign.StringUtils;
import lombok.Data;
/**
* @author 六如
*/
@Data
public class Result<T> {
private String code;
private String msg;
private String subCode;
private String subMsg;
private T data;
@JSONField(serialize = false)
public boolean isSuccess() {
return StringUtils.isEmpty(subCode);
}
}

View File

@@ -1,7 +1,5 @@
package com.gitee.sop.sdk.common; package com.gitee.sop.sdk.common;
import com.gitee.sop.sdk.response.ErrorResponse;
/** /**
* @author 六如 * @author 六如
*/ */
@@ -23,13 +21,13 @@ public enum SopSdkErrors {
this.subMsg = msg; this.subMsg = msg;
} }
public ErrorResponse getErrorResponse() { public Result getErrorResult() {
ErrorResponse errorResponse = new ErrorResponse(); Result result = new Result();
errorResponse.setCode(code); result.setCode(code);
errorResponse.setSubCode(subCode); result.setSubCode(subCode);
errorResponse.setSubMsg(subMsg); result.setSubMsg(subMsg);
errorResponse.setMsg(msg); result.setMsg(msg);
return errorResponse; return result;
} }
private String code; private String code;

View File

@@ -1,11 +1,9 @@
package com.gitee.sop.sdk.model; package com.gitee.sop.sdk.model;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data; import lombok.Data;
@Data @Data
public class GetStoryModel { public class GetStoryModel {
@JSONField(name = "name") private Integer id;
private String name;
} }

View File

@@ -5,7 +5,6 @@ import com.gitee.sop.sdk.common.OpenConfig;
import com.gitee.sop.sdk.common.RequestForm; import com.gitee.sop.sdk.common.RequestForm;
import com.gitee.sop.sdk.common.RequestMethod; import com.gitee.sop.sdk.common.RequestMethod;
import com.gitee.sop.sdk.common.UploadFile; import com.gitee.sop.sdk.common.UploadFile;
import com.gitee.sop.sdk.response.BaseResponse;
import com.gitee.sop.sdk.util.ClassUtil; import com.gitee.sop.sdk.util.ClassUtil;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
@@ -34,7 +33,7 @@ import java.util.Map;
* *
* @author 六如 * @author 六如
*/ */
public abstract class BaseRequest<T extends BaseResponse> { public abstract class BaseRequest<T> {
private static final String EMPTY_JSON = "{}"; private static final String EMPTY_JSON = "{}";

View File

@@ -1,22 +0,0 @@
package com.gitee.sop.sdk.request;
import com.gitee.sop.sdk.response.CommonResponse;
/**
* @author 六如
*/
public class CommonRequest extends BaseRequest<CommonResponse> {
public CommonRequest(String method) {
super(method, null);
}
public CommonRequest(String method, String version) {
super(method, version);
}
@Override
protected String method() {
return "";
}
}

View File

@@ -1,42 +0,0 @@
package com.gitee.sop.sdk.response;
import com.alibaba.fastjson.annotation.JSONField;
import com.gitee.sop.sdk.sign.StringUtils;
import lombok.Getter;
import lombok.Setter;
/**
* 返回对象,后续返回对象都要继承这个类
* {
* "alipay_trade_close_response": {
* "code": "20000",
* "msg": "Service Currently Unavailable",
* "sub_code": "isp.unknown-error",
* "sub_msg": "系统繁忙"
* },
* "sign": "ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"
* }
* @author 六如
*/
@Setter
@Getter
public abstract class BaseResponse {
@JSONField(name = "request_id")
private String requestId;
private String code;
private String msg;
@JSONField(name = "sub_code")
private String subCode;
@JSONField(name = "sub_msg")
private String subMsg;
@JSONField(serialize = false)
private String body;
@JSONField(serialize = false)
public boolean isSuccess() {
return StringUtils.isEmpty(subCode);
}
}

View File

@@ -1,8 +0,0 @@
package com.gitee.sop.sdk.response;
/**
* @author 六如
*/
public class CommonResponse extends BaseResponse {
}

View File

@@ -11,9 +11,9 @@ import java.util.List;
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
public class DemoFileUploadResponse extends BaseResponse { public class DemoFileUploadResponse {
private List<FileMeta> files = new ArrayList(); private List<FileMeta> files = new ArrayList<>();
@Data @Data
public static class FileMeta { public static class FileMeta {

View File

@@ -1,7 +0,0 @@
package com.gitee.sop.sdk.response;
/**
* @author 六如
*/
public class ErrorResponse extends BaseResponse {
}

View File

@@ -1,14 +1,12 @@
package com.gitee.sop.sdk.response; package com.gitee.sop.sdk.response;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date; import java.util.Date;
@Data @Data
@EqualsAndHashCode(callSuper = false) public class GetStoryResponse {
public class GetStoryResponse extends BaseResponse {
private Long id; private Long id;
private String name; private String name;
private Date gmt_create; private Date addTime;
} }

View File

@@ -1,14 +1,12 @@
package com.gitee.sop.sdk.response; package com.gitee.sop.sdk.response;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
/** /**
* @author 六如 * @author 六如
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = false) public class OpenAuthTokenAppResponse {
public class OpenAuthTokenAppResponse extends BaseResponse {
/** /**
* 授权令牌 * 授权令牌
*/ */

View File

@@ -28,7 +28,7 @@ public abstract class StringUtils {
return true; return true;
} }
for (int i = 0; i < strLen; i++) { for (int i = 0; i < strLen; i++) {
if ((Character.isWhitespace(value.charAt(i)) == false)) { if ((!Character.isWhitespace(value.charAt(i)))) {
return false; return false;
} }
} }

View File

@@ -1,16 +1,13 @@
package com.gitee.sop.sdk; package com.gitee.sop.sdk;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gitee.sop.sdk.client.OpenClient; import com.gitee.sop.sdk.client.OpenClient;
import com.gitee.sop.sdk.common.RequestMethod; import com.gitee.sop.sdk.common.Result;
import com.gitee.sop.sdk.common.UploadFile; import com.gitee.sop.sdk.common.UploadFile;
import com.gitee.sop.sdk.model.DemoFileUploadModel; import com.gitee.sop.sdk.model.DemoFileUploadModel;
import com.gitee.sop.sdk.model.GetStoryModel; import com.gitee.sop.sdk.model.GetStoryModel;
import com.gitee.sop.sdk.request.CommonRequest;
import com.gitee.sop.sdk.request.DemoFileUploadRequest; import com.gitee.sop.sdk.request.DemoFileUploadRequest;
import com.gitee.sop.sdk.request.GetStoryRequest; import com.gitee.sop.sdk.request.GetStoryRequest;
import com.gitee.sop.sdk.response.CommonResponse;
import com.gitee.sop.sdk.response.DemoFileUploadResponse; import com.gitee.sop.sdk.response.DemoFileUploadResponse;
import com.gitee.sop.sdk.response.GetStoryResponse; import com.gitee.sop.sdk.response.GetStoryResponse;
import junit.framework.TestCase; import junit.framework.TestCase;
@@ -18,69 +15,47 @@ import org.junit.Test;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
public class SdkTest extends TestCase { public class SdkTest extends TestCase {
String url = "http://localhost:8081/api"; String url = "http://localhost:8081/api";
String appId = "2019032617262200001"; String appId = "2019032617262200001";
/** 开发者私钥 */ /**
* 开发者私钥
*/
String privateKeyIsv = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCXJv1pQFqWNA/++OYEV7WYXwexZK/J8LY1OWlP9X0T6wHFOvxNKRvMkJ5544SbgsJpVcvRDPrcxmhPbi/sAhdO4x2PiPKIz9Yni2OtYCCeaiE056B+e1O2jXoLeXbfi9fPivJZkxH/tb4xfLkH3bA8ZAQnQsoXA0SguykMRZntF0TndUfvDrLqwhlR8r5iRdZLB6F8o8qXH6UPDfNEnf/K8wX5T4EB1b8x8QJ7Ua4GcIUqeUxGHdQpzNbJdaQvoi06lgccmL+PHzminkFYON7alj1CjDN833j7QMHdPtS9l7B67fOU/p2LAAkPMtoVBfxQt9aFj7B8rEhGCz02iJIBAgMBAAECggEARqOuIpY0v6WtJBfmR3lGIOOokLrhfJrGTLF8CiZMQha+SRJ7/wOLPlsH9SbjPlopyViTXCuYwbzn2tdABigkBHYXxpDV6CJZjzmRZ+FY3S/0POlTFElGojYUJ3CooWiVfyUMhdg5vSuOq0oCny53woFrf32zPHYGiKdvU5Djku1onbDU0Lw8w+5tguuEZ76kZ/lUcccGy5978FFmYpzY/65RHCpvLiLqYyWTtaNT1aQ/9pw4jX9HO9NfdJ9gYFK8r/2f36ZE4hxluAfeOXQfRC/WhPmiw/ReUhxPznG/WgKaa/OaRtAx3inbQ+JuCND7uuKeRe4osP2jLPHPP6AUwQKBgQDUNu3BkLoKaimjGOjCTAwtp71g1oo+k5/uEInAo7lyEwpV0EuUMwLA/HCqUgR4K9pyYV+Oyb8d6f0+Hz0BMD92I2pqlXrD7xV2WzDvyXM3s63NvorRooKcyfd9i6ccMjAyTR2qfLkxv0hlbBbsPHz4BbU63xhTJp3Ghi0/ey/1HQKBgQC2VsgqC6ykfSidZUNLmQZe3J0p/Qf9VLkfrQ+xaHapOs6AzDU2H2osuysqXTLJHsGfrwVaTs00ER2z8ljTJPBUtNtOLrwNRlvgdnzyVAKHfOgDBGwJgiwpeE9voB1oAV/mXqSaUWNnuwlOIhvQEBwekqNyWvhLqC7nCAIhj3yvNQKBgQCqYbeec56LAhWP903Zwcj9VvG7sESqXUhIkUqoOkuIBTWFFIm54QLTA1tJxDQGb98heoCIWf5x/A3xNI98RsqNBX5JON6qNWjb7/dobitti3t99v/ptDp9u8JTMC7penoryLKK0Ty3bkan95Kn9SC42YxaSghzqkt+uvfVQgiNGQKBgGxU6P2aDAt6VNwWosHSe+d2WWXt8IZBhO9d6dn0f7ORvcjmCqNKTNGgrkewMZEuVcliueJquR47IROdY8qmwqcBAN7Vg2K7r7CPlTKAWTRYMJxCT1Hi5gwJb+CZF3+IeYqsJk2NF2s0w5WJTE70k1BSvQsfIzAIDz2yE1oPHvwVAoGAA6e+xQkVH4fMEph55RJIZ5goI4Y76BSvt2N5OKZKd4HtaV+eIhM3SDsVYRLIm9ZquJHMiZQGyUGnsvrKL6AAVNK7eQZCRDk9KQz+0GKOGqku0nOZjUbAu6A2/vtXAaAuFSFx1rUQVVjFulLexkXR3KcztL1Qu2k5pB6Si0K/uwQ="; String privateKeyIsv = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCXJv1pQFqWNA/++OYEV7WYXwexZK/J8LY1OWlP9X0T6wHFOvxNKRvMkJ5544SbgsJpVcvRDPrcxmhPbi/sAhdO4x2PiPKIz9Yni2OtYCCeaiE056B+e1O2jXoLeXbfi9fPivJZkxH/tb4xfLkH3bA8ZAQnQsoXA0SguykMRZntF0TndUfvDrLqwhlR8r5iRdZLB6F8o8qXH6UPDfNEnf/K8wX5T4EB1b8x8QJ7Ua4GcIUqeUxGHdQpzNbJdaQvoi06lgccmL+PHzminkFYON7alj1CjDN833j7QMHdPtS9l7B67fOU/p2LAAkPMtoVBfxQt9aFj7B8rEhGCz02iJIBAgMBAAECggEARqOuIpY0v6WtJBfmR3lGIOOokLrhfJrGTLF8CiZMQha+SRJ7/wOLPlsH9SbjPlopyViTXCuYwbzn2tdABigkBHYXxpDV6CJZjzmRZ+FY3S/0POlTFElGojYUJ3CooWiVfyUMhdg5vSuOq0oCny53woFrf32zPHYGiKdvU5Djku1onbDU0Lw8w+5tguuEZ76kZ/lUcccGy5978FFmYpzY/65RHCpvLiLqYyWTtaNT1aQ/9pw4jX9HO9NfdJ9gYFK8r/2f36ZE4hxluAfeOXQfRC/WhPmiw/ReUhxPznG/WgKaa/OaRtAx3inbQ+JuCND7uuKeRe4osP2jLPHPP6AUwQKBgQDUNu3BkLoKaimjGOjCTAwtp71g1oo+k5/uEInAo7lyEwpV0EuUMwLA/HCqUgR4K9pyYV+Oyb8d6f0+Hz0BMD92I2pqlXrD7xV2WzDvyXM3s63NvorRooKcyfd9i6ccMjAyTR2qfLkxv0hlbBbsPHz4BbU63xhTJp3Ghi0/ey/1HQKBgQC2VsgqC6ykfSidZUNLmQZe3J0p/Qf9VLkfrQ+xaHapOs6AzDU2H2osuysqXTLJHsGfrwVaTs00ER2z8ljTJPBUtNtOLrwNRlvgdnzyVAKHfOgDBGwJgiwpeE9voB1oAV/mXqSaUWNnuwlOIhvQEBwekqNyWvhLqC7nCAIhj3yvNQKBgQCqYbeec56LAhWP903Zwcj9VvG7sESqXUhIkUqoOkuIBTWFFIm54QLTA1tJxDQGb98heoCIWf5x/A3xNI98RsqNBX5JON6qNWjb7/dobitti3t99v/ptDp9u8JTMC7penoryLKK0Ty3bkan95Kn9SC42YxaSghzqkt+uvfVQgiNGQKBgGxU6P2aDAt6VNwWosHSe+d2WWXt8IZBhO9d6dn0f7ORvcjmCqNKTNGgrkewMZEuVcliueJquR47IROdY8qmwqcBAN7Vg2K7r7CPlTKAWTRYMJxCT1Hi5gwJb+CZF3+IeYqsJk2NF2s0w5WJTE70k1BSvQsfIzAIDz2yE1oPHvwVAoGAA6e+xQkVH4fMEph55RJIZ5goI4Y76BSvt2N5OKZKd4HtaV+eIhM3SDsVYRLIm9ZquJHMiZQGyUGnsvrKL6AAVNK7eQZCRDk9KQz+0GKOGqku0nOZjUbAu6A2/vtXAaAuFSFx1rUQVVjFulLexkXR3KcztL1Qu2k5pB6Si0K/uwQ=";
/** 开放平台提供的公钥 /**
* 前往SOP-ADMINISV管理--秘钥管理,生成平台提供的公私钥,然后把【平台公钥】放到这里 */ * 开放平台提供的公钥
* 前往SOP-ADMINISV管理--秘钥管理,生成平台提供的公私钥,然后把【平台公钥】放到这里
*/
String publicKeyPlatform = ""; String publicKeyPlatform = "";
// 声明一个就行 // 声明一个就行
OpenClient client = new OpenClient(url, appId, privateKeyIsv, publicKeyPlatform); OpenClient client = new OpenClient(url, appId, privateKeyIsv, publicKeyPlatform);
// 标准用法
@Test @Test
public void testGet() { public void testGet() {
// 创建请求对象 // 创建请求对象
GetStoryRequest request = new GetStoryRequest(); GetStoryRequest request = new GetStoryRequest();
// 请求参数 // 请求参数
GetStoryModel model = new GetStoryModel(); GetStoryModel model = new GetStoryModel();
model.setName("白雪公主"); model.setId(1);
request.setBizModel(model); request.setBizModel(model);
// 发送请求 // 发送请求
GetStoryResponse response = client.execute(request); Result<GetStoryResponse> result = client.execute(request);
if (response.isSuccess()) { if (result.isSuccess()) {
GetStoryResponse response = result.getData();
// 返回结果 // 返回结果
System.out.println(String.format("response:%s", System.out.println(String.format("response:%s",
JSON.toJSONString(response))); JSON.toJSONString(response)));
} else { } else {
System.out.println("错误subCode:" + response.getSubCode() + ", subMsg:" + response.getSubMsg()); System.out.println("错误subCode:" + result.getSubCode() + ", subMsg:" + result.getSubMsg());
} }
} }
// 懒人版如果不想添加Request,Response,可以用这种方式返回全部是String后续自己处理json
@Test
public void testLazy() {
// 创建请求对象
CommonRequest request = new CommonRequest("story.get");
// 请求参数
Map<String, Object> bizModel = new HashMap<>();
bizModel.put("name", "白雪公主");
request.setBizModel(bizModel);
// request.setRequestMethod(RequestMethod.GET);
// 发送请求
CommonResponse response = client.execute(request);
if (response.isSuccess()) {
// 返回结果
String body = response.getBody();
JSONObject jsonObject = JSON.parseObject(body);
System.out.println(jsonObject);
} else {
System.out.println("错误subCode:" + response.getSubCode() + ", subMsg:" + response.getSubMsg());
}
}
// 文件上传 // 文件上传
@Test @Test
public void testUpload() throws IOException { public void testUpload() throws IOException {
@@ -96,15 +71,16 @@ public class SdkTest extends TestCase {
request.addFile(new UploadFile("file1", new File(root + "/src/main/resources/file1.txt"))); request.addFile(new UploadFile("file1", new File(root + "/src/main/resources/file1.txt")));
request.addFile(new UploadFile("file2", new File(root + "/src/main/resources/file2.txt"))); request.addFile(new UploadFile("file2", new File(root + "/src/main/resources/file2.txt")));
DemoFileUploadResponse response = client.execute(request); Result<DemoFileUploadResponse> result = client.execute(request);
System.out.println("--------------------"); System.out.println("--------------------");
if (response.isSuccess()) { if (result.isSuccess()) {
DemoFileUploadResponse response = result.getData();
List<DemoFileUploadResponse.FileMeta> responseFiles = response.getFiles(); List<DemoFileUploadResponse.FileMeta> responseFiles = response.getFiles();
System.out.println("您上传的文件信息:"); System.out.println("您上传的文件信息:");
responseFiles.forEach(System.out::println); responseFiles.forEach(System.out::println);
} else { } else {
System.out.println(JSON.toJSONString(response)); System.out.println(JSON.toJSONString(result));
} }
System.out.println("--------------------"); System.out.println("--------------------");
} }

View File

@@ -17,10 +17,10 @@ import java.nio.charset.StandardCharsets;
public class SwaggerPlugin { public class SwaggerPlugin {
/** /**
* 推送文档,前提:把<code>doc-plugin.json</code>文件复制到resources下 * 推送文档,前提:把<code>doc.json</code>文件复制到resources下
*/ */
public static void pushDoc() { public static void pushDoc() {
pushDoc("doc-plugin.json"); pushDoc("doc.json");
} }
/** /**

View File

@@ -58,7 +58,6 @@ import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import springfox.documentation.annotations.ApiIgnore;
import java.lang.annotation.Annotation; import java.lang.annotation.Annotation;
import java.lang.reflect.Method; import java.lang.reflect.Method;
@@ -352,12 +351,12 @@ public class SwaggerPluginService {
if (apiOperation.hidden()) { if (apiOperation.hidden()) {
throw new HiddenException("Hidden API@ApiOperation.hidden=true" + apiOperation.value()); throw new HiddenException("Hidden API@ApiOperation.hidden=true" + apiOperation.value());
} }
if (existsApiIgnore) { // if (existsApiIgnore) {
ApiIgnore apiIgnore = method.getAnnotation(ApiIgnore.class); // ApiIgnore apiIgnore = method.getAnnotation(ApiIgnore.class);
if (apiIgnore != null) { // if (apiIgnore != null) {
throw new IgnoreException("Ignore API@ApiIgnore" + apiOperation.value()); // throw new IgnoreException("Ignore API@ApiIgnore" + apiOperation.value());
} // }
} // }
return doBuildDocItem(requestInfoBuilder); return doBuildDocItem(requestInfoBuilder);
} }
@@ -918,12 +917,12 @@ public class SwaggerPluginService {
if (api != null && api.hidden()) { if (api != null && api.hidden()) {
throw new HiddenException("Hidden doc@Api.hidden=true" + api.value()); throw new HiddenException("Hidden doc@Api.hidden=true" + api.value());
} }
if (existsApiIgnore) { // if (existsApiIgnore) {
ApiIgnore apiIgnore = AnnotationUtils.findAnnotation(controllerClass, ApiIgnore.class); // ApiIgnore apiIgnore = AnnotationUtils.findAnnotation(controllerClass, ApiIgnore.class);
if (apiIgnore != null) { // if (apiIgnore != null) {
throw new IgnoreException("Ignore doc@ApiIgnore" + controllerClass.getName()); // throw new IgnoreException("Ignore doc@ApiIgnore" + controllerClass.getName());
} // }
} // }
String name, description; String name, description;
int position = 0; int position = 0;
if (api == null) { if (api == null) {

View File

@@ -1,43 +0,0 @@
package com.gitee.sop.support.constants;
/**
* RPC附件name
*
* @author 六如
*/
public class AttachmentNames {
/**
* 分配给开发者的应用ID
*/
public static final String APP_ID = "client.app_id";
/**
* 接口名称
*/
public static final String API_NAME = "client.method";
/**
* 调用的接口版本
*/
public static final String VERSION = "client.version";
/**
* 开放平台主动通知商户服务器里指定的页面http/https路径
*/
public static final String NOTIFY_URL = "client.notify_url";
/**
* OAuth 2.0授权token
*/
public static final String APP_AUTH_TOKEN = "client.app_auth_token";
/**
* 请求id
*/
public static final String CLIENT_IP = "client.ip";
/**
* 请求traceId
*/
public static final String TRACE_ID = "client.trace_id";
/**
* 请求locale
*/
public static final String LOCALE = "client.locale";
}

View File

@@ -1,4 +1,4 @@
package com.gitee.sop.support.dto; package com.gitee.sop.support.context;
import lombok.Data; import lombok.Data;
@@ -9,7 +9,7 @@ import java.util.Locale;
* @author 六如 * @author 六如
*/ */
@Data @Data
public class DefaultOpenRequest implements OpenRequest, Serializable { public class DefaultOpenContext implements OpenContext, Serializable {
private static final long serialVersionUID = -3218354527911979685L; private static final long serialVersionUID = -3218354527911979685L;
/** /**

View File

@@ -1,77 +1,50 @@
package com.gitee.sop.support.context; package com.gitee.sop.support.context;
import com.gitee.sop.support.constants.AttachmentNames;
import org.apache.dubbo.rpc.RpcContext;
import java.util.Locale; import java.util.Locale;
/** /**
* @author 六如 * @author 六如
*/ */
public class OpenContext { public interface OpenContext {
/** /**
* 获取appId * 获取appId
*/ */
public static String getAppId() { String getAppId();
return getAttachment(AttachmentNames.APP_ID);
}
/** /**
* 获取apiName * 获取apiName
*/ */
public static String getApiName() { String getApiName();
return getAttachment(AttachmentNames.API_NAME);
}
/** /**
* 获取version * 获取version
*/ */
public static String getVersion() { String getVersion();
return getAttachment(AttachmentNames.VERSION);
}
/** /**
* 获取token,没有返回null * 获取token,没有返回null
*/ */
public static String getAppAuthToken() { String getAppAuthToken();
return getAttachment(AttachmentNames.APP_AUTH_TOKEN);
}
/** /**
* 获取客户端ip * 获取客户端ip
*/ */
public static String getClientIp() { String getClientIp();
return getAttachment(AttachmentNames.CLIENT_IP);
}
/** /**
* 获取回调地址 * 获取回调地址
*/ */
public static String getNotifyUrl() { String getNotifyUrl();
return getAttachment(AttachmentNames.NOTIFY_URL);
}
/** /**
* 获取唯一请求id * 获取唯一请求id
*/ */
public static String getTraceId() { String getTraceId();
return getAttachment(AttachmentNames.TRACE_ID);
}
/** /**
* 获取locale * 获取locale
*/ */
public static Locale getLocale() { Locale getLocale();
String langTag = getAttachment(AttachmentNames.LOCALE);
if (langTag == null) {
return Locale.SIMPLIFIED_CHINESE;
}
return Locale.forLanguageTag(langTag);
}
private static String getAttachment(String key) {
return RpcContext.getServerAttachment().getAttachment(key);
}
} }

View File

@@ -1,50 +0,0 @@
package com.gitee.sop.support.dto;
import java.util.Locale;
/**
* @author 六如
*/
public interface OpenRequest {
/**
* 获取appId
*/
String getAppId();
/**
* 获取apiName
*/
String getApiName();
/**
* 获取version
*/
String getVersion();
/**
* 获取token,没有返回null
*/
String getAppAuthToken();
/**
* 获取客户端ip
*/
String getClientIp();
/**
* 获取回调地址
*/
String getNotifyUrl();
/**
* 获取唯一请求id
*/
String getTraceId();
/**
* 获取locale
*/
Locale getLocale();
}

View File

@@ -1,6 +1,5 @@
package com.gitee.sop.support.exception; package com.gitee.sop.support.exception;
import com.gitee.sop.support.context.OpenContext;
import com.gitee.sop.support.message.I18nMessage; import com.gitee.sop.support.message.I18nMessage;
import com.gitee.sop.support.message.OpenMessage; import com.gitee.sop.support.message.OpenMessage;
import com.gitee.sop.support.message.OpenMessageFactory; import com.gitee.sop.support.message.OpenMessageFactory;
@@ -29,7 +28,7 @@ public class OpenException extends RuntimeException {
} }
public OpenException(I18nMessage openError, Object... params) { public OpenException(I18nMessage openError, Object... params) {
this(openError, OpenContext.getLocale(), params); this(openError, Locale.SIMPLIFIED_CHINESE, params);
} }
public OpenException(String subCode, String subMsg, String solution) { public OpenException(String subCode, String subMsg, String solution) {

View File

@@ -1,2 +1,2 @@
com.gitee.sop.support.dto.CommonFileData com.gitee.sop.support.dto.CommonFileData
com.gitee.sop.support.dto.DefaultOpenRequest com.gitee.sop.support.context.DefaultOpenContext

View File

@@ -29,7 +29,6 @@
<groupId>com.gitee.sop</groupId> <groupId>com.gitee.sop</groupId>
<artifactId>sop-doc-plugin</artifactId> <artifactId>sop-doc-plugin</artifactId>
<version>5.0.0-SNAPSHOT</version> <version>5.0.0-SNAPSHOT</version>
<scope>test</scope>
</dependency> </dependency>
<!-- dubbo依赖 --> <!-- dubbo依赖 -->
<dependency> <dependency>

View File

@@ -114,12 +114,12 @@ public class AllInOneTest extends TestBase {
} }
/** /**
* 多版本2.0 * 获取上下文信息
*/ */
public void testGet_v3() { public void testGetContext() {
Client.RequestBuilder requestBuilder = new Client.RequestBuilder() Client.RequestBuilder requestBuilder = new Client.RequestBuilder()
.method("story.get") .method("story.get.context")
.version("3.0") .version("1.0")
.notifyUrl("http://www.baidu.com") .notifyUrl("http://www.baidu.com")
.bizContent(new BizContent().add("id", "2").add("name", "葫芦娃2")) .bizContent(new BizContent().add("id", "2").add("name", "葫芦娃2"))
.httpMethod(HttpTool.HTTPMethod.GET) .httpMethod(HttpTool.HTTPMethod.GET)