package technology import ( "SciencesServer/app/api/enterprise/model" "SciencesServer/app/basic/controller" model2 "SciencesServer/app/common/model" "SciencesServer/app/session" "SciencesServer/utils" "errors" "time" ) // Paper 论文管理 type Paper struct { *session.Enterprise local string } type PaperHandle func(session *session.Enterprise, local string) *Paper type ( PaperInfo struct { ID string `json:"id"` *model2.TechnologyPaper Tags []string `json:"tags"` } PaperParams struct { ID uint64 Title, Ext, Author, PublishAt, Remark string Keywords, Tags []string } ) // List 列表信息 func (c *Paper) List(title string, page, pageSize int) (*controller.ReturnPages, error) { mTechnologyPaper := model.NewTechnologyPaper() where := []*model2.ModelWhereOrder{&model2.ModelWhereOrder{ Order: model2.NewOrder("id", model2.OrderModeToDesc), }, &model2.ModelWhereOrder{ Where: model2.NewWhere("local", c.local), }} if title != "" { where = append(where, &model2.ModelWhereOrder{Where: model2.NewWhereLike("title", title)}) } out := make([]*model2.TechnologyPaper, 0) var count int64 if err := model2.Pages(mTechnologyPaper.TechnologyPaper, &out, page, pageSize, &count, where...); err != nil { return nil, err } list := make([]*PaperInfo, 0) for _, v := range out { list = append(list, &PaperInfo{ID: v.GetEncodeID(), TechnologyPaper: v, Tags: v.GetTagAttribute()}) } return &controller.ReturnPages{Data: list, Count: count}, nil } // Form 参数信息 func (c *Paper) Form(params *PaperParams) error { mTechnologyPaper := model.NewTechnologyPaper() if params.ID > 0 { mTechnologyPaper.ID = params.ID if isExist, err := model2.First(mTechnologyPaper.TechnologyPaper); err != nil { return err } else if !isExist { return errors.New("当前论文信息不存在") } else if mTechnologyPaper.UID != c.UID { return errors.New("无权限操作") } } mTechnologyPaper.Title = params.Title mTechnologyPaper.Ext = params.Ext mTechnologyPaper.Author = params.Author mTechnologyPaper.PublishAt = utils.DateTimeToTime(params.PublishAt) mTechnologyPaper.SetKeywordAttribute(params.Keywords) mTechnologyPaper.SetTagAttribute(params.Tags) mTechnologyPaper.Remark = params.Remark if params.ID <= 0 { mTechnologyPaper.UID = c.UID mTechnologyPaper.Local.Local = c.local return model2.Create(mTechnologyPaper.TechnologyPaper) } mTechnologyPaper.UpdatedAt = time.Now() return model2.Updates(mTechnologyPaper.TechnologyPaper, mTechnologyPaper.TechnologyPaper) } // Delete 删除操作 func (c *Paper) Delete(id uint64) error { mTechnologyPaper := model.NewTechnologyPaper() mTechnologyPaper.ID = id var count int64 err := model2.Count(mTechnologyPaper.TechnologyPaper, &count, model2.NewWhere("id", id), model2.NewWhere("uid", c.UID)) if err != nil { return err } else if count <= 0 { return errors.New("操作错误,当前论文信息不存在或已被删除") } if err = model2.Delete(mTechnologyPaper.TechnologyPaper); err != nil { return err } return nil } func NewPaper() PaperHandle { return func(session *session.Enterprise, local string) *Paper { return &Paper{Enterprise: session, local: local} } }