82 lines
1.9 KiB
Go
82 lines
1.9 KiB
Go
// Copyright 2023 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
|
|
//go:build plus
|
|
|
|
package models
|
|
|
|
import (
|
|
"github.com/TeaOSLab/EdgeAPI/internal/senders/mediasenders"
|
|
"github.com/iwind/TeaGo/dbs"
|
|
"github.com/iwind/TeaGo/lists"
|
|
)
|
|
|
|
// UpdateMessageMedias 设置当前所有可用的媒介
|
|
func (this *MessageMediaDAO) UpdateMessageMedias(tx *dbs.Tx, mediaDefinitions []*mediasenders.MediaDefinition) error {
|
|
// 新的媒介信息
|
|
var mediaTypes = []string{}
|
|
for index, m := range mediaDefinitions {
|
|
var order = len(mediaDefinitions) - index
|
|
var mediaType = m.Code
|
|
mediaTypes = append(mediaTypes, mediaType)
|
|
|
|
var name = m.Name
|
|
var description = m.Description
|
|
var userDescription = m.User
|
|
var isOn = m.IsOn
|
|
|
|
mediaId, err := this.Query(tx).
|
|
ResultPk().
|
|
Attr("type", mediaType).
|
|
FindInt64Col(0)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
var op = NewMessageMediaOperator()
|
|
if mediaId > 0 {
|
|
op.Id = mediaId
|
|
}
|
|
op.Name = name
|
|
op.Type = mediaType
|
|
op.Description = description
|
|
op.UserDescription = userDescription
|
|
op.IsOn = isOn
|
|
op.Order = order
|
|
op.State = MessageMediaStateEnabled
|
|
err = this.Save(tx, op)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
// 老的媒介信息
|
|
ones, err := this.Query(tx).
|
|
FindAll()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
for _, one := range ones {
|
|
var mediaType = one.(*MessageMedia).Type
|
|
if !lists.ContainsString(mediaTypes, mediaType) {
|
|
err := this.Query(tx).
|
|
Pk(one.(*MessageMedia).Id).
|
|
Set("state", MessageMediaStateDisabled).
|
|
UpdateQuickly()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// FindEnabledMediaWithType 根据类型查找媒介
|
|
func (this *MessageMediaDAO) FindEnabledMediaWithType(tx *dbs.Tx, mediaType string) (*MessageMedia, error) {
|
|
one, err := this.Query(tx).
|
|
Attr("type", mediaType).
|
|
State(MessageMediaStateEnabled).
|
|
Find()
|
|
if one == nil || err != nil {
|
|
return nil, err
|
|
}
|
|
return one.(*MessageMedia), nil
|
|
}
|