@@ -0,0 +1,146 @@
|
||||
package userctrl
|
||||
|
||||
import (
|
||||
"91porn-server/common"
|
||||
"91porn-server/common/stderr"
|
||||
"91porn-server/models/commod"
|
||||
"91porn-server/models/v/faqmod"
|
||||
"91porn-server/web/service/userser"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
// FaqList doc
|
||||
// @Summary 用户常见问题
|
||||
// @Description 用户常见问题列表
|
||||
// @Tags web-用户管理
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param category query string false "问题类型"
|
||||
// @Param keywords query string false "查找关键字"
|
||||
// @Param pageNumber query integer true "当前页"
|
||||
// @Param pageSize query integer true "每页条数"
|
||||
// @Success 200 {string} json "{"msg": "操作成功", "date": { "total":10, "list":[] }}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /web/user/faq/list [get]
|
||||
func FaqList(c *gin.Context) {
|
||||
var args struct {
|
||||
Category string `form:"category" json:"category"`
|
||||
Keywords string `form:"keywords" json:"keywords"`
|
||||
commod.Page
|
||||
}
|
||||
if err := c.ShouldBind(&args); err != nil {
|
||||
common.ServeJSON(c, stderr.ErrParamError, "web user FaqList arg error "+err.Error())
|
||||
return
|
||||
}
|
||||
pageBy := commod.PageBy{Num: args.PageNumber, Size: args.PageSize}
|
||||
page, err := userser.FaqList(args.Category, args.Keywords, commod.StdQuery{Page: &pageBy})
|
||||
if err != nil {
|
||||
common.ServeJSON(c, stderr.Failure, "web user FaqList error: "+err.Error())
|
||||
return
|
||||
}
|
||||
common.ServeJSON(c, stderr.Success, page)
|
||||
}
|
||||
|
||||
// FaqAdd doc
|
||||
// @Summary 用户常见问题
|
||||
// @Description 新增用户常见问题
|
||||
// @Tags web-用户管理
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param category formData string true "问题类型"
|
||||
// @Param query formData string true "问题"
|
||||
// @Param answer formData string true "问题答案"
|
||||
// @Param status formData boolean true "状态 ture为开启 false为关闭"
|
||||
// @Param sortCode formData string false "排序号""
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /web/user/faq/add [post]
|
||||
func FaqAdd(ctx *gin.Context) {
|
||||
f := faqmod.Faq{}
|
||||
if err := ctx.ShouldBind(&f); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, err.Error())
|
||||
return
|
||||
}
|
||||
code, err := faqmod.FaqInsert(f)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, code, err.Error())
|
||||
return
|
||||
}
|
||||
common.ServeJSON(ctx, stderr.Success, nil)
|
||||
}
|
||||
|
||||
// FaqDelete doc
|
||||
// @Summary 用户常见问题
|
||||
// @Description 批量删除用户常见问题
|
||||
// @Tags web-用户管理
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param ids formData array true "id数组 字符串数组"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /web/user/faq/del [delete]
|
||||
func FaqDelete(ctx *gin.Context) {
|
||||
var args struct {
|
||||
IDs []primitive.ObjectID `form:"ids" json:"ids"`
|
||||
}
|
||||
if err := ctx.ShouldBind(&args); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, err.Error())
|
||||
return
|
||||
}
|
||||
if err := faqmod.FaqDelete(args.IDs); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrDbDeleteError, err.Error())
|
||||
return
|
||||
}
|
||||
common.ServeJSON(ctx, stderr.Success, nil)
|
||||
}
|
||||
|
||||
// FaqUpdate doc
|
||||
// @Summary 用户常见问题
|
||||
// @Description 编辑常见问题
|
||||
// @Tags web-用户管理
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param id formData array true "id字符串"
|
||||
// @Param category formData string false "问题类型"
|
||||
// @Param query formData string false "问题"
|
||||
// @Param answer formData string false "问题答案"
|
||||
// @Param status formData boolean false "状态 ture为开启 false为关闭"
|
||||
// @Param sortCode formData string false "排序号""
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /web/user/faq/update [post]
|
||||
func FaqUpdate(ctx *gin.Context) {
|
||||
var args struct {
|
||||
ID primitive.ObjectID `form:"id" json:"id" binding:"required"`
|
||||
faqmod.FaqUpdateDoc
|
||||
}
|
||||
if err := ctx.ShouldBind(&args); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
if err := faqmod.FaqUpdate(args.ID, args.FaqUpdateDoc); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrDbUpdateError, err.Error())
|
||||
return
|
||||
}
|
||||
common.ServeJSON(ctx, stderr.Success, nil)
|
||||
}
|
||||
|
||||
// FaqCateList doc
|
||||
// @Summary 用户常见问题
|
||||
// @Description 用户常见问题分类列表
|
||||
// @Tags web-用户管理
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Success 200 {string} json "{"msg": "操作成功", "date": {}}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /web/user/faq/cate/list [get]
|
||||
func FaqCateList(c *gin.Context) {
|
||||
page, err := faqmod.FaqCateList()
|
||||
if err != nil {
|
||||
common.ServeJSON(c, stderr.Failure, "web user FaqCateList error: "+err.Error())
|
||||
return
|
||||
}
|
||||
common.ServeJSON(c, stderr.Success, page)
|
||||
}
|
||||
@@ -0,0 +1,234 @@
|
||||
package userctrl
|
||||
|
||||
import (
|
||||
"91porn-server/common"
|
||||
"91porn-server/common/stderr"
|
||||
"91porn-server/models/v/feedbackmod"
|
||||
"91porn-server/models/v/userResourcemod"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
// FeedBackList doc
|
||||
// @Summary
|
||||
// @Description 用户反馈意见列表
|
||||
// @Tags web-用户管理
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param uid query integer false "用户ID"
|
||||
// @Param content query string false "查找关键字"
|
||||
// @Param pageNumber query integer true "当前页"
|
||||
// @Param pageSize query integer true "每页条数"
|
||||
// @Success 200 {string} json "{"msg": "操作成功", "date": { "total":10, "list":[] }}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /web/user/feedback/list [get]
|
||||
func FeedbackList(c *gin.Context) {
|
||||
params := feedbackmod.ListParam{}
|
||||
if err := c.ShouldBind(¶ms); err != nil {
|
||||
common.ServeJSON(c, stderr.ErrParamError, err)
|
||||
return
|
||||
}
|
||||
result, err := feedbackmod.FeedBackList(params)
|
||||
if err != nil {
|
||||
common.ServeJSON(c, stderr.Failure, err)
|
||||
return
|
||||
}
|
||||
common.ServeJSON(c, stderr.Success, result)
|
||||
}
|
||||
|
||||
// FeedbackDelete doc
|
||||
// @Summary 反馈删除
|
||||
// @Description 批量删除用户反馈
|
||||
// @Tags web-用户管理
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param ids formData array true "id数组 字符串数组"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /web/user/feedback/del [delete]
|
||||
func FeedbackDelete(ctx *gin.Context) {
|
||||
var args struct {
|
||||
IDs []primitive.ObjectID `form:"ids" json:"ids"`
|
||||
}
|
||||
if err := ctx.ShouldBind(&args); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, err.Error())
|
||||
return
|
||||
}
|
||||
if err := feedbackmod.FeedBackDelete(args.IDs); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrDbDeleteError, err.Error())
|
||||
return
|
||||
}
|
||||
common.ServeJSON(ctx, stderr.Success, nil)
|
||||
}
|
||||
|
||||
// FeedbackUpdate doc
|
||||
// @Summary 用户反馈问题
|
||||
// @Description 用户反馈编辑
|
||||
// @Tags web-用户管理
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param id formData array true "id字符串"
|
||||
// @Param replay formData string false "回复"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /web/user/feedback/update [post]
|
||||
func FeedbackUpdate(ctx *gin.Context) {
|
||||
var args struct {
|
||||
ID primitive.ObjectID `form:"id" json:"id" binding:"required"`
|
||||
UID int64 `form:"uid" json:"uid"`
|
||||
Confirm bool `from:"confirm" json:"confirm"` //确认是否发送回复
|
||||
Content string `json:"content" bson:"content"`
|
||||
feedbackmod.FeedBackUpdateDoc
|
||||
}
|
||||
if err := ctx.ShouldBind(&args); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
if err := feedbackmod.FeedBackUpdate(args.ID, args.FeedBackUpdateDoc); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrDbUpdateError, err.Error())
|
||||
return
|
||||
}
|
||||
common.ServeJSON(ctx, stderr.Success, nil)
|
||||
}
|
||||
|
||||
// GetUserResourceList doc
|
||||
// @Summary 获取用户资源配置列表
|
||||
// @Description 获取用户资源配置列表
|
||||
// @Tags web-用户管理
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param pageNumber formData integer true "查询页码"
|
||||
// @Param pageSize formData integer true "页码大小"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /web/user/resource/list [get]
|
||||
func GetUserResourceList(ctx *gin.Context) {
|
||||
_, err := common.GetAdminAct(ctx)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
|
||||
return
|
||||
}
|
||||
req := userResourcemod.ResourceListReq{}
|
||||
err1 := ctx.ShouldBind(&req)
|
||||
if err1 != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
infos, total, err := userResourcemod.GetUserResource(req.PageNumber, req.PageSize, "")
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrDbQueryError, "")
|
||||
return
|
||||
}
|
||||
common.ServeJSON(ctx, stderr.Success, gin.H{
|
||||
"list": infos,
|
||||
"total": total,
|
||||
})
|
||||
}
|
||||
|
||||
// ModifyUserResource doc
|
||||
// @Summary 修改用户资源配置列表
|
||||
// @Description 修改用户资源配置列表
|
||||
// @Tags web-用户管理
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param pageNumber formData integer true "查询页码"
|
||||
// @Param pageSize formData integer true "页码大小"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /web/user/resource/modify [post]
|
||||
func ModifyUserResource(ctx *gin.Context) {
|
||||
_, err := common.GetAdminAct(ctx)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
|
||||
return
|
||||
}
|
||||
req := userResourcemod.ResourceModifyReq{}
|
||||
err1 := ctx.ShouldBind(&req)
|
||||
if err1 != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
oid, err := primitive.ObjectIDFromHex(req.ID)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
userResourcemod.ModifyUserResource(oid, req.Type, req.Resource)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrDbUpdateError, "")
|
||||
return
|
||||
}
|
||||
common.ServeJSON(ctx, stderr.Success, nil)
|
||||
}
|
||||
|
||||
// AddUserResource doc
|
||||
// @Summary 添加用户资源配置列表
|
||||
// @Description 添加用户资源配置列表
|
||||
// @Tags web-用户管理
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param pageNumber formData integer true "查询页码"
|
||||
// @Param pageSize formData integer true "页码大小"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /web/user/resource/add [post]
|
||||
func AddUserResource(ctx *gin.Context) {
|
||||
_, err := common.GetAdminAct(ctx)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
|
||||
return
|
||||
}
|
||||
req := userResourcemod.ResourceAddReq{}
|
||||
err = ctx.ShouldBind(&req)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
ru := userResourcemod.UserResource{
|
||||
Type: req.Type,
|
||||
Resource: req.Resource,
|
||||
}
|
||||
err = userResourcemod.Add(ru)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrDbInsertError, "")
|
||||
return
|
||||
}
|
||||
common.ServeJSON(ctx, stderr.Success, nil)
|
||||
}
|
||||
|
||||
// DelUserResource doc
|
||||
// @Summary 删除用户资源配置列表
|
||||
// @Description 删除用户资源配置列表
|
||||
// @Tags web-用户管理
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param pageNumber formData integer true "查询页码"
|
||||
// @Param pageSize formData integer true "页码大小"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /web/user/resource/del [post]
|
||||
func DelUserResource(ctx *gin.Context) {
|
||||
_, err := common.GetAdminAct(ctx)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
|
||||
return
|
||||
}
|
||||
req := userResourcemod.ResourceDelReq{}
|
||||
err1 := ctx.ShouldBind(&req)
|
||||
if err1 != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
id, err := primitive.ObjectIDFromHex(req.ID)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
err = userResourcemod.RemoveUserResource(id)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrDbDeleteError, "")
|
||||
return
|
||||
}
|
||||
common.ServeJSON(ctx, stderr.Success, nil)
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
package userctrl
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"91porn-server/common"
|
||||
"91porn-server/common/pageopt"
|
||||
"91porn-server/common/stderr"
|
||||
"91porn-server/models/commod"
|
||||
"91porn-server/web/service/userser"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// LoginList 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 startTime query integer false "过滤条件-开始时间"
|
||||
// @Param endTime query integer false "过滤条件-结束时间"
|
||||
// @Success 200 {string} user "{"msg": "操作成功", "date": { "total":10, "list":[] }}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /web/user/login/list [get]
|
||||
func LoginList(c *gin.Context) {
|
||||
type Query struct {
|
||||
UID *uint64 `form:"uid" json:"uid" bson:"uid,omitempty"` //用户ID
|
||||
StartTime time.Time `form:"startTime" json:"startTime,omitempty" binding:""` //开始时间
|
||||
EndTime time.Time `form:"endTime" json:"endTime,omitempty" binding:""` //结束时间
|
||||
}
|
||||
var arg struct {
|
||||
commod.Page
|
||||
Query
|
||||
}
|
||||
if err := c.ShouldBind(&arg); err != nil {
|
||||
common.ServeJSON(c, stderr.ErrParamError, "web user LoginList arg error "+err.Error())
|
||||
return
|
||||
}
|
||||
skip := int64((arg.PageNumber - 1) * arg.PageSize)
|
||||
limit := int64(arg.PageSize)
|
||||
endTime := time.Now()
|
||||
startTime := endTime.AddDate(0, -1, 0)
|
||||
if !arg.EndTime.IsZero() {
|
||||
startTime = arg.StartTime
|
||||
endTime = arg.EndTime
|
||||
}
|
||||
page, err := userser.LoginInfoPages(skip, limit,
|
||||
pageopt.CreatedAtGTEAndLTMatch{GTE: &startTime, LT: &endTime},
|
||||
pageopt.UIDMatch{UID: arg.UID},
|
||||
)
|
||||
if err != nil {
|
||||
common.ServeJSON(c, stderr.Failure, "web user LoginList error: "+err.Error())
|
||||
return
|
||||
}
|
||||
common.ServeJSON(c, stderr.Success, page)
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
package userctrl
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"91porn-server/common"
|
||||
"91porn-server/common/stderr"
|
||||
"91porn-server/models/l/playlgmod"
|
||||
"91porn-server/models/v/vidmod"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
func encodePlayLog(infos []*playlgmod.PlayLog) []*playlgmod.LogInfo {
|
||||
vids := make([]primitive.ObjectID, len(infos))
|
||||
for i, v := range infos {
|
||||
vids[i] = v.VideoID
|
||||
}
|
||||
m, err := vidmod.GetTitleTimeByIDs(vids)
|
||||
if err != nil {
|
||||
return []*playlgmod.LogInfo{}
|
||||
}
|
||||
back := make([]*playlgmod.LogInfo, len(infos))
|
||||
for i, v := range infos {
|
||||
back[i] = &playlgmod.LogInfo{
|
||||
UID: v.UID,
|
||||
VideoID: v.VideoID,
|
||||
Title: m[v.VideoID].Title,
|
||||
PlayTime: m[v.VideoID].PlayTime,
|
||||
Longer: v.Longer,
|
||||
Progress: v.Progress,
|
||||
Via: v.Via,
|
||||
PlayWay: v.PlayWay,
|
||||
CreatedAt: v.CreatedAt,
|
||||
}
|
||||
}
|
||||
return back
|
||||
}
|
||||
|
||||
// PlayList doc
|
||||
// @Summary 获取用户观看列表
|
||||
// @Description 获取用户观看列表
|
||||
// @Tags web-用户管理
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param pageNumber query integer true "当前页"
|
||||
// @Param pageSize query integer true "每页条数"
|
||||
// @Param payMehod query integer false "过滤条件-观看方式"
|
||||
// @Param uid query integer false "过滤条件-用户ID"
|
||||
// @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/play/list [get]
|
||||
func PlayList(c *gin.Context) {
|
||||
req := playlgmod.WatchReq{}
|
||||
if err := c.ShouldBind(&req); err != nil {
|
||||
common.ServeJSON(c, stderr.ErrParamError, "PlayList error "+err.Error())
|
||||
return
|
||||
}
|
||||
if req.Start.IsZero() {
|
||||
req.End = time.Now()
|
||||
h, _ := time.ParseDuration("-1h")
|
||||
req.Start = req.End.Add(h)
|
||||
}
|
||||
infos, total, err := playlgmod.GetPlayLog(req)
|
||||
if err != nil {
|
||||
common.ServeJSON(c, stderr.Failure, "web user PlayList error: "+err.Error())
|
||||
return
|
||||
}
|
||||
logs := encodePlayLog(infos)
|
||||
common.ServeJSON(c, stderr.Success, playlgmod.WatchResp{Logs: logs, Total: total})
|
||||
}
|
||||
@@ -0,0 +1,130 @@
|
||||
package userctrl
|
||||
|
||||
import (
|
||||
"91porn-server/common"
|
||||
"91porn-server/common/stderr"
|
||||
"91porn-server/models/v/userrecomod"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
// GetUserRecoList doc
|
||||
// @Summary 获取用户推荐列表
|
||||
// @Description 获取用户推荐列表
|
||||
// @Tags web-用户管理
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param pageNumber formData integer true "查询页码"
|
||||
// @Param pageSize formData integer true "页码大小"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /web/user/reco/list [get]
|
||||
func GetUserRecoList(ctx *gin.Context) {
|
||||
if _, err := common.GetAdminAct(ctx); err != nil {
|
||||
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
|
||||
return
|
||||
}
|
||||
req := userrecomod.RecoListReq{}
|
||||
if err := ctx.ShouldBind(&req); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
infos, total, err := userrecomod.GetUserReco(req.PageNumber, req.PageSize, true)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrDbQueryError, "")
|
||||
return
|
||||
}
|
||||
common.ServeJSON(ctx, stderr.Success, userrecomod.RecoListResp{Infos: infos, Total: total})
|
||||
}
|
||||
|
||||
// ModifyUserReco doc
|
||||
// @Summary 修改用户推荐列表
|
||||
// @Description 修改用户推荐列表
|
||||
// @Tags web-用户管理
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param pageNumber formData integer true "查询页码"
|
||||
// @Param pageSize formData integer true "页码大小"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /web/user/reco/modify [post]
|
||||
func ModifyUserReco(ctx *gin.Context) {
|
||||
if _, err := common.GetAdminAct(ctx); err != nil {
|
||||
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
|
||||
return
|
||||
}
|
||||
req := userrecomod.RecoModifyReq{}
|
||||
if err := ctx.ShouldBind(&req); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
oid, err := primitive.ObjectIDFromHex(req.ID)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
_ = userrecomod.ModifyUserReco(oid, req.UID, req.SortKey, req.Active)
|
||||
common.ServeJSON(ctx, stderr.Success, nil)
|
||||
}
|
||||
|
||||
// AddUserReco doc
|
||||
// @Summary 添加用户推荐列表
|
||||
// @Description 添加用户推荐列表
|
||||
// @Tags web-用户管理
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param pageNumber formData integer true "查询页码"
|
||||
// @Param pageSize formData integer true "页码大小"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /web/user/reco/add [post]
|
||||
func AddUserReco(ctx *gin.Context) {
|
||||
if _, err := common.GetAdminAct(ctx); err != nil {
|
||||
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
|
||||
return
|
||||
}
|
||||
req := userrecomod.RecoAddReq{}
|
||||
if err := ctx.ShouldBind(&req); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
if err := userrecomod.AddUserReco(req.UID, req.SortKey, req.Active); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrDbInsertError, "")
|
||||
return
|
||||
}
|
||||
common.ServeJSON(ctx, stderr.Success, nil)
|
||||
}
|
||||
|
||||
// DelUserReco doc
|
||||
// @Summary 删除用户推荐列表
|
||||
// @Description 删除用户推荐列表
|
||||
// @Tags web-用户管理
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param pageNumber formData integer true "查询页码"
|
||||
// @Param pageSize formData integer true "页码大小"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /web/user/reco/del [post]
|
||||
func DelUserReco(ctx *gin.Context) {
|
||||
if _, err := common.GetAdminAct(ctx); err != nil {
|
||||
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
|
||||
return
|
||||
}
|
||||
req := userrecomod.RecoDelReq{}
|
||||
if err := ctx.ShouldBind(&req); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
oid, err := primitive.ObjectIDFromHex(req.ID)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
if err = userrecomod.RemoveUserReco(oid); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrDbDeleteError, "")
|
||||
return
|
||||
}
|
||||
common.ServeJSON(ctx, stderr.Success, nil)
|
||||
}
|
||||
@@ -0,0 +1,131 @@
|
||||
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, "")
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user