forked from JointCloud/pcm-coordinator
70 lines
2.6 KiB
Go
70 lines
2.6 KiB
Go
package apps
|
||
|
||
import (
|
||
"context"
|
||
"gorm.io/gorm"
|
||
"time"
|
||
|
||
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc"
|
||
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/types"
|
||
|
||
"github.com/zeromicro/go-zero/core/logx"
|
||
)
|
||
|
||
type AppListLogic struct {
|
||
logx.Logger
|
||
ctx context.Context
|
||
svcCtx *svc.ServiceContext
|
||
}
|
||
|
||
func NewAppListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AppListLogic {
|
||
return &AppListLogic{
|
||
Logger: logx.WithContext(ctx),
|
||
ctx: ctx,
|
||
svcCtx: svcCtx,
|
||
}
|
||
}
|
||
|
||
type Task struct {
|
||
Id int64 `db:"id"` // id
|
||
Name string `db:"name"` // 作业名称
|
||
Description string `db:"description"` // 作业描述
|
||
Status string `db:"status"` // 作业状态
|
||
Strategy int64 `db:"strategy"` // 策略
|
||
SynergyStatus int64 `db:"synergy_status"` // 协同状态(0-未协同、1-已协同)
|
||
CommitTime time.Time `db:"commit_time"` // 提交时间
|
||
StartTime string `db:"start_time"` // 开始时间
|
||
EndTime string `db:"end_time"` // 结束运行时间
|
||
RunningTime int64 `db:"running_time"` // 已运行时间(单位秒)
|
||
YamlString string `db:"yaml_string"`
|
||
Result string `db:"result"` // 作业结果
|
||
DeletedAt gorm.DeletedAt `gorm:"index"`
|
||
NsID string `db:"ns_id"`
|
||
PName string `db:"p_name"` // p端名称
|
||
PId int64 `db:"p_id"` // p端id
|
||
}
|
||
|
||
func (l *AppListLogic) AppList(req *types.AppListReq) (resp *types.AppListResp, err error) {
|
||
var tasks []Task
|
||
resp = &types.AppListResp{}
|
||
l.svcCtx.DbEngin.Raw("SELECT t.*,phy.name as p_name,phy.id as p_id FROM task t LEFT JOIN cloud c ON c.task_id = t.id join sc_participant_phy_info phy on c.participant_id = phy.id WHERE c.kind in ('Deployment', 'StatefulSet', 'Ingress', 'Service') AND t.`ns_id` = ? AND t.`deleted_at` IS NULL ORDER BY t.created_time Desc", req.Namespace).Scan(&tasks)
|
||
for _, task := range tasks {
|
||
|
||
var replicas []types.Replica
|
||
l.svcCtx.DbEngin.Raw("SELECT sc_participant_phy_info.name,replica FROM cloud left join sc_participant_phy_info on cloud.participant_id = sc_participant_phy_info.id WHERE task_id =?", task.Id).Scan(&replicas)
|
||
|
||
resp.Apps = append(resp.Apps, types.App{
|
||
Id: task.Id,
|
||
Name: task.Name,
|
||
Status: task.Status,
|
||
StartTime: task.StartTime,
|
||
EndTime: task.EndTime,
|
||
CreateTime: task.CommitTime.Format("2006-01-02 15:04:05"),
|
||
ParticipantId: task.PId,
|
||
ParticipantName: task.PName,
|
||
Replicas: replicas,
|
||
})
|
||
}
|
||
return
|
||
}
|