package controller import ( "github.com/gin-gonic/gin" "hepa-calc-api/api/dao" "hepa-calc-api/api/dto" "hepa-calc-api/api/requests" "hepa-calc-api/api/responses" "hepa-calc-api/api/service" "hepa-calc-api/global" "hepa-calc-api/utils" "strconv" ) type UserCollection struct{} // GetUserCollectionPage 获取用户收藏题目列表-分页 func (b *UserCollection) GetUserCollectionPage(c *gin.Context) { userCollectionRequest := requests.UserCollectionRequest{} req := userCollectionRequest.GetUserCollectionPage if err := c.ShouldBind(&req); err != nil { responses.FailWithMessage(err.Error(), c) return } // 参数验证 if err := global.Validate.Struct(req); err != nil { responses.FailWithMessage(utils.Translate(err), c) return } if req.Page == 0 { req.Page = 1 } if req.PageSize == 0 { req.PageSize = 20 } userId := c.GetInt64("UserId") req.UserId = userId // 获取数据 userCollectionDao := dao.UserCollectionDao{} userCollection, total, err := userCollectionDao.GetUserCollectionPageSearch(req, req.Page, req.PageSize) if err != nil { responses.FailWithMessage(err.Error(), c) return } // 处理返回值 g := dto.GetUserCollectionListDto(userCollection) result := make(map[string]interface{}) result["page"] = req.Page result["page_size"] = req.PageSize result["total"] = total result["data"] = g responses.OkWithData(result, c) } // PutUserCollection 收藏题目 func (r *UserCollection) PutUserCollection(c *gin.Context) { userCollectionRequest := requests.UserCollectionRequest{} req := userCollectionRequest.PutUserCollection if err := c.ShouldBindJSON(&req); err != nil { responses.FailWithMessage(err.Error(), c) return } // 参数验证 if err := global.Validate.Struct(req); err != nil { responses.FailWithMessage(utils.Translate(err), c) return } // 将 id 转换为 int64 类型 questionId, err := strconv.ParseInt(req.QuestionId, 10, 64) if err != nil { responses.Fail(c) return } userId := c.GetInt64("UserId") // 业务处理 userCollectionService := service.UserCollectionService{} res, err := userCollectionService.PutUserCollection(userId, questionId) if err != nil || res != true { responses.FailWithMessage(err.Error(), c) return } responses.Ok(c) } // PutUserCollectionCancel 取消收藏题目 func (r *UserCollection) PutUserCollectionCancel(c *gin.Context) { userCollectionRequest := requests.UserCollectionRequest{} req := userCollectionRequest.PutUserCollectionCancel if err := c.ShouldBindJSON(&req); err != nil { responses.FailWithMessage(err.Error(), c) return } // 参数验证 if err := global.Validate.Struct(req); err != nil { responses.FailWithMessage(utils.Translate(err), c) return } // 将 id 转换为 int64 类型 questionId, err := strconv.ParseInt(req.QuestionId, 10, 64) if err != nil { responses.Fail(c) return } userId := c.GetInt64("UserId") // 业务处理 userCollectionService := service.UserCollectionService{} res, err := userCollectionService.PutUserCollectionCancel(userId, questionId) if err != nil || res != true { responses.FailWithMessage(err.Error(), c) return } responses.Ok(c) }