Files
2022-01-11 10:41:46 +08:00

119 lines
3.2 KiB
Go

package service
import (
"SciencesServer/app/api/website/model"
"SciencesServer/app/basic/controller"
model2 "SciencesServer/app/common/model"
"SciencesServer/app/session"
"errors"
"time"
)
// Innovate 创新服务
type Innovate struct {
*session.Enterprise
tenantID uint64
}
type InnovateHandle func(session *session.Enterprise, tenantID uint64) *Innovate
type (
// InnovateInfo 创新服务信息
InnovateInfo struct {
ID string `json:"id"`
Title string `json:"title"`
Tags []string `json:"tags"`
CreatedAt time.Time `json:"created_at"`
}
// InnovateKindInfo 创新服务分类信息
InnovateKindInfo struct {
ID string `json:"id"`
Title string `json:"title"`
}
// InnovateDetailInfo 详细信息
InnovateDetailInfo struct {
ID string `json:"id"`
*model2.ServiceInnovate
Tags []string `json:"tags"`
}
)
// Instance 首页信息
func (c *Innovate) Instance(kind uint64, title string, page, pageSize int) (*controller.ReturnPages, error) {
mServiceInnovate := model.NewServiceInnovate()
out := make([]*model2.ServiceInnovate, 0)
var count int64
where := []*model2.ModelWhereOrder{&model2.ModelWhereOrder{Order: model2.NewOrder("id", model2.OrderModeToDesc)}}
if kind > 0 {
where = append(where, &model2.ModelWhereOrder{Where: model2.NewWhere("kind", kind)})
}
if title != "" {
where = append(where, &model2.ModelWhereOrder{Where: model2.NewWhereLike("title", title)})
}
if err := model2.PagesFields(mServiceInnovate.ServiceInnovate, &out, []string{"id", "title", "tag", "created_at"}, page, pageSize,
&count, where...); err != nil {
return nil, err
}
list := make([]*InnovateInfo, 0)
for _, v := range out {
list = append(list, &InnovateInfo{
ID: v.GetEncodeID(), Title: v.Title, Tags: v.GetTagAttribute(), CreatedAt: v.CreatedAt,
})
}
return &controller.ReturnPages{Data: list, Count: count}, nil
}
// Kind 类别信息
func (c *Innovate) Kind() ([]*InnovateKindInfo, error) {
mServiceInnovateKind := model.NewServiceInnovateKind()
out := make([]*model2.ServiceInnovateKind, 0)
if err := model2.ScanFields(mServiceInnovateKind.ServiceInnovateKind, &out, []string{"id", "title"}, &model2.ModelWhereOrder{
Order: model2.NewOrder("sort", model2.OrderModeToDesc),
}, &model2.ModelWhereOrder{
Order: model2.NewOrder("id", model2.OrderModeToDesc),
}); err != nil {
return nil, err
}
list := make([]*InnovateKindInfo, 0)
for _, v := range out {
list = append(list, &InnovateKindInfo{
ID: v.GetEncodeID(), Title: v.Title,
})
}
return list, nil
}
// Detail 详细信息
func (c *Innovate) Detail(id uint64) (*InnovateDetailInfo, error) {
mServiceInnovate := model.NewServiceInnovate()
mServiceInnovate.ID = id
if isExit, err := model2.First(mServiceInnovate.ServiceInnovate); err != nil {
return nil, err
} else if !isExit {
return nil, errors.New("操作错误,服务信息数据不存在或已被删除")
}
return &InnovateDetailInfo{
ID: mServiceInnovate.GetEncodeID(),
ServiceInnovate: mServiceInnovate.ServiceInnovate,
Tags: mServiceInnovate.GetTagAttribute(),
}, nil
}
func NewInnovate() InnovateHandle {
return func(session *session.Enterprise, tenantID uint64) *Innovate {
return &Innovate{
Enterprise: session,
tenantID: tenantID,
}
}
}