70 lines
1.8 KiB
Go
70 lines
1.8 KiB
Go
package ipblockmod
|
|
|
|
import (
|
|
"time"
|
|
|
|
"91porn-server/common/log"
|
|
"91porn-server/models/commod"
|
|
|
|
"go.mongodb.org/mongo-driver/bson"
|
|
)
|
|
|
|
type IPBlockEdit struct {
|
|
IP *string `form:"ip" json:"ip,omitempty" bson:"ip,omitempty"` //ip
|
|
Type *BlockAct `form:"type" json:"type,omitempty" bson:"type,omitempty" binding:"required"` //block 行为
|
|
Remark string `form:"remark" json:"remark"` //备注
|
|
UpdatedAt time.Time `form:"updatedAt" json:"updatedAt" bson:"updatedAt,omitempty"`
|
|
}
|
|
|
|
type ListParam struct {
|
|
Type string `form:"type" json:"type"`
|
|
commod.Page
|
|
}
|
|
|
|
type WebResp struct {
|
|
Total int64 `json:"total"`
|
|
List interface{} `json:"list"`
|
|
}
|
|
|
|
type WebAggregateResp struct {
|
|
ID struct {
|
|
BlockType string `json:"blockType"`
|
|
} `json:"_id"`
|
|
IPS []string `json:"ips"`
|
|
}
|
|
|
|
func List(param ListParam) (webResp WebResp, err error) {
|
|
stdqer := commod.StdQuery{Page: &commod.PageBy{Size: param.PageSize, Num: param.PageNumber},
|
|
Order: &[]commod.OrderBy{{Key: "updatedAt", Desc: true}}}
|
|
filter := bson.M{}
|
|
if param.Type != "" {
|
|
filter["type"] = param.Type
|
|
}
|
|
ipblocks, err := find(filter, stdqer)
|
|
if err != nil {
|
|
log.Error("web ipblock list error", log.E(err), log.Any("param", param))
|
|
return
|
|
}
|
|
total := count(filter)
|
|
webResp.List = ipblocks
|
|
webResp.Total = total
|
|
return
|
|
}
|
|
|
|
func find(filter bson.M, stdQuery commod.StdQuery) (data []IPBlock, err error) {
|
|
if err = coll(nil).Find(&data, filter, commod.ConvertToListQuery(stdQuery)); err != nil {
|
|
log.Error("models ipblock Find error", log.E(err))
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
func count(query bson.M) (total int64) {
|
|
total, err := coll(nil).Count(query)
|
|
if err != nil {
|
|
log.Error("models ipblock Count error", log.E(err))
|
|
return
|
|
}
|
|
return
|
|
}
|