243 lines
5.9 KiB
Go
243 lines
5.9 KiB
Go
// 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.ImageUrls); 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)
|
||
}
|