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, } } }