138 lines
3.7 KiB
Go
138 lines
3.7 KiB
Go
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{}
|
|
}
|
|
}
|