feat:完善项目管理,增加技术成果数据
This commit is contained in:
183
app/api/enterprise/controller/technology/achievement.go
Normal file
183
app/api/enterprise/controller/technology/achievement.go
Normal file
@ -0,0 +1,183 @@
|
||||
package technology
|
||||
|
||||
import (
|
||||
"SciencesServer/app/api/enterprise/model"
|
||||
"SciencesServer/app/basic/config"
|
||||
"SciencesServer/app/basic/controller"
|
||||
model2 "SciencesServer/app/common/model"
|
||||
"SciencesServer/app/session"
|
||||
"errors"
|
||||
"time"
|
||||
)
|
||||
|
||||
// Achievement 成果信息
|
||||
type Achievement struct {
|
||||
*session.Enterprise
|
||||
local string
|
||||
}
|
||||
|
||||
type AchievementHandle func(session *session.Enterprise, local string) *Achievement
|
||||
|
||||
type (
|
||||
// AchievementInfo 成果信息
|
||||
AchievementInfo struct {
|
||||
ID string `json:"id"`
|
||||
*model.TechnologyAchievementInfo
|
||||
Industrys []string `json:"industrys"`
|
||||
}
|
||||
// AchievementDetail 成果详情
|
||||
AchievementDetail struct {
|
||||
ID string `json:"id"`
|
||||
*model2.TechnologyAchievement
|
||||
Customers []string `json:"customers"`
|
||||
Keywords []string `json:"keywords"`
|
||||
}
|
||||
// AchievementParams 成果参数信息
|
||||
AchievementParams struct {
|
||||
ID uint64
|
||||
Title, Image, File, Introduce, Source string
|
||||
Mode, Maturity, LeadStandard, CooperationMode int // 技术成熟度 领先标准 合作模式
|
||||
Industrys, Customers, Keywords []string // 所属客户 关键词
|
||||
IsSubmit int // 是否提交审核
|
||||
}
|
||||
)
|
||||
|
||||
// Instance 基本信息
|
||||
func (c *Achievement) Instance(status, page, pageSize int) (*controller.ReturnPages, error) {
|
||||
mTechnologyAchievement := model.NewTechnologyAchievement()
|
||||
|
||||
where := []*model2.ModelWhere{model2.NewWhere("a.status", status)}
|
||||
|
||||
var count int64
|
||||
|
||||
out, err := mTechnologyAchievement.Achievement(page, pageSize, &count, where...)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
list := make([]*AchievementInfo, 0)
|
||||
|
||||
for _, v := range out {
|
||||
mTechnologyAchievement.Introduce = v.Industry
|
||||
|
||||
list = append(list, &AchievementInfo{
|
||||
ID: v.GetEncodeID(),
|
||||
TechnologyAchievementInfo: v,
|
||||
Industrys: mTechnologyAchievement.GetIndustryAttribute(),
|
||||
})
|
||||
}
|
||||
return &controller.ReturnPages{Data: list, Count: count}, nil
|
||||
}
|
||||
|
||||
// Detail 详情信息
|
||||
func (c *Achievement) Detail(id uint64) (*AchievementDetail, error) {
|
||||
mTechnologyAchievement := model.NewTechnologyAchievement()
|
||||
mTechnologyAchievement.ID = id
|
||||
|
||||
isExist, err := model2.First(mTechnologyAchievement.TechnologyAchievement)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
} else if !isExist {
|
||||
return nil, errors.New("操作错误,成果信息不存在或已被删除")
|
||||
}
|
||||
return &AchievementDetail{
|
||||
ID: mTechnologyAchievement.GetEncodeID(),
|
||||
TechnologyAchievement: mTechnologyAchievement.TechnologyAchievement,
|
||||
Customers: mTechnologyAchievement.GetCustomerAttribute(),
|
||||
Keywords: mTechnologyAchievement.GetKeywordAttribute(),
|
||||
}, nil
|
||||
}
|
||||
|
||||
// Form 数据操作
|
||||
func (c *Achievement) Form(params *AchievementParams) error {
|
||||
mTechnologyAchievement := model.NewTechnologyAchievement()
|
||||
|
||||
if params.ID > 0 {
|
||||
mTechnologyAchievement.ID = params.ID
|
||||
|
||||
isExist, err := model2.FirstField(mTechnologyAchievement.TechnologyAchievement, []string{"id", "uid", "status", "created_at", "updated_at"})
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
} else if !isExist {
|
||||
return errors.New("操作错误,成果信息不存在或已被删除")
|
||||
} else if mTechnologyAchievement.UID != c.UID {
|
||||
return errors.New("无权限操作")
|
||||
} else if mTechnologyAchievement.Status != model2.TechnologyAchievementStatusForRefuse &&
|
||||
mTechnologyAchievement.Status != model2.TechnologyAchievementStatusForDraft {
|
||||
return errors.New("操作错误,当前状态不允许修改")
|
||||
}
|
||||
}
|
||||
mTechnologyAchievement.Mode = model2.TechnologyAchievementMode(params.Mode)
|
||||
mTechnologyAchievement.Title = params.Title
|
||||
mTechnologyAchievement.Image.Image = params.Image
|
||||
mTechnologyAchievement.File = params.File
|
||||
mTechnologyAchievement.SetIndustryAttribute(params.Industrys)
|
||||
mTechnologyAchievement.SetCustomerAttribute(params.Customers)
|
||||
mTechnologyAchievement.Maturity = config.TechnologyMaturity(params.Maturity)
|
||||
mTechnologyAchievement.LeadStandard = model2.TechnologyProductLeadStandard(params.LeadStandard)
|
||||
mTechnologyAchievement.CooperationMode = config.TechnologyCooperationMode(params.CooperationMode)
|
||||
mTechnologyAchievement.SetKeywordAttribute(params.Keywords)
|
||||
mTechnologyAchievement.Introduce = params.Introduce
|
||||
mTechnologyAchievement.Source = params.Source
|
||||
|
||||
if mTechnologyAchievement.ID > 0 {
|
||||
mTechnologyAchievement.Status = model2.TechnologyAchievementStatusForExamining
|
||||
return model2.Updates(mTechnologyAchievement.TechnologyAchievement, mTechnologyAchievement.TechnologyAchievement)
|
||||
}
|
||||
mTechnologyAchievement.Local.Local = c.local
|
||||
mTechnologyAchievement.UID = c.UID
|
||||
|
||||
if params.IsSubmit > 0 {
|
||||
mTechnologyAchievement.Status = model2.TechnologyAchievementStatusForExamining
|
||||
}
|
||||
return model2.Create(mTechnologyAchievement.TechnologyAchievement)
|
||||
}
|
||||
|
||||
// Shelf 上下架
|
||||
func (c *Achievement) Shelf(id uint64, status int) error {
|
||||
mTechnologyAchievement := model.NewTechnologyAchievement()
|
||||
mTechnologyAchievement.ID = id
|
||||
|
||||
isExist, err := model2.FirstField(mTechnologyAchievement.TechnologyAchievement, []string{"id", "uid", "shelf_status", "status"})
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
} else if !isExist {
|
||||
return errors.New("操作错误,成果信息不存在或已被删除")
|
||||
} else if mTechnologyAchievement.UID != c.UID {
|
||||
return errors.New("无权限操作")
|
||||
} else if mTechnologyAchievement.ShelfStatus == model2.ShelfStatusKind(status) {
|
||||
return errors.New("操作错误,无需变更上下架状态")
|
||||
}
|
||||
return model2.Updates(mTechnologyAchievement.TechnologyAchievement, map[string]interface{}{
|
||||
"shelf_status": status, "updated_at": time.Now(),
|
||||
})
|
||||
}
|
||||
|
||||
// Delete 删除操作
|
||||
func (c *Achievement) Delete(id uint64) error {
|
||||
mTechnologyAchievement := model.NewTechnologyAchievement()
|
||||
mTechnologyAchievement.ID = id
|
||||
|
||||
isExist, err := model2.FirstField(mTechnologyAchievement.TechnologyAchievement, []string{"id", "uid"})
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
} else if !isExist {
|
||||
return errors.New("操作错误,成就信息不存在或已被删除")
|
||||
} else if mTechnologyAchievement.UID != c.UID {
|
||||
return errors.New("无权限操作")
|
||||
}
|
||||
return model2.Delete(mTechnologyAchievement.TechnologyAchievement)
|
||||
}
|
||||
|
||||
func NewAchievement() AchievementHandle {
|
||||
return func(session *session.Enterprise, local string) *Achievement {
|
||||
return &Achievement{
|
||||
Enterprise: session,
|
||||
local: local,
|
||||
}
|
||||
}
|
||||
}
|
@ -154,7 +154,7 @@ func (c *Product) Form(params *ProductParams) error {
|
||||
if params.ID > 0 {
|
||||
mTechnologyProduct.ID = params.ID
|
||||
|
||||
isExist, err := model2.FirstField(mTechnologyProduct.TechnologyProduct, []string{"id", "m_uid", "status", "created_at", "updated_at"})
|
||||
isExist, err := model2.FirstField(mTechnologyProduct.TechnologyProduct, []string{"id", "uid", "status", "created_at", "updated_at"})
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
|
Reference in New Issue
Block a user