diff --git a/app/api/admin/controller/manage/expert.go b/app/api/admin/controller/manage/expert.go index 2ce87ac..85f3c0c 100644 --- a/app/api/admin/controller/manage/expert.go +++ b/app/api/admin/controller/manage/expert.go @@ -9,9 +9,11 @@ import ( "SciencesServer/app/session" config2 "SciencesServer/config" "SciencesServer/lib" + "SciencesServer/serve/orm" "SciencesServer/utils" "errors" "fmt" + "gorm.io/gorm" "strings" "time" ) @@ -84,6 +86,12 @@ type ( Tag2 string `json:"tag_2" xlsx:"已合作企业"` Tag3 string `json:"tag_3" xlsx:"想合作企业"` } + // ExpertExcelInfo 表格详细信息 + ExpertExcelInfo struct { + *model2.ManageExpert + Tag2 string `json:"tag_2" xlsx:"已合作企业"` + Tag3 string `json:"tag_3" xlsx:"想合作企业"` + } ) // Instance 首页信息 @@ -348,7 +356,7 @@ func (c *Expert) Import(file string) error { } data := excel.Analysis(&ExpertExcel{}) - rows := make([]*model2.ManageExpert, 0, len(data)) + rows := make([]*ExpertExcelInfo, 0, len(data)) now := time.Now() @@ -418,31 +426,71 @@ func (c *Expert) Import(file string) error { } row.CreatedAt = now row.UpdatedAt = now - rows = append(rows, row) + rows = append(rows, &ExpertExcelInfo{ + ManageExpert: row, + Tag2: _data.Tag2, + Tag3: _data.Tag3, + }) } if len(rows) > 0 { - mManageExpert := model2.NewManageExpert() + return orm.GetDB().Transaction(func(tx *gorm.DB) error { + //mManageExpert := model2.NewManageExpert() + manage := service.NewESManage() - if err = model2.Creates(mManageExpert, rows); err != nil { - return err - } - manage := service.NewESManage() + for _, v := range rows { + if err = model2.Create(v.ManageExpert, tx); err != nil { + return err + } + enterprises := make([]*model2.ManageCooperateEnterprise, 0) + // 已合作的企业 + if v.Tag2 != "" { + for _, val := range strings.Split(v.Tag2, "\n") { + enterprises = append(enterprises, &model2.ManageCooperateEnterprise{ + ModelTenant: model2.ModelTenant{TenantID: v.TenantID}, + Mode: model2.ManageCooperateEnterpriseModeForCooperateAlready, + Name: val, + ModelAt: model2.ModelAt{ + CreatedAt: now, UpdatedAt: now, + }, + }) + } + } + // 想合作的企业 + if v.Tag3 != "" { + for _, val := range strings.Split(v.Tag2, "\n") { + enterprises = append(enterprises, &model2.ManageCooperateEnterprise{ + ModelTenant: model2.ModelTenant{TenantID: v.TenantID}, + Mode: model2.ManageCooperateEnterpriseModeForCooperateToWant, + Name: val, + ModelAt: model2.ModelAt{ + CreatedAt: now, UpdatedAt: now, + }, + }) + } + } + if len(enterprises) > 0 { + mManageCooperateEnterprise := model.NewManageCooperateEnterprise() - for _, row := range rows { - _industrys := make([]string, 0) + if err = model2.Creates(mManageCooperateEnterprise.ManageCooperateEnterprise, &enterprises, tx); err != nil { + return err + } + } + _industrys := make([]string, 0) - for _, v := range row.GetIndustryAttribute() { - _industrys = append(_industrys, config.GetIndustryInfo(v, "-", "-").Value) + for _, val := range v.GetIndustryAttribute() { + _industrys = append(_industrys, config.GetIndustryInfo(val, "-", "-").Value) + } + service.WithManageID(v.ID)(manage) + service.WithManageTitle(v.Name)(manage) + service.WithManageIdentity(config.TenantUserIdentityForExpert)(manage) + service.WithManageIndustry(strings.Join(_industrys, ";"))(manage) + service.WithManageKeyword(strings.Join(v.GetKeywordAttribute(), ";"))(manage) } - service.WithManageID(row.ID)(manage) - service.WithManageTitle(row.Name)(manage) - service.WithManageIdentity(config.TenantUserIdentityForExpert)(manage) - service.WithManageIndustry(strings.Join(_industrys, ";"))(manage) - service.WithManageKeyword(strings.Join(row.GetKeywordAttribute(), ";"))(manage) - } - if err = manage.Create(); err != nil { - return err - } + if err = manage.Create(); err != nil { + return err + } + return nil + }) } return nil }