122 lines
3.2 KiB
Go
122 lines
3.2 KiB
Go
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(_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{}
|
|
}
|
|
}
|