object_service.go 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  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.ObjectDataInfo) error
  18. UpdateObjectData(d *viewmodels.ObjectDataInfo) 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. CreatedBy: objectInfo.CreatedBy,
  73. CreatedAt: objectInfo.CreatedAt,
  74. UpdatedAt: objectInfo.UpdatedAt,
  75. UpdatedBy: objectInfo.UpdatedBy,
  76. DeletedAt: objectInfo.DeletedAt,
  77. DeletedBy: objectInfo.DeletedBy,
  78. DeletedFlag: 0,
  79. Attrs: attrs,
  80. }
  81. return objectDataInfo, nil
  82. }
  83. func (s *objectService) CreateObjectData(o *viewmodels.ObjectDataInfo) error {
  84. modelId := o.ModelId
  85. objectId := NewID()
  86. createdBy := o.CreatedBy
  87. object := &datamodels.Object{
  88. ModelId: modelId,
  89. ObjectId: objectId,
  90. ObjectType: o.ObjectType,
  91. ObjectTitle: o.ObjectTitle,
  92. ObjectCode: o.ObjectCode,
  93. Comment: o.Comment,
  94. IsFixed: 0,
  95. CreatedBy: createdBy,
  96. CreatedAt: time.Now(),
  97. }
  98. err := s.objectRepo.Create(object)
  99. if err != nil {
  100. return err
  101. }
  102. for _, a := range o.Attrs {
  103. newId := NewID()
  104. objectAttr := &datamodels.ObjectAttr{
  105. ModelId: modelId,
  106. ObjectId: objectId,
  107. AttrId: newId,
  108. AttrTitle: a.AttrTitle,
  109. AttrCode: a.AttrCode,
  110. AttrType: a.AttrType,
  111. AttrLength: a.AttrLength,
  112. AttrDecimals: a.AttrDecimals,
  113. Comment: a.Comment,
  114. IsFixed: a.IsFixed,
  115. IsNotNull: a.IsNotNull,
  116. IsPKey: a.IsPKey,
  117. CreatedAt: time.Now(),
  118. CreatedBy: createdBy,
  119. }
  120. err = s.objectAttrRepo.Create(objectAttr)
  121. if err != nil {
  122. return err
  123. }
  124. }
  125. return nil
  126. }
  127. func (s *objectService) UpdateObjectData(o *viewmodels.ObjectDataInfo) error {
  128. modelId := o.ModelId
  129. objectId := o.ObjectId
  130. updatedBy := o.UpdatedBy
  131. object := &datamodels.Object{
  132. ModelId: modelId,
  133. ObjectId: objectId,
  134. ObjectType: o.ObjectType,
  135. ObjectTitle: o.ObjectTitle,
  136. ObjectCode: o.ObjectCode,
  137. Comment: o.Comment,
  138. IsFixed: 0,
  139. UpdatedBy: updatedBy,
  140. }
  141. err := s.objectRepo.Update(object)
  142. if err != nil {
  143. return err
  144. }
  145. err = s.objectAttrRepo.DeleteByObjectId(modelId, objectId)
  146. if err != nil {
  147. return err
  148. }
  149. for _, a := range o.Attrs {
  150. newId := NewID()
  151. objectAttr := &datamodels.ObjectAttr{
  152. ModelId: modelId,
  153. ObjectId: objectId,
  154. AttrId: newId,
  155. AttrTitle: a.AttrTitle,
  156. AttrCode: a.AttrCode,
  157. AttrType: a.AttrType,
  158. AttrLength: a.AttrLength,
  159. AttrDecimals: a.AttrDecimals,
  160. Comment: a.Comment,
  161. IsFixed: a.IsFixed,
  162. IsNotNull: a.IsNotNull,
  163. IsPKey: a.IsPKey,
  164. CreatedBy: updatedBy,
  165. }
  166. err = s.objectAttrRepo.Create(objectAttr)
  167. if err != nil {
  168. return err
  169. }
  170. }
  171. return nil
  172. }