comment.api 7.3 KB
syntax = "v1"

info(
	title: "评论相关"
	desc: "编辑处理文章的评论"
	author: "author"
	email: "email"
	version: "v1"
)

// 小程序接口
@server(
	prefix: v1/mini
	group: comment
	jwt: MiniAuth
)
service Core {

	@doc "小程序获取回复@人可选列表"
	@handler MiniArticleCommentAtUser
	post /article_comment/at_user/select (MiniArticleCommentAtUserRequest) returns (MiniArticleCommentAtUserResponse)

	@doc "小程序填写文章的评论"
	@handler MiniCreateArticleComment
	post /article_comment (MiniCreateArticleCommentRequest) returns (MiniCreateArticleCommentResponse)

	@doc "小程序展示文章的评论列表"
	@handler MiniListArticleComment
	post /article_comment/list (MiniListArticleCommentRequest) returns (MiniListArticleCommentResponse)

	@doc "小程序展示文章的评论列表TOP5"
	@handler MiniTop5ArticleComment
	post /article_comment/top5 (MiniTop5ArticleCommentRequest) returns (MiniTop5ArticleCommentResponse)

	@doc "小程序展示单个文章的评论"
	@handler MiniGetArticleComment
	get /article_comment/:id (MiniGetArticleCommentRequest) returns (MiniGetArticleCommentResponse)

	@doc "小程序展示删除文章评论"
	@handler MiniDeleteArticleComment
	delete /article_comment/:id (MiniDeleteArticleCommentRequest) returns (MiniDeleteArticleCommentResponse)

	@doc "小程序展示评论时@人可选列表"
	@handler MiniArticleCommentAtWho
	post /article_comment/at_who/list (MiniArticleCommentAtWhoRequest) returns (MiniArticleCommentAtWhoResponse)
}

// 后台接口
@server(
	prefix: v1/system
	group: comment
	middleware: LoginStatusCheck
	jwt: SystemAuth
)
service Core {
	@doc "小程序获取回复@人可选列表"
	@handler SystemArticleCommentSearchMe
	post /article_comment/search/me (SystemArticleCommentSearchMeRequest) returns (SystemArticleCommentSearchMeResponse)
}

//
// 小程序获取回复@人可选列表
type (
	MiniArticleCommentAtUserRequest {
		ArtitceId int64 `json:"articleId"`
	}

	MiniArticleCommentAtUserResponse {
	}
)

//评论的填写人
type CommentAuthor {
	Id       int64  `json:"id"`                // 人员id
	Name     string `json:"name"`              // 人员的名字
	Avatar   string `json:"avatar,optional"`   // 人员头像URL
	Position string `json:"position,optional"` // 职位
	Company  string `json:"company,optional"`  // 公司
}

// 小程序填写文章的评论
type (
	MiniCreateArticleCommentRequest {
		ArtitcleId int64          `json:"articleId"` // 文章id
		SectionId  int64          `json:"sectionId"` // 段落id
		FromUserId int64          `json:",optional"` // 填写文章的人,服务端自动获取
		CompanyId  int64          `json:",optional"` // 服务端自动获取
		Pid        int64          `json:"pid"`       // 回复那个评论的id
		Content    string         `json:"content"`   // 评论的内容
		AtWho      []CommentAtWho `json:"atWho"`     // 填写评论时@的人
	}

	CommentAtWho {
		Id   int64  `json:"id"`
		Name string `json:"name,optional"`
	}
	MiniCreateArticleCommentResponse {
		Id             int64          `json:"id"`
		Pid            int64          `json:"pid"`
		TopId          int64          `json:"topId"`
		ArtitcleId     int64          `json:"articleId"`      // 文章id
		SectionId      int64          `json:"sectionId"`      // 段落id
		FromUserId     int64          `json:"fromUserId"`     // 填写评论的人
		FromUser       CommentAuthor  `json:"fromUser"`       // 填写评论的人
		ToUserId       int64          `json:"toUserId"`       // 回复哪个人
		ToUser         CommentAuthor  `json:"toUser"`         // 回复哪个人
		SectionContent string         `json:"sectionContent"` // 引用的文章内容文本
		CountReply     int            `json:"countReply"`     // 回复数量
		CountUserLove  int            `json:"countUserLove"`  // 用户点赞数量
		CountAdminLove int            `json:"countAdminLove"` // 运营点赞数量
		AtWho          []CommentAtWho `json:"atWho"`          // 填写评论时@的人
		CreatedAt      int64          `json:"createdAt"`      //
	}
)

// 小程序获取文章的评论列表
type (
	MiniListArticleCommentRequest {
		Page      int   `json:"page"`
		Size      int   `json:"size"`
		CompanyId int64 `json:",optional"`
		UserId    int64 `json:",optional"`
		ArticleId int64 `json:"articleId"`
		SectionId int64 `json:"sectionId,optional"`
	}
	MiniListArticleCommentResponse {
		Total int64                    `json:"total"`
		List  []ArticleCommentAndReply `json:"list"`
	}

	ArticleCommentAndReply {
		Comment    ArticleCommentItem   `json:"comment"`    //评论
		Reply      []ArticleCommentItem `json:"reply"`      //回复的评论
		TotalReply int64                `json:"totalReply"` //回复的评论数量
	}

	ArticleCommentItem {
		Id             int64          `json:"id"`
		Pid            int64          `json:"pid"`
		TopId          int64          `json:"topId"`
		ArtitcleId     int64          `json:"articleId"`      // 文章id
		SectionId      int64          `json:"sectionId"`      // 段落id
		FromUserId     int64          `json:"fromUserId"`     // 填写评论的人
		FromUser       CommentAuthor  `json:"fromUser"`       // 填写评论的人
		ToUserId       int64          `json:"toUserId"`       // 回复哪个人
		ToUser         CommentAuthor  `json:"toUser"`         // 回复哪个人
		SectionContent string         `json:"sectionContent"` // 引用的文章内容文本
		CountReply     int            `json:"countReply"`     // 回复数量
		CountUserLove  int            `json:"countUserLove"`  // 用户点赞数量
		CountAdminLove int            `json:"countAdminLove"` // 运营点赞数量
		AtWho          []CommentAtWho `json:"atWho"`          // 填写评论时@的人
		CreatedAt      int64          `json:"createdAt"`      //
		MeLoveFlag     int            `json:"meLoveFlag"`     //当前人员对评论的点赞标识 (0 没有点赞 1有点赞)
		Content        string         `json:"content"`   // 评论的内容
	}
)

// 小程序获取单个文章的评论
type (
	MiniGetArticleCommentRequest {
		CommentId int64 `path:"id"`
		CompanyId int64 `path:",optional"`
		UserId    int64 `path:",optional"`
	}
	MiniGetArticleCommentResponse {
		ArticleCommentAndReply
	}
)

// 小程序删除单个文章的评论
type (
	MiniDeleteArticleCommentRequest {
		CommentId int64 `path:"id"`
		UserId    int64 `path:",optional"`
		CompanyId int64 `path:",optional"`
	}
	MiniDeleteArticleCommentResponse {
		Id int64 `json:"id"`
	}
)

// 热门前5的评论列表
type (
	MiniTop5ArticleCommentRequest {
		CompanyId int64 `json:",optional"`
		UserId    int64 `json:",optional"`
		ArticleId int64 `json:"articleId"`
	}

	MiniTop5ArticleCommentResponse {
		List []ArticleCommentItem `json:"list"`
	}
)

// 填写评论时选择@人
type (
	MiniArticleCommentAtWhoRequest {
		CompanyId int64 `json:",optional"`
		UserId    int64 `json:",optional"`
		ArticleId int64 `json:"articleId"`
	}

	MiniArticleCommentAtWhoResponse {
		List []CommentAtWho `json:"list"`
	}
)

type(
	SystemArticleCommentSearchMeRequest{
		Page      int   `json:"page"`
		Size      int   `json:"size"`
		AuthorId  int64 `json:"authorId"`  // 用户
		BeginTime int64 `json:"beginTime,optional"` // 开始时间
		EndTime int64 `json:"endTime,optional"`     // 结束时间
	}
	SystemArticleCommentSearchMeResponse{
		List  []ArticleCommentItem `json:"list"`
		Total int64    `json:"total"`
	}
)