77 lines
1.9 KiB
Go
77 lines
1.9 KiB
Go
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)
|
||
}
|