Role.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376
  1. <?php
  2. namespace app\admin\controller;
  3. use app\BaseController;
  4. use think\App;
  5. use think\facade\Db;
  6. use app\admin\model\ActionLog;
  7. //角色
  8. class Role extends BaseController
  9. {
  10. public function __construct(App $app)
  11. {
  12. parent::__construct($app);
  13. $post =$this->request->post();
  14. $token = isset($post['token']) ? trim($post['token']) : "";
  15. if($token==""){
  16. return error_show(101,'token不能为空');
  17. }
  18. $effetc = VerifyTokens($token);
  19. if(!empty($effetc) && $effetc['code']!=0){
  20. return error_show($effetc['code'],$effetc['message']);
  21. }
  22. }
  23. /**
  24. * @param status
  25. * @param role_name
  26. * @param level
  27. * @param page
  28. * @param size
  29. * @return \think\response\Json
  30. * @throws \think\exception\DbException
  31. */
  32. public function RoleList(){
  33. $post =$this->request->post();
  34. $condition=[];
  35. isset($post['status'])&&$post['status']!=="" ? $condition[]=['a.status',"=",$post['status']]:"";
  36. isset($post['role_name'])&&$post['role_name']!=="" ? $condition[]=['a.role_name',"like","%".$post['role_name']."%"]:"";
  37. isset($post['item'])&&$post['item']!=="" ? $condition[]=["a.item","=",$post['item']]:"";
  38. isset($post['createrId'])&&$post['createrId']!=="" ? $condition[]=["a.createrId","=",$post['createrId']]:"";
  39. $roleList = Db::name("role");
  40. $count =$roleList->alias("a")->where($condition)->count();
  41. $page = isset($post['page'])&& $post['page']!=''? intval($post['page']) : 1;
  42. $size = isset($post['size'])&& $post['size']!=''? intval($post['size']) : 10;
  43. $page >=ceil($count/$size) ? $page=ceil($count/$size) :"";
  44. $list=$roleList->alias("a")->leftJoin("role_action t","a.id=t.role_id")->leftJoin("company_item i","a
  45. .item=i.id")->field("a.*,i.name as item_name,t.action_conllect as action,t.action_data")->where($condition)
  46. ->page($page,$size)->select();
  47. return app_show(0,"获取成功",["list"=>$list,"count"=>$count]);
  48. }
  49. /**
  50. * @param role_name
  51. * @param level
  52. * @param action
  53. * @param action_data
  54. * @param role_name
  55. * @return \think\response\Json
  56. * @throws \think\exception\DbException
  57. */
  58. public function RoleAdd(){
  59. $post =$this->request->post();
  60. $token = isset($post['token']) ? trim($post['token']) : "";
  61. if($token==""){
  62. return error_show(101,'token不能为空');
  63. }
  64. $effetc = VerifyTokens($token);
  65. if(!empty($effetc) && $effetc['code']!=0){
  66. return error_show($effetc['code'],$effetc['message']);
  67. }
  68. $creater= GetUserInfo($post['token']);
  69. if(isset($creater['code'])&&$creater['code']==0){
  70. $uid= isset($userinfo['data']['id']) ? $userinfo['data']['id']: "0";
  71. $username = isset($userinfo['data']['nickname']) ? $userinfo['data']['nickname']: "";
  72. }else{
  73. $username = '';
  74. $uid= 0;
  75. }
  76. $rolename = isset($post['role_name']) ? trim($post['role_name']) : "";
  77. if($rolename==""){
  78. return error_show(1002,"角色名称不能为空");
  79. }
  80. $isT=Db::name("role")->where(['role_name'=>$rolename])->find();
  81. if($isT){
  82. return error_show(1002,"角色名称已存在");
  83. }
  84. $role_code= isset($post['role_code'])&&$post['role_code']!=''?trim($post['role_code']) :"";
  85. // if($role_code==""){
  86. // return error_show(1002,"参数role_code 不能为空");
  87. // }
  88. // $isCode=Db::name("role")->where(['role_code'=>$role_code])->find();
  89. // if($isCode){
  90. // return error_show(1002,"角色编号已存在");
  91. // }
  92. // $item = isset($post['item']) ? trim($post['item']) : "";
  93. // if($item==""){
  94. // return error_show(1003,"参数item 不能为空");
  95. // }
  96. // $iteminfo = Db::name('company_item')->where('id',"=",$item)->find();
  97. // if(empty($iteminfo) || $iteminfo['is_del']==1){
  98. // return error_show(1003,"该部门不存在");
  99. // }
  100. $work_company = isset($post['work_company']) && $post['work_company'] !==""? intval($post['work_company']):"";
  101. // if($work_company==""){
  102. // return error_show(1002,"参数work_company不能为空");
  103. // }
  104. $level = isset($post['level']) ? intval($post['level']) : 0;
  105. $remark = isset($post['remark']) ? trim($post['remark']) : '';
  106. // if($level==""){
  107. // return error_show(1003,"参数不能为空");
  108. // }
  109. $action = isset($post['action'])&&is_array($post['action']) ? implode(",",$post['action']) : "";
  110. if($action==""){
  111. return error_show(1004,"功能权限不能为空");
  112. }
  113. $data = isset($post['action_data']) &&is_array($post['action_data'])?implode(",",$post['action_data']): "";
  114. $private_data = isset($post['private_data']) &&is_array($post['private_data'])?implode(",",$post['private_data']): "";
  115. $private_field = isset($post['private_field']) &&is_array($post['private_field'])?implode(",", $post['private_field']): "";
  116. // if($data==""){
  117. // return error_show(1004,"字段权限不能为空");
  118. // }
  119. Db::startTrans();
  120. try {
  121. $list = [
  122. "role_name"=>$rolename,
  123. "role_code"=>$role_code,
  124. "work_company"=>$work_company,
  125. "status"=>1,
  126. 'creater'=>$username,
  127. 'createrId'=>$uid,
  128. "addtime"=>date("Y-m-d H:i:s"),
  129. "updatetime"=>date("Y-m-d H:i:s"),
  130. "level"=>$level,
  131. "desc"=>$remark,
  132. "item"=>"",
  133. ];
  134. $role= Db::name("role")->insert($list,true);
  135. $st = ["order_code"=>$role_code,"status"=>1,"action_remark"=>'',"action_type"=>"create"];
  136. ActionLog::logAdd($token,$st,"role",1,$st);
  137. if($role>0){
  138. $role_action = [
  139. "role_id"=>$role,
  140. "action_conllect"=>$action,
  141. "action_data"=>$data,
  142. "private_data"=>$private_data,
  143. "private_field"=>$private_field,
  144. "status"=>1,
  145. "addtime"=>date("Y-m-d H:i:s"),
  146. "updatetime"=>date("Y-m-d H:i:s"),
  147. ];
  148. $roleaction= Db::name("role_action")->insert($role_action,true);
  149. if($roleaction){
  150. $sty = ["order_code"=>$role,"status"=>1,"action_remark"=>'',"action_type"=>"create"];
  151. ActionLog::logAdd($token,$sty,"role_action",1,$sty);
  152. Db::commit();
  153. return app_show(0,"新建成功");
  154. }else{
  155. Db::rollback();
  156. return error_show(1005,"权限录入失败");
  157. }
  158. }else{
  159. Db::rollback();
  160. return error_show(1006,"角色新建失败");
  161. }
  162. }catch (\Exception $e){
  163. Db::rollback();
  164. return error_show(1008,$e->getMessage());
  165. }
  166. }
  167. /**
  168. * @param roleid
  169. * @return \think\response\Json
  170. * @throws \think\exception\DbException
  171. */
  172. public function RoleInfo(){
  173. $post =$this->request->post();
  174. $roleid= isset($post['roleid']) ? trim($post['roleid']) : "";
  175. if($roleid==""){
  176. return error_show(1001,'roleid不能为空');
  177. }
  178. $info = $list=Db::name("role")->alias("a")->leftJoin("role_action t","a.id=t.role_id")->field("a.*,t.action_conllect,t.action_data,t.private_data,t.private_field")->where("a.id","=",$roleid)->find();
  179. if(!$info){
  180. return error_show(1002,"未找到对应的数据");
  181. }
  182. $info['item_name'] ='';
  183. if($info['item']!=''){
  184. $iteminfo = Db::name('company_item')->where('id',"=",$info['item'])->find();
  185. $info['item_name'] = isset($iteminfo['name'])? $iteminfo['name']:"";
  186. }
  187. $info['action'] =explode(",",$info['action_conllect']);
  188. $info['action_data'] =$info['action_data']!=""?explode(",",$info['action_data']):"";
  189. $info['private_data'] =$info['private_data']!=""?explode(",",$info['private_data']) :"";
  190. $info['private_field'] =$info['private_field']!=""?explode(",",$info['private_field']) :"";
  191. return app_show(0,"获取成功",$info);
  192. }
  193. /**
  194. * @param role_name
  195. * @param level
  196. * @param action
  197. * @param action_data
  198. * @param roleid
  199. * @return \think\response\Json
  200. * @throws \think\exception\DbException
  201. */
  202. public function RoleSave(){
  203. $post =$this->request->post();
  204. $token = isset($post['token']) ? trim($post['token']) : "";
  205. if($token==""){
  206. return error_show(101,'token不能为空');
  207. }
  208. $effetc = VerifyTokens($token);
  209. if(!empty($effetc) && $effetc['code']!=0){
  210. return error_show($effetc['code'],$effetc['message']);
  211. }
  212. $roleid= isset($post['roleid']) ? intval($post['roleid']) : "";
  213. if($roleid==""){
  214. return error_show(1001,'roleid不能为空');
  215. }
  216. $info =Db::name("role")->where("id","=",$roleid)->find();
  217. if(!$info){
  218. return error_show(1002,"未找到对应的数据");
  219. }
  220. $rolename = isset($post['role_name']) ? trim($post['role_name']) : "";
  221. if($rolename==""){
  222. return error_show(1002,"角色名称不能为空");
  223. }
  224. $vers= Db::name("role")->where("id",'<>',$roleid)->where("role_name","=",$rolename)->find();
  225. if($vers){
  226. return error_show(1002,"角色名已存在");
  227. }
  228. $role_code= isset($post['role_code'])&&$post['role_code']!=''?trim($post['role_code']) :"";
  229. // if($role_code==""){
  230. // return error_show(1002,"参数role_code 不能为空");
  231. // }
  232. // $isCode=Db::name("role")->where(['role_code'=>$role_code])->find();
  233. // if($isCode){
  234. // return error_show(1002,"角色编号已存在");
  235. // }
  236. // $item = isset($post['item']) ? trim($post['item']) : "";
  237. // if($item==""){
  238. // return error_show(1003,"参数item 不能为空");
  239. // }
  240. // $iteminfo = Db::name('company_item')->where('id',"=",$item)->find();
  241. // if($iteminfo['is_del']==1){
  242. // return error_show(1003,"该部门不存在");
  243. // }
  244. $level = isset($post['level']) ? intval($post['level']) : 0;
  245. $remark = isset($post['remark']) ? trim($post['remark']) : '';
  246. $action = isset($post['action'])&&is_array($post['action']) ? implode(",",$post['action']) : "";
  247. if($action==""){
  248. return error_show(1004,"功能权限不能为空");
  249. }
  250. $data = isset($post['action_data']) &&is_array($post['action_data'])?implode(",",$post['action_data']): "";
  251. $private_data = isset($post['private_data']) &&is_array($post['private_data'])?implode(",",$post['private_data']): "";
  252. $private_field = isset($post['private_field']) &&is_array($post['private_field'])?implode(",",$post['private_field']): "";
  253. // if($data==""){
  254. // return error_show(1004,"字段权限不能为空");
  255. // }
  256. Db::startTrans();
  257. try {
  258. $list = [
  259. "role_name"=>$rolename,
  260. "level"=>$level,
  261. 'desc'=>$remark,
  262. 'role_code'=>$role_code,
  263. 'item'=>"",
  264. "updatetime"=>date("Y-m-d H:i:s"),
  265. 'id'=>$roleid
  266. ];
  267. $role= Db::name("role")->save($list);
  268. $stm = ["order_code"=>"YS","status"=>0,"action_remark"=>'',"action_type"=>"edit"];
  269. ActionLog::logAdd($token,$stm,"resign_info",0,$stm);
  270. if($role){
  271. $role_action = [
  272. "role_id"=>$roleid,
  273. "action_conllect"=>$action,
  274. "action_data"=>$data,
  275. "private_data"=>$private_data,
  276. "private_field"=>$private_field,
  277. "updatetime"=>date("Y-m-d H:i:s")
  278. ];
  279. $roleaction= Db::name("role_action")->where("role_id","=",$roleid)->update($role_action);
  280. if($roleaction){
  281. $stl = ["order_code"=>"YS","status"=>0,"action_remark"=>'',"action_type"=>"edit"];
  282. ActionLog::logAdd($token,$stl,"role_action",0,$stl);
  283. Db::commit();
  284. return app_show(0,"更新成功");
  285. }else{
  286. Db::rollback();
  287. return app_show(1005,"权限更新失败");
  288. }
  289. }else{
  290. Db::rollback();
  291. return app_show(1006,"角色更新失败");
  292. }
  293. }catch (\Exception $e){
  294. Db::rollback();
  295. return error_show(1008,$e->getMessage());
  296. }
  297. }
  298. /**
  299. * @return \think\response\Json
  300. * @throws \think\exception\DbException
  301. */
  302. public function RoleStatus(){
  303. $post =$this->request->post();
  304. $token = isset($post['token']) ? trim($post['token']) : "";
  305. if($token==""){
  306. return error_show(101,'token不能为空');
  307. }
  308. $effetc = VerifyTokens($token);
  309. if(!empty($effetc) && $effetc['code']!=0){
  310. return error_show($effetc['code'],$effetc['message']);
  311. }
  312. $roleid= isset($post['roleid']) ? intval($post['roleid']) : "";
  313. if($roleid==""){
  314. return error_show(1001,'roleid不能为空');
  315. }
  316. $status = isset($post['status']) ? intval($post['status']) : "";
  317. if($status===""){
  318. return error_show(1001,'status不能为空');
  319. }
  320. if(!in_array($status,[0,1])){
  321. return error_show(1001,'status参数非法');
  322. }
  323. Db::startTrans();
  324. try {
  325. // $re = PasRoleList::update(['status'=>$status,'update'=>date("Y-m-d H:i:s")],['id'=>$roleid]);
  326. $dat=[
  327. 'status'=>$status,'updatetime'=>date("Y-m-d H:i:s"), 'id'=>$roleid
  328. ];
  329. $re = Db::name("role")->save($dat);
  330. if($re){
  331. $dat2=[
  332. 'status'=>$status,'updatetime'=>date("Y-m-d H:i:s")
  333. ];
  334. $action = Db::name("role_action")->where("role_id","=",$roleid)->update($dat2);
  335. if($action){
  336. $sti = ["order_code"=>$roleid,"status"=>$status,"action_remark"=>'',"action_type"=>"edit"];
  337. ActionLog::logAdd($token,$sti,"role_action",$status,$sti);
  338. Db::commit();
  339. return app_show(0,"状态更新成功");
  340. }
  341. }
  342. Db::rollback();
  343. return error_show(1003,"状态更新失败");
  344. }catch (\Exception $e){
  345. Db::rollback();
  346. return error_show(1002,$e->getMessage());
  347. }
  348. }
  349. /**
  350. * @return \think\response\Json
  351. * @throws \think\exception\DbException
  352. */
  353. public function RoleAll(){
  354. $post =$this->request->post();
  355. $list =Db::name("role")->select();
  356. return app_show(0,"获取成功",$list);
  357. }
  358. }