package technology import ( "SciencesServer/app/api/enterprise/model" "SciencesServer/app/basic/controller" model2 "SciencesServer/app/common/model" "SciencesServer/app/session" "SciencesServer/utils" "errors" "time" ) // Project 项目列表 type Project struct { *session.Enterprise local string } type ProjectHandle func(session *session.Enterprise, local string) *Project type ( // ProjectInfo 产品信息 ProjectInfo struct { ID string `json:"id"` *model2.TechnologyProject } // ProjectParams 产品参数信息 ProjectParams struct { ID uint64 Title, Kind, Source, Director, BeginAt, FinishAt string Amount float64 Role int } ) // List 列表信息 func (c *Project) List(title string, page, pageSize int) (*controller.ReturnPages, error) { mTechnologyProject := model.NewTechnologyProject() where := []*model2.ModelWhereOrder{&model2.ModelWhereOrder{ Where: model2.NewWhere("uid", c.UID), Order: model2.NewOrder("id", model2.OrderModeToDesc)}} if title != "" { where = append(where, &model2.ModelWhereOrder{Where: model2.NewWhere("title", title)}) } var count int64 out := make([]*model2.TechnologyProject, 0) if err := model2.Pages(mTechnologyProject.TechnologyProject, &out, page, pageSize, &count, where...); err != nil { return nil, err } list := make([]*ProjectInfo, 0) for _, v := range out { list = append(list, &ProjectInfo{ ID: v.GetEncodeID(), TechnologyProject: v, }) } return &controller.ReturnPages{Data: list, Count: count}, nil } // Form 数据处理 func (c *Project) Form(params *ProjectParams) error { mTechnologyProject := model.NewTechnologyProject() if params.ID > 0 { mTechnologyProject.ID = params.ID isExist, err := model2.FirstField(mTechnologyProject.TechnologyProject, []string{"id", "uid"}) if err != nil { return err } else if !isExist { return errors.New("操作错误,项目信息不存在或已被删除") } else if mTechnologyProject.UID != c.UID { return errors.New("无权限操作") } } mTechnologyProject.Title = params.Title mTechnologyProject.Amount = params.Amount mTechnologyProject.Kind = params.Kind mTechnologyProject.Role = model2.TechnologyProjectRole(params.Role) mTechnologyProject.Source = params.Source mTechnologyProject.Director = params.Director mTechnologyProject.BeginAt = utils.DataTimeToDate(params.BeginAt) mTechnologyProject.FinishAt = utils.DataTimeToDate(params.FinishAt) if mTechnologyProject.ID > 0 { return model2.Updates(mTechnologyProject.TechnologyProject, mTechnologyProject.TechnologyProject) } mTechnologyProject.Local.Local = c.local mTechnologyProject.UID = c.UID return model2.Create(mTechnologyProject.TechnologyProject) } // Shelf 上下架操作 func (c *Project) Shelf(id uint64, status int) error { mUserPatent := model.NewUserPatent() mUserPatent.ID = id isExist, err := model2.FirstField(mUserPatent.UserPatent, []string{"id", "uid", "patent_id"}) if err != nil { return err } else if !isExist { return errors.New("操作错误,项目信息不存在或已被删除") } else if mUserPatent.UID != c.UID { return errors.New("无权限操作") } mSysPatent := model.NewSysPatent() mSysPatent.ID = mUserPatent.PatentID return model2.Updates(mSysPatent.SysPatent, map[string]interface{}{ "shelf_status": status, "updated_at": time.Now(), }) } // Delete 删除处理 func (c *Project) Delete(id uint64) error { mTechnologyProject := model.NewTechnologyProject() mTechnologyProject.ID = id isExist, err := model2.FirstField(mTechnologyProject.TechnologyProject, []string{"id", "uid"}) if err != nil { return err } else if !isExist { return errors.New("操作错误,项目信息不存在或已被删除") } else if mTechnologyProject.UID != c.UID { return errors.New("无权限操作") } return model2.Delete(mTechnologyProject.TechnologyProject) } func NewProject() ProjectHandle { return func(session *session.Enterprise, local string) *Project { return &Project{Enterprise: session, local: local} } }