Roles.php 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. <?php
  2. namespace app\common\model;
  3. use app\hander\HelpHander;
  4. use think\Db;
  5. use think\Model;
  6. class Roles extends Model
  7. {
  8. public function add(){
  9. $data = [
  10. 'id' => input('id/d',0),
  11. 'name' => input('name','','trim'),
  12. 'code' => input('code','','trim'),
  13. 'content' => input('content','','trim'),
  14. 'org_id' => input('orgId/d',0),
  15. 'type' => 0,
  16. 'enable' => 1
  17. ];
  18. $result = validate('Roles')->check($data,[],'');
  19. if(true !== $result){
  20. HelpHander::error(validate('Roles')->getError());
  21. }
  22. $id = $data['id'];
  23. unset($data['id']);
  24. if($id > 0){
  25. $ret = $this->allowField(true)->save($data,['id'=>$id]);
  26. }else{
  27. $ret = $this->allowField(true)->save($data);
  28. }
  29. if(!$ret){
  30. HelpHander::error('操作失败');
  31. }
  32. return true;
  33. }
  34. public function info($id){
  35. $info = $this->where('id',$id)->where('del',0)->find();
  36. if(!$info){
  37. HelpHander::error('数据不存在');
  38. }
  39. return $info->toArray();
  40. }
  41. // 创建组织初始化角色
  42. public function addInitRoles($orgId){
  43. $data = [
  44. 'org_id' => $orgId,
  45. 'type' => 3,
  46. 'name' => '初始化角色',
  47. 'content' => '默认角色',
  48. 'code' => 'mr'.$orgId,
  49. 'del' => 0,
  50. 'enable' => 1
  51. ];
  52. $ret = $this->allowField(true)->save($data);
  53. return $ret?$this->id:0;
  54. }
  55. public function lists($page,$size,$name,$code){
  56. if($name != ''){
  57. $map[] = ['name','like','%'.$name.'%'];
  58. }
  59. if($code != ''){
  60. $map[] = ['code','like','%'.$code.'%'];
  61. }
  62. $map[] = ['del','=',0];
  63. $map[] = ['enable','=',1];
  64. $map[] = ['type','=',0];
  65. $lists = $this
  66. ->where($map)
  67. ->page($page,$size)
  68. ->order('id desc')
  69. ->select();
  70. $total = $this->where($map)->count();
  71. $data = [
  72. 'total' => $total,
  73. 'list' => $lists?$lists->toArray():[]
  74. ];
  75. return $data;
  76. }
  77. public function del($id){
  78. $ret = $this->where('id',$id)->setField('del',1);
  79. if(!$ret){
  80. HelpHander::error('删除失败');
  81. }
  82. return true;
  83. }
  84. public function queryCommonRoles(){
  85. $map[] = ['del','=',0];
  86. $map[] = ['enable','=',1];
  87. $map[] = ['org_id','=',0];
  88. $lists = $this
  89. ->where($map)
  90. ->order('id asc')
  91. ->select();
  92. return $lists?$lists->toArray():[];
  93. }
  94. public function queryUserRoles($page,$size,$name='',$code='',$phone='',$depId=0,$jobId=0,$orgId=0){
  95. $map[] = ['u.del','=',0];
  96. if($name != ''){
  97. $map[] = ['ui.name','like','%'.$name.'%'];
  98. }
  99. if($code != ''){
  100. $map[] = ['u.code','like','%'.$code.'%'];
  101. }
  102. if($phone != ''){
  103. $map[] = ['u.phone','like','%'.$phone.'%'];
  104. }
  105. if($jobId > 0){
  106. $map[] = ['uj.job_id','=',$jobId];
  107. }
  108. if($depId > 0){
  109. $jobIds = model('Dep')->getJobByDep($depId);
  110. if($jobIds){
  111. $map[] = ['uj.job_id','in',$jobIds];
  112. }else{
  113. $map[] = ['uj.job_id','=',-1];
  114. }
  115. }
  116. // 去除机构管理员
  117. $orgusers = Db::name('user_roles')
  118. ->alias('ur')
  119. ->join('roles r','r.id = ur.roles_id')
  120. ->where('r.type',2)
  121. ->column('ur.user_id');
  122. if($orgusers){
  123. $map[] = ['u.id','not in',$orgusers];
  124. }
  125. $map[] = ['r.type','=',3];
  126. $map[] = ['u.del','=',0];
  127. $lists = Db::name('user')
  128. ->alias('u')
  129. ->join('user_info ui','ui.user_id = u.id')
  130. ->join('user_job uj','uj.user_id = u.id','left')
  131. ->join('user_roles ur','ur.user_id = u.id')
  132. ->join('roles r','ur.roles_id = r.id')
  133. ->where($map)
  134. ->page($page,$size)
  135. ->field('u.id,ui.name,u.code,u.phone,u.enable')
  136. ->order('u.id desc')
  137. ->select();
  138. $lists = $lists?$lists:[];
  139. foreach ($lists as $k=>$v){
  140. $lists[$k]['rolesList'] = $this->getUserRoles($v['id'],$orgId);
  141. }
  142. $total = Db::name('user')
  143. ->alias('u')
  144. ->join('user_info ui','ui.user_id = u.id')
  145. ->join('user_job uj','uj.user_id = u.id','left')
  146. ->join('user_roles ur','ur.user_id = u.id')
  147. ->join('roles r','ur.roles_id = r.id')
  148. ->where('u.del',0)
  149. ->group('u.id')
  150. ->where($map)
  151. ->count();
  152. $data = [
  153. 'total' => $total,
  154. 'list' => $lists
  155. ];
  156. return $data;
  157. }
  158. // 获取用户当前组织下普通用户组
  159. public function getUserRoles($userId,$orgId){
  160. $list = Db::name('user_roles')
  161. ->alias('ur')
  162. ->join('roles r','r.id = ur.roles_id')
  163. ->where('r.del',0)
  164. ->where('r.type',0)
  165. ->where('r.org_id',$orgId)
  166. ->where('ur.user_id',$userId)
  167. ->field('r.*')
  168. ->select();
  169. return $list?$list:[];
  170. }
  171. public function saveUserRoles($uId,$orgId){
  172. // 检查是否已加入组织
  173. $ret = Db::name('user_roles')
  174. ->alias('ur')
  175. ->join('roles r','r.id = ur.roles_id')
  176. ->where('r.type',3)
  177. ->where('ur.user_id',$uId)
  178. ->where('r.org_id',$orgId)
  179. ->find();
  180. if($ret){
  181. HelpHander::error('已经加入本组织');
  182. }
  183. // 获取当前组织的默认角色
  184. $rolesId = Db::name('roles')
  185. ->where('type',3)
  186. ->where('org_id',$orgId)
  187. ->value('id');
  188. if(!$rolesId){
  189. HelpHander::error('参数错误');
  190. }
  191. $ret = Db::name('user_roles')->insertGetId(['user_id'=>$uId,'roles_id'=>$rolesId]);
  192. if(!$ret){
  193. HelpHander::error('操作失败');
  194. }
  195. return true;
  196. }
  197. // 获取机构管理员列表
  198. public function queryUserByRoles($page,$size,$account,$code,$oId){
  199. if($account != ''){
  200. $map[] = ['u.account','like','%'.$account.'%'];
  201. }
  202. if($code != ''){
  203. $map[] = ['u.code','like','%'.$code.'%'];
  204. }
  205. if($oId > 0){
  206. $map[] = ['r.org_id','=',$oId];
  207. }
  208. $map[] = ['u.del','=',0];
  209. $map[] = ['u.enable','=',1];
  210. $map[] = ['r.type','=',2];
  211. $lists = Db::name('user')
  212. ->alias('u')
  213. ->join('user_roles ur','ur.user_id = u.id')
  214. ->join('roles r','r.id = ur.roles_id')
  215. ->where($map)
  216. ->field('u.account,u.code,u.enable,r.org_id,r.name as roles_name,ur.user_id')
  217. ->page($page,$size)
  218. ->order('u.id desc')
  219. ->select();
  220. $lists = $lists?$lists:[];
  221. foreach ($lists as $k=>$v){
  222. $lists[$k]['name'] = Db::name('user_info')->where('user_id',$v['user_id'])->value('name');
  223. $lists[$k]['org_name'] = Db::name('org')->where('id',$v['org_id'])->value('name');
  224. }
  225. $total =Db::name('user')
  226. ->alias('u')
  227. ->join('user_roles ur','ur.user_id = u.id')
  228. ->join('roles r','r.id = ur.roles_id')
  229. ->where($map)->count();
  230. $data = [
  231. 'total' => $total,
  232. 'list' => $lists
  233. ];
  234. return $data;
  235. }
  236. public function saveRules(){
  237. $data = [
  238. 'id' => input('id/d',0),
  239. 'rules' => input('rules','','trim'),
  240. 'appicons' => input('appicons','','trim')
  241. ];
  242. if($data['id'] <= 0){
  243. HelpHander::error('参数错误');
  244. }
  245. $id = $data['id'];
  246. unset($data['id']);
  247. $ret = $this->allowField(true)->save($data,['id'=>$id]);
  248. if(!$ret){
  249. HelpHander::error('操作失败');
  250. }
  251. return true;
  252. }
  253. }