diff --git a/domain/src/pageable.rs b/domain/src/pageable.rs index f5ae8cb..e6fbee8 100644 --- a/domain/src/pageable.rs +++ b/domain/src/pageable.rs @@ -1,9 +1,10 @@ -use derive::Responsable; use serde::Serialize; use std::fmt::Debug; -#[derive(Debug, Serialize, Responsable)] -pub struct Pageable +#[derive(Debug, Serialize)] +pub struct Pageable +where + T: Debug + Serialize, { pub data: Vec, pub total: i64, diff --git a/domain/src/vo/feedback.rs b/domain/src/vo/feedback.rs index e69de29..9a77a26 100644 --- a/domain/src/vo/feedback.rs +++ b/domain/src/vo/feedback.rs @@ -0,0 +1,33 @@ +use derive::Responsable; +use serde::Serialize; + +use crate::entities::feedback::Feedback; + +#[derive(Debug, Serialize, Responsable)] +pub struct FeedbackPageable { + pub data: Vec, + pub total: i64, + pub page: i64, + #[serde(rename = "pageSize")] + pub page_size: i64, +} + +impl FeedbackPageable { + pub fn new(data: Vec, total: i64, page: i64, page_size: i64) -> Self { + FeedbackPageable { + data, + total, + page, + page_size, + } + } + + pub fn empty(page: i64, page_size: i64) -> Self { + FeedbackPageable { + data: vec![], + total: 0, + page, + page_size, + } + } +} \ No newline at end of file diff --git a/domain/src/vo/mod.rs b/domain/src/vo/mod.rs index 3ce1632..7864cd1 100644 --- a/domain/src/vo/mod.rs +++ b/domain/src/vo/mod.rs @@ -1 +1,2 @@ -pub mod account; \ No newline at end of file +pub mod account; +pub mod feedback; \ No newline at end of file diff --git a/library/src/middleware/req_ctx.rs b/library/src/middleware/req_ctx.rs index dc56acb..ee6392c 100644 --- a/library/src/middleware/req_ctx.rs +++ b/library/src/middleware/req_ctx.rs @@ -6,6 +6,7 @@ use crate::{cache::account_cache::LOGIN_CACHE, config, context::{Context, WhiteC const WHITE_LIST: &[(&str, &str)] = &[ ("POST", "/account/sys"), + ("POST", "/account/google") ]; /// 认证中间件,包括网络请求白名单、token验证、登录缓存 diff --git a/system/src/controller/account_controller.rs b/system/src/controller/account_controller.rs index 06d8a82..dbdf9b2 100644 --- a/system/src/controller/account_controller.rs +++ b/system/src/controller/account_controller.rs @@ -1,6 +1,6 @@ use axum::{Extension, Json}; use domain::{dto::account::{AuthenticateGooleAccountReq, AuthenticateWithPassword, RefreshToken}, vo::account::{LoginAccount, RefreshTokenResult}}; -use library::{context::{Context, WhiteContext}, model::{response::{ ResData, ResResult}, validator}}; +use library::{context::{Context, WhiteContext}, model::{response::ResResult, validator}}; use crate::service; diff --git a/system/src/controller/feedback_controller.rs b/system/src/controller/feedback_controller.rs index a0a3cef..17f272f 100644 --- a/system/src/controller/feedback_controller.rs +++ b/system/src/controller/feedback_controller.rs @@ -2,10 +2,9 @@ use axum::extract::Query; use axum::{Extension, Json}; use domain::dto::feedback::FeedbackAdd; use domain::dto::pageable::PageParams; -use domain::entities::feedback::Feedback; +use domain::vo::feedback::FeedbackPageable; use library::context::Context; -use library::model::pageable::Pageable; -use library::model::response::{ResData, ResResult}; +use library::model::response::ResResult; use library::model::validator; use crate::service; @@ -23,7 +22,7 @@ pub async fn add_feedback( pub async fn get_feedback_list_by_page( Extension(context): Extension, Query(page_params): Query, -) -> ResResult> { +) -> ResResult { validator::validate_params(&page_params, context.get_lang_tag())?; service::feedback_service::get_feedback_list_by_page( context, diff --git a/system/src/service/account_service.rs b/system/src/service/account_service.rs index d2ac8ef..2d8c6c6 100644 --- a/system/src/service/account_service.rs +++ b/system/src/service/account_service.rs @@ -9,7 +9,7 @@ use i18n::message_ids::{ACCOUNT_DISABLED, INVALID_TOKEN}; use library::cache::account_cache::{CacheAccount, LOGIN_CACHE}; use library::context::{Context, WhiteContext}; use library::model::response::ResErr::ErrPerm; -use library::model::response::{ResData, ResErr, ResResult}; +use library::model::response::{ResErr, ResResult}; use library::social::google::GOOGLE_SOCIAL; use library::token::{generate_refresh_token, generate_token}; use library::{db, token}; @@ -51,7 +51,7 @@ pub async fn authenticate_google( return Err(ResErr::service(message!(context.get_lang_tag(), ACCOUNT_DISABLED))); } } - + account } }; diff --git a/system/src/service/feedback_service.rs b/system/src/service/feedback_service.rs index 26185b1..147f18b 100644 --- a/system/src/service/feedback_service.rs +++ b/system/src/service/feedback_service.rs @@ -1,27 +1,27 @@ use domain::dto::feedback::FeedbackAdd; use domain::entities::feedback::Feedback; +use domain::vo::feedback::FeedbackPageable; use library::context::Context; use library::db; -use library::model::pageable::Pageable; -use library::model::response::{ResData, ResResult}; +use library::model::response::ResResult; /// 获取反馈信息列表 pub async fn get_feedback_list_by_page( context: Context, page: i64, page_size: i64 -) -> ResResult> { +) -> ResResult { if !context.account.role.is_admin() { tracing::error!("非管理员用户,无法获取反馈信息列表"); - return Ok(Pageable::::empty()); + return Ok(FeedbackPageable::empty(page, page_size)); } let feedback_list = Feedback::search_feedback(page, page_size, db!()).await.ok(); if feedback_list.is_none() { tracing::error!("反馈信息为空"); - return Ok(Pageable::::empty()); + return Ok(FeedbackPageable::empty(page, page_size)); } let total = get_feedback_count().await; - Ok(Pageable::new(feedback_list.unwrap(), total)) + Ok(FeedbackPageable::new(feedback_list.unwrap(), total, page, page_size)) } /// 获取反馈信息总数 diff --git a/system/src/service/sys_account_service.rs b/system/src/service/sys_account_service.rs index 8a08e4a..7240f3e 100644 --- a/system/src/service/sys_account_service.rs +++ b/system/src/service/sys_account_service.rs @@ -11,7 +11,7 @@ use i18n::{ message_ids::{ACCOUNT_DISABLED, ACCOUNT_NO_PERMISSION, INCORRECT_USERNAME_OR_PASSWORD}, }; use library::{ - cache::account_cache::{CacheAccount, LOGIN_CACHE}, context::WhiteContext, db, model::response::{ResData, ResErr, ResResult}, token::{generate_refresh_token, generate_token} + cache::account_cache::{CacheAccount, LOGIN_CACHE}, context::WhiteContext, db, model::response::{ResErr, ResResult}, token::{generate_refresh_token, generate_token} }; /// 登录, 使用账号和密码