houyaf hace 3 años
padre
commit
bc2e9cb6a8

+ 10 - 1
repositories/model/object_attr_repo.go

@@ -121,6 +121,15 @@ func (d *ObjectAttrRepo) Delete(m map[string]interface{}) error {
 		Where("model_id = ?", modelId).
 		Where("object_id = ?", objectId).
 		Where("attr_id = ?", attrId).
-		Update(data)
+		Delete(data)
+	return err
+}
+
+func (d *ObjectAttrRepo) DeleteByObjectId(modelId, objectId int64) error {
+	data := &datamodels.ObjectAttr{}
+	_, err := d.engine.
+		Where("model_id = ?", modelId).
+		Where("object_id = ?", objectId).
+		Delete(data)
 	return err
 }

+ 157 - 8
service/model/object_service.go

@@ -1,6 +1,7 @@
 package model
 
 import (
+	"time"
 	"xps/datamodels"
 	"xps/datasource"
 	"xps/repositories/model"
@@ -14,39 +15,187 @@ type ObjectService interface {
 	Create(d *datamodels.Object) error
 	Update(d *datamodels.Object) error
 	Delete(m map[string]interface{}) error
+	GetObjectDataById(modelId, objectId int64) (*viewmodels.ObjectDataInfo, error)
+	CreateObjectData(d *viewmodels.ObjectDataInfo) error
+	UpdateObjectData(d *viewmodels.ObjectDataInfo) error
 }
 
 type objectService struct {
-	repo *model.ObjectRepo
+	objectRepo     *model.ObjectRepo
+	objectAttrRepo *model.ObjectAttrRepo
 }
 
 func NewObjectService() ObjectService {
 	return &objectService{
-		repo: model.NewObjectRepo(datasource.InstanceMaster()),
+		objectRepo:     model.NewObjectRepo(datasource.InstanceMaster()),
+		objectAttrRepo: model.NewObjectAttrRepo(datasource.InstanceMaster()),
 	}
 }
 
 func (s *objectService) GetByList(m map[string]interface{}) ([]viewmodels.ObjectInfo, error) {
-	return s.repo.GetByList(m)
+	return s.objectRepo.GetByList(m)
 }
 
 func (s *objectService) GetByPage(m map[string]interface{}) (*viewmodels.PageResult, error) {
-	return s.repo.GetByPage(m)
+	return s.objectRepo.GetByPage(m)
 }
 
 func (s *objectService) GetById(modelId, objectId int64) (*viewmodels.ObjectInfo, error) {
-	return s.repo.GetById(modelId, objectId)
+	return s.objectRepo.GetById(modelId, objectId)
 }
 
 func (s *objectService) Create(Object *datamodels.Object) error {
 	Object.ObjectId = NewID()
-	return s.repo.Create(Object)
+	return s.objectRepo.Create(Object)
 }
 
 func (s *objectService) Update(Object *datamodels.Object) error {
-	return s.repo.Update(Object)
+	return s.objectRepo.Update(Object)
 }
 
 func (s *objectService) Delete(m map[string]interface{}) error {
-	return s.repo.Delete(m)
+	modelId := m["modelId"].(int64)
+	objectId := m["objectId"].(int64)
+	err := s.objectRepo.Delete(m)
+	if err != nil {
+		return err
+	}
+	return s.objectAttrRepo.DeleteByObjectId(modelId, objectId)
+}
+
+func (s *objectService) GetObjectDataById(modelId, objectId int64) (*viewmodels.ObjectDataInfo, error) {
+	objectInfo, err := s.objectRepo.GetById(modelId, objectId)
+	if err != nil {
+		return nil, err
+	}
+
+	m := make(map[string]interface{}, 0)
+	m["modelId"] = modelId
+	m["objectId"] = objectId
+	m["keywords"] = ""
+	attrs, err := s.objectAttrRepo.GetByList(m)
+	if err != nil {
+		return nil, err
+	}
+
+	objectDataInfo := &viewmodels.ObjectDataInfo{
+		ModelId:     objectInfo.ModelId,
+		ObjectId:    objectInfo.ObjectId,
+		ObjectType:  objectInfo.ObjectType,
+		ObjectTitle: objectInfo.ObjectTitle,
+		ObjectCode:  objectInfo.ObjectCode,
+		Comment:     objectInfo.Comment,
+		IsFixed:     objectInfo.IsFixed,
+		CreatedBy:   objectInfo.CreatedBy,
+		CreatedAt:   objectInfo.CreatedAt,
+		UpdatedAt:   objectInfo.UpdatedAt,
+		UpdatedBy:   objectInfo.UpdatedBy,
+		DeletedAt:   objectInfo.DeletedAt,
+		DeletedBy:   objectInfo.DeletedBy,
+		DeletedFlag: 0,
+		Attrs:       attrs,
+	}
+
+	return objectDataInfo, nil
+}
+
+func (s *objectService) CreateObjectData(o *viewmodels.ObjectDataInfo) error {
+	modelId := o.ModelId
+	objectId := NewID()
+	createdBy := o.CreatedBy
+	object := &datamodels.Object{
+		ModelId:     modelId,
+		ObjectId:    objectId,
+		ObjectType:  o.ObjectType,
+		ObjectTitle: o.ObjectTitle,
+		ObjectCode:  o.ObjectCode,
+		Comment:     o.Comment,
+		IsFixed:     0,
+		CreatedBy:   createdBy,
+		CreatedAt:   time.Now(),
+	}
+
+	err := s.objectRepo.Create(object)
+	if err != nil {
+		return err
+	}
+
+	for _, a := range o.Attrs {
+		newId := NewID()
+		objectAttr := &datamodels.ObjectAttr{
+			ModelId:      modelId,
+			ObjectId:     objectId,
+			AttrId:       newId,
+			AttrTitle:    a.AttrTitle,
+			AttrCode:     a.AttrCode,
+			AttrType:     a.AttrType,
+			AttrLength:   a.AttrLength,
+			AttrDecimals: a.AttrDecimals,
+			Comment:      a.Comment,
+			IsFixed:      a.IsFixed,
+			IsNotNull:    a.IsNotNull,
+			IsPKey:       a.IsPKey,
+			CreatedAt:    time.Now(),
+			CreatedBy:    createdBy,
+		}
+
+		err = s.objectAttrRepo.Create(objectAttr)
+		if err != nil {
+			return err
+		}
+	}
+
+	return nil
+}
+
+func (s *objectService) UpdateObjectData(o *viewmodels.ObjectDataInfo) error {
+	modelId := o.ModelId
+	objectId := o.ObjectId
+	updatedBy := o.UpdatedBy
+	object := &datamodels.Object{
+		ModelId:     modelId,
+		ObjectId:    objectId,
+		ObjectType:  o.ObjectType,
+		ObjectTitle: o.ObjectTitle,
+		ObjectCode:  o.ObjectCode,
+		Comment:     o.Comment,
+		IsFixed:     0,
+		UpdatedBy:   updatedBy,
+	}
+
+	err := s.objectRepo.Update(object)
+	if err != nil {
+		return err
+	}
+
+	err = s.objectAttrRepo.DeleteByObjectId(modelId, objectId)
+	if err != nil {
+		return err
+	}
+
+	for _, a := range o.Attrs {
+		newId := NewID()
+		objectAttr := &datamodels.ObjectAttr{
+			ModelId:      modelId,
+			ObjectId:     objectId,
+			AttrId:       newId,
+			AttrTitle:    a.AttrTitle,
+			AttrCode:     a.AttrCode,
+			AttrType:     a.AttrType,
+			AttrLength:   a.AttrLength,
+			AttrDecimals: a.AttrDecimals,
+			Comment:      a.Comment,
+			IsFixed:      a.IsFixed,
+			IsNotNull:    a.IsNotNull,
+			IsPKey:       a.IsPKey,
+			CreatedBy:    updatedBy,
+		}
+
+		err = s.objectAttrRepo.Create(objectAttr)
+		if err != nil {
+			return err
+		}
+	}
+
+	return nil
 }

+ 25 - 0
viewmodels/object_data_info.go

@@ -0,0 +1,25 @@
+package viewmodels
+
+import "time"
+
+type ObjectDataInfo struct {
+	ModelId     int64            `json:"modelId"         xorm:"'model_id'        bigint      pk comment('主键ID')         "`
+	ObjectId    int64            `json:"objectId"        xorm:"'object_id'       bigint      pk comment('主键ID')         "`
+	ObjectType  int64            `json:"objectType"      xorm:"'object_type'     bigint         comment('Type')           "`
+	ObjectTitle string           `json:"objectTitle"     xorm:"'object_title'    varchar(127)   comment('模型名称')        "`
+	ObjectCode  string           `json:"objectCode"      xorm:"'object_code'     varchar(127)   comment('模型名称')        "`
+	Comment     string           `json:"comment"         xorm:"'comment'         varchar(255)   comment('描述')            "`
+	IsFixed     int64            `json:"isFixed"         xorm:"'is_fixed'        int            comment('是否可修改')       "`
+	CreatedBy   int64            `json:"createdBy"       xorm:"'created_by'"`
+	CreatedAt   time.Time        `json:"createdAt"       xorm:"'created_at'"`
+	UpdatedBy   int64            `json:"updatedBy"       xorm:"'updated_by'"`
+	UpdatedAt   time.Time        `json:"updatedAt"       xorm:"'updated_at'"`
+	DeletedFlag int64            `json:"deletedFlag"     xorm:"'deleted_flag'"`
+	DeletedBy   int64            `json:"deletedBy"       xorm:"'deleted_by'"`
+	DeletedAt   time.Time        `json:"deletedAt"       xorm:"'deleted_at'"`
+	Attrs       []ObjectAttrInfo `json:"attrs"`
+}
+
+func (t *ObjectDataInfo) TableName() string {
+	return "ds_object"
+}

+ 16 - 7
viewmodels/object_info.go

@@ -1,13 +1,22 @@
 package viewmodels
 
+import "time"
+
 type ObjectInfo struct {
-	ModelId     int64  `json:"modelId"         xorm:"'model_id'        bigint      pk comment('主键ID')         "`
-	ObjectId    int64  `json:"objectId"        xorm:"'object_id'       bigint      pk comment('主键ID')         "`
-	ObjectType  int64  `json:"objectType"      xorm:"'object_type'     bigint         comment('Type')           "`
-	ObjectTitle string `json:"objectTitle"     xorm:"'object_title'    varchar(127)   comment('模型名称')        "`
-	ObjectCode  string `json:"objectCode"      xorm:"'object_code'     varchar(127)   comment('模型名称')        "`
-	Comment     string `json:"comment"         xorm:"'comment'         varchar(255)   comment('描述')            "`
-	IsFixed     int64  `json:"isFixed"         xorm:"'is_fixed'        int            comment('是否可修改')       "`
+	ModelId     int64     `json:"modelId"         xorm:"'model_id'        bigint      pk comment('主键ID')         "`
+	ObjectId    int64     `json:"objectId"        xorm:"'object_id'       bigint      pk comment('主键ID')         "`
+	ObjectType  int64     `json:"objectType"      xorm:"'object_type'     bigint         comment('Type')           "`
+	ObjectTitle string    `json:"objectTitle"     xorm:"'object_title'    varchar(127)   comment('模型名称')        "`
+	ObjectCode  string    `json:"objectCode"      xorm:"'object_code'     varchar(127)   comment('模型名称')        "`
+	Comment     string    `json:"comment"         xorm:"'comment'         varchar(255)   comment('描述')            "`
+	IsFixed     int64     `json:"isFixed"         xorm:"'is_fixed'        int            comment('是否可修改')       "`
+	CreatedBy   int64     `json:"createdBy"       xorm:"'created_by'"`
+	CreatedAt   time.Time `json:"createdAt"       xorm:"'created_at'"`
+	UpdatedBy   int64     `json:"updatedBy"       xorm:"'updated_by'"`
+	UpdatedAt   time.Time `json:"updatedAt"       xorm:"'updated_at'"`
+	DeletedFlag int64     `json:"deletedFlag"     xorm:"'deleted_flag'"`
+	DeletedBy   int64     `json:"deletedBy"       xorm:"'deleted_by'"`
+	DeletedAt   time.Time `json:"deletedAt"       xorm:"'deleted_at'"`
 }
 
 func (t *ObjectInfo) TableName() string {

+ 0 - 1
viewmodels/page_result.go

@@ -1,6 +1,5 @@
 package viewmodels
 
-// Page Result Data struct
 type PageResult struct {
 	Total     int64       `json:"total"`
 	PageSize  int         `json:"limit"`

+ 10 - 10
web/controllers/object_controller.go

@@ -2,8 +2,8 @@ package controllers
 
 import (
 	"github.com/kataras/iris/v12/mvc"
-	"xps/datamodels"
 	"xps/service/model"
+	"xps/viewmodels"
 )
 
 type ObjectController struct {
@@ -50,7 +50,7 @@ func (c *ObjectController) GetByPage() *JsonResult {
 }
 
 func (c *ObjectController) GetById(modelId, objectId int64) *JsonResult {
-	data, err := c.Service.GetById(modelId, objectId)
+	data, err := c.Service.GetObjectDataById(modelId, objectId)
 	if err != nil {
 		return ResultErr(err.Error(), nil)
 	} else {
@@ -61,14 +61,14 @@ func (c *ObjectController) GetById(modelId, objectId int64) *JsonResult {
 func (c *ObjectController) Create() *JsonResult {
 	userId := c.GetCurUserId()
 
-	object := datamodels.Object{}
-	object.CreatedBy = userId
-	err := c.Ctx.ReadJSON(&object)
+	objectData := viewmodels.ObjectDataInfo{}
+	objectData.CreatedBy = userId
+	err := c.Ctx.ReadJSON(&objectData)
 	if err != nil {
 		return ResultErr("读取数据失败", nil)
 	}
 
-	err = c.Service.Create(&object)
+	err = c.Service.CreateObjectData(&objectData)
 	if err != nil {
 		return ResultErr(err.Error(), nil)
 	} else {
@@ -79,13 +79,13 @@ func (c *ObjectController) Create() *JsonResult {
 func (c *ObjectController) Update() *JsonResult {
 	userId := c.GetCurUserId()
 
-	object := datamodels.Object{}
-	if err := c.Ctx.ReadJSON(&object); err != nil {
+	objectData := viewmodels.ObjectDataInfo{}
+	if err := c.Ctx.ReadJSON(&objectData); err != nil {
 		return ResultErr("读取数据失败", nil)
 	}
 
-	object.UpdatedBy = userId
-	err := c.Service.Update(&object)
+	objectData.UpdatedBy = userId
+	err := c.Service.UpdateObjectData(&objectData)
 	if err != nil {
 		return ResultErr(err.Error(), nil)
 	} else {

+ 1 - 1
web/router/routes.go

@@ -21,7 +21,7 @@ func Configure(b *bootstrap.Bootstrapper) {
 	})
 
 	// Static Resource
-	b.HandleDir("/", "./web/public")
+	b.HandleDir("/", "./public")
 
 	// Login
 	loginService := system.NewLoginService()