58 lines
1.8 KiB
Rust
58 lines
1.8 KiB
Rust
use domain::dto::feedback::FeedbackAdd;
|
|
use domain::entities::feedback::Feedback;
|
|
use library::context::Context;
|
|
use library::db;
|
|
use library::res::pageable::Pageable;
|
|
use library::res::response::{ResData, ResResult};
|
|
|
|
/// 获取反馈信息列表
|
|
pub async fn get_feedback_list_by_page(
|
|
context: Context,
|
|
page: i64,
|
|
page_size: i64
|
|
) -> ResResult<ResData<Pageable<Feedback>>> {
|
|
if !context.account.role.is_admin() {
|
|
tracing::error!("非管理员用户,无法获取反馈信息列表");
|
|
return Ok(ResData::some(Pageable::<Feedback>::empty()));
|
|
}
|
|
let feedback_list = Feedback::search_feedback(page, page_size, db!()).await.ok();
|
|
if feedback_list.is_none() {
|
|
tracing::error!("反馈信息为空");
|
|
return Ok(ResData::some(Pageable::<Feedback>::empty()));
|
|
}
|
|
let total = get_feedback_count().await;
|
|
Ok(ResData::some(Pageable::new(feedback_list.unwrap(), total)))
|
|
}
|
|
|
|
/// 获取反馈信息总数
|
|
async fn get_feedback_count() -> i64 {
|
|
let count = Feedback::count_feedback(db!()).await.ok();
|
|
if count.is_none() {
|
|
tracing::error!("反馈信息为空");
|
|
return 0;
|
|
}
|
|
count.unwrap().count.unwrap()
|
|
}
|
|
|
|
/// 添加反馈信息
|
|
pub async fn add_feedback(
|
|
context: Context,
|
|
req: FeedbackAdd
|
|
) -> ResResult<ResData<()>> {
|
|
let account = context.account;
|
|
match Feedback::add_feedback(&mut Feedback{
|
|
user_id: account.id.clone(),
|
|
content: req.content.unwrap(),
|
|
..Default::default()
|
|
}, db!()).await {
|
|
Ok(feedback) => {
|
|
tracing::info!("添加反馈成功: {:?}", feedback)
|
|
}
|
|
Err(err) => {
|
|
tracing::error!(error = ?err, "添加反馈信息失败");
|
|
return Err(library::res::response::ResErr::ErrSystem(None));
|
|
}
|
|
}
|
|
|
|
Ok(ResData::none())
|
|
} |