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