User.php 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739
  1. <?php
  2. namespace app\common\model;
  3. use app\hander\HelpHander;
  4. use think\Db;
  5. use think\Exception;
  6. use think\Model;
  7. class User extends Model
  8. {
  9. public function login($account,$password){
  10. // 登录是根据账号、工号和手机号组成,先查账号再查工号,最后手机号
  11. $user = $this->where('account',$account)->where('del',0)->find();
  12. if(empty($user)){
  13. $user = $this->where('code',$account)->where('del',0)->find();
  14. }
  15. if(empty($user)){
  16. $user = $this->where('phone',$account)->where('del',0)->find();
  17. }
  18. if(empty($user)){
  19. HelpHander::error('账号或密码错误');
  20. }
  21. if($user['enable'] != 1){
  22. HelpHander::error('账号被禁用');
  23. }
  24. $pass = aes_decrypt($password);
  25. if(!password_verify($pass, $user['password'])){
  26. HelpHander::error('账号或密码错误');
  27. }
  28. $token = model('Token')->updateToken($user['id']);
  29. if(!$token){
  30. HelpHander::error('登录失败');
  31. }
  32. model('ActionLog')->add(1,'用户登录',$user['id']);
  33. $orgs = $this->getUserOrgs($user['id']);
  34. return ['org_info' => $orgs, 'token_info' => $token];
  35. }
  36. /**
  37. * 获取用户组织
  38. * @param $userId
  39. * @return array|\PDOStatement|string|\think\Collection|\think\model\Collection
  40. */
  41. public function getUserOrgs($userId){
  42. $lists = Db::name('user_roles')
  43. ->alias('ur')
  44. ->join('roles r','ur.roles_id = r.id')
  45. ->join('org o','r.org_id = o.id')
  46. ->where('r.type',3)
  47. ->where('ur.user_id',$userId)
  48. ->field('o.id,o.name')
  49. ->select();
  50. return $lists ? $lists : [];
  51. }
  52. /**
  53. * 获取登录后信息
  54. * @param $userId 用户id
  55. * @param int $type 0=pc 1=app
  56. * @return array
  57. */
  58. public function userinfo($userId, $type = 0){
  59. $user = Db::name('user')
  60. ->alias('u')
  61. ->join('user_info ui','ui.user_id = u.id','left')
  62. ->where('u.id',$userId)
  63. ->field('u.id,u.account,u.phone,u.code,ui.name,u.login_time,u.login,ui.device_sn')
  64. ->find();
  65. $deviceSn = $user['device_sn'] ? $user['device_sn'] : '';
  66. unset($user['device_sn']);
  67. // 获取角色
  68. $rolesList = Db::name('user_roles')
  69. ->alias('ur')
  70. ->join('roles r','r.id = ur.roles_id')
  71. ->where('ur.user_id',$userId)
  72. ->where('r.del',0)
  73. ->where('r.enable',1)
  74. ->field('r.*')
  75. ->select();
  76. // 获取岗位
  77. $jobList = Db::name('user_job')
  78. ->alias('uj')
  79. ->join('job j','j.id = uj.job_id')
  80. ->where('uj.user_id',$userId)
  81. ->where('j.del',0)
  82. ->where('j.enable',1)
  83. ->field('j.*')
  84. ->select();
  85. // 获取部门
  86. $depids = Db::name('user_job')
  87. ->alias('uj')
  88. ->join('job j','j.id = uj.job_id')
  89. ->where('uj.user_id',$userId)
  90. ->where('j.del',0)
  91. ->where('j.enable',1)
  92. ->column('j.dep_id');
  93. if(empty($depids)){
  94. $depList = [];
  95. }else{
  96. $depids = array_unique($depids);
  97. $depList = Db::name('dep')
  98. ->where('enable',1)
  99. ->where('del',0)
  100. ->where('id','in',$depids)
  101. ->select();
  102. }
  103. if($type == 0){ // 处理点餐人员,不显示首页内容,只显示欢迎
  104. $dinnerRolesId = 129;
  105. $rids = [];
  106. $rolesList = $rolesList?$rolesList:[];
  107. foreach ($rolesList as $k=>$v){
  108. if($v['type'] == 0){
  109. $rids[] = $v['id'];
  110. }
  111. }
  112. if(count($rids) == 1 && in_array($dinnerRolesId,$rids)){
  113. foreach ($rolesList as $k=>$v){
  114. if($v['type'] == 0 && $v['id'] == $dinnerRolesId){
  115. $rolesList[$k]['type'] = 4; // 修改订餐审核员
  116. }
  117. }
  118. }
  119. }
  120. $data = [
  121. 'user' => $user,
  122. 'deviceSn' => $deviceSn,
  123. 'rolesList' => $rolesList?$rolesList:[],
  124. 'jobList' => $jobList?$jobList:[],
  125. 'depList' => $depList?$depList:[],
  126. ];
  127. if($type == 0){
  128. $allRulesList = Db::name('rules')->where('enable', 1)->select();
  129. $data['allRulesList'] = $allRulesList;
  130. $rulesList = [];
  131. if($rolesList){
  132. $rulesids = '';
  133. $isadmin = 0;
  134. foreach ($rolesList as $k=>$v){
  135. if($v['id'] == 1){
  136. $isadmin = 1;
  137. }
  138. if($v['rules']){
  139. $rulesids .= ','.$v['rules'];
  140. }
  141. }
  142. if($rulesids){
  143. $rules = array_unique(explode(',',$rulesids));
  144. if(!$isadmin){
  145. $orgrule = Db::name('roles')->where('type',2)->value('rules');
  146. $orgrules = $orgrule?explode(',',$orgrule):[];
  147. $rules = array_intersect($rules,$orgrules);
  148. }
  149. if($rules){
  150. $rulesList = Db::name('rules')
  151. ->where('id','in',$rules)
  152. ->where('enable', 1)
  153. ->order('sort asc,id ase')
  154. ->select();
  155. }
  156. }
  157. }
  158. $data['rulesList'] = $rulesList?$rulesList:[];
  159. }
  160. return $data;
  161. }
  162. // 修改密码
  163. public function updatePassword($userId,$data){
  164. $d = [
  165. 'password' => aes_decrypt($data['password']),
  166. 'newPassword' => aes_decrypt($data['newPassword'])
  167. ];
  168. $result = validate('User')->check($d,[],'modifypass');
  169. if(true !== $result){
  170. HelpHander::error(validate('User')->getError());
  171. }
  172. $user = $this->checkUser($userId);
  173. if(!password_verify($d['password'], $user['password'])){
  174. HelpHander::error('原密码不正确');
  175. }
  176. $npass = password_hash($d['newPassword'],PASSWORD_DEFAULT);
  177. Db::startTrans();
  178. try{
  179. $ret = $this->save(['password'=>$npass,'update_time'=>date('Y-m-d H:i:s'),'login'=>1],['id'=>$userId]);
  180. if(!$ret){
  181. \exception('密码修改失败');
  182. }
  183. $res = model('Token')->updateToken($userId);
  184. if(!$res){
  185. \exception('密码修改失败');
  186. }
  187. Db::commit();
  188. }catch (Exception $e){
  189. Db::rollback();
  190. HelpHander::error($e->getMessage());
  191. }
  192. return true;
  193. }
  194. // 忘记密码
  195. public function forgetPassword($phone,$password,$code){
  196. $d = [
  197. 'newPassword' => aes_decrypt($password),
  198. 'phone' => $phone,
  199. 'code' => $code
  200. ];
  201. if(!check_mobile($phone)){
  202. HelpHander::error('手机号格式不正确');
  203. }
  204. if(mb_strlen($d['newPassword']) < 6 || mb_strlen($d['newPassword']) > 16){
  205. HelpHander::error('新密码长度必须在6-16之间');
  206. }
  207. if(!$code){
  208. HelpHander::error('请输入验证码');
  209. }
  210. $user = Db::name('user')->where('phone',$phone)->where('del',0)->find();
  211. if(!$user){
  212. HelpHander::error('手机号未注册');
  213. }
  214. $resms = model('SmsRecord')->checkCode($phone,$code);
  215. if(!$resms){
  216. HelpHander::error('验证码不正确或已失效');
  217. }
  218. $npass = password_hash($d['newPassword'],PASSWORD_DEFAULT);
  219. Db::startTrans();
  220. try{
  221. $ret = $this->save(['password'=>$npass,'update_time'=>date('Y-m-d H:i:s'),'login'=>1],['id'=>$user['id']]);
  222. if(!$ret){
  223. \exception('修改失败');
  224. }
  225. $res = model('Token')->updateToken($user['id']);
  226. if(!$res){
  227. \exception('密码修改失败');
  228. }
  229. Db::commit();
  230. }catch (Exception $e){
  231. Db::rollback();
  232. HelpHander::error($e->getMessage());
  233. }
  234. return true;
  235. }
  236. // 重置密码
  237. public function resetPassword($id){
  238. $user = $this->checkUser($id);
  239. $data = [
  240. 'password' => password_hash('123456',PASSWORD_DEFAULT),
  241. 'update_time' => date('Y-m-d H:i:s'),
  242. 'login' => 0
  243. ];
  244. $ret = $this->save($data,['id'=>$id]);
  245. if(!$ret){
  246. HelpHander::error('密码重置失败');
  247. }
  248. Db::name('token')->where('user_id',$id)->setField('code','');
  249. return true;
  250. }
  251. // 修改用户名
  252. public function updateAccount($id,$account){
  253. $data = [
  254. 'id' => $id,
  255. 'account' => $account,
  256. 'update_time' => date('Y-m-d H:i:s')
  257. ];
  258. $result = validate('User')->check($data,[],'account');
  259. if(true !== $result){
  260. HelpHander::error(validate('User')->getError());
  261. }
  262. $user = $this->checkUser($id);
  263. $ret = $this->save($data,['id'=>$id]);
  264. if(!$ret){
  265. HelpHander::error('修改用户名失败');
  266. }
  267. return true;
  268. }
  269. private function checkUser($id){
  270. $user = $this->where('id',$id)->where('del',0)->find();
  271. if(empty($user)){
  272. HelpHander::error('用户不存在');
  273. }
  274. return $user;
  275. }
  276. public function getUserByAuths($orgId,$auths){
  277. $auths = json_decode($auths,true);
  278. if(!$auths){ // 所有人
  279. if($orgId > 0){
  280. $userids = Db::name('user_roles')
  281. ->alias('ur')
  282. ->join('roles r','r.id = ur.roles_id')
  283. ->join('user u','u.id = ur.user_id')
  284. ->where('r.type',3)
  285. ->where('r.org_id',$orgId)
  286. ->where('u.enable',1)
  287. ->where('u.del',0)
  288. ->column('ur.user_id');
  289. }else{
  290. $userids = Db::name('user')
  291. ->where('enable',1)
  292. ->where('del',0)
  293. ->column('id');
  294. }
  295. } else {
  296. $uids = [];
  297. $depids = [];
  298. $jobids = [];
  299. foreach ($auths as $k=>$v){
  300. if($v['type'] == 0){
  301. $depids[] = $v['id'];
  302. }else{
  303. $uids[] = $v['id'];
  304. }
  305. }
  306. if($depids){
  307. $depchildren = model('Dep')->getDepChildren($depids);
  308. $depids = array_unique(array_merge($depids,$depchildren));
  309. $jobids = model('Job')->getJobByDeps($depids);
  310. }
  311. if(empty($uids) && empty($jobids)){
  312. $userids = [];
  313. } else {
  314. $userids1 = [];
  315. $userids2 = [];
  316. if($uids){
  317. $userids1 = Db::name('user_job')
  318. ->alias('uj')
  319. ->join('user u','u.id = uj.user_id')
  320. ->where('uj.user_id','in',$uids)
  321. ->where('u.enable',1)
  322. ->where('u.del',0)
  323. ->column('uj.user_id');
  324. $userids1 = $userids1?$userids1:[];
  325. }
  326. if($jobids){
  327. $userids2 = Db::name('user_job')
  328. ->alias('uj')
  329. ->join('user u','u.id = uj.user_id')
  330. ->where('uj.job_id','in',$jobids)
  331. ->where('u.enable',1)
  332. ->where('u.del',0)
  333. ->column('uj.user_id');
  334. $userids2 = $userids2?$userids2:[];
  335. }
  336. $userids = array_unique(array_merge($userids1,$userids2));
  337. }
  338. }
  339. return $userids;
  340. }
  341. // 创建机构管理员
  342. public function addUserOrg($account,$roles){
  343. $data = [
  344. 'account' => $account,
  345. 'password' => password_hash('123456',PASSWORD_DEFAULT),
  346. 'create_time' => date('Y-m-d H:i:s'),
  347. 'update_time' => date('Y-m-d H:i:s'),
  348. 'enable' => 1,
  349. 'del' => 0,
  350. 'login' => 0
  351. ];
  352. $code = Db::name('user')->order('id desc')->value('code');
  353. $data['code'] = $code + 1;
  354. $ret = $this->allowField(true)->save($data);
  355. if(!$ret){
  356. return false;
  357. }
  358. $d = [
  359. 'user_id' => $this->id,
  360. 'name' => '机构管理员'
  361. ];
  362. $res = Db::name('user_info')->insert($d);
  363. if(!$res){
  364. return false;
  365. }
  366. $res2 = Db::name('user_roles')->insert([
  367. 'user_id' => $this->id,
  368. 'roles_id' => $roles
  369. ]);
  370. if(!$res2){
  371. return false;
  372. }
  373. // 机构管理员角色
  374. $jgroles = Db::name('roles')->where('type',2)->value('id');
  375. $res3 = Db::name('user_roles')->insert([
  376. 'user_id' => $this->id,
  377. 'roles_id' => $jgroles
  378. ]);
  379. if(!$res3){
  380. return false;
  381. }
  382. return true;
  383. }
  384. // 获取机构管理员和超级管理员id集合
  385. public function getAdminUsers(){
  386. $ids = Db::name('user_roles')
  387. ->alias('ur')
  388. ->join('roles r','r.id = ur.roles_id')
  389. ->where('r.type','in','1,2')
  390. ->column('ur.user_id');
  391. return $ids?array_unique($ids):[];
  392. }
  393. public function add(){
  394. $data = [
  395. 'id' => input('uId/d',0),
  396. 'name' => input('name','','trim'),
  397. 'phone' => input('phone','','trim'),
  398. 'company_id' => input('companyId/d',0),
  399. // 'email' => input('email','','trim'),
  400. // 'id_card' => input('idCard','','trim'),
  401. // 'join_time' => input('joinTime','','trim'),
  402. // 'is_working' => input('isWorking/d',0),
  403. ];
  404. $orgId = input('orgId/d',0);
  405. $result = validate('User')->check($data,[],'add');
  406. if(true !== $result){
  407. HelpHander::error(validate('User')->getError());
  408. }
  409. $id = $data['id'];
  410. unset($data['id']);
  411. $uinfo = Db::name('user_info')->where('user_id',$id)->find();
  412. if($uinfo&&$uinfo['company_id']&&$uinfo['psid'] > 0){
  413. HelpHander::error('该用户已定级不可修改公司');
  414. }
  415. $this->startTrans();
  416. try{
  417. if($id > 0){
  418. $sdata = [
  419. 'phone' => $data['phone'],
  420. 'update_time' => date('Y-m-d H:i:s')
  421. ];
  422. $ret = $this->allowField(true)->save($sdata,['id'=>$id]);
  423. if(!$ret){
  424. \exception('操作失败');
  425. }
  426. $res = Db::name('user_info')->where('user_id',$id)->update([
  427. 'name' => $data['name'],
  428. 'company_id' => $data['company_id'],
  429. // 'email' => $data['email'],
  430. // 'id_card' => $data['id_card'],
  431. // 'join_time' => $data['join_time']?$data['join_time']:null,
  432. // 'is_working' => $data['is_workimg'],
  433. 'update_time' => date('Y-m-d H:i:s')
  434. ]);
  435. if(!$res){
  436. \exception('用户信息添加失败');
  437. }
  438. }else{
  439. $sdata = [
  440. 'phone' => $data['phone'],
  441. 'password' => password_hash('123456',PASSWORD_DEFAULT),
  442. 'create_time' => date('Y-m-d H:i:s'),
  443. 'update_time' => date('Y-m-d H:i:s'),
  444. 'enable' => 1,
  445. 'del' => 0,
  446. 'login' => 0
  447. ];
  448. $code = Db::name('user')->order('id desc')->value('code');
  449. $sdata['code'] = $code + 1;
  450. $ret = $this->allowField(true)->save($sdata);
  451. if(!$ret){
  452. \exception('操作失败');
  453. }
  454. $res = Db::name('user_info')->insert([
  455. 'user_id' => $this->id,
  456. 'name' => $data['name'],
  457. 'company_id' => $data['company_id'],
  458. // 'email' => $data['email'],
  459. // 'id_card' => $data['id_card'],
  460. // 'join_time' => $data['join_time']?$data['join_time']:null,
  461. // 'is_working' => $data['is_workimg']
  462. ]);
  463. if(!$res){
  464. \exception('用户信息添加失败');
  465. }
  466. // 添加默认角色
  467. $rolesId = Db::name('roles')->where('type',3)->where('org_id',$orgId)->value('id');
  468. $res2 = Db::name('user_roles')->insert([
  469. 'user_id' => $this->id,
  470. 'roles_id' => $rolesId
  471. ]);
  472. if(!$res2){
  473. \exception('默认角色添加失败');
  474. }
  475. }
  476. $this->commit();
  477. }catch (Exception $e){
  478. trace($e->getMessage());
  479. $this->rollback();
  480. HelpHander::error('操作失败'.$e->getMessage());
  481. }
  482. return true;
  483. }
  484. public function info($id){
  485. $info = Db::name('user')
  486. ->alias('u')
  487. ->join('user_info ui','ui.user_id = u.id')
  488. ->where('u.id', $id)
  489. ->where('u.del', 0)
  490. ->field('u.id,u.code,u.phone,ui.email,ui.id_card,ui.device_sn,ui.name,ui.is_working,ui.join_time,ui.out_time,ui.company_id')
  491. ->find();
  492. if(!$info){
  493. HelpHander::error('数据不存在');
  494. }
  495. return $info;
  496. }
  497. // 获取普通用户列表
  498. public function lists($page,$size,$orgId,$name='',$code='',$phone=''){
  499. $uids = $this->getAdminUsers();
  500. if($uids){
  501. $map[] = ['u.id','not in',$uids];
  502. }
  503. if($name){
  504. $map[] = ['ui.name','like','%'.$name.'%'];
  505. }
  506. if($code){
  507. $map[] = ['u.code','like','%'.$code.'%'];
  508. }
  509. if($phone){
  510. $map[] = ['u.phone','like','%'.$phone.'%'];
  511. }
  512. $map[] = ['u.del','=',0];
  513. $map[] = ['r.type','=',3];
  514. $map[] = ['r.org_id','=',$orgId];
  515. $lists = Db::name('user')
  516. ->alias('u')
  517. ->join('user_info ui','ui.user_id = u.id')
  518. ->join('user_roles ur','ur.user_id = u.id')
  519. ->join('roles r','ur.roles_id = r.id')
  520. ->where($map)
  521. ->field('u.id,u.code,u.phone,u.del,u.enable,ui.name as user_name,ui.device_sn,ui.join_time,u.create_time,ui.company_id')
  522. ->page($page,$size)
  523. ->order('u.id desc')
  524. ->select();
  525. $lists = $lists?$lists:[];
  526. foreach ($lists as $k=>$v){
  527. // 获取用户岗位
  528. $jobs = Db::name('user_job')
  529. ->alias('uj')
  530. ->join('job j','j.id = uj.job_id')
  531. ->join('dep d','d.id = j.dep_id')
  532. ->where('uj.user_id',$v['id'])
  533. ->column("concat(d.name,'/',j.name)");
  534. $lists[$k]['position'] = $jobs?implode(',',$jobs):'';
  535. $lists[$k]['company'] = '';
  536. if($v['company_id']){
  537. $lists[$k]['company'] = Db::name('company')->where('id',$v['company_id'])->value('title');
  538. }
  539. }
  540. $total = Db::name('user')
  541. ->alias('u')
  542. ->join('user_info ui','ui.user_id = u.id')
  543. ->join('user_roles ur','ur.user_id = u.id')
  544. ->join('roles r','ur.roles_id = r.id')
  545. ->where($map)
  546. ->count();
  547. $data = [
  548. 'total' => $total,
  549. 'list' => $lists?$lists:[]
  550. ];
  551. return $data;
  552. }
  553. public function changeStatus($id,$enable){
  554. $ret = $this->where('id',$id)->setField('enable',$enable);
  555. if(!$ret){
  556. HelpHander::error('操作失败');
  557. }
  558. return true;
  559. }
  560. // 获取组织下的所有人员
  561. public function queryUserListByOrg($orgId){
  562. $jobids = Db::name('job')->where('org_id',$orgId)->where('del',0)->where('enable',1)->column('id');
  563. $lists = [];
  564. if($jobids){
  565. $lists = Db::name('user')
  566. ->alias('u')
  567. ->join('user_job uj','u.id = uj.user_id')
  568. ->join('user_info ui','u.id = ui.user_id')
  569. ->where('uj.job_id','in',$jobids)
  570. ->where('u.del',0)
  571. ->where('u.enable',1)
  572. ->distinct(true)
  573. ->field('u.id as userId,ui.name')
  574. ->select();
  575. }
  576. return $lists?$lists:[];
  577. }
  578. public function appAddressBook($orgId){
  579. // 获取所有部门
  580. $deps = Db::name('dep')
  581. ->where('del',0)
  582. ->where('enable',1)
  583. ->where('org_id',$orgId)
  584. ->order('sorts asc,id asc')
  585. ->field('id,name,parent_id')
  586. ->select();
  587. // 添加唯一值
  588. foreach ($deps as $k=>$v){
  589. $deps[$k]['type'] = 0;
  590. $deps[$k]['phone'] = '';
  591. $deps[$k]['jobList'] = [];
  592. $deps[$k]['depAndUserDtoList'] = model('UserJob')->getListByDep($v['id']);
  593. }
  594. $ndeps = list_to_tree($deps, 'parent_id', $child = 'depAndUserDtoList', 0);
  595. $ndeps = array_delete_char($ndeps,'parent_id','depAndUserDtoList');
  596. return $ndeps;
  597. }
  598. // 通讯录搜索
  599. public function selectUserTelList($orgId,$keyword){
  600. $user = Db::name('user')
  601. ->alias('u')
  602. ->join('user_info ui',' ui.user_id = u.id')
  603. ->join('user_job uj','uj.user_id = u.id')
  604. ->join('job j','j.id = uj.job_id')
  605. ->where('u.del', 0)
  606. ->where('u.enable', 1)
  607. ->where('j.org_id',$orgId)
  608. ->where('j.del', 0)
  609. ->where('j.enable', 1)
  610. ->where('ui.name|j.name','like','%'.$keyword.'%')
  611. ->distinct(true)
  612. ->order('u.sorts asc,u.id asc')
  613. ->field('u.id,ui.name,u.phone')
  614. ->select();
  615. foreach ($user as $k=>$v){
  616. $user[$k]['type'] = 1;
  617. $user[$k]['depAndUserDtoList'] = [];
  618. $ujobs = Db::name('user_job')
  619. ->alias('uj')
  620. ->join('job j','j.id = uj.job_id')
  621. ->where('j.org_id',$orgId)
  622. ->where('uj.user_id',$v['id'])
  623. ->column('j.name');
  624. $user[$k]['jobList'] = $ujobs?$ujobs:[];
  625. }
  626. return $user?$user:[];
  627. }
  628. // 日志接收人
  629. public function receiveUserList($page,$size,$info,$orgId){
  630. $map[] = ['j.org_id','=',$orgId];
  631. $map[] = ['u.del','=',0];
  632. $map[] = ['u.enable','=',1];
  633. $map[] = ['j.del','=',0];
  634. $map[] = ['j.enable','=',1];
  635. if($info){
  636. $map[] = ['ui.name','like','%'.$info.'%'];
  637. }
  638. $user = Db::name('user')
  639. ->alias('u')
  640. ->join('user_info ui','ui.user_id = u.id')
  641. ->join('user_job uj','uj.user_id = u.id')
  642. ->join('job j','j.id = uj.job_id')
  643. ->where($map)
  644. ->distinct(true)
  645. ->page($page,$size)
  646. ->order('u.sorts asc,u.id asc')
  647. ->field('u.id,ui.name')
  648. ->select();
  649. foreach ($user as $k=>$v){
  650. $ujobs = Db::name('user_job')
  651. ->alias('uj')
  652. ->join('job j','j.id = uj.job_id')
  653. ->where('uj.user_id',$v['id'])
  654. ->field('j.*')
  655. ->select();
  656. $user[$k]['listJob'] = $ujobs?$ujobs:[];
  657. }
  658. return $user;
  659. }
  660. }