User.php 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593
  1. <?php
  2. declare (strict_types = 1);
  3. namespace app\admin\controller;
  4. use app\admin\BaseController;use think\App;use think\Exception;use think\facade\Db;use think\facade\Validate;
  5. class User extends BaseController{
  6. public function __construct(App $app) {parent::__construct($app);}
  7. /**
  8. * 设置供应商信息
  9. * @return \think\response\Json|void
  10. */
  11. public function EditUserCompany(){
  12. $post = $this->request->only(["token"=>"","nickname"=>"","id"=>"","mobile"=>"","companyArr"=>[]],"post");
  13. $valide = $validate=Validate::rule([
  14. 'nickname|真实姓名' => 'require|max:255|min:2',
  15. 'id|账户ID' => 'require|number|gt:0',
  16. 'mobile|手机号' => 'require|number|mobile',
  17. 'companyArr|业务公司' => 'require|array',
  18. ]);
  19. if($valide->check($post)==false) return json_show(1004,$valide->getError());
  20. $isSuper = Db::name("user_role")->alias("a")
  21. ->leftJoin("role b","a.roleid=b.id")
  22. ->where(["a.uid"=>$post['id'],"a.is_del"=>0,"b.level"=>1])
  23. ->findOrEmpty();
  24. if(!empty($isSuper) && !empty($post['companyArr']))return error_show(1002,"超管账户不允许设置关联业务公司");
  25. Db::startTrans();
  26. try{
  27. $saveinfo =[
  28. "id"=>$post['id'],
  29. "nickname"=>$post['nickname'],
  30. "mobile"=>$post['mobile'],
  31. "token"=>$post['token']
  32. ];
  33. $saev= resetinfo($saveinfo);
  34. if(!isset($saev['code'])||$saev['code']!=0){
  35. throw new Exception($saev['message']);
  36. }
  37. if(!empty($post['companyArr'])){
  38. $is_delArr= array_column($post['companyArr'],"is_del");
  39. foreach ($post['companyArr'] as &$item){
  40. $company =Db::name("supplier_info")->where(["code"=>$item['companyCode']])->find();
  41. $item['company_type'] = $company["type"]==3?2:1;
  42. $res = Db::name("user_role")->where(["uid"=>$post['id'],"is_del"=>0,"companyNo"=>$item['companyCode']])->findOrEmpty();
  43. if(!empty($res)){
  44. if($item['is_del']==1){
  45. if($item['is_main']==1 && in_array(0,$is_delArr)) throw new Exception("默认企业不可删除");
  46. $re = Db::name("user_role")->where(["uid"=>$post['id'],"is_del"=>0,"companyNo"=>$item['companyCode']])
  47. ->update(["is_del"=>1,"is_main"=>0,"updatetime"=>date("Y-m-d H:i:s")]);
  48. }else{
  49. $re = Db::name("user_role")->where(["uid"=>$post['id'],"is_del"=>0,"companyNo"=>$item['companyCode']])
  50. ->update(["nickname"=>$post['nickname'],"is_main"=>$item['is_main'],"updatetime"=>date("Y-m-d H:i:s")]);
  51. }
  52. if($re==false)throw new Exception("关联企业保存失败");
  53. }
  54. }
  55. $companyinfo = ["id"=>$post['id'],"company"=>$post['companyArr'],"token"=>$post['token']];
  56. $companyset =setUserCompany($companyinfo);
  57. if(!isset($companyset['code'])||$companyset['code']!=0){
  58. throw new Exception($companyset['message']);
  59. }
  60. }
  61. Db::commit();
  62. return app_show(0,"设置成功");
  63. }catch (Exception $e){
  64. Db::rollback();
  65. return error_show(1005,$e->getMessage());
  66. }
  67. }
  68. /**
  69. * 用户列表
  70. */
  71. public function userList(){
  72. $post=$this->request->only(["token"=>"","nickname"=>"","relaComNo"=>"","islevel"=>"","username"=>"","companyNo"=>"","status"=>"","page"=>1,"size"=>10],"post");
  73. if($this->level==1){
  74. $companyNo = $post['companyNo']??"";
  75. }else{
  76. $companyNo = $post['relaComNo']??"";
  77. $post['companyNo'] = $post['relaComNo']??"";
  78. }
  79. $where=[["a.is_del","=",0]];
  80. unset($post['relaComNo']);
  81. if($post['companyNo']!=""){
  82. $where[]=["a.companyNo","=",$companyNo];
  83. }
  84. if($post['status']!==''){
  85. $uid =Db::name("user_role")->alias("a")->where(["status"=>1,"is_del"=>0])->where($where)->column("uid");
  86. if($post['status']==1){
  87. $where[]=["a.status","=",1];
  88. $post['uid']= $uid;
  89. }else{
  90. $post['nuid']=$uid;
  91. }
  92. unset($post['status']);
  93. }
  94. if($post["islevel"]!=""){
  95. $uid =Db::name("user_role")->alias("a")
  96. ->leftJoin("role b","a.roleid=b.id")->where([["b.level","=",1],["a.is_del","=",0]])->where($where)->column
  97. ("uid");
  98. if($post['islevel']==1){
  99. $post['uid']= $uid;
  100. }else{
  101. $post['nuid']=$uid;
  102. }
  103. unset($post["islevel"]);
  104. }
  105. // var_dump($post);
  106. $userinfo=GetUserList($post);
  107. if(empty($userinfo)||$userinfo['code']!=0){
  108. return app_show($userinfo['code'],$userinfo['msg']);
  109. }
  110. $data = $userinfo['data']['list'];
  111. $list=[];
  112. foreach ($data as $value){
  113. $roleArr = Db::name("user_role")->alias("a")
  114. ->leftJoin("role b","a.roleid=b.id")
  115. ->where(["uid"=>$value['id'],"a.companyNo"=>$value['companyCode'],"is_del"=>0])
  116. ->field("role_name,roleid,a.status,b.level")->findOrEmpty();
  117. $value['roleid']=$roleArr['roleid']??"";
  118. $value['status']=$value['status']==1?($roleArr['status']??0) :0;
  119. $value["role_name"] =$roleArr['role_name']??"";
  120. $value["role_level"] =$roleArr['level']??"";
  121. $list[]=$value;
  122. }
  123. return app_show(0,"获取成功",["list"=>$list,"count"=>$userinfo['data']["count"]]);
  124. }
  125. /**
  126. * 用户列表
  127. */
  128. public function userSingleList(){
  129. $post=$this->request->only(["token"=>"","nickname"=>"","relaComNo"=>"","islevel"=>"","username"=>"","companyNo"=>"","status"=>"","page"=>1,"size"=>10],"post");
  130. if($this->level==1){
  131. $companyNo = $post['companyNo']??"";
  132. }else{
  133. $companyNo = $post['relaComNo']??"";
  134. $post['companyNo'] = $post['relaComNo']??"";
  135. }
  136. $where=[["a.is_del","=",0]];
  137. unset($post['relaComNo']);
  138. if($post['companyNo']!=""){
  139. $where[]=["a.companyNo","=",$companyNo];
  140. }
  141. if($post["islevel"]!=""){
  142. $uid =Db::name("user_role")->alias("a")
  143. ->leftJoin("role b","a.roleid=b.id")->where([["b.level","=",1],["a.is_del","=",0]])->where($where)->column
  144. ("uid");
  145. if($post['islevel']==1){
  146. $post['uid']= $uid;
  147. }else{
  148. $post['nuid']=$uid;
  149. }
  150. unset($post["islevel"]);
  151. }
  152. $userinfo=GetList($post);
  153. if(empty($userinfo)||$userinfo['code']!=0){
  154. return app_show($userinfo['code'],$userinfo['msg']);
  155. }
  156. $data = $userinfo['data']['list'];
  157. $list=[];
  158. foreach ($data as $value){
  159. if(isset($value['company_relaton'])&& !empty($value['company_relaton'])){
  160. foreach ($value['company_relaton'] as &$item){
  161. $roleArr = Db::name("user_role")->alias("a")
  162. ->leftJoin("role b","a.roleid=b.id")
  163. ->where(["uid"=>$value['id'],"a.companyNo"=>$item['companyCode'],"is_del"=>0])
  164. ->field("role_name,roleid,a.status,b.level")->findOrEmpty();
  165. $item['roleid']=$roleArr['roleid']??"";
  166. $item['status']=$roleArr['status']??0;
  167. $item["role_name"] =$roleArr['role_name']??"";
  168. $item["role_level"] =$roleArr['level']??"";
  169. }
  170. }
  171. $value['roleid']=$roleArr['roleid']??"";
  172. $value['status']=$value['status']??0;
  173. $value["role_name"] =$roleArr['role_name']??"";
  174. $value["role_level"] =$roleArr['level']??"";
  175. $list[]=$value;
  176. }
  177. return app_show(0,"获取成功",["list"=>$list,"count"=>$userinfo['data']["count"]]);
  178. }
  179. /**获取当前访问用户的信息
  180. * @param token
  181. * @return \think\response\Json
  182. * @throws \think\exception\DbException
  183. */
  184. public function userInfo(){
  185. $post =$this->request->only(["token"=>"","relaComNo"=>""],"post","trim");
  186. $userinfo=GetUserInfo($post['token']);
  187. if(empty($userinfo)||$userinfo['code']!=0){
  188. return app_show(1002,"员工信息不存在");
  189. }
  190. $data = $userinfo['data'];
  191. $where=[["uid","=", $data['id']],["is_del","=",0]];
  192. if($post['relaComNo']!=""){
  193. $where[]=["companyNo","=",$post['relaComNo']];
  194. }else{
  195. $where[]=["is_main","=",1];
  196. }
  197. $role =Db::name("user_role")->where($where)->findOrEmpty();
  198. if(!empty($role)){
  199. $company_name = Db::name("supplier_info")->where(["code"=>$role['companyNo']])->value("name","");
  200. $roleinfo = Db::name("role")->where(["id"=>$role['roleid']])->field("role_name,level")->find();
  201. }else{
  202. return error_show(1004,'未开通登录权限');
  203. }
  204. if(!empty($data['company_relaton'])){
  205. $roleArr = Db::name("user_role")->alias("a")
  206. ->leftJoin("role b","a.roleid=b.id")
  207. ->where(["a.is_del"=>0,"a.uid"=>$data['id']])
  208. ->column("role_name,roleid,a.status,b.level","a.companyNo");
  209. foreach ($data['company_relaton'] as &$item){
  210. $item['roleid'] =isset($roleArr[$item['companyCode']])?$roleArr[$item['companyCode']]['roleid']:"";
  211. $item['role_name'] =isset($roleArr[$item['companyCode']])?$roleArr[$item['companyCode']]['role_name']:"";
  212. $item['role_status'] =isset($roleArr[$item['companyCode']])?$roleArr[$item['companyCode']]['status']:"";
  213. $item['role_level'] =isset($roleArr[$item['companyCode']])?$roleArr[$item['companyCode']]['level']:"";
  214. }
  215. }
  216. $data['role_name']=$roleinfo['role_name']??'';
  217. $data['company_name']=$company_name??'';
  218. $data['role_level']=$roleinfo['level']??'';
  219. $data['role_id']=$role['roleid']??'';
  220. $data['companyNo']=$role['companyNo']??'';
  221. $data['company_type']=$role['company_type']??'';
  222. return app_show(0,"获取成功",$data);
  223. }
  224. /**@param id int 账户id
  225. /**@param status int 状态 0/1
  226. * @return \think\response\Json|void
  227. */
  228. public function setStatus(){
  229. $post =$this->request->only(["id"=>"","status"=>"","token"=>""],"post");
  230. $valide =Validate::rule([
  231. 'id|账户ID' => 'require|number|gt:0',
  232. 'status|状态' => 'require|number|in:0,1',
  233. ]);
  234. if($valide->check($post)==false) return error_show(1004,$valide->getError());
  235. $message = $post['status']==1?"启用":"禁用";
  236. if($post['id']==$this->uid && $post['status']==0){
  237. return error_show(1004,'不可禁用当前账户');
  238. }
  239. Db::startTrans();
  240. try{
  241. $account = Db::name("user_role")->where(["uid"=>$post['id'],"is_del"=>0])->update(["status"=>$post['status'],"updatetime"=>date("Y-m-d H:i:s")]);
  242. if($account==false){
  243. throw new Exception("账户{$message}失败,账户未在系统中开通权限");
  244. }
  245. $condition=["id"=>$post['id'],"status"=>$post['status'],"token"=>$post['token']];
  246. $ex=setStatus($condition);
  247. if(!isset($ex['code'])||$ex['code']!=0){
  248. throw new Exception($ex['message']);
  249. }
  250. Db::commit();
  251. return app_show(0,"{$message}成功");
  252. }catch (\Exception $e){
  253. Db::rollback();
  254. return error_show(1006,$e->getMessage());
  255. }
  256. }
  257. public function setCompanyStatus(){
  258. $post =$this->request->only(["id"=>"","status"=>"","relaComNo"=>"","companyNo"=>"","token"=>""],"post");
  259. $valide =Validate::rule([
  260. 'id|账户ID' => 'require|number|gt:0',
  261. 'status|状态' => 'require|number|in:0,1',
  262. 'relaComNo|业务公司' => 'max:255',
  263. 'companyNo|公司编号' => 'require|max:255',
  264. ]);
  265. if($valide->check($post)==false) return error_show(1004,$valide->getError());
  266. $message = $post['status']==1?"启用":"禁用";
  267. if($post['id']==$this->uid &&$post['companyNo']==$post['relaComNo']&& $post['status']==0){
  268. return error_show(1004,'不可禁用当前账户');
  269. }
  270. Db::startTrans();
  271. try{
  272. $userinfo =Db::name("user_role")->where(["uid"=>$post['id'],"companyNo"=>$post['companyNo'],"is_del"=>0])->findOrEmpty();
  273. if(!empty($userinfo)){
  274. // if($userinfo['is_main']==1) throw new Exception("默认账户不可禁用!");
  275. $userinfo['status']=$post['status'];
  276. $userinfo['updatetime']=date("Y-m-d H:i:s");
  277. $sa=Db::name("user_role")->save($userinfo);
  278. if($sa==false) throw new Exception("状态更新失败!");
  279. }
  280. $condition=["account_id"=>$post['id'],"companyCode"=>$post['companyNo'],"status"=>$post['status'],"token"=>$post['token']];
  281. $effect=setCompanyStatus($condition);
  282. if(!isset($effect['code'])||$effect['code']!=0)throw new Exception($effect['message']);
  283. Db::commit();
  284. return app_show(0,"{$message}成功");
  285. }catch (\Exception $e){
  286. Db::rollback();
  287. return error_show(1004,$e->getMessage());
  288. }
  289. }
  290. //获取所有用户的信息
  291. public function userAll(){
  292. $post=$this->request->only(['relaComNo'=>"","companyNo"=>"","nickname"=>"","roleid"=>"","status"=>""],"post","trim");
  293. $condition = [["is_del","=",0]];
  294. $rolecond=" level in (1,2,3)";
  295. if($post['relaComNo']!=""){
  296. $condition[]=["companyNo","=",$post['relaComNo']];
  297. $rolecond = "level=1 or (level in (2,3) and companyNo ='{$post['relaComNo']}' )";
  298. }
  299. if($post['companyNo']!=""){
  300. $condition[]=["companyNo","=",$post['companyNo']];
  301. $rolecond = "level=1 or (level in (2,3) and companyNo ='{$post['companyNo']}' )";
  302. }
  303. if($post['roleid']!=""){
  304. $condition[]=["roleid","=",$post['roleid']];
  305. $rolecond = "id={$post['roleid']}";
  306. }
  307. if($post['status']!="")$condition[]=["status","=",$post['status']];
  308. if($post['nickname']!="")$condition[]=["nickname","like","%{$post['nickname']}%"];
  309. $list=Db::name("user_role")->where($condition)->select()->toArray();
  310. $role = Db::name("role")->whereRaw($rolecond)->column("role_name,level","id");
  311. foreach ($list as &$value){
  312. $value['role_name']= $role[$value['roleid']]['role_name']??"";
  313. $value['role_level']= $role[$value['roleid']]['level']??"";
  314. $value['companyName']= Db::name("supplier_info")->where(["code"=>$value['companyNo']])->value("name",'');
  315. }
  316. return app_show(0,"获取成功",$list);
  317. }
  318. /**
  319. * 修改用户基础信息
  320. */
  321. public function setRole(){
  322. $post=$this->request->only(["id"=>"","nickname"=>"","mobile"=>"","relaComNo"=>"","companyNo"=>"","roleid"=>"",
  323. "token"=>""],"post","trim");
  324. $valide=Validate::rule([
  325. "id|账户ID"=>"require|number|gt:0",
  326. "nickname|名称"=>"require|max:255",
  327. "mobile|手机号"=>"require|mobile",
  328. "relaComNo|业务公司"=>"max:255",
  329. "companyNo|业务公司"=>"max:255",
  330. "roleid|角色ID"=>"require|number",
  331. ]);
  332. if($valide->check($post)==false) return error_show(1004,$valide->getError());
  333. if($post['roleid']!=0){
  334. $roleinfo =Db::name("role")->where("id","=",$post['roleid'])->find();
  335. if(empty($roleinfo)){
  336. return error_show(1002,"角色不存在");
  337. }
  338. if($roleinfo['status']==0){
  339. return error_show(1002,"角色已禁用");
  340. }
  341. if($roleinfo['level']==1){
  342. return error_show(1002,"超管级别角色不允许设置");
  343. }
  344. }
  345. if($this->level==1){
  346. $companyNo = isset($post['companyNo'])&&$post['companyNo']!=='' ? trim($post['companyNo']) :"";
  347. }else{
  348. $companyNo = isset($post['relaComNo'])&&$post['relaComNo']!=='' ? trim($post['relaComNo']) :"";
  349. }
  350. if($companyNo==""){
  351. return error_show(1004,"业务公司编号不能为空");
  352. }
  353. $company =Db::name("supplier_info")->where(["code"=>$companyNo])->find();
  354. if($company==false){
  355. return error_show(1004,"业务公司不存在");
  356. }
  357. $isSuper = Db::name("user_role")->alias("a")
  358. ->leftJoin("role b","a.roleid=b.id")
  359. ->where(["a.uid"=>$post['id'],"a.is_del"=>0,"b.level"=>1])
  360. ->findOrEmpty();
  361. if(!empty($isSuper))return error_show(1002,"超管账户不允许设置其他角色");
  362. $userrole = Db::name("user_role")
  363. ->where(["uid"=>$post['id'],"companyNo"=>$companyNo,"is_del"=>0])
  364. ->find();
  365. $ismain =Db::name("user_role")->where(["uid"=>$post['id'],"is_main"=>1,"is_del"=>0])->find();
  366. Db::startTrans();
  367. try{
  368. if(empty($userrole)){
  369. $roledata =[
  370. "uid"=>$post['id'],
  371. "roleid"=>$post['roleid'],
  372. "nickname"=>$post['nickname'],
  373. "companyNo"=>$companyNo,
  374. "company_type"=>$company["type"]==3?2:1,
  375. "is_main"=>$ismain?0:1,
  376. "status"=>1,
  377. "addtime"=>date("Y-m-d H:i:s"),
  378. "updatetime"=>date("Y-m-d H:i:s")
  379. ];
  380. $companyarr=[
  381. [
  382. "companyCode"=>$company["code"],
  383. "companyName"=>$company["name"],
  384. "company_type"=>$company["type"]==3?2:1,
  385. "is_main"=>$ismain?0:1
  386. ]
  387. ];
  388. $companyinfo = ["id"=>$post['id'],"company"=>$companyarr,"token"=>$post['token']];
  389. $companyset =setUserCompany($companyinfo);
  390. if(!isset($companyset['code'])||$companyset['code']!=0){
  391. return error_show(1004,$companyset['message']);
  392. }
  393. $up= Db::name("user_role")->insert($roledata);
  394. }else{
  395. $userrole['roleid'] = $post['roleid'];
  396. $userrole['nickname'] = $post['nickname'];
  397. $userrole['companyNo'] = $companyNo;
  398. $userrole['company_type'] =$company["type"]==3?2:1;
  399. $userrole['updatetime'] = date("Y-m-d H:i:s");
  400. $up=Db::name("user_role")->where(["uid"=>$post['id'],"companyNo"=>$companyNo,"is_del"=>0])->save($userrole);
  401. }
  402. $saveinfo =[
  403. "id"=>$post['id'],
  404. "nickname"=>$post['nickname'],
  405. "mobile"=>$post['mobile'],
  406. "token"=>$post['token']
  407. ];
  408. $saev= resetinfo($saveinfo);
  409. if(!isset($saev['code'])||$saev['code']!=0){
  410. return error_show(1004,$saev['message']);
  411. }
  412. if($up==false){
  413. Db::rollback();
  414. return error_show(1004,'用户信息更新失败');
  415. }
  416. Db::commit();
  417. return app_show(0,'用户信息更新成功');
  418. }catch (\Exception $e){
  419. Db::rollback();
  420. return error_show(1004,$e->getMessage());
  421. }
  422. }
  423. /**获取用户关联业务公司
  424. * @return \think\response\Json|void
  425. * @throws \think\db\exception\DataNotFoundException
  426. * @throws \think\db\exception\DbException
  427. * @throws \think\db\exception\ModelNotFoundException
  428. */
  429. public function GetCompany(){
  430. $post=$this->request->only(["token"=>"","uid"=>"","companyName"=>"","page"=>1,"size"=>20],"post","trim");
  431. $where=[];
  432. if($post['uid']!=""){
  433. $where[]=["a.uid","=",$post['uid']];
  434. }else{
  435. $where[]=["a.uid","=",$this->uid];
  436. }
  437. if($post['companyName']!=""){
  438. $where[]=["b.name","like","%{$post['companyName']}%"];
  439. }
  440. $count = Db::name("user_role")->alias("a")
  441. ->leftJoin("supplier_info b","a.companyNo=b.code")
  442. ->where($where)
  443. ->count();
  444. $total =ceil($count/$post['size']);
  445. $page = $post['page']>$total ? intval($total):intval($post['page']);
  446. $list = Db::name("user_role")->alias("a")
  447. ->leftJoin("supplier_info b","a.companyNo=b.code")
  448. ->where($where)
  449. ->field("a.uid,a.nickname,roleid,companyNo,b.name as companyName,a.status,a.company_type")
  450. ->page($page,intval($post['size']))
  451. ->select()->toArray();
  452. foreach ($list as &$value){
  453. $value['role_name'] = Db::name("role")->where(["id"=>$value["roleid"]])->value("role_name","");
  454. }
  455. return app_show(0,'获取成功',["list"=>$list,"count"=>$count]);
  456. }
  457. //密码设置
  458. public function setPwd(){
  459. $post=$this->request->only(["id"=>"","password"=>""],"post","trim");
  460. $validate=Validate::rule([
  461. 'id|账户ID' => 'require|number',
  462. 'password|密码' => 'require|min:6|max:200',
  463. ]);
  464. if($validate->check($post)==false) return error_show(1004,$validate->getError());
  465. $data = resetpwd($post);
  466. if(empty($data)||$data['code']!=0){
  467. return error_show($data['code'],$data['message']);
  468. }else{
  469. return app_show(0,"密码修改成功");
  470. }
  471. }
  472. public function usersave(){
  473. $post=$this->request->only(["id"=>"","nickname"=>"","mobile"=>"","email"=>"","relaComNo"=>"","companyArr"=>[],"token"=>""],"post","trim");
  474. $validate=Validate::rule([
  475. 'id|账户ID' => 'number',
  476. 'nickname|真实姓名' => 'require|min:2|max:200',
  477. 'mobile|手机号' => 'require|number|length:11|mobile',
  478. 'email|邮箱' => 'email',
  479. 'companyArr|关联账户' => 'array',
  480. ]);
  481. if($validate->check($post)==false) return error_show(1004,$validate->getError());
  482. if(!empty($post['companyArr'])){
  483. foreach ($post['companyArr'] as &$item){
  484. $company =Db::name("supplier_info")->where(["code"=>$item['companyCode']])->find();
  485. $item['company_type'] = $company["type"]==3?2:1;
  486. }
  487. }
  488. if($post['id']!=""){
  489. $isSuper = Db::name("user_role")->alias("a")
  490. ->leftJoin("role b","a.roleid=b.id")
  491. ->where(["a.uid"=>$post['id'],"a.is_del"=>0,"b.level"=>1])
  492. ->findOrEmpty();
  493. if(!empty($isSuper) && !empty($post['companyArr']))return error_show(1002,"超管账户不允许设置关联业务公司");
  494. $saveinfo =[
  495. "id"=>$post['id'],
  496. "nickname"=>$post['nickname'],
  497. "mobile"=>$post['mobile'],
  498. "token"=>$post['token']
  499. ];
  500. $saev= resetinfo($saveinfo);
  501. if(!isset($saev['code'])||$saev['code']!=0){
  502. return error_show(1004,$saev['message']);
  503. }
  504. if(!empty($post['companyArr'])){
  505. $companyinfo = ["id"=>$post['id'],"company"=>$post['companyArr'],"token"=>$post['token']];
  506. $companyset =setUserCompany($companyinfo);
  507. if(!isset($companyset['code'])||$companyset['code']!=0){
  508. return error_show(1004,$companyset['message']);
  509. }
  510. }
  511. }else{
  512. $userrole=[];
  513. if($post['relaComNo']!=""){
  514. $company =Db::name("supplier_info")->where(["code"=>$post['relaComNo']])->find();
  515. if($company){
  516. $temp = [
  517. "companyCode"=>$company["code"],
  518. "companyName"=>$company["name"],
  519. "company_type"=>$company["type"]==3?2:1,
  520. "is_main"=>1,
  521. ];
  522. $post['companyArr'][]=$temp;
  523. }
  524. }else{
  525. if(!empty($post['companyArr'])){
  526. foreach ($post['companyArr'] as &$item){
  527. $company =Db::name("supplier_info")->where(["code"=>$item['companyCode']])->find();
  528. $item['company_type'] = $company["type"]==3?2:1;
  529. }
  530. }else{
  531. $post['companyArr'][]= [
  532. "companyCode"=>'',
  533. "companyName"=>'',
  534. "company_type"=>0,
  535. "is_main"=>1,
  536. ];
  537. $userrole=[
  538. "uid"=>0,
  539. "nickname"=>'',
  540. "roleid"=>1,
  541. "companyNo"=>'',
  542. "company_type"=>'',
  543. "status"=>1,
  544. "is_main"=>1,
  545. "is_del"=>0,
  546. "addtime"=>date("Y-m-d H:i:s"),
  547. "updatetime"=>date("Y-m-d H:i:s"),
  548. ];
  549. }
  550. }
  551. $nam = addacount($post);
  552. if(!isset($nam['code'])||$nam['code']!=0){
  553. return error_show(1004,$nam['message']);
  554. }
  555. if (!empty($userrole)){
  556. $userrole['uid'] = $nam['data']["userid"];
  557. $userrole['nickname'] = $nam['data']["nickname"];
  558. $up =Db::name("user_role")->insert($userrole);
  559. if($up==false){
  560. return error_show(1004,'账户超管角色分配失败');
  561. }
  562. }
  563. }
  564. return $post['id']==""?app_show(0,"账户新建成功"):app_show(0,"账户编辑成功");
  565. }
  566. }