User.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476
  1. <?php
  2. namespace app\admin\controller;
  3. use think\Db;
  4. use think\Exception;
  5. class User extends Auth
  6. {
  7. public function index(){
  8. if(request()->isAjax()){
  9. //分页参数
  10. $length = input('rows',10,'intval'); //每页条数
  11. $page = input('page',1,'intval'); //第几页
  12. $start = ($page - 1) * $length; //分页开始位置
  13. //排序
  14. $sortRow = input('sidx','u.id','trim'); //排序列
  15. $sort = input('sord','desc','trim'); //排序方式
  16. $order = $sortRow.' '.$sort;
  17. $title = input('title','','trim');
  18. if($title){
  19. $map[] = ['u.account|u.real_name|u.mobile','like','%'.$title.'%'];
  20. }
  21. $enable = input('enable','','trim');
  22. if($enable != ''){
  23. $map[] = ['u.enable','=',$enable];
  24. }
  25. $depId = input('depId','','trim');
  26. if($depId != ''){
  27. $map[] = ['ud.dep_id','=',$depId];
  28. }
  29. $rolesId = input('rolesId','','trim');
  30. if($rolesId != ''){
  31. $map[] = ['ur.roles_id','=',$rolesId];
  32. }
  33. $map[] = ['u.del','=',0];
  34. $map[] = ['u.type','=',0];
  35. $map[] = ['uo.org_id','=',$this->orgId];
  36. $map= empty($map) ? true: $map;
  37. //数据查询
  38. $lists = db('user')
  39. ->alias('u')
  40. ->join('user_dep ud','u.id=ud.user_id')
  41. ->join('user_roles ur','u.id=ur.user_id')
  42. ->join('user_org uo','u.id=uo.user_id')
  43. ->field('u.*,ud.dep_id,ur.roles_id,uo.org_id')
  44. ->where($map)
  45. ->limit($start,$length)
  46. ->order(['u.sort'=>'asc','u.id'=>'desc'])
  47. ->select();
  48. foreach ($lists as $k=>$v){
  49. $lists[$k]['dep_name'] = Db::name('dep')->where('id',$v['dep_id'])->value('title');
  50. $lists[$k]['roles_name'] = Db::name('roles')->where('id',$v['roles_id'])->value('name');
  51. }
  52. //数据返回
  53. $totalCount = db('user')
  54. ->alias('u')
  55. ->join('user_dep ud','ud.user_id = u.id')
  56. ->join('user_roles ur','ur.user_id = u.id')
  57. ->join('user_org uo','uo.user_id = u.id')
  58. ->where($map)->count();
  59. $totalPage = ceil($totalCount/$length);
  60. $result['page'] = $page;
  61. $result['total'] = $totalPage;
  62. $result['records'] = $totalCount;
  63. $result['rows'] = $lists;
  64. return json($result);
  65. }else{
  66. $deps = model('Dep')->getList();
  67. $this->assign('deps',$deps);
  68. $roles = model('Roles')->getList();
  69. $this->assign('roles',$roles);
  70. return $this->fetch();
  71. }
  72. }
  73. public function wxlist(){
  74. if(request()->isAjax()){
  75. //分页参数
  76. $length = input('rows',10,'intval'); //每页条数
  77. $page = input('page',1,'intval'); //第几页
  78. $start = ($page - 1) * $length; //分页开始位置
  79. //排序
  80. $sortRow = input('sidx','u.id','trim'); //排序列
  81. $sort = input('sord','desc','trim'); //排序方式
  82. $order = $sortRow.' '.$sort;
  83. $title = input('title','','trim');
  84. if($title){
  85. $map[] = ['u.account|u.real_name|u.mobile','like','%'.$title.'%'];
  86. }
  87. $enable = input('enable','','trim');
  88. if($enable != ''){
  89. $map[] = ['u.enable','=',$enable];
  90. }
  91. $depId = input('depId','','trim');
  92. if($depId != ''){
  93. $map[] = ['ud.dep_id','=',$depId];
  94. }
  95. $rolesId = input('rolesId','','trim');
  96. if($rolesId != ''){
  97. $map[] = ['ur.roles_id','=',$rolesId];
  98. }
  99. $map[] = ['u.del','=',0];
  100. $map[] = ['u.type','=',2];
  101. $map[] = ['uo.org_id','=',$this->orgId];
  102. $map= empty($map) ? true: $map;
  103. //数据查询
  104. $lists = db('user')
  105. ->alias('u')
  106. ->join('user_dep ud','u.id=ud.user_id')
  107. ->join('user_roles ur','u.id=ur.user_id','left')
  108. ->join('user_org uo','u.id=uo.user_id')
  109. ->field('u.*,ud.dep_id,ur.roles_id,uo.org_id')
  110. ->where($map)
  111. ->limit($start,$length)
  112. ->order(['u.sort'=>'asc','u.id'=>'desc'])
  113. ->select();
  114. foreach ($lists as $k=>$v){
  115. $lists[$k]['dep_name'] = Db::name('dep')->where('id',$v['dep_id'])->value('title');
  116. $lists[$k]['roles_name'] = Db::name('roles')->where('id',$v['roles_id'])->value('name');
  117. }
  118. //数据返回
  119. $totalCount = db('user')
  120. ->alias('u')
  121. ->join('user_dep ud','ud.user_id = u.id')
  122. ->join('user_roles ur','ur.user_id = u.id')
  123. ->join('user_org uo','uo.user_id = u.id')
  124. ->where($map)->count();
  125. $totalPage = ceil($totalCount/$length);
  126. $result['page'] = $page;
  127. $result['total'] = $totalPage;
  128. $result['records'] = $totalCount;
  129. $result['rows'] = $lists;
  130. return json($result);
  131. }else{
  132. $deps = model('Dep')->getList();
  133. $this->assign('deps',$deps);
  134. $roles = model('Roles')->getList();
  135. $this->assign('roles',$roles);
  136. return $this->fetch();
  137. }
  138. }
  139. /**
  140. * 新增/编辑
  141. */
  142. public function add($id=0){
  143. if(request()->isPost()){
  144. $res = model('User')->addUser();
  145. if($res){
  146. $this->success('操作成功',url('index'));
  147. }else{
  148. $this->error(model('User')->getError());
  149. }
  150. }else{
  151. if($id){
  152. $info = db('user')
  153. ->alias('u')
  154. ->join('user_dep ud','ud.user_id = u.id')
  155. ->join('user_roles ur','ur.user_id = u.id','left')
  156. ->field('u.*,ud.dep_id,ur.roles_id')
  157. ->where('u.id',$id)->find();
  158. $this->assign('info',$info);
  159. }
  160. $deps = model('Dep')->getList();
  161. $this->assign('deps',$deps);
  162. $address = (new \app\common\model\Address())->getListByType(2);
  163. $roles = model('Roles')->getList();
  164. $this->assign('roles',$roles);
  165. $this->assign('address',$address);
  166. return $this->fetch();
  167. }
  168. }
  169. /**
  170. * 新增/编辑
  171. */
  172. public function wxadd($id=0){
  173. if(request()->isPost()){
  174. $res = model('User')->wxaddUser();
  175. if($res){
  176. $this->success('操作成功',url('index'));
  177. }else{
  178. $this->error(model('User')->getError());
  179. }
  180. }else{
  181. if($id){
  182. $info = db('user')
  183. ->alias('u')
  184. ->join('user_dep ud','ud.user_id = u.id')
  185. ->join('user_roles ur','ur.user_id = u.id','left')
  186. ->field('u.*,ud.dep_id,ur.roles_id')
  187. ->where('u.id',$id)->find();
  188. $this->assign('info',$info);
  189. }
  190. $deps = model('Dep')->getList();
  191. $this->assign('deps',$deps);
  192. // $address = (new \app\common\model\Address())->getListByType(2);
  193. $roles = model('Roles')->getList();
  194. $this->assign('roles',$roles);
  195. // $this->assign('address',$address);
  196. return $this->fetch();
  197. }
  198. }
  199. /**
  200. * 新增/编辑
  201. */
  202. public function wxzadd($id=0){
  203. if(request()->isPost()){
  204. $res = model('User')->addUser();
  205. if($res){
  206. $this->success('操作成功',url('index'));
  207. }else{
  208. $this->error(model('User')->getError());
  209. }
  210. }else{
  211. if($id){
  212. $info = db('user')
  213. ->alias('u')
  214. ->join('user_dep ud','ud.user_id = u.id')
  215. ->join('user_roles ur','ur.user_id = u.id','left')
  216. ->field('u.*,ud.dep_id,ur.roles_id')
  217. ->where('u.id',$id)->find();
  218. $this->assign('info',$info);
  219. }
  220. $deps = model('Dep')->getList();
  221. $this->assign('deps',$deps);
  222. $address = (new \app\common\model\Address())->getListByType(2);
  223. $roles = model('Roles')->getList();
  224. $this->assign('roles',$roles);
  225. $this->assign('address',$address);
  226. return $this->fetch();
  227. }
  228. }
  229. /**
  230. * 删除记录
  231. * @param int $id
  232. */
  233. public function del($id=0){
  234. if(!$id){
  235. $this->error('参数错误');
  236. }
  237. $res = db('user')->where('id',$id)->setField('del',1);
  238. if($res){
  239. $this->success('删除成功');
  240. }else{
  241. $this->error('删除失败');
  242. }
  243. }
  244. /**
  245. * 改变字段值
  246. * @param int $fv
  247. * @param string $fn
  248. * @param int $fv
  249. */
  250. public function changeField($id=0,$fn='',$fv=0){
  251. if(!$fn||!$id){
  252. $this->error('参数错误');
  253. }
  254. $res = db('user')->where('id',$id)->setField($fn,$fv);
  255. if($res){
  256. $this->success('操作成功');
  257. }else{
  258. $this->error('操作失败');
  259. }
  260. }
  261. public function company(){
  262. if(request()->isAjax()){
  263. //分页参数
  264. $length = input('rows',10,'intval'); //每页条数
  265. $page = input('page',1,'intval'); //第几页
  266. $start = ($page - 1) * $length; //分页开始位置
  267. //排序
  268. $sortRow = input('sidx','u.id','trim'); //排序列
  269. $sort = input('sord','desc','trim'); //排序方式
  270. $order = $sortRow.' '.$sort;
  271. $title = input('title','','trim');
  272. if($title){
  273. $map[] = ['u.account|u.real_name|u.mobile','like','%'.$title.'%'];
  274. }
  275. $enable = input('enable','','trim');
  276. if($enable != ''){
  277. $map[] = ['u.enable','=',$enable];
  278. }
  279. $rolesId = input('rolesId','','trim');
  280. if($rolesId != ''){
  281. $map[] = ['ur.roles_id','=',$rolesId];
  282. }
  283. $map[] = ['u.del','=',0];
  284. $map[] = ['u.type','=',1];
  285. $map= empty($map) ? true: $map;
  286. //数据查询
  287. $lists = db('user')
  288. ->alias('u')
  289. ->join('user_roles ur','ur.user_id = u.id')
  290. ->field('u.*,ur.roles_id')
  291. ->where($map)
  292. ->limit($start,$length)
  293. ->order($order)->select();
  294. foreach ($lists as $k=>$v){
  295. $lists[$k]['roles_name'] = Db::name('roles')->where('id',$v['roles_id'])->value('name');
  296. }
  297. //数据返回
  298. $totalCount = db('user')
  299. ->alias('u')
  300. ->join('user_roles ur','ur.user_id = u.id')
  301. ->where($map)->count();
  302. $totalPage = ceil($totalCount/$length);
  303. $result['page'] = $page;
  304. $result['total'] = $totalPage;
  305. $result['records'] = $totalCount;
  306. $result['rows'] = $lists;
  307. return json($result);
  308. }else{
  309. $roles = model('Roles')->getCommonList(2);
  310. $this->assign('roles',$roles);
  311. return $this->fetch();
  312. }
  313. }
  314. /**
  315. * 新增/编辑
  316. */
  317. public function addcompany($id=0){
  318. if(request()->isPost()){
  319. $res = model('User')->addCompany();
  320. if($res){
  321. $this->success('操作成功',url('index'));
  322. }else{
  323. $this->error(model('User')->getError());
  324. }
  325. }else{
  326. if($id){
  327. $info = db('user')
  328. ->alias('u')
  329. ->join('user_roles ur','ur.user_id = u.id')
  330. ->field('u.*,ur.roles_id')
  331. ->where('u.id',$id)->find();
  332. if($info){
  333. $info['orgs'] = $info['orgs']?explode(',',$info['orgs']):[];
  334. }
  335. $this->assign('info',$info);
  336. }
  337. $orgs = model('Org')->getAllOrgs();
  338. $this->assign('orgs',$orgs);
  339. $roles = model('Roles')->getCommonList(2);
  340. $this->assign('roles',$roles);
  341. return $this->fetch();
  342. }
  343. }
  344. public function modifyPass(){
  345. if(request()->isAjax()){
  346. $data = [
  347. 'oldpass' => input('oldpass','','trim'),
  348. 'pass' => input('pass','','trim'),
  349. 'pass_confirm' => input('pass_confirm','','trim'),
  350. 'id' => $this->userId
  351. ];
  352. $ret = model('User')->modifyPass($data);
  353. if(!$ret){
  354. $this->error(model('User')->getError());
  355. }
  356. // 清除登录信息,重新登录
  357. session('user_auth',null);
  358. session('user_auth_sign',null);
  359. $this->success('操作成功');
  360. }else{
  361. return $this->fetch();
  362. }
  363. }
  364. /*
  365. * 考勤设置*/
  366. public function set($id=0){
  367. if(request()->isPost()){
  368. $data = request()->post();
  369. if(!$data['kq_name']){
  370. $this->error('考勤姓名不能为空');
  371. }
  372. if(!isset($data['kq_img']) && empty($data['kq_img'])){
  373. $this->error('考勤图片不能为空');
  374. }
  375. $uid = $data['id'];
  376. unset($data['id']);
  377. db('user')->where('id',$uid)->update($data);
  378. $this->success('操作成功',url('index'));
  379. }else{
  380. if($id>0){
  381. $info = db('user')->where('id',$id)->find();
  382. $this->assign('info',$info);
  383. }
  384. }
  385. return $this->fetch();
  386. }
  387. /*
  388. * 重置设备编号*/
  389. public function reset($id=0){
  390. if($id < 1){
  391. $this->error('参数错误');
  392. }
  393. db('user')->where('id',$id)->update(['device_sn'=>'']);
  394. $this->success('重置成功',url('index'));
  395. }
  396. /**
  397. * 排序
  398. * @param int $id
  399. * @param int $sort
  400. */
  401. public function changeSort($id=0,$sort=0){
  402. if($id<0||$sort<0){
  403. $this->error('参数错误');
  404. }
  405. $res = db('user')->where('id',$id)->setField('sort',$sort);
  406. if($res){
  407. $this->success('操作成功');
  408. }else{
  409. $this->error('操作失败');
  410. }
  411. }
  412. public function batchSort(){
  413. $data = input('data','','trim');
  414. if(!$data){
  415. $this->error('参数错误');
  416. }
  417. $data = json_decode($data,true);
  418. if(!$data){
  419. $this->error('参数错误');
  420. }
  421. Db::startTrans();
  422. try{
  423. foreach ($data as $k=>$v){
  424. Db::name('user')->where('id',$v['id'])->setField('sort',$v['sort']);
  425. }
  426. Db::commit();
  427. }catch (Exception $e){
  428. Db::rollback();
  429. $this->error('操作失败');
  430. }
  431. $this->success('操作成功');
  432. }
  433. }