package dao import ( "context" "ppgo_job/consts" "ppgo_job/model/entity" "github.com/gogf/gf/v2/frame/g" ) var Task = new(taskDao) type taskDao struct{} func (d *taskDao) Insert(ctx context.Context, data *entity.Task) (id int64, err error) { return InsertAndGetId(ctx, consts.TableTask, data) } func (d *taskDao) GetById(ctx context.Context, id int) (*entity.Task, error) { var result *entity.Task err := GetById(ctx, consts.TableTask, id, &result) return result, err } func (d *taskDao) GetList(ctx context.Context, pageNum, pageSize int, filters ...interface{}) ([]*entity.Task, int, error) { m := g.DB().Model(consts.TableTask).Ctx(ctx) m = buildFilters(m, filters) order := extractOrder(filters) total, err := m.Count() if err != nil { return nil, 0, err } offset, limit := ParsePage(pageNum, pageSize) var result []*entity.Task if order == "" { order = entity.TaskCols.Status + " desc, " + entity.TaskCols.TaskName + " asc, " + entity.TaskCols.Id + " desc" } err = m.Limit(limit).Offset(offset).Order(order).Scan(&result) return result, total, err } func (d *taskDao) GetEnabledList(ctx context.Context) ([]*entity.Task, error) { var result []*entity.Task err := g.DB().Model(consts.TableTask).Ctx(ctx).Where(entity.TaskCols.Status, 1).Scan(&result) return result, err } func (d *taskDao) Update(ctx context.Context, data *entity.Task) error { return Update(ctx, consts.TableTask, data, g.Map{entity.TaskCols.Id: data.Id}) } func (d *taskDao) UpdateFields(ctx context.Context, id int, data g.Map) error { return Update(ctx, consts.TableTask, data, g.Map{entity.TaskCols.Id: id}) } func (d *taskDao) Delete(ctx context.Context, id int) error { return d.UpdateFields(ctx, id, g.Map{entity.TaskCols.Status: -1}) } func (d *taskDao) ResetGroupId(ctx context.Context, groupId int) error { _, err := g.DB().Model(consts.TableTask).Ctx(ctx).Where(entity.TaskCols.GroupId, groupId).Data(g.Map{entity.TaskCols.GroupId: 0}).Update() return err } func (d *taskDao) TotalRunNum(ctx context.Context) (int64, error) { r, err := g.DB().Model(consts.TableTask).Ctx(ctx).Fields("COALESCE(SUM(" + entity.TaskCols.ExecuteTimes + "), 0) as num").One() if err != nil { return 0, err } return r["num"].Int64(), nil }