心理咨询网
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. <?php
  2. /**
  3. * @copyright (C)2016-2099 Hnaoyun Inc.
  4. * @author XingMeng
  5. * @email hnxsh@foxmail.com
  6. * @date 2017年04月07日
  7. * 角色管理模型类
  8. */
  9. namespace app\admin\model\system;
  10. use core\basic\Model;
  11. class RoleModel extends Model
  12. {
  13. // 获取角色列表
  14. public function getList()
  15. {
  16. return parent::table('ay_role')->order('rcode,id DESC')
  17. ->page()
  18. ->select();
  19. }
  20. // 获取角色选择列表
  21. public function getSelect()
  22. {
  23. return parent::table('ay_role')->field('rcode,name')
  24. ->order('rcode,id')
  25. ->select();
  26. }
  27. // 检查角色
  28. public function checkRole($where)
  29. {
  30. return parent::table('ay_role')->field('id')
  31. ->where($where)
  32. ->find();
  33. }
  34. // 获取角色详情
  35. public function getRole($rcode)
  36. {
  37. $result = parent::table('ay_role')->where("rcode='$rcode'")->find();
  38. if ($result) {
  39. $result->acodes = $this->getRoleArea($rcode);
  40. $result->levels = $this->getRoleLevel($rcode);
  41. }
  42. return $result;
  43. }
  44. // 获取最后一个code
  45. public function getLastCode()
  46. {
  47. return parent::table('ay_role')->order('id DESC')->value('rcode');
  48. }
  49. // 添加角色
  50. public function addRole(array $data, array $acodes, array $levels)
  51. {
  52. $result = parent::table('ay_role')->autoTime()->insert($data);
  53. if ($result) {
  54. if ($acodes) {
  55. $this->delRoleArea($data['rcode']);
  56. $this->addRoleArea($data['rcode'], $acodes);
  57. }
  58. if ($levels) {
  59. $this->delRoleLevel($data['rcode']);
  60. $this->addRoleLevel($data['rcode'], $levels);
  61. }
  62. }
  63. return $result;
  64. }
  65. // 删除角色
  66. public function delRole($rcode)
  67. {
  68. $result = parent::table('ay_role')->where("rcode='$rcode'")->delete();
  69. if ($result) {
  70. $this->delRoleArea($rcode);
  71. $this->delRoleLevel($rcode);
  72. $this->delUserRole($rcode);
  73. }
  74. return $result;
  75. }
  76. // 修改角色资料
  77. public function modRole($rcode, $data, array $acodes = null, array $levels = null)
  78. {
  79. $result = parent::table('ay_role')->where("rcode='$rcode'")
  80. ->autoTime()
  81. ->update($data);
  82. if ($result) {
  83. if (is_array($acodes)) {
  84. $this->delRoleArea($rcode);
  85. }
  86. if (is_array($levels)) {
  87. $this->delRoleLevel($rcode);
  88. }
  89. if (array_key_exists('rcode', $data)) {
  90. if ($rcode != $data['rcode']) {
  91. $this->modUserRole($rcode, "rcode='" . $data['rcode'] . "'");
  92. $rcode = $data['rcode'];
  93. }
  94. }
  95. if ($acodes) {
  96. $this->addRoleArea($rcode, $acodes);
  97. }
  98. if ($levels) {
  99. $this->addRoleLevel($rcode, $levels);
  100. }
  101. }
  102. return $result;
  103. }
  104. // 获取角色的区域数据
  105. private function getRoleArea($rcode)
  106. {
  107. return parent::table('ay_role_area')->where("rcode='$rcode'")->column('acode');
  108. }
  109. // 插入角色区域关联数据
  110. private function addRoleArea($rcode, array $acodes)
  111. {
  112. return parent::table('ay_role_area')->field('rcode,acode')
  113. ->relation($rcode, $acodes)
  114. ->insert();
  115. }
  116. // 删除角色区域关联数据
  117. private function delRoleArea($rcode)
  118. {
  119. return parent::table('ay_role_area')->where("rcode='$rcode'")->delete();
  120. }
  121. // 获取角色的权限数据
  122. private function getRoleLevel($rcode)
  123. {
  124. return parent::table('ay_role_level')->where("rcode='$rcode'")->column('level');
  125. }
  126. // 插入角色权限关联数据
  127. private function addRoleLevel($rcode, array $levels)
  128. {
  129. return parent::table('ay_role_level')->field('rcode,level')
  130. ->relation($rcode, $levels)
  131. ->insert();
  132. }
  133. // 删除角色权限关联数据
  134. private function delRoleLevel($rcode)
  135. {
  136. return parent::table('ay_role_level')->where("rcode='$rcode'")->delete();
  137. }
  138. // 删除角色用户关联数据
  139. private function delUserRole($rcode)
  140. {
  141. return parent::table('ay_user_role')->where("rcode='$rcode'")->delete();
  142. }
  143. // 修改角色用户关联数据
  144. private function modUserRole($rcode, $data)
  145. {
  146. return parent::table('ay_user_role')->where("rcode='$rcode'")->update($data);
  147. }
  148. }