Initial commit

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-15 13:57:10 +08:00
co-authored by Claude Opus 5
commit 8679200f41
1897 changed files with 257900 additions and 0 deletions
+209
View File
@@ -0,0 +1,209 @@
package minectrl
import (
"91porn-server/app/service/collectser"
"91porn-server/app/service/mineser"
"91porn-server/common"
"91porn-server/common/log"
"91porn-server/common/stderr"
"91porn-server/models/commod"
"91porn-server/models/v/collectmod"
"91porn-server/models/v/followmod"
"91porn-server/models/v/userResourcemod"
"fmt"
"github.com/gin-gonic/gin"
)
// Follow doc
// @Summary 关注或者取消关注
// @Description 关注或者取消关注
// @Tags 关注
// @Accept mpfd,json
// @Produce json,html
// @Param followUID formData number true "关注的用户uid"
// @Param isShort formData bool true "是否是短视频用户"
// @Param isFollow formData bool true "true则是关注,false则是取消关注"
// @Success 200 {string} json "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /api/mine/follow [post]
func Follow(ctx *gin.Context) {
uid, err := common.GetUID(ctx)
if err != nil {
common.ServeJSON(ctx, stderr.ErrNoToken, nil)
return
}
param := followmod.UserFollowReq{}
err = ctx.ShouldBind(&param)
if err != nil {
log.Error(fmt.Sprintf("mine follow param error:%v,uid:%v", err, uid))
common.ServeJSON(ctx, stderr.ErrParamError, nil)
return
}
if param.FollowUID <= 0 {
log.Error(fmt.Sprintf("mine follow param followUid err param:%+v,uid:%v", param, uid))
common.ServeJSON(ctx, stderr.ErrParamError, nil)
return
}
code, data := mineser.Follow(uid, param.FollowUID, param.IsFollow, param.IsShort)
if code != stderr.Success {
log.Error(fmt.Sprintf("mine follow mineser Follow err:%+v,uid:%v", data, uid))
}
common.ServeJSON(ctx, code, data)
}
// UserDownload doc
// @Summary 使用下载次数
// @Description 使用下载次数
// @Tags 我的
// @Accept mpfd,json
// @Produce json,html
// @Success 200 {string} json "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /app/mine/download/use [post]
func UserDownload(ctx *gin.Context) {
uid, err := common.GetUID(ctx)
if err != nil {
common.ServeJSON(ctx, stderr.ErrNoToken, nil)
return
}
code, data := mineser.UseDownloadCount(uid)
if code != stderr.Success {
common.ServeJSON(ctx, code, data)
return
}
common.ServeJSON(ctx, stderr.Success, stderr.Success.Msg())
}
// Collect doc
// @Summary 用户模块 - 用户收藏信息
// @Description 保存用户一条收藏信息
// @Tags mine
// @Accept json
// @Produce json
// @Param q body collectmod.DoCollectReqInfo true "参数"
// @Success 200 {string} json "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /app/mine/collect [post]
func Collect(ctx *gin.Context) {
uid, err := common.GetUID(ctx)
if err != nil {
common.ServeJSON(ctx, stderr.ErrNoToken, err)
return
}
param := collectmod.DoCollectReqInfo{}
err = ctx.ShouldBind(&param)
if err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, err)
return
}
ua, _ := common.GetUA(ctx)
ip := common.GetIP(ctx)
code, err := collectser.DoCollect(uid, param.Type, param.ObjID, param.IsCollect, ua, ip)
if err != nil {
common.ServeJSON(ctx, code, err)
return
}
common.ServeJSON(ctx, code, nil)
}
// BatchCancelCollect doc
// @Summary 用户模块 - 批量取消收藏
// @Description 用户模块 - 批量取消收藏
// @Tags mine
// @Accept json
// @Produce json
// @Param objIds formData []string true "数组-收藏对象ID合集"
// @Param type formData string true "收藏类型 SP-长视频 SHORT-短视频 COVER-图文帖子 PIC-图集帖子 SEED_LINK-种子/黄油帖子"
// @Success 200 {string} json "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /app/mine/collect/batch/cancel [post]
func BatchCancelCollect(ctx *gin.Context) {
uid, err := common.GetUID(ctx)
if err != nil {
common.ServeJSON(ctx, stderr.ErrNoToken, err)
return
}
param := collectmod.DoBatchCancelCollectReq{}
err = ctx.ShouldBind(&param)
if err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, err)
return
}
ua, _ := common.GetUA(ctx)
ip := common.GetIP(ctx)
code, err := collectser.DoBatchCancelCollect(uid, param.Type, param.ObjIDs, ua, ip)
if err != nil {
common.ServeJSON(ctx, code, err)
return
}
common.ServeJSON(ctx, code, nil)
}
// InfoList doc
// @Summary 用户模块 - 用户收藏详情列表
// @Description 视频/地点/话题 列表
// @Tags mine
// @Accept json
// @Produce json
// @Param type formData string true "收藏类型 video:视频 tag:专题 location:地点"
// @Param pageNumber formData integer true "页数"
// @Param pageSize formData integer true "每页条数"
// @Param uid formData integer true "用户uid"
// @Success 200 {object} commod.ListResp
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /app/mine/collect/infoList [get]
func InfoList(ctx *gin.Context) {
type Info struct {
Type string `form:"type" json:"type" binding:"required"`
UID uint64 `form:"uid" json:"uid" binding:"required"`
Page commod.Page
}
param := Info{}
err := ctx.ShouldBind(&param)
if err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, "api mine collect InfoList ShouldBind err"+err.Error())
return
}
code, hasNext, data, err := collectser.GetInfoList(param.UID, param.Type, param.Page)
if err != nil {
common.ServeJSON(ctx, code, "api mine collect InfoList GetInfoList err"+err.Error())
return
}
common.ServeJSON(ctx, code, commod.ListResp{HasNext: hasNext, List: data})
}
// UserResourceList doc
// @Summary 用户资源列表
// @Description 用户资源列表
// @Tags mine
// @Accept json
// @Produce json
// @Param type formData string true "收藏类型 video:视频 tag:专题 location:地点"
// @Param pageNumber formData integer true "页数"
// @Param pageSize formData integer true "每页条数"
// @Param uid formData integer true "用户uid"
// @Success 200 {object} commod.ListResp
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /api/mine/userResource/list [get]
func UserResourceList(ctx *gin.Context) {
type Info struct {
Type string `form:"type" json:"type" binding:"required"`
Page commod.Page
}
param := Info{}
err := ctx.ShouldBind(&param)
if err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, "api mine collect InfoList ShouldBind err"+err.Error())
return
}
data, total, err := userResourcemod.GetUserResource(int(param.Page.PageNumber), int(param.Page.PageSize), param.Type)
if err != nil {
common.ServeJSON(ctx, stderr.Failure, err)
return
}
common.ServeJSON(ctx, stderr.Success, gin.H{
"list": data,
"total": total,
})
}