forked from cookieY/Yearning
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
+ 优化了用户界面,超级管理员不得更改角色,更改密码只会在当前用户为admin时才会生效 + 优化角色文案: 原admin,guest,perform 分别对应为 审核人,提交人,执行人 + 优化执行逻辑,提高多条语句执行效率。 + 实现以工单为基准的事务回滚操作(如一个订单内一条语句执行错误则该工单之前已执行成功的语句自动回滚) + 优化审核规则, 取消允许设置字符集,允许设置排列顺序 开关。 用户在允许的Charset范围/允许的Collate范围 内填写相关字符集即可,不再需要开启2个开关。 + 优化用户赋权返回提示文案 + UI细节调整 + 审核规则新增基于主键回滚开关 + 修复初始化语句导致超级管理员权限异常的问题 + 使用yee 框架替换echo
- Loading branch information
Showing
22 changed files
with
432 additions
and
739 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
package apis | ||
|
||
import ( | ||
"Yearning-go/src/lib" | ||
"Yearning-go/src/model" | ||
pb "Yearning-go/src/proto" | ||
"time" | ||
) | ||
|
||
type OSC struct { | ||
WorkId string `json:"work_id"` | ||
} | ||
|
||
type Review struct { | ||
WorkId string `json:"work_id"` | ||
Type int `json:"type"` | ||
Juno pb.LibraAuditOrder | ||
Order model.CoreSqlOrder | ||
} | ||
|
||
type Reviewer interface { | ||
DelayKill() string | ||
IsKill() bool | ||
} | ||
|
||
type OSCer interface { | ||
Kill() string | ||
Percent() map[string]int | ||
} | ||
|
||
func (r *Review) DelayKill() string { | ||
model.DB().Model(model.CoreSqlOrder{}).Where("work_id =?", r).Update(&model.CoreSqlOrder{IsKill: 1}) | ||
model.DB().Model(&model.CoreSqlOrder{}).Where("work_id =?", r).Updates(map[string]interface{}{"status": 4, "execute_time": time.Now().Format("2006-01-02 15:04")}) | ||
return "kill指令已发送!将在到达执行时间时自动取消,状态已更改为执行失败!" | ||
} | ||
|
||
func (r *Review) IsKill() bool { | ||
var c model.CoreSqlOrder | ||
model.DB().Where("work_id =?", r.WorkId).First(&c) | ||
return c.IsKill == 1 | ||
} | ||
|
||
func (r *Review) Init() *Review { | ||
var sor model.CoreDataSource | ||
model.DB().Where("source =?", r.Order.Source).First(&sor) | ||
|
||
ps := lib.Decrypt(sor.Password) | ||
r.Juno = pb.LibraAuditOrder{ | ||
SQL: r.Order.SQL, | ||
Backup: r.Order.Backup == 1, | ||
Execute: true, | ||
Source: &pb.Source{Addr: sor.IP, Port: int32(sor.Port), User: sor.Username, Password: ps}, | ||
WorkId: r.Order.WorkId, | ||
IsDML: false, | ||
DataBase: r.Order.DataBase, | ||
Table: r.Order.Table, | ||
} | ||
return r | ||
} | ||
|
||
func (r *Review) Executor() { | ||
switch r.Order.Type { | ||
case 0: | ||
go func() { | ||
t1 := lib.TimerEx(&r.Order) | ||
if t1 > 0 { | ||
tick := time.NewTicker(t1) | ||
for { | ||
select { | ||
case <-tick.C: | ||
lib.ExDDLClient(&r.Juno) | ||
tick.Stop() | ||
goto ENDCHECK | ||
} | ||
ENDCHECK: | ||
break | ||
} | ||
} else { | ||
lib.ExDDLClient(&r.Juno) | ||
} | ||
}() | ||
model.DB().Model(&model.CoreSqlOrder{}).Where("work_id =?", r.Order.WorkId).Updates(map[string]interface{}{"status": 3}) | ||
|
||
case 1: | ||
go func() { | ||
r.Juno.IsDML = true | ||
t1 := lib.TimerEx(&r.Order) | ||
if t1 > 0 { | ||
tick := time.NewTicker(t1) | ||
for { | ||
select { | ||
case <-tick.C: | ||
lib.ExDMLClient(&r.Juno) | ||
tick.Stop() | ||
goto ENDCHECK | ||
} | ||
ENDCHECK: | ||
break | ||
} | ||
} else { | ||
lib.ExDMLClient(&r.Juno) | ||
} | ||
}() | ||
model.DB().Model(&model.CoreSqlOrder{}).Where("work_id =?", r.Order.WorkId).Updates(map[string]interface{}{"status": 3}) | ||
} | ||
} | ||
|
||
func (o *OSC) Percent() map[string]int { | ||
var d model.CoreSqlOrder | ||
model.DB().Where("work_id =?", o.WorkId).First(&d) | ||
return map[string]int{"p": d.Percent, "s": d.Current} | ||
} | ||
|
||
func (o *OSC) Kill() string { | ||
lib.ExKillOsc(&pb.LibraAuditOrder{WorkId:o.WorkId}) | ||
return "kill指令已发送!如工单最后显示为执行失败则生效!" | ||
} |
Oops, something went wrong.