61 lines
1.4 KiB
Go
61 lines
1.4 KiB
Go
package operate
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"go-common/app/interface/main/app-card/model"
|
|
"go-common/library/log"
|
|
)
|
|
|
|
type Follow struct {
|
|
ID int64 `json:"id,omitempty"`
|
|
Type string `json:"type,omitempty"`
|
|
Title string `json:"title,omitempty"`
|
|
Content json.RawMessage `json:"content,omitempty"`
|
|
// extra
|
|
Items []*Follow `json:"items,omitempty"`
|
|
Goto model.Gt `json:"goto,omitempty"`
|
|
Pid int64 `json:"pid,omitempty"`
|
|
Tid int64 `json:"tid,omitempty"`
|
|
}
|
|
|
|
func (c *Follow) Change() {
|
|
switch c.Type {
|
|
case "upper", "channel_three":
|
|
var contents []*struct {
|
|
Ctype string `json:"ctype,omitempty"`
|
|
Cvalue int64 `json:"cvalue,omitempty"`
|
|
}
|
|
if err := json.Unmarshal(c.Content, &contents); err != nil {
|
|
log.Error("%+v", err)
|
|
return
|
|
}
|
|
items := make([]*Follow, 0, len(contents))
|
|
for _, content := range contents {
|
|
item := &Follow{Type: content.Ctype, Pid: content.Cvalue}
|
|
switch content.Ctype {
|
|
case "mid":
|
|
item.Goto = model.GotoMid
|
|
case "channel_id":
|
|
item.Goto = model.GotoTag
|
|
}
|
|
items = append(items, item)
|
|
}
|
|
if len(items) < 3 {
|
|
return
|
|
}
|
|
c.Items = items
|
|
case "channel_single":
|
|
var content struct {
|
|
Aid int64 `json:"aid"`
|
|
ChannelID int64 `json:"channel_id"`
|
|
}
|
|
if err := json.Unmarshal(c.Content, &content); err != nil {
|
|
log.Error("%+v", err)
|
|
return
|
|
}
|
|
c.Pid = content.Aid
|
|
c.Tid = content.ChannelID
|
|
}
|
|
}
|