You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
1.9 KiB
87 lines
1.9 KiB
package vip |
|
|
|
import ( |
|
"context" |
|
"net/url" |
|
|
|
"go-common/app/interface/main/reply/conf" |
|
"go-common/app/interface/main/reply/model/vip" |
|
"go-common/library/log" |
|
bm "go-common/library/net/http/blademaster" |
|
) |
|
|
|
const ( |
|
_emojiURL = "/internal/v1/emoji/list" |
|
) |
|
|
|
type result struct { |
|
Code int `json:"code"` |
|
Data []*struct { |
|
ID int64 `json:"id"` |
|
Name string `json:"name"` |
|
URL string `json:"path"` |
|
State int8 `json:"deleted"` |
|
Emojis []*struct { |
|
ID int64 `json:"id"` |
|
Name string `json:"name"` |
|
URL string `json:"path"` |
|
State int8 `json:"deleted"` |
|
Remark string `json:"remark"` |
|
} `json:"emojiList"` |
|
} `json:"data"` |
|
} |
|
|
|
// Dao dao. |
|
type Dao struct { |
|
emojiURL string |
|
httpClient *bm.Client |
|
} |
|
|
|
// New new a dao and return. |
|
func New(c *conf.Config) *Dao { |
|
d := &Dao{ |
|
httpClient: bm.NewClient(c.HTTPClient), |
|
emojiURL: c.Reply.VipURL + _emojiURL, |
|
} |
|
return d |
|
} |
|
|
|
// Emoji return emojis to cache |
|
func (dao *Dao) Emoji(c context.Context) (emjs []*vip.Emoji, emjM map[string]int64, err error) { |
|
var res result |
|
params := url.Values{} |
|
if err = dao.httpClient.Get(c, dao.emojiURL, "", params, &res); err != nil { |
|
log.Error("vip url(%s) error(%v)", dao.emojiURL+"?"+params.Encode(), err) |
|
return |
|
} |
|
if res.Code != 0 { |
|
log.Error("vip url(%s) error(%v)", dao.emojiURL+"?"+params.Encode(), res.Code) |
|
return |
|
} |
|
emjs = make([]*vip.Emoji, 0, len(res.Data)) |
|
emjM = make(map[string]int64) |
|
for _, d := range res.Data { |
|
var tmp = &vip.Emoji{ |
|
Pid: d.ID, |
|
Pname: d.Name, |
|
Purl: d.URL, |
|
Pstate: d.State, |
|
} |
|
emoTmps := make([]*vip.Face, 0, len(d.Emojis)) |
|
for _, e := range d.Emojis { |
|
var emoTmp = &vip.Face{ |
|
ID: e.ID, |
|
Name: e.Name, |
|
URL: e.URL, |
|
State: e.State, |
|
} |
|
emoTmps = append(emoTmps, emoTmp) |
|
if d.State == 0 && e.State == 0 { |
|
emjM[e.Name] = e.ID |
|
} |
|
} |
|
tmp.Emojis = emoTmps |
|
emjs = append(emjs, tmp) |
|
} |
|
return |
|
}
|
|
|