feat:完善项目

This commit is contained in:
henry
2022-01-18 09:20:18 +08:00
parent 8a97ec40d3
commit 478182dcb0
12 changed files with 161 additions and 30 deletions

View File

@ -3,7 +3,9 @@ package api
import ( import (
"SciencesServer/app/basic/api" "SciencesServer/app/basic/api"
"SciencesServer/app/service" "SciencesServer/app/service"
"fmt"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"reflect"
) )
type ES struct{} type ES struct{}
@ -57,5 +59,9 @@ func (*ES) Search(c *gin.Context) {
service.WithPatentIndustry(form.Industry), service.WithPatentIndustry(form.Industry),
) )
data, err := manage.Search(1, 10) data, err := manage.Search(1, 10)
for _, v := range data.([]interface{}) {
fmt.Println(reflect.TypeOf(v).String())
}
api.APIResponse(err, data)(c) api.APIResponse(err, data)(c)
} }

View File

@ -0,0 +1,24 @@
package api
import (
"SciencesServer/app/api/website/controller"
"SciencesServer/app/basic/api"
"github.com/gin-gonic/gin"
)
type Search struct{}
func (*Search) Launch(c *gin.Context) {
form := &struct {
Mode int `json:"mode" form:"mode" binding:"required"`
Keyword string `json:"keyword" form:"keyword" binding:"required"`
Industry string `json:"industry" form:"industry"`
api.PageForm
}{}
if err := api.Bind(form)(c); err != nil {
api.APIFailure(err.(error))(c)
return
}
data, err := controller.NewSearch()().Launch(form.Mode, form.Keyword, form.Industry, form.Page, form.PageSize)
api.APIResponse(err, data)(c)
}

View File

@ -31,14 +31,7 @@ func (*Sys) Banner(c *gin.Context) {
} }
func (*Sys) About(c *gin.Context) { func (*Sys) About(c *gin.Context) {
form := &struct { data, err := sys.NewAbout()(api.GetTenantID()(c).(uint64)).Instance()
NavigationID string `json:"navigation_id" form:"navigation_id"`
}{}
if err := api.Bind(form)(c); err != nil {
api.APIFailure(err.(error))(c)
return
}
data, err := sys.NewAbout()(api.GetTenantID()(c).(uint64)).Instance((&api.IDStringForm{ID: form.NavigationID}).Convert())
api.APIResponse(err, data)(c) api.APIResponse(err, data)(c)
} }

View File

@ -2,6 +2,7 @@ package controller
import ( import (
"SciencesServer/app/api/website/model" "SciencesServer/app/api/website/model"
config2 "SciencesServer/app/basic/config"
"SciencesServer/app/basic/controller" "SciencesServer/app/basic/controller"
model2 "SciencesServer/app/common/model" model2 "SciencesServer/app/common/model"
"SciencesServer/app/service" "SciencesServer/app/service"
@ -9,6 +10,7 @@ import (
"SciencesServer/config" "SciencesServer/config"
"errors" "errors"
"fmt" "fmt"
"strings"
"time" "time"
) )
@ -31,7 +33,8 @@ type (
ActivityDetail struct { ActivityDetail struct {
ID string `json:"id"` ID string `json:"id"`
*model.ActivityInstanceDetail *model.ActivityInstanceDetail
JoinStatus bool `json:"join_status"` Industry string `json:"industry"`
IsJoin bool `json:"is_join"`
} }
) )
@ -70,21 +73,21 @@ func (c *Activity) Instance(title, industry string, status, page, pageSize int)
list := make([]*ActivityInfo, 0) list := make([]*ActivityInfo, 0)
for _, v := range out { for _, v := range out {
v.Image.Image = v.Image.Analysis(config.SystemConfig[config.SysImageDomain])
data := &ActivityInfo{ data := &ActivityInfo{
ID: v.GetEncodeID(), ActivityInstanceInfo: v, IsJoin: v.JoinID > 0, Status: 2, ID: v.GetEncodeID(), ActivityInstanceInfo: v, IsJoin: v.JoinID > 0, Status: 2,
} }
if now.Before(v.BeginAt) {
if now.After(v.BeginAt) {
data.Status = 1 data.Status = 1
goto CONTINUE goto CONTINUE
} }
if now.Before(v.FinishAt) { if now.After(v.FinishAt) {
data.Status = 3 data.Status = 3
goto CONTINUE goto CONTINUE
} }
CONTINUE: CONTINUE:
list = append(list, data) list = append(list, data)
} }
return &controller.ReturnPages{Data: list, Count: count}, nil return &controller.ReturnPages{Data: list, Count: count}, nil
@ -99,12 +102,19 @@ func (c *Activity) Detail(id uint64) (*ActivityDetail, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
mActivityInstance.Image.Image = mActivityInstance.Image.Analysis(config.SystemConfig[config.SysImageDomain]) out.Image.Image = out.Image.Analysis(config.SystemConfig[config.SysImageDomain])
industrys := make([]string, 0)
for _, v := range out.GetIndustryAttribute() {
industrys = append(industrys, config2.GetIndustryInfo(v, "-", "-"))
}
return &ActivityDetail{ return &ActivityDetail{
ID: out.GetEncodeID(), ID: out.GetEncodeID(),
ActivityInstanceDetail: out, ActivityInstanceDetail: out,
JoinStatus: out.JoinID > 0., Industry: strings.Join(industrys, ""),
IsJoin: out.JoinID > 0.,
}, nil }, nil
} }

View File

@ -0,0 +1,59 @@
package controller
import (
"SciencesServer/app/basic/config"
"SciencesServer/app/service"
"errors"
)
type Search struct{}
type SearchHandle func() *Search
var searchHandle = map[int]func(int, int, string, string) (interface{}, error){
1: searchCompany,
}
// searchCompany 公司搜索
func searchCompany(page, pageSize int, keyword, industry string) (interface{}, error) {
manage := service.NewESManage(
service.WithManageIdentity(config.TenantUserIdentityForCompany),
service.WithManageTitle(keyword),
service.WithManageKeyword(keyword),
service.WithManageResearch(keyword),
)
if industry != "" {
manage.Industry = industry
}
out, 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
}
return nil, nil
}
// Launch 发起搜索
func (c *Search) Launch(mode int, keyword, industry string, page, pageSize int) (interface{}, error) {
handle, has := searchHandle[mode]
if !has {
return nil, errors.New("操作错误,未知的搜索模式")
}
return handle(page, pageSize, keyword, industry)
}
func NewSearch() SearchHandle {
return func() *Search {
return &Search{}
}
}

View File

@ -17,6 +17,7 @@ type (
ID string `json:"id"` ID string `json:"id"`
Title string `json:"title"` Title string `json:"title"`
Content string `json:"content"` Content string `json:"content"`
Children []*AboutInfo `json:"children"`
} }
// AboutNavigationInfo 导航栏信息 // AboutNavigationInfo 导航栏信息
AboutNavigationInfo struct { AboutNavigationInfo struct {
@ -25,17 +26,32 @@ type (
} }
) )
func (c *About) tree(src []*model2.SysAbout, parentID uint64) []*AboutInfo {
out := make([]*AboutInfo, 0)
for _, v := range src {
if v.ParentID == parentID {
out = append(out, &AboutInfo{
ID: v.GetEncodeID(),
Title: v.Title,
Content: v.Content,
Children: nil,
})
}
}
return out
}
// Instance 关于信息 // Instance 关于信息
func (c *About) Instance(parentID uint64) (*AboutInfo, error) { func (c *About) Instance() ([]*AboutInfo, error) {
mSysAbout := model.NewSysAbout() mSysAbout := model.NewSysAbout()
if isExist, err := model2.FirstField(mSysAbout.SysAbout, []string{"id", "title", "content"}, out := make([]*model2.SysAbout, 0)
model2.NewWhere("parent_id", parentID)); err != nil {
if err := model2.ScanFields(mSysAbout.SysAbout, &out, []string{"id", "title", "content"}); err != nil {
return nil, err return nil, err
} else if !isExist {
return nil, nil
} }
return &AboutInfo{ID: mSysAbout.GetEncodeID(), Title: mSysAbout.Title, Content: mSysAbout.Content}, nil return c.tree(out, 0), nil
} }
// Navigation 导航栏 // Navigation 导航栏

View File

@ -14,6 +14,7 @@ type ActivityInstance struct {
ContactMobile string `gorm:"column:contact_mobile;type:varchar(15);default:'';comment:联系方式" json:"contact_mobile"` ContactMobile string `gorm:"column:contact_mobile;type:varchar(15);default:'';comment:联系方式" json:"contact_mobile"`
Image Image
Area Area
Description string `gorm:"column:description;type:varchar(255);comment:描述" json:"description"`
Industry string `gorm:"column:industry;type:varchar(255);comment:所属领域;行业信息" json:"-"` Industry string `gorm:"column:industry;type:varchar(255);comment:所属领域;行业信息" json:"-"`
Amount float64 `gorm:"column:amount;type:decimal(10,2);default:0;comment:活动收费金额" json:"amount"` Amount float64 `gorm:"column:amount;type:decimal(10,2);default:0;comment:活动收费金额" json:"amount"`
Content string `gorm:"column:content;type:text;comment:活动详情" json:"content"` Content string `gorm:"column:content;type:text;comment:活动详情" json:"content"`

View File

@ -4,6 +4,7 @@ import (
"SciencesServer/serve/es" "SciencesServer/serve/es"
"SciencesServer/serve/logger" "SciencesServer/serve/logger"
"encoding/json" "encoding/json"
"fmt"
) )
type ESAchievement struct { type ESAchievement struct {
@ -24,7 +25,7 @@ func (this *ESAchievement) Create() error {
this.Title = this.Industry + " - " + this.Title this.Title = this.Industry + " - " + this.Title
} }
_bytes, _ := json.Marshal(this) _bytes, _ := json.Marshal(this)
return es.Create(this.Index(), _bytes) return es.Create(this.Index(), fmt.Sprintf("%d", this.ID), _bytes)
} }
func (this *ESAchievement) Search(page, pageSize int) (interface{}, error) { func (this *ESAchievement) Search(page, pageSize int) (interface{}, error) {

View File

@ -27,7 +27,7 @@ func (this *ESManage) Index() string {
func (this *ESManage) Create() error { func (this *ESManage) Create() error {
_bytes, _ := json.Marshal(this) _bytes, _ := json.Marshal(this)
return es.Create(this.Index(), _bytes) return es.Create(this.Index(), fmt.Sprintf("%d", this.ID), _bytes)
} }
func (this *ESManage) Search(page, pageSize int, params map[string]interface{}) (interface{}, error) { func (this *ESManage) Search(page, pageSize int, params map[string]interface{}) (interface{}, error) {

View File

@ -4,6 +4,7 @@ import (
"SciencesServer/serve/es" "SciencesServer/serve/es"
"SciencesServer/serve/logger" "SciencesServer/serve/logger"
"encoding/json" "encoding/json"
"fmt"
) )
type ESPatent struct { type ESPatent struct {
@ -20,7 +21,11 @@ func (this *ESPatent) Index() string {
func (this *ESPatent) Create() error { func (this *ESPatent) Create() error {
_bytes, _ := json.Marshal(this) _bytes, _ := json.Marshal(this)
return es.Create(this.Index(), _bytes) return es.Create(this.Index(), fmt.Sprintf("%d", this.ID), _bytes)
}
func (this *ESPatent) Update() error {
return nil
} }
func (this *ESPatent) Search(page, pageSize int) (interface{}, error) { func (this *ESPatent) Search(page, pageSize int) (interface{}, error) {

View File

@ -35,6 +35,12 @@ func registerAPI(app *gin.Engine) {
indexV1.GET("/distribution/achievement", _api.DistributionAchievement) indexV1.GET("/distribution/achievement", _api.DistributionAchievement)
indexV1.GET("/distribution/company", _api.DistributionCompany) indexV1.GET("/distribution/company", _api.DistributionCompany)
} }
// Search 搜索管理
searchV1 := v1.Group("/search")
{
_api := new(api2.Search)
searchV1.POST("", _api.Launch)
}
// Config 首页信息管理 // Config 首页信息管理
configV1 := v1.Group("/config") configV1 := v1.Group("/config")
{ {
@ -71,7 +77,7 @@ func registerAPI(app *gin.Engine) {
sysV1.GET("/navigation", _api.Navigation) sysV1.GET("/navigation", _api.Navigation)
sysV1.GET("/agreement", _api.Agreement) sysV1.GET("/agreement", _api.Agreement)
sysV1.GET("/agreement/detail", _api.AgreementDetail) sysV1.GET("/agreement/detail", _api.AgreementDetail)
sysV1.POST("/about", _api.About) sysV1.GET("/about", _api.About)
sysV1.GET("/about/navigation", _api.AboutNavigation) sysV1.GET("/about/navigation", _api.AboutNavigation)
sysV1.GET("/industry", _api.Industry) sysV1.GET("/industry", _api.Industry)
} }

View File

@ -17,15 +17,25 @@ type (
) )
// Create 创建操作 // Create 创建操作
func Create(index string, body []byte) error { func Create(index, id string, body []byte) error {
_, err := client.Index(). _, err := client.Index().
Index(index). Index(index).
//Id(fmt.Sprintf("%d", 1)). Id(id).
BodyJson(string(body)). BodyJson(string(body)).
Do(context.Background()) Do(context.Background())
return err return err
} }
// Update 更新操作
func Update(index, id string, body []byte) error {
_, err := client.Update().
Index(index).
Id(id).
Doc(string(body)).
Do(context.Background())
return err
}
// Search 搜索操作 // Search 搜索操作
func Search(src interface{}, index string, params *SearchParams, page, pageSize int) ([]interface{}, error) { func Search(src interface{}, index string, params *SearchParams, page, pageSize int) ([]interface{}, error) {
query := elastic.NewBoolQuery() query := elastic.NewBoolQuery()