123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- package model
- import (
- "encoding/json"
- "errors"
- xtime "go-common/library/time"
- "strconv"
- "strings"
- )
- // EmbedMid is
- type EmbedMid struct {
- Mid int64 `json:"mid"`
- }
- // PassportSummary is
- type PassportSummary struct {
- EmbedMid
- TelStatus int64 `json:"tel_status"`
- CountryID int64 `json:"country_id"`
- JoinIP string `json:"join_ip"`
- JoinTime string `json:"join_time"`
- EmailSuffix string `json:"email_suffix"`
- OriginType int64 `json:"origin_type"`
- RegType int64 `json:"reg_type"`
- }
- // RelationStat is
- type RelationStat struct {
- EmbedMid
- Following int64 `json:"following"`
- Whisper int64 `json:"whisper"`
- Black int64 `json:"black"`
- Follower int64 `json:"follower"`
- }
- // BlockSummary is
- type BlockSummary struct {
- EmbedMid
- BlockStatus int64 `json:"block_status"`
- StartTime string `json:"start_time"`
- EndTime string `json:"end_time"`
- }
- // MemberBase is
- type MemberBase struct {
- EmbedMid
- Birthday string `json:"birthday"`
- Face string `json:"face"`
- Name string `json:"name"`
- Rank int64 `json:"rank"`
- Sex int64 `json:"sex"`
- Sign string `json:"sign"`
- }
- // MemberOfficial is
- type MemberOfficial struct {
- EmbedMid
- Role int64 `json:"role"`
- Title string `json:"title"`
- Description string `json:"description"`
- }
- // MemberExp is
- type MemberExp struct {
- EmbedMid
- Exp int64 `json:"exp"`
- }
- // AccountSummary is
- type AccountSummary struct {
- MemberBase
- Exp *MemberExp `json:"exp"`
- Official *MemberOfficial `json:"official"`
- RelationStat *RelationStat `json:"relation_stat"`
- Block *BlockSummary `json:"block"`
- Passport *PassportSummary `json:"passport"`
- }
- // NewAccountSummary is
- func NewAccountSummary() *AccountSummary {
- return &AccountSummary{
- Exp: &MemberExp{},
- Official: &MemberOfficial{},
- Passport: &PassportSummary{},
- RelationStat: &RelationStat{},
- Block: &BlockSummary{},
- }
- }
- func (sum *AccountSummary) String() string {
- b, _ := json.Marshal(sum)
- return string(b)
- }
- // Key is
- func (e *EmbedMid) Key() (string, error) {
- if e.Mid == 0 {
- return "", errors.New("Empty mid")
- }
- return MidKey(e.Mid), nil
- }
- // Marshal is
- func (b *MemberBase) Marshal() (map[string][]byte, error) {
- data := map[string][]byte{
- "birthday": []byte(b.Birthday),
- "face": []byte(b.Face),
- "mid": []byte(strconv.FormatInt(b.Mid, 10)),
- "name": []byte(b.Name),
- "rank": []byte(strconv.FormatInt(b.Rank, 10)),
- "sex": []byte(strconv.FormatInt(b.Sex, 10)),
- "sign": []byte(b.Sign),
- }
- return data, nil
- }
- // Marshal is
- func (o *MemberOfficial) Marshal() (map[string][]byte, error) {
- data := map[string][]byte{
- "official.mid": []byte(strconv.FormatInt(o.Mid, 10)),
- "official.role": []byte(strconv.FormatInt(o.Role, 10)),
- "official.title": []byte(o.Title),
- "official.description": []byte(o.Description),
- }
- return data, nil
- }
- // Marshal is
- func (e *MemberExp) Marshal() (map[string][]byte, error) {
- data := map[string][]byte{
- "exp.mid": []byte(strconv.FormatInt(e.Mid, 10)),
- "exp.exp": []byte(strconv.FormatInt(e.Exp, 10)),
- }
- return data, nil
- }
- // reverse returns its argument string reversed rune-wise left to right.
- func reverse(s string) string {
- r := []rune(s)
- for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
- r[i], r[j] = r[j], r[i]
- }
- return string(r)
- }
- func rpad(s string, c string, l int) string {
- dt := l - len(s)
- if dt <= 0 {
- return s
- }
- return s + strings.Repeat(c, dt)
- }
- // MidKey is
- func MidKey(mid int64) string {
- ms := strconv.FormatInt(mid, 10)
- return rpad(reverse(ms), "0", 16)
- }
- // Marshal is
- func (r *RelationStat) Marshal() (map[string][]byte, error) {
- data := map[string][]byte{
- "relation.mid": []byte(strconv.FormatInt(r.Mid, 10)),
- "relation.following": []byte(strconv.FormatInt(r.Following, 10)),
- "relation.whisper": []byte(strconv.FormatInt(r.Whisper, 10)),
- "relation.black": []byte(strconv.FormatInt(r.Black, 10)),
- "relation.follower": []byte(strconv.FormatInt(r.Follower, 10)),
- }
- return data, nil
- }
- // Marshal is
- func (b *BlockSummary) Marshal() (map[string][]byte, error) {
- data := map[string][]byte{
- "block.mid": []byte(strconv.FormatInt(b.Mid, 10)),
- "block.block_status": []byte(strconv.FormatInt(b.BlockStatus, 10)),
- "block.start_time": []byte(b.StartTime),
- "block.end_time": []byte(b.EndTime),
- }
- return data, nil
- }
- // Marshal is
- func (p *PassportSummary) Marshal() (map[string][]byte, error) {
- data := map[string][]byte{
- "passport.mid": []byte(strconv.FormatInt(p.Mid, 10)),
- "passport.tel_status": []byte(strconv.FormatInt(p.TelStatus, 10)),
- "passport.country_id": []byte(strconv.FormatInt(p.CountryID, 10)),
- "passport.join_ip": []byte(p.JoinIP),
- "passport.join_time": []byte(p.JoinTime),
- "passport.email_suffix": []byte(p.EmailSuffix),
- "passport.reg_type": []byte(strconv.FormatInt(p.RegType, 10)),
- "passport.origin_type": []byte(strconv.FormatInt(p.OriginType, 10)),
- }
- return data, nil
- }
- // Date convert timestamp to date
- func Date(in xtime.Time) string {
- return in.Time().Format("2006-01-02")
- }
- // Datetime convert timestamp to date time
- func Datetime(in xtime.Time) string {
- return in.Time().Format("2006-01-02 15:04:05")
- }
|