feat:优化专家导入接口

This commit is contained in:
henry
2022-05-11 22:30:18 +08:00
parent dc492993fb
commit f28386d185

View File

@ -9,9 +9,11 @@ import (
"SciencesServer/app/session" "SciencesServer/app/session"
config2 "SciencesServer/config" config2 "SciencesServer/config"
"SciencesServer/lib" "SciencesServer/lib"
"SciencesServer/serve/orm"
"SciencesServer/utils" "SciencesServer/utils"
"errors" "errors"
"fmt" "fmt"
"gorm.io/gorm"
"strings" "strings"
"time" "time"
) )
@ -84,6 +86,12 @@ type (
Tag2 string `json:"tag_2" xlsx:"已合作企业"` Tag2 string `json:"tag_2" xlsx:"已合作企业"`
Tag3 string `json:"tag_3" 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 首页信息 // Instance 首页信息
@ -348,7 +356,7 @@ func (c *Expert) Import(file string) error {
} }
data := excel.Analysis(&ExpertExcel{}) data := excel.Analysis(&ExpertExcel{})
rows := make([]*model2.ManageExpert, 0, len(data)) rows := make([]*ExpertExcelInfo, 0, len(data))
now := time.Now() now := time.Now()
@ -418,31 +426,71 @@ func (c *Expert) Import(file string) error {
} }
row.CreatedAt = now row.CreatedAt = now
row.UpdatedAt = now row.UpdatedAt = now
rows = append(rows, row) rows = append(rows, &ExpertExcelInfo{
ManageExpert: row,
Tag2: _data.Tag2,
Tag3: _data.Tag3,
})
} }
if len(rows) > 0 { 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 { for _, v := range rows {
return err if err = model2.Create(v.ManageExpert, tx); err != nil {
} return err
manage := service.NewESManage() }
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 { if err = model2.Creates(mManageCooperateEnterprise.ManageCooperateEnterprise, &enterprises, tx); err != nil {
_industrys := make([]string, 0) return err
}
}
_industrys := make([]string, 0)
for _, v := range row.GetIndustryAttribute() { for _, val := range v.GetIndustryAttribute() {
_industrys = append(_industrys, config.GetIndustryInfo(v, "-", "-").Value) _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) if err = manage.Create(); err != nil {
service.WithManageTitle(row.Name)(manage) return err
service.WithManageIdentity(config.TenantUserIdentityForExpert)(manage) }
service.WithManageIndustry(strings.Join(_industrys, ""))(manage) return nil
service.WithManageKeyword(strings.Join(row.GetKeywordAttribute(), ""))(manage) })
}
if err = manage.Create(); err != nil {
return err
}
} }
return nil return nil
} }