chuanyue-service/system/src/service/feedback_service.rs
2024-09-23 15:53:04 +08:00

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())
}