Geen omschrijving
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

role_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. // CreateRole 创建角色
  9. func CreateRole(ctx context.Context, tx *sqlx.Tx, roleID, name, description, creator string) (int64, error) {
  10. id := fmt.Sprintf("role.%s", roleID)
  11. query := `
  12. INSERT INTO config_role
  13. (id, role_id, name, description, creator, created_at)
  14. VALUES (?, ?, ?, ?, ?, CURRENT_TIMESTAMP)
  15. `
  16. result, err := tx.ExecContext(ctx, query, id, roleID, name, description, creator)
  17. if err != nil {
  18. return -1, fmt.Errorf("创建角色失败: %v", err)
  19. }
  20. return ValidateResultRowsAffected(result, err, 1)
  21. }
  22. // GetRoleByRoleID 根据角色ID查询角色
  23. func GetRoleByRoleID(ctx context.Context, db *sqlx.DB, roleID string) (*tables.RoleDB, error) {
  24. var role tables.RoleDB
  25. query := `
  26. SELECT id, role_id, name, description, creator, created_at
  27. FROM config_role
  28. WHERE role_id = ?
  29. `
  30. err := db.GetContext(ctx, &role, query, roleID)
  31. if err != nil {
  32. return nil, fmt.Errorf("查询角色失败: %v", err)
  33. }
  34. return &role, nil
  35. }
  36. // ListRoles 查询角色列表
  37. func ListRoles(ctx context.Context, db *sqlx.DB) ([]tables.RoleDB, error) {
  38. var roles []tables.RoleDB
  39. query := `
  40. SELECT id, role_id, name, description, creator, created_at
  41. FROM config_role
  42. ORDER BY created_at DESC
  43. `
  44. err := db.SelectContext(ctx, &roles, query)
  45. if err != nil {
  46. return nil, fmt.Errorf("查询角色列表失败: %v", err)
  47. }
  48. return roles, nil
  49. }
  50. // UpdateRole 更新角色信息
  51. func UpdateRole(ctx context.Context, tx *sqlx.Tx, roleID, name, description string) (int64, error) {
  52. query := `
  53. UPDATE config_role
  54. SET name = ?, description = ?
  55. WHERE role_id = ?
  56. `
  57. result, err := tx.ExecContext(ctx, query, name, description, roleID)
  58. if err != nil {
  59. return -1, fmt.Errorf("更新角色失败: %v", err)
  60. }
  61. return ValidateResultRowsAffected(result, err, 1)
  62. }
  63. // DeleteRole 删除角色
  64. func DeleteRole(ctx context.Context, tx *sqlx.Tx, roleID string) (int64, error) {
  65. query := `DELETE FROM config_role WHERE role_id = ?`
  66. result, err := tx.ExecContext(ctx, query, roleID)
  67. if err != nil {
  68. return -1, fmt.Errorf("删除角色失败: %v", err)
  69. }
  70. return ValidateResultRowsAffected(result, err, 1)
  71. }
  72. // CheckRoleExists 检查角色是否存在
  73. func CheckRoleExists(ctx context.Context, db *sqlx.DB, roleID string) (bool, error) {
  74. var count int
  75. query := `SELECT COUNT(*) FROM config_role WHERE role_id = ?`
  76. err := db.GetContext(ctx, &count, query, roleID)
  77. if err != nil {
  78. return false, fmt.Errorf("检查角色存在性失败: %v", err)
  79. }
  80. return count > 0, nil
  81. }