Merge branch 'dev' of http://gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss into dev
正在显示
11 个修改的文件
包含
493 行增加
和
26 行删除
| @@ -1225,6 +1225,60 @@ | @@ -1225,6 +1225,60 @@ | ||
| 1225 | ] | 1225 | ] |
| 1226 | } | 1226 | } |
| 1227 | }, | 1227 | }, |
| 1228 | + "v1/system/article/history/{id}": { | ||
| 1229 | + "get": { | ||
| 1230 | + "summary": "管理后台帖子历史详情", | ||
| 1231 | + "operationId": "SystemArticleGetHistory", | ||
| 1232 | + "responses": { | ||
| 1233 | + "200": { | ||
| 1234 | + "description": "A successful response.", | ||
| 1235 | + "schema": { | ||
| 1236 | + "$ref": "#/definitions/SystemArticleGetHistoryResponse" | ||
| 1237 | + } | ||
| 1238 | + } | ||
| 1239 | + }, | ||
| 1240 | + "parameters": [ | ||
| 1241 | + { | ||
| 1242 | + "name": "id", | ||
| 1243 | + "in": "path", | ||
| 1244 | + "required": true, | ||
| 1245 | + "type": "string" | ||
| 1246 | + } | ||
| 1247 | + ], | ||
| 1248 | + "requestBody": {}, | ||
| 1249 | + "tags": [ | ||
| 1250 | + "article" | ||
| 1251 | + ] | ||
| 1252 | + } | ||
| 1253 | + }, | ||
| 1254 | + "v1/system/article/restore": { | ||
| 1255 | + "post": { | ||
| 1256 | + "summary": "管理后台文章恢复", | ||
| 1257 | + "operationId": "SystemArticleRestore", | ||
| 1258 | + "responses": { | ||
| 1259 | + "200": { | ||
| 1260 | + "description": "A successful response.", | ||
| 1261 | + "schema": { | ||
| 1262 | + "$ref": "#/definitions/SystemArticleRestoreResponse" | ||
| 1263 | + } | ||
| 1264 | + } | ||
| 1265 | + }, | ||
| 1266 | + "parameters": [ | ||
| 1267 | + { | ||
| 1268 | + "name": "body", | ||
| 1269 | + "in": "body", | ||
| 1270 | + "required": true, | ||
| 1271 | + "schema": { | ||
| 1272 | + "$ref": "#/definitions/SystemArticleRestoreRequest" | ||
| 1273 | + } | ||
| 1274 | + } | ||
| 1275 | + ], | ||
| 1276 | + "requestBody": {}, | ||
| 1277 | + "tags": [ | ||
| 1278 | + "article" | ||
| 1279 | + ] | ||
| 1280 | + } | ||
| 1281 | + }, | ||
| 1228 | "v1/system/article/search": { | 1282 | "v1/system/article/search": { |
| 1229 | "post": { | 1283 | "post": { |
| 1230 | "summary": "管理后台获取文章列表", | 1284 | "summary": "管理后台获取文章列表", |
| @@ -4891,6 +4945,125 @@ | @@ -4891,6 +4945,125 @@ | ||
| 4891 | "total" | 4945 | "total" |
| 4892 | ] | 4946 | ] |
| 4893 | }, | 4947 | }, |
| 4948 | + "SystemArticleGetHistoryRequest": { | ||
| 4949 | + "type": "object", | ||
| 4950 | + "properties": { | ||
| 4951 | + "id": { | ||
| 4952 | + "type": "integer", | ||
| 4953 | + "format": "int64", | ||
| 4954 | + "description": "id" | ||
| 4955 | + }, | ||
| 4956 | + "": { | ||
| 4957 | + "type": "integer", | ||
| 4958 | + "format": "int64" | ||
| 4959 | + } | ||
| 4960 | + }, | ||
| 4961 | + "title": "SystemArticleGetHistoryRequest", | ||
| 4962 | + "required": [ | ||
| 4963 | + "id" | ||
| 4964 | + ] | ||
| 4965 | + }, | ||
| 4966 | + "SystemArticleGetHistoryResponse": { | ||
| 4967 | + "type": "object", | ||
| 4968 | + "properties": { | ||
| 4969 | + "id": { | ||
| 4970 | + "type": "integer", | ||
| 4971 | + "format": "int64", | ||
| 4972 | + "description": " id" | ||
| 4973 | + }, | ||
| 4974 | + "articleId": { | ||
| 4975 | + "type": "integer", | ||
| 4976 | + "format": "int64", | ||
| 4977 | + "description": " 文章ID" | ||
| 4978 | + }, | ||
| 4979 | + "title": { | ||
| 4980 | + "type": "string", | ||
| 4981 | + "description": " 标题" | ||
| 4982 | + }, | ||
| 4983 | + "createdAt": { | ||
| 4984 | + "type": "integer", | ||
| 4985 | + "format": "int64", | ||
| 4986 | + "description": " 文章的发布时间" | ||
| 4987 | + }, | ||
| 4988 | + "section": { | ||
| 4989 | + "type": "array", | ||
| 4990 | + "items": { | ||
| 4991 | + "$ref": "#/definitions/ArticleSection" | ||
| 4992 | + }, | ||
| 4993 | + "description": " 文章的文本内容" | ||
| 4994 | + }, | ||
| 4995 | + "images": { | ||
| 4996 | + "type": "array", | ||
| 4997 | + "items": { | ||
| 4998 | + "type": "string" | ||
| 4999 | + }, | ||
| 5000 | + "description": " 图片" | ||
| 5001 | + }, | ||
| 5002 | + "whoRead": { | ||
| 5003 | + "type": "array", | ||
| 5004 | + "items": { | ||
| 5005 | + "type": "integer", | ||
| 5006 | + "format": "int64" | ||
| 5007 | + }, | ||
| 5008 | + "description": " 谁可查看" | ||
| 5009 | + }, | ||
| 5010 | + "whoReadInfo": { | ||
| 5011 | + "type": "array", | ||
| 5012 | + "items": { | ||
| 5013 | + "$ref": "#/definitions/UserShowName" | ||
| 5014 | + }, | ||
| 5015 | + "description": " 谁可查看" | ||
| 5016 | + }, | ||
| 5017 | + "whoReview": { | ||
| 5018 | + "type": "array", | ||
| 5019 | + "items": { | ||
| 5020 | + "type": "integer", | ||
| 5021 | + "format": "int64" | ||
| 5022 | + }, | ||
| 5023 | + "description": " 谁可评论" | ||
| 5024 | + }, | ||
| 5025 | + "whoReviewInfo": { | ||
| 5026 | + "type": "array", | ||
| 5027 | + "items": { | ||
| 5028 | + "$ref": "#/definitions/UserShowName" | ||
| 5029 | + }, | ||
| 5030 | + "description": " 谁可评论" | ||
| 5031 | + }, | ||
| 5032 | + "location": { | ||
| 5033 | + "$ref": "#/definitions/Location", | ||
| 5034 | + "description": " 定位坐标" | ||
| 5035 | + }, | ||
| 5036 | + "targetUser": { | ||
| 5037 | + "type": "integer", | ||
| 5038 | + "format": "int32", | ||
| 5039 | + "description": " 分发方式 [0分发给所有人、1分发给指定的人]" | ||
| 5040 | + }, | ||
| 5041 | + "tags": { | ||
| 5042 | + "type": "array", | ||
| 5043 | + "items": { | ||
| 5044 | + "type": "integer", | ||
| 5045 | + "format": "int64" | ||
| 5046 | + }, | ||
| 5047 | + "description": " 标签" | ||
| 5048 | + } | ||
| 5049 | + }, | ||
| 5050 | + "title": "SystemArticleGetHistoryResponse", | ||
| 5051 | + "required": [ | ||
| 5052 | + "id", | ||
| 5053 | + "articleId", | ||
| 5054 | + "title", | ||
| 5055 | + "createdAt", | ||
| 5056 | + "section", | ||
| 5057 | + "images", | ||
| 5058 | + "whoRead", | ||
| 5059 | + "whoReadInfo", | ||
| 5060 | + "whoReview", | ||
| 5061 | + "whoReviewInfo", | ||
| 5062 | + "location", | ||
| 5063 | + "targetUser", | ||
| 5064 | + "tags" | ||
| 5065 | + ] | ||
| 5066 | + }, | ||
| 4894 | "SystemArticleGetRequest": { | 5067 | "SystemArticleGetRequest": { |
| 4895 | "type": "object", | 5068 | "type": "object", |
| 4896 | "properties": { | 5069 | "properties": { |
| @@ -5002,6 +5175,13 @@ | @@ -5002,6 +5175,13 @@ | ||
| 5002 | "type": "integer", | 5175 | "type": "integer", |
| 5003 | "format": "int32", | 5176 | "format": "int32", |
| 5004 | "description": " 评论的展示状态(0显示、1不显示)" | 5177 | "description": " 评论的展示状态(0显示、1不显示)" |
| 5178 | + }, | ||
| 5179 | + "tags": { | ||
| 5180 | + "type": "array", | ||
| 5181 | + "items": { | ||
| 5182 | + "$ref": "#/definitions/ArticleTagItem" | ||
| 5183 | + }, | ||
| 5184 | + "description": "标签" | ||
| 5005 | } | 5185 | } |
| 5006 | }, | 5186 | }, |
| 5007 | "title": "SystemArticleGetResponse", | 5187 | "title": "SystemArticleGetResponse", |
| @@ -5021,7 +5201,8 @@ | @@ -5021,7 +5201,8 @@ | ||
| 5021 | "countLove", | 5201 | "countLove", |
| 5022 | "countComment", | 5202 | "countComment", |
| 5023 | "countRead", | 5203 | "countRead", |
| 5024 | - "show" | 5204 | + "show", |
| 5205 | + "tags" | ||
| 5025 | ] | 5206 | ] |
| 5026 | }, | 5207 | }, |
| 5027 | "SystemArticleHistory": { | 5208 | "SystemArticleHistory": { |
| @@ -5114,6 +5295,45 @@ | @@ -5114,6 +5295,45 @@ | ||
| 5114 | "list" | 5295 | "list" |
| 5115 | ] | 5296 | ] |
| 5116 | }, | 5297 | }, |
| 5298 | + "SystemArticleRestoreRequest": { | ||
| 5299 | + "type": "object", | ||
| 5300 | + "properties": { | ||
| 5301 | + "id": { | ||
| 5302 | + "type": "integer", | ||
| 5303 | + "format": "int64", | ||
| 5304 | + "description": "ID" | ||
| 5305 | + }, | ||
| 5306 | + "AccessToken": { | ||
| 5307 | + "type": "string", | ||
| 5308 | + "description": " 授权token" | ||
| 5309 | + } | ||
| 5310 | + }, | ||
| 5311 | + "title": "SystemArticleRestoreRequest", | ||
| 5312 | + "required": [ | ||
| 5313 | + "id", | ||
| 5314 | + "x-mmm-accesstoken" | ||
| 5315 | + ] | ||
| 5316 | + }, | ||
| 5317 | + "SystemArticleRestoreResponse": { | ||
| 5318 | + "type": "object", | ||
| 5319 | + "properties": { | ||
| 5320 | + "id": { | ||
| 5321 | + "type": "integer", | ||
| 5322 | + "format": "int64", | ||
| 5323 | + "description": "ID" | ||
| 5324 | + }, | ||
| 5325 | + "articleId": { | ||
| 5326 | + "type": "integer", | ||
| 5327 | + "format": "int64", | ||
| 5328 | + "description": "文章ID" | ||
| 5329 | + } | ||
| 5330 | + }, | ||
| 5331 | + "title": "SystemArticleRestoreResponse", | ||
| 5332 | + "required": [ | ||
| 5333 | + "id", | ||
| 5334 | + "articleId" | ||
| 5335 | + ] | ||
| 5336 | + }, | ||
| 5117 | "SystemArticleSearch": { | 5337 | "SystemArticleSearch": { |
| 5118 | "type": "object", | 5338 | "type": "object", |
| 5119 | "properties": { | 5339 | "properties": { |
| @@ -5263,6 +5483,14 @@ | @@ -5263,6 +5483,14 @@ | ||
| 5263 | "format": "int64", | 5483 | "format": "int64", |
| 5264 | "description": "结束时间" | 5484 | "description": "结束时间" |
| 5265 | }, | 5485 | }, |
| 5486 | + "tags": { | ||
| 5487 | + "type": "array", | ||
| 5488 | + "items": { | ||
| 5489 | + "type": "integer", | ||
| 5490 | + "format": "int64" | ||
| 5491 | + }, | ||
| 5492 | + "description": "标签" | ||
| 5493 | + }, | ||
| 5266 | "page": { | 5494 | "page": { |
| 5267 | "type": "integer", | 5495 | "type": "integer", |
| 5268 | "format": "int32", | 5496 | "format": "int32", |
| @@ -5358,6 +5586,14 @@ | @@ -5358,6 +5586,14 @@ | ||
| 5358 | "type": "integer", | 5586 | "type": "integer", |
| 5359 | "format": "int32", | 5587 | "format": "int32", |
| 5360 | "description": "分发方式 [0分发给所有人、1分发给指定的人]" | 5588 | "description": "分发方式 [0分发给所有人、1分发给指定的人]" |
| 5589 | + }, | ||
| 5590 | + "tags": { | ||
| 5591 | + "type": "array", | ||
| 5592 | + "items": { | ||
| 5593 | + "type": "integer", | ||
| 5594 | + "format": "int64" | ||
| 5595 | + }, | ||
| 5596 | + "description": " 标签" | ||
| 5361 | } | 5597 | } |
| 5362 | }, | 5598 | }, |
| 5363 | "title": "SystemArticleUpdateRequest", | 5599 | "title": "SystemArticleUpdateRequest", |
| @@ -5370,7 +5606,8 @@ | @@ -5370,7 +5606,8 @@ | ||
| 5370 | "whoRead", | 5606 | "whoRead", |
| 5371 | "whoReview", | 5607 | "whoReview", |
| 5372 | "location", | 5608 | "location", |
| 5373 | - "targetUser" | 5609 | + "targetUser", |
| 5610 | + "tags" | ||
| 5374 | ] | 5611 | ] |
| 5375 | }, | 5612 | }, |
| 5376 | "SystemArticleUpdateResponse": { | 5613 | "SystemArticleUpdateResponse": { |
| @@ -5419,7 +5656,8 @@ | @@ -5419,7 +5656,8 @@ | ||
| 5419 | "tags": { | 5656 | "tags": { |
| 5420 | "type": "array", | 5657 | "type": "array", |
| 5421 | "items": { | 5658 | "items": { |
| 5422 | - "type": "string" | 5659 | + "type": "integer", |
| 5660 | + "format": "int64" | ||
| 5423 | }, | 5661 | }, |
| 5424 | "description": "标签" | 5662 | "description": "标签" |
| 5425 | }, | 5663 | }, |
| @@ -111,4 +111,7 @@ service Core { | @@ -111,4 +111,7 @@ service Core { | ||
| 111 | @handler SystemArticleSearchMe | 111 | @handler SystemArticleSearchMe |
| 112 | post /article/search/me (SystemArticleSearchMeRequest) returns (SystemArticleSearchMeResponse) | 112 | post /article/search/me (SystemArticleSearchMeRequest) returns (SystemArticleSearchMeResponse) |
| 113 | 113 | ||
| 114 | + @doc "管理后台文章恢复" | ||
| 115 | + @handler SystemArticleRestore | ||
| 116 | + post /article/restore (SystemArticleRestoreRequest) returns (SystemArticleRestoreResponse) | ||
| 114 | } | 117 | } |
| @@ -398,8 +398,9 @@ type ( | @@ -398,8 +398,9 @@ type ( | ||
| 398 | WhoRead []int64 `json:"whoRead"` // 谁可以看 | 398 | WhoRead []int64 `json:"whoRead"` // 谁可以看 |
| 399 | WhoReview []int64 `json:"whoReview"` // 评论人 | 399 | WhoReview []int64 `json:"whoReview"` // 评论人 |
| 400 | Location Location `json:"location"` // 坐标 | 400 | Location Location `json:"location"` // 坐标 |
| 401 | - TargetUser int `json:"targetUser"` //分发方式 [0分发给所有人、1分发给指定的人] | 401 | + TargetUser int `json:"targetUser"` // 分发方式 [0分发给所有人、1分发给指定的人] |
| 402 | Tags []int64 `json:"tags"` // 标签 | 402 | Tags []int64 `json:"tags"` // 标签 |
| 403 | + AccessToken string `header:"x-mmm-accesstoken"` // 授权token | ||
| 403 | } | 404 | } |
| 404 | SystemArticleUpdateResponse { | 405 | SystemArticleUpdateResponse { |
| 405 | Id int64 `json:"id"` //id | 406 | Id int64 `json:"id"` //id |
| @@ -408,7 +409,7 @@ type ( | @@ -408,7 +409,7 @@ type ( | ||
| 408 | Images []string `json:"images"` //图片 | 409 | Images []string `json:"images"` //图片 |
| 409 | CreatedAt int64 `json:"createdAt"` //文章的创建日期 | 410 | CreatedAt int64 `json:"createdAt"` //文章的创建日期 |
| 410 | CountLove int `json:"countLove"` //点赞数量 | 411 | CountLove int `json:"countLove"` //点赞数量 |
| 411 | - CountComment int `json:"CountComment"` //评论数量 | 412 | + CountComment int `json:"countComment"` //评论数量 |
| 412 | Show int `json:"show"` //是否隐藏 [0显示、1不显示] | 413 | Show int `json:"show"` //是否隐藏 [0显示、1不显示] |
| 413 | Tags []int64 `json:"tags"` //标签 | 414 | Tags []int64 `json:"tags"` //标签 |
| 414 | TargetUser int `json:"targetUser"` //分发方式 [0分发给所有人、1分发给指定的人] | 415 | TargetUser int `json:"targetUser"` //分发方式 [0分发给所有人、1分发给指定的人] |
| @@ -440,8 +441,6 @@ type ( | @@ -440,8 +441,6 @@ type ( | ||
| 440 | Id int64 `json:"id"` // id | 441 | Id int64 `json:"id"` // id |
| 441 | ArticleId int64 `json:"articleId"` // 文章ID | 442 | ArticleId int64 `json:"articleId"` // 文章ID |
| 442 | Title string `json:"title"` // 标题 | 443 | Title string `json:"title"` // 标题 |
| 443 | - AuthorId int64 `json:"authorId"` // 发布人id | ||
| 444 | - Author ArticleAuthor `json:"author"` // 发布人 | ||
| 445 | CreatedAt int64 `json:"createdAt"` // 文章的发布时间 | 444 | CreatedAt int64 `json:"createdAt"` // 文章的发布时间 |
| 446 | Section []ArticleSection `json:"section"` // 文章的文本内容 | 445 | Section []ArticleSection `json:"section"` // 文章的文本内容 |
| 447 | Images []string `json:"images"` // 图片 | 446 | Images []string `json:"images"` // 图片 |
| @@ -450,11 +449,16 @@ type ( | @@ -450,11 +449,16 @@ type ( | ||
| 450 | WhoReview []int64 `json:"whoReview"` // 谁可评论 | 449 | WhoReview []int64 `json:"whoReview"` // 谁可评论 |
| 451 | WhoReviewInfo []UserShowName `json:"whoReviewInfo"` // 谁可评论 | 450 | WhoReviewInfo []UserShowName `json:"whoReviewInfo"` // 谁可评论 |
| 452 | Location Location `json:"location"` // 定位坐标 | 451 | Location Location `json:"location"` // 定位坐标 |
| 453 | - CountLove int `json:"countLove"` // 点赞数量 | ||
| 454 | - CountComment int `json:"countComment"` // 评论数量 | ||
| 455 | - CountRead int `json:"countRead"` // 浏览数量 | ||
| 456 | - Show int `json:"show"` // 评论的展示状态(0显示、1不显示) | ||
| 457 | - TargetUser int `json:"targetUser"` //分发方式 [0分发给所有人、1分发给指定的人] | 452 | + TargetUser int `json:"targetUser"` // 分发方式 [0分发给所有人、1分发给指定的人] |
| 453 | + Tags []int64 `json:"tags"` // 标签 | ||
| 454 | + } | ||
| 455 | + SystemArticleRestoreRequest { | ||
| 456 | + Id int64 `json:"id"` //ID | ||
| 457 | + AccessToken string `header:"x-mmm-accesstoken"` // 授权token | ||
| 458 | + } | ||
| 459 | + SystemArticleRestoreResponse { | ||
| 460 | + Id int64 `json:"id"` //ID | ||
| 461 | + ArticleId int64 `json:"articleId"` //文章ID | ||
| 458 | } | 462 | } |
| 459 | ) | 463 | ) |
| 460 | 464 |
| 1 | +package article | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/result" | ||
| 5 | + "net/http" | ||
| 6 | + | ||
| 7 | + "github.com/zeromicro/go-zero/rest/httpx" | ||
| 8 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/logic/article" | ||
| 9 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/svc" | ||
| 10 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/types" | ||
| 11 | +) | ||
| 12 | + | ||
| 13 | +func SystemArticleRestoreHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { | ||
| 14 | + return func(w http.ResponseWriter, r *http.Request) { | ||
| 15 | + var req types.SystemArticleRestoreRequest | ||
| 16 | + if err := httpx.Parse(r, &req); err != nil { | ||
| 17 | + result.ParamErrorResult(r, w, err) | ||
| 18 | + return | ||
| 19 | + } | ||
| 20 | + | ||
| 21 | + l := article.NewSystemArticleRestoreLogic(r.Context(), svcCtx) | ||
| 22 | + resp, err := l.SystemArticleRestore(&req) | ||
| 23 | + result.HttpResult(r, w, resp, err) | ||
| 24 | + } | ||
| 25 | +} |
| @@ -18,7 +18,7 @@ func SystemUpdateArticleHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { | @@ -18,7 +18,7 @@ func SystemUpdateArticleHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { | ||
| 18 | return | 18 | return |
| 19 | } | 19 | } |
| 20 | l := article.NewSystemUpdateArticleLogic(r.Context(), svcCtx) | 20 | l := article.NewSystemUpdateArticleLogic(r.Context(), svcCtx) |
| 21 | - resp, err := l.SystemUpdateArticle(&req, r.Header.Get("x-mmm-accesstoken")) | 21 | + resp, err := l.SystemUpdateArticle(&req) |
| 22 | result.HttpResult(r, w, resp, err) | 22 | result.HttpResult(r, w, resp, err) |
| 23 | } | 23 | } |
| 24 | } | 24 | } |
| @@ -406,6 +406,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { | @@ -406,6 +406,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { | ||
| 406 | Path: "/article/search/me", | 406 | Path: "/article/search/me", |
| 407 | Handler: article.SystemArticleSearchMeHandler(serverCtx), | 407 | Handler: article.SystemArticleSearchMeHandler(serverCtx), |
| 408 | }, | 408 | }, |
| 409 | + { | ||
| 410 | + Method: http.MethodPost, | ||
| 411 | + Path: "/article/restore", | ||
| 412 | + Handler: article.SystemArticleRestoreHandler(serverCtx), | ||
| 413 | + }, | ||
| 409 | }, | 414 | }, |
| 410 | rest.WithJwt(serverCtx.Config.SystemAuth.AccessSecret), | 415 | rest.WithJwt(serverCtx.Config.SystemAuth.AccessSecret), |
| 411 | rest.WithPrefix("/v1/system"), | 416 | rest.WithPrefix("/v1/system"), |
| @@ -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" |
| @@ -80,6 +81,14 @@ func (l *MiniArticleSetTagLogic) MiniArticleSetTag(req *types.MiniArticleSetTagR | @@ -80,6 +81,14 @@ func (l *MiniArticleSetTagLogic) MiniArticleSetTag(req *types.MiniArticleSetTagR | ||
| 80 | if err != nil { | 81 | if err != nil { |
| 81 | return err | 82 | return err |
| 82 | } | 83 | } |
| 84 | + | ||
| 85 | + // 定性消息通知 | ||
| 86 | + messageLogic := message.NewMiniSystemLogic(ctx, l.svcCtx) | ||
| 87 | + err = messageLogic.ArticleDefined(c, articleInfo.CompanyId, articleInfo.AuthorId, articleInfo.Title) | ||
| 88 | + if err != nil { | ||
| 89 | + return err | ||
| 90 | + } | ||
| 91 | + | ||
| 83 | return nil | 92 | return nil |
| 84 | }, true) | 93 | }, true) |
| 85 | 94 |
| @@ -2,6 +2,9 @@ package article | @@ -2,6 +2,9 @@ package article | ||
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "context" | 4 | "context" |
| 5 | + "github.com/samber/lo" | ||
| 6 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/domain" | ||
| 7 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/xerr" | ||
| 5 | 8 | ||
| 6 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/svc" | 9 | "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" | 10 | "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/types" |
| @@ -24,7 +27,67 @@ func NewSystemArticleGetHistoryLogic(ctx context.Context, svcCtx *svc.ServiceCon | @@ -24,7 +27,67 @@ func NewSystemArticleGetHistoryLogic(ctx context.Context, svcCtx *svc.ServiceCon | ||
| 24 | } | 27 | } |
| 25 | 28 | ||
| 26 | func (l *SystemArticleGetHistoryLogic) SystemArticleGetHistory(req *types.SystemArticleGetHistoryRequest) (resp *types.SystemArticleGetHistoryResponse, err error) { | 29 | func (l *SystemArticleGetHistoryLogic) SystemArticleGetHistory(req *types.SystemArticleGetHistoryRequest) (resp *types.SystemArticleGetHistoryResponse, err error) { |
| 27 | - //var conn = l.svcCtx.DefaultDBConn() | ||
| 28 | - | 30 | + var conn = l.svcCtx.DefaultDBConn() |
| 31 | + backup, err := l.svcCtx.ArticleBackupRepository.FindOne(l.ctx, conn, req.Id) | ||
| 32 | + if err != nil { | ||
| 33 | + return nil, xerr.NewErrMsgErr("获取编辑历史记录失败", err) | ||
| 34 | + } | ||
| 35 | + resp = &types.SystemArticleGetHistoryResponse{ | ||
| 36 | + Id: backup.Id, | ||
| 37 | + ArticleId: backup.ArticleId, | ||
| 38 | + Title: backup.Title, | ||
| 39 | + CreatedAt: backup.CreatedAt, | ||
| 40 | + Section: make([]types.ArticleSection, 0), | ||
| 41 | + Images: make([]string, 0), | ||
| 42 | + WhoRead: backup.WhoRead, | ||
| 43 | + WhoReadInfo: make([]types.UserShowName, 0), | ||
| 44 | + WhoReview: backup.WhoReview, | ||
| 45 | + WhoReviewInfo: make([]types.UserShowName, 0), | ||
| 46 | + Location: types.Location{ | ||
| 47 | + Longitude: backup.Location.Longitude, | ||
| 48 | + Latitude: backup.Location.Latitude, | ||
| 49 | + Descript: backup.Location.Descript, | ||
| 50 | + }, | ||
| 51 | + TargetUser: int(backup.TargetUser), | ||
| 52 | + Tags: backup.Tags, | ||
| 53 | + } | ||
| 54 | + //文章段落内容 | ||
| 55 | + lo.ForEach(backup.Section, func(item domain.ArticleSection, index int) { | ||
| 56 | + resp.Section = append(resp.Section, types.ArticleSection{ | ||
| 57 | + Id: item.Id, | ||
| 58 | + Content: item.Content, | ||
| 59 | + SortBy: item.SortBy, | ||
| 60 | + TotalComment: item.TotalComment, | ||
| 61 | + }) | ||
| 62 | + }) | ||
| 63 | + //图片 | ||
| 64 | + lo.ForEach(backup.Images, func(item domain.Image, index int) { | ||
| 65 | + resp.Images = append(resp.Images, item.Url) | ||
| 66 | + }) | ||
| 67 | + //用户 | ||
| 68 | + userIds := lo.Union(resp.WhoRead, resp.WhoReview) | ||
| 69 | + if len(userIds) > 0 { | ||
| 70 | + _, users, err := l.svcCtx.UserRepository.Find(l.ctx, conn, domain.NewQueryOptions().WithKV("ids", userIds)) | ||
| 71 | + if err != nil { | ||
| 72 | + return nil, xerr.NewErrMsgErr("获取帖子异常", err) | ||
| 73 | + } | ||
| 74 | + userSlices := make(map[int64]types.UserShowName) | ||
| 75 | + lo.ForEach(users, func(user *domain.User, index int) { | ||
| 76 | + userSlices[user.Id] = types.UserShowName{ | ||
| 77 | + Id: int(user.Id), | ||
| 78 | + Name: user.Name, | ||
| 79 | + } | ||
| 80 | + }) | ||
| 81 | + lo.ForEach(resp.WhoRead, func(userId int64, index int) { | ||
| 82 | + if value, ok := userSlices[userId]; ok { | ||
| 83 | + resp.WhoReadInfo = append(resp.WhoReadInfo, value) | ||
| 84 | + } | ||
| 85 | + }) | ||
| 86 | + lo.ForEach(resp.WhoReview, func(userId int64, index int) { | ||
| 87 | + if value, ok := userSlices[userId]; ok { | ||
| 88 | + resp.WhoReviewInfo = append(resp.WhoReviewInfo, value) | ||
| 89 | + } | ||
| 90 | + }) | ||
| 91 | + } | ||
| 29 | return | 92 | return |
| 30 | } | 93 | } |
| 1 | +package article | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "context" | ||
| 5 | + "github.com/samber/lo" | ||
| 6 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/db/transaction" | ||
| 7 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/domain" | ||
| 8 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/interanl/pkg/gateway/authlib" | ||
| 9 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/contextdata" | ||
| 10 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/pkg/xerr" | ||
| 11 | + | ||
| 12 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/svc" | ||
| 13 | + "gitlab.fjmaimaimai.com/allied-creation/sumifcc-discuss/cmd/discuss/api/internal/types" | ||
| 14 | + | ||
| 15 | + "github.com/zeromicro/go-zero/core/logx" | ||
| 16 | +) | ||
| 17 | + | ||
| 18 | +type SystemArticleRestoreLogic struct { | ||
| 19 | + logx.Logger | ||
| 20 | + ctx context.Context | ||
| 21 | + svcCtx *svc.ServiceContext | ||
| 22 | +} | ||
| 23 | + | ||
| 24 | +func NewSystemArticleRestoreLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SystemArticleRestoreLogic { | ||
| 25 | + return &SystemArticleRestoreLogic{ | ||
| 26 | + Logger: logx.WithContext(ctx), | ||
| 27 | + ctx: ctx, | ||
| 28 | + svcCtx: svcCtx, | ||
| 29 | + } | ||
| 30 | +} | ||
| 31 | + | ||
| 32 | +func (l *SystemArticleRestoreLogic) SystemArticleRestore(req *types.SystemArticleRestoreRequest) (resp *types.SystemArticleRestoreResponse, err error) { | ||
| 33 | + var conn = l.svcCtx.DefaultDBConn() | ||
| 34 | + backup, err := l.svcCtx.ArticleBackupRepository.FindOne(l.ctx, conn, req.Id) | ||
| 35 | + if err != nil { | ||
| 36 | + return nil, xerr.NewErrMsgErr("获取编辑历史记录失败", err) | ||
| 37 | + } | ||
| 38 | + article, err := l.svcCtx.ArticleRepository.FindOne(l.ctx, conn, backup.ArticleId) | ||
| 39 | + if err != nil { | ||
| 40 | + return nil, xerr.NewErrMsgErr("获取文章失败", err) | ||
| 41 | + } | ||
| 42 | + article.Version = article.Version + 1 | ||
| 43 | + article.Images = backup.Images | ||
| 44 | + article.Title = backup.Title | ||
| 45 | + articleSections := make([]domain.ArticleSection, 0) | ||
| 46 | + lo.ForEach(backup.Section, func(item domain.ArticleSection, index int) { | ||
| 47 | + articleSections = append(articleSections, domain.ArticleSection{ | ||
| 48 | + Id: item.Id, | ||
| 49 | + CompanyId: item.CompanyId, | ||
| 50 | + Version: article.Version, | ||
| 51 | + ArticleId: article.Id, | ||
| 52 | + Content: item.Content, | ||
| 53 | + SortBy: item.SortBy, | ||
| 54 | + }) | ||
| 55 | + }) | ||
| 56 | + //获取当前用户信息 | ||
| 57 | + userToken := contextdata.GetUserTokenFromCtx(l.ctx) | ||
| 58 | + userMe, err := l.svcCtx.ApiAuthService.MeInfo(l.ctx, authlib.RequestUserMeQuery{Token: req.AccessToken}) | ||
| 59 | + if err != nil { | ||
| 60 | + return nil, xerr.NewErrMsgErr("获取当前用户信息失败", err) | ||
| 61 | + } | ||
| 62 | + err = transaction.UseTrans(l.ctx, conn.DB(), func(ctx context.Context, c transaction.Conn) error { | ||
| 63 | + //保存文章 | ||
| 64 | + _, err = l.svcCtx.ArticleRepository.Update(ctx, c, article) | ||
| 65 | + if err != nil { | ||
| 66 | + return xerr.NewErrMsgErr("恢复文章版本失败", err) | ||
| 67 | + } | ||
| 68 | + //保存段落 | ||
| 69 | + updateSectionIds := []int64{} | ||
| 70 | + for _, item := range articleSections { | ||
| 71 | + section, err := l.svcCtx.ArticleSectionRepository.FindOne(ctx, c, item.Id) | ||
| 72 | + if err == nil && section.Id > 0 { | ||
| 73 | + section.Content = item.Content | ||
| 74 | + section.SortBy = item.SortBy | ||
| 75 | + section.Version = item.Version | ||
| 76 | + _, err = l.svcCtx.ArticleSectionRepository.Update(ctx, c, section) | ||
| 77 | + if err != nil { | ||
| 78 | + return xerr.NewErrMsgErr("恢复文章版本失败", err) | ||
| 79 | + } | ||
| 80 | + } else { | ||
| 81 | + _, err = l.svcCtx.ArticleSectionRepository.Insert(ctx, c, &item) | ||
| 82 | + if err != nil { | ||
| 83 | + return xerr.NewErrMsgErr("恢复文章版本失败", err) | ||
| 84 | + } | ||
| 85 | + } | ||
| 86 | + updateSectionIds = append(updateSectionIds, item.Id) | ||
| 87 | + } | ||
| 88 | + if len(updateSectionIds) > 0 { | ||
| 89 | + err = l.svcCtx.ArticleSectionRepository.DeleteBy(ctx, c, domain.NewQueryOptions().WithKV("articleId", article.Id).WithKV("notIds", updateSectionIds)) | ||
| 90 | + if err != nil { | ||
| 91 | + return xerr.NewErrMsgErr("保存文章内容失败", err) | ||
| 92 | + } | ||
| 93 | + } | ||
| 94 | + //备份数据 | ||
| 95 | + newBackUp := article.MakeBackup(domain.UserSimple{ | ||
| 96 | + Id: userToken.UserId, | ||
| 97 | + Name: userMe.User.NickName, | ||
| 98 | + Avatar: userMe.User.Avatar, | ||
| 99 | + CompanyId: userToken.CompanyId, | ||
| 100 | + Company: userMe.CurrentCompany.Name, | ||
| 101 | + }, articleSections) | ||
| 102 | + newBackUp.Action = "恢复" | ||
| 103 | + _, err = l.svcCtx.ArticleBackupRepository.Insert(ctx, c, newBackUp) | ||
| 104 | + if err != nil { | ||
| 105 | + return xerr.NewErrMsgErr("恢复文章版本失败", err) | ||
| 106 | + } | ||
| 107 | + return nil | ||
| 108 | + }, true) | ||
| 109 | + resp = &types.SystemArticleRestoreResponse{ | ||
| 110 | + Id: req.Id, | ||
| 111 | + ArticleId: article.Id, | ||
| 112 | + } | ||
| 113 | + return | ||
| 114 | +} |
| @@ -29,7 +29,7 @@ func NewSystemUpdateArticleLogic(ctx context.Context, svcCtx *svc.ServiceContext | @@ -29,7 +29,7 @@ func NewSystemUpdateArticleLogic(ctx context.Context, svcCtx *svc.ServiceContext | ||
| 29 | } | 29 | } |
| 30 | } | 30 | } |
| 31 | 31 | ||
| 32 | -func (l *SystemUpdateArticleLogic) SystemUpdateArticle(req *types.SystemArticleUpdateRequest, accessToken string) (resp *types.SystemArticleUpdateResponse, err error) { | 32 | +func (l *SystemUpdateArticleLogic) SystemUpdateArticle(req *types.SystemArticleUpdateRequest) (resp *types.SystemArticleUpdateResponse, err error) { |
| 33 | var conn = l.svcCtx.DefaultDBConn() | 33 | var conn = l.svcCtx.DefaultDBConn() |
| 34 | userToken := contextdata.GetUserTokenFromCtx(l.ctx) | 34 | userToken := contextdata.GetUserTokenFromCtx(l.ctx) |
| 35 | article, err := l.svcCtx.ArticleRepository.FindOne(l.ctx, conn, req.Id) | 35 | article, err := l.svcCtx.ArticleRepository.FindOne(l.ctx, conn, req.Id) |
| @@ -84,7 +84,7 @@ func (l *SystemUpdateArticleLogic) SystemUpdateArticle(req *types.SystemArticleU | @@ -84,7 +84,7 @@ func (l *SystemUpdateArticleLogic) SystemUpdateArticle(req *types.SystemArticleU | ||
| 84 | article.Summary = req.Section[0].Content[0:stringIndex] | 84 | article.Summary = req.Section[0].Content[0:stringIndex] |
| 85 | } | 85 | } |
| 86 | //获取当前用户信息 | 86 | //获取当前用户信息 |
| 87 | - userMe, err := l.svcCtx.ApiAuthService.MeInfo(l.ctx, authlib.RequestUserMeQuery{Token: accessToken}) | 87 | + userMe, err := l.svcCtx.ApiAuthService.MeInfo(l.ctx, authlib.RequestUserMeQuery{Token: req.AccessToken}) |
| 88 | if err != nil { | 88 | if err != nil { |
| 89 | return nil, xerr.NewErrMsgErr("获取当前用户信息失败", err) | 89 | return nil, xerr.NewErrMsgErr("获取当前用户信息失败", err) |
| 90 | } | 90 | } |
| @@ -929,8 +929,9 @@ type SystemArticleUpdateRequest struct { | @@ -929,8 +929,9 @@ type SystemArticleUpdateRequest struct { | ||
| 929 | WhoRead []int64 `json:"whoRead"` // 谁可以看 | 929 | WhoRead []int64 `json:"whoRead"` // 谁可以看 |
| 930 | WhoReview []int64 `json:"whoReview"` // 评论人 | 930 | WhoReview []int64 `json:"whoReview"` // 评论人 |
| 931 | Location Location `json:"location"` // 坐标 | 931 | Location Location `json:"location"` // 坐标 |
| 932 | - TargetUser int `json:"targetUser"` //分发方式 [0分发给所有人、1分发给指定的人] | 932 | + TargetUser int `json:"targetUser"` // 分发方式 [0分发给所有人、1分发给指定的人] |
| 933 | Tags []int64 `json:"tags"` // 标签 | 933 | Tags []int64 `json:"tags"` // 标签 |
| 934 | + AccessToken string `header:"x-mmm-accesstoken"` // 授权token | ||
| 934 | } | 935 | } |
| 935 | 936 | ||
| 936 | type SystemArticleUpdateResponse struct { | 937 | type SystemArticleUpdateResponse struct { |
| @@ -940,7 +941,7 @@ type SystemArticleUpdateResponse struct { | @@ -940,7 +941,7 @@ type SystemArticleUpdateResponse struct { | ||
| 940 | Images []string `json:"images"` //图片 | 941 | Images []string `json:"images"` //图片 |
| 941 | CreatedAt int64 `json:"createdAt"` //文章的创建日期 | 942 | CreatedAt int64 `json:"createdAt"` //文章的创建日期 |
| 942 | CountLove int `json:"countLove"` //点赞数量 | 943 | CountLove int `json:"countLove"` //点赞数量 |
| 943 | - CountComment int `json:"CountComment"` //评论数量 | 944 | + CountComment int `json:"countComment"` //评论数量 |
| 944 | Show int `json:"show"` //是否隐藏 [0显示、1不显示] | 945 | Show int `json:"show"` //是否隐藏 [0显示、1不显示] |
| 945 | Tags []int64 `json:"tags"` //标签 | 946 | Tags []int64 `json:"tags"` //标签 |
| 946 | TargetUser int `json:"targetUser"` //分发方式 [0分发给所有人、1分发给指定的人] | 947 | TargetUser int `json:"targetUser"` //分发方式 [0分发给所有人、1分发给指定的人] |
| @@ -976,8 +977,6 @@ type SystemArticleGetHistoryResponse struct { | @@ -976,8 +977,6 @@ type SystemArticleGetHistoryResponse struct { | ||
| 976 | Id int64 `json:"id"` // id | 977 | Id int64 `json:"id"` // id |
| 977 | ArticleId int64 `json:"articleId"` // 文章ID | 978 | ArticleId int64 `json:"articleId"` // 文章ID |
| 978 | Title string `json:"title"` // 标题 | 979 | Title string `json:"title"` // 标题 |
| 979 | - AuthorId int64 `json:"authorId"` // 发布人id | ||
| 980 | - Author ArticleAuthor `json:"author"` // 发布人 | ||
| 981 | CreatedAt int64 `json:"createdAt"` // 文章的发布时间 | 980 | CreatedAt int64 `json:"createdAt"` // 文章的发布时间 |
| 982 | Section []ArticleSection `json:"section"` // 文章的文本内容 | 981 | Section []ArticleSection `json:"section"` // 文章的文本内容 |
| 983 | Images []string `json:"images"` // 图片 | 982 | Images []string `json:"images"` // 图片 |
| @@ -986,11 +985,18 @@ type SystemArticleGetHistoryResponse struct { | @@ -986,11 +985,18 @@ type SystemArticleGetHistoryResponse struct { | ||
| 986 | WhoReview []int64 `json:"whoReview"` // 谁可评论 | 985 | WhoReview []int64 `json:"whoReview"` // 谁可评论 |
| 987 | WhoReviewInfo []UserShowName `json:"whoReviewInfo"` // 谁可评论 | 986 | WhoReviewInfo []UserShowName `json:"whoReviewInfo"` // 谁可评论 |
| 988 | Location Location `json:"location"` // 定位坐标 | 987 | Location Location `json:"location"` // 定位坐标 |
| 989 | - CountLove int `json:"countLove"` // 点赞数量 | ||
| 990 | - CountComment int `json:"countComment"` // 评论数量 | ||
| 991 | - CountRead int `json:"countRead"` // 浏览数量 | ||
| 992 | - Show int `json:"show"` // 评论的展示状态(0显示、1不显示) | ||
| 993 | - TargetUser int `json:"targetUser"` //分发方式 [0分发给所有人、1分发给指定的人] | 988 | + TargetUser int `json:"targetUser"` // 分发方式 [0分发给所有人、1分发给指定的人] |
| 989 | + Tags []int64 `json:"tags"` // 标签 | ||
| 990 | +} | ||
| 991 | + | ||
| 992 | +type SystemArticleRestoreRequest struct { | ||
| 993 | + Id int64 `json:"id"` //ID | ||
| 994 | + AccessToken string `header:"x-mmm-accesstoken"` // 授权token | ||
| 995 | +} | ||
| 996 | + | ||
| 997 | +type SystemArticleRestoreResponse struct { | ||
| 998 | + Id int64 `json:"id"` //ID | ||
| 999 | + ArticleId int64 `json:"articleId"` //文章ID | ||
| 994 | } | 1000 | } |
| 995 | 1001 | ||
| 996 | type MiniHomePageRequest struct { | 1002 | type MiniHomePageRequest struct { |
-
请 注册 或 登录 后发表评论