132 lines
5.4 KiB
Go
132 lines
5.4 KiB
Go
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, "")
|
|
}
|