Skip to content

Commit ab4029b

Browse files
authored
Merge pull request #224 from Enraged-Dun-Cookie-Development-Team/fix-后台公告列表格式错误
🐛 修复后台公告列表格式错误
2 parents 79d8e2b + 2c0b567 commit ab4029b

File tree

4 files changed

+56
-14
lines changed

4 files changed

+56
-14
lines changed

logic/ceobe_operation_logic/src/impletements/announcement.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,21 @@ use persistence::{
22
ceobe_operate::{announcement, ToCeobe, ToCeobeOperation},
33
mysql::SqlDatabaseOperate,
44
};
5+
use serde::Serialize;
56
use tencent_cloud_server::{
67
cdn::purge_urls_cache::PurgeCachePath, cloud_manager::TencentCloudManager,
78
};
89

910
use super::CeobeOperateLogic;
10-
use crate::{
11-
error::LogicResult,
12-
view::{AnnouncementResp, OperationTcCdnPath},
13-
};
11+
use crate::{error::LogicResult, view::OperationTcCdnPath};
1412

1513
impl CeobeOperateLogic {
1614
/// 获取公告列表
17-
pub async fn get_announcement_list(
15+
pub async fn get_announcement_list<
16+
T: Serialize + From<announcement::Model>,
17+
>(
1818
sql: SqlDatabaseOperate,
19-
) -> LogicResult<Vec<AnnouncementResp>> {
19+
) -> LogicResult<Vec<T>> {
2020
Ok(sql
2121
.ceobe()
2222
.operation()

logic/ceobe_operation_logic/src/view.rs

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,14 +71,14 @@ impl TryInto<ToolLinkResp> for FrontendToolLink {
7171
}
7272

7373
#[derive(Debug, Clone, Serialize, Deserialize, TypedBuilder)]
74-
pub struct AnnouncementResp {
74+
pub struct AnnouncementFrontResp {
7575
pub start_time: String,
7676
pub over_time: String,
7777
pub html: String,
7878
pub notice: bool,
7979
}
8080

81-
impl From<announcement::Model> for AnnouncementResp {
81+
impl From<announcement::Model> for AnnouncementFrontResp {
8282
fn from(
8383
announcement::Model {
8484
start_time,
@@ -104,6 +104,40 @@ impl From<announcement::Model> for AnnouncementResp {
104104
}
105105
}
106106

107+
#[derive(Debug, Clone, Serialize, Deserialize, TypedBuilder)]
108+
pub struct AnnouncementBackResp {
109+
pub start_time: String,
110+
pub over_time: String,
111+
pub content: String,
112+
pub img_url: String,
113+
pub notice: bool,
114+
}
115+
116+
impl From<announcement::Model> for AnnouncementBackResp {
117+
fn from(
118+
announcement::Model {
119+
start_time,
120+
over_time,
121+
content,
122+
img_url,
123+
notice,
124+
..
125+
}: announcement::Model,
126+
) -> Self {
127+
let image = Url::parse(&img_url)
128+
.map(|url| url.to_string())
129+
.unwrap_or_else(|_| format!(r#"/assets/image/{img_url}.png"#));
130+
131+
Self {
132+
start_time: naive_date_time_format(start_time),
133+
over_time: naive_date_time_format(over_time),
134+
content,
135+
img_url: image,
136+
notice,
137+
}
138+
}
139+
}
140+
107141
#[derive(Debug, Clone, Serialize)]
108142
pub struct Resource {
109143
#[serde(rename = "resources")]

src/serves/backend/ceobe_operation/announcement/controllers.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use axum_resp_result::resp_try;
22
use ceobe_operation_logic::{
3-
impletements::CeobeOperateLogic, view::AnnouncementResp,
3+
impletements::CeobeOperateLogic, view::AnnouncementBackResp,
44
};
55
use checker::{
66
prefabs::collect_checkers::iter_checkers::IntoIterChecker, CheckExtract,
@@ -29,9 +29,14 @@ impl CeobeOperationAnnouncement {
2929
#[instrument(ret, skip(db))]
3030
pub async fn get_announcement_list(
3131
db: SqlDatabaseOperate,
32-
) -> AnnouncementRespResult<Vec<AnnouncementResp>> {
32+
) -> AnnouncementRespResult<Vec<AnnouncementBackResp>> {
3333
resp_try(async {
34-
Ok(CeobeOperateLogic::get_announcement_list(db).await?)
34+
Ok(
35+
CeobeOperateLogic::get_announcement_list::<
36+
AnnouncementBackResp,
37+
>(db)
38+
.await?,
39+
)
3540
})
3641
.await
3742
}

src/serves/cdn/ceobe/operation/announcement/controllers.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use axum_resp_result::resp_try;
22
use ceobe_operation_logic::{
3-
impletements::CeobeOperateLogic, view::AnnouncementResp,
3+
impletements::CeobeOperateLogic, view::AnnouncementFrontResp,
44
};
55
use persistence::mysql::SqlDatabaseOperate;
66
use tracing::instrument;
@@ -13,9 +13,12 @@ impl CdnOperationAnnouncementFrontend {
1313
#[instrument(ret, skip(db))]
1414
pub async fn get_announcement_list(
1515
db: SqlDatabaseOperate,
16-
) -> AnnouncementRespResult<Vec<AnnouncementResp>> {
16+
) -> AnnouncementRespResult<Vec<AnnouncementFrontResp>> {
1717
resp_try(async {
18-
Ok(CeobeOperateLogic::get_announcement_list(db).await?)
18+
Ok(CeobeOperateLogic::get_announcement_list::<
19+
AnnouncementFrontResp,
20+
>(db)
21+
.await?)
1922
})
2023
.await
2124
}

0 commit comments

Comments
 (0)