|
|
@@ -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
|
|
|
}
|