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(¶m) 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(¶m) 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(¶m) 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(¶m) 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(¶m) 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, }) }