Merge branch 'dev' of http://gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss into dev
正在显示
12 个修改的文件
包含
129 行增加
和
16 行删除
| @@ -313,14 +313,16 @@ type ( | @@ -313,14 +313,16 @@ type ( | ||
| 313 | TagId int64 `json:"tagId"` // 标签id | 313 | TagId int64 `json:"tagId"` // 标签id |
| 314 | } | 314 | } |
| 315 | MiniAllArticleTagResponse{ | 315 | MiniAllArticleTagResponse{ |
| 316 | - TagGroup []string `json:"tagGroup"` | ||
| 317 | - Tags []ArticleTagItem `json:"tags"` | 316 | + TagGroup []ArticleTagGroup `json:"tagGroup"` |
| 318 | } | 317 | } |
| 319 | - | 318 | + ArticleTagGroup { |
| 319 | + Group string `json:"group"` | ||
| 320 | + Tags []ArticleTagItem `json:"tags"` | ||
| 321 | + } | ||
| 320 | ArticleTagItem { | 322 | ArticleTagItem { |
| 321 | Id int64 `json:"id"` | 323 | Id int64 `json:"id"` |
| 322 | Group string `json:"group"` | 324 | Group string `json:"group"` |
| 323 | - Name string `json:"name"` | 325 | + Name string `json:"name"` |
| 324 | } | 326 | } |
| 325 | ) | 327 | ) |
| 326 | 328 |
| @@ -7,6 +7,8 @@ import ( | @@ -7,6 +7,8 @@ import ( | ||
| 7 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/logic/comment" | 7 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/logic/comment" |
| 8 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/svc" | 8 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/svc" |
| 9 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/types" | 9 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/types" |
| 10 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/contextdata" | ||
| 11 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/result" | ||
| 10 | ) | 12 | ) |
| 11 | 13 | ||
| 12 | func MiniArticleCommentAtWhoHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { | 14 | func MiniArticleCommentAtWhoHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { |
| @@ -18,11 +20,10 @@ func MiniArticleCommentAtWhoHandler(svcCtx *svc.ServiceContext) http.HandlerFunc | @@ -18,11 +20,10 @@ func MiniArticleCommentAtWhoHandler(svcCtx *svc.ServiceContext) http.HandlerFunc | ||
| 18 | } | 20 | } |
| 19 | 21 | ||
| 20 | l := comment.NewMiniArticleCommentAtWhoLogic(r.Context(), svcCtx) | 22 | l := comment.NewMiniArticleCommentAtWhoLogic(r.Context(), svcCtx) |
| 23 | + token := contextdata.GetUserTokenFromCtx(r.Context()) | ||
| 24 | + req.CompanyId = token.CompanyId | ||
| 25 | + req.UserId = token.UserId | ||
| 21 | resp, err := l.MiniArticleCommentAtWho(&req) | 26 | resp, err := l.MiniArticleCommentAtWho(&req) |
| 22 | - if err != nil { | ||
| 23 | - httpx.ErrorCtx(r.Context(), w, err) | ||
| 24 | - } else { | ||
| 25 | - httpx.OkJsonCtx(r.Context(), w, resp) | ||
| 26 | - } | 27 | + result.HttpResult(r, w, resp, err) |
| 27 | } | 28 | } |
| 28 | } | 29 | } |
| @@ -2,6 +2,7 @@ package article | @@ -2,6 +2,7 @@ package article | ||
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "context" | 4 | "context" |
| 5 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/logic/message" | ||
| 5 | 6 | ||
| 6 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/svc" | 7 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/svc" |
| 7 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/types" | 8 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/types" |
| @@ -97,6 +98,14 @@ func (l *MiniSetUserLikeLogic) cancelSetUserLikeArticle(req *types.MiniSetUserLi | @@ -97,6 +98,14 @@ func (l *MiniSetUserLikeLogic) cancelSetUserLikeArticle(req *types.MiniSetUserLi | ||
| 97 | if err != nil { | 98 | if err != nil { |
| 98 | return err | 99 | return err |
| 99 | } | 100 | } |
| 101 | + | ||
| 102 | + // 删除点赞文章消息 | ||
| 103 | + var messageLogic = message.NewMiniBusinessLogic(l.ctx, l.svcCtx) | ||
| 104 | + err = messageLogic.UnLikeArticle(c, articleInfo.Id) | ||
| 105 | + if err != nil { | ||
| 106 | + return err | ||
| 107 | + } | ||
| 108 | + | ||
| 100 | return nil | 109 | return nil |
| 101 | }, true) | 110 | }, true) |
| 102 | if err != nil { | 111 | if err != nil { |
| @@ -170,6 +179,14 @@ func (l *MiniSetUserLikeLogic) cancelSetUserLikeComment(req *types.MiniSetUserLi | @@ -170,6 +179,14 @@ func (l *MiniSetUserLikeLogic) cancelSetUserLikeComment(req *types.MiniSetUserLi | ||
| 170 | if err != nil { | 179 | if err != nil { |
| 171 | return err | 180 | return err |
| 172 | } | 181 | } |
| 182 | + | ||
| 183 | + // 删除点赞评论消息 | ||
| 184 | + var messageLogic = message.NewMiniBusinessLogic(l.ctx, l.svcCtx) | ||
| 185 | + err = messageLogic.UnLikeComment(c, commentInfo.ArticleId, commentInfo.Id) | ||
| 186 | + if err != nil { | ||
| 187 | + return err | ||
| 188 | + } | ||
| 189 | + | ||
| 173 | return nil | 190 | return nil |
| 174 | }, true) | 191 | }, true) |
| 175 | if err != nil { | 192 | if err != nil { |
| @@ -243,6 +260,14 @@ func (l *MiniSetUserLikeLogic) setUserLikeArticle(req *types.MiniSetUserLikeRequ | @@ -243,6 +260,14 @@ func (l *MiniSetUserLikeLogic) setUserLikeArticle(req *types.MiniSetUserLikeRequ | ||
| 243 | if err != nil { | 260 | if err != nil { |
| 244 | return err | 261 | return err |
| 245 | } | 262 | } |
| 263 | + | ||
| 264 | + // 创建点赞消息 | ||
| 265 | + var messageLogic = message.NewMiniBusinessLogic(l.ctx, l.svcCtx) | ||
| 266 | + err = messageLogic.LikeArticle(c, articleInfo.Id, articleInfo.AuthorId) | ||
| 267 | + if err != nil { | ||
| 268 | + return err | ||
| 269 | + } | ||
| 270 | + | ||
| 246 | return nil | 271 | return nil |
| 247 | }, true) | 272 | }, true) |
| 248 | if err != nil { | 273 | if err != nil { |
| @@ -324,6 +349,14 @@ func (l *MiniSetUserLikeLogic) setUserLikeComment(req *types.MiniSetUserLikeRequ | @@ -324,6 +349,14 @@ func (l *MiniSetUserLikeLogic) setUserLikeComment(req *types.MiniSetUserLikeRequ | ||
| 324 | if err != nil { | 349 | if err != nil { |
| 325 | return err | 350 | return err |
| 326 | } | 351 | } |
| 352 | + | ||
| 353 | + // 创建点赞消息 | ||
| 354 | + var messageLogic = message.NewMiniBusinessLogic(l.ctx, l.svcCtx) | ||
| 355 | + err = messageLogic.LikeComment(c, commentInfo.ArticleId, commentInfo.Id, commentInfo.FromUserId) | ||
| 356 | + if err != nil { | ||
| 357 | + return err | ||
| 358 | + } | ||
| 359 | + | ||
| 327 | return nil | 360 | return nil |
| 328 | }, true) | 361 | }, true) |
| 329 | if err != nil { | 362 | if err != nil { |
| @@ -5,6 +5,7 @@ import ( | @@ -5,6 +5,7 @@ import ( | ||
| 5 | 5 | ||
| 6 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/svc" | 6 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/svc" |
| 7 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/types" | 7 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/types" |
| 8 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/xerr" | ||
| 8 | 9 | ||
| 9 | "github.com/zeromicro/go-zero/core/logx" | 10 | "github.com/zeromicro/go-zero/core/logx" |
| 10 | ) | 11 | ) |
| @@ -24,7 +25,21 @@ func NewMiniArticleCommentAtWhoLogic(ctx context.Context, svcCtx *svc.ServiceCon | @@ -24,7 +25,21 @@ func NewMiniArticleCommentAtWhoLogic(ctx context.Context, svcCtx *svc.ServiceCon | ||
| 24 | } | 25 | } |
| 25 | 26 | ||
| 26 | func (l *MiniArticleCommentAtWhoLogic) MiniArticleCommentAtWho(req *types.MiniArticleCommentAtWhoRequest) (resp *types.MiniArticleCommentAtWhoResponse, err error) { | 27 | func (l *MiniArticleCommentAtWhoLogic) MiniArticleCommentAtWho(req *types.MiniArticleCommentAtWhoRequest) (resp *types.MiniArticleCommentAtWhoResponse, err error) { |
| 27 | - // todo: add your logic here and delete this line | 28 | + var conn = l.svcCtx.DefaultDBConn() |
| 29 | + articleInfo, err := l.svcCtx.ArticleRepository.FindOne(l.ctx, conn, req.ArticleId) | ||
| 30 | + if err != nil { | ||
| 31 | + return nil, xerr.NewErrMsgErr("获取评论人信息失败", err) | ||
| 32 | + } | ||
| 33 | + if articleInfo.CompanyId != req.CompanyId { | ||
| 34 | + resp = &types.MiniArticleCommentAtWhoResponse{} | ||
| 35 | + return resp, nil | ||
| 36 | + } | ||
| 37 | + | ||
| 38 | + // userList := []*domain.User{} | ||
| 39 | + // if len(articleInfo.WhoRead) == 0 { | ||
| 40 | + | ||
| 41 | + // return | ||
| 42 | + // } | ||
| 28 | 43 | ||
| 29 | return | 44 | return |
| 30 | } | 45 | } |
| @@ -2,6 +2,7 @@ package comment | @@ -2,6 +2,7 @@ package comment | ||
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "context" | 4 | "context" |
| 5 | + | ||
| 5 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/logic/message" | 6 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/logic/message" |
| 6 | 7 | ||
| 7 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/svc" | 8 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/svc" |
| @@ -12,6 +13,7 @@ import ( | @@ -12,6 +13,7 @@ import ( | ||
| 12 | 13 | ||
| 13 | "text/template" | 14 | "text/template" |
| 14 | 15 | ||
| 16 | + "github.com/samber/lo" | ||
| 15 | "github.com/zeromicro/go-zero/core/logx" | 17 | "github.com/zeromicro/go-zero/core/logx" |
| 16 | ) | 18 | ) |
| 17 | 19 | ||
| @@ -88,11 +90,15 @@ func (l *MiniCreateArticleCommentLogic) MiniCreateArticleComment(req *types.Mini | @@ -88,11 +90,15 @@ func (l *MiniCreateArticleCommentLogic) MiniCreateArticleComment(req *types.Mini | ||
| 88 | for _, val := range req.AtWho { | 90 | for _, val := range req.AtWho { |
| 89 | atWhoIds = append(atWhoIds, val.Id) | 91 | atWhoIds = append(atWhoIds, val.Id) |
| 90 | } | 92 | } |
| 93 | + atWhoIds = lo.Uniq(atWhoIds) | ||
| 91 | queryOption := domain.NewQueryOptions().WithFindOnly().WithKV("ids", atWhoIds) | 94 | queryOption := domain.NewQueryOptions().WithFindOnly().WithKV("ids", atWhoIds) |
| 92 | _, atWhoList, err = l.svcCtx.UserRepository.Find(l.ctx, conn, queryOption) | 95 | _, atWhoList, err = l.svcCtx.UserRepository.Find(l.ctx, conn, queryOption) |
| 93 | if err != nil { | 96 | if err != nil { |
| 94 | return nil, xerr.NewErrMsgErr("检查@的人员失败", err) | 97 | return nil, xerr.NewErrMsgErr("检查@的人员失败", err) |
| 95 | } | 98 | } |
| 99 | + if len(atWhoIds) != len(atWhoList) { | ||
| 100 | + return nil, xerr.NewErrMsg("检查@的人员失败") | ||
| 101 | + } | ||
| 96 | } | 102 | } |
| 97 | // 处理文本内容 | 103 | // 处理文本内容 |
| 98 | content := template.HTMLEscapeString(req.Content) | 104 | content := template.HTMLEscapeString(req.Content) |
| @@ -222,8 +222,18 @@ func (l *MiniBusinessLogic) LikeArticle(conn transaction.Conn, articleId int64, | @@ -222,8 +222,18 @@ func (l *MiniBusinessLogic) LikeArticle(conn transaction.Conn, articleId int64, | ||
| 222 | } | 222 | } |
| 223 | 223 | ||
| 224 | // LikeComment 点赞评论 | 224 | // LikeComment 点赞评论 |
| 225 | -func (l *MiniBusinessLogic) LikeComment(conn transaction.Conn, articleId int64, sectionId int64, commentId int64, at int64) (err error) { | ||
| 226 | - return l.createMessage(conn, domain.MsgTypeLike, domain.OptTypeComment, articleId, sectionId, commentId, "", []int64{at}) | 225 | +func (l *MiniBusinessLogic) LikeComment(conn transaction.Conn, articleId int64, commentId int64, at int64) (err error) { |
| 226 | + return l.createMessage(conn, domain.MsgTypeLike, domain.OptTypeComment, articleId, 0, commentId, "", []int64{at}) | ||
| 227 | +} | ||
| 228 | + | ||
| 229 | +// UnLikeArticle 取消点赞文章 | ||
| 230 | +func (l *MiniBusinessLogic) UnLikeArticle(conn transaction.Conn, articleId int64) (err error) { | ||
| 231 | + return l.deleteMessage(conn, domain.OptTypeArticle, articleId, 0) | ||
| 232 | +} | ||
| 233 | + | ||
| 234 | +// UnLikeComment 取消点赞评论 | ||
| 235 | +func (l *MiniBusinessLogic) UnLikeComment(conn transaction.Conn, articleId int64, commentId int64) (err error) { | ||
| 236 | + return l.deleteMessage(conn, domain.OptTypeComment, articleId, commentId) | ||
| 227 | } | 237 | } |
| 228 | 238 | ||
| 229 | func (l *MiniBusinessLogic) createMessage( | 239 | func (l *MiniBusinessLogic) createMessage( |
| @@ -257,3 +267,27 @@ func (l *MiniBusinessLogic) createMessage( | @@ -257,3 +267,27 @@ func (l *MiniBusinessLogic) createMessage( | ||
| 257 | } | 267 | } |
| 258 | return nil | 268 | return nil |
| 259 | } | 269 | } |
| 270 | + | ||
| 271 | +func (l *MiniBusinessLogic) deleteMessage(conn transaction.Conn, optType domain.MsgBusinessOpt, articleId int64, commentId int64) (err error) { | ||
| 272 | + var userToken = contextdata.GetUserTokenFromCtx(l.ctx) | ||
| 273 | + | ||
| 274 | + queryOption := domain.NewQueryOptions().WithFindOnly().WithOffsetLimit(1, 1). | ||
| 275 | + MustWithKV("type", domain.MsgTypeLike). | ||
| 276 | + MustWithKV("optType", optType). | ||
| 277 | + MustWithKV("companyId", userToken.CompanyId). | ||
| 278 | + MustWithKV("recipientId", userToken.UserId). | ||
| 279 | + MustWithKV("articleId", articleId). | ||
| 280 | + MustWithKV("commentId", commentId) | ||
| 281 | + | ||
| 282 | + _, list, err := l.svcCtx.MessageBusinessRepository.Find(l.ctx, conn, queryOption) | ||
| 283 | + if err != nil { | ||
| 284 | + return err | ||
| 285 | + } | ||
| 286 | + for i := range list { | ||
| 287 | + _, err = l.svcCtx.MessageBusinessRepository.Delete(l.ctx, conn, list[i]) | ||
| 288 | + if err != nil { | ||
| 289 | + return err | ||
| 290 | + } | ||
| 291 | + } | ||
| 292 | + return nil | ||
| 293 | +} |
| @@ -852,8 +852,12 @@ type MiniAllArticleTagRequest struct { | @@ -852,8 +852,12 @@ type MiniAllArticleTagRequest struct { | ||
| 852 | } | 852 | } |
| 853 | 853 | ||
| 854 | type MiniAllArticleTagResponse struct { | 854 | type MiniAllArticleTagResponse struct { |
| 855 | - TagGroup []string `json:"tagGroup"` | ||
| 856 | - Tags []ArticleTagItem `json:"tags"` | 855 | + TagGroup []ArticleTagGroup `json:"tagGroup"` |
| 856 | +} | ||
| 857 | + | ||
| 858 | +type ArticleTagGroup struct { | ||
| 859 | + Group string `json:"group"` | ||
| 860 | + Tags []ArticleTagItem `json:"tags"` | ||
| 857 | } | 861 | } |
| 858 | 862 | ||
| 859 | type ArticleTagItem struct { | 863 | type ArticleTagItem struct { |
| @@ -8,6 +8,7 @@ import ( | @@ -8,6 +8,7 @@ import ( | ||
| 8 | "gorm.io/gorm" | 8 | "gorm.io/gorm" |
| 9 | ) | 9 | ) |
| 10 | 10 | ||
| 11 | +// 保存文章和标签的关系,主要用于分组统计用 | ||
| 11 | type ArticleAndTag struct { | 12 | type ArticleAndTag struct { |
| 12 | Id int64 // 唯一标识 | 13 | Id int64 // 唯一标识 |
| 13 | CompanyId int64 `json:"companyId"` | 14 | CompanyId int64 `json:"companyId"` |
| @@ -28,7 +29,7 @@ func (m *ArticleAndTag) BeforeCreate(tx *gorm.DB) (err error) { | @@ -28,7 +29,7 @@ func (m *ArticleAndTag) BeforeCreate(tx *gorm.DB) (err error) { | ||
| 28 | } | 29 | } |
| 29 | 30 | ||
| 30 | func (m *ArticleAndTag) BeforeUpdate(tx *gorm.DB) (err error) { | 31 | func (m *ArticleAndTag) BeforeUpdate(tx *gorm.DB) (err error) { |
| 31 | - // m.UpdatedAt = time.Now().Unix() | 32 | + m.UpdatedAt = time.Now().Unix() |
| 32 | return | 33 | return |
| 33 | } | 34 | } |
| 34 | 35 |
| @@ -22,6 +22,7 @@ type ArticleTag struct { | @@ -22,6 +22,7 @@ type ArticleTag struct { | ||
| 22 | Name string // 标签名称 | 22 | Name string // 标签名称 |
| 23 | Group string // 标签分类 | 23 | Group string // 标签分类 |
| 24 | Remark string // 备注 | 24 | Remark string // 备注 |
| 25 | + SortBy int64 // 顺序 | ||
| 25 | } | 26 | } |
| 26 | 27 | ||
| 27 | func (m *ArticleTag) TableName() string { | 28 | func (m *ArticleTag) TableName() string { |
| @@ -121,9 +121,24 @@ func (repository *MessageBusinessRepository) Find(ctx context.Context, conn tran | @@ -121,9 +121,24 @@ func (repository *MessageBusinessRepository) Find(ctx context.Context, conn tran | ||
| 121 | ) | 121 | ) |
| 122 | queryFunc := func() (interface{}, error) { | 122 | queryFunc := func() (interface{}, error) { |
| 123 | tx = tx.Model(&ms).Order("id desc") | 123 | tx = tx.Model(&ms).Order("id desc") |
| 124 | + if v, ok := queryOptions["type"]; ok { | ||
| 125 | + tx.Where("type = ?", v) | ||
| 126 | + } | ||
| 127 | + if v, ok := queryOptions["optType"]; ok { | ||
| 128 | + tx.Where("opt_type = ?", v) | ||
| 129 | + } | ||
| 124 | if v, ok := queryOptions["companyId"]; ok { | 130 | if v, ok := queryOptions["companyId"]; ok { |
| 125 | tx.Where("company_id = ?", v) | 131 | tx.Where("company_id = ?", v) |
| 126 | } | 132 | } |
| 133 | + if v, ok := queryOptions["recipientId"]; ok { | ||
| 134 | + tx.Where("recipient_id = ?", v) | ||
| 135 | + } | ||
| 136 | + if v, ok := queryOptions["articleId"]; ok { | ||
| 137 | + tx.Where("article_id = ?", v) | ||
| 138 | + } | ||
| 139 | + if v, ok := queryOptions["commentId"]; ok { | ||
| 140 | + tx.Where("comment_id = ?", v) | ||
| 141 | + } | ||
| 127 | if total, tx = transaction.PaginationAndCount(ctx, tx, queryOptions, &ms); tx.Error != nil { | 142 | if total, tx = transaction.PaginationAndCount(ctx, tx, queryOptions, &ms); tx.Error != nil { |
| 128 | return dms, tx.Error | 143 | return dms, tx.Error |
| 129 | } | 144 | } |
| @@ -19,6 +19,7 @@ type ArticleTag struct { | @@ -19,6 +19,7 @@ type ArticleTag struct { | ||
| 19 | Name string `json:"name"` // 标签名称 | 19 | Name string `json:"name"` // 标签名称 |
| 20 | Group string `json:"group"` // 标签分类 | 20 | Group string `json:"group"` // 标签分类 |
| 21 | Remark string `json:"remark"` // 备注 | 21 | Remark string `json:"remark"` // 备注 |
| 22 | + SortBy int64 `json:"sortBy"` // 顺序 | ||
| 22 | } | 23 | } |
| 23 | type ArticleTagRepository interface { | 24 | type ArticleTagRepository interface { |
| 24 | Insert(ctx context.Context, conn transaction.Conn, dm *ArticleTag) (*ArticleTag, error) | 25 | Insert(ctx context.Context, conn transaction.Conn, dm *ArticleTag) (*ArticleTag, error) |
| @@ -36,7 +36,7 @@ const ( | @@ -36,7 +36,7 @@ const ( | ||
| 36 | 36 | ||
| 37 | const ( | 37 | const ( |
| 38 | OptTypeArticle MsgBusinessOpt = 1 // 操作分类-针对文章 | 38 | OptTypeArticle MsgBusinessOpt = 1 // 操作分类-针对文章 |
| 39 | - OptTypeComment MsgBusinessOpt = 2 // 操作分类-针对评论() | 39 | + OptTypeComment MsgBusinessOpt = 2 // 操作分类-针对评论 |
| 40 | OptTypeDiscussion MsgBusinessOpt = 3 // 操作分类-针对讨论 | 40 | OptTypeDiscussion MsgBusinessOpt = 3 // 操作分类-针对讨论 |
| 41 | ) | 41 | ) |
| 42 | 42 |
-
请 注册 或 登录 后发表评论