package manage import ( "SciencesServer/app/api/website/model" "SciencesServer/app/basic/config" model2 "SciencesServer/app/common/model" "SciencesServer/app/service" "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, } 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 } return out, 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, params string) (interface{}, error) { manage := service.NewManage() _params := map[string]interface{}{ "title": params, "keyword": params, "research": params, } data, err := manage.Search(1, 1, _params) if err != nil { return nil, err } ids := make([]uint64, 0) for _, v := range data.([]*service.Manage) { 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{} } }