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"` | ||
|  | }  |