121 lines
5.5 KiB
Go
121 lines
5.5 KiB
Go
package dto
|
|
|
|
import (
|
|
"time"
|
|
|
|
"tyapi-server/internal/domains/finance/entities"
|
|
"tyapi-server/internal/domains/finance/value_objects"
|
|
|
|
"github.com/shopspring/decimal"
|
|
)
|
|
|
|
// InvoiceApplicationResponse 发票申请响应
|
|
type InvoiceApplicationResponse struct {
|
|
ID string `json:"id"`
|
|
UserID string `json:"user_id"`
|
|
InvoiceType value_objects.InvoiceType `json:"invoice_type"`
|
|
Amount decimal.Decimal `json:"amount"`
|
|
Status entities.ApplicationStatus `json:"status"`
|
|
InvoiceInfo *value_objects.InvoiceInfo `json:"invoice_info"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
}
|
|
|
|
// InvoiceInfoResponse 发票信息响应
|
|
type InvoiceInfoResponse struct {
|
|
CompanyName string `json:"company_name"` // 从企业认证信息获取,只读
|
|
TaxpayerID string `json:"taxpayer_id"` // 从企业认证信息获取,只读
|
|
BankName string `json:"bank_name"` // 用户可编辑
|
|
BankAccount string `json:"bank_account"` // 用户可编辑
|
|
CompanyAddress string `json:"company_address"` // 用户可编辑
|
|
CompanyPhone string `json:"company_phone"` // 用户可编辑
|
|
ReceivingEmail string `json:"receiving_email"` // 用户可编辑
|
|
IsComplete bool `json:"is_complete"`
|
|
MissingFields []string `json:"missing_fields,omitempty"`
|
|
// 字段权限标识
|
|
CompanyNameReadOnly bool `json:"company_name_read_only"` // 公司名称是否只读
|
|
TaxpayerIDReadOnly bool `json:"taxpayer_id_read_only"` // 纳税人识别号是否只读
|
|
}
|
|
|
|
// InvoiceRecordResponse 发票记录响应
|
|
type InvoiceRecordResponse struct {
|
|
ID string `json:"id"`
|
|
UserID string `json:"user_id"`
|
|
InvoiceType value_objects.InvoiceType `json:"invoice_type"`
|
|
Amount decimal.Decimal `json:"amount"`
|
|
Status entities.ApplicationStatus `json:"status"`
|
|
// 开票信息(快照数据)
|
|
CompanyName string `json:"company_name"` // 公司名称
|
|
TaxpayerID string `json:"taxpayer_id"` // 纳税人识别号
|
|
BankName string `json:"bank_name"` // 开户银行
|
|
BankAccount string `json:"bank_account"` // 银行账号
|
|
CompanyAddress string `json:"company_address"` // 企业地址
|
|
CompanyPhone string `json:"company_phone"` // 企业电话
|
|
ReceivingEmail string `json:"receiving_email"` // 接收邮箱
|
|
// 文件信息
|
|
FileName *string `json:"file_name,omitempty"`
|
|
FileSize *int64 `json:"file_size,omitempty"`
|
|
FileURL *string `json:"file_url,omitempty"`
|
|
// 时间信息
|
|
ProcessedAt *time.Time `json:"processed_at,omitempty"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
// 拒绝原因
|
|
RejectReason *string `json:"reject_reason,omitempty"`
|
|
}
|
|
|
|
// InvoiceRecordsResponse 发票记录列表响应
|
|
type InvoiceRecordsResponse struct {
|
|
Records []*InvoiceRecordResponse `json:"records"`
|
|
Total int64 `json:"total"`
|
|
Page int `json:"page"`
|
|
PageSize int `json:"page_size"`
|
|
TotalPages int `json:"total_pages"`
|
|
}
|
|
|
|
// FileDownloadResponse 文件下载响应
|
|
type FileDownloadResponse struct {
|
|
FileID string `json:"file_id"`
|
|
FileName string `json:"file_name"`
|
|
FileSize int64 `json:"file_size"`
|
|
FileURL string `json:"file_url"`
|
|
FileContent []byte `json:"file_content"`
|
|
}
|
|
|
|
// AvailableAmountResponse 可开票金额响应
|
|
type AvailableAmountResponse struct {
|
|
AvailableAmount decimal.Decimal `json:"available_amount"` // 可开票金额
|
|
TotalRecharged decimal.Decimal `json:"total_recharged"` // 总充值金额
|
|
TotalGifted decimal.Decimal `json:"total_gifted"` // 总赠送金额
|
|
TotalInvoiced decimal.Decimal `json:"total_invoiced"` // 已开票金额
|
|
PendingApplications decimal.Decimal `json:"pending_applications"` // 待处理申请金额
|
|
}
|
|
|
|
// PendingApplicationResponse 待处理申请响应
|
|
type PendingApplicationResponse struct {
|
|
ID string `json:"id"`
|
|
UserID string `json:"user_id"`
|
|
InvoiceType value_objects.InvoiceType `json:"invoice_type"`
|
|
Amount decimal.Decimal `json:"amount"`
|
|
Status entities.ApplicationStatus `json:"status"`
|
|
CompanyName string `json:"company_name"`
|
|
TaxpayerID string `json:"taxpayer_id"`
|
|
BankName string `json:"bank_name"`
|
|
BankAccount string `json:"bank_account"`
|
|
CompanyAddress string `json:"company_address"`
|
|
CompanyPhone string `json:"company_phone"`
|
|
ReceivingEmail string `json:"receiving_email"`
|
|
FileName *string `json:"file_name,omitempty"`
|
|
FileSize *int64 `json:"file_size,omitempty"`
|
|
FileURL *string `json:"file_url,omitempty"`
|
|
ProcessedAt *time.Time `json:"processed_at,omitempty"`
|
|
CreatedAt time.Time `json:"created_at"`
|
|
RejectReason *string `json:"reject_reason,omitempty"`
|
|
}
|
|
|
|
// PendingApplicationsResponse 待处理申请列表响应
|
|
type PendingApplicationsResponse struct {
|
|
Applications []*PendingApplicationResponse `json:"applications"`
|
|
Total int64 `json:"total"`
|
|
Page int `json:"page"`
|
|
PageSize int `json:"page_size"`
|
|
TotalPages int `json:"total_pages"`
|
|
} |