123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- package converge
- import (
- "encoding/json"
- "go-common/library/log"
- "strconv"
- "go-common/app/interface/main/app-channel/model"
- )
- type Card struct {
- ID int64
- ReType int
- ReValue string
- Title string
- Cover string
- Content json.RawMessage
- Contents []*Content
- }
- type JSONContent struct {
- CType string `json:"ctype"`
- CTitle string `json:"ctitle"`
- CValue json.RawMessage `json:"cvalue"`
- }
- type Content struct {
- Goto string `json:"goto,omitempty"`
- ID int64 `json:"id,omitempty"`
- Title string `json:"title,omitempty"`
- }
- func (c *Card) Change() {
- var (
- contents []*Content
- jsonContents []*JSONContent
- err error
- )
- if err = json.Unmarshal(c.Content, &jsonContents); err != nil {
- log.Error("json.Unmarshal(%s) error(%v)", c.Content, err)
- return
- }
- contents = make([]*Content, 0, len(jsonContents))
- for _, js := range jsonContents {
- switch js.CType {
- case "0", "1", "2":
- content := &Content{Title: js.CTitle}
- if js.CType == "0" {
- content.Goto = model.GotoAv
- } else if js.CType == "1" {
- content.Goto = model.GotoLive
- } else if js.CType == "2" {
- content.Goto = model.GotoArticle
- } else {
- continue
- }
- var (
- idStr string
- id int64
- )
- if err = json.Unmarshal(js.CValue, &idStr); err != nil {
- log.Error("json.Unmarshal(%s) error(%v)", js.CValue, err)
- continue
- }
- if id, _ = strconv.ParseInt(idStr, 10, 64); id != 0 {
- content.ID = id
- contents = append(contents, content)
- }
- }
- }
- c.Contents = contents
- }
|