tenantService.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. package service
  2. import (
  3. "fmt"
  4. "iot_manager_service/app/system/dao"
  5. "iot_manager_service/util"
  6. "time"
  7. )
  8. // 租户管理服务
  9. var TenantService = new(tenantService)
  10. type tenantService struct{}
  11. func (s *tenantService) GetTenantByPasskey(passKey string) (*dao.Tenant, error) {
  12. tenant := &dao.Tenant{
  13. PassKey: passKey,
  14. }
  15. err := tenant.GetTenantByPasskey()
  16. if err != nil {
  17. return nil, err
  18. }
  19. return tenant, nil
  20. }
  21. func (s *tenantService) GetOne(tenantId int) (*dao.Tenant, error) {
  22. tenant := &dao.Tenant{
  23. TenantId: tenantId,
  24. }
  25. err := tenant.GetTenant()
  26. if err != nil {
  27. return nil, err
  28. }
  29. return tenant, nil
  30. }
  31. func (s *tenantService) Get(id int64) (*dao.Tenant, error) {
  32. tenant := &dao.Tenant{
  33. ID: id,
  34. }
  35. err := tenant.Get()
  36. if err != nil {
  37. return nil, err
  38. }
  39. return tenant, nil
  40. }
  41. func (s *tenantService) GetByDomain(domain string) (*dao.Tenant, error) {
  42. tenant := &dao.Tenant{
  43. Domain: domain,
  44. }
  45. err := tenant.GetByDomain()
  46. if err != nil {
  47. return nil, err
  48. }
  49. return tenant, nil
  50. }
  51. func (s *tenantService) List(tenantId int, tenantName, linkman string, current, size int) ([]dao.Tenant, error) {
  52. tenant := &dao.Tenant{}
  53. offset := (current - 1) * size
  54. limit := size
  55. if tenantId > 0 {
  56. tenant.TenantId = tenantId
  57. }
  58. if tenantName != "" {
  59. tenant.TenantName = tenantName
  60. }
  61. if linkman != "" {
  62. tenant.Linkman = linkman
  63. }
  64. tenants, err := tenant.GetTenants(offset, limit)
  65. if err != nil {
  66. return nil, err
  67. }
  68. return tenants, nil
  69. }
  70. func (s *tenantService) Submit(req dao.Tenant) *util.Errors {
  71. tenant := &req
  72. if tenant.ID == 0 {
  73. tenant.PassKey = util.RandomString(8)
  74. if tenant.IsExist() {
  75. tenant.PassKey = util.RandomString(8)
  76. }
  77. err := tenant.Save()
  78. if err != nil {
  79. return util.FailResponse(err.Error(), nil)
  80. }
  81. return util.SuccessResponse(util.Succeeded, nil)
  82. }
  83. err := tenant.Update()
  84. if err != nil {
  85. return util.FailResponse(err.Error(), nil)
  86. }
  87. return util.SuccessResponse(util.Succeeded, nil)
  88. }
  89. func (s *tenantService) GetList() ([]dao.Tenant, error) {
  90. tenant := &dao.Tenant{}
  91. tenants, err := tenant.GetAll()
  92. if err != nil {
  93. return nil, err
  94. }
  95. return tenants, nil
  96. }
  97. func (s *tenantService) Remove(id int64) *util.Errors {
  98. tenant := &dao.Tenant{
  99. ID: id,
  100. IsDeleted: 1,
  101. UpdateUser: id, // todo 使用登录态
  102. UpdateTime: time.Now(),
  103. }
  104. err := tenant.Remove()
  105. if err != nil {
  106. return util.FailResponse(err.Error(), nil)
  107. }
  108. return nil
  109. }
  110. const TenantNameKey = "%d:sys:tenant_name:%d"
  111. func (s *tenantService) GetTenantName(tenantId int, id int) string {
  112. var name string
  113. key := fmt.Sprintf(TenantNameKey, tenantId, id)
  114. name, err := util.Redis.Get(key).Result()
  115. if err != nil {
  116. tenant := &dao.Tenant{TenantId: id}
  117. if err := tenant.GetTenant(); err != nil {
  118. fmt.Printf("GetTenant err = %s \n", err)
  119. } else {
  120. name = tenant.TenantName
  121. util.Redis.Set(key, name, -1)
  122. }
  123. }
  124. return name
  125. }