object_service.go 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. package model
  2. import (
  3. "time"
  4. "xps/datamodels"
  5. "xps/datasource"
  6. "xps/repositories/model"
  7. "xps/viewmodels"
  8. )
  9. type ObjectService interface {
  10. GetByList(m map[string]interface{}) ([]viewmodels.ObjectInfo, error)
  11. GetByPage(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 *model.ObjectRepo
  22. objectAttrRepo *model.ObjectAttrRepo
  23. }
  24. func NewObjectService() ObjectService {
  25. return &objectService{
  26. objectRepo: model.NewObjectRepo(datasource.InstanceMaster()),
  27. objectAttrRepo: model.NewObjectAttrRepo(datasource.InstanceMaster()),
  28. }
  29. }
  30. func (s *objectService) GetByList(m map[string]interface{}) ([]viewmodels.ObjectInfo, error) {
  31. return s.objectRepo.GetByList(m)
  32. }
  33. func (s *objectService) GetByPage(m map[string]interface{}) (*viewmodels.PageResult, error) {
  34. return s.objectRepo.GetByPage(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. m := make(map[string]interface{}, 0)
  61. m["modelId"] = modelId
  62. m["objectId"] = objectId
  63. m["keywords"] = ""
  64. attrs, err := s.objectAttrRepo.GetByList(m)
  65. if err != nil {
  66. return nil, err
  67. }
  68. objectDataInfo := &viewmodels.ObjectDataInfo{
  69. ModelId: objectInfo.ModelId,
  70. ObjectId: objectInfo.ObjectId,
  71. ObjectType: objectInfo.ObjectType,
  72. ObjectTitle: objectInfo.ObjectTitle,
  73. ObjectCode: objectInfo.ObjectCode,
  74. Comment: objectInfo.Comment,
  75. IsFixed: objectInfo.IsFixed,
  76. CreatedBy: objectInfo.CreatedBy,
  77. CreatedAt: objectInfo.CreatedAt,
  78. UpdatedAt: objectInfo.UpdatedAt,
  79. UpdatedBy: objectInfo.UpdatedBy,
  80. DeletedAt: objectInfo.DeletedAt,
  81. DeletedBy: objectInfo.DeletedBy,
  82. DeletedFlag: 0,
  83. Attrs: attrs,
  84. }
  85. return objectDataInfo, nil
  86. }
  87. func (s *objectService) CreateObjectData(o *viewmodels.ObjectDataInfo) error {
  88. modelId := o.ModelId
  89. objectId := NewID()
  90. createdBy := o.CreatedBy
  91. object := &datamodels.Object{
  92. ModelId: modelId,
  93. ObjectId: objectId,
  94. ObjectType: o.ObjectType,
  95. ObjectTitle: o.ObjectTitle,
  96. ObjectCode: o.ObjectCode,
  97. Comment: o.Comment,
  98. IsFixed: 0,
  99. CreatedBy: createdBy,
  100. CreatedAt: time.Now(),
  101. }
  102. err := s.objectRepo.Create(object)
  103. if err != nil {
  104. return err
  105. }
  106. for _, a := range o.Attrs {
  107. newId := NewID()
  108. objectAttr := &datamodels.ObjectAttr{
  109. ModelId: modelId,
  110. ObjectId: objectId,
  111. AttrId: newId,
  112. AttrTitle: a.AttrTitle,
  113. AttrCode: a.AttrCode,
  114. AttrType: a.AttrType,
  115. AttrLength: a.AttrLength,
  116. AttrDecimals: a.AttrDecimals,
  117. Comment: a.Comment,
  118. IsFixed: a.IsFixed,
  119. IsNotNull: a.IsNotNull,
  120. IsPKey: a.IsPKey,
  121. CreatedAt: time.Now(),
  122. CreatedBy: createdBy,
  123. }
  124. err = s.objectAttrRepo.Create(objectAttr)
  125. if err != nil {
  126. return err
  127. }
  128. }
  129. return nil
  130. }
  131. func (s *objectService) UpdateObjectData(o *viewmodels.ObjectDataInfo) error {
  132. modelId := o.ModelId
  133. objectId := o.ObjectId
  134. updatedBy := o.UpdatedBy
  135. object := &datamodels.Object{
  136. ModelId: modelId,
  137. ObjectId: objectId,
  138. ObjectType: o.ObjectType,
  139. ObjectTitle: o.ObjectTitle,
  140. ObjectCode: o.ObjectCode,
  141. Comment: o.Comment,
  142. IsFixed: 0,
  143. UpdatedBy: updatedBy,
  144. }
  145. err := s.objectRepo.Update(object)
  146. if err != nil {
  147. return err
  148. }
  149. err = s.objectAttrRepo.DeleteByObjectId(modelId, objectId)
  150. if err != nil {
  151. return err
  152. }
  153. for _, a := range o.Attrs {
  154. newId := NewID()
  155. objectAttr := &datamodels.ObjectAttr{
  156. ModelId: modelId,
  157. ObjectId: objectId,
  158. AttrId: newId,
  159. AttrTitle: a.AttrTitle,
  160. AttrCode: a.AttrCode,
  161. AttrType: a.AttrType,
  162. AttrLength: a.AttrLength,
  163. AttrDecimals: a.AttrDecimals,
  164. Comment: a.Comment,
  165. IsFixed: a.IsFixed,
  166. IsNotNull: a.IsNotNull,
  167. IsPKey: a.IsPKey,
  168. CreatedBy: updatedBy,
  169. }
  170. err = s.objectAttrRepo.Create(objectAttr)
  171. if err != nil {
  172. return err
  173. }
  174. }
  175. return nil
  176. }