|
@@ -0,0 +1,280 @@
|
|
|
+package system
|
|
|
+
|
|
|
+import (
|
|
|
+ "eta/eta_forum_task/utils"
|
|
|
+ "time"
|
|
|
+
|
|
|
+ "github.com/beego/beego/v2/client/orm"
|
|
|
+)
|
|
|
+
|
|
|
+type SysRoleAddReq struct {
|
|
|
+ RoleName string `description:"角色名称"`
|
|
|
+ RoleType string `description:"角色类型"`
|
|
|
+}
|
|
|
+
|
|
|
+type SysRole struct {
|
|
|
+ RoleId int `orm:"column(role_id);pk" description:"角色ID"`
|
|
|
+ RoleName string `description:"角色名称"`
|
|
|
+ RoleType string `description:"角色类型"`
|
|
|
+ RoleTypeCode string `description:"角色类型编码"`
|
|
|
+ RoleLevel int `description:"角色等级:0-表示一级角色,每个账号只能绑定一个一级角色 ,1-表示二级角色,每个账号可以绑定多个二级 角色"`
|
|
|
+ CreateTime time.Time `description:"创建时间"`
|
|
|
+ ModifyTime time.Time
|
|
|
+}
|
|
|
+
|
|
|
+type SysRoleItem struct {
|
|
|
+ RoleId int `orm:"column(role_id);pk" description:"角色ID"`
|
|
|
+ RoleName string `description:"角色名称"`
|
|
|
+ RoleType string `description:"角色类型"`
|
|
|
+ RoleTypeCode string `description:"角色类型编码"`
|
|
|
+ CreateTime time.Time `description:"创建时间"`
|
|
|
+ RoleLevel int `description:"角色等级:0-表示一级角色,每个账号只能绑定一个一级角色 ,1-表示二级角色,每个账号可以绑定多个二级 角色"`
|
|
|
+}
|
|
|
+
|
|
|
+func GetSysRoleCount(roleName string) (count int, err error) {
|
|
|
+ sql := `SELECT COUNT(1) AS count FROM sys_role WHERE role_name=? `
|
|
|
+ o := orm.NewOrm()
|
|
|
+ err = o.Raw(sql, roleName).QueryRow(&count)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func AddSysRole(item *SysRole) (lastId int64, err error) {
|
|
|
+ o := orm.NewOrm()
|
|
|
+ lastId, err = o.Insert(item)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+type SysRoleEditReq struct {
|
|
|
+ RoleId int `description:"角色ID"`
|
|
|
+ RoleName string `description:"角色名称"`
|
|
|
+ RoleType string `description:"角色类型"`
|
|
|
+}
|
|
|
+
|
|
|
+func GetSysRoleById(roleId int) (item *SysRoleItem, err error) {
|
|
|
+ sql := `SELECT * FROM sys_role WHERE role_id=? `
|
|
|
+ o := orm.NewOrm()
|
|
|
+ err = o.Raw(sql, roleId).QueryRow(&item)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func GetRoleInfoById(roleId int) (item *SysRole, err error) {
|
|
|
+ sql := `SELECT * FROM sys_role WHERE role_id=? `
|
|
|
+ o := orm.NewOrm()
|
|
|
+ err = o.Raw(sql, roleId).QueryRow(&item)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func GetSysRoleByName(roleName string) (item *SysRoleItem, err error) {
|
|
|
+ sql := `SELECT * FROM sys_role WHERE role_name=? `
|
|
|
+ o := orm.NewOrm()
|
|
|
+ err = o.Raw(sql, roleName).QueryRow(&item)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// GetSysRoleByRoleTypeCode role_type_code
|
|
|
+func GetSysRoleByRoleTypeCode(roleTypeCode string) (item *SysRoleItem, err error) {
|
|
|
+ sql := `SELECT * FROM sys_role WHERE role_type_code=? `
|
|
|
+ o := orm.NewOrm()
|
|
|
+ err = o.Raw(sql, roleTypeCode).QueryRow(&item)
|
|
|
+ return
|
|
|
+}
|
|
|
+func ModifySysRole(roleName, roleType, roleTypeCode string, groupId int) (err error) {
|
|
|
+ sql := `UPDATE sys_role SET role_name=?,role_type=?,role_type_code=?,modify_time=NOW() WHERE role_id=? `
|
|
|
+ o := orm.NewOrm()
|
|
|
+ _, err = o.Raw(sql, roleName, roleType, roleTypeCode, groupId).Exec()
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+type SysRoleDeleteReq struct {
|
|
|
+ RoleId int `description:"角色ID"`
|
|
|
+}
|
|
|
+
|
|
|
+func DeleteSysRole(roleId int) (err error) {
|
|
|
+ sql := `DELETE FROM sys_role WHERE role_id=? `
|
|
|
+ o := orm.NewOrm()
|
|
|
+ _, err = o.Raw(sql, roleId).Exec()
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func GetSysRoleListCount(condition string, pars []interface{}) (count int, err error) {
|
|
|
+ o := orm.NewOrm()
|
|
|
+ sql := `SELECT COUNT(1) AS count FROM sys_role WHERE 1=1 `
|
|
|
+ if condition != "" {
|
|
|
+ sql += condition
|
|
|
+ }
|
|
|
+ err = o.Raw(sql, pars).QueryRow(&count)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func GetSysRoleList(condition string, pars []interface{}, startSize, pageSize int) (items []*SysRoleItem, err error) {
|
|
|
+ o := orm.NewOrm()
|
|
|
+ sql := `SELECT * FROM sys_role WHERE 1=1 `
|
|
|
+ if condition != "" {
|
|
|
+ sql += condition
|
|
|
+ }
|
|
|
+ sql += `ORDER BY modify_time DESC LIMIT ?,?`
|
|
|
+ _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+type RoleMenu struct {
|
|
|
+ MenuId int `description:"导航唯一标识"`
|
|
|
+ Name string `description:"导航名称"`
|
|
|
+ NameEn string `description:"导航名称(英文)"`
|
|
|
+}
|
|
|
+
|
|
|
+type RoleMenuList struct {
|
|
|
+ MenuId int `description:"导航唯一标识"`
|
|
|
+ Name string `description:"导航名称"`
|
|
|
+ NameEn string `description:"导航名称(英文)"`
|
|
|
+ Child []*RoleMenu
|
|
|
+ CheckList []int
|
|
|
+}
|
|
|
+
|
|
|
+type RoleMenuListResp struct {
|
|
|
+ List []*RoleMenuList
|
|
|
+}
|
|
|
+
|
|
|
+func GetRoleMenuList() (items []*RoleMenuList, err error) {
|
|
|
+ sql := `SELECT * FROM sys_menu WHERE parent_id=0 ORDER BY sort ASC `
|
|
|
+ _, err = orm.NewOrm().Raw(sql).QueryRows(&items)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func GetRoleMenuByParentId(parentId int) (items []*RoleMenu, err error) {
|
|
|
+ sql := `SELECT * FROM sys_menu WHERE parent_id=? ORDER BY sort ASC `
|
|
|
+ _, err = orm.NewOrm().Raw(sql, parentId).QueryRows(&items)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func GetCheckListRoleMenu(roleId, parentId int) (items []*RoleMenuList, err error) {
|
|
|
+ sql := ` SELECT b.menu_id FROM sys_role_menu AS a
|
|
|
+ INNER JOIN sys_menu AS b ON a.menu_id=b.menu_id
|
|
|
+ WHERE a.role_id=? AND a.type = 0
|
|
|
+ AND b.parent_id=? `
|
|
|
+ _, err = orm.NewOrm().Raw(sql, roleId, parentId).QueryRows(&items)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+type RoleMenusAddReq struct {
|
|
|
+ RoleId int `description:"角色ID"`
|
|
|
+ MenuIdStr string `description:"MenuId,多个用英文逗号隔开"`
|
|
|
+ MenuButtonIdStr string `description:"menu_button_id,多个用英文逗号隔开"`
|
|
|
+}
|
|
|
+
|
|
|
+func DeleteRoleMenuByRoleId(roleId int) (err error) {
|
|
|
+ sql := `DELETE FROM sys_role_menu WHERE role_id=? `
|
|
|
+ _, err = orm.NewOrm().Raw(sql, roleId).Exec()
|
|
|
+ return
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+type SysRoleMenu struct {
|
|
|
+ RoleMenuId int `orm:"column(role_menu_id);pk" description:"关联id"`
|
|
|
+ RoleId int
|
|
|
+ MenuId int
|
|
|
+ Type int `description:"类型:0-全选;1-半选(此字段仅用于前端的回显)"`
|
|
|
+}
|
|
|
+
|
|
|
+func AddSysRoleMenu(item *SysRoleMenu) (lastId int64, err error) {
|
|
|
+ o := orm.NewOrm()
|
|
|
+ lastId, err = o.Insert(item)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// CreateMultiSysRoleMenu 删除并新增角色权限
|
|
|
+func CreateMultiSysRoleMenu(roleId int, items []*SysRoleMenu) (err error) {
|
|
|
+ if roleId == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ o := orm.NewOrm()
|
|
|
+ tx, err := o.Begin()
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ _ = tx.Rollback()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ _ = tx.Commit()
|
|
|
+ }()
|
|
|
+
|
|
|
+ sql := `DELETE FROM sys_role_menu WHERE role_id = ?`
|
|
|
+ _, err = tx.Raw(sql, roleId).Exec()
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if len(items) > 0 {
|
|
|
+ _, err = tx.InsertMulti(len(items), items)
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func GetSysRoleAll(levelFlag bool) (items []*SysRoleItem, err error) {
|
|
|
+ o := orm.NewOrm()
|
|
|
+ sql := `SELECT * FROM sys_role WHERE 1=1`
|
|
|
+ if levelFlag {
|
|
|
+ sql += ` and role_level = 0`
|
|
|
+ }
|
|
|
+ sql += ` ORDER BY create_time DESC `
|
|
|
+ _, err = o.Raw(sql).QueryRows(&items)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+type SysRoleAllResp struct {
|
|
|
+ List []*SysRoleItem
|
|
|
+}
|
|
|
+
|
|
|
+// GetEnglishAuthRoleIds 获取英文权限角色IDs
|
|
|
+func GetEnglishAuthRoleIds(roleCodes []string) (roleIds []int, err error) {
|
|
|
+ if len(roleCodes) == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ o := orm.NewOrm()
|
|
|
+ sql := `SELECT role_id FROM sys_role WHERE role_type_code IN (` + utils.GetOrmInReplace(len(roleCodes)) + `)`
|
|
|
+ _, err = o.Raw(sql, roleCodes).QueryRows(&roleIds)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// GetSysRoleMenuByRoleId 获取角色关联菜单
|
|
|
+func GetSysRoleMenuByRoleId(roleId int) (items []*SysRoleMenu, err error) {
|
|
|
+ sql := `SELECT
|
|
|
+ *
|
|
|
+ FROM
|
|
|
+ sys_role_menu
|
|
|
+ WHERE
|
|
|
+ role_id = ?`
|
|
|
+ _, err = orm.NewOrm().Raw(sql, roleId).QueryRows(&items)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// GetEnglishAuthRoleItems 获取英文权限角色
|
|
|
+func GetEnglishAuthRoleItems(roleCodes []string) (items []*SysRole, err error) {
|
|
|
+ if len(roleCodes) == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ o := orm.NewOrm()
|
|
|
+ sql := `SELECT * FROM sys_role WHERE role_type_code IN (` + utils.GetOrmInReplace(len(roleCodes)) + `)`
|
|
|
+ _, err = o.Raw(sql, roleCodes).QueryRows(&items)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func GetSysRoleByIdList(id []int) (items []*SysRole, err error) {
|
|
|
+ if len(id) == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ o := orm.NewOrm()
|
|
|
+ sql := `SELECT * FROM sys_role WHERE role_id IN (` + utils.GetOrmInReplace(len(id)) + `)`
|
|
|
+ _, err = o.Raw(sql, id).QueryRows(&items)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// 获取所有角色信息
|
|
|
+func GetAllSysRole() (list []*SysRole, err error) {
|
|
|
+ sql := `SELECT * FROM sys_role `
|
|
|
+ o := orm.NewOrm()
|
|
|
+ _, err = o.Raw(sql).QueryRows(&list)
|
|
|
+ return
|
|
|
+}
|