2026-06-18 21:16:02 +08:00
|
|
|
|
package dto
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
|
|
"tyapi-server/internal/domains/api/entities"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
type QueryWhitelistEntryRequest struct {
|
|
|
|
|
|
UserID string `json:"user_id" validate:"required"`
|
|
|
|
|
|
Name string `json:"name" validate:"required,min=1,max=100"`
|
|
|
|
|
|
IDCard string `json:"id_card" validate:"required"`
|
|
|
|
|
|
APICodes []string `json:"api_codes" validate:"required,min=1,dive,required"`
|
|
|
|
|
|
Remark string `json:"remark" validate:"max=500"`
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type QueryWhitelistEntryUpdateRequest struct {
|
|
|
|
|
|
Name string `json:"name" validate:"omitempty,min=1,max=100"`
|
|
|
|
|
|
IDCard string `json:"id_card" validate:"omitempty"`
|
|
|
|
|
|
APICodes []string `json:"api_codes" validate:"omitempty,min=1,dive,required"`
|
|
|
|
|
|
Remark string `json:"remark" validate:"max=500"`
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type QueryWhitelistStatusRequest struct {
|
|
|
|
|
|
Status string `json:"status" validate:"required,oneof=enabled disabled"`
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type QueryWhitelistEntryResponse struct {
|
|
|
|
|
|
ID string `json:"id"`
|
|
|
|
|
|
UserID string `json:"user_id"`
|
|
|
|
|
|
IsGlobal bool `json:"is_global"`
|
|
|
|
|
|
Name string `json:"name"`
|
|
|
|
|
|
IDCardMasked string `json:"id_card_masked"`
|
|
|
|
|
|
APICodes []string `json:"api_codes"`
|
|
|
|
|
|
Status string `json:"status"`
|
|
|
|
|
|
Remark string `json:"remark"`
|
2026-06-19 10:49:13 +08:00
|
|
|
|
OperationIP string `json:"operation_ip,omitempty"`
|
2026-06-18 21:16:02 +08:00
|
|
|
|
CreatedAt time.Time `json:"created_at"`
|
|
|
|
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type QueryWhitelistListResponse struct {
|
|
|
|
|
|
Items []QueryWhitelistEntryResponse `json:"items"`
|
|
|
|
|
|
Total int64 `json:"total"`
|
|
|
|
|
|
Page int `json:"page"`
|
|
|
|
|
|
Size int `json:"page_size"`
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type QueryWhitelistImportLegacyResponse struct {
|
|
|
|
|
|
Imported int `json:"imported"`
|
|
|
|
|
|
Skipped int `json:"skipped"`
|
|
|
|
|
|
Total int `json:"total"`
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-06-19 10:49:13 +08:00
|
|
|
|
// QueryWhitelistPublicEncryptedRequest 公开接口外层请求(data 为 AES 密文)
|
|
|
|
|
|
type QueryWhitelistPublicEncryptedRequest struct {
|
|
|
|
|
|
Data string `json:"data" binding:"required"`
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// QueryWhitelistPublicPayload 公开接口解密后的业务参数(不含 key/access_id,身份由请求头 + 解密成功证明)
|
|
|
|
|
|
type QueryWhitelistPublicPayload struct {
|
|
|
|
|
|
Name string `json:"name"`
|
|
|
|
|
|
IDCard string `json:"id_card"`
|
|
|
|
|
|
APICodes []string `json:"api_codes"`
|
|
|
|
|
|
Remark string `json:"remark"`
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-06-18 21:16:02 +08:00
|
|
|
|
func NewQueryWhitelistEntryResponse(entry *entities.QueryWhitelistEntry) QueryWhitelistEntryResponse {
|
|
|
|
|
|
apiCodes := []string(entry.APICodes)
|
|
|
|
|
|
if apiCodes == nil {
|
|
|
|
|
|
apiCodes = []string{}
|
|
|
|
|
|
}
|
|
|
|
|
|
return QueryWhitelistEntryResponse{
|
|
|
|
|
|
ID: entry.ID,
|
|
|
|
|
|
UserID: entry.UserID,
|
|
|
|
|
|
IsGlobal: entry.IsGlobal(),
|
|
|
|
|
|
Name: entry.Name,
|
|
|
|
|
|
IDCardMasked: entry.IDCardMasked,
|
|
|
|
|
|
APICodes: apiCodes,
|
|
|
|
|
|
Status: entry.Status,
|
|
|
|
|
|
Remark: entry.Remark,
|
2026-06-19 10:49:13 +08:00
|
|
|
|
OperationIP: entry.OperationIP,
|
2026-06-18 21:16:02 +08:00
|
|
|
|
CreatedAt: entry.CreatedAt,
|
|
|
|
|
|
UpdatedAt: entry.UpdatedAt,
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|