role.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package model
  2. import (
  3. "sparrow/pkg/models"
  4. "github.com/jinzhu/gorm"
  5. )
  6. // Role role
  7. type Role struct {
  8. db *gorm.DB
  9. }
  10. // Init init
  11. func (a *Role) Init(db *gorm.DB) *Role {
  12. a.db = db
  13. return a
  14. }
  15. // Create create
  16. func (a *Role) Create(role *models.Role) error {
  17. return a.db.Save(role).Error
  18. }
  19. // Update update
  20. func (a *Role) Update(role *models.Role) error {
  21. return a.db.Save(role).Error
  22. }
  23. // Delete delete
  24. func (a *Role) Delete(role *models.Role) error {
  25. a.db.Model(&models.User{}).Where("user_role_id = ?", role.ID).Update(map[string]interface{}{"user_role_id": 1})
  26. return a.db.Delete(role).Error
  27. }
  28. // QueryAll query all roles
  29. func (a *Role) QueryAll(pi, ps int, name string) (datas []models.Role, total int, err error) {
  30. tx := a.db.Where("1=1")
  31. if name != "" {
  32. tx = tx.Where("role_name like ?", "%"+name+"%")
  33. }
  34. err = tx.Limit(ps).Offset((pi - 1) * ps).Find(&datas).Error
  35. err = tx.Model(&models.Role{}).Count(&total).Error
  36. return
  37. }
  38. // QueryRole query a role
  39. func (a *Role) QueryRole(roleid int) (data models.Role, err error) {
  40. err = a.db.Where(roleid).First(&data).Error
  41. return
  42. }