用户工具

站点工具


apijson:function
  • function
CREATE TABLE `function` (
  `id` bigint(15) NOT NULL AUTO_INCREMENT,
  `userId` bigint(15) NOT NULL COMMENT '管理员用户Id',
  `name` varchar(50) NOT NULL COMMENT '方法名',
  `arguments` varchar(100) DEFAULT NULL COMMENT '参数列表,每个参数的类型都是 String。\n用 , 分割的字符串 比 [JSONArray] 更好,例如 array,item ,更直观,还方便拼接函数。',
  `demo` mediumtext NOT NULL COMMENT '可用的示例。\nTODO 改成 call,和返回值示例 back 对应。',
  `detail` varchar(1000) NOT NULL COMMENT '详细描述',
  `type` varchar(50) NOT NULL DEFAULT 'Object' COMMENT '返回值类型。TODO RemoteFunction 校验 type 和 back',
  `version` tinyint(4) NOT NULL DEFAULT 0 COMMENT '允许的最低版本号,只限于GET,HEAD外的操作方法。\nTODO 使用 requestIdList 替代 version,tag,methods',
  `tag` varchar(20) DEFAULT NULL COMMENT '允许的标签.\nnull - 允许全部\nTODO 使用 requestIdList 替代 version,tag,methods',
  `methods` varchar(50) DEFAULT NULL COMMENT '允许的操作方法。\nnull - 允许全部\nTODO 使用 requestIdList 替代 version,tag,methods',
  `date` timestamp NOT NULL DEFAULT current_timestamp() COMMENT '创建时间',
  `back` varchar(45) DEFAULT NULL COMMENT '返回值示例',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8 COMMENT='远程函数。强制在启动时校验所有demo是否能正常运行通过'
  • 自带函数
{"[]":{"Function":{}},"countArray()":"countArray([])"}  //相比head请求统计总数,还返回了所有数据
{"Access":{"id":"1","@column":"get,head,date"},"countObject()":"countObject(Access)"}  //3列,值为3
  • 自定义函数:拼音排序,{“Function[]”:{“Function”:{}},“sort()”:“pinyinSort(Function[],detail)”}
INSERT INTO `function` VALUES ('20', '0', 'pinyinSort', 'object,key', '{\"object\":\"Province[]\",\"key\":\"name\"}', '根据name拼音排序', 'Object', '0', null, null, '2021-03-21 21:49:18', null);
#DemoFunctionParser
public boolean pinyinSort(@NotNull JSONObject current, @NotNull String object, @NotNull String key) {
	Object obj = current.get(object);
	if(obj instanceof JSONArray) {
		JSONArray array = current.getJSONArray(object);
		array.sort(new Comparator<Object>() {
			@Override
			public int compare(Object o1, Object o2) {
				if(Objects.equals(o1, o2)) {
					return 0;
				}
				if(o1 instanceof JSONObject && o2 instanceof JSONObject) {
					JSONObject json1 = (JSONObject)o1, json2 = (JSONObject)o2;
					String value1 = json1.getString(key), value2 = json2.getString(key);
					return PinyinUtil.ZH_COMPARATOR.compare(value1, value2);
				}
				return 0;
			}
		});
		return true;
	}else {
		return false;
	}
}
apijson/function.txt · 最后更改: 2021/07/12 18:26 由 admin