合并结果

1.x
tanghc 6 years ago
parent e56787fc55
commit 9ab2bacf42
  1. 3
      sop-admin/sop-admin-front/assets/css/xadmin.css
  2. 180
      sop-admin/sop-admin-front/assets/js/Form.js
  3. 3
      sop-admin/sop-admin-front/assets/js/lib.js
  4. 30
      sop-admin/sop-admin-front/pages/service/routeManager.html
  5. 49
      sop-admin/sop-admin-front/pages/service/routeManager.js
  6. 17
      sop-admin/sop-admin-server/src/main/java/com/gitee/sop/adminserver/api/service/param/RouteParam.java
  7. 11
      sop-admin/sop-admin-server/src/main/java/com/gitee/sop/adminserver/bean/GatewayRouteDefinition.java
  8. 8
      sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/bean/ApiConfig.java
  9. 13
      sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/bean/BaseRouteDefinition.java
  10. 25
      sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/bean/RouteStatus.java
  11. 2
      sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/route/NameVersionRoutePredicateFactory.java
  12. 3
      sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/param/ApiParamFactory.java
  13. 23
      sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/result/BaseExecutorAdapter.java
  14. 4
      sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/zuul/route/SopRouteLocator.java
  15. 8
      sop-service-common/pom.xml
  16. 4
      sop-service-common/src/main/java/com/gitee/sop/servercommon/bean/ServiceApiInfo.java
  17. 10
      sop-service-common/src/main/java/com/gitee/sop/servercommon/configuration/EasyopenServiceConfiguration.java
  18. 6
      sop-service-common/src/main/java/com/gitee/sop/servercommon/manager/DefaultRequestMappingEvent.java
  19. 4
      sop-service-common/src/main/java/com/gitee/sop/servercommon/manager/ServiceZookeeperApiMetaManager.java
  20. 8
      sop-service-common/src/main/java/com/gitee/sop/servercommon/route/GatewayRouteDefinition.java

@ -161,6 +161,9 @@ xblock{
.x-green{ .x-green{
color: green; color: green;
} }
.x-yellow{
color: #ffae19;
}
.x-a{ .x-a{
color: #1AA093; color: #1AA093;
} }

@ -0,0 +1,180 @@
/**
* 表单插件使用方法
* var myform = layui.Form('formId');
* myform.setData({...})
*
* var data = myform.getData();
*
* var name = myform.getData('name')
*/
layui.define(function (exports) {
/**
* form = new Form('formId');
* @param formId
* @constructor
*/
var Form = function (formId) {
this.$form = $('#' + formId);
this.parseForm(this.$form);
}
Form.prototype = {
fire: function (eventName, data) {
var handler = this['on' + eventName];
handler && handler(data);
}
, opt: function (attr) {
return this[attr];
}
/**
* @private
*/
, parseForm: function ($form) {
var that = this;
this.form = $form[0];
this.$els = $form.find('input,select,textarea');
}
/**
* 同load(data)
*/
, setData: function (data) {
this.loadData(data);
}
/**
* @private
*/
, loadData: function (data) {
this.reset();
for (var name in data) {
var val = data[name];
var $el = this.$form.find('[name="' + name + '"]');
$el.each(function () {
var _$el = $(this);
if (_$el.is(':radio') || _$el.is(':checkbox')) {
_$el.prop('checked', false);
var elVal = _$el.val();
if ($.isArray(val)) {
for (var i = 0, len = val.length; i < len; i++) {
if (elVal == val[i]) {
_$el.prop('checked', true);
}
}
} else {
_$el.prop('checked', elVal == val);
}
} else {
_$el.val(val);
}
});
}
}
/**
* 清除表单中的值,清除错误信息
*/
, clear: function () {
this.$els.each(function () {
var _$el = $(this);
if (_$el.is(':radio') || _$el.is(':checkbox')) {
this.checked = false;
} else {
this.value = '';
}
var msg = _$el.data('msg');
if (msg) {
msg.text('');
}
});
}
/**
* 重置表单
*/
, reset: function () {
var form = this.form;
if (form && form.reset) {
form.reset();
} else {
this.clear();
}
}
/**
* 获取表单数据,如果有fieldName参数则返回表单对应的值<br>
* var id = form.getData('id') 等同于 var id = form.getData().id;
* @param {String} fieldName
* @return {Object} 返回JSON对象,如果有fieldName参数,则返回对应的值
*/
, getData: function (fieldName) {
var that = this;
var data = {};
this.$els.each(function () {
var value = that._getInputVal($(this));
if (value) {
var name = this.name;
var dataValue = data[name];
if (dataValue) {
if ($.isArray(dataValue)) {
dataValue.push(value);
} else {
data[name] = [dataValue, value];
}
} else {
data[name] = value;
}
}
});
if (typeof fieldName === 'string') {
return data[fieldName];
}
return data;
}
, getFormData: function ($form) {
var data = {};
var dataArr = $form.serializeArray();
for (var i = 0, len = dataArr.length; i < len; i++) {
var item = dataArr[i];
var name = item.name;
var itemValue = item.value;
var dataValue = data[name];
if (dataValue) {
if ($.isArray(dataValue)) {
dataValue.push(itemValue);
} else {
data[name] = [dataValue, itemValue];
}
} else {
data[name] = itemValue;
}
}
return data;
}
, _getInputVal: function ($input) {
if ($input.is(":radio") || $input.is(":checkbox")) {
if ($input.is(':checked')) {
return $input.val();
}
} else {
return $input.val();
}
}
}
exports('Form', function (formId) {
return new Form(formId);
});
});

@ -14,6 +14,7 @@ var lib = (function () {
,'../../assets/lib/layui/layui.js' ,'../../assets/lib/layui/layui.js'
,'../../assets/lib/easyopen/sdk.js' ,'../../assets/lib/easyopen/sdk.js'
,'../../assets/js/ApiUtil.js' ,'../../assets/js/ApiUtil.js'
,'../../assets/js/Form.js'
,'../../assets/js/profile.js' ,'../../assets/js/profile.js'
] ]
@ -53,7 +54,7 @@ var lib = (function () {
} }
return jsArr; return jsArr;
} }
return { return {
/** /**
* 加载js模块 * 加载js模块

@ -82,18 +82,25 @@
<input type="text" name="path" class="layui-input"/> <input type="text" name="path" class="layui-input"/>
</div> </div>
</div> </div>
<div class="layui-form-item">
<label class="layui-form-label">合并结果</label>
<div class="layui-input-block">
<input type="radio" name="mergeResult" value="1" title="合并">
<input type="radio" name="mergeResult" value="0" title="不合并">
</div>
</div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">忽略验证</label> <label class="layui-form-label">忽略验证</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="ignoreValidate" value="true" title="是"> <input type="radio" name="ignoreValidate" value="1" title="是">
<input type="radio" name="ignoreValidate" value="false" title="否"> <input type="radio" name="ignoreValidate" value="0" title="否">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">状态</label> <label class="layui-form-label">状态</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="disabled" value="false" title="启用"> <input type="radio" name="status" value="1" title="启用">
<input type="radio" name="disabled" value="true" title="<span class='x-red'>禁用</span>"> <input type="radio" name="status" value="2" title="<span class='x-red'>禁用</span>">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
@ -127,18 +134,25 @@
<input type="text" name="path" class="layui-input"/> <input type="text" name="path" class="layui-input"/>
</div> </div>
</div> </div>
<div class="layui-form-item">
<label class="layui-form-label">合并结果</label>
<div class="layui-input-block">
<input type="radio" name="mergeResult" value="1" title="合并">
<input type="radio" name="mergeResult" value="0" title="不合并">
</div>
</div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">忽略验证</label> <label class="layui-form-label">忽略验证</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="ignoreValidate" value="true" title="是"> <input type="radio" name="ignoreValidate" value="1" title="是">
<input type="radio" name="ignoreValidate" value="false" title="否"> <input type="radio" name="ignoreValidate" value="0" title="否">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">状态</label> <label class="layui-form-label">状态</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="radio" name="disabled" value="false" title="启用"> <input type="radio" name="status" value="1" title="启用">
<input type="radio" name="disabled" value="true" title="<span class='x-red'>禁用</span>"> <input type="radio" name="status" value="2" title="<span class='x-red'>禁用</span>">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">

@ -1,13 +1,20 @@
lib.use(['element', 'table', 'tree', 'form'], function () { lib.use(['element', 'table', 'tree', 'form'], function () {
var ROUTE_STATUS = {
'0': '待审核'
,'1': '<span class="x-green">已启用</span>'
,'2': '<span class="x-red">已禁用</span>'
}
var profile = window.profile;
var form = layui.form; var form = layui.form;
var updateForm = layui.Form('updateForm');
var addForm = layui.Form('addForm');
var table = layui.table; var table = layui.table;
var currentServiceId; var currentServiceId;
var routeTable; var routeTable;
var profile = window.profile;
var $updateForm = $('#updateForm');
var $addForm = $('#addForm');
var smTitle; var smTitle;
form.on('submit(searchFilter)', function (data) { form.on('submit(searchFilter)', function (data) {
var param = data.field; var param = data.field;
param.serviceId = currentServiceId; param.serviceId = currentServiceId;
@ -108,16 +115,17 @@ lib.use(['element', 'table', 'tree', 'form'], function () {
, {field: 'path', title: 'path', width: 200} , {field: 'path', title: 'path', width: 200}
, { , {
field: 'ignoreValidate', width: 80, title: '忽略验证', templet: function (row) { field: 'ignoreValidate', width: 80, title: '忽略验证', templet: function (row) {
return row.ignoreValidate return row.ignoreValidate ? '<span class="x-red">是</span>' : '<span>否</span>';
? '<span class="x-red">是</span>'
: '<span>否</span>';
} }
} }
, { , {
field: 'disabled', title: '状态', width: 80, templet: function (row) { field: 'mergeResult', title: '合并结果', width: 80, templet: function (row) {
return row.disabled return row.mergeResult ? '合并' : '<span class="x-yellow">不合并</span>';
? '<span class="x-red">禁用</span>' }
: '<span class="x-green">启用</span>'; }
, {
field: 'status', title: '状态', width: 80, templet: function (row) {
return ROUTE_STATUS[row.status + ''];
} }
} }
, {fixed: 'right', title: '操作', toolbar: '#optBar', width: 100} , {fixed: 'right', title: '操作', toolbar: '#optBar', width: 100}
@ -128,38 +136,37 @@ lib.use(['element', 'table', 'tree', 'form'], function () {
table.on('tool(routeTable)', function(obj) { table.on('tool(routeTable)', function(obj) {
var data = obj.data; var data = obj.data;
if(obj.event === 'edit'){ if(obj.event === 'edit'){
$updateForm.get(0).reset();
//表单初始赋值 //表单初始赋值
data.profile = profile; data.profile = profile;
data.serviceId = currentServiceId; data.serviceId = currentServiceId;
data.disabled = data.disabled + '';
data.ignoreValidate = data.ignoreValidate + ''; updateForm.setData(data);
form.val('updateWinFilter', data)
// form.val('updateWinFilter', data);
layer.open({ layer.open({
type: 1 type: 1
,title: '修改路由' + smTitle ,title: '修改路由' + smTitle
,area: ['500px', '400px'] ,area: ['500px', '460px']
,content: $('#updateWin') //这里content是一个DOM,注意:最好该元素要存放在body最外层,否则可能被其它的相对元素所影响 ,content: $('#updateWin') //这里content是一个DOM,注意:最好该元素要存放在body最外层,否则可能被其它的相对元素所影响
}); });
} }
}); });
table.on('toolbar(routeTable)', function(obj) { table.on('toolbar(routeTable)', function(obj) {
if (obj.event === 'add') { if (obj.event === 'add') {
$addForm.find('input[name=id]').prop('readonly', false);
$addForm.get(0).reset();
var data = {}; var data = {};
data.profile = profile; data.profile = profile;
data.serviceId = currentServiceId; data.serviceId = currentServiceId;
data.id = ''; data.id = '';
// 新加的路由先设置成禁用 // 新加的路由先设置成禁用
data.disabled = 'true'; data.status = 2;
data.ignoreValidate = 'false'; data.ignoreValidate = 0;
form.val('addWinFilter', data); data.mergeResult = 1;
addForm.setData(data);
layer.open({ layer.open({
type: 1 type: 1
,title: '添加路由' + smTitle ,title: '添加路由' + smTitle
,area: ['500px', '400px'] ,area: ['500px', '460px']
,content: $('#addWin') ,content: $('#addWin')
}); });
} }

@ -45,13 +45,20 @@ public class RouteParam {
* 是否忽略验证业务参数验证除外 * 是否忽略验证业务参数验证除外
*/ */
@NotNull @NotNull
@ApiDocField(description = "是否忽略验证") @ApiDocField(description = "是否忽略验证,1:是,0:否")
private Boolean ignoreValidate; private Integer ignoreValidate;
/** /**
* 是否禁用 * 状态
*/ */
@NotNull @NotNull
@ApiDocField(description = "是否禁用") @ApiDocField(description = "状态,0:审核,1:启用,2:禁用")
private Boolean disabled; private Integer status;
/**
* 状态
*/
@NotNull
@ApiDocField(description = "是否合并结果,1:是,0:否")
private Integer mergeResult;
} }

@ -43,10 +43,15 @@ public class GatewayRouteDefinition {
/** /**
* 是否忽略验证业务参数验证除外 * 是否忽略验证业务参数验证除外
*/ */
private boolean ignoreValidate; private int ignoreValidate;
/** /**
* 是否禁用 * 状态0待审核1启用2禁用
*/ */
private boolean disabled; private int status = 1;
/**
* 合并结果
*/
private int mergeResult = 1;
} }

@ -93,15 +93,17 @@ public class ApiConfig {
private List<String> i18nModules = new ArrayList<String>(); private List<String> i18nModules = new ArrayList<String>();
// -------- fields --------- // -------- fields ---------
/** /**
* 忽略验证 * 忽略验证设置true则所有接口不会进行签名校验
*/ */
private boolean ignoreValidate; private boolean ignoreValidate;
/** /**
* 是否对结果进行合并 * 是否对结果进行合并<br>
* 默认情况下是否合并结果由微服务端决定一旦指定该值则由该值决定不管微服务端如何设置
*/ */
private boolean mergeResult = true; private Boolean mergeResult;
/** /**
* 超时时间 * 超时时间

@ -9,6 +9,7 @@ import lombok.Setter;
@Getter @Getter
@Setter @Setter
public class BaseRouteDefinition { public class BaseRouteDefinition {
/** /**
* 路由的Id * 路由的Id
*/ */
@ -31,15 +32,19 @@ public class BaseRouteDefinition {
/** /**
* 是否忽略验证业务参数验证除外 * 是否忽略验证业务参数验证除外
*/ */
private boolean ignoreValidate; private int ignoreValidate;
/** /**
* 是否禁用 * 状态0待审核1启用2禁用
*/ */
private boolean disabled; private int status = 1;
/** /**
* 是否合并结果 * 是否合并结果
*/ */
private boolean mergeResult; private int mergeResult;
public boolean enable() {
return status == RouteStatus.ENABLE.getStatus();
}
} }

@ -0,0 +1,25 @@
package com.gitee.sop.gatewaycommon.bean;
/**
* @author tanghc
*/
public enum RouteStatus {
AUDIT(0, "待审核"),
ENABLE(1, "已启用"),
DISABLE(2, "已禁用"),
;
private int status;
private String description;
RouteStatus(int status, String description) {
this.status = status;
this.description = description;
}
public int getStatus() {
return status;
}
public String getDescription() {
return description;
}}

@ -64,7 +64,7 @@ public class NameVersionRoutePredicateFactory extends AbstractRoutePredicateFact
boolean match = (name + version).equals(nameVersion); boolean match = (name + version).equals(nameVersion);
if (match) { if (match) {
TargetRoute targetRoute = RouteRepositoryContext.getRouteRepository().get(nameVersion); TargetRoute targetRoute = RouteRepositoryContext.getRouteRepository().get(nameVersion);
if (targetRoute != null && targetRoute.getRouteDefinition().isDisabled()) { if (targetRoute != null && !targetRoute.getRouteDefinition().enable()) {
return false; return false;
} }
} }

@ -6,6 +6,7 @@ import com.gitee.sop.gatewaycommon.manager.RouteRepository;
import com.gitee.sop.gatewaycommon.manager.RouteRepositoryContext; import com.gitee.sop.gatewaycommon.manager.RouteRepositoryContext;
import com.gitee.sop.gatewaycommon.message.ErrorEnum; import com.gitee.sop.gatewaycommon.message.ErrorEnum;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.BooleanUtils;
import java.util.Map; import java.util.Map;
@ -30,7 +31,7 @@ public class ApiParamFactory {
if (routeDefinition == null) { if (routeDefinition == null) {
throw ErrorEnum.ISV_INVALID_METHOD.getErrorMeta().getException(); throw ErrorEnum.ISV_INVALID_METHOD.getErrorMeta().getException();
} }
apiParam.setIgnoreValidate(routeDefinition.isIgnoreValidate()); apiParam.setIgnoreValidate(BooleanUtils.toBoolean(routeDefinition.getIgnoreValidate()));
return apiParam; return apiParam;
} }
} }

@ -9,6 +9,7 @@ import com.gitee.sop.gatewaycommon.manager.RouteRepositoryContext;
import com.gitee.sop.gatewaycommon.message.ErrorEnum; import com.gitee.sop.gatewaycommon.message.ErrorEnum;
import com.gitee.sop.gatewaycommon.message.ErrorMeta; import com.gitee.sop.gatewaycommon.message.ErrorMeta;
import com.gitee.sop.gatewaycommon.param.ParamNames; import com.gitee.sop.gatewaycommon.param.ParamNames;
import org.apache.commons.lang.BooleanUtils;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
@ -48,7 +49,7 @@ public abstract class BaseExecutorAdapter<T, R> implements ResultExecutor<T, R>
@Override @Override
public String mergeResult(T request, String serviceResult) { public String mergeResult(T request, String serviceResult) {
boolean isMergeResult = this.isRouteMergeResult(request); boolean isMergeResult = this.isMergeResult(request);
if (!isMergeResult) { if (!isMergeResult) {
return serviceResult; return serviceResult;
} }
@ -80,26 +81,26 @@ public abstract class BaseExecutorAdapter<T, R> implements ResultExecutor<T, R>
* @param request * @param request
* @return * @return
*/ */
protected boolean isRouteMergeResult(T request) { protected boolean isMergeResult(T request) {
boolean defaultSetting = ApiContext.getApiConfig().isMergeResult(); // 默认全局设置
boolean isMergeResult = true; Boolean defaultSetting = ApiContext.getApiConfig().getMergeResult();
if (defaultSetting != null) {
return defaultSetting;
}
Map<String, ?> params = this.getApiParam(request); Map<String, ?> params = this.getApiParam(request);
Object name = params.get(ParamNames.API_NAME); Object name = params.get(ParamNames.API_NAME);
Object version = params.get(ParamNames.VERSION_NAME); Object version = params.get(ParamNames.VERSION_NAME);
if(name == null) { if(name == null) {
// 随便生成一个name
name = System.currentTimeMillis(); name = System.currentTimeMillis();
} }
TargetRoute targetRoute = RouteRepositoryContext.getRouteRepository().get(String.valueOf(name) + version); TargetRoute targetRoute = RouteRepositoryContext.getRouteRepository().get(String.valueOf(name) + version);
if (targetRoute == null) { if (targetRoute == null) {
return defaultSetting; return true;
} else { } else {
isMergeResult = targetRoute.getRouteDefinition().isMergeResult(); int mergeResult = targetRoute.getRouteDefinition().getMergeResult();
} return BooleanUtils.toBoolean(mergeResult);
// 如果路由说合并,还得看网关全局设置,网关全局设置优先级最大
if (isMergeResult) {
isMergeResult = defaultSetting;
} }
return isMergeResult;
} }
protected String wrapResult(String serviceResult) { protected String wrapResult(String serviceResult) {

@ -50,8 +50,8 @@ public class SopRouteLocator implements RouteLocator, Ordered {
if (zuulTargetRoute == null) { if (zuulTargetRoute == null) {
return null; return null;
} }
// 路由被禁 // 路由是否启
if (zuulTargetRoute.getRouteDefinition().isDisabled()) { if (!zuulTargetRoute.getRouteDefinition().enable()) {
throw ErrorEnum.ISV_INVALID_METHOD.getErrorMeta().getException(); throw ErrorEnum.ISV_INVALID_METHOD.getErrorMeta().getException();
} }
return zuulTargetRoute.getTargetRouteDefinition(); return zuulTargetRoute.getTargetRouteDefinition();

@ -16,6 +16,7 @@
<spring-boot.version>2.1.2.RELEASE</spring-boot.version> <spring-boot.version>2.1.2.RELEASE</spring-boot.version>
<maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.target>1.8</maven.compiler.target>
<commons-lang3.version>3.8.1</commons-lang3.version>
<fastjson.version>1.2.15</fastjson.version> <fastjson.version>1.2.15</fastjson.version>
<zookeeper.version>3.4.12</zookeeper.version> <zookeeper.version>3.4.12</zookeeper.version>
</properties> </properties>
@ -50,6 +51,13 @@
<artifactId>spring-boot-starter-data-redis</artifactId> <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency> </dependency>
<!-- commons -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons-lang3.version}</version>
</dependency>
<dependency> <dependency>
<groupId>com.alibaba</groupId> <groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId> <artifactId>fastjson</artifactId>

@ -23,9 +23,9 @@ public class ServiceApiInfo {
/** 版本号 */ /** 版本号 */
private String version; private String version;
/** 是否忽略验证 */ /** 是否忽略验证 */
private boolean ignoreValidate; private int ignoreValidate;
/** 是否合并结果 */ /** 是否合并结果 */
private boolean mergeResult; private int mergeResult;
public ApiMeta() { public ApiMeta() {
} }

@ -1,30 +1,26 @@
package com.gitee.sop.servercommon.configuration; package com.gitee.sop.servercommon.configuration;
import com.gitee.easyopen.ApiContext;
import com.gitee.easyopen.annotation.Api; import com.gitee.easyopen.annotation.Api;
import com.gitee.easyopen.annotation.ApiService;
import com.gitee.easyopen.util.ReflectionUtil; import com.gitee.easyopen.util.ReflectionUtil;
import com.gitee.sop.servercommon.bean.ServiceApiInfo; import com.gitee.sop.servercommon.bean.ServiceApiInfo;
import com.gitee.sop.servercommon.manager.ApiMetaManager; import com.gitee.sop.servercommon.manager.ApiMetaManager;
import com.gitee.sop.servercommon.manager.DefaultRequestMappingEvent; import com.gitee.sop.servercommon.manager.DefaultRequestMappingEvent;
import com.gitee.sop.servercommon.manager.RequestMappingEvent; import com.gitee.sop.servercommon.manager.RequestMappingEvent;
import com.gitee.sop.servercommon.mapping.ApiMappingHandlerMapping; import com.gitee.sop.servercommon.mapping.ApiMappingHandlerMapping;
import org.apache.commons.lang3.BooleanUtils;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.core.annotation.AnnotationUtils; import org.springframework.core.annotation.AnnotationUtils;
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;
import org.springframework.util.ReflectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.function.Consumer; import java.util.function.Consumer;
/** /**
* 提供给easyopen项目使用 * 提供给easyopen项目使用
*
* @author tanghc * @author tanghc
*/ */
public class EasyopenServiceConfiguration extends BaseServiceConfiguration { public class EasyopenServiceConfiguration extends BaseServiceConfiguration {
@ -59,7 +55,7 @@ public class EasyopenServiceConfiguration extends BaseServiceConfiguration {
ServiceApiInfo.ApiMeta apiMeta = new ServiceApiInfo.ApiMeta(); ServiceApiInfo.ApiMeta apiMeta = new ServiceApiInfo.ApiMeta();
apiMeta.setName(api.name()); apiMeta.setName(api.name());
apiMeta.setVersion(api.version()); apiMeta.setVersion(api.version());
apiMeta.setIgnoreValidate(api.ignoreValidate()); apiMeta.setIgnoreValidate(BooleanUtils.toInteger(api.ignoreValidate()));
// /api/goods.get/ // /api/goods.get/
String servletPath = this.buildPath(api); String servletPath = this.buildPath(api);
apiMeta.setPath(servletPath); apiMeta.setPath(servletPath);

@ -5,8 +5,8 @@ import com.gitee.sop.servercommon.mapping.ApiMappingHandlerMapping;
import com.gitee.sop.servercommon.mapping.ApiMappingInfo; import com.gitee.sop.servercommon.mapping.ApiMappingInfo;
import com.gitee.sop.servercommon.mapping.ApiMappingRequestCondition; import com.gitee.sop.servercommon.mapping.ApiMappingRequestCondition;
import lombok.Getter; import lombok.Getter;
import org.apache.commons.lang3.BooleanUtils;
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;
import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.method.HandlerMethod; import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.mvc.condition.RequestCondition; import org.springframework.web.servlet.mvc.condition.RequestCondition;
@ -92,8 +92,8 @@ public class DefaultRequestMappingEvent implements RequestMappingEvent {
name = buildName(path); name = buildName(path);
} }
ServiceApiInfo.ApiMeta apiMeta = new ServiceApiInfo.ApiMeta(name, path, version); ServiceApiInfo.ApiMeta apiMeta = new ServiceApiInfo.ApiMeta(name, path, version);
apiMeta.setIgnoreValidate(apiMappingInfo.isIgnoreValidate()); apiMeta.setIgnoreValidate(BooleanUtils.toInteger(apiMappingInfo.isIgnoreValidate()));
apiMeta.setMergeResult(apiMappingInfo.isMergeResult()); apiMeta.setMergeResult(BooleanUtils.toInteger(apiMappingInfo.isMergeResult()));
return apiMeta; return apiMeta;
} }
return null; return null;

@ -110,8 +110,8 @@ public class ServiceZookeeperApiMetaManager implements ApiMetaManager {
String path = this.buildServletPath(serviceApiInfo, apiMeta); String path = this.buildServletPath(serviceApiInfo, apiMeta);
gatewayRouteDefinition.setUri(uri); gatewayRouteDefinition.setUri(uri);
gatewayRouteDefinition.setPath(path); gatewayRouteDefinition.setPath(path);
gatewayRouteDefinition.setIgnoreValidate(apiMeta.isIgnoreValidate()); gatewayRouteDefinition.setIgnoreValidate(apiMeta.getIgnoreValidate());
gatewayRouteDefinition.setMergeResult(apiMeta.isMergeResult()); gatewayRouteDefinition.setMergeResult(apiMeta.getMergeResult());
return gatewayRouteDefinition; return gatewayRouteDefinition;
} }

@ -43,15 +43,15 @@ public class GatewayRouteDefinition {
/** /**
* 是否忽略验证业务参数验证除外 * 是否忽略验证业务参数验证除外
*/ */
private boolean ignoreValidate; private int ignoreValidate;
/** /**
* 是否禁用 * 状态0待审核1启用2禁用
*/ */
private boolean disabled; private int status = 1;
/** /**
* 是否合并结果 * 是否合并结果
*/ */
private boolean mergeResult; private int mergeResult;
} }
Loading…
Cancel
Save