71 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package entities
 | |
| 
 | |
| import (
 | |
| 	"time"
 | |
| 
 | |
| 	"gorm.io/gorm"
 | |
| )
 | |
| 
 | |
| // UserInvoiceInfo 用户开票信息实体
 | |
| type UserInvoiceInfo struct {
 | |
| 	ID             string         `gorm:"primaryKey;type:varchar(36)" json:"id"`
 | |
| 	UserID         string         `gorm:"uniqueIndex;type:varchar(36);not null" json:"user_id"`
 | |
| 	
 | |
| 	// 开票信息字段
 | |
| 	CompanyName    string `gorm:"type:varchar(200);not null" json:"company_name"`    // 公司名称
 | |
| 	TaxpayerID     string `gorm:"type:varchar(50);not null" json:"taxpayer_id"`      // 纳税人识别号
 | |
| 	BankName       string `gorm:"type:varchar(100)" json:"bank_name"`                // 开户银行
 | |
| 	BankAccount    string `gorm:"type:varchar(50)" json:"bank_account"`              // 银行账号
 | |
| 	CompanyAddress string `gorm:"type:varchar(500)" json:"company_address"`          // 企业地址
 | |
| 	CompanyPhone   string `gorm:"type:varchar(20)" json:"company_phone"`             // 企业电话
 | |
| 	ReceivingEmail string `gorm:"type:varchar(100);not null" json:"receiving_email"` // 发票接收邮箱
 | |
| 	
 | |
| 	// 元数据
 | |
| 	CreatedAt time.Time      `json:"created_at"`
 | |
| 	UpdatedAt time.Time      `json:"updated_at"`
 | |
| 	DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
 | |
| }
 | |
| 
 | |
| // TableName 指定表名
 | |
| func (UserInvoiceInfo) TableName() string {
 | |
| 	return "user_invoice_info"
 | |
| }
 | |
| 
 | |
| // IsComplete 检查开票信息是否完整
 | |
| func (u *UserInvoiceInfo) IsComplete() bool {
 | |
| 	return u.CompanyName != "" && u.TaxpayerID != "" && u.ReceivingEmail != ""
 | |
| }
 | |
| 
 | |
| // IsCompleteForSpecialInvoice 检查专票信息是否完整
 | |
| func (u *UserInvoiceInfo) IsCompleteForSpecialInvoice() bool {
 | |
| 	return u.CompanyName != "" && u.TaxpayerID != "" && u.BankName != "" && 
 | |
| 		   u.BankAccount != "" && u.CompanyAddress != "" && u.CompanyPhone != "" && 
 | |
| 		   u.ReceivingEmail != ""
 | |
| }
 | |
| 
 | |
| // GetMissingFields 获取缺失的字段
 | |
| func (u *UserInvoiceInfo) GetMissingFields() []string {
 | |
| 	var missing []string
 | |
| 	if u.CompanyName == "" {
 | |
| 		missing = append(missing, "公司名称")
 | |
| 	}
 | |
| 	if u.TaxpayerID == "" {
 | |
| 		missing = append(missing, "纳税人识别号")
 | |
| 	}
 | |
| 	if u.BankName == "" {
 | |
| 		missing = append(missing, "开户银行")
 | |
| 	}
 | |
| 	if u.BankAccount == "" {
 | |
| 		missing = append(missing, "银行账号")
 | |
| 	}
 | |
| 	if u.CompanyAddress == "" {
 | |
| 		missing = append(missing, "企业地址")
 | |
| 	}
 | |
| 	if u.CompanyPhone == "" {
 | |
| 		missing = append(missing, "企业电话")
 | |
| 	}
 | |
| 	if u.ReceivingEmail == "" {
 | |
| 		missing = append(missing, "发票接收邮箱")
 | |
| 	}
 | |
| 	return missing
 | |
| }  |