package manage import ( "SciencesServer/app/api/website/model" "SciencesServer/app/basic/config" model2 "SciencesServer/app/common/model" "SciencesServer/app/service" config2 "SciencesServer/config" "errors" ) type Search struct{} type SearchHandle func() *Search type ( // SearchParams 搜索参数 SearchParams struct { } ) // searchIdentityHandle 搜索信息处理 var searchIdentityHandle = map[int]func(ids []uint64) (interface{}, error){ config.TenantUserIdentityForCompany: company, config.TenantUserIdentityForExpert: company, config.TenantUserIdentityForResearch: company, config.TenantUserIdentityForLaboratory: company, config.TenantUserIdentityForAgent: company, } // company 公司信息 func company(ids []uint64) (interface{}, error) { mManageCompany := model.NewManageCompany() out := make([]*model2.ManageCompany, 0) if err := model2.ScanFields(mManageCompany.ManageCompany, &out, []string{}, &model2.ModelWhereOrder{ Where: model2.NewWhereIn("id", ids), Order: model2.NewOrder("id", model2.OrderModeToDesc), }, &model2.ModelWhereOrder{ Where: model2.NewWhere("examine_status", model2.ExamineStatusForAgree), }); err != nil { return nil, err } list := make([]*CompanyBasicInfo, 0) for _, v := range out { list = append(list, &CompanyBasicInfo{ ID: v.GetEncodeID(), Kind: v.Kind, Name: v.Name, Image: v.Image.Analysis(config2.SettingInfo.Domain), Url: v.Url, Keywords: v.GetKeywordAttribute(), }) } return list, nil } func expert(ids []uint64) (interface{}, error) { mManageCompany := model.NewManageCompany() out := make([]*model2.ManageCompany, 0) if err := model2.ScanFields(mManageCompany.ManageCompany, &out, []string{}, &model2.ModelWhereOrder{ Where: model2.NewWhereIn("id", ids), Order: model2.NewOrder("id", model2.OrderModeToDesc), }, &model2.ModelWhereOrder{ Where: model2.NewWhere("examine_status", model2.ExamineStatusForAgree), }); err != nil { return nil, err } return out, nil } func research(ids []uint64) (interface{}, error) { mManageCompany := model.NewManageCompany() out := make([]*model2.ManageCompany, 0) if err := model2.ScanFields(mManageCompany.ManageCompany, &out, []string{}, &model2.ModelWhereOrder{ Where: model2.NewWhereIn("id", ids), Order: model2.NewOrder("id", model2.OrderModeToDesc), }, &model2.ModelWhereOrder{ Where: model2.NewWhere("examine_status", model2.ExamineStatusForAgree), }); err != nil { return nil, err } return out, nil } func laboratory(ids []uint64) (interface{}, error) { mManageCompany := model.NewManageCompany() out := make([]*model2.ManageCompany, 0) if err := model2.ScanFields(mManageCompany.ManageCompany, &out, []string{}, &model2.ModelWhereOrder{ Where: model2.NewWhereIn("id", ids), Order: model2.NewOrder("id", model2.OrderModeToDesc), }, &model2.ModelWhereOrder{ Where: model2.NewWhere("examine_status", model2.ExamineStatusForAgree), }); err != nil { return nil, err } return out, nil } func (c *Search) Launch(identity int, param, industry string, page, pageSize int) (interface{}, error) { manage := service.NewESManage( service.WithManageIdentity(identity), service.WithManageTitle(param), service.WithManageIndustry(industry), service.WithManageKeyword(param), service.WithManageResearch(param), ) out, err := manage.Search(page, pageSize) if err != nil { return nil, err } else if out == nil { return nil, nil } ids := make([]uint64, 0) for _, v := range out.([]*service.ESManage) { if v.Identity != identity { continue } ids = append(ids, v.ID) } handle, has := searchIdentityHandle[identity] if !has { return nil, errors.New("操作错误,未知的身份信息") } return handle(ids) } func NewSearch() SearchHandle { return func() *Search { return &Search{} } }