Files
IUQT/acquaintances/biz/handler/user/moments_service.go

243 lines
5.9 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Code generated by hertz generator.
package user
import (
"acquaintances/biz/dal/mysql"
"acquaintances/biz/model"
user "acquaintances/biz/model/user"
"context"
"github.com/cloudwego/hertz/pkg/app"
"github.com/cloudwego/hertz/pkg/protocol/consts"
)
// CreateMoment 创建朋友圈动态
// @router /v1/Moments/ [POST]
func CreateMoment(ctx context.Context, c *app.RequestContext) {
var err error
var req user.CreateMomentRequest
// 绑定并验证请求参数
if err = c.BindAndValidate(&req); err != nil {
c.JSON(consts.StatusBadRequest, "请求参数错误")
return
}
// 验证用户是否存在实际项目中应通过token获取用户ID并验证
exists, err := mysql.CheckUserExists(req.UserID)
if err != nil {
c.JSON(consts.StatusInternalServerError, "查询用户信息失败")
return
}
if !exists {
c.JSON(consts.StatusForbidden, "用户不存在")
return
}
// 构建朋友圈动态数据
moment := model.Moment{
UserID: req.UserID,
Content: req.Content,
Visibility: uint8(req.Visibility),
Location: req.Location,
Status: 1, // 默认状态为正常
}
// 保存动态到数据库
if err = mysql.SaveMomentWithImages(&moment, req.FileUrls); err != nil {
c.JSON(consts.StatusInternalServerError, &user.CreateMomentResponse{Code: user.Code_DBErr, Msg: err.Error()})
return
}
// 构建响应
resp := new(user.CreateMomentResponse)
c.JSON(consts.StatusOK, resp)
}
// ListMoments 获取朋友圈动态
// @router /v1/Moments/list/ [GET]
func ListMoments(ctx context.Context, c *app.RequestContext) {
var err error
var req user.ListMomentsRequest
err = c.BindAndValidate(&req)
if err != nil {
c.JSON(consts.StatusBadRequest, err.Error())
return
}
data, total, err := mysql.GetFriendsMoments(req)
if err != nil {
c.JSON(consts.StatusInternalServerError, err.Error())
return
}
resp := new(user.ListMomentsResponse)
resp.Moments = data
resp.Total = total
c.JSON(consts.StatusOK, resp)
}
// ListMomentsAppoint 获取指定用户朋友圈动态
// @router /v1/Moments/user/list/ [GET]
func ListMomentsAppoint(ctx context.Context, c *app.RequestContext) {
var err error
var req user.ListMomentsAppointRequest
err = c.BindAndValidate(&req)
if err != nil {
c.JSON(consts.StatusBadRequest, err.Error())
return
}
data, total, err := mysql.GetMomentsAppoint(req)
if err != nil {
c.JSON(consts.StatusInternalServerError, err.Error())
return
}
resp := new(user.ListMomentsAppointResponse)
resp.Moments = data
resp.Total = total
c.JSON(consts.StatusOK, resp)
}
// DeleteMoment . 删除动态
// @router /v1/Moments/ [DELETE]
func DeleteMoment(ctx context.Context, c *app.RequestContext) {
var err error
var req user.DeleteMomentRequest
err = c.BindAndValidate(&req)
if err != nil {
c.JSON(consts.StatusBadRequest, err.Error())
return
}
err = mysql.DeleteMoment(req)
if err != nil {
c.JSON(consts.StatusInternalServerError, err.Error())
return
}
resp := new(user.DeleteMomentResponse)
c.JSON(consts.StatusOK, resp)
}
// LikeMoment .点赞
// @router /v1/Moments/like/ [POST]
func LikeMoment(ctx context.Context, c *app.RequestContext) {
var err error
var req user.LikeMomentRequest
err = c.BindAndValidate(&req)
if err != nil {
c.JSON(consts.StatusBadRequest, err.Error())
return
}
err = mysql.LikeMoment(req)
if err != nil {
c.JSON(consts.StatusInternalServerError, err.Error())
return
}
resp := new(user.LikeMomentResponse)
c.JSON(consts.StatusOK, resp)
}
// UnlikeMoment .取消点赞
// @router /v1/Moments/dislike/ [POST]
func UnlikeMoment(ctx context.Context, c *app.RequestContext) {
var err error
var req user.UnlikeMomentRequest
err = c.BindAndValidate(&req)
if err != nil {
c.JSON(consts.StatusBadRequest, err.Error())
return
}
err = mysql.UnlikeMoment(req)
if err != nil {
c.JSON(consts.StatusInternalServerError, err.Error())
return
}
resp := new(user.UnlikeMomentResponse)
c.JSON(consts.StatusOK, resp)
}
// ListMomentLikes .获取点赞人员列表
// @router /v1/Moments/like/list/ [GET]
func ListMomentLikes(ctx context.Context, c *app.RequestContext) {
var err error
var req user.ListMomentLikesRequest
err = c.BindAndValidate(&req)
if err != nil {
c.JSON(consts.StatusBadRequest, err.Error())
return
}
data, total, err := mysql.GetLikeUserList(req)
if err != nil {
c.JSON(consts.StatusInternalServerError, err.Error())
return
}
resp := new(user.ListMomentLikesResponse)
resp.Likes = data
resp.Total = total
c.JSON(consts.StatusOK, resp)
}
// CommentMoment .评论
// @router /v1/Moments/comment/ [POST]
func CommentMoment(ctx context.Context, c *app.RequestContext) {
var err error
var req user.CommentMomentRequest
err = c.BindAndValidate(&req)
if err != nil {
c.JSON(consts.StatusBadRequest, err.Error())
return
}
if err := mysql.CommentMoment(req); err != nil {
c.JSON(consts.StatusInternalServerError, err.Error())
return
}
resp := new(user.CommentMomentResponse)
c.JSON(consts.StatusOK, resp)
}
// ListMomentComments .获取评论列表
// @router /v1/Moments/comment/list/ [GET]
func ListMomentComments(ctx context.Context, c *app.RequestContext) {
var err error
var req user.ListMomentCommentsRequest
err = c.BindAndValidate(&req)
if err != nil {
c.JSON(consts.StatusBadRequest, err.Error())
return
}
data, total, err := mysql.ListMomentComments(req)
if err != nil {
c.JSON(consts.StatusInternalServerError, err.Error())
return
}
resp := new(user.ListMomentCommentsResponse)
resp.Comments = data
resp.Total = total
c.JSON(consts.StatusOK, resp)
}
// DeleteComment .删除评论
// @router /v1/Moments/comment/ [DELETE]
func DeleteComment(ctx context.Context, c *app.RequestContext) {
var err error
var req user.DeleteCommentRequest
err = c.BindAndValidate(&req)
if err != nil {
c.JSON(consts.StatusBadRequest, err.Error())
return
}
err = mysql.DeleteComment(req)
if err != nil {
c.JSON(consts.StatusInternalServerError, err.Error())
return
}
resp := new(user.DeleteCommentResponse)
c.JSON(consts.StatusOK, resp)
}