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.
194 lines
3.9 KiB
194 lines
3.9 KiB
package xreply |
|
|
|
import "go-common/app/interface/main/reply/model/reply" |
|
|
|
// const |
|
const ( |
|
MaxPageSize = 50 |
|
|
|
ModeOrigin = 1 // origin |
|
ModeTime = 2 // sort by time |
|
ModeHot = 3 // sort by hot |
|
|
|
FolderKindSub = "s" |
|
FolderKindRoot = "r" |
|
|
|
CursorModePage = 1 // pn ps翻页的 |
|
CursorModeCursor = 2 // 按游标翻页的 |
|
) |
|
|
|
type ReplyReq struct { |
|
CommonReq |
|
ReplyCommonReq |
|
Cursor CursorReq |
|
} |
|
|
|
var ( |
|
_SupportModeAll = []int{ModeOrigin, ModeTime, ModeHot} |
|
_SupportModeOrigin = []int{ModeOrigin} |
|
) |
|
|
|
// ... |
|
func (req *ReplyReq) ModeInfo(hotMap map[int64]int8, floorMap map[int64]int8) (mode int, supportMode []int) { |
|
supportMode = _SupportModeAll |
|
switch req.Cursor.Mode { |
|
case ModeHot: |
|
mode = ModeHot |
|
case ModeTime: |
|
mode = ModeTime |
|
case ModeOrigin: |
|
mode = ModeOrigin |
|
supportMode = _SupportModeOrigin |
|
default: |
|
if tp, ok := hotMap[req.Oid]; ok && tp == req.Type { |
|
mode = ModeHot |
|
} else if tp, ok := floorMap[req.Oid]; ok && tp == req.Type { |
|
mode = ModeTime |
|
} else { |
|
mode = ModeOrigin |
|
supportMode = _SupportModeOrigin |
|
} |
|
} |
|
return |
|
} |
|
|
|
type ReplyRes struct { |
|
Cursor CursorRes `json:"cursor"` |
|
Hots []*reply.Reply `json:"hots"` |
|
Notice *reply.Notice `json:"notice"` |
|
Replies []*reply.Reply `json:"replies"` |
|
Top TopReply `json:"top"` |
|
Folder reply.Folder `json:"folder"` |
|
CommonRes |
|
} |
|
|
|
type CommonRes struct { |
|
Assist int `json:"assist"` |
|
Blacklist int `json:"blacklist"` |
|
Config ReplyConfig `json:"config"` |
|
Upper Upper `json:"upper"` |
|
} |
|
|
|
type TopReply struct { |
|
Admin *reply.Reply `json:"admin"` |
|
Upper *reply.Reply `json:"upper"` |
|
} |
|
|
|
type Upper struct { |
|
Mid int64 `json:"mid"` |
|
} |
|
|
|
type ReplyConfig struct { |
|
ShowAdmin int8 `json:"showadmin"` |
|
ShowEntry int8 `json:"showentry"` |
|
ShowFloor int8 `json:"showfloor"` |
|
} |
|
|
|
// CommonReq ... |
|
type CommonReq struct { |
|
Plat int8 `form:"plat"` |
|
Build int64 `form:"build"` |
|
Buvid string `form:"buvid"` |
|
MobiApp string `form:"mobi_app"` |
|
Mid int64 `form:"mid"` |
|
IP string `form:"ip` |
|
} |
|
|
|
// ReplyCommonReq ... |
|
type ReplyCommonReq struct { |
|
Oid int64 `form:"oid" validate:"required"` |
|
Type int8 `form:"type" validate:"required"` |
|
} |
|
|
|
// Cursor Common Cursor |
|
type Cursor struct { |
|
IsBegin bool `json:"is_begin"` |
|
Prev int `json:"prev"` |
|
Next int `json:"next"` |
|
IsEnd bool `json:"is_end"` |
|
Ps int `json:"ps"` |
|
} |
|
|
|
// Latest ... |
|
func (c *Cursor) Latest() bool { |
|
return c.Next == 0 && c.Prev == 0 |
|
} |
|
|
|
// Forward ... |
|
func (c *Cursor) Forward() bool { |
|
return c.Next != 0 |
|
} |
|
|
|
// Backward ... |
|
func (c *Cursor) Backward() bool { |
|
return c.Prev != 0 |
|
} |
|
|
|
// CursorRes ... |
|
type CursorRes struct { |
|
AllCount int `json:"all_count,omitempty"` |
|
IsBegin bool `json:"is_begin"` |
|
Prev int `json:"prev"` |
|
Next int `json:"next"` |
|
IsEnd bool `json:"is_end"` |
|
Ps int `json:"ps,omitempty"` |
|
Mode int `json:"mode,omitempty"` |
|
SupportMode []int `json:"support_mode,omitempty"` |
|
} |
|
|
|
// CursorReq ... |
|
type CursorReq struct { |
|
Ps int `form:"ps" validate:"omitempty,min=1,max=50" default:"20"` |
|
Prev int `form:"prev"` |
|
Next int `form:"next"` |
|
Mode int `form:"mode"` |
|
} |
|
|
|
// Legal ... |
|
func (cq *CursorReq) Legal() bool { |
|
if cq.Next != 0 && cq.Prev != 0 { |
|
return false |
|
} |
|
return true |
|
} |
|
|
|
func (cq *CursorReq) Forward() bool { |
|
return cq.Next != 0 |
|
} |
|
|
|
func (cq *CursorReq) Backward() bool { |
|
return cq.Prev != 0 |
|
} |
|
|
|
// Latest ... |
|
func (cq *CursorReq) Latest() bool { |
|
if cq.Next == 0 && cq.Prev == 0 { |
|
return true |
|
} |
|
return false |
|
} |
|
|
|
type SubFolderReq struct { |
|
CommonReq |
|
ReplyCommonReq |
|
Cursor CursorReq |
|
} |
|
|
|
type RootFolderReq struct { |
|
CommonReq |
|
ReplyCommonReq |
|
Cursor CursorReq |
|
Root int64 `form:"root" validate:"required"` |
|
} |
|
|
|
type SubFolderRes struct { |
|
Cursor CursorRes `json:"cursor"` |
|
Replies []*reply.Reply `json:"replies"` |
|
CommonRes |
|
} |
|
|
|
type RootFolderRes struct { |
|
Cursor CursorRes `json:"cursor"` |
|
Replies []*reply.Reply `json:"replies"` |
|
CommonRes |
|
}
|
|
|