mirror of
https://gitee.com/dromara/mayfly-go
synced 2025-11-03 07:50:25 +08:00
86 lines
2.5 KiB
Go
86 lines
2.5 KiB
Go
package api
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"mayfly-go/internal/db/api/form"
|
|
"mayfly-go/internal/db/api/vo"
|
|
"mayfly-go/internal/db/application"
|
|
"mayfly-go/internal/db/domain/entity"
|
|
"mayfly-go/pkg/biz"
|
|
"mayfly-go/pkg/logx"
|
|
"mayfly-go/pkg/req"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
type DbTransferTask struct {
|
|
DbTransferTask application.DbTransferTask `inject:"DbTransferTaskApp"`
|
|
}
|
|
|
|
func (d *DbTransferTask) Tasks(rc *req.Ctx) {
|
|
queryCond, page := req.BindQueryAndPage[*entity.DbTransferTaskQuery](rc, new(entity.DbTransferTaskQuery))
|
|
res, err := d.DbTransferTask.GetPageList(queryCond, page, new([]vo.DbTransferTaskListVO))
|
|
biz.ErrIsNil(err)
|
|
rc.ResData = res
|
|
}
|
|
|
|
func (d *DbTransferTask) Logs(rc *req.Ctx) {
|
|
queryCond, page := req.BindQueryAndPage[*entity.DbTransferLogQuery](rc, new(entity.DbTransferLogQuery))
|
|
res, err := d.DbTransferTask.GetTaskLogList(queryCond, page, new([]vo.DbTransferLogListVO))
|
|
biz.ErrIsNil(err)
|
|
rc.ResData = res
|
|
}
|
|
|
|
func (d *DbTransferTask) SaveTask(rc *req.Ctx) {
|
|
reqForm := &form.DbTransferTaskForm{}
|
|
task := req.BindJsonAndCopyTo[*entity.DbTransferTask](rc, reqForm, new(entity.DbTransferTask))
|
|
|
|
rc.ReqParam = reqForm
|
|
biz.ErrIsNil(d.DbTransferTask.Save(rc.MetaCtx, task))
|
|
}
|
|
|
|
func (d *DbTransferTask) DeleteTask(rc *req.Ctx) {
|
|
taskId := rc.PathParam("taskId")
|
|
rc.ReqParam = taskId
|
|
ids := strings.Split(taskId, ",")
|
|
|
|
for _, v := range ids {
|
|
value, err := strconv.Atoi(v)
|
|
biz.ErrIsNilAppendErr(err, "string类型转换为int异常: %s")
|
|
biz.ErrIsNil(d.DbTransferTask.Delete(rc.MetaCtx, uint64(value)))
|
|
}
|
|
}
|
|
|
|
func (d *DbTransferTask) Run(rc *req.Ctx) {
|
|
taskId := d.changeState(rc, entity.DbTransferTaskRunStateRunning)
|
|
go d.DbTransferTask.Run(taskId, func(msg string, err error) {
|
|
// 修改状态为停止
|
|
if err != nil {
|
|
logx.Error(msg, err)
|
|
} else {
|
|
logx.Info(fmt.Sprintf("执行迁移完成,%s", msg))
|
|
}
|
|
// 修改任务状态
|
|
task := new(entity.DbTransferTask)
|
|
task.Id = taskId
|
|
task.RunningState = entity.DbTransferTaskRunStateStop
|
|
biz.ErrIsNil(d.DbTransferTask.UpdateById(context.Background(), task))
|
|
})
|
|
|
|
}
|
|
|
|
func (d *DbTransferTask) Stop(rc *req.Ctx) {
|
|
taskId := d.changeState(rc, entity.DbTransferTaskRunStateStop)
|
|
d.DbTransferTask.Stop(taskId)
|
|
}
|
|
|
|
func (d *DbTransferTask) changeState(rc *req.Ctx, RunningState int) uint64 {
|
|
reqForm := &form.DbTransferTaskStatusForm{RunningState: RunningState}
|
|
task := req.BindJsonAndCopyTo[*entity.DbTransferTask](rc, reqForm, new(entity.DbTransferTask))
|
|
biz.ErrIsNil(d.DbTransferTask.UpdateById(rc.MetaCtx, task))
|
|
// 记录请求日志
|
|
rc.ReqParam = reqForm
|
|
return task.Id
|
|
}
|