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