根因:access_token每2小时过期,前端收到401直接清token跳登录,没有用refresh_token续期 后端修复: - adminauth模块新增 POST /admin/auth/refresh 接口 - Service 注入 JWTManager,支持 admin refresh token 换新 token pair - Refresh 方法验证 subjectType=admin + tokenType=refresh 前端修复: - 401 拦截器核心改造:收到401先调 refresh 接口续期 - 加 isRefreshing 锁 + pendingRequests 队列防止并发刷新 - refresh 用原生 axios.post 避免拦截器递归 - 成功则更新 localStorage + 重试原请求,失败才清 token 跳登录 - 排除 /auth/refresh 自身避免死循环 - 支持 /admin/ 请求独立 token 管理 - auth.ts/adminAuth.ts 新增手动 refreshUserToken/refreshAdminSession - 路由守卫给所有需登录路由添加 meta.requiresAuth - 守卫同时支持 PC 端 /login 和移动端 /m/login
59 lines
1.7 KiB
Go
59 lines
1.7 KiB
Go
package wallet
|
|
|
|
import "time"
|
|
|
|
type AccountDTO struct {
|
|
UserID uint64 `json:"user_id"`
|
|
AvailableBalance float64 `json:"available_balance"`
|
|
FrozenBalance float64 `json:"frozen_balance"`
|
|
Status string `json:"status"`
|
|
}
|
|
|
|
type LedgerDTO struct {
|
|
ID uint64 `json:"id"`
|
|
LedgerNo string `json:"ledger_no"`
|
|
UserID uint64 `json:"user_id"`
|
|
OrderID *uint64 `json:"order_id"`
|
|
Direction string `json:"direction"`
|
|
Amount float64 `json:"amount"`
|
|
BalanceAfter float64 `json:"balance_after"`
|
|
BalanceType string `json:"balance_type"`
|
|
BizType string `json:"biz_type"`
|
|
BizNo string `json:"biz_no"`
|
|
Remark string `json:"remark"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
}
|
|
|
|
type AdminLedgerQuery struct {
|
|
UserID uint64
|
|
OrderID uint64
|
|
BizType string
|
|
Page int
|
|
PageSize int
|
|
}
|
|
|
|
type PaginatedResult struct {
|
|
Items interface{} `json:"items"`
|
|
Total int64 `json:"total"`
|
|
Page int `json:"page"`
|
|
PageSize int `json:"page_size"`
|
|
}
|
|
|
|
type AdminLedgerDTO struct {
|
|
ID uint64 `json:"id"`
|
|
LedgerNo string `json:"ledger_no"`
|
|
UserID uint64 `json:"user_id"`
|
|
UserPhone string `json:"user_phone"`
|
|
UserNickname string `json:"user_nickname"`
|
|
OrderID *uint64 `json:"order_id"`
|
|
OrderNo string `json:"order_no"`
|
|
Direction string `json:"direction"`
|
|
Amount float64 `json:"amount"`
|
|
BalanceAfter float64 `json:"balance_after"`
|
|
BalanceType string `json:"balance_type"`
|
|
BizType string `json:"biz_type"`
|
|
BizNo string `json:"biz_no"`
|
|
Remark string `json:"remark"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
}
|