feat:完善信息

This commit is contained in:
henry
2022-01-23 22:59:11 +08:00
parent 5e328ab2da
commit 79c5cbfe74
9 changed files with 340 additions and 7 deletions

View File

@ -5,8 +5,10 @@ import (
"SciencesServer/app/basic/controller"
model2 "SciencesServer/app/common/model"
"SciencesServer/app/session"
"SciencesServer/serve/orm"
"SciencesServer/utils"
"errors"
"gorm.io/gorm"
"time"
)
@ -177,6 +179,65 @@ func (c *Demand) Delete(id uint64) error {
return nil
}
// Progress 进度信息
func (c *Demand) Progress(demandID uint64) {
mTechnologyDemandService := model.NewTechnologyDemandService()
model2.FirstWhere(mTechnologyDemandService.TechnologyDemandService,
model2.NewWhere("demand_id", demandID))
}
// ProgressLaunch 进度发起
func (c *Demand) ProgressLaunch(demandID uint64, status int, config string) error {
// TODO缺少发起判断
// 查询当前进度
mTechnologyDemandService := model.NewTechnologyDemandService()
isExist, err := model2.FirstWhere(mTechnologyDemandService.TechnologyDemandService,
model2.NewWhere("demand_id", demandID))
if err != nil {
return err
} else if !isExist {
return orm.GetDB().Transaction(func(tx *gorm.DB) error {
mTechnologyDemandService.UID = c.UID
mTechnologyDemandService.DemandID = demandID
mTechnologyDemandService.Progress = model2.TechnologyDemandServiceProgressKindForMemorandum
if err = model2.Create(mTechnologyDemandService.TechnologyDemandService, tx); err != nil {
return err
}
mTechnologyDemandServiceProgress := model.NewTechnologyDemandServiceProgress()
mTechnologyDemandServiceProgress.ServiceID = mTechnologyDemandService.ID
mTechnologyDemandServiceProgress.Progress = model2.TechnologyDemandServiceProgressKindForMemorandum
mTechnologyDemandServiceProgress.Config = config
return model2.Create(mTechnologyDemandServiceProgress.TechnologyDemandServiceProgress, tx)
})
}
if mTechnologyDemandService.Status != model2.TechnologyDemandServiceStatusForOngoing {
return errors.New("操作错误,当前状态不可处理")
}
return orm.GetDB().Transaction(func(tx *gorm.DB) error {
// 下一流程
mTechnologyDemandService.Progress = mTechnologyDemandService.NextProgress()
if mTechnologyDemandService.Progress == model2.TechnologyDemandServiceProgressKindForComplete {
if status <= 0 {
return errors.New("操作错误,请确认结题状态")
}
mTechnologyDemandService.Status = model2.TechnologyDemandServiceStatus(status)
}
if err = model2.Updates(mTechnologyDemandService.TechnologyDemandService, tx); err != nil {
return err
}
mTechnologyDemandServiceProgress := model.NewTechnologyDemandServiceProgress()
mTechnologyDemandServiceProgress.ServiceID = mTechnologyDemandService.ID
mTechnologyDemandServiceProgress.Progress = mTechnologyDemandService.Progress
mTechnologyDemandServiceProgress.Config = config
return model2.Create(mTechnologyDemandServiceProgress.TechnologyDemandServiceProgress, tx)
})
}
func NewDemand() DemandHandle {
return func(session *session.Enterprise, tenantID uint64) *Demand {
return &Demand{Enterprise: session, tenantID: tenantID}

View File

@ -0,0 +1,152 @@
package technology
import (
"SciencesServer/app/api/enterprise/model"
"SciencesServer/app/basic/controller"
model2 "SciencesServer/app/common/model"
"SciencesServer/app/session"
"SciencesServer/serve/orm"
"errors"
"gorm.io/gorm"
"time"
)
type DemandService struct {
*session.Enterprise
}
type DemandServiceHandle func(session *session.Enterprise) *DemandService
type (
// DemandServiceInstance 需求服务信息
DemandServiceInstance struct {
ID string `json:"id"`
*model.TechnologyDemandServiceInfo
}
// DemandServiceDetail 需求服务详细信息
DemandServiceDetail struct {
ID string `json:"id"`
CreatedAt time.Time `json:"created_at"`
Progress []*DemandServiceProgress `json:"progress"`
}
// DemandServiceProgress 需求服务进度信息
DemandServiceProgress struct {
ID string `json:"id"`
Progress model2.TechnologyDemandServiceProgressKind `json:"progress"`
Config interface{} `json:"config"`
CreatedAt time.Time `json:"created_at"`
}
)
// Instance 首页信息
func (c *DemandService) Instance(title string, page, pageSize int) (*controller.ReturnPages, error) {
mTechnologyDemandService := model.NewTechnologyDemandService()
where := make([]*model2.ModelWhere, 0)
if title != "" {
where = append(where, model2.NewWhereLike("d.title", title))
}
var count int64
out, err := mTechnologyDemandService.Services(page, pageSize, &count)
if err != nil {
return nil, err
}
list := make([]*DemandServiceInstance, 0)
for _, v := range out {
list = append(list, &DemandServiceInstance{
ID: v.GetEncodeID(),
TechnologyDemandServiceInfo: v,
})
}
return &controller.ReturnPages{Data: list, Count: count}, nil
}
// Detail 详细信息
func (c *DemandService) Detail(id uint64) (*DemandServiceDetail, error) {
mTechnologyDemandService := model.NewTechnologyDemandService()
mTechnologyDemandService.ID = id
isExist, err := model2.First(mTechnologyDemandService.TechnologyDemandService)
if err != nil {
return nil, err
} else if !isExist {
return nil, errors.New("操作错误,需求服务信息不存在")
}
mTechnologyDemandServiceProgress := model.NewTechnologyDemandServiceProgress()
out := make([]*model2.TechnologyDemandServiceProgress, 0)
if err = model2.ScanFields(mTechnologyDemandServiceProgress.TechnologyDemandServiceProgress, &out, []string{"id", "progress", "config", "created_at"},
&model2.ModelWhereOrder{
Where: model2.NewWhere("service_id", id),
Order: model2.NewOrder("progress", model2.OrderModeToAsc),
}); err != nil {
return nil, err
}
progress := make([]*DemandServiceProgress, 0)
for _, v := range out {
progress = append(progress, &DemandServiceProgress{
ID: v.GetEncodeID(),
Progress: v.Progress,
Config: v.Config,
CreatedAt: v.CreatedAt,
})
}
return &DemandServiceDetail{
ID: mTechnologyDemandService.GetEncodeID(),
CreatedAt: mTechnologyDemandService.CreatedAt,
Progress: progress,
}, nil
}
// Handle 处理操作
func (c *DemandService) Handle(id uint64, status int, config string) error {
// 查询当前进度
mTechnologyDemandService := model.NewTechnologyDemandService()
mTechnologyDemandService.ID = id
isExist, err := model2.First(mTechnologyDemandService.TechnologyDemandService)
if err != nil {
return err
} else if !isExist {
return errors.New("操作错误,需求服务信息不存在")
}
if mTechnologyDemandService.UID != c.UID {
return errors.New("操作错误,无权限操作")
}
if mTechnologyDemandService.Status != model2.TechnologyDemandServiceStatusForOngoing {
return errors.New("操作错误,当前状态不可处理")
}
return orm.GetDB().Transaction(func(tx *gorm.DB) error {
// 下一流程
mTechnologyDemandService.Progress = mTechnologyDemandService.NextProgress()
if mTechnologyDemandService.Progress == model2.TechnologyDemandServiceProgressKindForComplete {
if status <= 0 {
return errors.New("操作错误,请确认结题状态")
}
mTechnologyDemandService.Status = model2.TechnologyDemandServiceStatus(status)
}
if err = model2.Updates(mTechnologyDemandService.TechnologyDemandService, tx); err != nil {
return err
}
mTechnologyDemandServiceProgress := model.NewTechnologyDemandServiceProgress()
mTechnologyDemandServiceProgress.ServiceID = mTechnologyDemandService.ID
mTechnologyDemandServiceProgress.Progress = mTechnologyDemandService.Progress
mTechnologyDemandServiceProgress.Config = config
return model2.Create(mTechnologyDemandServiceProgress.TechnologyDemandServiceProgress, tx)
})
}
func NewDemandService() DemandServiceHandle {
return func(session *session.Enterprise) *DemandService {
return &DemandService{session}
}
}