pub struct TokenService;Implementations§
Source§impl TokenService
impl TokenService
Sourcepub async fn recharge(
pool: &Pool<Postgres>,
params: TokenRechargeInsertParams,
) -> Result<RechargeResult, Error>
pub async fn recharge( pool: &Pool<Postgres>, params: TokenRechargeInsertParams, ) -> Result<RechargeResult, Error>
充值:在同一事务中插入充值记录并更新账户余额。 若账户不存在则自动创建。
Sourcepub async fn consume(
pool: &Pool<Postgres>,
params: TokenUsageInsertParams,
) -> Result<ConsumeResult, Error>
pub async fn consume( pool: &Pool<Postgres>, params: TokenUsageInsertParams, ) -> Result<ConsumeResult, Error>
消费:在同一事务中扣减余额并写入消费记录。
余额不足时返回 Error::InsufficientBalance,不写消费记录,事务回滚。
Sourcepub async fn adjust(
pool: &Pool<Postgres>,
user_id: i64,
amount: i64,
admin_user_id: i64,
remark: Option<String>,
) -> Result<AdjustResult, Error>
pub async fn adjust( pool: &Pool<Postgres>, user_id: i64, amount: i64, admin_user_id: i64, remark: Option<String>, ) -> Result<AdjustResult, Error>
管理员调整某用户的 token 余额(保留审计流水,禁止绕过流水直接 UPDATE):
amount > 0→ 调用Self::recharge,source=RECHARGE_SOURCE_ADMIN,created_by=admin_user_idamount < 0→ 调用Self::consume,service=SERVICE_ADMIN_ADJUST,biz_id=admin:<id>保留操作者amount == 0→ 返回Error::InvalidAmount
remark 为空或空白会被替换为 “admin adjust”。
Auto Trait Implementations§
impl Freeze for TokenService
impl RefUnwindSafe for TokenService
impl Send for TokenService
impl Sync for TokenService
impl Unpin for TokenService
impl UnsafeUnpin for TokenService
impl UnwindSafe for TokenService
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more