package userctrl import ( "time" "91porn-server/common" "91porn-server/common/pageopt" "91porn-server/common/stderr" "91porn-server/models/commod" "91porn-server/models/v/reptmod" "91porn-server/models/v/repttypemod" "91porn-server/web/service/userser" "github.com/gin-gonic/gin" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/primitive" ) // ReportList doc // @Summary 获取用户举报列表 // @Description 获取用户举报列表 // @Tags web-用户管理 // @Accept mpfd,json // @Produce json,html // @Param pageNumber query integer true "当前页" // @Param pageSize query integer true "每页条数" // @Param uid query integer false "过滤条件-举报者ID" // @Param objType query string false "过滤条件-举报对象类型 video、comment、user" // @Param types query array false "过滤条件-举报分类" // @Param startTime query integer false "过滤条件-举报时间的开始时间" // @Param endTime query integer false "过滤条件-举报时间的结束时间" // @Success 200 {string} json "{"msg": "操作成功", "date": { "total":10, "list":[] }}" // @Failure 400 {string} json "{"msg": "操作失败"}" // @Router /web/user/report/list [get] func ReportList(c *gin.Context) { type Query struct { UID *uint64 `form:"uid" json:"uid" bson:"uid,omitempty" binding:""` //用户ID ObjType *reptmod.ReportObjType `form:"objType" json:"objType" bson:"objType,omitempty" binding:""` //举报对象类型数组 Types *string `form:"types" json:"types" bson:"types,omitempty" binding:""` //举报分类 HasLocked *bool `form:"hasLocked" json:"hasLocked,omitempty" bson:"hasLocked,omitempty" binding:""` //已禁止登陆 HasBanned *bool `form:"hasBanned" json:"hasBanned,omitempty" bson:"hasBanned,omitempty" binding:""` //已禁言 StartTime *int64 `form:"startTime" json:"startTime,omitempty" bson:"startTime,omitempty" binding:""` //开始时间 EndTime *int64 `form:"endTime" json:"endTime,omitempty" bson:"endTime,omitempty" binding:""` //结束时间 } var arg struct { commod.Page Query } if err := c.ShouldBind(&arg); err != nil { common.ServeJSON(c, stderr.ErrParamError, "web user ReportList arg error "+err.Error()) return } endTime := time.Now() if arg.EndTime != nil { endTime = time.Unix(*arg.EndTime, 0) } startTime := endTime.AddDate(0, -1, 0) if arg.StartTime != nil { startTime = time.Unix(*arg.StartTime, 0) } typesArray := []reptmod.ReportObjType{reptmod.Video, reptmod.Comment, reptmod.User} if arg.ObjType != nil { typesArray = []reptmod.ReportObjType{*arg.ObjType} } //分页项 sort := bson.D{{Key: "createdAt", Value: -1}} skip := int64((arg.PageNumber - 1) * arg.PageSize) limit := int64(arg.PageSize) //过滤项 page, err := userser.ReportInfoPages(typesArray, sort, skip, limit, pageopt.UIDMatch{UID: arg.UID}, reptmod.TypesMatch{Types: arg.Types}, pageopt.CreatedAtGTEAndLTMatch{GTE: &startTime, LT: &endTime}, ) if err != nil { common.ServeJSON(c, stderr.Failure, "web user ReportInfoPages error: "+err.Error()) return } common.ServeJSON(c, stderr.Success, page) } // ReportList doc // @Summary 获取用举报类型 // @Description 获取举报类型 // @Tags web-用户管理 // @Accept mpfd,json // @Produce json,html // @Success 200 {string} json "{"msg": []}" // @Failure 400 {string} json "{"msg": "操作失败"}" // @Router /web/user/report/list [get] func ReportTypesList(c *gin.Context) { list, err := repttypemod.List() if err != nil { common.ServeJSON(c, stderr.Failure, "web user ReportTypesList error: "+err.Error()) return } typesList := make([]string, 0, len(list)) for _, report := range list { if report.Name != nil { typesList = append(typesList, *report.Name) } } common.ServeJSON(c, stderr.Success, typesList) } // SetStatus doc // @Summary 设置举报状态 // @Description 设置举报状态 // @Tags web-用户管理 // @Accept mpfd,json // @Produce json,html // @Param status formData bool true "举报状态" // @Param reptID formData bool true "举报ID" // @Success 200 {string} json "{"msg": []}" // @Failure 400 {string} json "{"msg": "操作失败"}" // @Router /web/user/report/setStatus [post] func SetStatus(c *gin.Context) { var arg struct { ReptID primitive.ObjectID `form:"reptID" json:"reptID" binding:"required"` Status *bool `form:"status" json:"status" binding:"required"` } if err := c.ShouldBind(&arg); err != nil { common.ServeJSON(c, stderr.ErrParamError, "web user SetStatus arg error "+err.Error()) return } if err := reptmod.SetStatus(arg.ReptID, *arg.Status); err != nil { common.ServeJSON(c, stderr.Failure, "web user SetStatus error: "+err.Error()) return } common.ServeJSON(c, stderr.Success, "") }