feat: ASW-6 新增 JOB 相关接口

This commit is contained in:
shizhendong
2024-07-10 18:05:23 +08:00
parent e85811b805
commit 9e5709d1f1
43 changed files with 1037 additions and 2 deletions

View File

@@ -51,7 +51,7 @@ server:
mime-types: text/xml,text/plain,text/css,text/javascript,application/javascript,application/json,application/xml
mybatis-plus:
mapper-locations: classpath:db/mapper/*Mapper.xml
mapper-locations: classpath:db/mapper/**/*Mapper.xml
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:

View File

@@ -0,0 +1,110 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="net.geedge.asw.module.runner.dao.JobDao">
<resultMap type="net.geedge.asw.module.runner.entity.JobEntity" id="jobResultMap">
<id property="id" column="id"/>
<result property="id" column="id"/>
<result property="playbookId" column="playbook_id"/>
<result property="packageId" column="package_id"/>
<result property="runnerId" column="runner_id"/>
<result property="scheduleId" column="schedule_id"/>
<result property="signatureIds" column="signature_ids"/>
<result property="tags" column="tags"/>
<result property="startTimestamp" column="start_timestamp"/>
<result property="endTimestamp" column="end_timestamp"/>
<result property="status" column="status"/>
<result property="pcapId" column="pcap_id"/>
<result property="logPath" column="log_path"/>
<result property="createTimestamp" column="create_timestamp"/>
<result property="updateTimestamp" column="update_timestamp"/>
<result property="createUserId" column="create_user_id"/>
<result property="updateUserId" column="update_user_id"/>
<association property="pkg" columnPrefix="pkg_" javaType="net.geedge.asw.module.app.entity.PackageEntity">
<id property="id" column="id"/>
<result property="platform" column="platform"/>
<result property="version" column="version"/>
<result property="logo" column="logo"/>
</association>
<association property="application" columnPrefix="app_"
javaType="net.geedge.asw.module.app.entity.ApplicationEntity">
<id property="id" column="id"/>
<result property="name" column="name"/>
</association>
<association property="runner" columnPrefix="run_" javaType="net.geedge.asw.module.runner.entity.RunnerEntity">
<id property="id" column="id"/>
<result property="name" column="name"/>
</association>
<association property="playbook" columnPrefix="pb_" javaType="net.geedge.asw.module.runner.entity.PlaybookEntity">
<id property="id" column="id"/>
<result property="name" column="name"/>
</association>
</resultMap>
<select id="queryList" resultMap="jobResultMap">
SELECT
job.*,
pkg.id AS pkg_id,
pkg.platform AS pkg_platform,
pkg.version AS pkg_version,
pkg.logo AS pkg_logo,
app.id AS app_id,
app.name AS app_name,
run.id AS run_id,
run.name AS run_name,
pb.id AS pb_id,
pb.name AS pb_name
FROM
job job
LEFT JOIN runner run ON job.runner_id = run.id
LEFT JOIN package pkg ON job.package_id = pkg.id
LEFT JOIN playbook pb ON job.playbook_id = pb.id
LEFT JOIN application app ON pb.app_id = app.id
<where>
<if test="params.ids != null and params.ids != ''">
job.id in
<foreach item="id" collection="params.ids.split(',')" separator="," open="(" close=")">#{id}</foreach>
</if>
<if test="params.appIds != null and params.appIds != ''">
AND app.id in
<foreach item="id" collection="params.appIds.split(',')" separator="," open="(" close=")">#{id}</foreach>
</if>
<if test="params.packageIds != null and params.packageIds != ''">
AND pkg.id in
<foreach item="id" collection="params.packageIds.split(',')" separator="," open="(" close=")">#{id}</foreach>
</if>
<if test="params.runnerIds != null and params.runnerIds != ''">
AND run.id in
<foreach item="id" collection="params.runnerIds.split(',')" separator="," open="(" close=")">#{id}</foreach>
</if>
<if test="params.playbooks != null and params.playbooks != ''">
AND pb.id in
<foreach item="id" collection="params.playbooks.split(',')" separator="," open="(" close=")">#{id}</foreach>
</if>
<if test="params.signatureIds != null and params.signatureIds != ''">
AND <foreach item="item" collection="params.signatureIds.split(',')" separator="OR" index="" open="(" close=")">
locate(#{item}, job.signature_ids)
</foreach>
</if>
</where>
GROUP BY
job.id
</select>
</mapper>

View File

@@ -39,6 +39,14 @@ INSERT INTO `sys_i18n`(`id`, `name`, `code`, `value`, `lang`, `remark`, `update_
INSERT INTO `sys_i18n`(`id`, `name`, `code`, `value`, `lang`, `remark`, `update_user_id`, `update_timestamp`) VALUES (35, '100008', 'SYS_RECORD_NOT_FOUND', '找不到记录', 'zh', '', 'admin', 1719280800000);
INSERT INTO `sys_i18n`(`id`, `name`, `code`, `value`, `lang`, `remark`, `update_user_id`, `update_timestamp`) VALUES (37, '200', 'SUCCESS', 'success', 'en', '', 'admin', 1719280800000);
INSERT INTO `sys_i18n`(`id`, `name`, `code`, `value`, `lang`, `remark`, `update_user_id`, `update_timestamp`) VALUES (39, '200', 'SUCCESS', '成功', 'zh', '', 'admin', 1719280800000);
INSERT INTO `sys_i18n`(`id`, `name`, `code`, `value`, `lang`, `remark`, `update_user_id`, `update_timestamp`) VALUES (41, '201001', 'APP_ID_CANNOT_EMPTY', 'application id cannot be empty', 'en', '', 'admin', 1719280800000);
INSERT INTO `sys_i18n`(`id`, `name`, `code`, `value`, `lang`, `remark`, `update_user_id`, `update_timestamp`) VALUES (43, '201001', 'APP_ID_CANNOT_EMPTY', '应用ID不能为空', 'zh', '', 'admin', 1719280800000);
INSERT INTO `sys_i18n`(`id`, `name`, `code`, `value`, `lang`, `remark`, `update_user_id`, `update_timestamp`) VALUES (45, '202001', 'PACKAGE_ID_CANNOT_EMPTY', 'package id cannot be empty', 'en', '', 'admin', 1719280800000);
INSERT INTO `sys_i18n`(`id`, `name`, `code`, `value`, `lang`, `remark`, `update_user_id`, `update_timestamp`) VALUES (47, '202001', 'PACKAGE_ID_CANNOT_EMPTY', '安装包ID不能为空', 'zh', '', 'admin', 1719280800000);
INSERT INTO `sys_i18n`(`id`, `name`, `code`, `value`, `lang`, `remark`, `update_user_id`, `update_timestamp`) VALUES (49, '301001', 'RUNNER_ID_CANNOT_EMPTY', 'runner id cannot be empty', 'en', '', 'admin', 1719280800000);
INSERT INTO `sys_i18n`(`id`, `name`, `code`, `value`, `lang`, `remark`, `update_user_id`, `update_timestamp`) VALUES (51, '301001', 'RUNNER_ID_CANNOT_EMPTY', 'Runner ID不能为空', 'zh', '', 'admin', 1719280800000);
INSERT INTO `sys_i18n`(`id`, `name`, `code`, `value`, `lang`, `remark`, `update_user_id`, `update_timestamp`) VALUES (53, '302001', 'PLAYBOOK_ID_CANNOT_EMPTY', 'playbook id cannot be empty', 'en', '', 'admin', 1719280800000);
INSERT INTO `sys_i18n`(`id`, `name`, `code`, `value`, `lang`, `remark`, `update_user_id`, `update_timestamp`) VALUES (55, '302001', 'PLAYBOOK_ID_CANNOT_EMPTY', '任务信息ID不能为空', 'zh', '', 'admin', 1719280800000);
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -132,4 +132,165 @@ CREATE TABLE `sys_file_content` (
`id` varchar(64) NOT NULL,
`content` longblob NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/**
* 新增 job 表
*/
DROP TABLE IF EXISTS `job`;
CREATE TABLE `job` (
`id` varchar(64) NOT NULL COMMENT '主键',
`playbook_id` varchar(64) NOT NULL COMMENT 'Playbook ID',
`package_id` varchar(64) NOT NULL COMMENT 'Package ID',
`runner_id` varchar(64) NOT NULL COMMENT 'Runner ID',
`schedule_id` varchar(64) NOT NULL COMMENT '定时器ID',
`signature_ids` text NOT NULL COMMENT '特征ID,多个逗号分隔',
`tags` varchar(256) NOT NULL DEFAULT '' COMMENT '标签; 默认:"";多个用逗号分隔;例kz,vpn,android',
`start_timestamp` bigint(20) NOT NULL COMMENT '开始时间戳',
`end_timestamp` bigint(20) NOT NULL COMMENT '结束时间戳',
`status` varchar(64) NOT NULL COMMENT '状态; 可选值: created,pending,running,passed,failed,cancel',
`pcap_id` varchar(64) NOT NULL COMMENT 'PCAP ID',
`log_path` varchar(256) NOT NULL COMMENT '日志文件路径',
`create_timestamp` bigint(20) NOT NULL COMMENT '创建时间戳',
`update_timestamp` bigint(20) NOT NULL COMMENT '更新时间戳',
`create_user_id` varchar(64) NOT NULL COMMENT '创建人',
`update_user_id` varchar(64) NOT NULL COMMENT '更新人',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_playbook_id` (`playbook_id`) USING BTREE,
KEY `idx_package_id` (`package_id`) USING BTREE,
KEY `idx_runner_id` (`runner_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/**
* 新增 playbook 表
*/
DROP TABLE IF EXISTS `playbook`;
CREATE TABLE `playbook` (
`id` varchar(64) NOT NULL COMMENT '主键',
`name` varchar(256) NOT NULL COMMENT '名称',
`app_id` varchar(64) NOT NULL COMMENT '应用程序 ID',
`tags` varchar(256) NOT NULL DEFAULT '' COMMENT '标签',
`script` text NOT NULL COMMENT '脚本内容',
`op_version` bigint(20) NOT NULL COMMENT '更新版本号, 默认1;每次更新递增',
`create_timestamp` bigint(20) NOT NULL COMMENT '创建时间戳',
`update_timestamp` bigint(20) NOT NULL COMMENT '更新时间戳',
`create_user_id` varchar(64) NOT NULL COMMENT '创建人',
`update_user_id` varchar(64) NOT NULL COMMENT '更新人',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_name` (`name`) USING BTREE,
KEY `idx_app_id` (`app_id`) USING BTREE,
KEY `idx_op_version` (`op_version`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/**
* 新增 pcap 表
*/
DROP TABLE IF EXISTS `pcap`;
CREATE TABLE `pcap` (
`id` varchar(64) NOT NULL COMMENT '主键',
`tags` varchar(256) NOT NULL DEFAULT '' COMMENT '标签',
`description` text NOT NULL COMMENT '描述信息',
`path` varchar(64) NOT NULL COMMENT 'PCAP文件路径',
`create_timestamp` bigint(20) NOT NULL COMMENT '创建时间戳',
`create_user_id` varchar(64) NOT NULL COMMENT '创建人',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_tags` (`tags`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/**
* 新增 application 表
*/
DROP TABLE IF EXISTS `application`;
CREATE TABLE `application` (
`id` varchar(64) NOT NULL COMMENT '主键',
`name` varchar(256) NOT NULL COMMENT '应用名称',
`long_name` varchar(256) NOT NULL COMMENT '应用全称',
`properties` text NOT NULL COMMENT '应用数据',
`description` text NOT NULL COMMENT '描述信息',
`surrogates` text NOT NULL COMMENT '',
`create_timestamp` bigint(20) NOT NULL COMMENT '创建时间戳',
`update_timestamp` bigint(20) NOT NULL COMMENT '更新时间戳',
`create_user_id` varchar(64) NOT NULL COMMENT '创建人',
`update_user_id` varchar(64) NOT NULL COMMENT '更新人',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_name` (`name`) USING BTREE,
KEY `idx_long_name` (`long_name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/**
* 新增 package 表
*/
DROP TABLE IF EXISTS `package`;
CREATE TABLE `package` (
`id` varchar(64) NOT NULL COMMENT '主键',
`logo` varchar(512) NOT NULL COMMENT '图标,图标文件 url 地址',
`description` text NOT NULL COMMENT '描述信息',
`platform` varchar(256) NOT NULL COMMENT '操作系统; 可选值android,ios,windows,linux',
`version` varchar(256) NOT NULL COMMENT '安装包版本',
`identifier` varchar(256) NOT NULL COMMENT '唯一标识;androidpackage name,iosbundle id',
`create_timestamp` bigint(20) NOT NULL COMMENT '创建时间戳',
`update_timestamp` bigint(20) NOT NULL COMMENT '更新时间戳',
`create_user_id` varchar(64) NOT NULL COMMENT '创建人',
`update_user_id` varchar(64) NOT NULL COMMENT '更新人',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_version` (`version`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/**
* 新增 runner 表
*/
DROP TABLE IF EXISTS `runner`;
CREATE TABLE `runner` (
`id` varchar(64) NOT NULL COMMENT '主键',
`name` varchar(256) NOT NULL COMMENT '名称',
`tags` varchar(256) NOT NULL DEFAULT '' COMMENT '标签,多个逗号分隔',
`support_platforms` varchar(256) NOT NULL COMMENT '支持的平台; 可选值android,ios,windows; 多个逗号分隔; 例android,ios',
`share_flag` int(1) NOT NULL COMMENT '共享标识; 1共享 0不共享仅创建人可用',
`description` text NOT NULL COMMENT '描述信息',
`status` varchar(64) NOT NULL COMMENT '状态可选值online,offline',
`last_heartbeat_timestamp` bigint(20) NOT NULL COMMENT '最后心跳时间戳',
`create_timestamp` bigint(20) NOT NULL COMMENT '创建时间戳',
`update_timestamp` bigint(20) NOT NULL COMMENT '更新时间戳',
`create_user_id` varchar(64) NOT NULL COMMENT '创建人',
`update_user_id` varchar(64) NOT NULL COMMENT '更新人',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_name` (`name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/**
* 新增 workbookworkbook_memberworkbook_resource 表
*/
DROP TABLE IF EXISTS `workbook`;
CREATE TABLE `workbook` (
`id` varchar(64) NOT NULL COMMENT '主键',
`name` varchar(256) NOT NULL COMMENT '名称',
`tags` varchar(256) NOT NULL DEFAULT '' COMMENT '标签,多个逗号分隔',
`visibility` varchar(16) NOT NULL DEFAULT 'private' COMMENT '可见程度,可选值privatepublic 默认private',
`description` text NOT NULL COMMENT '描述信息',
`create_timestamp` bigint(20) NOT NULL COMMENT '创建时间戳',
`update_timestamp` bigint(20) NOT NULL COMMENT '更新时间戳',
`create_user_id` varchar(64) NOT NULL COMMENT '创建人',
`update_user_id` varchar(64) NOT NULL COMMENT '更新人',
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_name` (`name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
DROP TABLE IF EXISTS `workbook_member`;
CREATE TABLE `workbook_member` (
`workbook_id` varchar(64) NOT NULL COMMENT '主键',
`user_id` varchar(64) NOT NULL COMMENT 'user ID',
`create_timestamp` bigint(20) NOT NULL COMMENT '创建时间戳',
`create_user_id` varchar(64) NOT NULL COMMENT '创建人',
PRIMARY KEY (`workbook_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
DROP TABLE IF EXISTS `workbook_resource`;
CREATE TABLE `workbook_resource` (
`id` varchar(64) NOT NULL COMMENT '主键',
`workbook_id` varchar(64) NOT NULL COMMENT 'workbook ID',
`resource_type` varchar(64) NOT NULL COMMENT '资源类型 可选值package,signature,job,pcap,decode_record',
`resource_id` varchar(64) NOT NULL COMMENT '资源id',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;