sys_authority_btn.go 1.6 KB

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