package search import ( "SciencesServer/app/api/website/model" "SciencesServer/app/basic/config" "SciencesServer/app/basic/controller" model2 "SciencesServer/app/common/model" "SciencesServer/app/service" config2 "SciencesServer/config" "SciencesServer/utils" "fmt" "strings" ) type ( // ExpertInfo 专家信息 ExpertInfo struct { ID string `json:"id"` Name string `json:"name"` Image string `json:"image"` School string `json:"school"` Major string `json:"major"` ResearchName string `json:"research_name"` PatentTitle []string `json:"patent_title"` Industrys []string `json:"industrys"` Keywords []string `json:"keywords"` } ) // searchExpert 专家搜索 func searchExpert(page, pageSize int, keyword, industry string, params map[string]interface{}) (*controller.ReturnPages, error) { manage := service.NewESManage( service.WithManageIdentity(config.TenantUserIdentityForExpert), service.WithManageTitle(keyword), service.WithManageKeyword(keyword), service.WithManageResearch(keyword), ) if industry != "" { service.WithManageIndustry(industry)(manage) } out, count, err := manage.Search(page, pageSize, nil) if err != nil { return nil, err } ids := make([]uint64, 0) for _, v := range out.([]interface{}) { val := v.(*service.ESManage) ids = append(ids, val.ID) } if len(ids) <= 0 { return nil, nil } mManageExpert := model.NewManageExpert() experts := make([]*model.ManageExpertInfo, 0) if experts, err = mManageExpert.Expert(3, model2.NewWhereIn("e.id", ids)); err != nil { return nil, err } list := make([]*ExpertInfo, 0) mTechnologyPatent := model.NewTechnologyPatent() for _, v := range experts { _industrys := make([]string, 0) for _, v := range v.GetIndustryAttribute() { _industrys = append(_industrys, config.GetIndustryInfo(v, "-", "/").Value) } patentTitles := make([]string, 0) if v.PatentTitle != "" { for _, val := range strings.Split(v.PatentTitle, "&&") { objs := strings.Split(val, "$$") mTechnologyPatent.Kind = model2.TechnologyPatentKind(utils.StringToInt(objs[0])) patentTitles = append(patentTitles, fmt.Sprintf("【%s】%s", mTechnologyPatent.KindTitle(), objs[1])) } } list = append(list, &ExpertInfo{ ID: v.GetEncodeID(), Name: v.Name, Image: v.Image.Analysis(config2.SystemConfig[config2.SysImageDomain]), School: v.School, Major: v.Major, ResearchName: v.ResearchName, PatentTitle: patentTitles, Industrys: _industrys, Keywords: v.GetKeywordAttribute(), }) } return &controller.ReturnPages{Data: list, Count: count}, nil }