123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- package model
- import (
- "database/sql/driver"
- "encoding/json"
- "strconv"
- "time"
- xtime "go-common/library/time"
- )
- const (
- // BusinessArchive .
- BusinessArchive = "archive"
- // RankOrderByDesc .
- RankOrderByDesc = "desc"
- // RankOrderByAsc .
- RankOrderByAsc = "asc"
- // SyncInsert .
- SyncInsert = "insert"
- // SyncUpdate .
- SyncUpdate = "update"
- // SyncDelete .
- SyncDelete = "delete"
- // TimeFormat .
- TimeFormat = "2006-01-02 15:04:05"
- // FlagExist .
- FlagExist = true
- )
- // ArchiveMeta .
- type ArchiveMeta struct {
- ID int64 `json:"id"`
- Aid int64 `json:"aid"`
- Typeid int64 `json:"typeid"`
- Pubtime Stime `json:"pubtime"`
- *ArchiveType
- *ArchiveStat
- *ArchiveTv
- }
- // ArchiveType .
- type ArchiveType struct {
- ID int64 `json:"id"`
- Pid int64 `json:"pid"`
- }
- // ArchiveStat .
- type ArchiveStat struct {
- ID int64 `json:"id"`
- Aid int64 `json:"aid"`
- Click int64 `json:"click"`
- }
- // ArchiveTv .
- type ArchiveTv struct {
- ID int64 `json:"id"`
- Aid int64 `json:"aid"`
- Result int8 `json:"result"`
- Deleted int8 `json:"deleted"`
- Valid int8 `json:"valid"`
- }
- // StatViewMsg .
- type StatViewMsg struct {
- Type string `json:"type"`
- ID int64 `json:"id"`
- Count int `json:"count"`
- Timestamp int64 `json:"timestamp"`
- }
- // CanalMsg .
- type CanalMsg struct {
- Action string `json:"action"`
- Table string `json:"table"`
- New json.RawMessage `json:"new"`
- Old json.RawMessage `json:"old"`
- }
- // SetPubtime .
- func (a *ArchiveMeta) SetPubtime() xtime.Time {
- return xtime.Time(a.Pubtime)
- }
- // SetPid .
- func (a *ArchiveType) SetPid() int16 {
- return int16(a.Pid)
- }
- // SetClick .
- func (a *ArchiveStat) SetClick() int {
- return int(a.Click)
- }
- // DoReq .
- type DoReq struct {
- Business string `form:"business" validate:"required"`
- Action string `form:"action" validate:"required"`
- MinID int64 `form:"minid"`
- MaxID int64 `form:"maxid"`
- BeginTime string `form:"begintime"`
- EndTime string `form:"endtime"`
- }
- // MgetReq .
- type MgetReq struct {
- Business string `form:"business" validate:"required"`
- Oids []int64 `form:"oids,split" validate:"required"`
- }
- // MgetResp resp of mget
- type MgetResp struct {
- List map[int64]*Field `json:"list"`
- }
- // SortReq .
- type SortReq struct {
- Business string `form:"business" validate:"required"`
- Field string `form:"field" validate:"required"`
- Order string `form:"order" validate:"required"`
- Filters map[string]string `form:"filters" validate:"required"`
- Oids []int64 `form:"oids,split" validate:"required"`
- Pn int `form:"pn"`
- Ps int `form:"ps"`
- }
- // SortResp .
- type SortResp struct {
- Result []int64 `json:"result"`
- Page *Page `json:"page"`
- }
- // GroupReq .
- type GroupReq struct {
- Business string `form:"business" validate:"required"`
- Field string `form:"field" validate:"required"`
- Oids []int64 `form:"Oids,split" validate:"required"`
- }
- // GroupResp .
- type GroupResp struct {
- List []*Group `json:"list"`
- }
- // Group .
- type Group struct {
- Key string `json:"key"`
- Count int `json:"count"`
- }
- // Page Pager
- type Page struct {
- Pn int `json:"pn"`
- Ps int `json:"ps"`
- Total int `json:"total"`
- }
- // Stime .
- type Stime int64
- // Scan scan time.
- func (st *Stime) Scan(src interface{}) (err error) {
- switch sc := src.(type) {
- case time.Time:
- *st = Stime(sc.Unix())
- case string:
- var i int64
- i, err = strconv.ParseInt(sc, 10, 64)
- *st = Stime(i)
- }
- return
- }
- // Value get time value.
- func (st Stime) Value() (driver.Value, error) {
- return time.Unix(int64(st), 0), nil
- }
- // UnmarshalJSON implements the json.Unmarshaler interface.
- func (st *Stime) UnmarshalJSON(data []byte) error {
- timestamp, err := strconv.ParseInt(string(data), 10, 64)
- if err == nil {
- *st = Stime(timestamp)
- return nil
- }
- t, err := time.ParseInLocation(`"2006-01-02 15:04:05"`, string(data), time.Local)
- if err == nil {
- *st = Stime(t.Unix())
- }
- return nil
- }
|