zhangqian
2023-11-01 530fed8ec225453572d57b15c200ab062c335457
model/index.go
@@ -5,7 +5,7 @@
   "aps_crm/pkg/logx"
   "aps_crm/pkg/mysqlx"
   "aps_crm/pkg/safe"
   "gorm.io/gorm/schema"
   "sync"
)
func Init() error {
@@ -83,26 +83,82 @@
      Repository{},
      QuotationStatus{},
      Currency{},
      CollectionProjection{},
      ContactInformation{},
      SalesReturn{},
      SalesRefund{},
      ServiceCollectionPlan{},
      Receipt{},
      ServiceOrder{},
      CourierCompany{},
      InvoiceStatus{},
      InvoiceType{},
      Invoice{},
      RefundType{},
   )
   return err
}
type InitDefaultData interface {
   InitDefaultData() error
   InitDefaultData(errCh chan<- error, wg *sync.WaitGroup)
}
func InsertDefaultData() {
   errCh := make(chan error, 2)
   var wg sync.WaitGroup
   models := []interface{}{
      NewServiceTypeSearch(),
      NewPriorityLevelSearch(),
      NewSeveritySearch(),
      NewTimeSpentSearch(),
      NewInvoiceTypeSearch(),
      NewInvoiceStatusSearch(),
      NewCourierCompanySearch(),
      NewServiceContractStatusSearch(),
      NewServiceContractTypeSearch(),
      NewServiceOrderStatusSearch(),
      NewSatisfactionSearch(),
      NewSolveRateSearch(),
      NewIsVisitSearch(),
      NewTimelyRateSearch(),
      NewFaultTypeSearch(),
      NewRepositorySearch(),
      NewSaleStageSearch(),
      NewQuotationStatusSearch(),
      NewSalesSourcesSearch(),
      NewClientStatusSearch(),
      NewClientTypeSearch(),
      NewClientOriginSearch(),
      NewClientLevelSearch(),
      NewIndustrySearch(),
      NewRegisteredCapitalSearch(),
      NewEnterpriseNatureSearch(),
      NewEnterpriseScaleSearch(),
      NewContactInformationSearch(),
      NewSaleTypeSearch(),
      NewPossibilitySearch(),
      NewStatusSearch(),
      NewPaymentTypeSearch(),
      NewBankAccountSearch(),
      NewRefundTypeSearch(),
   }
   for _, model := range models {
      if id, ok := model.(InitDefaultData); ok {
         if err := id.InitDefaultData(); err != nil {
            logx.Errorf("InitDefaultData for table: %v, err :%v", model.(schema.Tabler).TableName(), err.Error())
         }
         wg.Add(1)
         go id.InitDefaultData(errCh, &wg)
      }
   }
   go func() {
      wg.Wait()    // 等待所有goroutine完成
      close(errCh) // 关闭错误通道
   }()
   for err := range errCh {
      if err != nil {
         logx.Errorf("InitDefaultData err: %v", err.Error())
      }
   }
}