object_service.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. package service
  2. import (
  3. "time"
  4. "xps/datamodels"
  5. "xps/datasource"
  6. "xps/repositories"
  7. "xps/viewmodels"
  8. )
  9. type ObjectService interface {
  10. GetList(m map[string]interface{}) ([]viewmodels.ObjectInfo, error)
  11. GetPage(m map[string]interface{}) (*viewmodels.PageResult, error)
  12. GetById(modelId, objectId int64) (*viewmodels.ObjectInfo, error)
  13. Create(d *datamodels.Object) error
  14. Update(d *datamodels.Object) error
  15. Delete(m map[string]interface{}) error
  16. GetObjectDataById(modelId, objectId int64) (*viewmodels.ObjectDataInfo, error)
  17. CreateObjectData(d *viewmodels.ObjectData) error
  18. UpdateObjectData(d *viewmodels.ObjectData) error
  19. }
  20. type objectService struct {
  21. objectRepo *repositories.ObjectRepo
  22. objectAttrRepo *repositories.ObjectAttrRepo
  23. }
  24. func NewObjectService() ObjectService {
  25. return &objectService{
  26. objectRepo: repositories.NewObjectRepo(datasource.InstanceMaster()),
  27. objectAttrRepo: repositories.NewObjectAttrRepo(datasource.InstanceMaster()),
  28. }
  29. }
  30. func (s *objectService) GetList(m map[string]interface{}) ([]viewmodels.ObjectInfo, error) {
  31. return s.objectRepo.GetList(m)
  32. }
  33. func (s *objectService) GetPage(m map[string]interface{}) (*viewmodels.PageResult, error) {
  34. return s.objectRepo.GetPage(m)
  35. }
  36. func (s *objectService) GetById(modelId, objectId int64) (*viewmodels.ObjectInfo, error) {
  37. return s.objectRepo.GetById(modelId, objectId)
  38. }
  39. func (s *objectService) Create(Object *datamodels.Object) error {
  40. Object.ObjectId = NewID()
  41. return s.objectRepo.Create(Object)
  42. }
  43. func (s *objectService) Update(Object *datamodels.Object) error {
  44. return s.objectRepo.Update(Object)
  45. }
  46. func (s *objectService) Delete(m map[string]interface{}) error {
  47. modelId := m["modelId"].(int64)
  48. objectId := m["objectId"].(int64)
  49. err := s.objectRepo.Delete(m)
  50. if err != nil {
  51. return err
  52. }
  53. return s.objectAttrRepo.DeleteByObjectId(modelId, objectId)
  54. }
  55. func (s *objectService) GetObjectDataById(modelId, objectId int64) (*viewmodels.ObjectDataInfo, error) {
  56. objectInfo, err := s.objectRepo.GetById(modelId, objectId)
  57. if err != nil {
  58. return nil, err
  59. }
  60. attrs, err := s.objectAttrRepo.GetListById(modelId, objectId)
  61. if err != nil {
  62. return nil, err
  63. }
  64. objectDataInfo := &viewmodels.ObjectDataInfo{
  65. ModelId: objectInfo.ModelId,
  66. ObjectId: objectInfo.ObjectId,
  67. ObjectType: objectInfo.ObjectType,
  68. ObjectTitle: objectInfo.ObjectTitle,
  69. ObjectCode: objectInfo.ObjectCode,
  70. Comment: objectInfo.Comment,
  71. IsFixed: objectInfo.IsFixed,
  72. Attrs: attrs,
  73. }
  74. return objectDataInfo, nil
  75. }
  76. func (s *objectService) CreateObjectData(o *viewmodels.ObjectData) error {
  77. modelId := o.ModelId
  78. objectId := NewID()
  79. createdBy := o.CreatedBy
  80. object := &datamodels.Object{
  81. ModelId: modelId,
  82. ObjectId: objectId,
  83. ObjectType: o.ObjectType,
  84. ObjectTitle: o.ObjectTitle,
  85. ObjectCode: o.ObjectCode,
  86. Comment: o.Comment,
  87. IsFixed: 0,
  88. CreatedBy: createdBy,
  89. CreatedAt: time.Now(),
  90. }
  91. err := s.objectRepo.Create(object)
  92. if err != nil {
  93. return err
  94. }
  95. for _, a := range o.Attrs {
  96. newId := NewID()
  97. objectAttr := &datamodels.ObjectAttr{
  98. ModelId: modelId,
  99. ObjectId: objectId,
  100. AttrId: newId,
  101. AttrTitle: a.AttrTitle,
  102. AttrCode: a.AttrCode,
  103. AttrType: a.AttrType,
  104. AttrLength: a.AttrLength,
  105. AttrDecimals: a.AttrDecimals,
  106. Comment: a.Comment,
  107. IsFixed: a.IsFixed,
  108. IsNotNull: a.IsNotNull,
  109. IsPKey: a.IsPKey,
  110. CreatedAt: time.Now(),
  111. CreatedBy: createdBy,
  112. }
  113. err = s.objectAttrRepo.Create(objectAttr)
  114. if err != nil {
  115. return err
  116. }
  117. }
  118. return nil
  119. }
  120. func (s *objectService) UpdateObjectData(o *viewmodels.ObjectData) error {
  121. modelId := o.ModelId
  122. objectId := o.ObjectId
  123. updatedBy := o.UpdatedBy
  124. object := &datamodels.Object{
  125. ModelId: modelId,
  126. ObjectId: objectId,
  127. ObjectType: o.ObjectType,
  128. ObjectTitle: o.ObjectTitle,
  129. ObjectCode: o.ObjectCode,
  130. Comment: o.Comment,
  131. IsFixed: 0,
  132. UpdatedBy: updatedBy,
  133. }
  134. err := s.objectRepo.Update(object)
  135. if err != nil {
  136. return err
  137. }
  138. err = s.objectAttrRepo.DeleteByObjectId(modelId, objectId)
  139. if err != nil {
  140. return err
  141. }
  142. for _, a := range o.Attrs {
  143. newId := NewID()
  144. objectAttr := &datamodels.ObjectAttr{
  145. ModelId: modelId,
  146. ObjectId: objectId,
  147. AttrId: newId,
  148. AttrTitle: a.AttrTitle,
  149. AttrCode: a.AttrCode,
  150. AttrType: a.AttrType,
  151. AttrLength: a.AttrLength,
  152. AttrDecimals: a.AttrDecimals,
  153. Comment: a.Comment,
  154. IsFixed: a.IsFixed,
  155. IsNotNull: a.IsNotNull,
  156. IsPKey: a.IsPKey,
  157. CreatedBy: updatedBy,
  158. }
  159. err = s.objectAttrRepo.Create(objectAttr)
  160. if err != nil {
  161. return err
  162. }
  163. }
  164. return nil
  165. }