308 lines
11 KiB
Go
308 lines
11 KiB
Go
package commentctrl
|
|
|
|
import (
|
|
"91porn-server/app/service/commentser"
|
|
"91porn-server/common"
|
|
"91porn-server/common/log"
|
|
"91porn-server/common/stderr"
|
|
"91porn-server/models/commod"
|
|
"91porn-server/models/v/aiplazamod"
|
|
"91porn-server/models/v/cmtmod"
|
|
"91porn-server/models/v/mediamod"
|
|
"91porn-server/models/v/noticerecdmod"
|
|
"time"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
)
|
|
|
|
// List doc
|
|
// @Summary 评论模块 - 获取评论列表
|
|
// @Description 用户评论
|
|
// @Tags Comment
|
|
// @Accept mpfd,json
|
|
// @Produce json,html
|
|
// @Param objID query string true "评论对象的ID"
|
|
// @Param curTime query string true "打开评论列表的时间"
|
|
// @Param objType query string true "评论对象类型 video/cartoon/drama/AiPlaza"
|
|
// @Param pageNumber query integer true "当前页" mininum(1)
|
|
// @Param pageSize query integer true "每页条数" mininum(1)
|
|
// @Success 200 {object} cmtmod.ParentRespList "{"msg": "操作成功"}"
|
|
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
|
// @Router /api/app/comment/list [get]
|
|
func List(ctx *gin.Context) {
|
|
uid, _ := common.GetUID(ctx)
|
|
type Info struct {
|
|
ObjID string `form:"objID" json:"objID" binding:"required"` //评论对象的ID
|
|
CurTime time.Time `form:"curTime" json:"curTime" binding:"required"` //打开评论列表的时间
|
|
ObjType string `form:"objType" json:"objType"` // 评论对象类型 video:视频(默认) cartoon:动漫 AiPlaza:ai广场
|
|
commod.Page
|
|
}
|
|
param := Info{}
|
|
err := ctx.ShouldBind(¶m)
|
|
if err != nil {
|
|
common.ServeJSON(ctx, stderr.ErrParamError, err)
|
|
return
|
|
}
|
|
|
|
objID, err := primitive.ObjectIDFromHex(param.ObjID)
|
|
if err != nil {
|
|
common.ServeJSON(ctx, stderr.ErrParamError, err)
|
|
return
|
|
}
|
|
var (
|
|
data = make(map[string]interface{})
|
|
vCnt int64 = 0
|
|
fCnt int64 = 0
|
|
hasNext bool
|
|
code stderr.Code
|
|
)
|
|
// 获取第一层评论总数,在获取第一页评论时返回总评论数
|
|
if param.Page.PageNumber == 1 {
|
|
if param.ObjType == "" || param.ObjType == "video" {
|
|
code, vCnt, err := commentser.GetVideoTotalComments(objID)
|
|
if err != nil {
|
|
common.ServeJSON(ctx, code, err)
|
|
return
|
|
}
|
|
data["total"] = vCnt // 总评论条数
|
|
} else if param.ObjType == cmtmod.OTypeCartoon || param.ObjType == cmtmod.OTypeDrama {
|
|
media, _ := mediamod.GetInfo(objID)
|
|
data["total"] = media.CountComment // 总评论条数
|
|
} else if param.ObjType == "AiPlaza" {
|
|
// ai广场
|
|
aiplaza, _ := aiplazamod.GetInfo(objID)
|
|
data["total"] = aiplaza.CommentCount // 总评论条数
|
|
}
|
|
} else {
|
|
code, fCnt, err = commentser.GetTotalComments(objID, param.ObjType)
|
|
if err != nil {
|
|
common.ServeJSON(ctx, code, err)
|
|
return
|
|
}
|
|
}
|
|
code, list, hasNext, err := commentser.GetParentCmtList(uid, objID, param.ObjType, param.CurTime, param.Page)
|
|
if err != nil {
|
|
common.ServeJSON(ctx, code, err)
|
|
return
|
|
}
|
|
// 获取置顶快捷搜索
|
|
if param.PageNumber == 1 {
|
|
list = commentser.QuickSearch(objID.Hex(), list)
|
|
if len(list) == 1 && vCnt == 0 {
|
|
data["total"] = 1
|
|
fCnt = 1
|
|
}
|
|
}
|
|
data["lfCount"] = fCnt // 一级评论条数
|
|
data["hasNext"] = hasNext
|
|
data["list"] = list
|
|
common.ServeJSON(ctx, code, data)
|
|
}
|
|
|
|
// Send doc
|
|
// @Summary 评论模块 - 发表评论
|
|
// @Description 用户评论
|
|
// @Tags Comment
|
|
// @Accept mpfd,json
|
|
// @Produce json,html
|
|
// @Param objType formData string true "评论对象类型 video:视频(默认) cartoon:动漫 AiPlaza:ai广场"
|
|
// @Param objID formData string true "评论对象的ID 帖子的ID"
|
|
// @Param cid formData string false "此评论是对某条评论的评论或回复 一级评论的ID,如果为空,则为对该视频的评论"
|
|
// @Param rid formData string false "被回复的评论id"
|
|
// @Param level formData integer false "评论层级 1:一级评论 2:二级评论"
|
|
// @Param toUserID formData integer false "对某用户回复评论 用户ID"
|
|
// @Param content formData string true "评论内容"
|
|
// @Success 200 {string} json "{"msg": "操作成功"}"
|
|
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
|
// @Router /api/app/comment/send [post]
|
|
func Send(ctx *gin.Context) {
|
|
uid, err := common.GetUID(ctx)
|
|
if err != nil {
|
|
common.ServeJSON(ctx, stderr.ErrNoToken, err)
|
|
return
|
|
}
|
|
|
|
param := cmtmod.PublishReqInfo{}
|
|
err = ctx.ShouldBind(¶m)
|
|
if err != nil {
|
|
common.ServeJSON(ctx, stderr.ErrParamError, err)
|
|
return
|
|
}
|
|
if param.Level != 1 && param.Level != 2 {
|
|
common.ServeJSON(ctx, stderr.ErrParamError, err)
|
|
return
|
|
}
|
|
if param.Content == "" && param.Image == "" {
|
|
common.ServeJSON(ctx, stderr.ErrParamError, err)
|
|
return
|
|
}
|
|
ua, err := common.GetUA(ctx)
|
|
if err != nil {
|
|
common.ServeJSON(ctx, stderr.Failure, err.Error())
|
|
return
|
|
}
|
|
ip := common.GetIP(ctx)
|
|
|
|
code, data, err := commentser.PublishComment(uid, ua, ip, param)
|
|
if err != nil {
|
|
common.ServeJSON(ctx, code, err)
|
|
return
|
|
}
|
|
if code == stderr.CommentUserNotBind {
|
|
common.ServeJSON(ctx, code, nil)
|
|
return
|
|
}
|
|
common.ServeJSON(ctx, code, data)
|
|
}
|
|
|
|
// NoVidSend doc
|
|
// @Summary 评论模块 - 发表评论,非视频帖子评论
|
|
// @Description 用户评论
|
|
// @Tags Comment
|
|
// @Accept mpfd,json
|
|
// @Produce json,html
|
|
// @Param objID formData string true "评论对象的ID 帖子的ID"
|
|
// @Param cid formData string false "此评论是对某条评论的评论或回复 一级评论的ID,如果为空,则为对该视频的评论"
|
|
// @Param rid formData string false "被回复的评论id"
|
|
// @Param level formData integer false "评论层级 1:一级评论 2:二级评论"
|
|
// @Param toUserID formData integer false "对某用户回复评论 用户ID"
|
|
// @Param content formData string true "评论内容"
|
|
// @Success 200 {string} json "{"msg": "操作成功"}"
|
|
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
|
// @Router /comment/sendV2 [post]
|
|
func NoVidSend(ctx *gin.Context) {
|
|
uid, err := common.GetUID(ctx)
|
|
if err != nil {
|
|
common.ServeJSON(ctx, stderr.ErrNoToken, err)
|
|
return
|
|
}
|
|
|
|
type Info struct {
|
|
CmtType string `form:"cmtType" json:"cmtType"` //评论类型,desire:愿望工单
|
|
cmtmod.PublishReqInfo
|
|
}
|
|
param := Info{}
|
|
err = ctx.ShouldBind(¶m)
|
|
if err != nil {
|
|
common.ServeJSON(ctx, stderr.ErrParamError, err)
|
|
return
|
|
}
|
|
code, data, err := commentser.NoVidPublishComment(uid, common.GetIP(ctx), param.CmtType, param.PublishReqInfo)
|
|
if err != nil {
|
|
common.ServeJSON(ctx, code, err)
|
|
return
|
|
}
|
|
if code == stderr.CommentUserNotBind {
|
|
common.ServeJSON(ctx, code, nil)
|
|
return
|
|
}
|
|
common.ServeJSON(ctx, code, data)
|
|
}
|
|
|
|
// Info doc
|
|
// @Summary 评论模块 - 获取评论详情(获取二级评论)
|
|
// @Description 用户评论
|
|
// @Tags Comment
|
|
// @Accept mpfd,json
|
|
// @Produce json,html
|
|
// @Param objID query string true "评论对象的ID"
|
|
// @Param cmtId query string true "评论id"
|
|
// @Param curTime query string true "打开评论列表的时间"
|
|
// @Param fstID query string true "默认展示的第一条二级评论的id"
|
|
// @Param pageNumber query integer true "当前页" mininum(1)
|
|
// @Param pageSize query integer true "每页条数" mininum(1)
|
|
// @Success 200 {string} json "{"msg": "操作成功"}"
|
|
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
|
// @Router /comment/info [get]
|
|
func Info(ctx *gin.Context) {
|
|
uid, err := common.GetUID(ctx)
|
|
if err != nil {
|
|
common.ServeJSON(ctx, stderr.ErrNoToken, err)
|
|
return
|
|
}
|
|
type Info struct {
|
|
ObjID string `form:"objID" json:"objID" binding:"required"` //评论对象的ID
|
|
CmtID string `form:"cmtId" json:"cmtId" binding:"required"` //某条评论id,用于获取该评论下的评论
|
|
FstID string `form:"fstID" json:"fstID" binding:"required"` //默认展示的第一条二级评论的id
|
|
CurTime time.Time `form:"curTime" json:"curTime" binding:"required"` //打开评论列表的时间
|
|
commod.Page
|
|
}
|
|
param := Info{}
|
|
err = ctx.ShouldBind(¶m)
|
|
if err != nil {
|
|
common.ServeJSON(ctx, stderr.ErrParamError, err)
|
|
return
|
|
}
|
|
|
|
objID, err := primitive.ObjectIDFromHex(param.ObjID)
|
|
if err != nil {
|
|
common.ServeJSON(ctx, stderr.ErrParamError, err)
|
|
return
|
|
}
|
|
|
|
cmtID, err := primitive.ObjectIDFromHex(param.CmtID)
|
|
if err != nil {
|
|
common.ServeJSON(ctx, stderr.ErrParamError, err)
|
|
return
|
|
}
|
|
|
|
fstID, err := primitive.ObjectIDFromHex(param.FstID)
|
|
if err != nil {
|
|
common.ServeJSON(ctx, stderr.ErrParamError, err)
|
|
return
|
|
}
|
|
var code stderr.Code
|
|
var data []cmtmod.ChildRespList
|
|
code, data, err = commentser.GetChildCmtList(uid, objID, cmtID, fstID, param.CurTime, param.Page)
|
|
if err != nil {
|
|
common.ServeJSON(ctx, code, err)
|
|
return
|
|
}
|
|
var hasNext bool
|
|
if len(data) > int(param.PageSize) {
|
|
hasNext = true
|
|
data = data[:param.PageSize]
|
|
}
|
|
common.ServeJSON(ctx, code, commod.ListResp{HasNext: hasNext, List: data})
|
|
}
|
|
|
|
// ReplyList doc
|
|
// @Summary 评论模块 - 回复列表
|
|
// @Description 回复列表
|
|
// @Tags Comment
|
|
// @Accept mpfd,json
|
|
// @Produce json,html
|
|
// @Param pageNumber query integer true "当前页" mininum(1)
|
|
// @Param pageSize query integer true "每页条数" mininum(1)
|
|
// @Success 200 {string} json "{"msg": "操作成功"}"
|
|
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
|
// @Router /comment/reply/list [get]
|
|
func ReplyList(c *gin.Context) {
|
|
var arg struct {
|
|
commod.Page
|
|
}
|
|
if err := c.ShouldBind(&arg); err != nil {
|
|
common.ServeJSON(c, stderr.ErrParamError, "comment RecordList arg error "+err.Error())
|
|
return
|
|
}
|
|
// 检查uid是否存在
|
|
uid, err := common.GetUID(c)
|
|
if err != nil {
|
|
common.ServeJSON(c, stderr.UserIsNotExists, "comment RecordList Context USER_ID is not exist ")
|
|
return
|
|
}
|
|
skip := (arg.PageNumber - 1) * arg.PageSize
|
|
limit := arg.PageSize
|
|
replyPage, err := commentser.ReplyPages(uid, int64(skip), int64(limit))
|
|
if err != nil {
|
|
common.ServeJSON(c, stderr.ErrNetWorkBusy, err)
|
|
return
|
|
}
|
|
err = noticerecdmod.UpdateTrendReadTime(noticerecdmod.Cmet, uid, time.Now())
|
|
if err != nil {
|
|
log.Error("commentctrl ReplyList UpdateTrendReadTime faild", log.E(err))
|
|
}
|
|
common.ServeJSON(c, stderr.Success, replyPage)
|
|
}
|