2
0

sys_authority_btn.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package system
  2. import (
  3. "errors"
  4. "github.com/flipped-aurora/gin-vue-admin/server/global"
  5. "github.com/flipped-aurora/gin-vue-admin/server/model/system"
  6. "github.com/flipped-aurora/gin-vue-admin/server/model/system/request"
  7. "github.com/flipped-aurora/gin-vue-admin/server/model/system/response"
  8. "gorm.io/gorm"
  9. )
  10. type AuthorityBtnService struct{}
  11. var AuthorityBtnServiceApp = new(AuthorityBtnService)
  12. func (a *AuthorityBtnService) GetAuthorityBtn(req request.SysAuthorityBtnReq) (res response.SysAuthorityBtnRes, err error) {
  13. var authorityBtn []system.SysAuthorityBtn
  14. err = global.GVA_DB.Find(&authorityBtn, "authority_id = ? and sys_menu_id = ?", req.AuthorityId, req.MenuID).Error
  15. if err != nil {
  16. return
  17. }
  18. var selected []uint
  19. for _, v := range authorityBtn {
  20. selected = append(selected, v.SysBaseMenuBtnID)
  21. }
  22. res.Selected = selected
  23. return res, err
  24. }
  25. func (a *AuthorityBtnService) SetAuthorityBtn(req request.SysAuthorityBtnReq) (err error) {
  26. return global.GVA_DB.Transaction(func(tx *gorm.DB) error {
  27. var authorityBtn []system.SysAuthorityBtn
  28. err = tx.Delete(&[]system.SysAuthorityBtn{}, "authority_id = ? and sys_menu_id = ?", req.AuthorityId, req.MenuID).Error
  29. if err != nil {
  30. return err
  31. }
  32. for _, v := range req.Selected {
  33. authorityBtn = append(authorityBtn, system.SysAuthorityBtn{
  34. AuthorityId: req.AuthorityId,
  35. SysMenuID: req.MenuID,
  36. SysBaseMenuBtnID: v,
  37. })
  38. }
  39. if len(authorityBtn) > 0 {
  40. err = tx.Create(&authorityBtn).Error
  41. }
  42. if err != nil {
  43. return err
  44. }
  45. return err
  46. })
  47. }
  48. func (a *AuthorityBtnService) CanRemoveAuthorityBtn(ID string) (err error) {
  49. fErr := global.GVA_DB.First(&system.SysAuthorityBtn{}, "sys_base_menu_btn_id = ?", ID).Error
  50. if errors.Is(fErr, gorm.ErrRecordNotFound) {
  51. return nil
  52. }
  53. return errors.New("此按钮正在被使用无法删除")
  54. }