User.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364
  1. <?php
  2. declare (strict_types = 1);
  3. namespace app\admin\controller;
  4. use app\admin\BaseController;use think\App;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',
  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. $saveinfo =[
  21. "id"=>$post['id'],
  22. "nickname"=>$post['nickname'],
  23. "mobile"=>$post['mobile'],
  24. "token"=>$post['token']
  25. ];
  26. $saev= resetinfo($saveinfo);
  27. if(!isset($saev['code'])||$saev['code']!=0){
  28. return error_show(1004,$saev['message']);
  29. }
  30. $companyinfo = ["id"=>$post['id'],"company"=>$post['companyArr'],"token"=>$post['token']];
  31. $companyset =setUserCompany($companyinfo);
  32. if(!isset($companyset['code'])||$companyset['code']!=0){
  33. return error_show(1004,$companyset['message']);
  34. }
  35. return app_show(0,"设置成功");
  36. }
  37. /**
  38. * 用户列表
  39. */
  40. public function userList(){
  41. $post=$this->request->only(["token"=>"","nickname"=>"","relaComNo"=>"","islevel"=>"","username"=>"","companyNo"=>"","status"=>"","page"=>1,"size"=>10],"post");
  42. $post['companyNo']==""? ($post['companyNo']=$post['relaComNo']??""):"";
  43. $where=[["a.is_del","=",0]];
  44. unset($post['relaComNo']);
  45. if($post['companyNo']!=""){
  46. $where[]=["a.companyNo","=",$post['companyNo']];
  47. }
  48. if($post['status']!==''){
  49. $uid =Db::name("user_role")->alias("a")->where(["status"=>1,"is_del"=>0])->where($where)->column("uid");
  50. if($post['status']==1){
  51. $where[]=["a.status","=",1];
  52. $post['uid']= $uid;
  53. }else{
  54. $post['nouid']=$uid;
  55. }
  56. unset($post['status']);
  57. }
  58. if($post["islevel"]!=""){
  59. $where[]=["b.level","=",1];
  60. $uid =Db::name("user_role")->alias("a")
  61. ->leftJoin("role b","a.roleid=b.id")->where($where)->column("uid");
  62. if($post['islevel']==1){
  63. $post['uid']= $uid;
  64. }else{
  65. $post['nouid']=$uid;
  66. }
  67. unset($post["islevel"]);
  68. }
  69. $userinfo=GetUserList($post);
  70. if(empty($userinfo)||$userinfo['code']!=0){
  71. return app_show($userinfo['code'],$userinfo['msg']);
  72. }
  73. $data = $userinfo['data']['list'];
  74. $roleArr = Db::name("user_role")->alias("a")
  75. ->leftJoin("role b","a.roleid=b.id")
  76. ->where($where)
  77. ->column("role_name,roleid,a.status,b.level","a.companyNo");
  78. $list=[];
  79. foreach ($data as $value){
  80. $value['roleid']=$roleArr[$value['companyCode']]['roleid']??"";
  81. $value['com_status']=$roleArr[$value['companyCode']]['status']??"";
  82. $value["role_name"] =$roleArr[$value['companyCode']]['role_name']??"";
  83. $value["role_level"] =$roleArr[$value['companyCode']]['level']??"";
  84. $list[]=$value;
  85. }
  86. return app_show(0,"获取成功",["list"=>$list,"count"=>$userinfo['data']["count"]]);
  87. }
  88. /**获取当前访问用户的信息
  89. * @param token
  90. * @return \think\response\Json
  91. * @throws \think\exception\DbException
  92. */
  93. public function userInfo(){
  94. $post =$this->request->only(["token"=>"","relaComNo"=>""],"post","trim");
  95. $userinfo=GetUserInfo($post['token']);
  96. if(empty($userinfo)||$userinfo['code']!=0){
  97. return app_show(1002,"员工信息不存在");
  98. }
  99. $data = $userinfo['data'];
  100. $where=[["uid","=", $data['id']],["status","=",1],["is_del","=",0]];
  101. if($post['relaComNo']!=""){
  102. $where[]=["companyNo","=",$post['relaComNo']];
  103. }else{
  104. $where[]=["is_main","=",1];
  105. }
  106. $role =Db::name("user_role")->where($where)->findOrEmpty();
  107. if(!empty($role)){
  108. $company_name = Db::name("supplier_info")->where(["code"=>$role['companyNo']])->value("name","");
  109. $roleinfo = Db::name("role")->where(["id"=>$role['roleid']])->field("role_name,level")->find();
  110. }else{
  111. return error_show(1004,'未开通登录权限');
  112. }
  113. if(!empty($data['company_relaton'])){
  114. $roleArr = Db::name("user_role")->alias("a")
  115. ->leftJoin("role b","a.roleid=b.id")
  116. ->where(["a.status"=>1,"a.is_del"=>0,"a.uid"=>$data['id']])
  117. ->column("role_name,roleid,a.status,b.level","a.companyNo");
  118. foreach ($data['company_relaton'] as &$item){
  119. $item['roleid'] =isset($roleArr[$item['companyCode']])?$roleArr[$item['companyCode']]['roleid']:"";
  120. $item['role_name'] =isset($roleArr[$item['companyCode']])?$roleArr[$item['companyCode']]['role_name']:"";
  121. $item['role_status'] =isset($roleArr[$item['companyCode']])?$roleArr[$item['companyCode']]['status']:"";
  122. $item['role_level'] =isset($roleArr[$item['companyCode']])?$roleArr[$item['companyCode']]['level']:"";
  123. }
  124. }
  125. $data['role_name']=$roleinfo['role_name']??'';
  126. $data['company_name']=$company_name??'';
  127. $data['role_level']=$roleinfo['level']??'';
  128. $data['role_id']=$role['roleid']??'';
  129. $data['companyNo']=$role['companyNo']??'';
  130. $data['company_type']=$role['company_type']??'';
  131. return app_show(0,"获取成功",$data);
  132. }
  133. /**
  134. * @return \think\response\Json|void
  135. * @throws \think\db\exception\DataNotFoundException
  136. * @throws \think\db\exception\DbException
  137. * @throws \think\db\exception\ModelNotFoundException
  138. */
  139. public function setStatus(){
  140. $post =$this->request->only(["id"=>"","status"=>"","relaComNo"=>"","token"=>""],"post");
  141. $valide =Validate::rule([
  142. 'id|账户ID' => 'require|number|gt:0',
  143. 'status|状态' => 'require|number|in:0,1',
  144. 'relaComNo|业务公司' => 'require|max:255',
  145. ]);
  146. if($valide->check($post)==false) return error_show(1004,$valide->getError());
  147. $message = $post['status']==1?"启用":"禁用";
  148. $userinfo =Db::name("user_role")->where(["uid"=>$post['id'],"companyNo"=>$post['relaComNo'],"is_del"=>0])
  149. ->find();
  150. if($userinfo==false){
  151. return error_show(1005,"未找到有关账户信息");
  152. }else{
  153. $userinfo['status']=$post['status'];
  154. $userinfo['updatetime']=date("Y-m-d H:i:s");
  155. $sa=Db::name("user_role")->save($userinfo);
  156. }
  157. if($sa==false){
  158. return error_show(1005,"{$message}失败");
  159. }else{
  160. return app_show(0,"{$message}成功");
  161. }
  162. }
  163. //获取所有用户的信息
  164. public function userAll(){
  165. $post=$this->request->only(['relaComNo'=>"","companyNo"=>"","nickname"=>"","roleid"=>"","status"=>""],"post","trim");
  166. $condition = [["is_del","=",0]];
  167. $rolecond=" level in (1,2,3)";
  168. if($post['relaComNo']!=""){
  169. $condition[]=["companyNo","=",$post['relaComNo']];
  170. $rolecond = "level=1 or (level in (2,3) and companyNo ='{$post['relaComNo']}' )";
  171. }
  172. if($post['companyNo']!=""){
  173. $condition[]=["companyNo","=",$post['companyNo']];
  174. $rolecond = "level=1 or (level in (2,3) and companyNo ='{$post['companyNo']}' )";
  175. }
  176. if($post['roleid']!=""){
  177. $condition[]=["roleid","=",$post['roleid']];
  178. $rolecond = "id={$post['roleid']}";
  179. }
  180. if($post['status']!="")$condition[]=["status","=",$post['status']];
  181. if($post['nickname']!="")$condition[]=["nickname","like","%{$post['nickname']}%"];
  182. $list=Db::name("user_role")->where($condition)->select()->toArray();
  183. $role = Db::name("role")->whereRaw($rolecond)->column("role_name,level","id");
  184. foreach ($list as &$value){
  185. $value['role_name']= $role[$value['roleid']]['role_name']??"";
  186. $value['role_level']= $role[$value['roleid']]['level']??"";
  187. $value['companyName']= Db::name("supplier_info")->where(["code"=>$value['companyNo']])->value("name",'');
  188. }
  189. return app_show(0,"获取成功",$list);
  190. }
  191. /**
  192. * 修改用户基础信息
  193. */
  194. public function setRole(){
  195. $post=$this->request->only(["id"=>"","nickname"=>"","relaComNo"=>"","company_type"=>"","roleid"=>""],"post","trim");
  196. $valide=Validate::rule([
  197. "id|账户ID"=>"require|number|gt:0",
  198. "nickname|名称"=>"require|max:255",
  199. "relaComNo|业务公司"=>"require|max:255",
  200. "company_type|业务公司类型"=>"require|number|in:1,2",
  201. "roleid|角色ID"=>"require|number",
  202. ]);
  203. if($valide->check($post)==false) return error_show(1004,$valide->getError());
  204. if($post['roleid']!=0){
  205. $roleinfo =Db::name("role")->where("id","=",$post['roleid'])->find();
  206. if(empty($roleinfo)){
  207. return error_show(1002,"角色不存在");
  208. }
  209. if($roleinfo['status']==0){
  210. return error_show(1002,"角色已禁用");
  211. }
  212. }
  213. $userrole = Db::name("user_role")
  214. ->where(["uid"=>$post['id'],"companyNo"=>$post['relaComNo'],"is_del"=>0])
  215. ->find();
  216. Db::startTrans();
  217. try{
  218. if(empty($userrole)){
  219. $roledata =[
  220. "uid"=>$post['id'],
  221. "roleid"=>$post['roleid'],
  222. "nickname"=>$post['nickname'],
  223. "companyNo"=>$post['relaComNo'],
  224. "company_type"=>$post['company_type'],
  225. "status"=>1,
  226. "addtime"=>date("Y-m-d H:i:s"),
  227. "updatetime"=>date("Y-m-d H:i:s")
  228. ];
  229. $up= Db::name("user_role")->insert($roledata);
  230. }else{
  231. $userrole['roleid'] = $post['roleid'];
  232. $userrole['companyNo'] = $post['relaComNo'];
  233. $userrole['company_type'] =$post['company_type'];
  234. $userrole['updatetime'] = date("Y-m-d H:i:s");
  235. $up=Db::name("user_role")->save($userrole);
  236. }
  237. if($up==false){
  238. Db::rollback();
  239. return error_show(1004,'用户信息更新失败');
  240. }
  241. Db::commit();
  242. return app_show(0,'用户信息更新成功');
  243. }catch (\Exception $e){
  244. Db::rollback();
  245. return error_show(1004,$e->getMessage());
  246. }
  247. }
  248. /**获取用户关联业务公司
  249. * @return \think\response\Json|void
  250. * @throws \think\db\exception\DataNotFoundException
  251. * @throws \think\db\exception\DbException
  252. * @throws \think\db\exception\ModelNotFoundException
  253. */
  254. public function GetCompany(){
  255. $post=$this->request->only(["token"=>"","uid"=>"","companyName"=>"","page"=>1,"size"=>20],"post","trim");
  256. $where=[];
  257. if($post['uid']!=""){
  258. $where[]=["a.uid","=",$post['uid']];
  259. }else{
  260. $where[]=["a.uid","=",$this->uid];
  261. }
  262. if($post['companyName']!=""){
  263. $where[]=["b.name","like","%{$post['companyName']}%"];
  264. }
  265. $count = Db::name("user_role")->alias("a")
  266. ->leftJoin("supplier_info b","a.companyNo=b.code")
  267. ->where($where)
  268. ->count();
  269. $total =ceil($count/$post['size']);
  270. $page = $post['page']>$total ? intval($total):intval($post['page']);
  271. $list = Db::name("user_role")->alias("a")
  272. ->leftJoin("supplier_info b","a.companyNo=b.code")
  273. ->where($where)
  274. ->field("a.uid,a.nickname,roleid,companyNo,b.name as companyName,a.status,a.company_type")
  275. ->page($page,intval($post['size']))
  276. ->select()->toArray();
  277. foreach ($list as &$value){
  278. $value['role_name'] = Db::name("role")->where(["id"=>$value["roleid"]])->value("role_name","");
  279. }
  280. return app_show(0,'获取成功',["list"=>$list,"count"=>$count]);
  281. }
  282. //密码设置
  283. public function setPwd(){
  284. $post=$this->request->only(["id"=>"","password"=>""],"post","trim");
  285. $validate=Validate::rule([
  286. 'id|账户ID' => 'require|number',
  287. 'password|密码' => 'require|min:6|max:200',
  288. ]);
  289. if($validate->check($post)==false) return error_show(1004,$validate->getError());
  290. $data = resetpwd($post);
  291. if(empty($data)||$data['code']!=0){
  292. return error_show($data['code'],$data['message']);
  293. }else{
  294. return app_show(0,"密码修改成功");
  295. }
  296. }
  297. public function usersave(){
  298. $post=$this->request->only(["id"=>"","nickname"=>"","mobile"=>"","email"=>"","relaComNo"=>"","companyArr"=>[],"token"=>""],"post","trim");
  299. $validate=Validate::rule([
  300. 'id|账户ID' => 'number',
  301. 'nickname|真实姓名' => 'require|min:6|max:200',
  302. 'mobile|手机号' => 'require|number|length:11|mobile',
  303. 'email|邮箱' => 'email',
  304. 'companyArr|关联账户' => 'array',
  305. ]);
  306. if($validate->check($post)==false) return error_show(1004,$validate->getError());
  307. if($post['id']!=""){
  308. $saveinfo =[
  309. "id"=>$post['id'],
  310. "nickname"=>$post['nickname'],
  311. "mobile"=>$post['mobile'],
  312. "token"=>$post['token']
  313. ];
  314. $saev= resetinfo($saveinfo);
  315. if(!isset($saev['code'])||$saev['code']!=0){
  316. return error_show(1004,$saev['message']);
  317. }
  318. if($post['relaComNo']!=""){
  319. $company =Db::name("supplier_info")->where(["code"=>$post['relaComNo']])->find();
  320. if($company){
  321. $temp = [
  322. "companyCode"=>$company["code"],
  323. "companyName"=>$company["name"],
  324. "company_type"=>$company["type"]==3?2:1,
  325. "is_main"=>1,
  326. ];
  327. $post['companyArr'][]=$temp;
  328. }
  329. }
  330. if(!empty($post['companyArr'])){
  331. $companyinfo = ["id"=>$post['id'],"company"=>$post['companyArr'],"token"=>$post['token']];
  332. $companyset =setUserCompany($companyinfo);
  333. if(!isset($companyset['code'])||$companyset['code']!=0){
  334. return error_show(1004,$companyset['message']);
  335. }
  336. }
  337. }else{
  338. $nam = addacount($post);
  339. if(!isset($nam['code'])||$nam['code']!=0){
  340. return error_show(1004,$nam['message']);
  341. }
  342. }
  343. return $post['id']==""?app_show(0,"账户新建成功"):app_show(0,"账户新建失败");
  344. }
  345. }