yunzer_go/server/services/task.go
2025-11-13 11:28:00 +08:00

77 lines
1.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package services
import (
"fmt"
"server/models"
"time"
)
// ListOATasks 服务层:分页查询任务
func ListOATasks(tenantId int, keyword, status, priority string, page, pageSize int) (tasks []*models.Task, total int64, err error) {
return models.ListTasks(tenantId, keyword, status, priority, page, pageSize)
}
// GetOATaskById 服务层:获取任务详情
func GetOATaskById(id int) (*models.Task, error) {
return models.GetTaskById(id)
}
// CreateOATask 服务层:创建任务
func CreateOATask(t *models.Task, tenantId int, username string) error {
// 填充租户
if t.TenantId == 0 && tenantId > 0 {
t.TenantId = tenantId
}
// 默认状态与优先级
if t.TaskStatus == "" {
t.TaskStatus = ""
}
if t.Priority == "" {
t.Priority = ""
}
// 任务编号
if t.TaskNo == "" {
t.TaskNo = genTaskNo(t.TenantId)
}
// 创建人与操作人
if t.CreatorName == "" && username != "" {
t.CreatorName = username
}
if t.OperatorName == "" && username != "" {
t.OperatorName = username
}
return models.CreateTask(t)
}
// UpdateOATask 服务层:更新任务
func UpdateOATask(t *models.Task, username string, cols ...string) error {
if username != "" {
t.OperatorName = username
}
return models.UpdateTask(t, cols...)
}
// DeleteOATask 服务层:软删除任务
func DeleteOATask(id int, operatorName string, operatorId int) error {
// 读取当前任务
t, err := models.GetTaskById(id)
if err != nil {
return err
}
now := time.Now()
t.DeletedTime = &now
t.OperatorName = operatorName
t.OperatorId = operatorId
return models.UpdateTask(t, "deleted_time", "operator_name", "operator_id")
}
// 生成任务编号TASK{tenantId}{YYYYMMDDHHMMSS}
func genTaskNo(tenantId int) string {
return fmt.Sprintf("TASK%d%s", tenantId, time.Now().Format("20060102150405"))
}
// 仪表盘获取待办任务
func GetTodoTasks(tenantId int, id int, limit int) (tasks []*models.Task, err error) {
return models.GetTodoTasks(tenantId, id, limit)
}