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>> { let feedback_list = Feedback::search_feedback(page, page_size, db!()).await.ok(); if feedback_list.is_none() { tracing::error!("反馈信息为空"); return Ok(ResData::some(Pageable::::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> { 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()) }