chuanyue-service/service/src/feedback.rs
2024-06-21 10:00:07 +08:00

50 lines
1.6 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(page: i64, page_size: i64) -> ResResult<ResData<Pageable<Feedback>>> {
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())
}