Index.php 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602
  1. <?php
  2. namespace app\admin\controller;
  3. use think\Controller;
  4. use think\Request;
  5. use think\Db;
  6. use think\Session;
  7. use Endroid\QrCode\QrCode;
  8. class Index extends Controller
  9. {
  10. //登录的函数
  11. public function login(Request $request)
  12. {
  13. if ($request->isPost()){
  14. $data =input();
  15. $login = model('Login');
  16. if($login->login($data)){
  17. return json(['Code'=>'00','msg'=>'登录成功']);
  18. }else{
  19. return json(['Code'=>'01','msg'=>'用户名或者密码不正确']);
  20. }
  21. } else {
  22. return view('login');
  23. }
  24. }
  25. public function qrcode()
  26. {
  27. $appid = "wx6ddfdda51d6a1a19";
  28. $time = time();
  29. $redirect_url = "http://www.xzh8.cn/index/admin_weixin_login/index?time=$time";
  30. $state = str_shuffle("abcdef").mt_rand(1,10).$time;
  31. $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_url&response_type=code&scope=snsapi_base&state=$state#wechat_redirect";
  32. $srcUrl = sprintf("http://qr.liantu.com/api.php?text=%s,",urlencode($url));
  33. $this->assign('srcUrl',$srcUrl);
  34. $this->assign('state',$state);
  35. return $this->fetch();
  36. }
  37. //-----------区域------------
  38. public function region()
  39. {
  40. $region = Db::name('region')->select();
  41. $this->assign('region',$region);
  42. return $this->fetch();
  43. }
  44. public function getRegion()
  45. {
  46. $data = Db::name('region')->where(['status'=>0])->select();
  47. return $data;
  48. }
  49. public function editRegion(Request $request)
  50. {
  51. $id = $request->param('id');
  52. if($request->isPost() && $request->isAjax()){
  53. $username = $request->param('username');
  54. $res = Db::name('region')->where('id',$id)->update(['username'=>$username]);
  55. if($res){
  56. return json(['status'=>1,'message'=>'修改成功']);
  57. }else{
  58. return json(['status'=>0,'message'=>'未进行修改']);
  59. }
  60. }
  61. $region = Db::name('region')->where('id',$id)->find();
  62. $this->assign('region',$region);
  63. return $this->fetch();
  64. }
  65. public function delRegion(Request $request)
  66. {
  67. $id = $request->param('id');
  68. $res = Db::name('region')->delete($id);
  69. if($res){
  70. $this->success('删除成功','region');
  71. exit;
  72. }
  73. }
  74. public function addRegion(Request $request)
  75. {
  76. if($request->isAjax() && $request->isPost()){
  77. $data = $request->param();
  78. $data['create_time'] = time();
  79. $res = Db::name('region')->insert($data);
  80. if($res){
  81. echo json_encode(['status'=>1,'message'=>'增加成功']);
  82. exit;
  83. }else{
  84. echo json_encode(['status'=>0,'message'=>'增加失败']);
  85. exit;
  86. }
  87. }
  88. return $this->fetch();
  89. }
  90. public function weixinLogin(Request $request)
  91. {
  92. $code = $request->param('state');
  93. $uid = Db::name('login')->where(['code'=>$code])->value('uid');
  94. if($uid){
  95. Db::name('login')->where('uid',$uid)->setField('code',null);
  96. session::set('admin_user',$uid);
  97. return $uid;
  98. }else{
  99. return false;
  100. }
  101. }
  102. // 管理员配置设置
  103. public function configsave(Request $request){
  104. if ($request->isPost()){
  105. $data =input();
  106. $result = Db::name('admin')->where(['id'=>1])->update($data);
  107. if($result!==false){
  108. return json(['code'=>'00','msg'=>'保存成功']);
  109. }else{
  110. return json(['code'=>'01','msg'=>'保存失败']);
  111. }
  112. } else {
  113. return json(['code'=>'01','msg'=>'访问方式错误']);
  114. }
  115. }
  116. //管理员权限
  117. public function adminAuthorty()
  118. {
  119. $admin_user = session::get('admin_user');
  120. if($admin_user){
  121. $admin_info = Db::name('admin')->where(['id'=>$admin_user])->find();
  122. return $admin_info;
  123. }
  124. }
  125. //======================================管理员首页=======================================
  126. public function index()
  127. {
  128. $admin_user = session::get('admin_user');
  129. if($admin_user){
  130. //获取整个网站的信息
  131. $admin_info = Db::name('admin')->where(['id'=>$admin_user])->find(); //管理员信息
  132. $time_info = date("Y-m-d"); //当前时间
  133. $user_num = Db::name('user')->count(); //当前注册用户数
  134. $merchants_num = Db::name('admin')->count(); //当前商户数
  135. $this->assign('admin_info',$admin_info);
  136. $this->assign('time_info',$time_info);
  137. $this->assign('user_num',$user_num);
  138. $this->assign('merchants_num',$merchants_num-1);
  139. return view();
  140. }else{
  141. $this->redirect("admin/index/login");
  142. }
  143. }
  144. // ===================================订单页面========================================
  145. // 订单管理(可以查询订单)
  146. public function order(Request $request){
  147. $admin_user = session::get('admin_user');
  148. //此处需要多条件进行筛选,然后进行搜索信息
  149. $type = empty($request->param('type'))? "":$request->param('type');
  150. $keyword = empty($request->param('keyword'))? "":$request->param('keyword');
  151. $statusValue = empty($request->param('statusValue')) ? "":$request->param('statusValue');
  152. if(empty($request->param('type'))){
  153. $where = [];
  154. }elseif(!empty($request->param('statusValue'))){
  155. $where[$type] = $statusValue;
  156. }else{
  157. $where[$type] = $keyword;
  158. }
  159. if($admin_user){
  160. $allowGroup = $this->adminAuthorty()['authority'];
  161. if($allowGroup){
  162. $allowGroupWhere['group'] = ['in',$allowGroup];
  163. }else{
  164. $allowGroupWhere = [];
  165. }
  166. $order_info = Db::name('repair_order')->where($where)->where($allowGroupWhere)->order('create_time desc')->paginate(15)->each(function($item, $key){
  167. $item['create_time'] =date("Y-m-d H:i",$item['create_time']);
  168. if($item['repuser']){
  169. $user_info = Db::name('user')->where(['openid'=>$item['repuser']])->find();
  170. $item['repuser'] = $user_info['username'];
  171. }
  172. return $item;
  173. });
  174. $this->assign('order_info',$order_info); //订单信息
  175. return view();
  176. }else{
  177. $this->redirect("admin/index/login");
  178. }
  179. }
  180. //查看某一个详细的订单
  181. public function order_info(Request $request){
  182. $admin_user = session::get('admin_user'); //判断当前登录者
  183. if($admin_user){
  184. $data = input();
  185. $order_id = $data['orderid'];
  186. $order_info = Db::name('repair_order')->where(['order_id'=>$order_id])->find(); //根据订单获取到
  187. $user_info = Db::name('user')->where(['openid'=>$order_info['repuser']])->find();
  188. $order_info['repuser'] = $user_info['username'];
  189. $this->assign('order_info',$order_info);
  190. return view();
  191. }else{
  192. $this->redirect("admin/index/login");
  193. }
  194. }
  195. // 编辑某个订单
  196. public function edit_order_info(Request $request){
  197. $admin_user = session::get('admin_user'); //判断当前登录者
  198. if($admin_user){
  199. $data = input();
  200. // 如果是post数据(更改数据)
  201. if($request->isPost()){
  202. $data['update_time'] = time(); //订单更新时间
  203. unset($data['create_time']); //创建时间不需要更改
  204. $result = Db::name('repair_order')->where(['order_id'=>$data['order_id']])->update($data);
  205. if($result){
  206. $this->redirect("admin/index/order"); //订单列表
  207. }else{
  208. $this->error();
  209. }
  210. }else{
  211. //如果是get请求,就再次把数据渲染一下
  212. $order_id = $data['orderid'];
  213. $order_info = Db::name('repair_order')->where(['order_id'=>$order_id])->find(); //根据订单获取到
  214. $this->assign('order_info',$order_info);
  215. return view();
  216. }
  217. }else{
  218. $this->redirect("admin/index/login");
  219. }
  220. }
  221. //====================================用户页面============================================
  222. //用户管理
  223. public function user(Request $request){
  224. $admin_user = session::get('admin_user');
  225. $type = empty($request->param('type'))?'':$request->param('type'); //筛选的条件
  226. $keyword = empty($request->param('keyword'))?'':$request->param('keyword'); //筛选的文字
  227. $is_register = empty($request->param('is_register'))? "": $request->param('is_register');
  228. $is_check = empty($request->param('is_check'))? "": $request->param('is_check');
  229. $region = empty($request->param('region')) ? "": $request->param('region');
  230. $group = empty($request->param('group')) ? "": $request->param('group');
  231. if(empty($request->param('type'))){
  232. $where = [];
  233. }elseif (!empty($request->param('is_register'))){
  234. $where[$type] = $is_register;
  235. }elseif (!empty($request->param('is_check'))){
  236. $where[$type] = $is_check;
  237. }elseif(!empty($request->param('region'))){
  238. $where[$type] = $region;
  239. }elseif(!empty($request->param('group'))){
  240. $where[$type] = $group;
  241. }else{
  242. $where[$type] = $keyword;
  243. }
  244. $allowGroup = $this->adminAuthorty()['authority'];//获取允许访问的组
  245. if($allowGroup){
  246. $allowGroupWhere['group'] = ['in',$allowGroup];
  247. }else{
  248. $allowGroupWhere = [];
  249. }
  250. $group = Db::name('group')->select();//获取所有组
  251. $region = Db::name('region')->select();//获取所有区域
  252. if($admin_user){
  253. $user_info = Db::name('user')->where($allowGroupWhere)->where($where)->paginate(10)->each(function($item, $key){
  254. $item['addtime'] =date("Y-m-d H:i",$item['addtime']);
  255. $group_info = Db::name('group')->where(['id'=>$item['group']])->find();
  256. $item['group'] = $group_info['name'];
  257. return $item;
  258. });
  259. $this->assign('user_info',$user_info); //订单信息
  260. $this->assign('group',$group);
  261. $this->assign('region',$region);
  262. return view();
  263. }else{
  264. $this->redirect("admin/index/login");
  265. }
  266. }
  267. //添加用户
  268. public function add_user(Request $request){
  269. $admin_user = session::get('admin_user');
  270. if($admin_user){
  271. if($request->isPost()){
  272. $data = input(); //获取到数据
  273. $data['addtime'] = time();
  274. $data['is_register'] = 1; //注册用户
  275. $result = Db::name('user')->insert($data);
  276. if($result){
  277. $this->redirect("admin/index/user");
  278. }else{
  279. $this->error();
  280. }
  281. }else{
  282. $group_info = Db::name('group')->select(); //获取分组信息
  283. $this->assign('group_info',$group_info); //渲染分组信息
  284. return view();
  285. }
  286. }else{
  287. $this->redirect("admin/index/login");
  288. }
  289. }
  290. //查看具体用户
  291. public function user_info(){
  292. $admin_user = session::get('admin_user'); //判断当前登录者
  293. if($admin_user){
  294. $data = input();
  295. $user_id = $data['user_id'];
  296. $user_info = Db::name('user')->where(['id'=>$user_id])->find(); //获取用户的信息
  297. $group_info = Db::name('group')->where(['id'=>$user_info['group']])->find(); //根据用户的信息获取到分组信息
  298. $user_region = Db::name('region')->where(['id'=>$user_info['region']])->value('username');
  299. $user_info['group'] = $group_info['name'];
  300. $user_info['region'] = $user_region;
  301. $user_order_info = Db::name('repair_order')->where(['openid'=>$user_info['openid']])->order('create_time desc')->paginate(15)->each(function($item, $key){
  302. $repuser_data = Db::name('user')->where(['openid'=>$item['repuser']])->find();
  303. $item['repuser'] = $repuser_data['username'];
  304. $item['create_time'] =date("Y-m-d H:i",$item['create_time']);
  305. return $item;
  306. }); //获取用户
  307. $this->assign('user_info',$user_info); //用户信息
  308. $this->assign('user_order_info',$user_order_info); //用户的订单信息
  309. return view();
  310. }else{
  311. $this->redirect("admin/index/login");
  312. }
  313. }
  314. //编辑用户
  315. public function edit_user_info(Request $request){
  316. $admin_user = session::get('admin_user'); //判断当前登录者
  317. if($admin_user){
  318. $data = input(); //获取请求的数据
  319. if($request->isPost()){
  320. $result = Db::name('user')->where(['id'=>$data['id']])->update($data);
  321. if($result){
  322. $user = Db::name('user')->where(['id'=>$data['id']])->find();
  323. if($user['identity'] != 99){
  324. $admin = Db::name('admin')->where(['openid'=>$user['openid']])->update(['status'=>1]);
  325. }else{
  326. $admin = Db::name('admin')->where(['openid'=>$user['openid']])->update(['status'=>0]);
  327. }
  328. $this->success('修改成功','user');
  329. }else{
  330. $this->error();
  331. }
  332. }else{
  333. //如果是get请求,就再次把数据渲染一下
  334. $user_id = $data['user_id']; //获取用户的id
  335. $user_info = Db::name('user')->where(['id'=>$user_id])->find(); //获取用户的信息
  336. $user_group = empty($user_info['group']) ? 1:$user_info['group'];
  337. $group_info = Db::name('group')->select();
  338. $this->assign('user_info',$user_info); //用户信息
  339. $this->assign('region',$this->findRegion($user_group));
  340. $this->assign('group_info',$group_info); //分组信息
  341. return view();
  342. }
  343. }else{
  344. $this->redirect("admin/index/login");
  345. }
  346. }
  347. public function findRegion($user_group='1')
  348. {
  349. if(isset($_GET['id'])){
  350. $id = $_GET['id'];
  351. $id = Db::name('group')->where(['id'=>$id])->value('region');
  352. $region = Db::name('region')->where('id','in',$id)->select();
  353. return json($region);
  354. }else{
  355. $id = Db::name('group')->where(['id'=>$user_group])->value('region');
  356. $region = Db::name('region')->where('id','in',$id)->select();
  357. return $region;
  358. }
  359. }
  360. // 订单评论
  361. public function order_message(Request $request){
  362. $admin_user = session::get('admin_user'); //判断当前登录者
  363. if($admin_user){
  364. if($request->isPost()){
  365. $data = input(); //获取请求的数据
  366. $result = Db::name('repair_order')->where(['order_id'=>$data['order_id']])->update($data);
  367. if($result){
  368. $this->success();
  369. }else{
  370. $this->error();
  371. }
  372. }else{
  373. $data = input(); //获取请求的数据
  374. //如果是get请求,就再次把数据渲染一下
  375. $order_id = $data['orderid']; //获取订单的id
  376. $order_info = Db::name('repair_order')->where(['order_id'=>$order_id])->find(); //获取订单的信息
  377. $this->assign('order_info',$order_info); //分组信息
  378. return view();
  379. }
  380. }else{
  381. $this->redirect("admin/index/login");
  382. }
  383. }
  384. //====================================================分组页面===========================================//
  385. //查看分组
  386. public function group(){
  387. $admin_user = session::get('admin_user');
  388. $type = isset($_GET['type'])?$_GET['type']:''; //筛选的条件
  389. $keyword = isset($_GET['keyword'])?$_GET['keyword']:''; //筛选的文字
  390. if($admin_user){
  391. $where =[];
  392. if($type == 1 && $keyword){
  393. $group_name = $keyword; //获取条件
  394. $where['name'] = array('like', "%$group_name%"); //模糊查询
  395. }
  396. $group_info = Db::name('group')->where($where)->paginate(15)->each(function($item, $key){
  397. $result = Db::name('region')->where('id','in',$item['region'])->select();
  398. $item['regionName'] = $result;
  399. return $item;
  400. });
  401. $this->assign('group_info',$group_info); //分组的信息
  402. return view();
  403. }else{
  404. $this->redirect("admin/index/login");
  405. }
  406. }
  407. // 编辑分组
  408. public function edit_group(Request $request){
  409. $admin_user = session::get('admin_user'); //判断当前登录者
  410. if($admin_user){
  411. $data = input(); //获取请求的数据
  412. if($request->isPost()){
  413. if(!empty($data['region'])){
  414. $data['region'] = implode(',',$data['region']);
  415. }else{
  416. $data['region'] = "";
  417. }
  418. $region = Db::name('group')->where(['id'=>$data['id']])->value('region');
  419. $res = Db::name('region')->where('id','in',$region)->update(['status'=>0]);
  420. $resu = Db::name('region')->where('id','in',$data['region'])->update(['status'=>1]);
  421. $result = Db::name('group')->where(['id'=>$data['id']])->update($data);
  422. $this->success('修改成功','group');
  423. }else{
  424. //如果是get请求,就再次把数据渲染一下
  425. $group_id = $data['group_id']; //获取分组的id
  426. $group_info = Db::name('group')->where(['id'=>$group_id])->find(); //获取分组的信息
  427. $group_region = Db::name('region')->where('id','in',$group_info['region'])->whereor('status',0)->select();
  428. $this->assign('group_info',$group_info);
  429. $this->assign('region',$group_region);
  430. return view();
  431. }
  432. }else{
  433. $this->redirect("admin/index/login");
  434. }
  435. }
  436. //添加分组
  437. public function add_group(Request $request){
  438. $admin_user = session::get('admin_user');
  439. if($admin_user){
  440. if($request->isPost()){
  441. $data = input(); //获取到数据
  442. if(!empty($data['region'])){
  443. $data['region'] = implode(',',$data['region']);
  444. }else{
  445. $data['region'] = "";
  446. }
  447. $retion = Db::name('region')->where('id','in',$data['region'])->update(['status'=>1]);
  448. $data['addtime'] = time();
  449. $result = Db::name('group')->insert($data);
  450. if($result ){
  451. $this->redirect("admin/index/group");
  452. }else{
  453. $this->error();
  454. }
  455. }else{
  456. $this->assign('region',$this->getRegion());
  457. return view();
  458. }
  459. }else{
  460. $this->redirect("admin/index/login");
  461. }
  462. }
  463. public function del_group(Request $request)
  464. {
  465. $id = $request->param('group_id');
  466. $result = Db::name('group')->delete($id);
  467. if($result){
  468. header('Location: /admin/index/group');
  469. exit;
  470. }
  471. }
  472. //========================================================退出登录==========================================//
  473. // 退出登录
  474. public function loginout(){
  475. session::delete('admin_user');
  476. $this->redirect("admin/index/login");
  477. }
  478. }