mirror of
				https://github.com/TeaOSLab/EdgeAdmin.git
				synced 2025-11-04 13:10:26 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			104 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
 | 
						|
 | 
						|
package tasks
 | 
						|
 | 
						|
import (
 | 
						|
	"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
 | 
						|
	"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
						|
	"github.com/iwind/TeaGo/maps"
 | 
						|
	timeutil "github.com/iwind/TeaGo/utils/time"
 | 
						|
)
 | 
						|
 | 
						|
type IndexAction struct {
 | 
						|
	actionutils.ParentAction
 | 
						|
}
 | 
						|
 | 
						|
func (this *IndexAction) Init() {
 | 
						|
	this.Nav("", "", "task")
 | 
						|
}
 | 
						|
 | 
						|
func (this *IndexAction) RunGet(params struct {
 | 
						|
	Status int32
 | 
						|
}) {
 | 
						|
	this.Data["status"] = params.Status
 | 
						|
	if params.Status > 3 {
 | 
						|
		params.Status = 0
 | 
						|
	}
 | 
						|
 | 
						|
	countWaitingResp, err := this.RPC().MessageTaskRPC().CountMessageTasksWithStatus(this.AdminContext(), &pb.CountMessageTasksWithStatusRequest{Status: pb.CountMessageTasksWithStatusRequest_MessageTaskStatusNone})
 | 
						|
	if err != nil {
 | 
						|
		this.ErrorPage(err)
 | 
						|
		return
 | 
						|
	}
 | 
						|
	var countWaiting = countWaitingResp.Count
 | 
						|
	this.Data["countWaiting"] = countWaiting
 | 
						|
 | 
						|
	countFailedResp, err := this.RPC().MessageTaskRPC().CountMessageTasksWithStatus(this.AdminContext(), &pb.CountMessageTasksWithStatusRequest{Status: pb.CountMessageTasksWithStatusRequest_MessageTaskStatusFailed})
 | 
						|
	if err != nil {
 | 
						|
		this.ErrorPage(err)
 | 
						|
		return
 | 
						|
	}
 | 
						|
	var countFailed = countFailedResp.Count
 | 
						|
	this.Data["countFailed"] = countFailed
 | 
						|
 | 
						|
	// 列表
 | 
						|
	var total = int64(0)
 | 
						|
	switch params.Status {
 | 
						|
	case 0:
 | 
						|
		total = countWaiting
 | 
						|
	case 3:
 | 
						|
		total = countFailed
 | 
						|
	}
 | 
						|
	page := this.NewPage(total)
 | 
						|
	this.Data["page"] = page.AsHTML()
 | 
						|
 | 
						|
	var taskMaps = []maps.Map{}
 | 
						|
	tasksResp, err := this.RPC().MessageTaskRPC().ListMessageTasksWithStatus(this.AdminContext(), &pb.ListMessageTasksWithStatusRequest{
 | 
						|
		Status: pb.ListMessageTasksWithStatusRequest_Status(params.Status),
 | 
						|
		Offset: page.Offset,
 | 
						|
		Size:   page.Size,
 | 
						|
	})
 | 
						|
	if err != nil {
 | 
						|
		this.ErrorPage(err)
 | 
						|
		return
 | 
						|
	}
 | 
						|
	for _, task := range tasksResp.MessageTasks {
 | 
						|
		var resultMap = maps.Map{}
 | 
						|
		var result = task.Result
 | 
						|
		if result != nil {
 | 
						|
			resultMap = maps.Map{
 | 
						|
				"isOk":     result.IsOk,
 | 
						|
				"error":    result.Error,
 | 
						|
				"response": result.Response,
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		//var recipients = []string{}
 | 
						|
		var user = ""
 | 
						|
		var instanceMap maps.Map
 | 
						|
		if task.MessageRecipient != nil {
 | 
						|
			user = task.MessageRecipient.User
 | 
						|
			if task.MessageRecipient.MessageMediaInstance != nil {
 | 
						|
				instanceMap = maps.Map{
 | 
						|
					"id":   task.MessageRecipient.MessageMediaInstance.Id,
 | 
						|
					"name": task.MessageRecipient.MessageMediaInstance.Name,
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		taskMaps = append(taskMaps, maps.Map{
 | 
						|
			"id":          task.Id,
 | 
						|
			"subject":     task.Subject,
 | 
						|
			"body":        task.Body,
 | 
						|
			"createdTime": timeutil.FormatTime("Y-m-d H:i:s", task.CreatedAt),
 | 
						|
			"result":      resultMap,
 | 
						|
			"status":      task.Status,
 | 
						|
			"user":        user,
 | 
						|
			"instance":    instanceMap,
 | 
						|
		})
 | 
						|
	}
 | 
						|
	this.Data["tasks"] = taskMaps
 | 
						|
 | 
						|
	this.Show()
 | 
						|
}
 |