diff --git a/app/api/enterprise/api/technology.go b/app/api/enterprise/api/technology.go index e02d67b..c7d9795 100644 --- a/app/api/enterprise/api/technology.go +++ b/app/api/enterprise/api/technology.go @@ -89,6 +89,12 @@ type ( Kind int `json:"kind" form:"kind" binding:"required"` Keywords []string `json:"keywords" form:"keywords"` } + // equipmentForm 设备参数 + equipmentForm struct { + Title string `json:"title" form:"title" binding:"required"` + Research string `json:"research" form:"research" binding:"required"` + Describe string `json:"describe" form:"describe"` + } ) func (a *instanceForm) FilterProveImages() string { @@ -451,3 +457,55 @@ func (a *Technology) TopicDelete(c *gin.Context) { Delete(form.Convert()) api.APIResponse(err)(c) } + +func (a *Technology) Equipment(c *gin.Context) { + form := &struct { + Title string `json:"title" form:"title"` + api.PageForm + }{} + if err := api.Bind(form)(c); err != nil { + api.APIFailure(err.(error))(c) + return + } + data, err := technology2.NewEquipment()(api.GetSession()(c).(*service.SessionEnterprise), api.GetLocal()(c).(string)). + List(form.Title, form.Page, form.PageSize) + api.APIResponse(err, data)(c) +} + +func (a *Technology) EquipmentAdd(c *gin.Context) { + form := new(equipmentForm) + + if err := api.Bind(form)(c); err != nil { + api.APIFailure(err.(error))(c) + return + } + err := technology2.NewEquipment()(api.GetSession()(c).(*service.SessionEnterprise), api.GetLocal()(c).(string)). + Form(&technology2.EquipmentParams{Title: form.Title, Research: form.Research, Describe: form.Describe}) + api.APIResponse(err)(c) +} + +func (a *Technology) EquipmentEdit(c *gin.Context) { + form := &struct { + api.IDStringForm + equipmentForm + }{} + if err := api.Bind(form)(c); err != nil { + api.APIFailure(err.(error))(c) + return + } + err := technology2.NewEquipment()(api.GetSession()(c).(*service.SessionEnterprise), api.GetLocal()(c).(string)). + Form(&technology2.EquipmentParams{ID: form.Convert(), Title: form.Title, Research: form.Research, Describe: form.Describe}) + api.APIResponse(err)(c) +} + +func (a *Technology) EquipmentDelete(c *gin.Context) { + form := new(api.IDStringForm) + + if err := api.Bind(form)(c); err != nil { + api.APIFailure(err.(error))(c) + return + } + err := technology2.NewEquipment()(api.GetSession()(c).(*service.SessionEnterprise), api.GetLocal()(c).(string)). + Delete(form.Convert()) + api.APIResponse(err)(c) +} diff --git a/app/api/enterprise/controller/technology/equipment.go b/app/api/enterprise/controller/technology/equipment.go new file mode 100644 index 0000000..50470ac --- /dev/null +++ b/app/api/enterprise/controller/technology/equipment.go @@ -0,0 +1,111 @@ +package technology + +import ( + "SciencesServer/app/api/enterprise/model" + "SciencesServer/app/api/manage/controller" + model2 "SciencesServer/app/common/model" + "SciencesServer/app/service" + "errors" +) + +type Equipment struct { + *service.SessionEnterprise + local string +} + +type EquipmentHandle func(enterprise *service.SessionEnterprise, local string) *Equipment + +type EquipmentParams struct { + ID uint64 + Title, Research, Describe string +} + +type EquipmentInfo struct { + ID string `json:"id"` + *model2.TechnologyEquipment +} + +// List 列表信息 +func (c *Equipment) List(title string, page, pageSize int) (*controller.ReturnPages, error) { + mTechnologyEquipment := model.NewTechnologyEquipment() + + where := []*model2.ModelWhereOrder{&model2.ModelWhereOrder{ + Where: model2.NewWhere("tenant_id", c.TenantID), + 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.TechnologyEquipment, 0) + + var count int64 + + if err := model2.Pages(mTechnologyEquipment.TechnologyEquipment, &out, page, pageSize, &count, where...); err != nil { + return nil, err + } + list := make([]*EquipmentInfo, 0) + + for _, v := range out { + list = append(list, &EquipmentInfo{ + ID: v.GetEncodeID(), TechnologyEquipment: v, + }) + } + return &controller.ReturnPages{Data: list, Count: count}, nil +} + +func (c *Equipment) Form(params *EquipmentParams) error { + mTechnologyEquipment := model.NewTechnologyEquipment() + + if params.ID > 0 { + mTechnologyEquipment.ID = params.ID + + isExist, err := model2.First(mTechnologyEquipment.TechnologyEquipment) + + if err != nil { + return err + } else if !isExist { + return errors.New("操作错误,设备信息不存在") + } else if mTechnologyEquipment.Local.Local != c.local { + return errors.New("无权限操作") + } + } + mTechnologyEquipment.Title = params.Title + mTechnologyEquipment.Research = params.Research + mTechnologyEquipment.Describe = params.Describe + + if mTechnologyEquipment.ID > 0 { + return model2.Updates(mTechnologyEquipment.TechnologyEquipment, mTechnologyEquipment.TechnologyEquipment) + } + return model2.Create(mTechnologyEquipment.TechnologyEquipment) +} + +// Delete 删除操作 +func (c *Equipment) Delete(id uint64) error { + mTechnologyEquipment := model.NewTechnologyEquipment() + mTechnologyEquipment.ID = id + + isExist, err := model2.First(mTechnologyEquipment.TechnologyEquipment) + + if err != nil { + return err + } else if !isExist { + return errors.New("操作错误,设备信息不存在") + } else if mTechnologyEquipment.Local.Local != c.local { + return errors.New("无权限操作") + } + return model2.Delete(mTechnologyEquipment.TechnologyEquipment) +} + +func NewEquipment() EquipmentHandle { + return func(enterprise *service.SessionEnterprise, local string) *Equipment { + return &Equipment{ + SessionEnterprise: enterprise, + local: local, + } + } +} diff --git a/app/api/enterprise/model/technology_equipment.go b/app/api/enterprise/model/technology_equipment.go new file mode 100644 index 0000000..3f3af05 --- /dev/null +++ b/app/api/enterprise/model/technology_equipment.go @@ -0,0 +1,11 @@ +package model + +import "SciencesServer/app/common/model" + +type TechnologyEquipment struct { + *model.TechnologyEquipment +} + +func NewTechnologyEquipment() *TechnologyEquipment { + return &TechnologyEquipment{model.NewTechnologyEquipment()} +} diff --git a/app/common/model/technology_equipment.go b/app/common/model/technology_equipment.go new file mode 100644 index 0000000..c11f6b8 --- /dev/null +++ b/app/common/model/technology_equipment.go @@ -0,0 +1,21 @@ +package model + +// TechnologyEquipment 技术设备管理信息 +type TechnologyEquipment struct { + Model + ModelTenant + Local + Title string `gorm:"column:title;type:varchar(30);default:null;comment:名称" json:"title"` + Research string `gorm:"column:research;type:varchar(255);default:null;comment:研究信息" json:"research"` + Describe string `gorm:"column:describe;type:varchar(255);default:null;comment:描述" json:"describe"` + ModelDeleted + ModelAt +} + +func (m *TechnologyEquipment) TableName() string { + return m.NewTableName("technology_equipment") +} + +func NewTechnologyEquipment() *TechnologyEquipment { + return &TechnologyEquipment{} +} diff --git a/router/address.go b/router/address.go index de824d5..3edcb19 100644 --- a/router/address.go +++ b/router/address.go @@ -146,5 +146,9 @@ func registerEnterpriseAPI(app *gin.Engine) { technology.POST("/topic/add", _api.TopicAdd) technology.POST("/topic/edit", _api.TopicEdit) technology.POST("/topic/delete", _api.TopicDelete) + technology.POST("/equipment", _api.Equipment) + technology.POST("/equipment/add", _api.EquipmentAdd) + technology.POST("/equipment/edit", _api.EquipmentEdit) + technology.POST("/equipment/delete", _api.EquipmentDelete) } }