summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortanghao <[email protected]>2024-11-11 17:57:49 +0800
committertanghao <[email protected]>2024-11-11 17:57:49 +0800
commit86e79b656a183d8c8f795c0989837acd3da0e56d (patch)
tree78c52bf5c6611646fc0f4cb4844b3c8827c7565d
parent083efa13a2946a72dd0987f5aa2125e951f63148 (diff)
fix: 事件详情修改sqldev
-rw-r--r--cn-admin/src/main/resources/db/R__AZ_magic_api_file.sql5
1 files changed, 3 insertions, 2 deletions
diff --git a/cn-admin/src/main/resources/db/R__AZ_magic_api_file.sql b/cn-admin/src/main/resources/db/R__AZ_magic_api_file.sql
index f18dbf8..3ba435e 100644
--- a/cn-admin/src/main/resources/db/R__AZ_magic_api_file.sql
+++ b/cn-admin/src/main/resources/db/R__AZ_magic_api_file.sql
@@ -203,7 +203,7 @@ INSERT INTO `magic_api_file` VALUES ('/api/v1/detection/event/key统计.ms', '{\
INSERT INTO `magic_api_file` VALUES ('/api/v1/detection/event/事件列表.ms', '{\n \"properties\" : { },\n \"id\" : \"copy1723081726883d65154\",\n \"script\" : null,\n \"groupId\" : \"420b0a1c8135477db8d371a9bb30d2c9\",\n \"name\" : \"事件列表\",\n \"createTime\" : null,\n \"updateTime\" : 1724148273678,\n \"lock\" : null,\n \"createBy\" : null,\n \"updateBy\" : null,\n \"path\" : \"/list\",\n \"method\" : \"GET\",\n \"parameters\" : [ {\n \"name\" : \"startTime\",\n \"value\" : \"1\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"endTime\",\n \"value\" : \"9999999\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"resource\",\n \"value\" : \"status=0\",\n \"description\" : null,\n \"required\" : false,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"isGroup\",\n \"value\" : null,\n \"description\" : null,\n \"required\" : false,\n \"dataType\" : \"Integer\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"pageNo\",\n \"value\" : \"1\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"Integer\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"pageSize\",\n \"value\" : \"10\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"Integer\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n } ],\n \"options\" : [ ],\n \"requestBody\" : \"\",\n \"headers\" : [ {\n \"name\" : \"cn-Authorization\",\n \"value\" : \"a0e623d7-47f8-475b-a0a5-5d77f76601c1\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n } ],\n \"paths\" : [ ],\n \"responseBody\" : \"{\\n \\\"code\\\": 999,\\n \\\"time\\\": \\\"2024-08-08 02:33:26\\\",\\n \\\"message\\\": \\\"Expected a \':\' after a key at 43 [character 44 line 1]\\\"\\n}\",\n \"description\" : null,\n \"requestBodyDefinition\" : null,\n \"responseBodyDefinition\" : null\n}\r\n================================\r\nimport net.geedge.common.utils.ObjectUtils\r\nimport net.geedge.common.utils.FreeMarkerUtil as freeMarkerUtil;\r\nimport net.geedge.common.utils.JSONUtil as jsonUtil;\r\nimport net.geedge.modules.entity.service.EntityExplorerService as EntityExplorerService;\r\nimport \'@/pre/timeHandle\' as preHandle;\r\nimport \'@/post/table\' as postHandle;\r\nimport \'@/public/postGalaxyResult\' as postGalaxyResult;\r\nimport \'@/pre/pageFieldsHandle\' as pageFieldsHandle;\r\n\r\n/**\r\n * 入参整理 包括调用公共函数\r\n */\r\nvar parameter={\r\n \"startTime\":startTime,\r\n \"endTime\":endTime,\r\n \"resource\":resource,\r\n \"isGroup\":isGroup,\r\n \"pageNo\":pageNo,\r\n \"pageSize\":pageSize\r\n}\r\npageFieldsHandle(parameter);\r\npreHandle(parameter);\r\nparameter.resource = EntityExplorerService.parseExpression(parameter.resource,\"securityEventMetadata\");\r\n\r\nif (parameter.isGroup==\"\" || is_null(parameter.isGroup)){\r\n parameter.isGroup = 0;\r\n}\r\n/**\r\n * 接口sql相关内容整理 通过freemarker模板生成最后执行语句\r\n */\r\nvar q = \"{\\\"query\\\":\\\"SELECT <#if isGroup == 1>key_fields AS key_fields,key_values AS key_values,rule_id AS rule_id,rule_version AS rule_version,uniqExact(event_id) AS count,anyLast(event_id) AS eventId, <#else> anyLast(key_fields) AS keyFields,anyLast(key_values) AS keyValues,anyLast(rule_id) AS ruleId,anyLast(rule_version) AS ruleVersion,event_id AS event_id,</#if> anyLast(event_type) AS eventType,anyLast(event_name) AS eventName,anyLast(match_ids) AS matchIds,anyLast(rule_type) AS ruleType,anyLast(is_builtin) AS isBuiltin,min(start_time) AS startTime,max(end_time) AS stat_time,max(duration_s) AS durationS,max(status) AS state FROM cn_event WHERE end_time >= ${startTime} AND end_time < ${endTime} <#if resource?default(\'\')?trim? length gt 0> AND ${resource} </#if> GROUP BY <#if isGroup == 1> key_fields,key_values,rule_id,rule_version <#else> event_id </#if> ORDER BY stat_time DESC LIMIT ${pageNo},${pageSize}\\\",\\\"option\\\":\\\"real_time\\\",\\\"format\\\":\\\"json\\\"}\"\r\nvar result = freeMarkerUtil.processTemplateIntoString(\"eventList\",q,parameter);\r\nprintln(result)\r\n/**\r\n * 调用galaxy接口获取结果信息\r\n */\r\nvar res = jsonUtil.toBean(result,HashMap.class);\r\nvar galaxyRes = postGalaxyResult(res);\r\n\r\n/**\r\n * 处理galaxy返回的数据结果 将新结果返回前端界面\r\n */\r\nvar result = postHandle(galaxyRes);\r\nif(result.data.result.length > 0 ){\r\n for(i,j in result.data.result){\r\n var pojo = j;\r\n pojo.status = pojo.state;\r\n pojo.endTime = pojo.statTime;\r\n }\r\n}\r\nreturn result;');
INSERT INTO `magic_api_file` VALUES ('/api/v1/detection/event/事件总数.ms', '{\n \"properties\" : { },\n \"id\" : \"9dbc6d3b4e7d440ebe50c4ee50533f7c\",\n \"script\" : null,\n \"groupId\" : \"420b0a1c8135477db8d371a9bb30d2c9\",\n \"name\" : \"事件总数\",\n \"createTime\" : null,\n \"updateTime\" : 1724148130413,\n \"lock\" : null,\n \"createBy\" : null,\n \"updateBy\" : null,\n \"path\" : \"/count\",\n \"method\" : \"GET\",\n \"parameters\" : [ {\n \"name\" : \"startTime\",\n \"value\" : null,\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"endTime\",\n \"value\" : null,\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"resource\",\n \"value\" : null,\n \"description\" : null,\n \"required\" : false,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"isGroup\",\n \"value\" : null,\n \"description\" : null,\n \"required\" : false,\n \"dataType\" : \"Integer\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n } ],\n \"options\" : [ ],\n \"requestBody\" : \"\",\n \"headers\" : [ ],\n \"paths\" : [ ],\n \"responseBody\" : null,\n \"description\" : null,\n \"requestBodyDefinition\" : null,\n \"responseBodyDefinition\" : null\n}\r\n================================\r\nimport net.geedge.common.utils.FreeMarkerUtil as freeMarkerUtil;\r\nimport net.geedge.common.utils.JSONUtil as jsonUtil;\r\nimport net.geedge.modules.entity.service.EntityExplorerService as EntityExplorerService;\r\nimport \'@/pre/timeHandle\' as preHandle;\r\nimport \'@/post/single\' as postHandle;\r\nimport \'@/public/postGalaxyResult\' as postGalaxyResult;\r\n\r\n\r\n/**\r\n * 入参整理 包括调用公共函数\r\n */\r\nvar parameter={\r\n \"startTime\":startTime,\r\n \"endTime\":endTime,\r\n \"resource\":resource,\r\n \"isGroup\":isGroup\r\n}\r\n\r\nif (parameter.isGroup==\"\" || is_null(parameter.isGroup)){\r\n parameter.isGroup = 0;\r\n}\r\n\r\npreHandle(parameter);\r\nparameter.resource = EntityExplorerService.parseExpression(parameter.resource,\"securityEventMetadata\");\r\n/**\r\n * 接口sql相关内容整理 通过freemarker模板生成最后执行语句\r\n */\r\nvar q = \"{\\\"query\\\":\\\"SELECT uniqExact(<#if isGroup == 1> (key_fields,key_values,rule_id,rule_version) <#else> (event_id) </#if> ) AS count FROM cn_event WHERE end_time >= ${startTime} AND end_time < ${endTime} <#if resource?default(\'\')?trim? length gt 0> AND ${resource} </#if>\\\",\\\"option\\\":\\\"real_time\\\",\\\"format\\\":\\\"json\\\"}\"\r\nvar result = freeMarkerUtil.processTemplateIntoString(\"eventCount\",q,parameter);\r\n\r\n/**\r\n * 调用galaxy接口获取结果信息\r\n */\r\nvar res = jsonUtil.toBean(result,HashMap.class);\r\nvar galaxyRes = postGalaxyResult(res);\r\n\r\n/**\r\n * 处理galaxy返回的数据结果 将新结果返回前端界面\r\n */\r\nvar result = postHandle(galaxyRes);\r\n\r\nreturn result;');
INSERT INTO `magic_api_file` VALUES ('/api/v1/detection/event/事件统计分布.ms', '{\n \"properties\" : { },\n \"id\" : \"5da8ef4c503b41e6bbb7b17a56a3ad95\",\n \"script\" : null,\n \"groupId\" : \"420b0a1c8135477db8d371a9bb30d2c9\",\n \"name\" : \"事件统计分布\",\n \"createTime\" : null,\n \"updateTime\" : 1724396060964,\n \"lock\" : null,\n \"createBy\" : null,\n \"updateBy\" : null,\n \"path\" : \"/timedistribution\",\n \"method\" : \"GET\",\n \"parameters\" : [ {\n \"name\" : \"startTime\",\n \"value\" : \"1\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"endTime\",\n \"value\" : \"999999999999999\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"resource\",\n \"value\" : null,\n \"description\" : null,\n \"required\" : false,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n } ],\n \"options\" : [ ],\n \"requestBody\" : \"\",\n \"headers\" : [ {\n \"name\" : \"cn-Authorization\",\n \"value\" : \"a0e623d7-47f8-475b-a0a5-5d77f76601c1\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n } ],\n \"paths\" : [ ],\n \"responseBody\" : \"{\\n \\\"message\\\": \\\"Please log in to the system first\\\",\\n \\\"code\\\": 518008,\\n \\\"time\\\": 1723084913010\\n}\",\n \"description\" : null,\n \"requestBodyDefinition\" : null,\n \"responseBodyDefinition\" : null\n}\r\n================================\r\nimport net.geedge.common.utils.FreeMarkerUtil as freeMarkerUtil;\r\nimport net.geedge.common.utils.JSONUtil as jsonUtil;\r\nimport net.geedge.modules.entity.service.EntityExplorerService as EntityExplorerService;\r\nimport \'@/pre/timeHandle\' as preHandle;\r\nimport \'@/post/table\' as postHandle;\r\nimport \'@/public/postGalaxyResult\' as postGalaxyResult;\r\n\r\n\r\n/**\r\n * 入参整理 包括调用公共函数\r\n */\r\nvar parameter={\r\n \"startTime\":startTime,\r\n \"endTime\":endTime,\r\n \"resource\":resource\r\n}\r\npreHandle(parameter);\r\nparameter.resource = EntityExplorerService.parseExpression(parameter.resource,\"securityEventMetadata\");\r\n/**\r\n * 接口sql相关内容整理 通过freemarker模板生成最后执行语句\r\n */\r\nvar q = \"{\\\"query\\\":\\\"SELECT TIME_FLOOR_WITH_FILL(end_time,\'PT${step}S\',\'zero\') AS stat_time,uniqExact(event_id) AS count FROM cn_event WHERE end_time >= ${startTime} AND end_time < ${endTime} <#if resource?default(\'\')?trim? length gt 0> AND ${resource} </#if> GROUP BY stat_time ORDER BY stat_time DESC\\\",\\\"option\\\":\\\"real_time\\\",\\\"format\\\":\\\"json\\\"}\"\r\nvar result = freeMarkerUtil.processTemplateIntoString(\"eventTimedistribution\",q,parameter);\r\n\r\n/**\r\n * 调用galaxy接口获取结果信息\r\n */\r\nvar res = jsonUtil.toBean(result,HashMap.class);\r\nvar galaxyRes = postGalaxyResult(res);\r\n\r\n/**\r\n * 处理galaxy返回的数据结果 将新结果返回前端界面\r\n */\r\nvar result = postHandle(galaxyRes);\r\nprintln(jsonUtil.toJsonStr(galaxyRes));\r\n\r\nreturn result;');
-INSERT INTO `magic_api_file` VALUES ('/api/v1/detection/event/事件详情.ms', '{\n \"properties\" : { },\n \"id\" : \"copy1723086686424d87948\",\n \"script\" : null,\n \"groupId\" : \"420b0a1c8135477db8d371a9bb30d2c9\",\n \"name\" : \"事件详情\",\n \"createTime\" : null,\n \"updateTime\" : 1725587182382,\n \"lock\" : null,\n \"createBy\" : null,\n \"updateBy\" : null,\n \"path\" : \"/detail\",\n \"method\" : \"GET\",\n \"parameters\" : [ {\n \"name\" : \"startTime\",\n \"value\" : \"1722825798\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"endTime\",\n \"value\" : \"1723084999\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"resource\",\n \"value\" : \"status=0\",\n \"description\" : null,\n \"required\" : false,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"eventId\",\n \"value\" : \"510557841419929600\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"Long\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"ruleType\",\n \"value\" : \"2\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"Integer\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n } ],\n \"options\" : [ ],\n \"requestBody\" : \"\",\n \"headers\" : [ {\n \"name\" : \"cn-Authorization\",\n \"value\" : \"a0e623d7-47f8-475b-a0a5-5d77f76601c1\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n } ],\n \"paths\" : [ ],\n \"responseBody\" : \"{\\n \\\"code\\\": 999,\\n \\\"time\\\": \\\"2024-08-16 10:06:11\\\",\\n \\\"message\\\": \\\"404 null at Row:13~13,Col:32~37\\\\n\\\\nvar galaxyResult = httpRequest.post().getBody();\\\\r\\\\n ^^^^^^ \\\"\\n}\",\n \"description\" : null,\n \"requestBodyDefinition\" : null,\n \"responseBodyDefinition\" : null\n}\r\n================================\r\nimport net.geedge.common.utils.ObjectUtils\r\nimport net.geedge.common.utils.FreeMarkerUtil as freeMarkerUtil;\r\nimport net.geedge.common.utils.JSONUtil as jsonUtil;\r\nimport net.geedge.modules.entity.service.EntityExplorerService as EntityExplorerService;\r\nimport \'@/pre/timeHandle\' as preHandle;\r\nimport \'@/post/table\' as postHandle;\r\nimport \'@/public/postGalaxyResult\' as postGalaxyResult;\r\n\r\n\r\n/**\r\n * 入参整理 包括调用公共函数\r\n */\r\nvar parameter={\r\n \"startTime\":startTime,\r\n \"endTime\":endTime,\r\n \"resource\":resource,\r\n \"eventId\":eventId,\r\n \"ruleType\":ruleType\r\n}\r\npreHandle(parameter);\r\nparameter.resource = EntityExplorerService.parseExpression(parameter.resource,\"securityEventMetadata\");\r\n\r\nif (parameter.isGroup==\"\" || is_null(parameter.isGroup)){\r\n parameter.isGroup = 0;\r\n}\r\n/**\r\n * 接口sql相关内容整理 通过freemarker模板生成最后执行语句\r\n */\r\nvar q = \"{\\\"query\\\":\\\"<#if ruleType==1> SELECT match_id AS match_id,rule_id AS rule_id,rule_version AS rule_version,rule_type AS rule_type,event_type AS event_type,event_name AS event_name,severity AS severity,match_num AS match_num,indicator_fields AS indicator_fields,indicator_values AS indicator_values,reset AS reset,client_ip AS client_ip,client_country_region AS client_country_region,client_admin_area AS client_admin_area,client_super_admin_area AS client_super_admin_area,client_latitude AS client_latitude,client_longitude AS client_longitude,server_ip AS server_ip,server_country_region AS server_country_region,server_admin_area AS server_admin_area,server_super_admin_area AS server_super_admin_area,server_latitude AS server_latitude,server_longitude AS server_longitude,indicator_values AS indicator_values,domain AS domain,app AS app,match_time AS match_time FROM match_indicator <#elseif ruleType==2> SELECT start_time AS start_time,threshold_value AS threshold_value,metric_value AS metric_value,unit as unit , severity AS severity FROM match_threshold <#elseif ruleType==3> SELECT match_id AS match_id,rule_id AS rule_id,rule_version AS rule_version,rule_type AS rule_type,event_type AS event_type,event_name AS event_name,severity AS severity,event_info AS event_info,start_time AS start_time,end_time AS end_time FROM match_sequence <#else> SELECT match_id AS match_id,rule_id AS rule_id,rule_version AS rule_version,rule_type AS rule_type,event_type AS event_type,event_name AS event_name,severity AS severity,event_info AS event_info,start_time AS start_time,end_time AS end_time FROM match_unordered_sequence </#if> where match_id IN ( SELECT CAST(arrayJoin(splitByChar(\',\', match_ids)) AS UInt64) FROM cn_event WHERE end_time >= ${startTime} AND end_time < ${endTime} AND event_id = ${eventId} <#if resource?default(\'\')?trim? length gt 0> AND ${resource} </#if> ) ORDER BY <#if ruleType==1> match_time <#elseif ruleType==2> start_time <#else> start_time </#if> <#if ruleType!=2> DESC LIMIT 1 </#if>\\\",\\\"option\\\":\\\"real_time\\\",\\\"format\\\":\\\"json\\\"}\"\r\nvar result = freeMarkerUtil.processTemplateIntoString(\"eventDetail\",q,parameter);\r\n/**\r\n * 调用galaxy接口获取结果信息\r\n */\r\nvar res = jsonUtil.toBean(result,HashMap.class);\r\nvar galaxyRes = postGalaxyResult(res);\r\n\r\n/**\r\n * 处理galaxy返回的数据结果 将新结果返回前端界面\r\n */\r\nvar result = postHandle(galaxyRes);\r\n\r\nreturn result;');
+INSERT INTO `magic_api_file` VALUES ('/api/v1/detection/event/事件详情.ms', '{\n \"properties\" : { },\n \"id\" : \"copy1723086686424d87948\",\n \"script\" : null,\n \"groupId\" : \"420b0a1c8135477db8d371a9bb30d2c9\",\n \"name\" : \"事件详情\",\n \"createTime\" : null,\n \"updateTime\" : 1731311718085,\n \"lock\" : null,\n \"createBy\" : null,\n \"updateBy\" : null,\n \"path\" : \"/detail\",\n \"method\" : \"GET\",\n \"parameters\" : [ {\n \"name\" : \"startTime\",\n \"value\" : \"1730390400\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"endTime\",\n \"value\" : \"1730649599\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"resource\",\n \"value\" : \"status=0\",\n \"description\" : null,\n \"required\" : false,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"eventId\",\n \"value\" : \"627020593830561792\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"Long\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"ruleType\",\n \"value\" : \"1\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"Integer\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"isGroup\",\n \"value\" : \"0\",\n \"description\" : null,\n \"required\" : false,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n } ],\n \"options\" : [ ],\n \"requestBody\" : \"\",\n \"headers\" : [ {\n \"name\" : \"cn-Authorization\",\n \"value\" : \"a0e623d7-47f8-475b-a0a5-5d77f76601c1\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n } ],\n \"paths\" : [ ],\n \"responseBody\" : \"{\\n \\\"status\\\": 200,\\n \\\"message\\\": null,\\n \\\"request_id\\\": \\\"2fd02e7f-dce7-4bc1-84e6-90bcdd44a108\\\",\\n \\\"success\\\": true,\\n \\\"code\\\": 200,\\n \\\"job\\\": null,\\n \\\"output_mode\\\": \\\"json\\\",\\n \\\"statistics\\\": {\\n \\\"elapsed\\\": 1,\\n \\\"rows_read\\\": 0,\\n \\\"bytes_read\\\": 0,\\n \\\"result_bytes\\\": 403,\\n \\\"result_rows\\\": 1\\n },\\n \\\"meta\\\": null,\\n \\\"data\\\": {\\n \\\"resultType\\\": \\\"table\\\",\\n \\\"result\\\": [\\n {\\n \\\"matchIdLast\\\": 0,\\n \\\"ruleId\\\": 0,\\n \\\"ruleVersion\\\": \\\"\\\",\\n \\\"ruleType\\\": \\\"\\\",\\n \\\"eventType\\\": \\\"\\\",\\n \\\"eventName\\\": \\\"\\\",\\n \\\"severity\\\": 0,\\n \\\"matchNum\\\": 0,\\n \\\"indicatorFields\\\": \\\"\\\",\\n \\\"indicatorValues\\\": \\\"\\\",\\n \\\"reset\\\": 0,\\n \\\"clientIp\\\": \\\"\\\",\\n \\\"clientCountryRegion\\\": \\\"\\\",\\n \\\"clientAdminArea\\\": \\\"\\\",\\n \\\"clientSuperAdminArea\\\": \\\"\\\",\\n \\\"clientLatitude\\\": null,\\n \\\"clientLongitude\\\": null,\\n \\\"serverIp\\\": \\\"\\\",\\n \\\"serverCountryRegion\\\": \\\"\\\",\\n \\\"serverAdminArea\\\": \\\"\\\",\\n \\\"serverSuperAdminArea\\\": \\\"\\\",\\n \\\"serverLatitude\\\": null,\\n \\\"serverLongitude\\\": null,\\n \\\"domain\\\": \\\"\\\",\\n \\\"app\\\": \\\"\\\",\\n \\\"matchTime\\\": 0\\n }\\n ]\\n },\\n \\\"originalUrl\\\": \\\" SELECT anyLast(match_id) AS match_id_last,anyLast(rule_id) AS rule_id,anyLast(rule_version) AS rule_version,anyLast(rule_type) AS rule_type,anyLast(event_type) AS event_type,anyLast(event_name) AS event_name,anyLast(severity) AS severity,anyLast(match_num) AS match_num,anyLast(indicator_fields) AS indicator_fields,anyLast(indicator_values) AS indicator_values,anyLast(reset) AS reset,anyLast(client_ip) AS client_ip,anyLast(client_country_region) AS client_country_region,anyLast(client_admin_area) AS client_admin_area,anyLast(client_super_admin_area) AS client_super_admin_area,anyLast(client_latitude) AS client_latitude,anyLast(client_longitude) AS client_longitude,anyLast(server_ip) AS server_ip,anyLast(server_country_region) AS server_country_region,anyLast(server_admin_area) AS server_admin_area,anyLast(server_super_admin_area) AS server_super_admin_area,anyLast(server_latitude) AS server_latitude,anyLast(server_longitude) AS server_longitude,anyLast(indicator_values) AS indicator_values,anyLast(domain) AS domain,anyLast(app) AS app,anyLast(match_time) AS match_time FROM match_indicator where match_id IN ( SELECT CAST(arrayJoin(splitByChar(\',\', match_ids)) AS UInt64) FROM cn_event WHERE end_time >= toDateTime(1730390400) AND end_time < toDateTime(1730649599) AND event_id = 627020593830561792 AND status = 0 )\\\",\\n \\\"msg\\\": \\\"OK\\\"\\n}\",\n \"description\" : null,\n \"requestBodyDefinition\" : null,\n \"responseBodyDefinition\" : null\n}\r\n================================\r\nimport net.geedge.common.utils.ObjectUtils\r\nimport net.geedge.common.utils.FreeMarkerUtil as freeMarkerUtil;\r\nimport net.geedge.common.utils.JSONUtil as jsonUtil;\r\nimport net.geedge.modules.entity.service.EntityExplorerService as EntityExplorerService;\r\nimport \'@/pre/timeHandle\' as preHandle;\r\nimport \'@/post/table\' as postHandle;\r\nimport \'@/public/postGalaxyResult\' as postGalaxyResult;\r\n\r\n/**\r\n * 入参整理 包括调用公共函数\r\n */\r\nvar parameter={\r\n \"startTime\":startTime,\r\n \"endTime\":endTime,\r\n \"resource\":resource,\r\n \"eventId\":eventId,\r\n \"ruleType\":ruleType\r\n}\r\npreHandle(parameter);\r\nparameter.resource = EntityExplorerService.parseExpression(parameter.resource,\"securityEventMetadata\");\r\n\r\nif (parameter.isGroup==\"\" || is_null(parameter.isGroup)){\r\n parameter.isGroup = 0;\r\n}\r\n/**\r\n * 接口sql相关内容整理 通过freemarker模板生成最后执行语句\r\n */\r\nvar q = \"{\\\"query\\\":\\\"<#if ruleType==1> SELECT anyLast(match_id) AS match_id_last,anyLast(rule_id) AS rule_id,anyLast(rule_version) AS rule_version,anyLast(rule_type) AS rule_type,anyLast(event_type) AS event_type,anyLast(event_name) AS event_name,anyLast(severity) AS severity,anyLast(match_num) AS match_num,anyLast(indicator_fields) AS indicator_fields,anyLast(indicator_values) AS indicator_values,anyLast(reset) AS reset,anyLast(client_ip) AS client_ip,anyLast(client_country_region) AS client_country_region,anyLast(client_admin_area) AS client_admin_area,anyLast(client_super_admin_area) AS client_super_admin_area,anyLast(client_latitude) AS client_latitude,anyLast(client_longitude) AS client_longitude,anyLast(server_ip) AS server_ip,anyLast(server_country_region) AS server_country_region,anyLast(server_admin_area) AS server_admin_area,anyLast(server_super_admin_area) AS server_super_admin_area,anyLast(server_latitude) AS server_latitude,anyLast(server_longitude) AS server_longitude,anyLast(indicator_values) AS indicator_values,anyLast(domain) AS domain,anyLast(app) AS app,anyLast(match_time) AS match_time FROM match_indicator <#elseif ruleType==2> SELECT anyLast(start_time) AS start_time,anyLast(threshold_value) AS threshold_value,anyLast(metric_value) AS metric_value,anyLast(unit) AS unit,anyLast(severity) AS severity FROM match_threshold <#elseif ruleType==3> SELECT anyLast(match_id) AS match_id_last,anyLast(rule_id) AS rule_id,anyLast(rule_version) AS rule_version,anyLast(rule_type) AS rule_type,anyLast(event_type) AS event_type,anyLast(event_name) AS event_name,anyLast(severity) AS severity,anyLast(event_info) AS event_info,anyLast(start_time) AS start_time,anyLast(end_time) AS end_time FROM match_sequence <#else> SELECT anyLast(match_id) AS match_id_last,anyLast(rule_id) AS rule_id,anyLast(rule_version) AS rule_version,anyLast(rule_type) AS rule_type,anyLast(event_type) AS event_type,anyLast(event_name) AS event_name,anyLast(severity) AS severity,anyLast(event_info) AS event_info,anyLast(start_time) AS start_time,anyLast(end_time) AS end_time FROM match_unordered_sequence </#if> where match_id IN ( SELECT CAST(arrayJoin(splitByChar(\',\', match_ids)) AS UInt64) FROM cn_event WHERE end_time >= ${startTime} AND end_time < ${endTime} AND event_id = ${eventId} <#if resource?default(\'\')?trim? length gt 0> AND ${resource} </#if> )\\\",\\\"option\\\":\\\"real_time\\\",\\\"format\\\":\\\"json\\\"}\"\r\nvar result = freeMarkerUtil.processTemplateIntoString(\"eventDetail\",q,parameter);\r\n/**\r\n * 调用galaxy接口获取结果信息\r\n */\r\nvar res = jsonUtil.toBean(result,HashMap.class);\r\nvar galaxyRes = postGalaxyResult(res);\r\n\r\n/**\r\n * 处理galaxy返回的数据结果 将新结果返回前端界面\r\n */\r\nvar result = postHandle(galaxyRes);\r\n\r\nreturn result;');
INSERT INTO `magic_api_file` VALUES ('/api/v1/detection/event/事件详情分布.ms', '{\n \"properties\" : { },\n \"id\" : \"copy1723088472580d57062\",\n \"script\" : null,\n \"groupId\" : \"420b0a1c8135477db8d371a9bb30d2c9\",\n \"name\" : \"事件详情分布\",\n \"createTime\" : null,\n \"updateTime\" : 1724812569007,\n \"lock\" : null,\n \"createBy\" : null,\n \"updateBy\" : null,\n \"path\" : \"/detail/timedistribution\",\n \"method\" : \"GET\",\n \"parameters\" : [ {\n \"name\" : \"startTime\",\n \"value\" : \"\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"endTime\",\n \"value\" : \"\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"resource\",\n \"value\" : null,\n \"description\" : null,\n \"required\" : false,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"keyFields\",\n \"value\" : \"\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"keyValues\",\n \"value\" : \"\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"ruleId\",\n \"value\" : \"\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"Long\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"ruleVersion\",\n \"value\" : \"\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n } ],\n \"options\" : [ ],\n \"requestBody\" : \"\",\n \"headers\" : [ ],\n \"paths\" : [ ],\n \"responseBody\" : \"{\\n \\\"code\\\": 999,\\n \\\"time\\\": \\\"2024-08-23 09:08:05\\\",\\n \\\"message\\\": \\\"400 null at Row:13~13,Col:32~37\\\\n\\\\nvar galaxyResult = httpRequest.post().getBody();\\\\r\\\\n ^^^^^^ \\\"\\n}\",\n \"description\" : null,\n \"requestBodyDefinition\" : null,\n \"responseBodyDefinition\" : null\n}\r\n================================\r\nimport net.geedge.common.utils.FreeMarkerUtil as freeMarkerUtil;\r\nimport net.geedge.common.utils.JSONUtil as jsonUtil;\r\nimport net.geedge.modules.entity.service.EntityExplorerService as EntityExplorerService;\r\nimport \'@/pre/timeHandle\' as preHandle;\r\nimport \'@/post/table\' as postHandle;\r\nimport \'@/public/postGalaxyResult\' as postGalaxyResult;\r\n\r\n\r\n/**\r\n * 入参整理 包括调用公共函数\r\n */\r\nvar parameter={\r\n \"startTime\":startTime,\r\n \"endTime\":endTime,\r\n \"resource\":resource,\r\n \"keyFields\":keyFields,\r\n \"keyValues\":keyValues,\r\n \"ruleId\":ruleId,\r\n \"ruleVersion\":ruleVersion\r\n}\r\n\r\npreHandle(parameter);\r\nparameter.resource = EntityExplorerService.parseExpression(parameter.resource,\"securityEventMetadata\");\r\n/**\r\n * 接口sql相关内容整理 通过freemarker模板生成最后执行语句\r\n */\r\nvar q = \"{\\\"query\\\":\\\"SELECT event_id AS event_id,max(end_time) AS endTime,min(start_time) as start_time,max(status) AS event_status FROM cn_event WHERE end_time >= ${startTime} AND end_time< ${endTime} AND key_fields = ${keyFields} AND key_values = ${keyValues} AND rule_id = ${ruleId} AND rule_version = ${ruleVersion} <#if resource?default(\'\')?trim? length gt 0> AND ${resource} </#if> GROUP BY event_id ORDER BY endTime DESC\\\",\\\"option\\\":\\\"real_time\\\",\\\"format\\\":\\\"json\\\"}\"\r\nvar result = freeMarkerUtil.processTemplateIntoString(\"detailTimedistribution\",q,parameter);\r\n\r\n/**\r\n * 调用galaxy接口获取结果信息\r\n */\r\nvar res = jsonUtil.toBean(result,HashMap.class);\r\nvar galaxyRes = postGalaxyResult(res);\r\n\r\n/**\r\n * 处理galaxy返回的数据结果 将新结果返回前端界面\r\n */\r\nvar result = postHandle(galaxyRes);\r\n\r\nreturn result;');
INSERT INTO `magic_api_file` VALUES ('/api/v1/detection/event/名称统计.ms', '{\n \"properties\" : { },\n \"id\" : \"4ae1759a4de04ec19744ba3f3a712c9e\",\n \"script\" : null,\n \"groupId\" : \"420b0a1c8135477db8d371a9bb30d2c9\",\n \"name\" : \"名称统计\",\n \"createTime\" : null,\n \"updateTime\" : 1724147987625,\n \"lock\" : null,\n \"createBy\" : null,\n \"updateBy\" : null,\n \"path\" : \"/name/statistics\",\n \"method\" : \"GET\",\n \"parameters\" : [ ],\n \"options\" : [ ],\n \"requestBody\" : \"\",\n \"headers\" : [ ],\n \"paths\" : [ ],\n \"responseBody\" : null,\n \"description\" : null,\n \"requestBodyDefinition\" : null,\n \"responseBodyDefinition\" : null\n}\r\n================================\r\nimport net.geedge.common.utils.FreeMarkerUtil as freeMarkerUtil;\r\nimport net.geedge.common.utils.JSONUtil as jsonUtil;\r\nimport net.geedge.modules.entity.service.EntityExplorerService as EntityExplorerService;\r\nimport \'@/pre/timeHandle\' as preHandle;\r\nimport \'@/post/table\' as postHandle;\r\nimport \'@/public/postGalaxyResult\' as postGalaxyResult;\r\n\r\n\r\n/**\r\n * 入参整理 包括调用公共函数\r\n */\r\nvar parameter={\r\n \"startTime\":startTime,\r\n \"endTime\":endTime,\r\n \"resource\":resource\r\n}\r\npreHandle(parameter);\r\nparameter.resource = EntityExplorerService.parseExpression(parameter.resource,\"securityEventMetadata\");\r\n\r\n/**\r\n * 接口sql相关内容整理 通过freemarker模板生成最后执行语句\r\n */\r\nvar q = \"{\\\"query\\\":\\\"SELECT event_name AS event_name,uniqExact(event_id) AS count FROM cn_event WHERE end_time >= ${startTime} AND end_time < ${endTime} <#if resource?default(\'\')?trim? length gt 0> AND ${resource} </#if> GROUP BY event_name ORDER BY count DESC\\\",\\\"option\\\":\\\"real_time\\\",\\\"format\\\":\\\"json\\\"}\"\r\nvar result = freeMarkerUtil.processTemplateIntoString(\"nameStatistics\",q,parameter);\r\n\r\n/**\r\n * 调用galaxy接口获取结果信息\r\n */\r\nvar res = jsonUtil.toBean(result,HashMap.class);\r\nvar galaxyRes = postGalaxyResult(res);\r\n\r\n/**\r\n * 处理galaxy返回的数据结果 将新结果返回前端界面\r\n */\r\nvar result = postHandle(galaxyRes);\r\n\r\nreturn result;');
INSERT INTO `magic_api_file` VALUES ('/api/v1/detection/event/状态统计.ms', '{\n \"properties\" : { },\n \"id\" : \"copy1723081117471d70817\",\n \"script\" : null,\n \"groupId\" : \"420b0a1c8135477db8d371a9bb30d2c9\",\n \"name\" : \"状态统计\",\n \"createTime\" : null,\n \"updateTime\" : 1724148022868,\n \"lock\" : null,\n \"createBy\" : null,\n \"updateBy\" : null,\n \"path\" : \"/status/statistics\",\n \"method\" : \"GET\",\n \"parameters\" : [ ],\n \"options\" : [ ],\n \"requestBody\" : \"\",\n \"headers\" : [ ],\n \"paths\" : [ ],\n \"responseBody\" : null,\n \"description\" : null,\n \"requestBodyDefinition\" : null,\n \"responseBodyDefinition\" : null\n}\r\n================================\r\nimport net.geedge.common.utils.FreeMarkerUtil as freeMarkerUtil;\r\nimport net.geedge.common.utils.JSONUtil as jsonUtil;\r\nimport net.geedge.modules.entity.service.EntityExplorerService as EntityExplorerService;\r\nimport \'@/pre/timeHandle\' as preHandle;\r\nimport \'@/post/table\' as postHandle;\r\nimport \'@/public/postGalaxyResult\' as postGalaxyResult;\r\n\r\n\r\n/**\r\n * 入参整理 包括调用公共函数\r\n */\r\nvar parameter={\r\n \"startTime\":startTime,\r\n \"endTime\":endTime,\r\n \"resource\":resource\r\n}\r\npreHandle(parameter);\r\nparameter.resource = EntityExplorerService.parseExpression(parameter.resource,\"securityEventMetadata\");\r\n\r\n/**\r\n * 接口sql相关内容整理 通过freemarker模板生成最后执行语句\r\n */\r\nvar q = \"{\\\"query\\\":\\\"SELECT status AS status,uniqExact(event_id) AS count FROM cn_event WHERE end_time >= ${startTime} AND end_time < ${endTime} <#if resource?default(\'\')?trim? length gt 0> AND ${resource} </#if> GROUP BY status ORDER BY count DESC\\\",\\\"option\\\":\\\"real_time\\\",\\\"format\\\":\\\"json\\\"}\"\r\nvar result = freeMarkerUtil.processTemplateIntoString(\"statusStatistics\",q,parameter);\r\n\r\n/**\r\n * 调用galaxy接口获取结果信息\r\n */\r\nvar res = jsonUtil.toBean(result,HashMap.class);\r\nvar galaxyRes = postGalaxyResult(res);\r\n\r\n/**\r\n * 处理galaxy返回的数据结果 将新结果返回前端界面\r\n */\r\nvar result = postHandle(galaxyRes);\r\n\r\nreturn result;');
@@ -396,7 +396,7 @@ INSERT INTO `magic_api_file` VALUES ('/api/v1/locationIntelligence/', 'this is d
INSERT INTO `magic_api_file` VALUES ('/api/v1/locationIntelligence/group.json', '{\r\n \"properties\" : { },\r\n \"id\" : \"1b2392073eee441f9c7a12a815bf3eae\",\r\n \"name\" : \"locationIntelligence\",\r\n \"type\" : \"api\",\r\n \"parentId\" : \"67d55368d07840ca80c04d7ade154d76\",\r\n \"path\" : \"/locationIntelligence\",\r\n \"createTime\" : 1708672055580,\r\n \"updateTime\" : null,\r\n \"createBy\" : \"admin\",\r\n \"updateBy\" : null,\r\n \"paths\" : [ ],\r\n \"options\" : [ ]\r\n}');
INSERT INTO `magic_api_file` VALUES ('/api/v1/locationIntelligence/Location人口统计.ms', '{\r\n \"properties\" : { },\r\n \"id\" : \"1ff8fd7aac0544a49bdc219af1e9b957\",\r\n \"script\" : null,\r\n \"groupId\" : \"1b2392073eee441f9c7a12a815bf3eae\",\r\n \"name\" : \"Location人口统计\",\r\n \"createTime\" : null,\r\n \"updateTime\" : 1709695175988,\r\n \"lock\" : null,\r\n \"createBy\" : null,\r\n \"updateBy\" : \"admin\",\r\n \"path\" : \"/population/density\",\r\n \"method\" : \"GET\",\r\n \"parameters\" : [ {\r\n \"name\" : \"startTime\",\r\n \"value\" : null,\r\n \"description\" : null,\r\n \"required\" : true,\r\n \"dataType\" : \"Long\",\r\n \"type\" : null,\r\n \"defaultValue\" : null,\r\n \"validateType\" : null,\r\n \"error\" : null,\r\n \"expression\" : null,\r\n \"children\" : null\r\n }, {\r\n \"name\" : \"endTime\",\r\n \"value\" : null,\r\n \"description\" : null,\r\n \"required\" : true,\r\n \"dataType\" : \"Long\",\r\n \"type\" : null,\r\n \"defaultValue\" : null,\r\n \"validateType\" : null,\r\n \"error\" : null,\r\n \"expression\" : null,\r\n \"children\" : null\r\n }, {\r\n \"name\" : \"level\",\r\n \"value\" : null,\r\n \"description\" : null,\r\n \"required\" : true,\r\n \"dataType\" : \"Integer\",\r\n \"type\" : null,\r\n \"defaultValue\" : null,\r\n \"validateType\" : null,\r\n \"error\" : null,\r\n \"expression\" : null,\r\n \"children\" : null\r\n } ],\r\n \"options\" : [ ],\r\n \"requestBody\" : \"\",\r\n \"headers\" : [ ],\r\n \"paths\" : [ ],\r\n \"responseBody\" : null,\r\n \"description\" : null,\r\n \"requestBodyDefinition\" : null,\r\n \"responseBodyDefinition\" : null\r\n}\r\n================================\r\nimport net.geedge.common.utils.FreeMarkerUtil as freeMarkerUtil;\r\nimport net.geedge.common.utils.JSONUtil as jsonUtil;\r\nimport net.geedge.common.utils.R as R;\r\nimport \'@/pre/timeHandleNone\' as timeHandle;\r\nimport \'@/post/object\' as postHandle;\r\nimport \'@/public/postGalaxyResult\' as postGalaxyResult;\r\n/**\r\n * 入参整理 包括调用公共函数\r\n */\r\nvar parameter={\r\n \"startTime\":startTime,\r\n \"endTime\":endTime,\r\n \"level\":level\r\n}\r\ntimeHandle(parameter);\r\n/**\r\n * 接口sql相关内容整理 通过freemarker模板生成最后执行语句\r\n */\r\nvar q = \"{\\r\\n \\\"query\\\": \\\"SELECT <#if level?default(\'\')?trim? length gt 0 && level == 2> second_location <#elseif level?default(\'\')?trim? length gt 0 && level == 3> third_location <#else> first_location </#if> AS hexId,COUNT(DISTINCT(subscriber_id)) AS number,COUNT(*) AS hitCount FROM location_subscriber WHERE stat_time >= ${startTime} AND stat_time < ${endTime} GROUP BY <#if level?default(\'\')?trim? length gt 0 && level == 2> second_location <#elseif level?default(\'\')?trim? length gt 0 && level == 3> third_location <#else> first_location </#if>\\\",\\r\\n \\\"option\\\": \\\"real_time\\\",\\r\\n \\\"format\\\": \\\"json\\\"\\r\\n}\"\r\nvar result = freeMarkerUtil.processTemplateIntoString(\"v1LocationIntelligencePopulationDensity\",q,parameter);\r\n\r\n/**\r\n * 调用galaxy接口获取结果信息\r\n */\r\nvar res = jsonUtil.toBean(result,HashMap.class);\r\nvar galaxyRes = postGalaxyResult(res);\r\n/**\r\n * 处理galaxy返回的数据结果 将新结果返回前端界面\r\n */\r\ngalaxyRes.msg=\'success\';\r\nreturn galaxyRes;');
INSERT INTO `magic_api_file` VALUES ('/api/v1/locationIntelligence/Location关注用户状态.ms', '{\r\n \"properties\" : { },\r\n \"id\" : \"f534d0e0a5994502a515210df19cda89\",\r\n \"script\" : null,\r\n \"groupId\" : \"1b2392073eee441f9c7a12a815bf3eae\",\r\n \"name\" : \"Location关注用户状态\",\r\n \"createTime\" : null,\r\n \"updateTime\" : 1709694935085,\r\n \"lock\" : null,\r\n \"createBy\" : null,\r\n \"updateBy\" : \"admin\",\r\n \"path\" : \"/followed/status\",\r\n \"method\" : \"GET\",\r\n \"parameters\" : [ {\r\n \"name\" : \"startTime\",\r\n \"value\" : \"2024-01-01 00:00:00\",\r\n \"description\" : null,\r\n \"required\" : true,\r\n \"dataType\" : \"String\",\r\n \"type\" : null,\r\n \"defaultValue\" : null,\r\n \"validateType\" : null,\r\n \"error\" : null,\r\n \"expression\" : null,\r\n \"children\" : null\r\n }, {\r\n \"name\" : \"endTime\",\r\n \"value\" : \"2025-01-01 00:00:00\",\r\n \"description\" : null,\r\n \"required\" : true,\r\n \"dataType\" : \"String\",\r\n \"type\" : null,\r\n \"defaultValue\" : null,\r\n \"validateType\" : null,\r\n \"error\" : null,\r\n \"expression\" : null,\r\n \"children\" : null\r\n }, {\r\n \"name\" : \"subscriberIds\",\r\n \"value\" : \"gray6411\",\r\n \"description\" : null,\r\n \"required\" : true,\r\n \"dataType\" : \"String\",\r\n \"type\" : null,\r\n \"defaultValue\" : null,\r\n \"validateType\" : null,\r\n \"error\" : null,\r\n \"expression\" : null,\r\n \"children\" : null\r\n }, {\r\n \"name\" : \"level\",\r\n \"value\" : null,\r\n \"description\" : null,\r\n \"required\" : true,\r\n \"dataType\" : \"Integer\",\r\n \"type\" : null,\r\n \"defaultValue\" : null,\r\n \"validateType\" : null,\r\n \"error\" : null,\r\n \"expression\" : null,\r\n \"children\" : null\r\n } ],\r\n \"options\" : [ ],\r\n \"requestBody\" : \"\",\r\n \"headers\" : [ {\r\n \"name\" : \"cn-Authorization\",\r\n \"value\" : \"1a653ea0-d39b-4246-94b0-1ba95db4b6a7\",\r\n \"description\" : null,\r\n \"required\" : true,\r\n \"dataType\" : \"String\",\r\n \"type\" : null,\r\n \"defaultValue\" : null,\r\n \"validateType\" : null,\r\n \"error\" : null,\r\n \"expression\" : null,\r\n \"children\" : null\r\n } ],\r\n \"paths\" : [ ],\r\n \"responseBody\" : \"{\\n \\\"code\\\": 999,\\n \\\"time\\\": \\\"2024-02-27 09:10:56\\\",\\n \\\"message\\\": \\\"400 null at Row:13~13,Col:32~37\\\\n\\\\nvar galaxyResult = httpRequest.post().getBody();\\\\r\\\\n ^^^^^^ \\\"\\n}\",\r\n \"description\" : null,\r\n \"requestBodyDefinition\" : null,\r\n \"responseBodyDefinition\" : null\r\n}\r\n================================\r\nimport net.geedge.common.utils.FreeMarkerUtil as freeMarkerUtil;\r\nimport net.geedge.common.utils.JSONUtil as jsonUtil;\r\nimport net.geedge.common.utils.R as R;\r\nimport \'@/pre/timeHandleNone\' as timeHandle;\r\nimport \'@/post/object\' as postHandle;\r\nimport \'@/public/postGalaxyResult\' as postGalaxyResult;\r\n\r\n/**\r\n * 入参整理 包括调用公共函数\r\n */\r\nvar parameter={\r\n \"startTime\":startTime,\r\n \"endTime\":endTime,\r\n \"subscriberIds\":subscriberIds,\r\n \"level\":level\r\n}\r\ntimeHandle(parameter);\r\nprintln(parameter);\r\n/**\r\n * 接口sql相关内容整理 通过freemarker模板生成最后执行语句\r\n */\r\nvar q = \"{\\\"query\\\":\\\"SELECT subscriber_id AS subscriber_id,anyLast(<#if level?default(\'\')?trim? length gt 0 && level == 2> second_location <#elseif level?default(\'\')?trim? length gt 0 && level == 3> third_location <#else> first_location </#if>) AS hexId,anyLast(subscriber_longitude) AS subscriberLongitude, anyLast(subscriber_latitude) AS subscriberLatitude,anyLast(imei) AS imei,anyLast(imsi) AS imsi,anyLast(phone_number) AS phone_number,anyLast(apn) AS apn FROM location_subscriber WHERE stat_time >= ${startTime} AND stat_time < ${endTime} AND subscriber_id IN (<#if subscriberIds?default(\'\')?trim? length gt 0> ${subscriberIds} </#if>) GROUP BY subscriber_id\\\",\\\"option\\\":\\\"real_time\\\",\\\"format\\\":\\\"json\\\"}\"\r\nvar result = freeMarkerUtil.processTemplateIntoString(\"v1LocationIntelligenceFollowedStatus\",q,parameter);\r\n\r\n/**\r\n * 调用galaxy接口获取结果信息\r\n */\r\nvar res = jsonUtil.toBean(result,HashMap.class);\r\nvar galaxyRes = postGalaxyResult(res);\r\n/**\r\n * 处理galaxy返回的数据结果 将新结果返回前端界面\r\n */\r\n\r\nreturn galaxyRes;');
-INSERT INTO `magic_api_file` VALUES ('/api/v1/locationIntelligence/Location列表.ms', '{\n \"properties\" : { },\n \"id\" : \"e2721e2841104ff885693d31fbc4abd1\",\n \"script\" : null,\n \"groupId\" : \"1b2392073eee441f9c7a12a815bf3eae\",\n \"name\" : \"Location列表\",\n \"createTime\" : null,\n \"updateTime\" : 1731291566271,\n \"lock\" : null,\n \"createBy\" : \"admin\",\n \"updateBy\" : null,\n \"path\" : \"/list\",\n \"method\" : \"GET\",\n \"parameters\" : [ {\n \"name\" : \"startTime\",\n \"value\" : \"1731287105\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"Long\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"endTime\",\n \"value\" : \"1731290705\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"Long\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"params\",\n \"value\" : \"data_source=\'SD\'\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"pageSize\",\n \"value\" : \"10\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"Integer\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"pageNo\",\n \"value\" : \"1\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"Integer\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"isFollowed\",\n \"value\" : \"0\",\n \"description\" : null,\n \"required\" : false,\n \"dataType\" : \"Integer\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n } ],\n \"options\" : [ ],\n \"requestBody\" : \"\",\n \"headers\" : [ {\n \"name\" : \"cn-Authorization\",\n \"value\" : \"1a653ea0-d39b-4246-94b0-1ba95db4b6a7\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n } ],\n \"paths\" : [ ],\n \"responseBody\" : \"{\\n \\\"code\\\": 999,\\n \\\"time\\\": \\\"2024-11-11 02:10:43\\\",\\n \\\"message\\\": \\\"500 null at Row:13~13,Col:32~37\\\\n\\\\nvar galaxyResult = httpRequest.post().getBody();\\\\r\\\\n ^^^^^^ \\\"\\n}\",\n \"description\" : null,\n \"requestBodyDefinition\" : null,\n \"responseBodyDefinition\" : null\n}\r\n================================\r\nimport cn.hutool.core.util.ObjectUtil;\r\nimport cn.hutool.core.util.StrUtil;\r\nimport net.geedge.common.utils.GeoUtil;\r\nimport net.geedge.common.utils.FreeMarkerUtil as freeMarkerUtil;\r\nimport net.geedge.common.utils.JSONUtil as jsonUtil;\r\nimport net.geedge.common.utils.R as R;\r\nimport net.geedge.modules.sys.shiro.ShiroUtils;\r\nimport java.util.stream.Collectors;\r\nimport \'@/pre/timeHandleNone\' as timeHandle;\r\nimport \'@/post/object\' as postHandle;\r\nimport \'@/public/postGalaxyResult\' as postGalaxyResult;\r\nimport \'@/pre/pageFieldsHandle\' as pageHandle;\r\nimport \'@get:/v1/locationIntelligence/followed/status\' as getStatus;\r\nimport log;\r\n/**\r\n * 入参整理 包括调用公共函数\r\n */\r\nvar parameter={\r\n \"startTime\":startTime,\r\n \"endTime\":endTime,\r\n \"pageSize\":pageSize,\r\n \"pageNo\":pageNo,\r\n \"params\":params,\r\n \"isFollowed\":isFollowed\r\n}\r\ntimeHandle(parameter);\r\npageHandle(parameter);\r\n\r\n/**\r\n * 查询所有关注的用户信息\r\n */\r\nvar userId = ShiroUtils.getUserId();\r\nvar followSubs = new ArrayList();\r\nvar sql = \"\"\"\r\n select subscriber_id from user_subscriber where user_id = #{userId}\r\n\"\"\"\r\nfollowSubs = db.select(sql);\r\nvar isFollow = new ArrayList();\r\nif(followSubs !=null && followSubs.size()>0){\r\n for(i,j in followSubs){\r\n isFollow.add(followSubs[i].subscriber_id);\r\n }\r\n}\r\nvar queryIds = isFollow.stream().map(s -> \"\'\" + s + \"\'\").collect(Collectors.joining(\", \"));\r\nif(ObjectUtil.isNotEmpty(isFollowed) && isFollowed == 1){\r\n if(ObjectUtil.isEmpty(queryIds)){\r\n queryIds=\"\'\'\";\r\n }\r\n if(ObjectUtil.isNotEmpty(params)){\r\n parameter.params=parameter.params+\" and subscriber_id in (\"+queryIds+\")\";\r\n }else{\r\n parameter.params=\"subscriber_id in (\"+queryIds+\")\";\r\n }\r\n}\r\n\r\n/**\r\n * 接口sql相关内容整理 通过freemarker模板生成最后执行语句\r\n */\r\nvar q = \"{\\\"query\\\":\\\"SELECT subscriber_id AS subscriberId, anyLast(imei) AS imei, anyLast(imsi) AS imsi, anyLast(phone_number) AS phoneNumber, anyLast(apn) AS apn,anyLast(cell_id) AS cellId,anyLast(cell_type) AS cellType, groupUniqArray(data_source) AS dataSource, COUNT(*) AS hitCount,anyLast(subscriber_longitude) as longitude,anyLast(subscriber_latitude) as latitude FROM location_subscriber where stat_time >= ${startTime} and stat_time < ${endTime} <#if params?default(\\\'\\\')?trim? length gt 0> and ${params} </#if> GROUP BY subscriber_id ORDER BY hitCount DESC,subscriber_id <#if pageSize?default(\\\'\\\')?trim? length gt 0&&pageNo?default(\\\'\\\')?trim? length gt 0> LIMIT ${pageNo},${pageSize}</#if>\\\",\\\"option\\\":\\\"real_time\\\",\\\"format\\\":\\\"json\\\"}\"\r\nvar result = freeMarkerUtil.processTemplateIntoString(\"v1LocationIntelligenceList\",q,parameter);\r\n\r\n\r\n\r\n/**\r\n * 调用galaxy接口获取结果信息\r\n */\r\nvar res = jsonUtil.toBean(result,HashMap.class);\r\nlog.info(result);\r\nvar galaxyRes = postGalaxyResult(res);\r\n/**\r\n * 处理galaxy返回的数据结果 将新结果返回前端界面\r\n */\r\nif(galaxyRes.data.length > 0 ){\r\n var sIds = [];\r\n for(i,j in galaxyRes.data){\r\n sIds.push(galaxyRes.data[i].subscriberId);\r\n }\r\n var subscriberIds = sIds.stream().map(s -> \"\'\" + s + \"\'\").collect(Collectors.joining(\", \"));\r\n var status = getStatus();\r\n var idSub = {};\r\n if(status.data.length > 0 ){\r\n for(i,j in status.data){\r\n idSub.put(status.data[i].subscriber_id,1);\r\n }\r\n }\r\n \r\n for(i,j in galaxyRes.data){\r\n if(idSub.get(galaxyRes.data[i].subscriberId)==1){\r\n galaxyRes.data[i].active=1;\r\n }else{\r\n galaxyRes.data[i].active=0;\r\n }\r\n if(isFollow.contains(galaxyRes.data[i].subscriberId)){\r\n galaxyRes.data[i].isFollowed=1;\r\n }else{\r\n galaxyRes.data[i].isFollowed=0;\r\n }\r\n galaxyRes.data[i].putAll(GeoUtil.reverseGeocode(galaxyRes.data[i].longitude,galaxyRes.data[i].latitude));\r\n }\r\n}\r\n\r\nreturn galaxyRes;');
+INSERT INTO `magic_api_file` VALUES ('/api/v1/locationIntelligence/Location列表.ms', '{\n \"properties\" : { },\n \"id\" : \"e2721e2841104ff885693d31fbc4abd1\",\n \"script\" : null,\n \"groupId\" : \"1b2392073eee441f9c7a12a815bf3eae\",\n \"name\" : \"Location列表\",\n \"createTime\" : null,\n \"updateTime\" : 1731294139464,\n \"lock\" : null,\n \"createBy\" : \"admin\",\n \"updateBy\" : null,\n \"path\" : \"/list\",\n \"method\" : \"GET\",\n \"parameters\" : [ {\n \"name\" : \"startTime\",\n \"value\" : \"1731287105\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"Long\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"endTime\",\n \"value\" : \"1731290705\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"Long\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"params\",\n \"value\" : \"data_source=\'SD\'\",\n \"description\" : null,\n \"required\" : false,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"pageSize\",\n \"value\" : \"10\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"Integer\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"pageNo\",\n \"value\" : \"1\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"Integer\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"isFollowed\",\n \"value\" : \"0\",\n \"description\" : null,\n \"required\" : false,\n \"dataType\" : \"Integer\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n } ],\n \"options\" : [ ],\n \"requestBody\" : \"\",\n \"headers\" : [ {\n \"name\" : \"cn-Authorization\",\n \"value\" : \"1a653ea0-d39b-4246-94b0-1ba95db4b6a7\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n } ],\n \"paths\" : [ ],\n \"responseBody\" : \"{\\n \\\"status\\\": 200,\\n \\\"message\\\": \\\"OK\\\",\\n \\\"request_id\\\": \\\"6c7a042e-a5dc-47db-a133-adb2c949e447\\\",\\n \\\"success\\\": true,\\n \\\"code\\\": \\\"20000666\\\",\\n \\\"job\\\": null,\\n \\\"output_mode\\\": \\\"json\\\",\\n \\\"statistics\\\": {\\n \\\"elapsed\\\": 5,\\n \\\"rows_read\\\": 13768,\\n \\\"bytes_read\\\": 1968824,\\n \\\"result_bytes\\\": 2121,\\n \\\"result_rows\\\": 10\\n },\\n \\\"meta\\\": null,\\n \\\"data\\\": [\\n {\\n \\\"subscriberId\\\": \\\"415678605002892\\\",\\n \\\"imei\\\": \\\"\\\",\\n \\\"imsi\\\": \\\"415678605002892\\\",\\n \\\"phoneNumber\\\": \\\"\\\",\\n \\\"apn\\\": \\\"\\\",\\n \\\"cellId\\\": \\\"414-06-15190-7\\\",\\n \\\"cellType\\\": 1,\\n \\\"dataSource\\\": [\\n \\\"SD\\\"\\n ],\\n \\\"hitCount\\\": 60,\\n \\\"longitude\\\": 96.338946,\\n \\\"latitude\\\": 21.059401,\\n \\\"active\\\": 1,\\n \\\"isFollowed\\\": 0,\\n \\\"country\\\": \\\"Myanmar\\\",\\n \\\"superAdministrativeArea\\\": \\\"Shan\\\",\\n \\\"administrativeArea\\\": \\\"Taunggye\\\"\\n },\\n {\\n \\\"subscriberId\\\": \\\"415678605002893\\\",\\n \\\"imei\\\": \\\"\\\",\\n \\\"imsi\\\": \\\"415678605002893\\\",\\n \\\"phoneNumber\\\": \\\"\\\",\\n \\\"apn\\\": \\\"\\\",\\n \\\"cellId\\\": \\\"414-06-13812-5\\\",\\n \\\"cellType\\\": 1,\\n \\\"dataSource\\\": [\\n \\\"SD\\\"\\n ],\\n \\\"hitCount\\\": 60,\\n \\\"longitude\\\": 95.134271,\\n \\\"latitude\\\": 24.200584,\\n \\\"active\\\": 1,\\n \\\"isFollowed\\\": 0,\\n \\\"country\\\": \\\"Myanmar\\\",\\n \\\"superAdministrativeArea\\\": \\\"Sagaing\\\",\\n \\\"administrativeArea\\\": \\\"Mawleik\\\"\\n },\\n {\\n \\\"subscriberId\\\": \\\"415678605002894\\\",\\n \\\"imei\\\": \\\"\\\",\\n \\\"imsi\\\": \\\"415678605002894\\\",\\n \\\"phoneNumber\\\": \\\"\\\",\\n \\\"apn\\\": \\\"\\\",\\n \\\"cellId\\\": \\\"414-06-11702-9\\\",\\n \\\"cellType\\\": 1,\\n \\\"dataSource\\\": [\\n \\\"SD\\\"\\n ],\\n \\\"hitCount\\\": 60,\\n \\\"longitude\\\": 95.020428,\\n \\\"latitude\\\": 22.635053,\\n \\\"active\\\": 1,\\n \\\"isFollowed\\\": 0,\\n \\\"country\\\": \\\"Myanmar\\\",\\n \\\"superAdministrativeArea\\\": \\\"Sagaing\\\",\\n \\\"administrativeArea\\\": \\\"Shwebo\\\"\\n },\\n {\\n \\\"subscriberId\\\": \\\"415678605002895\\\",\\n \\\"imei\\\": \\\"\\\",\\n \\\"imsi\\\": \\\"415678605002895\\\",\\n \\\"phoneNumber\\\": \\\"\\\",\\n \\\"apn\\\": \\\"\\\",\\n \\\"cellId\\\": \\\"414-06-14657-8\\\",\\n \\\"cellType\\\": 1,\\n \\\"dataSource\\\": [\\n \\\"SD\\\"\\n ],\\n \\\"hitCount\\\": 60,\\n \\\"longitude\\\": 96.067921,\\n \\\"latitude\\\": 20.445169,\\n \\\"active\\\": 1,\\n \\\"isFollowed\\\": 0,\\n \\\"country\\\": \\\"Myanmar\\\",\\n \\\"superAdministrativeArea\\\": \\\"Mandalay\\\",\\n \\\"administrativeArea\\\": \\\"Yamethin\\\"\\n },\\n {\\n \\\"subscriberId\\\": \\\"415678605002896\\\",\\n \\\"imei\\\": \\\"\\\",\\n \\\"imsi\\\": \\\"415678605002896\\\",\\n \\\"phoneNumber\\\": \\\"\\\",\\n \\\"apn\\\": \\\"\\\",\\n \\\"cellId\\\": \\\"414-06-13890-9\\\",\\n \\\"cellType\\\": 1,\\n \\\"dataSource\\\": [\\n \\\"SD\\\"\\n ],\\n \\\"hitCount\\\": 60,\\n \\\"longitude\\\": 99.050106,\\n \\\"latitude\\\": 18.665683,\\n \\\"active\\\": 1,\\n \\\"isFollowed\\\": 0\\n },\\n {\\n \\\"subscriberId\\\": \\\"415678605002897\\\",\\n \\\"imei\\\": \\\"\\\",\\n \\\"imsi\\\": \\\"415678605002897\\\",\\n \\\"phoneNumber\\\": \\\"\\\",\\n \\\"apn\\\": \\\"\\\",\\n \\\"cellId\\\": \\\"414-06-13171-4\\\",\\n \\\"cellType\\\": 1,\\n \\\"dataSource\\\": [\\n \\\"SD\\\"\\n ],\\n \\\"hitCount\\\": 60,\\n \\\"longitude\\\": 95.702068,\\n \\\"latitude\\\": 18.504493,\\n \\\"active\\\": 1,\\n \\\"isFollowed\\\": 0,\\n \\\"country\\\": \\\"Myanmar\\\",\\n \\\"superAdministrativeArea\\\": \\\"Bago\\\",\\n \\\"administrativeArea\\\": \\\"Thayarwady\\\"\\n },\\n {\\n \\\"subscriberId\\\": \\\"415678605002898\\\",\\n \\\"imei\\\": \\\"\\\",\\n \\\"imsi\\\": \\\"415678605002898\\\",\\n \\\"phoneNumber\\\": \\\"\\\",\\n \\\"apn\\\": \\\"\\\",\\n \\\"cellId\\\": \\\"414-06-13219-0\\\",\\n \\\"cellType\\\": 1,\\n \\\"dataSource\\\": [\\n \\\"SD\\\"\\n ],\\n \\\"hitCount\\\": 60,\\n \\\"longitude\\\": 98.509817,\\n \\\"latitude\\\": 21.259929,\\n \\\"active\\\": 1,\\n \\\"isFollowed\\\": 0,\\n \\\"country\\\": \\\"Myanmar\\\",\\n \\\"superAdministrativeArea\\\": \\\"Shan\\\",\\n \\\"administrativeArea\\\": \\\"Loilen\\\"\\n },\\n {\\n \\\"subscriberId\\\": \\\"415678605002899\\\",\\n \\\"imei\\\": \\\"\\\",\\n \\\"imsi\\\": \\\"415678605002899\\\",\\n \\\"phoneNumber\\\": \\\"\\\",\\n \\\"apn\\\": \\\"\\\",\\n \\\"cellId\\\": \\\"414-06-19080-9\\\",\\n \\\"cellType\\\": 1,\\n \\\"dataSource\\\": [\\n \\\"SD\\\"\\n ],\\n \\\"hitCount\\\": 60,\\n \\\"longitude\\\": 97.595597,\\n \\\"latitude\\\": 20.483879,\\n \\\"active\\\": 1,\\n \\\"isFollowed\\\": 0,\\n \\\"country\\\": \\\"Myanmar\\\",\\n \\\"superAdministrativeArea\\\": \\\"Shan\\\",\\n \\\"administrativeArea\\\": \\\"Loilen\\\"\\n },\\n {\\n \\\"subscriberId\\\": \\\"415678605002900\\\",\\n \\\"imei\\\": \\\"\\\",\\n \\\"imsi\\\": \\\"415678605002900\\\",\\n \\\"phoneNumber\\\": \\\"\\\",\\n \\\"apn\\\": \\\"\\\",\\n \\\"cellId\\\": \\\"414-06-12956-7\\\",\\n \\\"cellType\\\": 1,\\n \\\"dataSource\\\": [\\n \\\"SD\\\"\\n ],\\n \\\"hitCount\\\": 60,\\n \\\"longitude\\\": 98.262743,\\n \\\"latitude\\\": 20.483301,\\n \\\"active\\\": 1,\\n \\\"isFollowed\\\": 0,\\n \\\"country\\\": \\\"Myanmar\\\",\\n \\\"superAdministrativeArea\\\": \\\"Shan\\\",\\n \\\"administrativeArea\\\": \\\"Loilen\\\"\\n },\\n {\\n \\\"subscriberId\\\": \\\"415678605002901\\\",\\n \\\"imei\\\": \\\"\\\",\\n \\\"imsi\\\": \\\"415678605002901\\\",\\n \\\"phoneNumber\\\": \\\"\\\",\\n \\\"apn\\\": \\\"\\\",\\n \\\"cellId\\\": \\\"414-06-18299-9\\\",\\n \\\"cellType\\\": 1,\\n \\\"dataSource\\\": [\\n \\\"SD\\\"\\n ],\\n \\\"hitCount\\\": 60,\\n \\\"longitude\\\": 98.962293,\\n \\\"latitude\\\": 23.280859,\\n \\\"active\\\": 1,\\n \\\"isFollowed\\\": 0\\n }\\n ],\\n \\\"originalUrl\\\": \\\"SELECT subscriber_id AS subscriberId, anyLast(imei) AS imei, anyLast(imsi) AS imsi, anyLast(phone_number) AS phoneNumber, anyLast(apn) AS apn,anyLast(cell_id) AS cellId,anyLast(cell_type) AS cellType, groupUniqArray(data_source) AS dataSource, COUNT(*) AS hitCount,anyLast(subscriber_longitude) as longitude,anyLast(subscriber_latitude) as latitude FROM location_subscriber where stat_time >= 1731287105 and stat_time < 1731290705 and data_source=\'SD\' GROUP BY subscriber_id ORDER BY hitCount DESC,subscriber_id LIMIT 0,10\\\"\\n}\",\n \"description\" : null,\n \"requestBodyDefinition\" : null,\n \"responseBodyDefinition\" : null\n}\r\n================================\r\nimport cn.hutool.core.util.ObjectUtil;\r\nimport cn.hutool.core.util.StrUtil;\r\nimport net.geedge.common.utils.GeoUtil;\r\nimport net.geedge.common.utils.FreeMarkerUtil as freeMarkerUtil;\r\nimport net.geedge.common.utils.JSONUtil as jsonUtil;\r\nimport net.geedge.common.utils.R as R;\r\nimport net.geedge.modules.sys.shiro.ShiroUtils;\r\nimport java.util.stream.Collectors;\r\nimport \'@/pre/timeHandleNone\' as timeHandle;\r\nimport \'@/post/object\' as postHandle;\r\nimport \'@/public/postGalaxyResult\' as postGalaxyResult;\r\nimport \'@/pre/pageFieldsHandle\' as pageHandle;\r\nimport \'@get:/v1/locationIntelligence/followed/status\' as getStatus;\r\nimport log;\r\n/**\r\n * 入参整理 包括调用公共函数\r\n */\r\nvar parameter={\r\n \"startTime\":startTime,\r\n \"endTime\":endTime,\r\n \"pageSize\":pageSize,\r\n \"pageNo\":pageNo,\r\n \"params\":params,\r\n \"isFollowed\":isFollowed\r\n}\r\ntimeHandle(parameter);\r\npageHandle(parameter);\r\n\r\n/**\r\n * 查询所有关注的用户信息\r\n */\r\nvar userId = ShiroUtils.getUserId();\r\nvar followSubs = new ArrayList();\r\nvar sql = \"\"\"\r\n select subscriber_id from user_subscriber where user_id = #{userId}\r\n\"\"\"\r\nfollowSubs = db.select(sql);\r\nvar isFollow = new ArrayList();\r\nif(followSubs !=null && followSubs.size()>0){\r\n for(i,j in followSubs){\r\n isFollow.add(followSubs[i].subscriber_id);\r\n }\r\n}\r\nvar queryIds = isFollow.stream().map(s -> \"\'\" + s + \"\'\").collect(Collectors.joining(\", \"));\r\nif(ObjectUtil.isNotEmpty(isFollowed) && isFollowed == 1){\r\n if(ObjectUtil.isEmpty(queryIds)){\r\n queryIds=\"\'\'\";\r\n }\r\n if(ObjectUtil.isNotEmpty(params)){\r\n parameter.params=parameter.params+\" and subscriber_id in (\"+queryIds+\")\";\r\n }else{\r\n parameter.params=\"subscriber_id in (\"+queryIds+\")\";\r\n }\r\n}\r\n\r\n/**\r\n * 接口sql相关内容整理 通过freemarker模板生成最后执行语句\r\n */\r\nvar q = \"{\\\"query\\\":\\\"SELECT subscriber_id AS subscriberId, anyLast(imei) AS imei, anyLast(imsi) AS imsi, anyLast(phone_number) AS phoneNumber, anyLast(apn) AS apn,anyLast(cell_id) AS cellId,anyLast(cell_type) AS cellType, groupUniqArray(data_source) AS dataSource, COUNT(*) AS hitCount,anyLast(subscriber_longitude) as longitude,anyLast(subscriber_latitude) as latitude FROM location_subscriber where stat_time >= ${startTime} and stat_time < ${endTime} <#if params?default(\\\'\\\')?trim? length gt 0> and ${params} </#if> GROUP BY subscriber_id ORDER BY hitCount DESC,subscriber_id <#if pageSize?default(\\\'\\\')?trim? length gt 0&&pageNo?default(\\\'\\\')?trim? length gt 0> LIMIT ${pageNo},${pageSize}</#if>\\\",\\\"option\\\":\\\"real_time\\\",\\\"format\\\":\\\"json\\\"}\"\r\nvar result = freeMarkerUtil.processTemplateIntoString(\"v1LocationIntelligenceList\",q,parameter);\r\n\r\n\r\n\r\n/**\r\n * 调用galaxy接口获取结果信息\r\n */\r\nvar res = jsonUtil.toBean(result,HashMap.class);\r\nlog.info(result);\r\nvar galaxyRes = postGalaxyResult(res);\r\n/**\r\n * 处理galaxy返回的数据结果 将新结果返回前端界面\r\n */\r\nif(galaxyRes.data.length > 0 ){\r\n var sIds = [];\r\n for(i,j in galaxyRes.data){\r\n sIds.push(galaxyRes.data[i].subscriberId);\r\n }\r\n var subscriberIds = sIds.stream().map(s -> \"\'\" + s + \"\'\").collect(Collectors.joining(\", \"));\r\n var status = getStatus();\r\n var idSub = {};\r\n if(status.data.length > 0 ){\r\n for(i,j in status.data){\r\n idSub.put(status.data[i].subscriber_id,1);\r\n }\r\n }\r\n \r\n for(i,j in galaxyRes.data){\r\n if(idSub.get(galaxyRes.data[i].subscriberId)==1){\r\n galaxyRes.data[i].active=1;\r\n }else{\r\n galaxyRes.data[i].active=0;\r\n }\r\n if(isFollow.contains(galaxyRes.data[i].subscriberId)){\r\n galaxyRes.data[i].isFollowed=1;\r\n }else{\r\n galaxyRes.data[i].isFollowed=0;\r\n }\r\n galaxyRes.data[i].putAll(GeoUtil.reverseGeocode(galaxyRes.data[i].longitude,galaxyRes.data[i].latitude));\r\n }\r\n}\r\n\r\nreturn galaxyRes;');
INSERT INTO `magic_api_file` VALUES ('/api/v1/locationIntelligence/Location列表用户总数.ms', '{\n \"properties\" : { },\n \"id\" : \"copy1728972275935d91089\",\n \"script\" : null,\n \"groupId\" : \"1b2392073eee441f9c7a12a815bf3eae\",\n \"name\" : \"Location列表用户总数\",\n \"createTime\" : null,\n \"updateTime\" : 1728973114633,\n \"lock\" : null,\n \"createBy\" : \"admin\",\n \"updateBy\" : null,\n \"path\" : \"/list/count\",\n \"method\" : \"GET\",\n \"parameters\" : [ {\n \"name\" : \"startTime\",\n \"value\" : \"1\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"Long\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"endTime\",\n \"value\" : \"99999999999\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"Long\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"params\",\n \"value\" : \"\",\n \"description\" : null,\n \"required\" : false,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"isFollowed\",\n \"value\" : \"0\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"Integer\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n } ],\n \"options\" : [ ],\n \"requestBody\" : \"\",\n \"headers\" : [ {\n \"name\" : \"cn-Authorization\",\n \"value\" : \"1a653ea0-d39b-4246-94b0-1ba95db4b6a7\",\n \"description\" : null,\n \"required\" : true,\n \"dataType\" : \"String\",\n \"type\" : null,\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n } ],\n \"paths\" : [ ],\n \"responseBody\" : \"{\\n \\\"status\\\": 200,\\n \\\"message\\\": \\\"OK\\\",\\n \\\"request_id\\\": \\\"9f4e1c49-8764-4ea2-9d2d-2c3521a3aa98\\\",\\n \\\"success\\\": true,\\n \\\"code\\\": \\\"20000666\\\",\\n \\\"job\\\": null,\\n \\\"output_mode\\\": \\\"json\\\",\\n \\\"statistics\\\": {\\n \\\"elapsed\\\": 89,\\n \\\"rows_read\\\": 30687480,\\n \\\"bytes_read\\\": 981999360,\\n \\\"result_bytes\\\": 16040,\\n \\\"result_rows\\\": 1003\\n },\\n \\\"meta\\\": null,\\n \\\"data\\\": [\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30686\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 53\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30686\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 96\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30686\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30686\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 21\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30686\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30686\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30686\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30687\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n },\\n {\\n \\\"count\\\": 30688\\n }\\n ],\\n \\\"originalUrl\\\": \\\"SELECT count(*) as count FROM location_subscriber where stat_time >= 1 and stat_time < 99999999999 GROUP BY subscriber_id\\\"\\n}\",\n \"description\" : null,\n \"requestBodyDefinition\" : null,\n \"responseBodyDefinition\" : null\n}\r\n================================\r\nimport cn.hutool.core.util.ObjectUtil;\r\nimport cn.hutool.core.util.StrUtil;\r\nimport net.geedge.common.utils.GeoUtil;\r\nimport net.geedge.common.utils.FreeMarkerUtil as freeMarkerUtil;\r\nimport net.geedge.common.utils.JSONUtil as jsonUtil;\r\nimport net.geedge.common.utils.R as R;\r\nimport net.geedge.modules.sys.shiro.ShiroUtils;\r\nimport java.util.stream.Collectors;\r\nimport \'@/pre/timeHandleNone\' as timeHandle;\r\nimport \'@/post/object\' as postHandle;\r\nimport \'@/public/postGalaxyResult\' as postGalaxyResult;\r\nimport \'@/pre/pageFieldsHandle\' as pageHandle;\r\nimport \'@get:/v1/locationIntelligence/followed/status\' as getStatus;\r\n/**\r\n * 入参整理 包括调用公共函数\r\n */\r\nvar parameter={\r\n \"startTime\":startTime,\r\n \"endTime\":endTime,\r\n \"params\":params,\r\n \"isFollowed\":isFollowed\r\n}\r\ntimeHandle(parameter);\r\npageHandle(parameter);\r\n\r\n/**\r\n * 查询所有关注的用户信息\r\n */\r\nvar userId = ShiroUtils.getUserId();\r\nvar followSubs = new ArrayList();\r\nvar sql = \"\"\"\r\n select subscriber_id from user_subscriber where user_id = #{userId}\r\n\"\"\"\r\nfollowSubs = db.select(sql);\r\nvar isFollow = new ArrayList();\r\nif(followSubs !=null && followSubs.size()>0){\r\n for(i,j in followSubs){\r\n isFollow.add(followSubs[i].subscriber_id);\r\n }\r\n}\r\nvar queryIds = isFollow.stream().map(s -> \"\'\" + s + \"\'\").collect(Collectors.joining(\", \"));\r\nif(ObjectUtil.isNotEmpty(isFollowed) && isFollowed == 1){\r\n if(ObjectUtil.isEmpty(queryIds)){\r\n queryIds=\"\'\'\";\r\n }\r\n if(ObjectUtil.isNotEmpty(params)){\r\n parameter.params=parameter.params+\" and subscriber_id in (\"+queryIds+\")\";\r\n }else{\r\n parameter.params=\"subscriber_id in (\"+queryIds+\")\";\r\n }\r\n}\r\n\r\n/**\r\n * 接口sql相关内容整理 通过freemarker模板生成最后执行语句\r\n */\r\nvar q = \"{\\\"query\\\":\\\"SELECT COUNT(DISTINCT(subscriber_id)) AS count FROM location_subscriber where stat_time >= ${startTime} and stat_time < ${endTime} <#if params?default(\\\'\\\')?trim? length gt 0> and ${params} </#if> \\\",\\\"option\\\":\\\"real_time\\\",\\\"format\\\":\\\"json\\\"}\"\r\nvar result = freeMarkerUtil.processTemplateIntoString(\"v1LocationIntelligenceListCount\",q,parameter);\r\n\r\n\r\n\r\n/**\r\n * 调用galaxy接口获取结果信息\r\n */\r\nvar res = jsonUtil.toBean(result,HashMap.class);\r\nvar galaxyRes = postGalaxyResult(res);\r\n\r\nreturn galaxyRes;');
INSERT INTO `magic_api_file` VALUES ('/api/v1/locationIntelligence/Location地图.ms', '{\r\n \"properties\" : { },\r\n \"id\" : \"29fd42404bd741b2ad6b479f0ae7672c\",\r\n \"script\" : null,\r\n \"groupId\" : \"1b2392073eee441f9c7a12a815bf3eae\",\r\n \"name\" : \"Location地图\",\r\n \"createTime\" : null,\r\n \"updateTime\" : 1709695144718,\r\n \"lock\" : null,\r\n \"createBy\" : null,\r\n \"updateBy\" : \"admin\",\r\n \"path\" : \"/map\",\r\n \"method\" : \"GET\",\r\n \"parameters\" : [ {\r\n \"name\" : \"minLongitude\",\r\n \"value\" : \"115.8478497314444\",\r\n \"description\" : null,\r\n \"required\" : true,\r\n \"dataType\" : \"String\",\r\n \"type\" : null,\r\n \"defaultValue\" : null,\r\n \"validateType\" : null,\r\n \"error\" : null,\r\n \"expression\" : null,\r\n \"children\" : null\r\n }, {\r\n \"name\" : \"maxLongitude\",\r\n \"value\" : \"116.91215026855423\",\r\n \"description\" : null,\r\n \"required\" : true,\r\n \"dataType\" : \"String\",\r\n \"type\" : null,\r\n \"defaultValue\" : null,\r\n \"validateType\" : null,\r\n \"error\" : null,\r\n \"expression\" : null,\r\n \"children\" : null\r\n }, {\r\n \"name\" : \"minLatitude\",\r\n \"value\" : \"39.702440597447605\",\r\n \"description\" : null,\r\n \"required\" : true,\r\n \"dataType\" : \"String\",\r\n \"type\" : null,\r\n \"defaultValue\" : null,\r\n \"validateType\" : null,\r\n \"error\" : null,\r\n \"expression\" : null,\r\n \"children\" : null\r\n }, {\r\n \"name\" : \"maxLatitude\",\r\n \"value\" : \"40.09699147131096\",\r\n \"description\" : null,\r\n \"required\" : true,\r\n \"dataType\" : \"String\",\r\n \"type\" : null,\r\n \"defaultValue\" : null,\r\n \"validateType\" : null,\r\n \"error\" : null,\r\n \"expression\" : null,\r\n \"children\" : null\r\n }, {\r\n \"name\" : \"startTime\",\r\n \"value\" : \"1708940500\",\r\n \"description\" : null,\r\n \"required\" : true,\r\n \"dataType\" : \"Long\",\r\n \"type\" : null,\r\n \"defaultValue\" : null,\r\n \"validateType\" : null,\r\n \"error\" : null,\r\n \"expression\" : null,\r\n \"children\" : null\r\n }, {\r\n \"name\" : \"endTime\",\r\n \"value\" : \"1709113300\",\r\n \"description\" : null,\r\n \"required\" : true,\r\n \"dataType\" : \"Long\",\r\n \"type\" : null,\r\n \"defaultValue\" : null,\r\n \"validateType\" : null,\r\n \"error\" : null,\r\n \"expression\" : null,\r\n \"children\" : null\r\n }, {\r\n \"name\" : \"level\",\r\n \"value\" : null,\r\n \"description\" : null,\r\n \"required\" : true,\r\n \"dataType\" : \"Integer\",\r\n \"type\" : null,\r\n \"defaultValue\" : null,\r\n \"validateType\" : null,\r\n \"error\" : null,\r\n \"expression\" : null,\r\n \"children\" : null\r\n } ],\r\n \"options\" : [ ],\r\n \"requestBody\" : \"\",\r\n \"headers\" : [ {\r\n \"name\" : \"cn-Authorization\",\r\n \"value\" : \"1a653ea0-d39b-4246-94b0-1ba95db4b6a7\",\r\n \"description\" : null,\r\n \"required\" : true,\r\n \"dataType\" : \"String\",\r\n \"type\" : null,\r\n \"defaultValue\" : null,\r\n \"validateType\" : null,\r\n \"error\" : null,\r\n \"expression\" : null,\r\n \"children\" : null\r\n } ],\r\n \"paths\" : [ ],\r\n \"responseBody\" : \"{\\n \\\"status\\\": 200,\\n \\\"message\\\": \\\"OK\\\",\\n \\\"request_id\\\": \\\"65df06ca4ac1746faa7d8673a6c978f3\\\",\\n \\\"success\\\": true,\\n \\\"code\\\": \\\"20000666\\\",\\n \\\"job\\\": null,\\n \\\"formatType\\\": \\\"json\\\",\\n \\\"statistics\\\": {\\n \\\"elapsed\\\": 2,\\n \\\"rows_read\\\": 15201,\\n \\\"bytes_read\\\": 1016218,\\n \\\"result_bytes\\\": 1351,\\n \\\"result_rows\\\": 23\\n },\\n \\\"meta\\\": [\\n {\\n \\\"name\\\": \\\"hexId\\\",\\n \\\"type\\\": \\\"string\\\",\\n \\\"category\\\": \\\"Dimension\\\"\\n },\\n {\\n \\\"name\\\": \\\"number\\\",\\n \\\"type\\\": \\\"long\\\",\\n \\\"category\\\": \\\"Metric\\\"\\n },\\n {\\n \\\"name\\\": \\\"hitCount\\\",\\n \\\"type\\\": \\\"long\\\",\\n \\\"category\\\": \\\"Metric\\\"\\n }\\n ],\\n \\\"data\\\": [\\n {\\n \\\"hexId\\\": \\\"8931aa42cb7ffff\\\",\\n \\\"number\\\": \\\"10\\\",\\n \\\"hitCount\\\": \\\"89\\\"\\n },\\n {\\n \\\"hexId\\\": \\\"8931aa42ccfffff\\\",\\n \\\"number\\\": \\\"11\\\",\\n \\\"hitCount\\\": \\\"97\\\"\\n },\\n {\\n \\\"hexId\\\": \\\"8931aa4284bffff\\\",\\n \\\"number\\\": \\\"13\\\",\\n \\\"hitCount\\\": \\\"2648\\\"\\n },\\n {\\n \\\"hexId\\\": \\\"8931aa55267ffff\\\",\\n \\\"number\\\": \\\"13\\\",\\n \\\"hitCount\\\": \\\"317\\\"\\n },\\n {\\n \\\"hexId\\\": \\\"8931aa552cfffff\\\",\\n \\\"number\\\": \\\"13\\\",\\n \\\"hitCount\\\": \\\"100\\\"\\n },\\n {\\n \\\"hexId\\\": \\\"8931aa5534bffff\\\",\\n \\\"number\\\": \\\"9\\\",\\n \\\"hitCount\\\": \\\"85\\\"\\n },\\n {\\n \\\"hexId\\\": \\\"8931aa5521bffff\\\",\\n \\\"number\\\": \\\"12\\\",\\n \\\"hitCount\\\": \\\"104\\\"\\n },\\n {\\n \\\"hexId\\\": \\\"8931aa42e2fffff\\\",\\n \\\"number\\\": \\\"12\\\",\\n \\\"hitCount\\\": \\\"2658\\\"\\n },\\n {\\n \\\"hexId\\\": \\\"8931aa42e33ffff\\\",\\n \\\"number\\\": \\\"10\\\",\\n \\\"hitCount\\\": \\\"90\\\"\\n },\\n {\\n \\\"hexId\\\": \\\"8931aa42ab7ffff\\\",\\n \\\"number\\\": \\\"12\\\",\\n \\\"hitCount\\\": \\\"2570\\\"\\n },\\n {\\n \\\"hexId\\\": \\\"8931aa42857ffff\\\",\\n \\\"number\\\": \\\"12\\\",\\n \\\"hitCount\\\": \\\"2577\\\"\\n },\\n {\\n \\\"hexId\\\": \\\"8931aa55263ffff\\\",\\n \\\"number\\\": \\\"11\\\",\\n \\\"hitCount\\\": \\\"99\\\"\\n },\\n {\\n \\\"hexId\\\": \\\"8931aa42e8bffff\\\",\\n \\\"number\\\": \\\"10\\\",\\n \\\"hitCount\\\": \\\"107\\\"\\n },\\n {\\n \\\"hexId\\\": \\\"8931aa425a3ffff\\\",\\n \\\"number\\\": \\\"11\\\",\\n \\\"hitCount\\\": \\\"96\\\"\\n },\\n {\\n \\\"hexId\\\": \\\"8931aa42e0fffff\\\",\\n \\\"number\\\": \\\"12\\\",\\n \\\"hitCount\\\": \\\"92\\\"\\n },\\n {\\n \\\"hexId\\\": \\\"8931aa42c93ffff\\\",\\n \\\"number\\\": \\\"10\\\",\\n \\\"hitCount\\\": \\\"109\\\"\\n },\\n {\\n \\\"hexId\\\": \\\"8931aa42e17ffff\\\",\\n \\\"number\\\": \\\"11\\\",\\n \\\"hitCount\\\": \\\"102\\\"\\n },\\n {\\n \\\"hexId\\\": \\\"8931aa55273ffff\\\",\\n \\\"number\\\": \\\"10\\\",\\n \\\"hitCount\\\": \\\"99\\\"\\n },\\n {\\n \\\"hexId\\\": \\\"8931aa4212fffff\\\",\\n \\\"number\\\": \\\"11\\\",\\n \\\"hitCount\\\": \\\"81\\\"\\n },\\n {\\n \\\"hexId\\\": \\\"8931aa552dbffff\\\",\\n \\\"number\\\": \\\"10\\\",\\n \\\"hitCount\\\": \\\"79\\\"\\n },\\n {\\n \\\"hexId\\\": \\\"8931aa42c13ffff\\\",\\n \\\"number\\\": \\\"12\\\",\\n \\\"hitCount\\\": \\\"82\\\"\\n },\\n {\\n \\\"hexId\\\": \\\"8931aa42ddbffff\\\",\\n \\\"number\\\": \\\"12\\\",\\n \\\"hitCount\\\": \\\"100\\\"\\n },\\n {\\n \\\"hexId\\\": \\\"8931aa42e27ffff\\\",\\n \\\"number\\\": \\\"13\\\",\\n \\\"hitCount\\\": \\\"2633\\\"\\n }\\n ],\\n \\\"originalUrl\\\": \\\"SELECT first_location AS hexId,COUNT(DISTINCT(subscriber_id)) AS number,COUNT(*) AS hitCount FROM location_subscriber WHERE stat_time >= 1708940500 AND stat_time < 1709113300 AND subscriber_longitude >= 115.8478497314444 AND subscriber_longitude <= 116.91215026855423 AND subscriber_latitude >= 39.702440597447605 AND subscriber_latitude <= 40.09699147131096 GROUP BY first_location\\\"\\n}\",\r\n \"description\" : null,\r\n \"requestBodyDefinition\" : null,\r\n \"responseBodyDefinition\" : null\r\n}\r\n================================\r\nimport net.geedge.common.utils.FreeMarkerUtil as freeMarkerUtil;\r\nimport net.geedge.common.utils.JSONUtil as jsonUtil;\r\nimport net.geedge.common.utils.R as R;\r\nimport \'@/pre/timeHandleNone\' as timeHandle;\r\nimport \'@/post/object\' as postHandle;\r\nimport \'@/public/postGalaxyResult\' as postGalaxyResult;\r\n/**\r\n * 入参整理 包括调用公共函数\r\n */\r\nvar parameter={\r\n \"minLongitude\":minLongitude,\r\n \"maxLongitude\":maxLongitude,\r\n \"minLatitude\":minLatitude,\r\n \"maxLatitude\":maxLatitude,\r\n \"startTime\":startTime,\r\n \"endTime\":endTime,\r\n \"level\":level\r\n}\r\ntimeHandle(parameter);\r\n/**\r\n * 接口sql相关内容整理 通过freemarker模板生成最后执行语句\r\n */\r\nvar q = \"{\\r\\n \\\"query\\\": \\\"SELECT <#if level?default(\'\')?trim? length gt 0 && level == 2> second_location <#elseif level?default(\'\')?trim? length gt 0 && level == 3> third_location <#else> first_location </#if> AS hexId,COUNT(DISTINCT(subscriber_id)) AS number,COUNT(*) AS hitCount FROM location_subscriber WHERE stat_time >= ${startTime} AND stat_time < ${endTime} AND subscriber_longitude >= ${minLongitude} AND subscriber_longitude <= ${maxLongitude} AND subscriber_latitude >= ${minLatitude} AND subscriber_latitude <= ${maxLatitude} GROUP BY <#if level?default(\'\')?trim? length gt 0 && level == 2> second_location <#elseif level?default(\'\')?trim? length gt 0 && level == 3> third_location <#else> first_location </#if>\\\",\\r\\n \\\"option\\\": \\\"real_time\\\",\\r\\n \\\"format\\\": \\\"json\\\"\\r\\n}\"\r\nvar result = freeMarkerUtil.processTemplateIntoString(\"v1LocationIntelligenceMap\",q,parameter);\r\n\r\n/**\r\n * 调用galaxy接口获取结果信息\r\n */\r\nvar res = jsonUtil.toBean(result,HashMap.class);\r\nvar galaxyRes = postGalaxyResult(res);\r\n/**\r\n * 处理galaxy返回的数据结果 将新结果返回前端界面\r\n */\r\ngalaxyRes.msg=\'success\';\r\nreturn galaxyRes;');
INSERT INTO `magic_api_file` VALUES ('/api/v1/locationIntelligence/Location活跃用户总数.ms', '{\r\n \"properties\" : { },\r\n \"id\" : \"4ae2ab16e9f742ab974113664612ca81\",\r\n \"script\" : null,\r\n \"groupId\" : \"1b2392073eee441f9c7a12a815bf3eae\",\r\n \"name\" : \"Location活跃用户总数\",\r\n \"createTime\" : null,\r\n \"updateTime\" : 1709171378841,\r\n \"lock\" : null,\r\n \"createBy\" : null,\r\n \"updateBy\" : \"admin\",\r\n \"path\" : \"/active/count\",\r\n \"method\" : \"GET\",\r\n \"parameters\" : [ {\r\n \"name\" : \"startTime\",\r\n \"value\" : null,\r\n \"description\" : null,\r\n \"required\" : true,\r\n \"dataType\" : \"Long\",\r\n \"type\" : null,\r\n \"defaultValue\" : null,\r\n \"validateType\" : null,\r\n \"error\" : null,\r\n \"expression\" : null,\r\n \"children\" : null\r\n }, {\r\n \"name\" : \"endTime\",\r\n \"value\" : null,\r\n \"description\" : null,\r\n \"required\" : true,\r\n \"dataType\" : \"Long\",\r\n \"type\" : null,\r\n \"defaultValue\" : null,\r\n \"validateType\" : null,\r\n \"error\" : null,\r\n \"expression\" : null,\r\n \"children\" : null\r\n }, {\r\n \"name\" : \"cycle\",\r\n \"value\" : null,\r\n \"description\" : null,\r\n \"required\" : false,\r\n \"dataType\" : \"Integer\",\r\n \"type\" : null,\r\n \"defaultValue\" : null,\r\n \"validateType\" : null,\r\n \"error\" : null,\r\n \"expression\" : null,\r\n \"children\" : null\r\n } ],\r\n \"options\" : [ ],\r\n \"requestBody\" : \"\",\r\n \"headers\" : [ ],\r\n \"paths\" : [ ],\r\n \"responseBody\" : null,\r\n \"description\" : null,\r\n \"requestBodyDefinition\" : null,\r\n \"responseBodyDefinition\" : null\r\n}\r\n================================\r\nimport net.geedge.common.utils.FreeMarkerUtil as freeMarkerUtil;\r\nimport net.geedge.common.utils.JSONUtil as jsonUtil;\r\nimport net.geedge.common.utils.R as R;\r\nimport \'@/pre/timeHandleNone\' as timeHandle;\r\nimport \'@/post/object\' as postHandle;\r\nimport \'@/public/postGalaxyResult\' as postGalaxyResult;\r\n/**\r\n * 入参整理 包括调用公共函数\r\n */\r\nvar parameter={\r\n \"startTime\":startTime,\r\n \"endTime\":endTime,\r\n \"cycle\":cycle\r\n}\r\ntimeHandle(parameter);\r\n/**\r\n * 接口sql相关内容整理 通过freemarker模板生成最后执行语句\r\n */\r\nvar q = \"{\\r\\n \\\"query\\\": \\\"SELECT COUNT(DISTINCT(subscriber_id)) AS total FROM location_subscriber WHERE <#if cycle?default(\'\')?trim? length gt 0 && cycle == 1> stat_time >= ${startTime} - ${timeDiff} and stat_time < ${endTime} - ${timeDiff} <#else> stat_time >= ${startTime} AND stat_time < ${endTime} </#if>\\\",\\r\\n \\\"option\\\": \\\"real_time\\\",\\r\\n \\\"format\\\": \\\"json\\\"\\r\\n}\"\r\nvar result = freeMarkerUtil.processTemplateIntoString(\"v1LocationIntelligenceActiveCount\",q,parameter);\r\n\r\n/**\r\n * 调用galaxy接口获取结果信息\r\n */\r\nvar res = jsonUtil.toBean(result,HashMap.class);\r\nvar galaxyRes = postGalaxyResult(res);\r\n/**\r\n * 处理galaxy返回的数据结果 将新结果返回前端界面\r\n */\r\nif(galaxyRes.success){\r\n if(galaxyRes.data.length > 0){\r\n data = galaxyRes.data[0];\r\n }\r\n}\r\n\r\nreturn R.ok(data).put(\"originalUrl\",galaxyRes.originalUrl).put(\"status\",200);');
@@ -464,3 +464,4 @@ INSERT INTO `magic_api_file` VALUES ('/function/public/发送Galaxy请求.ms', '
INSERT INTO `magic_api_file` VALUES ('/function/public/发送GET请求.ms', '{\n \"properties\" : { },\n \"id\" : \"ba882184769c43d38cfc71780c4aa0e8\",\n \"script\" : null,\n \"groupId\" : \"673ae6470fae40f2af520bff187a0f96\",\n \"name\" : \"发送GET请求\",\n \"createTime\" : null,\n \"updateTime\" : 1703658906745,\n \"lock\" : null,\n \"createBy\" : null,\n \"updateBy\" : \"th\",\n \"path\" : \"/getGalaxyResult\",\n \"description\" : null,\n \"returnType\" : null,\n \"mappingPath\" : null,\n \"parameters\" : [ {\n \"name\" : \"parameter\",\n \"value\" : null,\n \"description\" : null,\n \"required\" : false,\n \"dataType\" : \"String\",\n \"type\" : \"java.lang.Object\",\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n } ]\n}\r\n================================\r\n/**import http\r\n\r\nvar config = \"\"\"\r\nselect cvalue from sys_config where ckey = \'galaxy_url\'\r\n\"\"\"\r\nvar json = db.select(config);\r\nvar url = json.cvalue+\"sql/\";\r\nSystem.out.println(parameter);\r\nvar httpRequest =http.connect(url).param(parameter);\r\nvar galaxyResult = httpRequest.get().getBody();\r\ngalaxyResult.originalUrl = httpRequest.url;\r\n\r\nreturn galaxyResult**/\r\n\r\n//已废弃');
INSERT INTO `magic_api_file` VALUES ('/function/public/发送POST请求.ms', '{\r\n \"properties\" : { },\r\n \"id\" : \"4c766cb0c51c4372bddd02a8f4c96978\",\r\n \"script\" : null,\r\n \"groupId\" : \"673ae6470fae40f2af520bff187a0f96\",\r\n \"name\" : \"发送POST请求\",\r\n \"createTime\" : 1687939346240,\r\n \"updateTime\" : 1713259644319,\r\n \"lock\" : null,\r\n \"createBy\" : \"ljy\",\r\n \"updateBy\" : null,\r\n \"path\" : \"/postGalaxyResult\",\r\n \"description\" : null,\r\n \"returnType\" : null,\r\n \"mappingPath\" : null,\r\n \"parameters\" : [ {\r\n \"name\" : \"parameter\",\r\n \"value\" : null,\r\n \"description\" : null,\r\n \"required\" : false,\r\n \"dataType\" : \"String\",\r\n \"type\" : null,\r\n \"defaultValue\" : null,\r\n \"validateType\" : null,\r\n \"error\" : null,\r\n \"expression\" : null,\r\n \"children\" : null\r\n } ]\r\n}\r\n================================\r\nimport http\r\nimport log\r\n\r\nvar config = \"\"\"\r\nselect cvalue from sys_config where ckey = \'galaxy_url\'\r\n\"\"\"\r\nvar json = db.select(config);\r\nvar url = json.cvalue+\"v1/query/sql\";\r\nparameter.statement=parameter.query;\r\nparameter.execution_mode=\"oneshot\";\r\nlog.info(parameter.statement);\r\nvar httpRequest =http.connect(url).body(parameter);\r\nvar galaxyResult = httpRequest.post().getBody();\r\ngalaxyResult.originalUrl = parameter.query;\r\n\r\nreturn galaxyResult');
INSERT INTO `magic_api_file` VALUES ('/function/public/获取分位数.ms', '{\n \"properties\" : { },\n \"id\" : \"a8f4fd176b264f87a126ccec2c01b48c\",\n \"script\" : null,\n \"groupId\" : \"673ae6470fae40f2af520bff187a0f96\",\n \"name\" : \"获取分位数\",\n \"createTime\" : 1672897818983,\n \"updateTime\" : 1673851116387,\n \"lock\" : null,\n \"createBy\" : \"admin\",\n \"updateBy\" : \"ljy\",\n \"path\" : \"/getPercentile\",\n \"description\" : null,\n \"returnType\" : null,\n \"mappingPath\" : null,\n \"parameters\" : [ {\n \"name\" : \"list\",\n \"value\" : null,\n \"description\" : null,\n \"required\" : false,\n \"dataType\" : \"String\",\n \"type\" : \"java.util.Collection\",\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n }, {\n \"name\" : \"p\",\n \"value\" : null,\n \"description\" : null,\n \"required\" : false,\n \"dataType\" : \"String\",\n \"type\" : \"java.lang.Number\",\n \"defaultValue\" : null,\n \"validateType\" : null,\n \"error\" : null,\n \"expression\" : null,\n \"children\" : null\n } ]\n}\r\n================================\r\nvar n = list.length;\r\nlist = list.sort((a, b) => {\r\n if (a > b) {\r\n return 1;\r\n } else if(a==b){\r\n return 0;\r\n } else {\r\n return -1;\r\n }\r\n});\r\nvar px = p*(n-1);\r\nvar i = Math.floor(px);\r\nvar g = px - i;\r\nif(g==0){\r\n return list[i];\r\n}\r\nreturn (1-g)*list[i]+g*list[i+1];\r\n');
+