GAAS GFrame项目web后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

249 lines
7.1 KiB

  1. package models
  2. import (
  3. "LAPP_GAAS_GFrame_BACKEND/db"
  4. "LAPP_GAAS_GFrame_BACKEND/utils"
  5. "errors"
  6. )
  7. /***
  8. *CreateBy:lou
  9. *Date:2020/5/15
  10. *TableName:角色表
  11. **********/
  12. type Roletab struct {
  13. RoleId int `xorm:"not null pk comment('角色ID') VARCHAR(40)" json:"role_id"`
  14. RoleKey string `xorm:"comment('角色代码') VARCHAR(40)" json:"role_key"`
  15. Rolename string `xorm:"comment('角色名') VARCHAR(40)" json:"rolename"`
  16. RoleSort int `xorm:"comment('角色顺序') INT(0)" json:"role_sort"`
  17. Status string `xorm:"comment('状态') VARCHAR(1)" json:"status"`
  18. Remark string `xorm:"comment('备注') VARCHAR(100)" json:"remark"`
  19. DataScope string `xorm:"comment('') VARCHAR(128)" json:"data_scope"`
  20. Createtime string `xorm:"comment('创建时间') VARCHAR(14)" json:"createtime"`
  21. Lastmodifytime string `xorm:"comment('最近一次更新时间') VARCHAR(14)" json:"lastmodifytime"`
  22. Lastmodify string `xorm:"comment('最近一次更新人员') VARCHAR(40)" json:"lastmodify"`
  23. Params string `json:"params" xorm:"-"`
  24. MenuIds []int `json:"menuIds" xorm:"-"`
  25. DeptIds []string `json:"deptIds" xorm:"-"`
  26. }
  27. type RoleB struct {
  28. RoleKey string `json:"role_key"`
  29. Rolename string `json:"rolename"`
  30. RoleSort int `json:"role_sort"`
  31. Status string `json:"status"`
  32. Remark string `json:"remark"`
  33. DataScope string `json:"data_scope"`
  34. Createtime string `json:"createtime"`
  35. Lastmodifytime string `json:"lastmodifytime"`
  36. Lastmodify string `json:"lastmodify"`
  37. }
  38. func (t *Roletab) TableName() string {
  39. return "roletab"
  40. }
  41. // 清除string字段的右侧空格
  42. func (t *Roletab) Clipped() {
  43. utils.TrimStruct(t, *t)
  44. }
  45. type MenuIdList struct {
  46. MenuId int `json:"menuId"`
  47. }
  48. func (t *Roletab) GetPage(pageSize int, pageIndex int) ([]Roletab, int, error) {
  49. var doc []Roletab
  50. e := db.Eloquent.Master()
  51. table := e.Select("*").Table("roletab").Where("1=1")
  52. if t.RoleId != 0 {
  53. table = table.And("role_id = ?", t.RoleId)
  54. }
  55. if t.Rolename != "" {
  56. rolename := "%"+t.Rolename+"%"
  57. table = table.And("rolename like ?", rolename)
  58. }
  59. if !utils.ValueIsEmpty(t.Status) {
  60. table = table.And("status = ?", t.Status)
  61. }
  62. if t.RoleKey != "" {
  63. table = table.And("role_key = ?", t.RoleKey)
  64. }
  65. // 数据权限控制
  66. //dataPermission := new(DataPermission)
  67. //dataPermission.UserId = t.DataScope
  68. //table = dataPermission.GetDataScope("roletab", table)
  69. if err := table.OrderBy("role_sort").Limit(pageSize, (pageIndex-1)*pageSize).Find(&doc); err != nil {
  70. return nil, 0, err
  71. }
  72. rolecount := new(Roletab)
  73. count, err := table.Count(rolecount)
  74. if err != nil {
  75. return nil, 0, err
  76. }
  77. for k,_:=range doc{
  78. doc[k].Clipped()
  79. }
  80. return doc, int(count), nil
  81. }
  82. func (t *Roletab) Get() (SysRole Roletab, err error) {
  83. e := db.Eloquent.Master()
  84. table := e.Table("roletab").Where("1=1")
  85. if t.RoleId != 0 {
  86. table = table.And("role_id = ?", t.RoleId)
  87. }
  88. if t.Rolename != "" {
  89. table = table.And("rolename = ?", t.Rolename)
  90. }
  91. if _,err = table.Get(&SysRole); err != nil {
  92. return
  93. }
  94. return
  95. }
  96. func (t *Roletab) GetList() (SysRole []Roletab, err error) {
  97. e := db.Eloquent.Master()
  98. table := e.Table("roletab")
  99. if t.RoleId != 0 {
  100. table = table.Where("role_id = ?", t.RoleId)
  101. }
  102. if t.Rolename != "" {
  103. table = table.Where("rolename = ?", t.Rolename)
  104. }
  105. if err = table.OrderBy("role_sort").Find(&SysRole); err != nil {
  106. return
  107. }
  108. for k,_:= range SysRole{
  109. SysRole[k].Clipped()
  110. }
  111. return
  112. }
  113. // 获取角色对应的菜单ids
  114. func (t *Roletab) GetRoleMeunId() ([]int, error) {
  115. menuIds := make([]int, 0)
  116. menuList := make([]MenuIdList, 0)
  117. e := db.Eloquent.Master()
  118. if err := e.Table("role_menu").Select("role_menu.menu_id").Join("LEFT", "menu", "menu.menu_id = role_menu.menu_id").Where("role_menu.role_id = ? ", t.RoleId).And(" role_menu.menu_id not in(select menu.parent_id from role_menu LEFT JOIN menu on menu.menu_id=role_menu.menu_id where role_menu.role_id =? )", t.RoleId).Find(&menuList); err != nil {
  119. return nil, err
  120. }
  121. for i := 0; i < len(menuList); i++ {
  122. menuIds = append(menuIds, menuList[i].MenuId)
  123. }
  124. return menuIds, nil
  125. }
  126. func (t *Roletab) Insert() (id int, err error) {
  127. e := db.Eloquent.Master()
  128. role := new(RoleB)
  129. role.Lastmodify = t.Lastmodify
  130. role.RoleKey = t.RoleKey
  131. role.Lastmodifytime = t.Lastmodifytime
  132. role.Rolename = t.Rolename
  133. role.Status = t.Status
  134. role.Remark = t.Remark
  135. role.Createtime = t.Createtime
  136. countrole := new(Roletab)
  137. affw, err := e.Table("roletab").Where("rolename=? or role_key = ?", t.Rolename, t.RoleKey).Count(countrole)
  138. if err != nil {
  139. return 0, err
  140. }
  141. if affw > 0 {
  142. return 0, errors.New("角色名称或者角色标识已经存在!")
  143. }
  144. _, err = e.Table("roletab").Insert(role)
  145. result := new(Roletab)
  146. result.Rolename = t.Rolename
  147. result.RoleKey = t.RoleKey
  148. ok, err := e.Table("roletab").Get(result)
  149. if !ok || err != nil {
  150. return 0, err
  151. }
  152. id = result.RoleId
  153. return
  154. }
  155. type DeptIdList struct {
  156. DeptId int `json:"DeptId"`
  157. }
  158. func (t *Roletab) GetRoleDeptId() ([]int, error) {
  159. deptIds := make([]int, 0)
  160. deptList := make([]DeptIdList, 0)
  161. e := db.Eloquent.Master()
  162. if err := e.Table("role_dept").Select("role_dept.dept_id").Join("LEFT", "dept", "dept.dept_id=role_dept.dept_id").Where("role_id = ? ", t.RoleId).And(" role_dept.dept_id not in(select dept.parent_id from role_dept LEFT JOIN dept on dept.dept_id=role_dept.dept_id where role_id =? )", t.RoleId).Find(&deptList); err != nil {
  163. return nil, err
  164. }
  165. for i := 0; i < len(deptList); i++ {
  166. deptIds = append(deptIds, deptList[i].DeptId)
  167. }
  168. return deptIds, nil
  169. }
  170. //修改
  171. func (t *Roletab) Update(id int) (update Roletab, err error) {
  172. t.Clipped()
  173. e := db.Eloquent.Master()
  174. if _,err = e.Table("roletab").ID(id).Get(&update); err != nil {
  175. return
  176. }
  177. update.Clipped()
  178. if t.Rolename != "" && t.Rolename != update.Rolename {
  179. return update, errors.New("角色名称不允许修改!")
  180. }
  181. if t.RoleKey != "" && t.RoleKey != update.RoleKey {
  182. return update, errors.New("角色标识不允许修改!")
  183. }
  184. //参数1:是要修改的数据
  185. uprole := new(RoleB)
  186. uprole.RoleKey =t.RoleKey
  187. uprole.Rolename = t.Rolename
  188. uprole.Lastmodifytime = t.Lastmodifytime
  189. uprole.Lastmodify=t.Lastmodify
  190. uprole.Createtime=t.Createtime
  191. uprole.Remark =t.Remark
  192. uprole.Status=t.Status
  193. uprole.RoleSort=t.RoleSort
  194. uprole.DataScope=t.DataScope
  195. //参数2:是修改的数据v
  196. if _, err = e.Table(t.TableName()).Where("role_id =?",id).Update(uprole); err != nil {
  197. return
  198. }
  199. return
  200. }
  201. //批量删除
  202. func (t *Roletab) BatchDelete(id []int) (Result bool, err error) {
  203. e := db.Eloquent.Master()
  204. roles_str := utils.IDsToStringIn(id)
  205. if _, err = e.Table("roletab").Where("role_id in ("+roles_str+")").Delete(&Roletab{}); err != nil {
  206. return
  207. }
  208. Result = true
  209. return
  210. }
  211. //批量查询
  212. func (t *Roletab) GetRoles(roleIds []int) ([]string, error) {
  213. e := db.Eloquent.Master()
  214. role := make([]Roletab,0)
  215. roleIds_str := utils.IDsToStringIn(roleIds)
  216. if err := e.Table("roletab").Where("role_id in ("+roleIds_str+")").Find(&role); err != nil {
  217. return nil,err
  218. }
  219. var rolekeys []string
  220. for _,v:=range role{
  221. rolekeys = append(rolekeys,v.RoleKey)
  222. }
  223. return rolekeys,nil
  224. }