123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- 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
- }
- }
|