-- MySQL dump 10.13 Distrib 5.7.17, for macos10.12 (x86_64) -- -- Host: apijson.cn Database: sys -- ------------------------------------------------------ -- Server version 5.7.33-log /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -- -- Table structure for table `Document` -- DROP TABLE IF EXISTS `Document`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `Document` ( `id` bigint(15) NOT NULL AUTO_INCREMENT COMMENT '唯一标识', `userId` bigint(15) NOT NULL COMMENT '管理员用户id。\n需要先建Admin表,新增登录等相关接口。', `testAccountId` bigint(15) NOT NULL DEFAULT '0' COMMENT '测试账号id。0-不限', `version` tinyint(4) NOT NULL DEFAULT '3' COMMENT '接口版本号\n<=0 - 不限制版本,任意版本都可用这个接口;\n>0 - 在这个版本添加的接口。\n\n可在给新版文档前调高默认值,新增的测试用例就不用手动设置版本号了。', `name` varchar(100) NOT NULL COMMENT '接口名称', `type` varchar(5) NOT NULL DEFAULT 'JSON' COMMENT 'PARAM - GET url parameters,\nFORM - POST application/www-x-form-url-encoded,\nJSON - POST application/json', `url` varchar(250) NOT NULL COMMENT '请求地址', `request` text NOT NULL COMMENT '请求\n用json格式会导致强制排序,而请求中引用赋值只能引用上面的字段,必须有序。', `standard` text, `header` text COMMENT '请求头 Request Header:\nkey: value //注释', `date` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1612031683616 DEFAULT CHARSET=utf8 COMMENT='测试用例文档\n后端开发者在测试好后,把选好的测试用例上传,这样就能共享给前端/客户端开发者'; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `Document` -- LOCK TABLES `Document` WRITE; /*!40000 ALTER TABLE `Document` DISABLE KEYS */; INSERT INTO `Document` VALUES (1,82001,82001,1,'登录','JSON','/login','{\n \"type\": 0, //密码类型,0-登录密码 1-验证码\n \"phone\": \"13000082001\", //手机号\n \"password\": \"123456\", //登录密码或验证码\n \"version\": 1, //版本号\n \"remember\": false //记住登录\n}',NULL,NULL,'2017-11-26 07:35:19'),(2,82001,0,1,'注册(先获取验证码type:1)','JSON','/register','{\n \"Privacy\": {\n \"phone\": \"13000083333\",\n \"_password\": \"123456\"\n },\n \"User\": {\n \"name\": \"APIJSONUser\"\n },\n \"verify\": \"6840\" //验证码,需要先调用接口 /post/verify\n}',NULL,NULL,'2017-11-26 07:35:19'),(3,82001,0,1,'退出登录','JSON','/logout','{}',NULL,NULL,'2017-11-26 09:56:10'),(1511689914599,82001,0,1,'获取用户隐私信息','JSON','/gets','{\"tag\": \"Privacy\", \"Privacy\": {\"id\": 82001}}',NULL,NULL,'2017-11-26 09:51:54'),(1511796155276,82001,0,1,'获取验证码','JSON','/post/verify','{\n \"type\": 0, //类型: 0-登录 1-注册 2-修改登录密码 3-修改支付密码\n \"phone\": \"13000082001\" //手机号\n}',NULL,NULL,'2017-11-27 15:23:28'),(1511796208671,82001,0,1,'检查验证码是否存在','JSON','/heads/verify','{\n \"type\": 0, //类型: 0-登录 1-注册 2-修改登录密码 3-修改支付密码\n \"phone\": \"13000082001\" //手机号\n}',NULL,NULL,'2017-11-27 15:23:28'),(1511796589078,82001,82001,1,'修改登录密码(先获取验证码type:2)-手机号+验证码','JSON','/put/password','{\n \"verify\": \"10322\", //验证码,需要先调用接口 /post/verify\n \"Privacy\": {\n \"phone\": \"13000082001\",\n \"_password\": \"666666\"\n }\n}',NULL,NULL,'2017-11-27 15:23:28'),(1511796882184,82001,82001,1,'充值(需要支付密码)/提现','JSON','/put/balance','{\"tag\": \"Privacy\", \"Privacy\": {\"id\": 82001, \"balance+\": 100.15, \"_payPassword\": \"123456\"}}',NULL,NULL,'2017-11-27 15:34:42'),(1511969417633,82001,82001,1,'点赞/取消点赞','JSON','/put','{\n \"Moment\": {\n \"id\": 15,\n \"praiseUserIdList-\": [\n 82001\n ]\n },\n \"tag\": \"Moment\"\n}',NULL,NULL,'2017-11-29 15:30:17'),(1511969630372,82001,82001,1,'新增评论','JSON','/post','{ \"Comment\": { \"momentId\": 15, \"content\": \"测试新增评论\" }, \"tag\": \"Comment\" }',NULL,NULL,'2017-11-29 15:33:50'),(1511970009072,82001,82001,1,'新增动态','JSON','/post','{ \"Moment\": { \"content\": \"测试新增动态\", \"pictureList\": [\"http://static.oschina.net/uploads/user/48/96331_50.jpg\" ] }, \"tag\": \"Moment\" }',NULL,NULL,'2017-11-29 15:40:09'),(1511970224333,82001,82001,1,'修改用户信息','JSON','/put','{\r \"User\": {\r \"id\": 82001,\r \"name\": \"测试账号\"\r },\r \"tag\": \"User\"\r }',NULL,NULL,'2017-11-29 15:43:44'),(1521901518765,88888,0,2,'功能符(对象关键词): ⑤从pictureList获取第0张图片:','JSON','/get','{ \"User\": { \"id\": 38710, \"@position\": 0, \"firstPicture()\": \"getFromArray(pictureList,@position)\" } }',NULL,NULL,'2018-03-24 14:25:18'),(1521901610784,88888,0,2,'功能符(对象关键词): ④查询 按userId分组、id最大值>=100 的Moment数组','JSON','/get','{\"[]\":{\"count\":10,\"Moment\":{\"@column\":\"userId;max(id):maxId\",\"@group\":\"userId\",\"@having\":\"maxId>=100\"}}}',NULL,NULL,'2018-03-24 14:26:50'),(1521901682846,88888,0,2,'功能符(对象关键词): ③查询按userId分组的Moment数组','JSON','/get','{\"[]\":{\"count\":10,\"Moment\":{\"@column\":\"userId,id\",\"@group\":\"userId,id\"}}}',NULL,NULL,'2018-03-24 14:28:02'),(1521901746809,88888,0,2,'功能符(对象关键词): ②查询按 name降序、id默认顺序 排序的User数组','JSON','/get','{\"[]\":{\"count\":10,\"User\":{\"@column\":\"name,id\",\"@order\":\"name-,id\"}}}',NULL,NULL,'2018-03-24 14:29:06'),(1521901787203,88888,0,2,'功能符(对象关键词): ①只查询id,sex,name这几列并且请求结果也按照这个顺序','JSON','/get','{\"User\":{\"@column\":\"id,sex,name\",\"id\":38710}}',NULL,NULL,'2018-03-24 14:29:47'),(1521902033332,88888,0,2,'功能符(数组关键词): ③查询User数组和对应的User总数','JSON','/get','{\"[]\":{\"query\":2,\"count\":5,\"User\":{}},\"total@\":\"/[]/total\"}',NULL,NULL,'2018-03-24 14:33:53'),(1521902069871,88888,0,2,'功能符(数组关键词): ②查询第3页的User数组,每页5个','JSON','/get','{\"[]\":{\"count\":5,\"page\":3,\"User\":{}}}',NULL,NULL,'2018-03-24 14:34:29'),(1521902110680,88888,0,2,'功能符(数组关键词): ①查询User数组,最多5个','JSON','/get','{\"[]\":{\"count\":5,\"User\":{}}}',NULL,NULL,'2018-03-24 14:35:10'),(1521903761689,88888,0,2,'功能符(逻辑运算): ③ ! 非运算','JSON','/head','{\"User\":{\"id!{}\":[82001,38710]}}',NULL,NULL,'2018-03-24 15:02:41'),(1521903828410,88888,0,2,'功能符(逻辑运算): ② | 或运算','JSON','/head','{\"User\":{\"id|{}\":\">90000,<=80000\"}}',NULL,NULL,'2018-03-24 15:03:48'),(1521903882830,88888,0,2,'功能符(逻辑运算): ① & 与运算','JSON','/head','{\"User\":{\"id&{}\":\">80000,<=90000\"}}',NULL,NULL,'2018-03-24 15:04:42'),(1521904098111,88888,0,2,'功能符: 减少 或 去除','JSON','/put/balance','{\n \n \"Privacy\": {\n \"id\": 82001,\n \"balance+\": -100,\n \"_payPassword\": \"123456\"\n },\"tag\": \"Privacy\"\n}',NULL,NULL,'2018-03-24 15:08:18'),(1521904162066,88888,0,2,'功能符: 增加 或 扩展','JSON','/put','{\n \"Moment\": {\n \"id\": 15,\n \"praiseUserIdList+\": [\n 82001\n ]\n },\n \"tag\": \"Moment\"\n}',NULL,NULL,'2018-03-24 15:09:22'),(1521904337054,88888,0,2,'功能符: 新建别名','JSON','/get','{\"Comment\":{\"@column\":\"id,toId:parentId\",\"id\":51}}',NULL,NULL,'2018-03-24 15:12:17'),(1521904394042,88888,0,2,'功能符: 正则匹配','JSON','/get','{\"User[]\":{\"count\":3,\"User\":{\"name~\":\"^[0-9]+$\"}}}',NULL,NULL,'2018-03-24 15:13:14'),(1521904437584,88888,0,2,'功能符: 模糊搜索','JSON','/get','{\"User[]\":{\"count\":3,\"User\":{\"name$\":\"%m%\"}}}',NULL,NULL,'2018-03-24 15:13:57'),(1521904547992,88888,0,2,'功能符: 引用赋值','JSON','/get','{\"Moment\":{\n \"userId\":38710\n},\n\"User\":{\n \"id@\":\"/Moment/userId\"\n}}',NULL,NULL,'2018-03-24 15:15:47'),(1521904617127,88888,0,2,'功能符: 远程调用函数','JSON','/get','{ \"Moment\": { \"id\": 301, \"@column\": \"userId,praiseUserIdList\", \"isPraised()\": \"isContain(praiseUserIdList,userId)\" } }',NULL,NULL,'2018-03-24 15:16:57'),(1521904653622,88888,0,2,'功能符: 包含选项范围','JSON','/get','{\"User[]\":{\"count\":3,\"User\":{\"contactIdList<>\":38710}}}',NULL,NULL,'2018-03-24 15:17:33'),(1521904698935,88888,0,2,'功能符: 匹配条件范围','JSON','/get','{\"User[]\":{\"count\":3,\"User\":{\"id{}\":\"<=80000,>90000\"}}}',NULL,NULL,'2018-03-24 15:18:18'),(1521904756674,88888,0,2,'功能符: 查询数组','JSON','/get','{\"User[]\":{\"count\":3,\"User\":{}}}',NULL,NULL,'2018-03-24 15:19:16'),(1521905263828,88888,82001,2,'操作方法(DELETE): 删除数据','JSON','/delete','{\n \"Moment\":{\n \"id\":120\n },\n \"tag\":\"Moment\"\n}',NULL,NULL,'2018-03-24 15:27:43'),(1521905599150,88888,82001,2,'操作方法(PUT): 修改数据,只修改所传的字段','JSON','/put','{\n \"Moment\":{\n \"id\":235,\n \"content\":\"APIJSON,let interfaces and documents go to hell !\"\n },\n \"tag\":\"Moment\"\n}',NULL,NULL,'2018-03-24 15:33:19'),(1521905680680,88888,82001,2,'操作方法(POST): 新增数据','JSON','/post','{ \"Moment\": { \"content\": \"APIJSON,let interfaces and documents go to hell !\" }, \"tag\": \"Moment\" }',NULL,NULL,'2018-03-24 15:34:40'),(1521905787850,88888,82001,2,'操作方法(HEADS): 安全/私密获取数量,用于获取银行卡数量等 对安全性要求高的数据总数','JSON','/heads','{\n \"Login\": {\n \"userId\": 38710,\"type\":1\n },\n \"tag\": \"Login\"\n}',NULL,NULL,'2018-03-24 15:36:27'),(1521905868719,88888,82001,2,'操作方法(GETS): 安全/私密获取数据,用于获取钱包等 对安全性要求高的数据','JSON','/gets','{\n \"Privacy\": {\n \"id\": 82001\n },\n \"tag\": \"Privacy\"\n}',NULL,NULL,'2018-03-24 15:37:48'),(1521905895591,88888,82001,2,'操作方法(HEAD): 普通获取数量,可用浏览器调试','JSON','/head','{\n \"Moment\":{\n \"userId\":38710\n }\n}',NULL,NULL,'2018-03-24 15:38:15'),(1521905913188,88888,82001,2,'操作方法(GET): 普通获取数据,可用浏览器调试','JSON','/get','{\n \"Moment\":{\n \"id\":235\n }\n}',NULL,NULL,'2018-03-24 15:38:33'),(1521906240332,88888,0,2,'User发布的Moment列表,每个Moment包括 1.发布者User 2.前3条Comment: ③不查已获取的User','JSON','/get','{\n \"[]\":{\n \"page\":0,\n \"count\":3, \n \"Moment\":{\n \"userId\":38710\n },\n \"Comment[]\":{\n \"count\":3,\n \"Comment\":{\n \"momentId@\":\"[]/Moment/id\"\n }\n }\n }\n}',NULL,NULL,'2018-03-24 15:44:00'),(1521906265960,88888,0,2,'User发布的Moment列表,每个Moment包括 1.发布者User 2.前3条Comment: ②省去重复的User','JSON','/get','{\n \"User\":{\n \"id\":38710\n },\n \"[]\":{\n \"page\":0,\n \"count\":3, \n \"Moment\":{\n \"userId\":38710\n }, \n \"Comment[]\":{\n \"count\":3,\n \"Comment\":{\n \"momentId@\":\"[]/Moment/id\"\n }\n }\n }\n}',NULL,NULL,'2018-03-24 15:44:25'),(1521906517001,88888,0,2,'User发布的Moment列表,每个Moment包括 1.发布者User 2.前3条Comment: ①指定id','JSON','/get','{\n \"[]\": {\n \"page\": 0,\n \"count\": 3,\n \"Moment\":{\"userId\":38710}, \"User\":{\"id\":38710} ,\n \"Comment[]\": {\n \"count\": 3,\n \"Comment\": {\n \"momentId@\": \"[]/Moment/id\"\n }\n }\n }\n}',NULL,NULL,'2018-03-24 15:48:37'),(1521907009308,88888,0,2,'Moment列表,每个Moment包括 1.发布者User 2.前3条Comment','JSON','/get','{\n \"[]\":{\n \"page\":0, \n \"count\":3, \n \"Moment\":{}, \n \"User\":{\n \"id@\":\"/Moment/userId\"\n },\n \"Comment[]\":{\n \"count\":3,\n \"Comment\":{\n \"momentId@\":\"[]/Moment/id\"\n }\n }\n }\n}',NULL,NULL,'2018-03-24 15:56:49'),(1521907303540,88888,0,2,'User列表','JSON','/get','{\n \"User[]\":{\n \"page\":0,\n \"count\":3, \n \"User\":{\n \"sex\":0\n }\n }\n}',NULL,NULL,'2018-03-24 16:01:43'),(1521907317871,88888,0,2,'Moment和对应的User','JSON','/get','{\n \"Moment\":{\n \"userId\":38710\n }, \n \"User\":{\n \"id\":38710\n }\n}',NULL,NULL,'2018-03-24 16:01:57'),(1521907333041,88888,0,2,'User','JSON','/get','{\n \"User\":{\n \"id\":38710\n }\n}',NULL,NULL,'2018-03-24 16:02:13'),(1521907333043,88888,82002,3,'微信个人资料-用户信息+最近3个有照片的动态的第0张照片','JSON','/get','{\n \"User\": {\n \"id\": 82002\n },\n \"Moment-firstPicture[]\": {\n \"count\": 3,\n \"Moment\": {\n \"userId@\": \"User/id\",\n \"@column\": \"pictureList\",\n \"@having\": \"json_length(pictureList)>0\",\n \"firstPicture()\": \"getFromArray(pictureList,0)\"\n }\n }\n}',NULL,NULL,'2018-03-24 16:03:13'),(1521907333044,82001,82002,3,'微信个人资料-用户信息+最近3个有照片的动态的第0张照片','JSON','/get','{\r \"User\": {\r \"id\": 82002\r },\r \"Moment-firstPicture[]\": {\r \"count\": 3,\r \"Moment\": {\r \"userId@\": \"User/id\",\r \"@column\": \"userId,pictureList\",\r \"@having\": \"json_length(pictureList)>0\",\r \"firstPicture()\": \"getFromArray(pictureList,0)\"\r }\r }\r }',NULL,NULL,'2018-03-24 16:03:13'),(1521907333046,88888,0,2,'获取粉丝的动态列表','JSON','/get','{ \"Moment[]\": { \"join\": \"&/User/id@\", \"Moment\": {}, \"User\": { \"id@\": \"/Moment/userId\", \"contactIdList<>\": 82001, \"@column\": \"id\" } } }',NULL,NULL,'2018-03-24 16:03:13'),(1521907546129,88888,0,2,'获取类似微信朋友圈的动态列表','JSON','/get','{\n \"[]\": {\n \"page\": 0,\n \"count\": 2,\n \"Moment\": {\n \"content$\": \"%a%\"\n },\n \"User\": {\n \"id@\": \"/Moment/userId\",\n \"@column\": \"id,name,head\"\n },\n \"Comment[]\": {\n \"count\": 2,\n \"Comment\": {\n \"momentId@\": \"[]/Moment/id\"\n }\n }\n }\n}',NULL,NULL,'2018-03-24 16:05:46'),(1521907570452,88888,0,2,'获取动态及发布者用户','JSON','/get','{\n \"Moment\": {},\n \"User\": {\n \"id@\": \"Moment/userId\"\n }\n}',NULL,NULL,'2018-03-24 16:06:10'),(1521907587430,88888,0,2,'获取用户列表','JSON','/get','{\n \"[]\": {\n \"count\": 3,\n \"User\": {\n \"@column\": \"id,name\"\n }\n }\n}',NULL,NULL,'2018-03-24 16:06:27'),(1521907601299,88888,0,2,'获取用户','JSON','/get','{\n \"User\":{\n }\n}',NULL,NULL,'2018-03-24 16:06:41'),(1522905263828,82001,0,2,'操作方法(DELETE): 删除数据','JSON','/delete','{\n \"Moment\":{\n \"id\":120\n },\n \"tag\":\"Moment\"\n}',NULL,NULL,'2018-03-24 13:27:43'),(1522905599150,82001,0,2,'操作方法(PUT): 修改数据,只修改所传的字段','JSON','/put','{\n \"Moment\":{\n \"id\":235,\n \"content\":\"APIJSON,let interfaces and documents go to hell !\"\n },\n \"tag\":\"Moment\"\n}',NULL,NULL,'2018-03-24 13:33:19'),(1522905680680,82001,0,2,'操作方法(POST): 新增数据','JSON','/post','{ \"Moment\": { \"content\": \"APIJSON,let interfaces and documents go to hell !\" }, \"tag\": \"Moment\" }',NULL,NULL,'2018-03-24 13:34:40'),(1522905787850,82001,0,2,'操作方法(HEADS): 安全/私密获取数量,用于获取银行卡数量等 对安全性要求高的数据总数','JSON','/heads','{\n \"Login\": {\n \"userId\": 38710,\"type\":1\n },\n \"tag\": \"Login\"\n}',NULL,NULL,'2018-03-24 13:36:27'),(1522905868719,82001,0,2,'操作方法(GETS): 安全/私密获取数据,用于获取钱包等 对安全性要求高的数据','JSON','/gets','{\n \"Privacy\": {\n \"id\": 82001\n },\n \"tag\": \"Privacy\"\n}',NULL,NULL,'2018-03-24 13:37:48'),(1522905895591,82001,0,2,'操作方法(HEAD): 普通获取数量,可用浏览器调试','JSON','/head','{\n \"Moment\":{\n \"userId\":38710\n }\n}',NULL,NULL,'2018-03-24 13:38:15'),(1522905913188,82001,0,2,'操作方法(GET): 普通获取数据,可用浏览器调试','JSON','/get','{\n \"Moment\":{\n \"id\":235\n }\n}',NULL,NULL,'2018-03-24 13:38:33'),(1544881887527,88888,0,3,'Moment INNER JOIN User LEFT JOIN Comment','JSON','/get','{\n \"[]\": {\n \"count\": 10,\n \"page\": 0,\n \"join\": \"&/User/id@,User each with condition','JSON','/get','{\n \"[]\": {\n \"join\": \">/User/id@\",\n \"Moment\": {\n \"content~\": \"a\",\n \"@column\": \"id,userId,content\"\n },\n \"User\": {\n \"sex\": 1,\n \"@column\": \"id,name\",\n \"id@\": \"/Moment/userId\"\n }\n }\n}',NULL,NULL,'2018-12-15 14:14:10'),(1544883278939,88888,0,3,'Moment@User each with condition','JSON','/get','{\n \"[]\": {\n \"join\": \"@/User/id@\",\n \"Moment\": {\n \"content~\": \"a\",\n \"@column\": \"id,userId,content\"\n },\n \"User\": {\n \"sex\": 1,\n \"@column\": \"id,name\",\n \"id@\": \"/Moment/userId\"\n }\n }\n}',NULL,NULL,'2018-12-15 14:14:38'),(1544883352884,88888,0,3,'Moment90000,<=80000\"}}',NULL,NULL,'2018-03-24 15:03:48'),(1546903882830,82001,0,2,'功能符(逻辑运算): ① & 与运算','JSON','/head','{\"User\":{\"id&{}\":\">80000,<=90000\"}}',NULL,NULL,'2018-03-24 15:04:42'),(1546904098111,82001,82001,2,'功能符: 减少 或 去除','JSON','/put/balance','{\n \n \"Privacy\": {\n \"id\": 82001,\n \"balance+\": -100,\n \"_payPassword\": \"123456\"\n },\"tag\": \"Privacy\"\n}',NULL,NULL,'2018-03-24 15:08:18'),(1546904162066,82001,82001,2,'功能符: 增加 或 扩展','JSON','/put','{\n \"Moment\": {\n \"id\": 15,\n \"praiseUserIdList+\": [\n 82001\n ]\n },\n \"tag\": \"Moment\"\n}',NULL,NULL,'2018-03-24 15:09:22'),(1546904337054,82001,0,2,'功能符: 新建别名','JSON','/get','{\"Comment\":{\"@column\":\"id,toId:parentId\",\"id\":51}}',NULL,NULL,'2018-03-24 15:12:17'),(1546904394042,82001,0,2,'功能符: 正则匹配','JSON','/get','{\"User[]\":{\"count\":3,\"User\":{\"name~\":\"^[0-9]+$\"}}}',NULL,NULL,'2018-03-24 15:13:14'),(1546904437584,82001,0,2,'功能符: 模糊搜索','JSON','/get','{\"User[]\":{\"count\":3,\"User\":{\"name$\":\"%m%\"}}}',NULL,NULL,'2018-03-24 15:13:57'),(1546904547992,82001,0,2,'功能符: 引用赋值','JSON','/get','{\"Moment\":{\n \"userId\":38710\n},\n\"User\":{\n \"id@\":\"/Moment/userId\"\n}}',NULL,NULL,'2018-03-24 15:15:47'),(1546904617127,82001,0,2,'功能符: 远程调用函数','JSON','/get','{ \"Moment\": { \"id\": 301, \"@column\": \"userId,praiseUserIdList\", \"isPraised()\": \"isContain(praiseUserIdList,userId)\" } }',NULL,NULL,'2018-03-24 15:16:57'),(1546904653622,82001,0,2,'功能符: 包含选项范围','JSON','/get','{\"User[]\":{\"count\":3,\"User\":{\"contactIdList<>\":38710}}}',NULL,NULL,'2018-03-24 15:17:33'),(1546904698935,82001,0,2,'功能符: 匹配条件范围','JSON','/get','{\"User[]\":{\"count\":3,\"User\":{\"id{}\":\"<=80000,>90000\"}}}',NULL,NULL,'2018-03-24 15:18:18'),(1546904756674,82001,0,2,'功能符: 查询数组','JSON','/get','{\"User[]\":{\"count\":3,\"User\":{}}}',NULL,NULL,'2018-03-24 15:19:16'),(1546907333046,82001,0,1,'获取粉丝的动态列表','JSON','/get','{ \"Moment[]\": { \"join\": \"&/User/id@\", \"Moment\": {}, \"User\": { \"id@\": \"/Moment/userId\", \"contactIdList<>\": 82001, \"@column\": \"id\" } } }',NULL,NULL,'2018-03-24 16:03:13'),(1547401498195,88888,0,1,'子查询FROM和IN','JSON','/get','{\r \"sql@\": {\r \"from\": \"Comment\",\r \"Comment\": {\r \"momentId\": 12,\r \"@column\": \"userId\",\r \"@group\": \"userId\"\r }\r },\r \"Comment-userId[]\": {\r \"Comment\": {\r \"@from@\": \"sql\"\r }\r },\r \"[]\": {\r \"User\": {\r \"id{}@\": \"sql\",\r \"sex\": 1,\r \"@column\": \"id,sex,name\"\r }\r }\r }',NULL,NULL,'2019-01-13 17:44:58'),(1548728831507,82001,82001,3,'get test','JSON','/get','{\n \"User\": {\n \"id\": 82001\n },\n \"[]\": {\n \"Comment\": {\n \"userId@\": \"User/id\"\n }\n }\n}',NULL,NULL,'2019-01-29 02:27:11'),(1556385621907,82001,0,1,'子查询 WHERE id IN(SELECT userId FROM Comment WHERE momentId=15)','JSON','/get','{\n \"subquery@\": {\n \"from\": \"Comment\",\n \"Comment\": {\n \"momentId\": 15,\n \"@column\": \"userId\"\n }\n },\n \"[]\": {\n \"User\": {\n \"id{}@\": \"subquery\",\n \"@column\": \"id,sex,name\"\n }\n }\n}',NULL,NULL,'2018-02-24 14:28:18'),(1556385621908,88888,0,1,'子查询 WHERE id IN(SELECT userId FROM Comment WHERE momentId=15)','JSON','/get','{\n \"subquery@\": {\n \"from\": \"Comment\",\n \"Comment\": {\n \"momentId\": 15,\n \"@column\": \"userId\"\n }\n },\n \"[]\": {\n \"User\": {\n \"id{}@\": \"subquery\",\n \"@column\": \"id,sex,name\"\n }\n }\n}',NULL,NULL,'2018-02-24 14:28:18'),(1556385677607,82001,0,1,'子查询 WHERE EXISTS(SELECT userId FROM Comment WHERE momentId=15)','JSON','/get','{\n \"subquery@\": {\n \"from\": \"Comment\",\n \"Comment\": {\n \"momentId\": 15,\n \"@column\": \"userId\"\n }\n },\n \"[]\": {\n \"User\": {\n \"id}{@\": \"subquery\",\n \"@column\": \"id,sex,name\"\n }\n }\n}',NULL,NULL,'2018-02-24 14:28:18'),(1556385677608,88888,0,1,'子查询 WHERE EXISTS(SELECT userId FROM Comment WHERE momentId=15)','JSON','/get','{\n \"subquery@\": {\n \"from\": \"Comment\",\n \"Comment\": {\n \"momentId\": 15,\n \"@column\": \"userId\"\n }\n },\n \"[]\": {\n \"User\": {\n \"id}{@\": \"subquery\",\n \"@column\": \"id,sex,name\"\n }\n }\n}',NULL,NULL,'2018-02-24 14:28:18'),(1558944411696,82001,82001,3,'关联查询 Comment.userId = User.id','JSON','/get','{\n \"User\": {\n \"id\": 82001\n },\n \"[]\": {\n \"Comment\": {\n \"userId@\": \"User/id\"\n }\n }\n}',NULL,NULL,'2019-05-27 08:06:51'),(1559995734352,82001,0,3,'get 自定义关键词和远程函数的应用','JSON','/get','{\n \"User\": {\n \"id\": 82001,\n \"@column\": \"contactIdList\",\n \"@value\": 82006,\n \"isContect()\": \"isContain(contactIdList,@value)\"\n }\n}\n/*\n1、获取User表中的id==82001的数据块;\n2、获取contactIdList列中的数据;\n3、设定自定义关键词和值\"@value\": 82006;\n4、调用远程函数isContain判断 contactIdList 中是否存在值为82006的id;\n5、判断结果看 isContect的值。\n*/',NULL,NULL,'2019-06-08 12:08:54'),(1560075285563,82001,0,3,'Comment JOIN User','JSON','/get','{\n \"[]\": {\n \"join\": \"0\",...',NULL,NULL,'2019-07-29 08:43:18'),(1564483634864,1564369325432,0,2,'操作方法(DELETE): 删除数据','JSON','/delete','{\r \"Moment\":{\r \"id\":120\r },\r \"tag\":\"Moment\"\r }',NULL,NULL,'2019-07-29 08:43:18'),(1564483634865,1564369325432,0,2,'操作方法(PUT): 修改数据,只修改所传的字段','JSON','/put','{\r \"Moment\":{\r \"id\":235,\r \"content\":\"APIJSON,let interfaces and documents go to hell !\"\r },\r \"tag\":\"Moment\"\r }',NULL,NULL,'2019-07-29 08:43:18'),(1564483634866,1564369325432,0,2,'操作方法(POST): 新增数据','JSON','/post','{ \"Moment\": { \"content\": \"APIJSON,let interfaces and documents go to hell !\" }, \"tag\": \"Moment\" }',NULL,NULL,'2019-07-29 08:43:18'),(1564483634867,1564369325432,0,2,'操作方法(HEADS): 安全/私密获取数量,用于获取银行卡数量等 对安全性要求高的数据总数','JSON','/heads','{\r \"Login\": {\r \"userId\": 38710,\"type\":1\r },\r \"tag\": \"Login\"\r }',NULL,NULL,'2019-07-29 08:43:18'),(1564483634868,1564369325432,0,2,'操作方法(GETS): 安全/私密获取数据,用于获取钱包等 对安全性要求高的数据','JSON','/gets','{\r \"Privacy\": {\r \"id\": 82001\r },\r \"tag\": \"Privacy\"\r }',NULL,NULL,'2019-07-29 08:43:18'),(1564483634869,1564369325432,0,2,'操作方法(HEAD): 普通获取数量,可用浏览器调试','JSON','/head','{\r \"Moment\":{\r \"userId\":38710\r }\r }',NULL,NULL,'2019-07-29 08:43:18'),(1564483634870,1564369325432,0,2,'操作方法(GET): 普通获取数据,可用浏览器调试','JSON','/get','{\r \"Moment\":{\r \"id\":235\r }\r }',NULL,NULL,'2019-07-29 08:43:18'),(1564483634871,1564369325432,82001,3,'获取类似微信朋友圈的动态列表','JSON','/get','{\r \"[]\": {\r \"page\": 0,\r \"count\": 2,\r \"Moment\": {\r \"content$\": \"%a%\"\r },\r \"User\": {\r \"id@\": \"/Moment/userId\",\r \"@column\": \"id,name,head\"\r },\r \"Comment[]\": {\r \"...',NULL,NULL,'2019-07-29 08:43:18'),(1564483634872,1564369325432,82001,3,'获取动态及发布者用户','JSON','/get','{\r \"Moment\": {},\r \"User\": {\r \"id@\": \"Moment/userId\"\r }\r }',NULL,NULL,'2019-07-29 08:43:18'),(1564483634873,1564369325432,82001,3,'获取用户列表','JSON','/get','{\r \"[]\": {\r \"count\": 3,\r \"User\": {\r \"@column\": \"id,name\"\r }\r }\r }',NULL,NULL,'2019-07-29 08:43:18'),(1564483634874,1564369325432,82001,3,'获取用户','JSON','/get','{\r \"User\":{\r }\r }',NULL,NULL,'2019-07-29 08:43:18'),(1564483634875,1564369325432,82001,1,'子查询 WHERE id IN(SELECT userId FROM Comment WHERE momentId=15)','JSON','/get','{\r \"[]\": {\r \"User\": {\r \"id{}@\": {\r \"from\": \"Comment\",\r \"Comment\": {\r \"momentId\": 15,\r \"@column\": \"userId\"\r }\r },\r \"@column\": \"id...',NULL,NULL,'2019-07-29 08:43:18'),(1564483634876,1564369325432,82001,1,'子查询 WHERE EXISTS(SELECT userId FROM Comment WHERE momentId=15)','JSON','/get','{\r \"[]\": {\r \"User\": {\r \"id}{@\": {\r \"from\": \"Comment\",\r \"Comment\": {\r \"momentId\": 15,\r \"@column\": \"userId\"\r }\r },\r \"@column\": \"id...',NULL,NULL,'2019-07-29 08:43:18'),(1564483634877,1564369325432,82001,1,'子查询 WHERE id=(SELECT min(userId) FROM Comment)','JSON','/get','{\r \"User\": {\r \"id@\": {\r \"from\": \"Comment\",\r \"Comment\": {\r \"@column\": \"min(userId)\"\r }\r }\r }\r }',NULL,NULL,'2019-07-29 08:43:18'),(1564483634878,1564369325432,82001,1,'存储过程','JSON','/get','{\r \"User\": {\r \"@limit\": 10,\r \"@offset\": 0,\r \"@procedure()\": \"getCommentByUserId(id,@limit,@offset)\"\r }\r }',NULL,NULL,'2019-07-29 08:43:18'),(1564483634879,1564369325432,0,1,'Moment INNER JOIN User LEFT JOIN Comment','JSON','/get','{\r \"[]\": {\r \"count\": 10,\r \"page\": 0,\r \"join\": \"&/User/id@,90000,<=80000\"}}',NULL,NULL,'2019-07-29 08:43:18'),(1564483634893,1564369325432,0,2,'功能符(逻辑运算): ① & 与运算','JSON','/head','{\"User\":{\"id&{}\":\">80000,<=90000\"}}',NULL,NULL,'2019-07-29 08:43:18'),(1564483634894,1564369325432,82001,2,'功能符: 减少 或 去除','JSON','/put/balance','{\r \r \"Privacy\": {\r \"id\": 82001,\r \"balance+\": -100,\r \"_payPassword\": \"123456\"\r },\"tag\": \"Privacy\"\r }',NULL,NULL,'2019-07-29 08:43:18'),(1564483634895,1564369325432,82001,2,'功能符: 增加 或 扩展','JSON','/put','{\r \"Moment\": {\r \"id\": 15,\r \"praiseUserIdList+\": [\r 82001\r ]\r },\r \"tag\": \"Moment\"\r }',NULL,NULL,'2019-07-29 08:43:18'),(1564483634896,1564369325432,0,2,'功能符: 新建别名','JSON','/get','{\"Comment\":{\"@column\":\"id,toId:parentId\",\"id\":51}}',NULL,NULL,'2019-07-29 08:43:18'),(1564483634897,1564369325432,0,2,'功能符: 正则匹配','JSON','/get','{\"User[]\":{\"count\":3,\"User\":{\"name~\":\"^[0-9]+$\"}}}',NULL,NULL,'2019-07-29 08:43:18'),(1564483634898,1564369325432,0,2,'功能符: 模糊搜索','JSON','/get','{\"User[]\":{\"count\":3,\"User\":{\"name$\":\"%m%\"}}}',NULL,NULL,'2019-07-29 08:43:18'),(1564483634899,1564369325432,0,2,'功能符: 引用赋值','JSON','/get','{\"Moment\":{\r \"userId\":38710\r },\r \"User\":{\r \"id@\":\"/Moment/userId\"\r }}',NULL,NULL,'2019-07-29 08:43:18'),(1564483634900,1564369325432,0,2,'功能符: 远程调用函数','JSON','/get','{ \"Moment\": { \"id\": 301, \"@column\": \"userId,praiseUserIdList\", \"isPraised()\": \"isContain(praiseUserIdList,userId)\" } }',NULL,NULL,'2019-07-29 08:43:18'),(1564483634901,1564369325432,0,2,'功能符: 包含选项范围','JSON','/get','{\"User[]\":{\"count\":3,\"User\":{\"contactIdList<>\":38710}}}',NULL,NULL,'2019-07-29 08:43:18'),(1564483634902,1564369325432,0,2,'功能符: 匹配条件范围','JSON','/get','{\"User[]\":{\"count\":3,\"User\":{\"id{}\":\"<=80000,>90000\"}}}',NULL,NULL,'2019-07-29 08:43:18'),(1564483634903,1564369325432,0,2,'功能符: 查询数组','JSON','/get','{\"User[]\":{\"count\":3,\"User\":{}}}',NULL,NULL,'2019-07-29 08:43:18'),(1564483634904,1564369325432,0,1,'获取粉丝的动态列表','JSON','/get','{ \"Moment[]\": { \"join\": \"&/User/id@\", \"Moment\": {}, \"User\": { \"id@\": \"/Moment/userId\", \"contactIdList<>\": 82001, \"@column\": \"id\" } } }',NULL,NULL,'2019-07-29 08:43:18'),(1564483634905,1564369325432,82001,3,'get test','JSON','/get','{\r \"User\": {\r \"id\": 82001\r },\r \"[]\": {\r \"Comment\": {\r \"userId@\": \"User/id\"\r }\r }\r }',NULL,NULL,'2019-07-29 08:43:18'),(1564483634906,1564369325432,0,1,'子查询 WHERE id IN(SELECT userId FROM Comment WHERE momentId=15)','JSON','/get','{\r \"subquery@\": {\r \"from\": \"Comment\",\r \"Comment\": {\r \"momentId\": 15,\r \"@column\": \"userId\"\r }\r },\r \"[]\": {\r \"User\": {\r \"id{}@\": \"subquery\",\r \"@column\": \"id,sex,name\"\r ...',NULL,NULL,'2019-07-29 08:43:18'),(1564483634907,1564369325432,0,1,'子查询 WHERE EXISTS(SELECT userId FROM Comment WHERE momentId=15)','JSON','/get','{\r \"subquery@\": {\r \"from\": \"Comment\",\r \"Comment\": {\r \"momentId\": 15,\r \"@column\": \"userId\"\r }\r },\r \"[]\": {\r \"User\": {\r \"id}{@\": \"subquery\",\r \"@column\": \"id,sex,name\"\r ...',NULL,NULL,'2019-07-29 08:43:18'),(1564483634908,1564369325432,82001,3,'关联查询 Comment.userId = User.id','JSON','/get','{\r \"User\": {\r \"id\": 82001\r },\r \"[]\": {\r \"Comment\": {\r \"userId@\": \"User/id\"\r }\r }\r }',NULL,NULL,'2019-07-29 08:43:18'),(1564483634909,1564369325432,0,3,'get 自定义关键词和远程函数的应用','JSON','/get','{\r \"User\": {\r \"id\": 82001,\r \"@column\": \"contactIdList\",\r \"@value\": 82006,\r \"isContect()\": \"isContain(contactIdList,@value)\"\r }\r }\r /*\r 1、获取User表中的id==82001的数据块;\r 2、获取contactIdList列中的数据...',NULL,NULL,'2019-07-29 08:43:18'),(1564483634910,1564369325432,0,3,'Comment JOIN User','JSON','/get','{\r \"[]\": {\r \"join\": \"\": 0\n }\n },\n \"@explain\": true\n}\n/*\n 这是一个 3.3.0, 3.8.6-4.0.0 都发现存在的 bug,\n 事实上也是自从支持自连接(副表 Comment AS `to`)以来就存在。\n 原因是对副表生成的 SQL 里表名和主表表名一样,导致 \n AbstractSQLExecutor.onPutColumn 中 299 行\n item = onPutColumn(config, rs, rsmd, index, item, i, config.isExplain() == false && hasJoin && i >= viceColumnStart ? childMap : null);\n 488 行 if 走了第一个分支(应该走 else 来把副表的值存进 childMap)\n finalTable = table;\n 从而使 JOIN 查出来的主副表全部字段都在 521 行\n finalTable.put(lable, getValue(config, rs, rsmd, tablePosition, table, columnIndex, lable, childMap));\n 由于主副表有相同字段,导致后面 put 的副表字段替代了前面 put 的主表同名字段。\n \n 除了以上折中方案,还可以判断 AS 的副表别名来做区分,put 进 childMap。\n*/',NULL,'','2020-03-13 15:37:03'),(1584117747580,2000,0,3,'全局默认字段失效','JSON','/login','{\n \"type\": 0,\n \"phone\": \"13000082001\",\n \"password\": \"123456\",\n \"version\": 1,\n \"remember\": false,\n \"format\": true, //失效\n \"defaults\": { //失效\n \"format\": true,\n \"@explain\": true,\n \"@database\": \"POSTGRESQL\",\n \"@schema\": \"sys\"\n }\n}',NULL,'','2020-03-13 16:42:27'),(1584118278602,2000,0,3,'SIDE JOIN 实现可能有误','JSON','/get','{\n \"[]\": {\n \"join\": \"^/User/id@\",\n \"Comment\": {\n \"momentId\": 12\n },\n \"User\": {\n \"id@\": \"/Comment/toId\",\n \"sex\": 0\n }\n },\n \"@explain\": true\n}\n/*\n SIDE JOIN 实现可能有误,并且性能不大好。\n Comment 的条件 A: momentId=12\n User 的条件 B: sex=0\n 理论上 NOT(A AND B) 等价于(A AND NOT B) OR (B AND NOT A) \n 目前使用的是后者,当我想要改成前者,分别用对应的 SQL 放数据库执行,\n 发现结果集不一样!\n SELECT `Comment`.*, `User`.* FROM `sys`.`Comment` AS `Comment` INNER JOIN `sys`.`apijson_user` AS `User` ON `User`.`id` = `Comment`.`toId` WHERE ( NOT ( `Comment`.`momentId` = 12 AND `User`.`sex` = 0 ) ) LIMIT 10 OFFSET 0\n SELECT `Comment`.*, `User`.* FROM `sys`.`Comment` AS `Comment` INNER JOIN `sys`.`apijson_user` AS `User` ON `User`.`id` = `Comment`.`toId` WHERE ( ( ( (`Comment`.`momentId` = 12) ) AND NOT ( ( (`User`.`sex` = 0) ) ) ) OR ( ( (`User`.`sex` = 0) ) AND NOT ( ( (`Comment`.`momentId` = 12) ) ) ) ) LIMIT 10 OFFSET 0\n*/',NULL,'','2020-03-13 16:51:18'),(1584120971519,2020,0,3,'新增 WITH AS','JSON','/get','{ //看看关注的人最近有什么动态(分享、评论)\n \"sql@\": {\n \"with\": true, //生成 WITH(SELECT id ...) AS `sql`\n \"from\": \"User\",\n \"User\": {\n \"@column\": \"id\",\n \"@role\": \"CONTACT\"\n }\n },\n \"Moment[]\": {\n \"Moment\": {\n \"userId{}@\": \"sql\",\n \"@order\": \"date-\"\n }\n },\n \"Comment[]\": {\n \"Comment\": {\n \"userId{}@\": \"sql\",\n \"@order\": \"date-\"\n }\n },\n \"@explain\": true\n}',NULL,'','2020-03-13 17:36:11'),(1584120990337,2020,0,3,'新增 UNION','JSON','/get','{\n \"[]\": {\n \"User\": {\n \"name~\": \"a\",\n \"tag~\": \"a\",\n \"@combine\": \"name~,tag~\", \n \"@union\": 1 //将 @combine 中的 N 个 OR 连接字段用 UNION 替换,原本一条 SQL 需要拆分成 N 条 SQL 来 UNION \n }\n },\n \"@explain\": true\n}',NULL,'','2020-03-13 17:36:30'),(1584121026469,2020,0,3,'新增分布式执行','JSON','/get','{\n \"User\": {\n \"@url\": \"http://apijson.cn:8080/get\" //转发给其它服务器执行\n },\n \"[]\": {\n \"Comment\": {\n \"userId@\": \"User/id\"\n }\n },\n \"@explain\": true\n}',NULL,'','2020-03-13 17:37:06'),(1589859330200,1589859275450,1589859275450,3,'login','JSON','/login','{\n \"type\": 0,\n \"phone\": \"13525569073\",\n \"password\": \"123456\",\n \"version\": 1,\n \"remember\": false,\n \"format\": false,\n \"defaults\": {\n \"@database\": \"MYSQL\",\n \"@schema\": \"sys\"\n }\n}',NULL,'','2020-05-19 03:35:30'),(1592545943722,1592544818327,1592544225995,3,'login','JSON','/login','{\n \"body\": {\n \"personName\": \"杨家湖超限班长\",\n \"Authenticated\": true,\n \"UserName\": \"yjhcxbz\",\n \"personMobile\": \"\",\n \"iconList\": [\n \"PTCL\"\n ],\n \"Token\": \"3dba223a3a9046f7abfffdddc9f93936\",\n \"userOrgName\": \"杨家湖收费站\",\n \"userId\": \"297edfab72c14e940172c1552d4b0002\",\n \"userOrgId\": \"009429986\"\n },\n \"head\": {\n \"clientId\": null,\n \"ret\": {\n \"retCode\": \"000000\",\n \"retMsg\": null\n },\n \"timestamp\": \"2020-06-19 11:46:52\"\n }\n}\n \n',NULL,'','2020-06-19 05:52:23'),(1592546007877,1592544818327,1592544225995,3,'login11','JSON','/login','{\n \"body\": {\n \"personName\": \"杨家湖超限班长\",\n \"Authenticated\": true,\n \"UserName\": \"yjhcxbz\",\n \"personMobile\": \"\",\n \"iconList\": [\n \"PTCL\"\n ],\n \"Token\": \"3dba223a3a9046f7abfffdddc9f93936\",\n \"userOrgName\": \"杨家湖收费站\",\n \"userId\": \"297edfab72c14e940172c1552d4b0002\",\n \"userOrgId\": \"009429986\"\n },\n \"head\": {\n \"clientId\": null,\n \"ret\": {\n \"retCode\": \"000000\",\n \"retMsg\": null\n },\n \"timestamp\": \"2020-06-19 11:46:52\"\n }\n}\n \n',NULL,'','2020-06-19 05:53:27'),(1593973492312,1593972128383,0,3,'login1','JSON','/login','{\n \"type\": 0,\n \"phone\": \"13000082002\",\n \"password\": \"123456\",\n \"version\": 1,\n \"remember\": false,\n \"format\": false,\n \"defaults\": {\n \"@database\": \"MYSQL\",\n \"@schema\": \"sys\"\n }\n}',NULL,'','2020-07-05 18:24:52'),(1593973606841,1593972128383,0,3,'get1','JSON','/get','{\n \"User\": {\n \"id\": 82001\n },\n \"[]\": {\n \"Comment\": {\n \"userId@\": \"User/id\"\n }\n }\n}\n \n',NULL,'','2020-07-05 18:26:46'),(1593973707836,1593972128383,0,3,'get1','JSON','/get','{\n \"User\": {\n \"id\": 82001\n },\n \"[]\": {//ooo\n \"Comment\": {\n \"userId@\": \"User/id\"\n }\n }\n}\n \n',NULL,'','2020-07-05 18:28:27'),(1596002514234,1596002416764,0,3,'get','JSON','/get','{\n \"type\": 0,\n \"phone\": \"13000082002\",\n \"password\": \"123456\",\n \"version\": 1,\n \"remember\": false,\n \"format\": false,\n \"defaults\": {\n \"@database\": \"MYSQL\",\n \"@schema\": \"sys\"\n }\n}\n \n',NULL,'','2020-07-29 06:01:54'),(1596439230051,1596439187212,0,3,'login','JSON','/login','{\n \"type\": 0,\n \"phone\": \"13000082002\",\n \"password\": \"123456\",\n \"version\": 1,\n \"remember\": false,\n \"format\": false,\n \"defaults\": {\n \"@database\": \"MYSQL\",\n \"@schema\": \"sys\"\n }\n}',NULL,'','2020-08-03 07:20:30'),(1602231365650,2020,0,3,'JOIN 对象支持包含多个 @ 引用赋值 的字段','JSON','/get','{ // 自动合并 ON Method.class = `Method:group`.class AND Method.package = `Method:group`.package\n \"Method[]\": {\n \"count\": 0,\n \"join\": \"@/Method/class@,@/Method/package@\",\n \"Method:group\": {\n \"@column\": \"DISTINCT class\",\n \"@order\": \"class+\",\n \"@having\": \"length(class)>0\",\n \"package*~\": null,\n \"class*~\": null,\n \"@combine\": null\n },\n \"Method\": {\n \"package@\": \"[]/Method/package\",\n \"class@\": \"/Method:group/class\",\n \"@column\": \"class,genericClassArgs\",\n \"@order\": \"class+\",\n \"arguments()\": \"getMethodArguments(genericClassArgs)\"\n }\n }\n}\n \n',NULL,'','2020-10-09 08:16:05'),(1607881786667,99999,0,3,'get','JSON','/get','{\n \"Comment[]\": {\n \"Comment\": {\n \"@column\": \"date,content;concat(id,^,<,>?|,toId,&,{},userId,LES+=)\",\n \"@having\": \"to_days(date)%7=0\"\n }\n },\n \"@explain\": true\n}\n \n',NULL,'','2020-12-13 17:49:46'),(1607881843319,99999,0,3,'复杂的 @having','JSON','/get','{\n \"Comment[]\": {\n \"Comment\": {\n \"@having\": \"concat(id,^,<,>?|,&,{},:[],DROP!)<=8^3*3.14-7/4+50\"\n }\n },\n \"@explain\": true\n}\n \n',NULL,'','2020-12-13 17:50:43'),(1607881872995,99999,0,3,'最近7天','JSON','/get','{\n \"Comment\": {\n \"@having\": \"to_days(now())-to_days(`date`)<=7\",\n \"@raw\": \"@having\"\n },\n \"@explain\": true\n}\n \n',NULL,'','2020-12-13 17:51:12'),(1607881932306,99999,0,3,'@raw 自定义 SQL 片段','JSON','/get','{ // 类似 12306 根据始发站和到达站来过滤火车班次,班次和线路多对一,线路和站点多对多\n \"sql@\": {\n \"from\": \"Comment\",\n \"join\": \"&/Comment:to/userId@\",\n \"Comment\": { // 假装是始发站\n \"@column\": \"userId\",\n \"content~\": \"a\", // 假装是站点名\n \"momentId>\": \"to.momentId\",\n \"@raw\": \"momentId>\"\n },\n \"Comment:to\": { // 假装是终点站\n \"userId@\": \"/Comment/userId\",\n \"@column\": \"\",\n \"content~\": \"j\" // 假装是站点名\n }\n },\n \"[]\": {\n \"Moment\": { // 假装是班次\n \"userId{}@\": {\n \"from\": \"User\",\n \"User\": { // 假装是线路\n \"id{}@\": \"sql\",\n \"@column\": \"id\"\n }\n }\n }\n },\n \"@explain\": true\n}\n \n',NULL,'','2020-12-13 17:52:12'),(1608087204039,82001,0,3,'get','JSON','/get','{\n \"Moment\": {\n \"id\": 12\n }\n}',NULL,'','2020-12-16 02:53:24'),(1608995763278,99999,0,3,'SQL 函数与表达式','JSON','/get','{\n \"Comment[]\": {\n \"Comment\": {\n \"@column\": \"userId;(toId)%3=0;group_concat(DISTINCT +,id)\",\n \"@having\": \"max(id)>100;userId%5>=1\",\n \"@group\": \"userId,toId\"\n }\n },\n \"@explain\": true\n}\n \n',NULL,'','2020-12-26 15:16:03'),(1612031683609,88888,0,2,'视图表 ViewTable 查单条记录 /get','JSON','/get','{\n \"ViewTable\": {\"id\": 82001}\n}\n \n',NULL,'','2019-07-29 08:43:18'),(1612031683610,88888,0,2,'视图表 ViewTable 查列表带条件','JSON','/get','{\n \"ViewTable[]\": {\n \"ViewTable\": {\n \"toId\": 0,\n \"content~\": \"a\"\n }\n }\n}\n \n',NULL,'','2019-07-29 08:43:18'),(1612031683611,88888,0,2,'视图表 ViewTable INNER JOIN Moment','JSON','/get','{\n \"[]\": {\n \"join\": \"&/Moment/id@\",\n \"ViewTable\": {\"toId\":0},\n \"Moment\": {\"content~\":\"a\",\n \"id@\": \"/ViewTable/momentId\"\n }\n }\n}\n \n',NULL,'','2019-07-29 08:43:18'),(1612031683612,88888,0,2,'视图表 ViewTable 子查询','JSON','/get','{\n \"ViewTable[]\": {\n \"ViewTable\": {\n \"momentId{}@\": {\n \"from\": \"Moment\",\n \"Moment\": {\n \"@column\": \"id\"\n }\n }\n }\n }\n}\n \n',NULL,'','2019-07-29 08:43:18'),(1612031683613,88888,0,2,'视图表 ViewTable LEFT JOIN Moment','JSON','/get','{\n \"[]\": {\n \"join\": \"