diff --git a/czsj-admin/src/main/resources/application.yml b/czsj-admin/src/main/resources/application.yml
index a5dea08..f963347 100644
--- a/czsj-admin/src/main/resources/application.yml
+++ b/czsj-admin/src/main/resources/application.yml
@@ -194,3 +194,8 @@ xss:
excludes: /system/notice
# 匹配链接
urlPatterns: /system/*,/monitor/*,/tool/*
+
+datasource:
+ aes:
+ key: AD42F6697B035B75
+
diff --git a/czsj-admin/src/main/resources/i18n/message.properties b/czsj-admin/src/main/resources/i18n/message.properties
new file mode 100644
index 0000000..2fd7594
--- /dev/null
+++ b/czsj-admin/src/main/resources/i18n/message.properties
@@ -0,0 +1,274 @@
+admin_name=任务调度中心
+admin_name_full=分布式任务调度平台XXL-JOB
+admin_version=2.1.1
+admin_i18n=
+
+## system
+system_tips=系统提示
+system_ok=确定
+system_close=关闭
+system_save=保存
+system_cancel=取消
+system_search=搜索
+system_status=状态
+system_opt=操作
+system_please_input=请输入
+system_please_choose=请选择
+system_success=成功
+system_fail=失败
+system_add_suc=新增成功
+system_add_fail=新增失败
+system_update_suc=更新成功
+system_update_fail=更新失败
+system_all=全部
+system_api_error=接口异常
+system_show=查看
+system_empty=无
+system_opt_suc=操作成功
+system_opt_fail=操作失败
+system_opt_edit=编辑
+system_opt_del=删除
+system_invalid=非法
+system_not_found=不存在
+system_nav=导航
+system_digits=整数
+system_length_limit=长度限制
+system_no_blank=不能为空
+system_type_error=类型错误
+system_permission_limit=权限拦截
+system_welcome=欢迎
+
+## daterangepicker
+daterangepicker_ranges_recent_hour=最近一小时
+daterangepicker_ranges_today=今日
+daterangepicker_ranges_yesterday=昨日
+daterangepicker_ranges_this_month=本月
+daterangepicker_ranges_last_month=上个月
+daterangepicker_ranges_recent_week=最近一周
+daterangepicker_ranges_recent_month=最近一月
+daterangepicker_custom_name=自定义
+daterangepicker_custom_starttime=起始时间
+daterangepicker_custom_endtime=结束时间
+daterangepicker_custom_daysofweek=日,一,二,三,四,五,六
+daterangepicker_custom_monthnames=一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月
+
+## dataTable
+dataTable_sProcessing=处理中...
+dataTable_sLengthMenu=每页 _MENU_ 条记录
+dataTable_sZeroRecords=没有匹配结果
+dataTable_sInfo=第 _PAGE_ 页 ( 总共 _PAGES_ 页,_TOTAL_ 条记录 )
+dataTable_sInfoEmpty=无记录
+dataTable_sInfoFiltered=(由 _MAX_ 项结果过滤)
+dataTable_sSearch=搜索
+dataTable_sEmptyTable=表中数据为空
+dataTable_sLoadingRecords=载入中...
+dataTable_sFirst=首页
+dataTable_sPrevious=上页
+dataTable_sNext=下页
+dataTable_sLast=末页
+dataTable_sSortAscending=: 以升序排列此列
+dataTable_sSortDescending=: 以降序排列此列
+
+## login
+login_btn=登录
+login_remember_me=记住密码
+login_username_placeholder=请输入登录账号
+login_password_placeholder=请输入登录密码
+login_username_empty=请输入登录账号
+login_username_lt_4=登录账号不应低于4位
+login_password_empty=请输入登录密码
+login_password_lt_4=登录密码不应低于4位
+login_success=登录成功
+login_fail=登录失败
+login_param_empty=账号或密码为空
+login_param_invalid=账号或密码错误
+
+## logout
+logout_btn=注销
+logout_confirm=确认注销登录?
+logout_success=注销成功
+logout_fail=注销失败
+
+## change pwd
+change_pwd=修改密码
+change_pwd_suc_to_logout=修改密码成功,即将注销登陆
+change_pwd_field_newpwd=新密码
+
+## dashboard
+job_dashboard_name=运行报表
+job_dashboard_job_num=任务数量
+job_dashboard_job_num_tip=调度中心运行的任务数量
+job_dashboard_trigger_num=调度次数
+job_dashboard_trigger_num_tip=调度中心触发的调度次数
+job_dashboard_jobgroup_num=执行器数量
+job_dashboard_jobgroup_num_tip=调度中心在线的执行器机器数量
+job_dashboard_report=调度报表
+job_dashboard_report_loaddata_fail=调度报表数据加载异常
+job_dashboard_date_report=日期分布图
+job_dashboard_rate_report=成功比例图
+
+## job info
+jobinfo_name=任务管理
+jobinfo_job=任务
+jobinfo_field_add=新增
+jobinfo_field_update=更新任务
+jobinfo_field_id=任务ID
+jobinfo_field_jobgroup=执行器
+jobinfo_field_jobgproject=所属项目
+jobinfo_field_temp=模板
+jobinfo_field_jobdesc=任务描述
+jobinfo_field_jobjson=任务JSON
+jobinfo_field_readerDataSource=Reader数据源
+jobinfo_field_writerDataSource=Writer数据源
+jobinfo_field_readerColumns=Reader Column
+jobinfo_field_writerColumns=Writer Column
+jobinfo_field_gluetype=运行模式
+jobinfo_field_executorparam=任务参数
+jobinfo_field_cron_invalid=Cron格式非法
+jobinfo_field_cron_never_fire=Cron非法,永远不会触发
+jobinfo_field_author=负责人
+jobinfo_field_timeout=任务超时时间
+jobinfo_field_alarmemail=报警邮件
+jobinfo_field_alarmemail_placeholder=请输入报警邮件,多个邮件地址则逗号分隔
+jobinfo_field_executorRouteStrategy=路由策略
+jobinfo_field_childJobId=子任务ID
+jobinfo_field_childJobId_placeholder=请输入子任务的任务ID,如存在多个则逗号分隔
+jobinfo_field_executorBlockStrategy=阻塞处理策略
+jobinfo_field_executorFailRetryCount=失败重试次数
+jobinfo_field_executorFailRetryCount_placeholder=失败重试次数,大于零时生效
+jobinfo_script_location=脚本位置
+jobinfo_shard_index=分片序号
+jobinfo_shard_total=分片总数
+jobinfo_opt_stop=停止
+jobinfo_opt_start=启动
+jobinfo_opt_log=查询日志
+jobinfo_opt_run=执行一次
+jobinfo_opt_registryinfo=注册节点
+jobinfo_opt_next_time=下次执行时间
+jobinfo_glue_remark=源码备注
+jobinfo_glue_remark_limit=源码备注长度限制为4~100
+jobinfo_glue_rollback=版本回溯
+jobinfo_glue_jobid_invalid=任务ID非法
+jobinfo_glue_gluetype_invalid=该任务非GLUE模式
+jobinfo_field_executorTimeout_placeholder=任务超时时间,单位秒,大于零时生效
+
+## job log
+joblog_name=调度日志
+joblog_status=状态
+joblog_status_all=全部
+joblog_status_suc=成功
+joblog_status_fail=失败
+joblog_status_running=进行中
+joblog_field_triggerTime=调度时间
+joblog_field_triggerCode=调度结果
+joblog_field_triggerMsg=调度备注
+joblog_field_handleTime=执行时间
+joblog_field_handleCode=执行结果
+joblog_field_handleMsg=执行备注
+joblog_field_executorAddress=执行器地址
+joblog_clean=清理
+joblog_clean_log=日志清理
+joblog_clean_type=清理方式
+joblog_clean_type_1=清理一个月之前日志数据
+joblog_clean_type_2=清理三个月之前日志数据
+joblog_clean_type_3=清理六个月之前日志数据
+joblog_clean_type_4=清理一年之前日志数据
+joblog_clean_type_5=清理一千条以前日志数据
+joblog_clean_type_6=清理一万条以前日志数据
+joblog_clean_type_7=清理三万条以前日志数据
+joblog_clean_type_8=清理十万条以前日志数据
+joblog_clean_type_9=清理所有日志数据
+joblog_clean_type_invalid=清理类型参数异常
+joblog_handleCode_200=成功
+joblog_handleCode_500=失败
+joblog_handleCode_502=失败(超时)
+joblog_kill_log=终止任务
+joblog_kill_log_limit=调度失败,无法终止日志
+joblog_kill_log_byman=人为操作主动终止
+joblog_rolling_log=执行日志
+joblog_rolling_log_refresh=刷新
+joblog_rolling_log_triggerfail=任务发起调度失败,无法查看执行日志
+joblog_rolling_log_failoften=终止请求Rolling日志,请求失败次数超上限,可刷新页面重新加载日志
+joblog_logid_invalid=日志ID非法
+
+## job group
+jobgroup_name=执行器管理
+jobgroup_list=执行器列表
+jobgroup_add=新增执行器
+jobgroup_edit=编辑执行器
+jobgroup_del=删除执行器
+jobgroup_field_order=排序
+jobgroup_field_title=名称
+jobgroup_field_addressType=注册方式
+jobgroup_field_addressType_0=自动注册
+jobgroup_field_addressType_1=手动录入
+jobgroup_field_addressType_limit=手动录入注册方式,机器地址不可为空
+jobgroup_field_registryList=机器地址
+jobgroup_field_registryList_invalid=机器地址格式非法
+jobgroup_field_registryList_placeholder=请输入执行器地址列表,多地址逗号分隔
+jobgroup_field_appName_limit=限制以小写字母开头,由小写字母、数字和中划线组成
+jobgroup_field_appName_length=AppName长度限制为4~64
+jobgroup_field_title_length=名称长度限制为4~12
+jobgroup_field_order_digits=请输入整数
+jobgroup_field_orderrange=取值范围为1~1000
+jobgroup_del_limit_0=拒绝删除,该执行器使用中
+jobgroup_del_limit_1=拒绝删除, 系统至少保留一个执行器
+jobgroup_empty=不存在有效执行器,请联系管理员
+
+## job conf
+jobconf_block_SERIAL_EXECUTION=单机串行
+jobconf_block_DISCARD_LATER=丢弃后续调度
+jobconf_block_COVER_EARLY=覆盖之前调度
+jobconf_route_first=第一个
+jobconf_route_last=最后一个
+jobconf_route_round=轮询
+jobconf_route_random=随机
+jobconf_route_consistenthash=一致性HASH
+jobconf_route_lfu=最不经常使用
+jobconf_route_lru=最近最久未使用
+jobconf_route_failover=故障转移
+jobconf_route_busyover=忙碌转移
+jobconf_route_shard=分片广播
+jobconf_idleBeat=空闲检测
+jobconf_beat=心跳检测
+jobconf_monitor=任务调度中心监控报警
+jobconf_monitor_detail=监控告警明细
+jobconf_monitor_alarm_title=告警类型
+jobconf_monitor_alarm_type=调度失败
+jobconf_monitor_alarm_content=告警内容
+jobconf_trigger_admin_adress=调度机器
+jobconf_trigger_exe_regtype=执行器-注册方式
+jobconf_trigger_exe_regaddress=执行器-地址列表
+jobconf_trigger_address_empty=调度失败:执行器地址为空
+jobconf_trigger_run=触发调度
+jobconf_trigger_child_run=触发子任务
+jobconf_callback_child_msg1={0}/{1} [任务ID={2}], 触发{3}, 触发备注: {4}
+jobconf_callback_child_msg2={0}/{1} [任务ID={2}], 触发失败, 触发备注: 任务ID格式错误
+jobconf_trigger_type=任务触发类型
+jobconf_trigger_type_cron=Cron触发
+jobconf_trigger_type_manual=手动触发
+jobconf_trigger_type_parent=父任务触发
+jobconf_trigger_type_api=API触发
+jobconf_trigger_type_retry=失败重试触发
+
+## user
+user_manage=用户管理
+user_username=账号
+user_password=密码
+user_role=角色
+user_role_admin=管理员
+user_role_normal=普通用户
+user_permission=权限
+user_add=新增用户
+user_update=更新用户
+user_username_repeat=账号重复
+user_username_valid=限制以小写字母开头,由小写字母、数字组成
+user_password_update_placeholder=请输入新密码,为空则不更新密码
+user_update_loginuser_limit=禁止操作当前登录账号
+
+## help
+job_help=使用教程
+job_help_document=官方文档
+
+##json build
+json_build_inconsistent_number_r_w_tables=读写表数量不一致
\ No newline at end of file
diff --git a/czsj-admin/src/main/resources/i18n/message_en.properties b/czsj-admin/src/main/resources/i18n/message_en.properties
new file mode 100644
index 0000000..8512edf
--- /dev/null
+++ b/czsj-admin/src/main/resources/i18n/message_en.properties
@@ -0,0 +1,264 @@
+admin_name=Scheduling Center
+admin_name_full=Distributed Task Scheduling Platform XXL-JOB
+admin_version=2.1.1
+admin_i18n=en
+
+## system
+system_tips=System message
+system_ok=Confirm
+system_close=Close
+system_save=Save
+system_cancel=Cancel
+system_search=Search
+system_status=Status
+system_opt=Operate
+system_please_input=please input
+system_please_choose=please choose
+system_success=success
+system_fail=fail
+system_add_suc=add success
+system_add_fail=add fail
+system_update_suc=update success
+system_update_fail=update fail
+system_all=All
+system_api_error=net error
+system_show=Show
+system_empty=Empty
+system_opt_suc=operate success
+system_opt_fail=operate fail
+system_opt_edit=Edit
+system_opt_del=Delete
+system_invalid=illegal
+system_not_found=not exist
+system_nav=Navigation
+system_digits=digits
+system_length_limit=Length limit
+system_permission_limit=Permission limit
+system_welcome=Welcome
+
+## daterangepicker
+daterangepicker_ranges_recent_hour=recent one hour
+daterangepicker_ranges_today=today
+daterangepicker_ranges_yesterday=yesterday
+daterangepicker_ranges_this_month=this month
+daterangepicker_ranges_last_month=last month
+daterangepicker_ranges_recent_week=recent one week
+daterangepicker_ranges_recent_month=recent one month
+daterangepicker_custom_name=custom
+daterangepicker_custom_starttime=start time
+daterangepicker_custom_endtime=end time
+daterangepicker_custom_daysofweek=Sun,Mon,Tue,Wed,Thu,Fri,Sat
+daterangepicker_custom_monthnames=Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec
+
+## dataTable
+dataTable_sProcessing=processing...
+dataTable_sLengthMenu= _MENU_ records per page
+dataTable_sZeroRecords=No matching results
+dataTable_sInfo=page _PAGE_ ( Total _PAGES_ pages,_TOTAL_ records )
+dataTable_sInfoEmpty=No Record
+dataTable_sInfoFiltered=(Filtered by _MAX_ results)
+dataTable_sSearch=Search
+dataTable_sEmptyTable=Table data is empty
+dataTable_sLoadingRecords=Loading...
+dataTable_sFirst=FIRST PAGE
+dataTable_sPrevious=Previous Page
+dataTable_sNext=Next Page
+dataTable_sLast=LAST PAGE
+dataTable_sSortAscending=: Rank this column in ascending order
+dataTable_sSortDescending=: Rank this column in descending order
+
+## login
+login_btn=Login
+login_remember_me=Remember Me
+login_username_placeholder=Please enter username
+login_password_placeholder=Please enter password
+login_username_empty=Please enter username
+login_username_lt_4=Username length should not be less than 4
+login_password_empty=Please enter password
+login_password_lt_4=Password length should not be less than 4
+login_success=Login success
+login_fail=Login fail
+login_param_empty=Username or password is empty
+login_param_invalid=Username or password error
+
+## logout
+logout_btn=Logout
+logout_confirm=Confirm logout?
+logout_success=Logout success
+logout_fail=Logout fail
+
+## change pwd
+change_pwd=Change password
+change_pwd_suc_to_logout=Change password successful, about to log out login
+change_pwd_field_newpwd=new password
+
+## dashboard
+job_dashboard_name=Run report
+job_dashboard_job_num=Job number
+job_dashboard_job_num_tip=The number of tasks running in the scheduling center
+job_dashboard_trigger_num=trigger number
+job_dashboard_trigger_num_tip=The number of trigger record scheduled by the scheduling center
+job_dashboard_jobgroup_num=Executor number
+job_dashboard_jobgroup_num_tip=The number of online executor machines perceived by the scheduling center
+job_dashboard_report=Scheduling report
+job_dashboard_report_loaddata_fail=Scheduling report load data error
+job_dashboard_date_report=Date distribution
+job_dashboard_rate_report=Percentage distribution
+
+## job info
+jobinfo_name=Job Manage
+jobinfo_job=Job
+jobinfo_field_add=Add Job
+jobinfo_field_update=Edit Job
+jobinfo_field_id=Job ID
+jobinfo_field_jobgroup=Executor
+jobinfo_field_jobproject=job Project
+jobinfo_field_jobdesc=Job description
+jobinfo_field_jobJSON=Job JSON
+jobinfo_field_timeout=Job timeout period
+jobinfo_field_gluetype=GLUE Type
+jobinfo_field_executorparam=Param
+jobinfo_field_cron_invalid=The Cron is illegal
+jobinfo_field_cron_never_fire=The Cron will never fire
+jobinfo_field_author=Author
+jobinfo_field_alarmemail=Alarm email
+jobinfo_field_alarmemail_placeholder=Please enter alarm mail, if there are more than one comma separated
+jobinfo_field_executorRouteStrategy=Route Strategy
+jobinfo_field_childJobId=Child Job ID
+jobinfo_field_childJobId_placeholder=Please enter the Child job ID, if there are more than one comma separated
+jobinfo_field_executorBlockStrategy=Block Strategy
+jobinfo_field_executorFailRetryCount=Fail Retry Count
+jobinfo_field_executorFailRetryCount_placeholder=Fail Retry Count. effect if greater than zero
+jobinfo_script_location=Script location
+jobinfo_shard_index=Shard index
+jobinfo_shard_total=Shard total
+jobinfo_opt_stop=Stop
+jobinfo_opt_start=Start
+jobinfo_opt_log=Query Log
+jobinfo_opt_run=Run Once
+jobinfo_opt_registryinfo=Registry Info
+jobinfo_opt_next_time=Next trigger time
+jobinfo_glue_remark=Resource Remark
+jobinfo_glue_remark_limit=Resource Remark length is limited to 4~100
+jobinfo_glue_rollback=Version Backtrack
+jobinfo_glue_jobid_invalid=Job ID is illegal
+jobinfo_glue_gluetype_invalid=The job is not GLUE Type
+jobinfo_field_executorTimeout_placeholder=Job Timeout period,in seconds. effect if greater than zero
+
+## job log
+joblog_name=Trigger Log
+joblog_status=Status
+joblog_status_all=All
+joblog_status_suc=Success
+joblog_status_fail=Fail
+joblog_status_running=Running
+joblog_field_triggerTime=Trigger Time
+joblog_field_triggerCode=Trigger Result
+joblog_field_triggerMsg=Trigger Msg
+joblog_field_handleTime=Handle Time
+joblog_field_handleCode=Handle Result
+joblog_field_handleMsg=Trigger Msg
+joblog_field_executorAddress=Executor Address
+joblog_clean=Clean
+joblog_clean_log=Clean Log
+joblog_clean_type=Clean Type
+joblog_clean_type_1=Clean up log data a month ago
+joblog_clean_type_2=Clean up log data three month ago
+joblog_clean_type_3=Clean up log data six month ago
+joblog_clean_type_4=Clean up log data a year ago
+joblog_clean_type_5=Clean up log data a thousand record ago
+joblog_clean_type_6=Clean up log data ten thousand record ago
+joblog_clean_type_7=Clean up log data thirty thousand record ago
+joblog_clean_type_8=Clean up log data hundred thousand record ago
+joblog_clean_type_9=Clean up all log data
+joblog_clean_type_invalid=Clean type is illegal
+joblog_handleCode_200=Success
+joblog_handleCode_500=Fail
+joblog_handleCode_502=Timeout
+joblog_kill_log=Kill Job
+joblog_kill_log_limit=Trigger Fail, can not kill job
+joblog_kill_log_byman=Manual operation to active kill job
+joblog_rolling_log=Rolling log
+joblog_rolling_log_refresh=Refresh
+joblog_rolling_log_triggerfail=The job trigger fail, can not view the rolling log
+joblog_rolling_log_failoften=The request for the Rolling log is terminated, the number of failed requests exceeds the limit, Reload the log on the refresh page
+joblog_logid_invalid=Log ID is illegal
+
+## job group
+jobgroup_name=Executor Manage
+jobgroup_list=Executor List
+jobgroup_add=Add Executor
+jobgroup_edit=Edit Executor
+jobgroup_del=Delete Executor
+jobgroup_field_order=Order
+jobgroup_field_title=Title
+jobgroup_field_addressType=Registry Type
+jobgroup_field_addressType_0=Automatic registration
+jobgroup_field_addressType_1=Manual registration
+jobgroup_field_addressType_limit=Manually registration type, the machine address must not be empty
+jobgroup_field_registryList=machine address
+jobgroup_field_registryList_invalid=registry machine address is illegal
+jobgroup_field_registryList_placeholder=Please enter the machine address, if there are more than one comma separated
+jobgroup_field_appName_limit=Limit the beginning of a lowercase letter, consists of lowercase letters、number and hyphen.
+jobgroup_field_appName_length=AppName length is limited to 4~64
+jobgroup_field_title_length=Title length is limited to 4~12
+jobgroup_field_order_digits=Please enter a positive integer
+jobgroup_field_orderrange=Order is limited to 1~1000
+jobgroup_del_limit_0=Refuse to delete, the executor is being used
+jobgroup_del_limit_1=Refuses to delete, the system retains at least one executor
+jobgroup_empty=There is no valid executor. Please contact the administrator
+
+## job conf
+jobconf_block_SERIAL_EXECUTION=Serial execution
+jobconf_block_DISCARD_LATER=Discard Later
+jobconf_block_COVER_EARLY=Cover Early
+jobconf_route_first=First
+jobconf_route_last=Last
+jobconf_route_round=Round
+jobconf_route_random=Random
+jobconf_route_consistenthash=Consistent Hash
+jobconf_route_lfu=Least Frequently Used
+jobconf_route_lru=Least Recently Used
+jobconf_route_failover=Failover
+jobconf_route_busyover=Busyover
+jobconf_route_shard=Sharding Broadcast
+jobconf_idleBeat=Idle check
+jobconf_beat=Heartbeats
+jobconf_monitor=Task Scheduling Center monitor alarm
+jobconf_monitor_detail=monitor alarm details
+jobconf_monitor_alarm_title=Alarm Type
+jobconf_monitor_alarm_type=Trigger Fail
+jobconf_monitor_alarm_content=Alarm Content
+jobconf_trigger_admin_adress=Trigger machine address
+jobconf_trigger_exe_regtype=Execotor-Registry Type
+jobconf_trigger_exe_regaddress=Execotor-Registry Address
+jobconf_trigger_address_empty=Trigger Fail:registry address is empty
+jobconf_trigger_run=Trigger Job
+jobconf_trigger_child_run=Trigger child job
+jobconf_callback_child_msg1={0}/{1} [Job ID={2}], Trigger {3}, Trigger msg: {4}
+jobconf_callback_child_msg2={0}/{1} [Job ID={2}], Trigger Fail, Trigger msg: Job ID is illegal
+jobconf_trigger_type=Job trigger type
+jobconf_trigger_type_cron=Cron trigger
+jobconf_trigger_type_manual=Manual trigger
+jobconf_trigger_type_parent=Parent job trigger
+jobconf_trigger_type_api=Api trigger
+jobconf_trigger_type_retry=Fail retry trigger
+
+## user
+user_manage=User Manage
+user_username=Username
+user_password=Password
+user_role=Role
+user_role_admin=Admin User
+user_role_normal=Normal User
+user_permission=Permission
+user_add=Add User
+user_update=Edit User
+user_username_repeat=Username Repeat
+user_username_valid=Restrictions start with a lowercase letter and consist of lowercase letters and Numbers
+user_password_update_placeholder=Please input password, empty means not update
+user_update_loginuser_limit=Operation of current login account is not allowed
+
+## help
+job_help=Tutorial
+job_help_document=Official Document
diff --git a/czsj-common/src/main/java/com/czsj/common/config/MailConfig.java b/czsj-common/src/main/java/com/czsj/common/config/MailConfig.java
new file mode 100644
index 0000000..cee620f
--- /dev/null
+++ b/czsj-common/src/main/java/com/czsj/common/config/MailConfig.java
@@ -0,0 +1,18 @@
+package com.czsj.common.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.mail.javamail.JavaMailSenderImpl;
+import org.springframework.stereotype.Component;
+
+@Component
+public class MailConfig {
+ @Bean
+ public JavaMailSenderImpl mailSender() {
+ JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
+
+ javaMailSender.setProtocol("SMTP");
+ javaMailSender.setHost("smtp.qq.com");
+ javaMailSender.setPort(465);
+ return javaMailSender;
+ }
+}
diff --git a/czsj-common/src/main/java/com/czsj/common/config/RPCClient.java b/czsj-common/src/main/java/com/czsj/common/config/RPCClient.java
new file mode 100644
index 0000000..2dfe704
--- /dev/null
+++ b/czsj-common/src/main/java/com/czsj/common/config/RPCClient.java
@@ -0,0 +1,48 @@
+package com.czsj.common.config;
+
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.net.InetSocketAddress;
+import java.net.Socket;
+
+public class RPCClient {
+ @SuppressWarnings("unchecked")
+ public static T getRemoteProxyObj(final Class> serviceInterface, final InetSocketAddress addr) {
+ // 1.将本地的接口调用转换成JDK的动态代理,在动态代理中实现接口的远程调用
+ return (T) Proxy.newProxyInstance(serviceInterface.getClassLoader(), new Class>[]{serviceInterface},
+ new InvocationHandler() {
+ @Override
+ public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+ Socket socket = null;
+ ObjectOutputStream output = null;
+ ObjectInputStream input = null;
+ try {
+ // 2.创建Socket客户端,根据指定地址连接远程服务提供者
+ socket = new Socket();
+ socket.connect(addr);
+
+ // 3.将远程服务调用所需的接口类、方法名、参数列表等编码后发送给服务提供者
+ output = new ObjectOutputStream(socket.getOutputStream());
+ output.writeUTF(serviceInterface.getName());
+ output.writeUTF(method.getName());
+ output.writeObject(method.getParameterTypes());
+ output.writeObject(args);
+
+ // 4.同步阻塞等待服务器返回应答,获取应答后返回
+ input = new ObjectInputStream(socket.getInputStream());
+ return input.readObject();
+ } finally {
+ if (socket != null){
+ socket.close();}
+ if (output != null){
+ output.close();}
+ if (input != null){
+ input.close();}
+ }
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/czsj-framework/src/main/java/com/czsj/framework/config/SecurityConfig.java b/czsj-framework/src/main/java/com/czsj/framework/config/SecurityConfig.java
index 1ae7b67..58c0e7d 100644
--- a/czsj-framework/src/main/java/com/czsj/framework/config/SecurityConfig.java
+++ b/czsj-framework/src/main/java/com/czsj/framework/config/SecurityConfig.java
@@ -111,8 +111,9 @@ public class SecurityConfig
.authorizeHttpRequests((requests) -> {
permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll());
// 对于登录login 注册register 验证码captchaImage 允许匿名访问
- requests.antMatchers("/login", "/register", "/captchaImage").permitAll()
- // 静态资源,可匿名访问
+ requests.antMatchers("/login", "/register", "/captchaImage","/log/*","/alarmCallback","/flink/uploadJar/upload").permitAll()
+ .antMatchers("/api/callback","/api/processCallback","/api/registry","/api/registryRemove","/inner/**").permitAll()
+ // 静态资源,可匿名访问
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
.antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
// 除上面外的所有请求全部需要鉴权认证
diff --git a/czsj-framework/src/main/java/com/czsj/framework/config/properties/DruidProperties.java b/czsj-framework/src/main/java/com/czsj/framework/config/properties/DruidProperties.java
index eb69375..8417482 100644
--- a/czsj-framework/src/main/java/com/czsj/framework/config/properties/DruidProperties.java
+++ b/czsj-framework/src/main/java/com/czsj/framework/config/properties/DruidProperties.java
@@ -61,11 +61,6 @@ public class DruidProperties
/** 配置获取连接等待超时的时间 */
datasource.setMaxWait(maxWait);
- /** 配置驱动连接超时时间,检测数据库建立连接的超时时间,单位是毫秒 */
- datasource.setConnectTimeout(connectTimeout);
-
- /** 配置网络超时时间,等待数据库操作完成的网络超时时间,单位是毫秒 */
- datasource.setSocketTimeout(socketTimeout);
/** 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 */
datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
diff --git a/czsj-system/src/main/java/com/czsj/bigdata/core/util/EmailUtil.java b/czsj-system/src/main/java/com/czsj/bigdata/core/util/EmailUtil.java
index d9c518c..ce831f1 100644
--- a/czsj-system/src/main/java/com/czsj/bigdata/core/util/EmailUtil.java
+++ b/czsj-system/src/main/java/com/czsj/bigdata/core/util/EmailUtil.java
@@ -1,13 +1,12 @@
package com.czsj.bigdata.core.util;
import com.sun.mail.util.MailSSLSocketFactory;
-
+import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
-
public class EmailUtil {
public static void send(String emailUserName,String emailPassword,String emailAuthorization,String SJemailUserName,String title,String msg) throws Exception{
diff --git a/czsj-system/src/main/resources/mapper/bigdata/APIAuthMapper.xml b/czsj-system/src/main/resources/mapper/bigdata/APIAuthMapper.xml
new file mode 100644
index 0000000..7c82f17
--- /dev/null
+++ b/czsj-system/src/main/resources/mapper/bigdata/APIAuthMapper.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ t.id,
+ t.token_id,
+ t.group_id,
+ t.update_time
+
+
+
+ DELETE
+ FROM lark_api_auth
+ WHERE id = #{id}
+
+
+
+
+
+
+
+ INSERT INTO lark_api_auth (
+ token_id,
+ group_id,
+ update_time
+ ) VALUES (
+ #{token_id},
+ #{group_id},
+ #{update_time}
+ );
+
+
+
+ UPDATE lark_api_auth
+ SET
+ token_id = #{token_id},
+ group_id = #{group_id},
+ update_time = #{update_time}
+ WHERE id = #{id}
+
+
+
+
diff --git a/czsj-system/src/main/resources/mapper/bigdata/BaseResourceMapper.xml b/czsj-system/src/main/resources/mapper/bigdata/BaseResourceMapper.xml
new file mode 100644
index 0000000..8490973
--- /dev/null
+++ b/czsj-system/src/main/resources/mapper/bigdata/BaseResourceMapper.xml
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ t.id,
+ t.name,
+ t.resource_address,
+ t.update_time,
+ t.serverIp,
+ t.serverUser,
+ t.serverPassword,
+ t.type
+
+
+
+ DELETE
+ FROM lark_base_resource
+ WHERE id = #{id}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO lark_base_resource (
+ `name`,
+ resource_address,
+ update_time,
+ serverIp,
+ serverUser,
+ serverPassword,
+ type
+ ) VALUES (
+ #{name},
+ #{resource_address},
+ #{update_time},
+ #{serverIp},
+ #{serverUser},
+ #{serverPassword},
+ #{type}
+ );
+
+
+
+ UPDATE lark_base_resource
+ SET
+ `name` = #{name},
+ resource_address = #{resource_address},
+ update_time = #{update_time},
+ serverIp = #{serverIp},
+ serverUser = #{serverUser},
+ serverPassword = #{serverPassword},
+ type = #{type}
+ WHERE id = #{id}
+
+
+
+
diff --git a/czsj-system/src/main/resources/mapper/bigdata/DevEnvSettingMapper.xml b/czsj-system/src/main/resources/mapper/bigdata/DevEnvSettingMapper.xml
new file mode 100644
index 0000000..01263dd
--- /dev/null
+++ b/czsj-system/src/main/resources/mapper/bigdata/DevEnvSettingMapper.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/czsj-system/src/main/resources/mapper/bigdata/DevJarMapper.xml b/czsj-system/src/main/resources/mapper/bigdata/DevJarMapper.xml
new file mode 100644
index 0000000..067cec1
--- /dev/null
+++ b/czsj-system/src/main/resources/mapper/bigdata/DevJarMapper.xml
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ t.id,
+ t.name,
+ t.tasktype,
+ t.runtype,
+ t.sql_text,
+ t.run_param,
+ t.jarpath,
+ t.task_describe,
+ t.create_time
+
+
+
+ INSERT INTO lark_dev_tasklist (
+ `name`,
+ tasktype,
+ runtype,
+ run_param,
+ jarpath,
+ task_describe,
+ create_time,
+ `type`,
+ sql_text
+ ) VALUES (
+ #{name},
+ #{tasktype},
+ #{runtype},
+ #{run_param},
+ #{jarpath},
+ #{task_describe},
+ #{create_time},
+ #{type},
+ #{sql_text}
+ );
+
+
+
+ UPDATE lark_dev_tasklist
+ SET
+ `name` = #{name},
+ tasktype = #{tasktype},
+ runtype = #{runtype},
+ run_param = #{run_param},
+ jarpath = #{jarpath},
+ task_describe = #{task_describe},
+ create_time = #{create_time},
+ sql_text= #{sql_text}
+ WHERE id = #{id}
+
+
+
diff --git a/czsj-system/src/main/resources/mapper/bigdata/DevSQLMapper.xml b/czsj-system/src/main/resources/mapper/bigdata/DevSQLMapper.xml
new file mode 100644
index 0000000..cf11592
--- /dev/null
+++ b/czsj-system/src/main/resources/mapper/bigdata/DevSQLMapper.xml
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ t.id,
+ t.name,
+ t.tasktype,
+ t.runtype,
+ t.sql_text,
+ t.run_param,
+ t.jarpath,
+ t.task_describe,
+ t.create_time
+
+
+
+ INSERT INTO lark_dev_tasklist (
+ `name`,
+ tasktype,
+ runtype,
+ run_param,
+ sql_text,
+ task_describe,
+ create_time
+ ) VALUES (
+ #{name},
+ #{tasktype},
+ #{runtype},
+ #{run_param},
+ #{sql_text},
+ #{task_describe},
+ #{create_time}
+ );
+
+
+
+ UPDATE lark_dev_tasklist
+ SET
+ `name` = #{name},
+ tasktype = #{tasktype},
+ runtype = #{runtype},
+ run_param = #{run_param},
+ sql_text = #{sql_text},
+ task_describe = #{task_describe},
+ create_time = #{create_time}
+ WHERE id = #{id}
+
+
+
diff --git a/czsj-system/src/main/resources/mapper/bigdata/DevTaskMapper.xml b/czsj-system/src/main/resources/mapper/bigdata/DevTaskMapper.xml
new file mode 100644
index 0000000..666f775
--- /dev/null
+++ b/czsj-system/src/main/resources/mapper/bigdata/DevTaskMapper.xml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ t.id,
+ t.name,
+ t.tasktype,
+ t.runtype,
+ t.sql_text,
+ t.run_param,
+ t.jarpath,
+ t.task_describe,
+ t.create_time
+
+
+
+ DELETE
+ FROM lark_dev_tasklist
+ WHERE id = #{id}
+
+
+
+
+
+
+
diff --git a/czsj-system/src/main/resources/mapper/bigdata/JobDatasourceMapper.xml b/czsj-system/src/main/resources/mapper/bigdata/JobDatasourceMapper.xml
new file mode 100644
index 0000000..0ebceaa
--- /dev/null
+++ b/czsj-system/src/main/resources/mapper/bigdata/JobDatasourceMapper.xml
@@ -0,0 +1,63 @@
+
+
+
+
+
+ UPDATE job_jdbc_datasource
+
+ datasource_name = #{datasourceName},
+ datasource = #{datasource},
+ datasource_group = #{datasourceGroup},
+ jdbc_username = #{jdbcUsername},
+ jdbc_password = #{jdbcPassword},
+ jdbc_url = #{jdbcUrl},
+ jdbc_driver_class = #{jdbcDriverClass},
+ status = #{status},
+ comments = #{comments},
+ database_name = #{databaseName},
+
+ WHERE id = #{id}
+
+
+
+ t.id,
+ t.datasource_name,
+ t.datasource,
+ t.datasource_group,
+ t.jdbc_username,
+ t.jdbc_password,
+ t.jdbc_url,
+ t.jdbc_driver_class,
+ t.status,
+ t.create_by,
+ t.create_date,
+ t.update_date,
+ t.comments,
+ t.zk_adress,
+ t.database_name,
+ t.orcschema
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/czsj-system/src/main/resources/mapper/bigdata/JobGroupMapper.xml b/czsj-system/src/main/resources/mapper/bigdata/JobGroupMapper.xml
new file mode 100644
index 0000000..83a8c65
--- /dev/null
+++ b/czsj-system/src/main/resources/mapper/bigdata/JobGroupMapper.xml
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ t.id,
+ t.app_name,
+ t.title,
+ t.`order`,
+ t.address_type,
+ t.address_list
+
+
+
+
+
+
+
+
+
+ INSERT INTO job_group ( `app_name`, `title`, `order`, `address_type`, `address_list`)
+ values ( #{appName}, #{title}, #{order}, #{addressType}, #{addressList});
+
+
+
+ UPDATE job_group
+ SET `app_name` = #{appName},
+ `title` = #{title},
+ `order` = #{order},
+ `address_type` = #{addressType},
+ `address_list` = #{addressList}
+ WHERE id = #{id}
+
+
+
+ DELETE FROM job_group
+ WHERE id = #{id}
+
+
+
+
+
\ No newline at end of file
diff --git a/czsj-system/src/main/resources/mapper/bigdata/JobInfoMapper.xml b/czsj-system/src/main/resources/mapper/bigdata/JobInfoMapper.xml
new file mode 100644
index 0000000..8e8623c
--- /dev/null
+++ b/czsj-system/src/main/resources/mapper/bigdata/JobInfoMapper.xml
@@ -0,0 +1,343 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ t.id,
+ t.job_group,
+ t.job_cron,
+ t.job_desc,
+ t.add_time,
+ t.update_time,
+ t.user_id,
+ t.alarm_email,
+ t.executor_route_strategy,
+ t.executor_handler,
+ t.executor_param,
+ t.executor_block_strategy,
+ t.executor_timeout,
+ t.executor_fail_retry_count,
+ t.glue_type,
+ t.glue_source,
+ t.glue_remark,
+ t.glue_updatetime,
+ t.child_jobid,
+ t.trigger_status,
+ t.trigger_last_time,
+ t.trigger_next_time,
+ t.job_json,
+ t.replace_param,
+ t.jvm_param,
+ t.inc_start_time,
+ t.partition_info,
+ t.last_handle_code,
+ t.replace_param_type,
+ t.project_id,
+ t.reader_table,
+ t.primary_key,
+ t.inc_start_id,
+ t.increment_type,
+ t.datasource_id
+
+
+
+ p.name as project_name
+
+
+
+
+
+
+
+
+ INSERT INTO job_info (
+ job_group,
+ job_cron,
+ job_desc,
+ add_time,
+ update_time,
+ user_id,
+ alarm_email,
+ executor_route_strategy,
+ executor_handler,
+ executor_param,
+ executor_block_strategy,
+ executor_timeout,
+ executor_fail_retry_count,
+ glue_type,
+ glue_source,
+ glue_remark,
+ glue_updatetime,
+ child_jobid,
+ trigger_status,
+ trigger_last_time,
+ trigger_next_time,
+ job_json,
+ replace_param,
+ jvm_param,
+ inc_start_time,
+ partition_info,
+ last_handle_code,
+ replace_param_type,
+ project_id,
+ reader_table,
+ primary_key,
+ inc_start_id,
+ increment_type,
+ datasource_id
+ ) VALUES (
+ #{jobGroup},
+ #{jobCron},
+ #{jobDesc},
+ #{addTime},
+ #{updateTime},
+ #{userId},
+ #{alarmEmail},
+ #{executorRouteStrategy},
+ #{executorHandler},
+ #{executorParam},
+ #{executorBlockStrategy},
+ #{executorTimeout},
+ #{executorFailRetryCount},
+ #{glueType},
+ #{glueSource},
+ #{glueRemark},
+ #{glueUpdatetime},
+ #{childJobId},
+ #{triggerStatus},
+ #{triggerLastTime},
+ #{triggerNextTime},
+ #{jobJson},
+ #{replaceParam},
+ #{jvmParam},
+ #{incStartTime},
+ #{partitionInfo},
+ #{lastHandleCode},
+ #{replaceParamType},
+ #{projectId},
+ #{readerTable},
+ #{primaryKey},
+ #{incStartId},
+ #{incrementType},
+ #{datasourceId}
+ );
+
+
+
+
+
+
+ UPDATE job_info
+ SET
+ job_group = #{jobGroup},
+ job_cron = #{jobCron},
+ job_desc = #{jobDesc},
+ update_time = #{updateTime},
+ user_id = #{userId},
+ alarm_email = #{alarmEmail},
+ executor_route_strategy = #{executorRouteStrategy},
+ executor_handler = #{executorHandler},
+ executor_param = #{executorParam},
+ executor_block_strategy = #{executorBlockStrategy},
+ executor_timeout = ${executorTimeout},
+ executor_fail_retry_count = ${executorFailRetryCount},
+ glue_type = #{glueType},
+ glue_source = #{glueSource},
+ glue_remark = #{glueRemark},
+ glue_updatetime = #{glueUpdatetime},
+ child_jobid = #{childJobId},
+ trigger_status = #{triggerStatus},
+ trigger_last_time = #{triggerLastTime},
+ trigger_next_time = #{triggerNextTime},
+ job_json=#{jobJson},
+ replace_param=#{replaceParam},
+ jvm_param=#{jvmParam},
+ inc_start_time=#{incStartTime},
+ partition_info=#{partitionInfo},
+ last_handle_code=#{lastHandleCode},
+ replace_param_type=#{replaceParamType},
+ project_id=#{projectId},
+ reader_table = #{readerTable},
+ primary_key = #{primaryKey},
+ inc_start_id = #{incStartId},
+ increment_type = #{incrementType},
+ datasource_id= #{datasourceId}
+ WHERE id = #{id}
+
+
+
+ DELETE
+ FROM job_info
+ WHERE id = #{id}
+
+
+
+
+
+
+
+
+
+
+ UPDATE job_info
+ SET
+ trigger_last_time = #{triggerLastTime},
+ trigger_next_time = #{triggerNextTime},
+ trigger_status = #{triggerStatus}
+ WHERE id = #{id}
+
+
+
+ UPDATE job_info
+ SET
+ inc_start_time = #{incStartTime}
+ WHERE id = #{id}
+
+
+
+ UPDATE job_info
+ SET
+ last_handle_code = #{lastHandleCode}
+ WHERE id = #{id}
+
+
+
+ UPDATE job_info
+ SET
+ inc_start_id = #{incStartId}
+ WHERE id = #{id}
+
+
\ No newline at end of file
diff --git a/czsj-system/src/main/resources/mapper/bigdata/JobLogGlueMapper.xml b/czsj-system/src/main/resources/mapper/bigdata/JobLogGlueMapper.xml
new file mode 100644
index 0000000..fb30632
--- /dev/null
+++ b/czsj-system/src/main/resources/mapper/bigdata/JobLogGlueMapper.xml
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ t.id,
+ t.job_id,
+ t.glue_type,
+ t.glue_source,
+ t.glue_remark,
+ t.add_time,
+ t.update_time
+
+
+
+ INSERT INTO job_logglue (
+ `job_id`,
+ `glue_type`,
+ `glue_source`,
+ `glue_remark`,
+ `add_time`,
+ `update_time`
+ ) VALUES (
+ #{jobId},
+ #{glueType},
+ #{glueSource},
+ #{glueRemark},
+ #{addTime},
+ #{updateTime}
+ );
+
+
+
+
+
+
+ DELETE FROM job_logglue
+ WHERE id NOT in(
+ SELECT id FROM(
+ SELECT id FROM job_logglue
+ WHERE `job_id` = #{jobId}
+ ORDER BY update_time desc
+ LIMIT 0, #{limit}
+ ) t1
+ ) AND `job_id` = #{jobId}
+
+
+
+ DELETE FROM job_logglue
+ WHERE `job_id` = #{jobId}
+
+
+
\ No newline at end of file
diff --git a/czsj-system/src/main/resources/mapper/bigdata/JobLogMapper.xml b/czsj-system/src/main/resources/mapper/bigdata/JobLogMapper.xml
new file mode 100644
index 0000000..d41c68e
--- /dev/null
+++ b/czsj-system/src/main/resources/mapper/bigdata/JobLogMapper.xml
@@ -0,0 +1,269 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ t.id,
+ t.job_group,
+ t.job_id,
+ t.executor_address,
+ t.executor_handler,
+ t.executor_param,
+ t.executor_sharding_param,
+ t.executor_fail_retry_count,
+ t.trigger_time,
+ t.trigger_code,
+ t.trigger_msg,
+ t.handle_time,
+ t.handle_code,
+ t.handle_msg,
+ t.alarm_status,
+ t.process_id,
+ t.max_id,
+ t.job_desc
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO job_log (
+ `job_group`,
+ `job_id`,
+ `job_desc`,
+ `trigger_time`,
+ `trigger_code`,
+ `handle_code`
+ ) VALUES (
+ #{jobGroup},
+ #{jobId},
+ #{jobDesc},
+ #{triggerTime},
+ #{triggerCode},
+ #{handleCode}
+ );
+
+
+
+
+ UPDATE job_log
+ SET
+ `trigger_time`= #{triggerTime},
+ `trigger_code`= #{triggerCode},
+ `trigger_msg`= #{triggerMsg},
+ `executor_address`= #{executorAddress},
+ `executor_handler`=#{executorHandler},
+ `executor_param`= #{executorParam},
+ `executor_sharding_param`= #{executorShardingParam},
+ `executor_fail_retry_count`= #{executorFailRetryCount},
+ `max_id` = #{maxId}
+ WHERE `id`= #{id}
+
+
+
+ UPDATE job_log
+ SET
+ `handle_time`= #{handleTime},
+ `handle_code`= #{handleCode},
+ `handle_msg`= #{handleMsg}
+ WHERE `id`= #{id}
+
+
+
+ UPDATE job_log
+ SET
+ `process_id`= #{processId}
+ WHERE `id`= #{id}
+
+
+
+ delete from job_log
+ WHERE job_id = #{jobId}
+
+
+
+
+
+
+
+
+
+ delete from job_log
+ WHERE id in
+
+ #{item}
+
+
+
+
+
+
+ UPDATE job_log
+ SET
+ `alarm_status` = #{newAlarmStatus}
+ WHERE `id`= #{logId} AND `alarm_status` = #{oldAlarmStatus}
+
+
+
\ No newline at end of file
diff --git a/czsj-system/src/main/resources/mapper/bigdata/JobLogReportMapper.xml b/czsj-system/src/main/resources/mapper/bigdata/JobLogReportMapper.xml
new file mode 100644
index 0000000..5284d74
--- /dev/null
+++ b/czsj-system/src/main/resources/mapper/bigdata/JobLogReportMapper.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ t.id,
+ t.trigger_day,
+ t.running_count,
+ t.suc_count,
+ t.fail_count
+
+
+
+ INSERT INTO job_log_report (
+ `trigger_day`,
+ `running_count`,
+ `suc_count`,
+ `fail_count`
+ ) VALUES (
+ #{triggerDay},
+ #{runningCount},
+ #{sucCount},
+ #{failCount}
+ );
+
+
+
+
+ UPDATE job_log_report
+ SET `running_count` = #{runningCount},
+ `suc_count` = #{sucCount},
+ `fail_count` = #{failCount}
+ WHERE `trigger_day` = #{triggerDay}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/czsj-system/src/main/resources/mapper/bigdata/JobLogSysMapper.xml b/czsj-system/src/main/resources/mapper/bigdata/JobLogSysMapper.xml
new file mode 100644
index 0000000..a67bd39
--- /dev/null
+++ b/czsj-system/src/main/resources/mapper/bigdata/JobLogSysMapper.xml
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select job_log_id, job_name, job_group, invoke_target, job_message, status, exception_info, create_time
+ from sys_job_log
+
+
+
+
+
+
+
+
+
+ delete from sys_job_log where job_log_id = #{jobLogId}
+
+
+
+ delete from sys_job_log where job_log_id in
+
+ #{jobLogId}
+
+
+
+
+ truncate table sys_job_log
+
+
+
+ insert into sys_job_log(
+ job_log_id,
+ job_name,
+ job_group,
+ invoke_target,
+ job_message,
+ status,
+ exception_info,
+ create_time
+ )values(
+ #{jobLogId},
+ #{jobName},
+ #{jobGroup},
+ #{invokeTarget},
+ #{jobMessage},
+ #{status},
+ #{exceptionInfo},
+ sysdate()
+ )
+
+
+
\ No newline at end of file
diff --git a/czsj-system/src/main/resources/mapper/bigdata/JobProjectMapper.xml b/czsj-system/src/main/resources/mapper/bigdata/JobProjectMapper.xml
new file mode 100644
index 0000000..7d52437
--- /dev/null
+++ b/czsj-system/src/main/resources/mapper/bigdata/JobProjectMapper.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/czsj-system/src/main/resources/mapper/bigdata/JobRegistryMapper.xml b/czsj-system/src/main/resources/mapper/bigdata/JobRegistryMapper.xml
new file mode 100644
index 0000000..d9e0087
--- /dev/null
+++ b/czsj-system/src/main/resources/mapper/bigdata/JobRegistryMapper.xml
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ t.id,
+ t.registry_group,
+ t.registry_key,
+ t.registry_value,
+ t.cpu_usage,
+ t.memory_usage,
+ t.load_average,
+ t.update_time
+
+
+
+
+
+ DELETE FROM job_registry
+ WHERE id in
+
+ #{item}
+
+
+
+
+
+
+ UPDATE job_registry
+ SET `update_time` = #{updateTime},
+ `cpu_usage`=#{cpuUsage},
+ `memory_usage`=#{memoryUsage},
+ `load_average`=#{loadAverage}
+ WHERE `registry_group` = #{registryGroup}
+ AND `registry_key` = #{registryKey}
+ AND `registry_value` = #{registryValue}
+
+
+
+ INSERT INTO job_registry( `registry_group` , `registry_key` , `registry_value`, `cpu_usage`,`memory_usage`,`load_average`,`update_time`)
+ VALUES( #{registryGroup} , #{registryKey} , #{registryValue},#{cpuUsage}, #{memoryUsage},#{loadAverage},#{updateTime})
+
+
+
+ DELETE FROM job_registry
+ WHERE registry_group = #{registryGroup}
+ AND registry_key = #{registryKey}
+ AND registry_value = #{registryValue}
+
+
+
\ No newline at end of file
diff --git a/czsj-system/src/main/resources/mapper/bigdata/JobSysMapper.xml b/czsj-system/src/main/resources/mapper/bigdata/JobSysMapper.xml
new file mode 100644
index 0000000..4543b2c
--- /dev/null
+++ b/czsj-system/src/main/resources/mapper/bigdata/JobSysMapper.xml
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select job_id, job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark
+ from sys_job
+
+
+
+
+
+
+
+
+
+
+ delete from sys_job where job_id = #{jobId}
+
+
+
+ delete from sys_job where job_id in
+
+ #{jobId}
+
+
+
+
+ update sys_job
+
+ job_name = #{jobName},
+ job_group = #{jobGroup},
+ invoke_target = #{invokeTarget},
+ cron_expression = #{cronExpression},
+ misfire_policy = #{misfirePolicy},
+ concurrent = #{concurrent},
+ status = #{status},
+ remark = #{remark},
+ update_by = #{updateBy},
+ update_time = sysdate()
+
+ where job_id = #{jobId}
+
+
+
+ insert into sys_job(
+ job_id,
+ job_name,
+ job_group,
+ invoke_target,
+ cron_expression,
+ misfire_policy,
+ concurrent,
+ status,
+ remark,
+ create_by,
+ create_time
+ )values(
+ #{jobId},
+ #{jobName},
+ #{jobGroup},
+ #{invokeTarget},
+ #{cronExpression},
+ #{misfirePolicy},
+ #{concurrent},
+ #{status},
+ #{remark},
+ #{createBy},
+ sysdate()
+ )
+
+
+
\ No newline at end of file
diff --git a/czsj-system/src/main/resources/mapper/bigdata/JobTemplateMapper.xml b/czsj-system/src/main/resources/mapper/bigdata/JobTemplateMapper.xml
new file mode 100644
index 0000000..338f7c6
--- /dev/null
+++ b/czsj-system/src/main/resources/mapper/bigdata/JobTemplateMapper.xml
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ t.id,
+ t.job_group,
+ t.job_cron,
+ t.job_desc,
+ t.add_time,
+ t.update_time,
+ t.user_id,
+ t.alarm_email,
+ t.executor_route_strategy,
+ t.executor_handler,
+ t.executor_param,
+ t.executor_block_strategy,
+ t.executor_timeout,
+ t.executor_fail_retry_count,
+ t.glue_type,
+ t.glue_source,
+ t.glue_remark,
+ t.glue_updatetime,
+ t.child_jobid,
+ t.trigger_last_time,
+ t.trigger_next_time,
+ t.job_json,
+ t.jvm_param,
+ t.project_id
+
+
+
+ p.name as project_name
+
+
+
+
+
+
+
+ INSERT INTO job_template (
+ job_group,
+ job_cron,
+ job_desc,
+ add_time,
+ update_time,
+ user_id,
+ alarm_email,
+ executor_route_strategy,
+ executor_handler,
+ executor_param,
+ executor_block_strategy,
+ executor_timeout,
+ executor_fail_retry_count,
+ glue_type,
+ glue_source,
+ glue_remark,
+ glue_updatetime,
+ child_jobid,
+ trigger_last_time,
+ trigger_next_time,
+ job_json,
+ jvm_param,
+ project_id
+ ) VALUES (
+ #{jobGroup},
+ #{jobCron},
+ #{jobDesc},
+ #{addTime},
+ #{updateTime},
+ #{userId},
+ #{alarmEmail},
+ #{executorRouteStrategy},
+ #{executorHandler},
+ #{executorParam},
+ #{executorBlockStrategy},
+ #{executorTimeout},
+ #{executorFailRetryCount},
+ #{glueType},
+ #{glueSource},
+ #{glueRemark},
+ #{glueUpdatetime},
+ #{childJobId},
+ #{triggerLastTime},
+ #{triggerNextTime},
+ #{jobJson},
+ #{jvmParam},
+ #{projectId}
+ );
+
+
+
+
+
+
+ UPDATE job_template
+ SET
+ job_group = #{jobGroup},
+ job_cron = #{jobCron},
+ job_desc = #{jobDesc},
+ update_time = #{updateTime},
+ user_id = #{userId},
+ alarm_email = #{alarmEmail},
+ executor_route_strategy = #{executorRouteStrategy},
+ executor_handler = #{executorHandler},
+ executor_param = #{executorParam},
+ executor_block_strategy = #{executorBlockStrategy},
+ executor_timeout = ${executorTimeout},
+ executor_fail_retry_count = ${executorFailRetryCount},
+ glue_type = #{glueType},
+ glue_source = #{glueSource},
+ glue_remark = #{glueRemark},
+ glue_updatetime = #{glueUpdatetime},
+ child_jobid = #{childJobId},
+ trigger_last_time = #{triggerLastTime},
+ trigger_next_time = #{triggerNextTime},
+ job_json=#{jobJson},
+ jvm_param=#{jvmParam},
+ project_id=#{projectId}
+ WHERE id = #{id}
+
+
+
+ DELETE
+ FROM job_template
+ WHERE id = #{id}
+
+
+
\ No newline at end of file
diff --git a/czsj-system/src/main/resources/mapper/bigdata/JobUserMapper.xml b/czsj-system/src/main/resources/mapper/bigdata/JobUserMapper.xml
new file mode 100644
index 0000000..e29dbfe
--- /dev/null
+++ b/czsj-system/src/main/resources/mapper/bigdata/JobUserMapper.xml
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ t.id,
+ t.username,
+ t.password,
+ t.role,
+ t.permission
+
+
+
+ t.id,
+ t.username,
+ t.role,
+ t.permission
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO job_user (
+ username,
+ password,
+ role,
+ permission
+ ) VALUES (
+ #{username},
+ #{password},
+ #{role},
+ #{permission}
+ );
+
+
+
+ UPDATE job_user
+ SET
+
+ password = #{password},
+
+ role = #{role},
+ permission = #{permission}
+ WHERE id = #{id}
+
+
+
+ DELETE
+ FROM job_user
+ WHERE id = #{id}
+
+
+
\ No newline at end of file
diff --git a/czsj-system/src/main/resources/mapper/bigdata/PermissionDaoMapper.xml b/czsj-system/src/main/resources/mapper/bigdata/PermissionDaoMapper.xml
new file mode 100644
index 0000000..0388812
--- /dev/null
+++ b/czsj-system/src/main/resources/mapper/bigdata/PermissionDaoMapper.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/czsj-system/src/main/resources/mapper/bigdata/SysServersMapper.xml b/czsj-system/src/main/resources/mapper/bigdata/SysServersMapper.xml
new file mode 100644
index 0000000..8ef0497
--- /dev/null
+++ b/czsj-system/src/main/resources/mapper/bigdata/SysServersMapper.xml
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, groupName, groupCode, serverAddress, osName, startTime, pid, cpuCores, cpuUtilization, cpuRate, jvmInitialMemory, jvmMaxMemory, jvmUsedMemory, physicalMemory, surplusMemory, usedMemory, diskStatus, create_time, create_by from sys_servers
+
+
+
+
+
+
+
+ insert into sys_servers
+
+ groupName,
+ groupCode,
+ serverAddress,
+ osName,
+ startTime,
+ pid,
+ cpuCores,
+ cpuUtilization,
+ cpuRate,
+ jvmInitialMemory,
+ jvmMaxMemory,
+ jvmUsedMemory,
+ physicalMemory,
+ surplusMemory,
+ usedMemory,
+ diskStatus,
+ create_time,
+ create_by,
+
+
+ #{groupname},
+ #{groupcode},
+ #{serveraddress},
+ #{osname},
+ #{starttime},
+ #{pid},
+ #{cpucores},
+ #{cpuutilization},
+ #{cpurate},
+ #{jvminitialmemory},
+ #{jvmmaxmemory},
+ #{jvmusedmemory},
+ #{physicalmemory},
+ #{surplusmemory},
+ #{usedmemory},
+ #{diskstatus},
+ #{createTime},
+ #{createBy},
+
+
+
+
+ update sys_servers
+
+ groupName = #{groupname},
+ groupCode = #{groupcode},
+ serverAddress = #{serveraddress},
+ osName = #{osname},
+ startTime = #{starttime},
+ pid = #{pid},
+ cpuCores = #{cpucores},
+ cpuUtilization = #{cpuutilization},
+ cpuRate = #{cpurate},
+ jvmInitialMemory = #{jvminitialmemory},
+ jvmMaxMemory = #{jvmmaxmemory},
+ jvmUsedMemory = #{jvmusedmemory},
+ physicalMemory = #{physicalmemory},
+ surplusMemory = #{surplusmemory},
+ usedMemory = #{usedmemory},
+ diskStatus = #{diskstatus},
+ create_time = #{createTime},
+ create_by = #{createBy},
+
+ where id = #{id}
+
+
+
+ delete from sys_servers where id = #{id} and serverAddress != 'localhost'
+
+
+
+ delete from sys_servers where id in
+
+ #{id}
+
+ and serverAddress != 'localhost'
+
+
\ No newline at end of file
diff --git a/packages/czsj-datax-executor_3.8.8_1.tar.gz b/packages/czsj-datax-executor_3.8.8_1.tar.gz
new file mode 100644
index 0000000..2ea9330
Binary files /dev/null and b/packages/czsj-datax-executor_3.8.8_1.tar.gz differ
diff --git a/pom.xml b/pom.xml
index 14ee134..213d430 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,7 +26,7 @@
6.1.2
2.13.0
4.1.2
- 1.18.16
+
5.4.1
2.3
0.9.1
@@ -93,7 +93,7 @@
org.projectlombok
lombok
- ${lombok.version}
+ 1.18.24