93 lines
3.2 KiB
Go
93 lines
3.2 KiB
Go
package withdrawal
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
// 用户端 DTO
|
|
type WithdrawalDTO struct {
|
|
ID uint64 `json:"id"`
|
|
WithdrawNo string `json:"withdraw_no"`
|
|
UserID uint64 `json:"user_id"`
|
|
Amount float64 `json:"amount"`
|
|
Fee float64 `json:"fee"`
|
|
ActualAmount float64 `json:"actual_amount"`
|
|
AccountType string `json:"account_type"`
|
|
AccountName string `json:"account_name"`
|
|
AccountNo string `json:"account_no"` // 脱敏
|
|
BankName string `json:"bank_name"`
|
|
Status string `json:"status"`
|
|
ReviewRemark string `json:"review_remark"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
ReviewedAt *time.Time `json:"reviewed_at"`
|
|
PaidAt *time.Time `json:"paid_at"`
|
|
}
|
|
|
|
// 管理员端详细 DTO
|
|
type WithdrawalDetailDTO struct {
|
|
ID uint64 `json:"id"`
|
|
WithdrawNo string `json:"withdraw_no"`
|
|
UserID uint64 `json:"user_id"`
|
|
UserNickname string `json:"user_nickname"`
|
|
UserPhone string `json:"user_phone"`
|
|
Amount float64 `json:"amount"`
|
|
Fee float64 `json:"fee"`
|
|
ActualAmount float64 `json:"actual_amount"`
|
|
PaymentAccountID *uint64 `json:"payment_account_id"`
|
|
AccountType string `json:"account_type"`
|
|
AccountName string `json:"account_name"`
|
|
AccountNo string `json:"account_no"` // 管理员可见完整账号
|
|
BankName string `json:"bank_name"`
|
|
BankBranch string `json:"bank_branch"`
|
|
CertificateURLs []string `json:"certificate_urls"` // 收款二维码图片
|
|
Status string `json:"status"`
|
|
ReviewedBy *uint64 `json:"reviewed_by"`
|
|
ReviewedByName string `json:"reviewed_by_name"`
|
|
ReviewedAt *time.Time `json:"reviewed_at"`
|
|
ReviewRemark string `json:"review_remark"`
|
|
PaidBy *uint64 `json:"paid_by"`
|
|
PaidByName string `json:"paid_by_name"`
|
|
PaidAt *time.Time `json:"paid_at"`
|
|
PaymentProofURL string `json:"payment_proof_url"`
|
|
PaymentRemark string `json:"payment_remark"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
type CreateWithdrawalRequest struct {
|
|
PaymentAccountID uint64 `json:"payment_account_id" binding:"required"`
|
|
Amount float64 `json:"amount" binding:"required,gt=0"`
|
|
}
|
|
|
|
type ReviewWithdrawalRequest struct {
|
|
Approved bool `json:"approved" binding:"required"`
|
|
Remark string `json:"remark"`
|
|
}
|
|
|
|
type ConfirmPaymentRequest struct {
|
|
PaymentProofURL string `json:"payment_proof_url"`
|
|
Remark string `json:"remark"`
|
|
}
|
|
|
|
type PaginatedResult struct {
|
|
Items []WithdrawalDTO `json:"items"`
|
|
Total int64 `json:"total"`
|
|
Page int `json:"page"`
|
|
PageSize int `json:"page_size"`
|
|
}
|
|
|
|
type AdminPaginatedResult struct {
|
|
Items []WithdrawalDetailDTO `json:"items"`
|
|
Total int64 `json:"total"`
|
|
Page int `json:"page"`
|
|
PageSize int `json:"page_size"`
|
|
}
|
|
|
|
type AdminListQuery struct {
|
|
Status string `form:"status"`
|
|
UserID uint64 `form:"user_id"`
|
|
Page int `form:"page"`
|
|
Size int `form:"page_size"`
|
|
}
|