b_organization.go 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. package internal
  2. import (
  3. "context"
  4. "github.com/gogf/gf/util/guid"
  5. "yx-dataset-server/app/errors"
  6. "yx-dataset-server/app/model"
  7. "yx-dataset-server/app/schema"
  8. "yx-dataset-server/library/redis"
  9. )
  10. // NewOrganization 创建Organization
  11. func NewOrganization(
  12. mTrans model.ITrans,
  13. mOrganization model.IOrganization,
  14. mFile model.IDatasetFile,
  15. mDataset model.IDataset,
  16. mUser model.IUser,
  17. mRole model.IRole,
  18. ) *Organization {
  19. return &Organization{
  20. transModel: mTrans,
  21. organizationModel: mOrganization,
  22. fileModel: mFile,
  23. datasetModel: mDataset,
  24. userModel: mUser,
  25. roleModel: mRole,
  26. }
  27. }
  28. // Organization 创建Organization对象
  29. type Organization struct {
  30. organizationModel model.IOrganization
  31. transModel model.ITrans
  32. fileModel model.IDatasetFile
  33. datasetModel model.IDataset
  34. userModel model.IUser
  35. roleModel model.IRole
  36. }
  37. // Query 查询数据
  38. func (a *Organization) Query(ctx context.Context, params schema.OrganizationQueryParam, opts ...schema.OrganizationQueryOptions) (*schema.OrganizationQueryResult, error) {
  39. if !CheckIsRootUser(ctx) {
  40. user, err := a.userModel.Get(ctx, GetUserID(ctx))
  41. if err != nil {
  42. return nil, err
  43. }
  44. role, err := a.roleModel.Get(ctx, user.RoleId)
  45. if err != nil {
  46. return nil, err
  47. }
  48. if role.Code != "11" {
  49. params.RecordIds = []string{user.OrgId}
  50. }
  51. }
  52. result, err := a.organizationModel.Query(ctx, params, opts...)
  53. if err != nil {
  54. return nil, err
  55. }
  56. if len(result.Data) > 0 {
  57. user, err := a.userModel.Query(ctx, schema.UserQueryParam{RecordIDs: result.Data.ToUserIds()})
  58. if err != nil {
  59. return nil, err
  60. }
  61. result.Data.FillCreator(user.Data)
  62. }
  63. for _, v := range result.Data {
  64. v.Used, _ = redis.GetRedisClient().Get(ctx, "chart:organization:"+v.RecordID).Int()
  65. v.Unused = v.ChartNum - v.Used
  66. }
  67. return result, nil
  68. }
  69. // Get 查询指定数据
  70. func (a *Organization) Get(ctx context.Context, recordID string, opts ...schema.OrganizationQueryOptions) (*schema.Organization, error) {
  71. item, err := a.organizationModel.Get(ctx, recordID, opts...)
  72. if err != nil {
  73. return nil, err
  74. } else if item == nil {
  75. return nil, errors.ErrNotFound
  76. }
  77. user, err := a.userModel.Get(ctx, item.CreatorId)
  78. if err != nil {
  79. return nil, err
  80. }
  81. item.CreatorName = user.RealName
  82. item.Used, _ = redis.GetRedisClient().Get(ctx, "chart:organization:"+item.RecordID).Int()
  83. item.Unused = item.ChartNum - item.Used
  84. return item, nil
  85. }
  86. func (a *Organization) getUpdate(ctx context.Context, recordID string) (*schema.Organization, error) {
  87. return a.Get(ctx, recordID)
  88. }
  89. // Create 创建数据
  90. func (a *Organization) Create(ctx context.Context, item schema.Organization) error {
  91. item.RecordID = guid.S()
  92. org, err := a.organizationModel.GetByName(ctx, item.Name)
  93. if err != nil {
  94. return err
  95. } else if org != nil {
  96. return errors.New("命名重复")
  97. }
  98. return a.organizationModel.Create(ctx, item)
  99. }
  100. // Update 更新数据
  101. func (a *Organization) Update(ctx context.Context, recordID string, item schema.Organization) error {
  102. oldItem, err := a.organizationModel.Get(ctx, recordID)
  103. if err != nil {
  104. return err
  105. } else if oldItem == nil {
  106. return errors.ErrNotFound
  107. }
  108. return a.organizationModel.Update(ctx, recordID, item)
  109. }
  110. // Delete 删除数据
  111. func (a *Organization) Delete(ctx context.Context, recordID string) error {
  112. err := ExecTrans(ctx, a.transModel, func(ctx context.Context) error {
  113. oldItem, err := a.organizationModel.Get(ctx, recordID)
  114. if err != nil {
  115. return err
  116. } else if oldItem == nil {
  117. return errors.ErrNotFound
  118. }
  119. // 删除自建知识库及相关文件
  120. dataset, err := a.datasetModel.Query(ctx, schema.DatasetQueryParam{OrgId: recordID})
  121. if err != nil {
  122. return err
  123. }
  124. if len(dataset.Data) > 0 {
  125. err = a.fileModel.DeleteByDatasetIds(ctx, dataset.Data.ToRecordIds())
  126. if err != nil {
  127. return err
  128. }
  129. err = a.datasetModel.DeleteByOrgId(ctx, recordID)
  130. if err != nil {
  131. return err
  132. }
  133. }
  134. return a.organizationModel.Delete(ctx, recordID)
  135. })
  136. return err
  137. }
  138. // UpdateStatus 更新状态
  139. func (a *Organization) UpdateStatus(ctx context.Context, recordID string, status int) error {
  140. oldItem, err := a.organizationModel.Get(ctx, recordID)
  141. if err != nil {
  142. return err
  143. } else if oldItem == nil {
  144. return errors.ErrNotFound
  145. }
  146. return a.organizationModel.UpdateStatus(ctx, recordID, status)
  147. }