Ver Fonte

优化脚本调用逻辑,可调用java方法非静态方法

mxd há 4 anos atrás
pai
commit
0093765b38

+ 0 - 8
src/main/java/org/ssssssss/magicapi/config/MagicConfiguration.java

@@ -200,14 +200,6 @@ public class MagicConfiguration {
 		this.magicFunctionManager = magicFunctionManager;
 	}
 
-	public SyncConfig getSyncConfig() {
-		return syncConfig;
-	}
-
-	public void setSyncConfig(SyncConfig syncConfig) {
-		this.syncConfig = syncConfig;
-	}
-
 	public String getEditorConfig() {
 		return editorConfig;
 	}

+ 0 - 48
src/main/java/org/ssssssss/magicapi/config/SyncConfig.java

@@ -1,48 +0,0 @@
-package org.ssssssss.magicapi.config;
-
-/**
- * 同步配置
- *
- * @since 0.7.0
- */
-public class SyncConfig {
-
-	/**
-	 * 秘钥
-	 */
-	private String secret;
-
-	/**
-	 * 是否允许pull
-	 */
-	private boolean allowPull = true;
-
-	/**
-	 * 是否允许push
-	 */
-	private boolean allowPush = true;
-
-	public String getSecret() {
-		return secret;
-	}
-
-	public void setSecret(String secret) {
-		this.secret = secret;
-	}
-
-	public boolean isAllowPull() {
-		return allowPull;
-	}
-
-	public void setAllowPull(boolean allowPull) {
-		this.allowPull = allowPull;
-	}
-
-	public boolean isAllowPush() {
-		return allowPush;
-	}
-
-	public void setAllowPush(boolean allowPush) {
-		this.allowPush = allowPush;
-	}
-}

+ 0 - 74
src/main/java/org/ssssssss/magicapi/controller/MagicWorkbenchController.java

@@ -4,21 +4,13 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.http.HttpHeaders;
 import org.springframework.util.ResourceUtils;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.client.RestTemplate;
 import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
 import org.ssssssss.magicapi.config.MagicConfiguration;
-import org.ssssssss.magicapi.interceptor.RequestInterceptor;
 import org.ssssssss.magicapi.logging.MagicLoggerContext;
 import org.ssssssss.magicapi.model.JsonBean;
 import org.ssssssss.magicapi.model.Options;
-import org.ssssssss.magicapi.model.SynchronizeRequest;
-import org.ssssssss.magicapi.model.SynchronizeResponse;
-import org.ssssssss.magicapi.provider.ApiServiceProvider;
-import org.ssssssss.magicapi.provider.GroupServiceProvider;
 import org.ssssssss.magicapi.utils.MD5Utils;
 
 import javax.servlet.http.HttpServletRequest;
@@ -35,16 +27,8 @@ public class MagicWorkbenchController extends MagicController {
 
 	private static Logger logger = LoggerFactory.getLogger(MagicWorkbenchController.class);
 
-	private RestTemplate restTemplate = new RestTemplate();
-
-	private ApiServiceProvider agiApiService;
-
-	private GroupServiceProvider groupService;
-
 	public MagicWorkbenchController(MagicConfiguration configuration) {
 		super(configuration);
-		this.agiApiService = configuration.getMagicApiService();
-		this.groupService = configuration.getGroupServiceProvider();
 	}
 
 	/**
@@ -81,64 +65,6 @@ public class MagicWorkbenchController extends MagicController {
 		return new JsonBean<>(Stream.of(Options.values()).map(item -> Collections.singletonMap(item.getValue(), item.getName())).collect(Collectors.toList()));
 	}
 
-
-	private String validateRequest(SynchronizeRequest request) {
-		if (StringUtils.isBlank(request.getMode())) {
-			return "请求参数有误";
-		}
-		if (request.getMode().equals("1") && StringUtils.isBlank(request.getGroupId())) {
-			return "分组id不能为空";
-		}
-		if (request.getMode().equals("2") && (StringUtils.isBlank(request.getApiId()) || StringUtils.isBlank(request.getFunctionId()))) {
-			return "函数id或接口id不能同时为空";
-		}
-		return null;
-	}
-
-	@RequestMapping("/synchronize")
-	@ResponseBody
-	public JsonBean<SynchronizeResponse> synchronize(SynchronizeRequest synchronizeRequest, HttpServletRequest request) {
-		if (!allowVisit(request, RequestInterceptor.Authorization.SYNC)) {
-			return new JsonBean<>(-10, "无权限执行同步方法");
-		}
-		String message = validateRequest(synchronizeRequest);
-		if (message == null) {
-			List<SynchronizeRequest.Info> infos = agiApiService.listForSync(null, synchronizeRequest.getApiId());
-			infos.forEach(it -> it.setGroupPath(groupService.getFullPath(it.getGroupId())));
-			synchronizeRequest.setInfos(infos);
-			return request(synchronizeRequest);
-		}
-		return new JsonBean<>(0, message);
-	}
-
-	@RequestMapping("/synchronize/pull")
-	@ResponseBody
-	public JsonBean<Void> pull(SynchronizeRequest synchronizeRequest, HttpServletRequest request) {
-		if (!allowVisit(request, RequestInterceptor.Authorization.PULL)) {
-			return new JsonBean<>(-10, "无权限执行拉取方法");
-		}
-		return null;
-	}
-
-	@RequestMapping("/synchronize/push")
-	@ResponseBody
-	public JsonBean<Void> push(SynchronizeRequest synchronizeRequest, HttpServletRequest request) {
-		if (!allowVisit(request, RequestInterceptor.Authorization.PUSH)) {
-			return new JsonBean<>(-10, "无权限执行推送方法");
-		}
-		return null;
-	}
-
-	private JsonBean<SynchronizeResponse> request(SynchronizeRequest request) {
-		HttpHeaders headers = new HttpHeaders();
-		headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
-		String requestURL = String.format("%s/_synchronize?secret=%s", request.getRemote(), request.getSecret());
-		HttpEntity<Object> entity = new HttpEntity<>(request, headers);
-		return restTemplate.exchange(requestURL, HttpMethod.POST, entity, new ParameterizedTypeReference<JsonBean<SynchronizeResponse>>() {
-		}).getBody();
-	}
-
-
 	@RequestMapping(value = "/config-js", produces = "application/javascript")
 	@ResponseBody
 	public Object configjs() {

+ 0 - 89
src/main/java/org/ssssssss/magicapi/controller/SynchronizeController.java

@@ -1,89 +0,0 @@
-package org.ssssssss.magicapi.controller;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.ssssssss.magicapi.config.MagicConfiguration;
-import org.ssssssss.magicapi.config.SyncConfig;
-import org.ssssssss.magicapi.model.JsonBean;
-import org.ssssssss.magicapi.model.SynchronizeRequest;
-import org.ssssssss.magicapi.model.SynchronizeResponse;
-import org.ssssssss.magicapi.provider.ApiServiceProvider;
-import org.ssssssss.magicapi.provider.GroupServiceProvider;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
-public class SynchronizeController extends MagicController {
-
-	private SyncConfig syncConfig;
-
-	private ApiServiceProvider agiApiService;
-
-	private GroupServiceProvider groupService;
-
-
-	public SynchronizeController(MagicConfiguration configuration) {
-		super(configuration);
-		this.syncConfig = configuration.getSyncConfig();
-		this.agiApiService = configuration.getMagicApiService();
-		this.groupService = configuration.getGroupServiceProvider();
-	}
-
-	private boolean validateSecret(String secret) {
-		return StringUtils.isNotBlank(syncConfig.getSecret()) && Objects.equals(secret, syncConfig.getSecret());
-	}
-
-	@RequestMapping("/_synchronize")
-	@ResponseBody
-	public JsonBean<SynchronizeResponse> doSynchronize(@RequestBody SynchronizeRequest synchronizeRequest) {
-		if (!validateSecret(synchronizeRequest.getSecret())) {
-			return new JsonBean<>(-100, "秘钥不正确");
-		}
-		// 查询该环境下的信息
-		List<SynchronizeRequest.Info> oldInfos = agiApiService.listForSync(synchronizeRequest.getGroupId(), synchronizeRequest.getApiId());
-		List<SynchronizeRequest.Info> newInfos = synchronizeRequest.getInfos();
-		oldInfos.forEach(it -> it.setGroupPath(groupService.getFullPath(it.getGroupId())));
-		// 对比差异
-		Map<String, SynchronizeRequest.Info> oldInfoMap = oldInfos.stream().collect(Collectors.toMap(SynchronizeRequest.Info::getId, it -> it));
-		Map<String, SynchronizeRequest.Info> newInfoMap = newInfos.stream().collect(Collectors.toMap(SynchronizeRequest.Info::getId, it -> it));
-		SynchronizeResponse response = new SynchronizeResponse();
-		newInfos.forEach(info -> {
-			SynchronizeRequest.Info oldInfo = oldInfoMap.get(info.getId());
-			if (oldInfo == null) {
-				// 如果找不到,则是新增
-				response.addAdded(info);
-			} else if (!Objects.equals(info.getUpdateTime(), oldInfo.getUpdateTime())) {
-				// 修改时间不同,则是修改
-				response.addUpdated(oldInfo);
-			}
-		});
-		// 找出删除项
-		oldInfos.stream().filter(it -> !newInfoMap.containsKey(it.getId())).forEach(response::addRemoved);
-		return new JsonBean<>(response);
-	}
-
-
-//	@RequestMapping("/_synchronize/pull")
-//	@ResponseBody
-//	public JsonBean<Void> doPull(SynchronizeRequest synchronizeRequest) {
-//		if (!validateSecret(synchronizeRequest)) {
-//			return new JsonBean<>(-100, "秘钥不正确");
-//		}
-//		return null;
-//	}
-//
-//	@RequestMapping("/_synchronize/push")
-//	@ResponseBody
-//	public JsonBean<Void> doPush(SynchronizeRequest synchronizeRequest) {
-//		if (!validateSecret(synchronizeRequest)) {
-//			return new JsonBean<>(-100, "秘钥不正确");
-//		}
-//		return null;
-//	}
-
-
-}

+ 0 - 176
src/main/java/org/ssssssss/magicapi/model/SynchronizeRequest.java

@@ -1,176 +0,0 @@
-package org.ssssssss.magicapi.model;
-
-import java.util.List;
-
-public class SynchronizeRequest {
-
-	private String secret;
-
-	private String remote;
-
-
-	/**
-	 * 0 全部
-	 * 1 一个组
-	 * 2 一个接口或函数
-	 */
-	private String mode;
-
-	/**
-	 * 分组ID
-	 */
-	private String groupId;
-
-	/**
-	 * 接口ID
-	 */
-	private String apiId;
-
-	/**
-	 * 函数ID
-	 */
-	private String functionId;
-
-	private List<Info> infos;
-
-	public String getMode() {
-		return mode;
-	}
-
-	public void setMode(String mode) {
-		this.mode = mode;
-	}
-
-	public String getGroupId() {
-		return groupId;
-	}
-
-	public void setGroupId(String groupId) {
-		this.groupId = groupId;
-	}
-
-	public String getApiId() {
-		return apiId;
-	}
-
-	public void setApiId(String apiId) {
-		this.apiId = apiId;
-	}
-
-	public String getFunctionId() {
-		return functionId;
-	}
-
-	public void setFunctionId(String functionId) {
-		this.functionId = functionId;
-	}
-
-	public String getSecret() {
-		return secret;
-	}
-
-	public void setSecret(String secret) {
-		this.secret = secret;
-	}
-
-	public String getRemote() {
-		return remote;
-	}
-
-	public void setRemote(String remote) {
-		this.remote = remote;
-	}
-
-	public List<Info> getInfos() {
-		return infos;
-	}
-
-	public void setInfos(List<Info> infos) {
-		this.infos = infos;
-	}
-
-	public static class Info {
-
-		private String id;
-
-		private String name;
-
-		private String method;
-
-		private String groupId;
-
-		private String groupPath;
-
-		private String path;
-
-		private Long updateTime;
-
-		public static Info from(ApiInfo apiInfo) {
-			Info info = new Info();
-			info.setId(apiInfo.getId());
-			info.setName(apiInfo.getName());
-			info.setMethod(apiInfo.getMethod());
-			info.setPath(apiInfo.getPath());
-			info.setUpdateTime(apiInfo.getUpdateTime());
-			info.setGroupId(apiInfo.getGroupId());
-			return info;
-		}
-
-		public String getGroupPath() {
-			return groupPath;
-		}
-
-		public void setGroupPath(String groupPath) {
-			this.groupPath = groupPath;
-		}
-
-		public String getId() {
-			return id;
-		}
-
-		public void setId(String id) {
-			this.id = id;
-		}
-
-		public String getName() {
-			return name;
-		}
-
-		public void setName(String name) {
-			this.name = name;
-		}
-
-		public String getMethod() {
-			return method;
-		}
-
-		public void setMethod(String method) {
-			this.method = method;
-		}
-
-		public String getPath() {
-			return path;
-		}
-
-		public void setPath(String path) {
-			this.path = path;
-		}
-
-		public Long getUpdateTime() {
-			return updateTime;
-		}
-
-		public void setUpdateTime(Long updateTime) {
-			this.updateTime = updateTime;
-		}
-
-		public String getGroupId() {
-			return groupId;
-		}
-
-		public void setGroupId(String groupId) {
-			this.groupId = groupId;
-		}
-	}
-
-}

+ 0 - 49
src/main/java/org/ssssssss/magicapi/model/SynchronizeResponse.java

@@ -1,49 +0,0 @@
-package org.ssssssss.magicapi.model;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class SynchronizeResponse {
-
-	private List<SynchronizeRequest.Info> added = new ArrayList<>();
-
-	private List<SynchronizeRequest.Info> removed = new ArrayList<>();
-
-	private List<SynchronizeRequest.Info> updated = new ArrayList<>();
-
-	public void addRemoved(SynchronizeRequest.Info info) {
-		this.removed.add(info);
-	}
-
-	public void addUpdated(SynchronizeRequest.Info info) {
-		this.updated.add(info);
-	}
-
-	public void addAdded(SynchronizeRequest.Info info) {
-		this.added.add(info);
-	}
-
-	public List<SynchronizeRequest.Info> getAdded() {
-		return added;
-	}
-
-	public void setAdded(List<SynchronizeRequest.Info> added) {
-		this.added = added;
-	}
-
-	public List<SynchronizeRequest.Info> getRemoved() {
-		return removed;
-	}
-
-	public void setRemoved(List<SynchronizeRequest.Info> removed) {
-		this.removed = removed;
-	}
-
-	public List<SynchronizeRequest.Info> getUpdated() {
-		return updated;
-	}
-
-	public void setUpdated(List<SynchronizeRequest.Info> updated) {
-		this.updated = updated;
-	}
-}

+ 9 - 9
src/main/java/org/ssssssss/magicapi/modules/MongoCollectionExtension.java

@@ -17,32 +17,32 @@ import java.util.stream.Collectors;
 public class MongoCollectionExtension {
 
 	@Comment("执行批量插入操作")
-	public static void insert(MongoCollection<Document> collection, @Comment("要插入的集合") List<Map<String, Object>> maps) {
+	public void insert(MongoCollection<Document> collection, @Comment("要插入的集合") List<Map<String, Object>> maps) {
 		collection.insertMany(maps.stream().map(Document::new).collect(Collectors.toList()));
 	}
 
 	@Comment("执行单条插入操作")
-	public static void insert(MongoCollection<Document> collection, @Comment("执行插入数据") Map<String, Object> map) {
+	public void insert(MongoCollection<Document> collection, @Comment("执行插入数据") Map<String, Object> map) {
 		insert(collection, Collections.singletonList(map));
 	}
 
 	@Comment("执行查询操作")
-	public static FindIterable<Document> find(MongoCollection<Document> collection, @Comment("查询条件") Map<String, Object> query) {
+	public FindIterable<Document> find(MongoCollection<Document> collection, @Comment("查询条件") Map<String, Object> query) {
 		return collection.find(new Document(query));
 	}
 
 	@Comment("修改操作,返回修改数量")
-	public static long update(MongoCollection<Document> collection, @Comment("查询条件") Map<String, Object> query, @Comment("修改值") Map<String, Object> update) {
+	public long update(MongoCollection<Document> collection, @Comment("查询条件") Map<String, Object> query, @Comment("修改值") Map<String, Object> update) {
 		return collection.updateOne(new Document(query), new Document(update)).getModifiedCount();
 	}
 
 	@Comment("批量修改,返回修改数量")
-	public static long updateMany(MongoCollection<Document> collection, @Comment("修改条件") Map<String, Object> query, @Comment("修改值") Map<String, Object> update) {
+	public long updateMany(MongoCollection<Document> collection, @Comment("修改条件") Map<String, Object> query, @Comment("修改值") Map<String, Object> update) {
 		return collection.updateMany(new Document(query), new Document(update)).getModifiedCount();
 	}
 
 	@Comment("批量修改,返回修改数量")
-	public static long updateMany(MongoCollection<Document> collection, @Comment("查询条件") Map<String, Object> query, @Comment("修改值") Map<String, Object> update, Map<String, Object> filters) {
+	public long updateMany(MongoCollection<Document> collection, @Comment("查询条件") Map<String, Object> query, @Comment("修改值") Map<String, Object> update, Map<String, Object> filters) {
 		UpdateOptions updateOptions = new UpdateOptions();
 		if (filters != null && !filters.isEmpty()) {
 			Object upsert = filters.get("upsert");
@@ -62,17 +62,17 @@ public class MongoCollectionExtension {
 	}
 
 	@Comment("查询数量")
-	public static long count(MongoCollection<Document> collection, @Comment("查询") Map<String, Object> query) {
+	public long count(MongoCollection<Document> collection, @Comment("查询") Map<String, Object> query) {
 		return collection.countDocuments(new Document(query));
 	}
 
 	@Comment("批量删除,返回删除条数")
-	public static long remove(MongoCollection<Document> collection, @Comment("删除条件") Map<String, Object> query) {
+	public long remove(MongoCollection<Document> collection, @Comment("删除条件") Map<String, Object> query) {
 		return collection.deleteMany(new Document(query)).getDeletedCount();
 	}
 
 	@Comment("删除一条,返回删除条数")
-	public static long removeOne(MongoCollection<Document> collection, @Comment("删除条件") Map<String, Object> query) {
+	public long removeOne(MongoCollection<Document> collection, @Comment("删除条件") Map<String, Object> query) {
 		return collection.deleteOne(new Document(query)).getDeletedCount();
 	}
 }

+ 1 - 1
src/main/java/org/ssssssss/magicapi/modules/MongoFindIterableExtension.java

@@ -15,7 +15,7 @@ import java.util.Map;
 public class MongoFindIterableExtension {
 
 	@Comment("结果转为List")
-	public static List<Map<String, Object>> list(FindIterable<Document> iterable) {
+	public List<Map<String, Object>> list(FindIterable<Document> iterable) {
 		MongoCursor<Document> cursor = iterable.iterator();
 		List<Map<String, Object>> result = new ArrayList<>();
 		while (cursor.hasNext()) {

+ 0 - 7
src/main/java/org/ssssssss/magicapi/provider/StoreServiceProvider.java

@@ -1,7 +1,5 @@
 package org.ssssssss.magicapi.provider;
 
-import org.ssssssss.magicapi.model.SynchronizeRequest;
-
 import java.util.List;
 
 public interface StoreServiceProvider<T> {
@@ -52,11 +50,6 @@ public interface StoreServiceProvider<T> {
 	 */
 	List<T> listWithScript();
 
-	/**
-	 * 查询带有id,名字,请求访问,路径,修改时间的集合
-	 */
-	List<SynchronizeRequest.Info> listForSync(String groupId, String id);
-
 	/**
 	 * 查询接口详情(主要给页面使用)
 	 *

+ 2 - 25
src/main/java/org/ssssssss/magicapi/provider/impl/DefaultApiServiceProvider.java

@@ -1,13 +1,10 @@
 package org.ssssssss.magicapi.provider.impl;
 
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.ssssssss.magicapi.model.ApiInfo;
-import org.ssssssss.magicapi.model.SynchronizeRequest;
 import org.ssssssss.magicapi.provider.ApiServiceProvider;
 
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.UUID;
@@ -49,32 +46,12 @@ public class DefaultApiServiceProvider extends BeanPropertyRowMapper<ApiInfo> im
 	public List<ApiInfo> listWithScript() {
 		String selectListWithScript = "select " + COMMON_COLUMNS + "," + SCRIPT_COLUMNS + " from magic_api_info";
 		List<ApiInfo> infos = template.query(selectListWithScript, this);
-		if (infos != null) {
-			for (ApiInfo info : infos) {
-				unwrap(info);
-			}
+		for (ApiInfo info : infos) {
+			unwrap(info);
 		}
 		return infos;
 	}
 
-	@Override
-	public List<SynchronizeRequest.Info> listForSync(String groupId, String id) {
-		String sql = "select id,api_group_id,api_name,api_method,api_path,api_update_time from magic_api_info";
-		List<String> parameters = new ArrayList<>();
-		if (StringUtils.isNotBlank(groupId) || StringUtils.isNotBlank(id)) {
-			sql += " where 1=1 ";
-			if (StringUtils.isNotBlank(groupId)) {
-				sql += " and api_group_id = ?";
-				parameters.add(groupId);
-			}
-			if (StringUtils.isNotBlank(id)) {
-				sql += " and id = ?";
-				parameters.add(id);
-			}
-		}
-		return template.query(sql, this, parameters.toArray()).stream().map(SynchronizeRequest.Info::from).collect(Collectors.toList());
-	}
-
 	public ApiInfo get(String id) {
 		String selectOne = "select " + COMMON_COLUMNS + "," + SCRIPT_COLUMNS + " from magic_api_info where id = ?";
 		ApiInfo info = template.queryForObject(selectOne, this, id);

+ 0 - 6
src/main/java/org/ssssssss/magicapi/provider/impl/DefaultFunctionServiceProvider.java

@@ -3,7 +3,6 @@ package org.ssssssss.magicapi.provider.impl;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.ssssssss.magicapi.model.FunctionInfo;
-import org.ssssssss.magicapi.model.SynchronizeRequest;
 import org.ssssssss.magicapi.provider.FunctionServiceProvider;
 
 import java.util.Arrays;
@@ -92,11 +91,6 @@ public class DefaultFunctionServiceProvider extends BeanPropertyRowMapper<Functi
 		return infos;
 	}
 
-	@Override
-	public List<SynchronizeRequest.Info> listForSync(String groupId, String id) {
-		return null;
-	}
-
 	@Override
 	public FunctionInfo get(String id) {
 		String selectOne = "select " + COMMON_COLUMNS + "," + SCRIPT_COLUMNS + " from magic_function where id = ?";