暂无描述
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

tenant_dao.go 2.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package dao
  2. import (
  3. "context"
  4. "fmt"
  5. "git.x2erp.com/qdy/go-svc-configure/internal/tables"
  6. "github.com/jmoiron/sqlx"
  7. )
  8. // CreateTenant 创建租户
  9. func CreateTenant(ctx context.Context, tx *sqlx.Tx, tenantID, name, creator string) (int64, error) {
  10. id := fmt.Sprintf("tenant.%s", tenantID)
  11. query := `
  12. INSERT INTO config_tenant
  13. (id, tenant_id, name, creator, created_at)
  14. VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP)
  15. `
  16. result, err := tx.ExecContext(ctx, query, id, tenantID, name, creator)
  17. if err != nil {
  18. return -1, fmt.Errorf("创建租户失败: %v", err)
  19. }
  20. return ValidateResultRowsAffected(result, err, 1)
  21. }
  22. // GetTenantByTenantID 根据租户ID查询租户
  23. func GetTenantByTenantID(ctx context.Context, db *sqlx.DB, tenantID string) (*tables.TenantDB, error) {
  24. var tenant tables.TenantDB
  25. query := `
  26. SELECT id, tenant_id, name, creator, created_at
  27. FROM config_tenant
  28. WHERE tenant_id = ?
  29. `
  30. err := db.GetContext(ctx, &tenant, query, tenantID)
  31. if err != nil {
  32. return nil, fmt.Errorf("查询租户失败: %v", err)
  33. }
  34. return &tenant, nil
  35. }
  36. // ListTenants 查询租户列表
  37. func ListTenants(ctx context.Context, db *sqlx.DB) ([]tables.TenantDB, error) {
  38. var tenants []tables.TenantDB
  39. query := `
  40. SELECT id, tenant_id, name, creator, created_at
  41. FROM config_tenant
  42. ORDER BY created_at DESC
  43. `
  44. err := db.SelectContext(ctx, &tenants, query)
  45. if err != nil {
  46. return nil, fmt.Errorf("查询租户列表失败: %v", err)
  47. }
  48. return tenants, nil
  49. }
  50. // UpdateTenant 更新租户信息
  51. func UpdateTenant(ctx context.Context, tx *sqlx.Tx, tenantID, name string) (int64, error) {
  52. query := `
  53. UPDATE config_tenant
  54. SET name = ?
  55. WHERE tenant_id = ?
  56. `
  57. result, err := tx.ExecContext(ctx, query, name, tenantID)
  58. if err != nil {
  59. return -1, fmt.Errorf("更新租户失败: %v", err)
  60. }
  61. return ValidateResultRowsAffected(result, err, 1)
  62. }
  63. // DeleteTenant 删除租户
  64. func DeleteTenant(ctx context.Context, tx *sqlx.Tx, tenantID string) (int64, error) {
  65. query := `DELETE FROM config_tenant WHERE tenant_id = ?`
  66. result, err := tx.ExecContext(ctx, query, tenantID)
  67. if err != nil {
  68. return -1, fmt.Errorf("删除租户失败: %v", err)
  69. }
  70. return ValidateResultRowsAffected(result, err, 1)
  71. }
  72. // CheckTenantExists 检查租户是否存在
  73. func CheckTenantExists(ctx context.Context, db *sqlx.DB, tenantID string) (bool, error) {
  74. var count int
  75. query := `SELECT COUNT(*) FROM config_tenant WHERE tenant_id = ?`
  76. err := db.GetContext(ctx, &count, query, tenantID)
  77. if err != nil {
  78. return false, fmt.Errorf("检查租户存在性失败: %v", err)
  79. }
  80. return count > 0, nil
  81. }