Index.php 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532
  1. <?php
  2. namespace app\index\controller;
  3. use think\Controller;
  4. use think\Db;
  5. use \app\index\controller\Common;
  6. use think\Request;
  7. class Index extends Common
  8. {
  9. public function index(){
  10. echo "test";die;
  11. $userinfo = cookie('user');
  12. var_dump($userinfo);die;
  13. }
  14. //注册界面
  15. public function register(Request $request){
  16. $user_data = cookie('user'); //拿到用户的信息
  17. if($request->isPost()){
  18. $data =input(); //得到传递过来的信息
  19. $data['addtime']= time(); //添加时间
  20. $data['is_register']=1; //标记为已经注册
  21. $data['identity']='0'; //所有用户标记为报修者
  22. //判断是否有邀请码,是否过期。以及邀请码的有效期
  23. $code = isset($data['code'])?$data['code']:null; //获取二维码
  24. $config = db('admin')->where(['id'=>1])->find(); //获取管理员的配置信息
  25. if($code){
  26. $code_data = db('share')->where(['code'=>$code])->find();
  27. if(!$code_data){
  28. return json(['code'=>'01','msg'=>'无效验证码']);
  29. }
  30. $total_time = $code_data['addtime']+$config['code_time']*60;
  31. $time = time();
  32. if($time>$total_time){
  33. return json(['code'=>'01','msg'=>'验证码已过期']);
  34. }
  35. $data['is_check'] =1; //已经审核(通过就设置为已经审核)
  36. }
  37. unset($data['code']);
  38. $find = db('user')->where("openid","=",$user_data['openid'])->find();
  39. if(!$find){
  40. $data['nickname'] = $user_data['nickname'];
  41. $data['openid'] = $user_data['openid'];
  42. $data['headimgurl'] = $user_data['headimgurl'];
  43. $data['addtime'] = time();
  44. $datas = db('user')->insert($data);
  45. if($datas){
  46. return json(['code'=>'00','msg'=>'成功']);
  47. }else{
  48. return json(['code'=>'01','msg'=>'失败']);
  49. }
  50. }else{
  51. $result = db('user')->where("openid","=",$user_data['openid'])->update($data);
  52. if($result){
  53. return json(['code'=>'00','msg'=>'成功']);
  54. }else{
  55. return json(['code'=>'01','msg'=>'失败']);
  56. }
  57. }
  58. }else{
  59. $data = input(); //获取是否有参数
  60. $code = isset($data['num'])?$data['num']:null; //获取二维码
  61. $config = db('admin')->where(['id'=>1])->find(); //获取管理员的配置信息
  62. $this->assign('overdue',1);
  63. if($code){
  64. $code_data = db('share')->where(['code'=>$code])->find();
  65. $total_time = $code_data['addtime']+$config['code_time']*60;
  66. $time = time();
  67. if($time>$total_time){
  68. $this->assign('overdue',0);
  69. }
  70. }
  71. $result = db('user')->where("openid","=",$user_data['openid'])->find();
  72. $group_data = db('group')->select();
  73. if(!$result['is_register']){
  74. $this->assign('status',"0");
  75. }else{
  76. $this->assign('status',$result['is_register']);
  77. }
  78. $this->assign('code',$code); //code的显示
  79. $this->assign('group_data',$group_data); //分组数据
  80. return view();
  81. }
  82. }
  83. // 个人中心
  84. public function myinfo(){
  85. $user_data = cookie('user'); //拿到用户的信息
  86. $result = db('user')->where("openid","=",$user_data['openid'])->find(); //获取到用户的信息
  87. $repair_num = db('repair_order')->where("openid","=",$user_data['openid'])->count(); //报修记录的条数
  88. $poli_num = db('repair_order')->where("repuser","=",$user_data['openid'])->count(); //维修记录的条数
  89. $result['addtime'] = date("Y-m-d H:i",$result['addtime']);//对注册时间格式化
  90. $this->assign('userinfo',$result); //用户信息
  91. $this->assign('repair_num',$repair_num); //报修记录的条数
  92. $this->assign('poli_num',$poli_num); //维修记录的条数
  93. return view();
  94. }
  95. //编辑信息
  96. public function editMyinfo(Request $request){
  97. $user_data = cookie('user'); //拿到用户的信息
  98. if($request->isPost()){
  99. $data = input(); //获取过来的信息
  100. $result = db('user')->where("openid","=",$user_data['openid'])->update($data);
  101. if($result){
  102. return json(['code'=>'00','msg'=>'成功']);
  103. }else{
  104. return json(['code'=>'01','msg'=>'失败']);
  105. }
  106. }else{
  107. $result = db('user')->where("openid","=",$user_data['openid'])->find(); //获取到用户的信息
  108. $this->assign('userinfo',$result);
  109. return view();
  110. }
  111. }
  112. // 报修订单(提交)
  113. public function repairs(Request $request){
  114. $user_data = cookie('user'); //拿到用户的信息
  115. if($request->isPost()){
  116. $data =input(); //获取用户提交的数据
  117. // 需要组装一下信息
  118. $data['order_id'] = date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8); //创建订单号码
  119. $data['type'] =''; //订单类别(暂时没有)
  120. $data['create_time'] = time(); //订单创建时间
  121. $data['update_time'] = time(); //订单更新时间
  122. $data['openid'] = $user_data['openid']; //获得openid
  123. $group = Db::name('user')->where('openid', $data['openid'])->field('group')->find();
  124. $data['group'] = $group['group'];
  125. $add_data = db('repair_order')->insert($data); //插入数据
  126. $openid_result = db('user')->where('identity','in', '1,2')->where(['is_check'=>'1'])->field('openid')->select();
  127. array_push($openid_result,['openid'=>$user_data['openid']]);
  128. $time = time();
  129. $openid_result = array_unique($openid_result, SORT_REGULAR);
  130. foreach ($openid_result as $key => $value) {
  131. $message_result = $this->sendMessage($value['openid'],$data['order_id'],$data['linkman'],$data['linktel'],'订单状态:接单中','yb20xT_XekDUYJ8WpqbtU8mWFmnzmGo19j8HARQPTj0',$time); //调用模板消息
  132. }
  133. if($add_data){
  134. return json(['code'=>'00','msg'=>'成功']);
  135. }else{
  136. return json(['code'=>'01','msg'=>'失败']);
  137. }
  138. }else{
  139. $user_data = cookie('user'); //拿到用户的信息
  140. $result = db('user')->where("openid","=",$user_data['openid'])->find(); //获取到用户的信息
  141. $this->assign('result',$result); //获取用户的信息
  142. return view(); //展示页面
  143. }
  144. }
  145. /**
  146. * 转单
  147. * @param Request $request
  148. * @return \think\response\Json
  149. */
  150. public function transferOrder(Request $request)
  151. {
  152. $user_data = cookie('user'); //拿到用户的信息
  153. if($request->isPost()){
  154. $data = input();
  155. $add_data['update_time'] = time(); //更新时间为当前时间
  156. $add_data['status'] = 3; //订单状态更改为 转单
  157. $result = db('repair_order')->where("order_id","=",$data['orderid'])->update($add_data); //更新订单的数据
  158. if(!$result){
  159. return json(['code'=>'01','msg'=>'失败']);
  160. }
  161. $order_info = db('repair_order')->where("order_id","=",$data['orderid'])->find(); //重新获取订单
  162. $userinfo = db('user')->where("openid","=",$order_info['openid'])->find(); //获取报修者的信息
  163. if($data['openid'] == $userinfo['openid']){
  164. $this->sendMessage($data['openid'],$order_info['order_id'],$order_info['linkman'],$order_info['linktel'],'订单状态:转单','yb20xT_XekDUYJ8WpqbtU8mWFmnzmGo19j8HARQPTj0',$order_info['create_time']); //调用模板消息
  165. }else{
  166. $this->sendMessage($data['openid'],$order_info['order_id'],$order_info['linkman'],$order_info['linktel'],'订单状态:转单','yb20xT_XekDUYJ8WpqbtU8mWFmnzmGo19j8HARQPTj0',$order_info['create_time']); //调用模板消息
  167. $this->sendMessage($userinfo['openid'],$order_info['order_id'],$order_info['linkman'],$order_info['linktel'],'订单状态:转单','yb20xT_XekDUYJ8WpqbtU8mWFmnzmGo19j8HARQPTj0',$order_info['create_time']); //调用模板消息
  168. }
  169. return json(['code'=>'00','msg'=>'成功']);
  170. }
  171. }
  172. // 报修记录
  173. public function repairsList(){
  174. $user_data = cookie('user'); //拿到用户的信息
  175. $userinfo = db('user')->where("openid","=",$user_data['openid'])->find(); //获取到用户的信息
  176. $result = db('repair_order')->where("openid","=",$user_data['openid'])->select(); //获取当前用户的订单信息
  177. $this->assign('order_list',$result); //订单的信息列表
  178. $this->assign('userinfo',$userinfo); //当前用户的信息
  179. return view();
  180. }
  181. // 报修单详情况(展示信息)
  182. public function repairsDetail(Request $request){
  183. $data = input(); //获取传递过来的数据
  184. $orderid = $data['orderid']; //获取到订单的id号码
  185. $user_data = cookie('user'); //拿到用户的信息
  186. $where=[
  187. 'order_id'=>$orderid,
  188. "openid"=>$user_data['openid']
  189. ];
  190. $result = db('repair_order')->where($where)->find(); //获取订单信息
  191. $this->assign('result',$result);
  192. return view();
  193. }
  194. // 报修者对订单的评论
  195. public function linkman_message(Request $request){
  196. if($request->isPost()){
  197. $data =input(); //获取传递过来的参数
  198. $result = db('repair_order')->where("order_id","=",$data['order_id'])->update($data); //更新订单的数据
  199. if($result){
  200. return json(['code'=>'00','msg'=>'成功']);
  201. }else{
  202. return json(['code'=>'01','msg'=>'失败']);
  203. }
  204. }else{
  205. $data = input();
  206. $order_id = $data['orderid']; //订单id
  207. $result = db('repair_order')->where("order_id","=",$order_id)->find();
  208. $this->assign('result',$result); //订单的信息
  209. return view();
  210. }
  211. }
  212. /**
  213. * 全部维修记录
  214. * @param Request $request
  215. * @return \think\response\View
  216. */
  217. public function allList(Request $request)
  218. {
  219. $user_data = cookie('user');
  220. $result = db('user')->where('openid','=',$user_data['openid'])->find();
  221. $order_list = db('repair_order')->select();
  222. if(!empty($request->param('status'))){
  223. $status = $request->param('status');//根据订单状态查询
  224. switch ($status)
  225. {
  226. case '4':
  227. $order_list = db('repair_order')->where('status','0')->select();
  228. break;
  229. case '1':
  230. $order_list = db('repair_order')->where('status','1')->select();
  231. break;
  232. case '2':
  233. $order_list = db('repair_order')->where('status','2')->select();
  234. break;
  235. case '3':
  236. $order_list = db('repair_order')->where('status','3')->select();
  237. break;
  238. }
  239. }
  240. $this->assign('userinfo',$result);
  241. $this->assign('order_list',$order_list);
  242. return view();
  243. }
  244. // 维修记录
  245. public function polist(){
  246. $user_data = cookie('user'); //拿到用户的信息
  247. $result = db('user')->where("openid","=",$user_data['openid'])->find(); //获取到用户的信息(获取的是维修者的信息)
  248. if(!$result){
  249. $notice = "无法查看维修记录";
  250. $this->assign('notice',$notice);
  251. }else{
  252. $order_list = db('repair_order')->where("repuser","=",$user_data['openid'])->select(); //获取维修者 订单的信息
  253. $this->assign('userinfo',$result); //用户的信息
  254. $this->assign('order_list',$order_list); //维修订单的信息
  255. return view();
  256. }
  257. }
  258. //维修记录详情单
  259. public function polistDetail(Request $request){
  260. $user_data = cookie('user'); //拿到用户的信息
  261. if($request->isPost()){
  262. $data =input(); //获取传递过来的参数
  263. $add_data['repuser'] = $user_data['openid']; //获取维修人
  264. $add_data['update_time'] = time(); //更新时间为当前时间
  265. $add_data['status'] = 2; //订单状态更改为 接单中
  266. $add_data['handle'] = $data['handle'];
  267. $result = db('repair_order')->where("order_id","=",$data['orderid'])->update($add_data); //更新订单的数据
  268. $order_info = db('repair_order')->where("order_id","=",$data['orderid'])->find(); //重新获取订单
  269. $userinfo = db('user')->where("openid","=",$order_info['repuser'])->find(); //获取报修者的信息
  270. $time = time();
  271. if($result && $order_info){
  272. $message_result = $this->sendMessage($order_info['openid'],$data['orderid'],$userinfo['username'],$userinfo['telephone'],'订单状态:已完成','haRLoUPGKx-JFYPtK6k9VAnCntI9B9cWBSQRTqt_KyI',$time); //调用模板
  273. if($message_result['errcode']=='0'){
  274. return json(['code'=>'00','msg'=>'成功']);
  275. }
  276. }else{
  277. return json(['code'=>'01','msg'=>'失败']);
  278. }
  279. }else{
  280. $data = input(); //获取传递过来的数据
  281. $orderid = $data['orderid']; //获取到订单的id号码
  282. $where=[
  283. 'order_id'=>$orderid,
  284. "repuser"=>$user_data['openid']
  285. ];
  286. $userinfo = db('user')->where("openid","=",$user_data['openid'])->find(); //获取用户的信息
  287. $result = db('repair_order')->where($where)->find(); //获取当前维修订单的信息
  288. $maintain = db('user')->where('identity','in','1,2')->where('is_check','1')->where('is_register','1')->select();
  289. $this->assign('maintain',$maintain);
  290. $this->assign('userinfo',$userinfo); //维修者的信息
  291. $this->assign('result',$result); //订单的信息
  292. return view();
  293. }
  294. }
  295. //模板消息的调用函数 (openid 订单号 报修人 联系电话 订单的状态 模板id)
  296. function sendMessage($openid,$keyword1,$keyword2,$keyword3,$remark,$templateId,$time) {
  297. $url="https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=".$this->accessToken; //获取到accesstoken
  298. $templateId = $templateId; // 模板id
  299. $post_data = array(
  300. "touser"=>$openid,
  301. "template_id"=>$templateId,
  302. "url"=>HOSTNAME."/index/index/qiaodan?order_id=".$keyword1,
  303. "data"=> array(
  304. "first" => array(
  305. "value"=>"报修订单的实时跟踪",
  306. "color"=>"#173177"
  307. ),
  308. "keyword1"=>array(
  309. "value"=>$keyword1,
  310. "color"=>"#173177",
  311. ),
  312. "keyword2"=>array(
  313. "value"=>$keyword2,
  314. "color"=>"#173177"
  315. ),
  316. "keyword3"=> array(
  317. "value"=>$keyword3,
  318. "color"=>"#173177"
  319. ),
  320. "keyword4"=> array(
  321. "value"=>date('Y-m-d H:i:s',$time),
  322. "color"=>"#173177"
  323. ),
  324. "remark"=> array(
  325. "value"=>$remark,
  326. "color"=>"#173177"
  327. ),
  328. )
  329. );
  330. //将上面的数组数据转为json格式
  331. $post_data = json_encode($post_data);
  332. //发起请求
  333. $result = http_curl($url,$post_data,'post');
  334. file_put_contents("moban.txt",$result);
  335. return $result;
  336. }
  337. public function qiaodan(Request $request){
  338. $user_data = cookie('user'); //拿到用户的信息
  339. if($request->isPost()){
  340. $data =input(); //获取传递过来的参数
  341. $add_data['repuser'] = $user_data['openid']; //获取维修人
  342. $add_data['update_time'] = time(); //更新时间为当前时间
  343. $add_data['status'] = 1; //订单状态更改为 接单中
  344. $result = db('repair_order')->where("order_id","=",$data['orderid'])->update($add_data); //更新订单的数据
  345. $order_info = db('repair_order')->where("order_id","=",$data['orderid'])->find();//重新获取订单
  346. $userinfo = db('user')->where("openid","=",$order_info['repuser'])->find();//获取报修者的信息
  347. $time = time();
  348. if($result && $order_info){
  349. $message_result = $this->sendMessage($order_info['openid'],$data['orderid'],$userinfo['username'],$userinfo['telephone'],'订单状态:已接单','haRLoUPGKx-JFYPtK6k9VAnCntI9B9cWBSQRTqt_KyI',$time); //调用模板
  350. if($message_result['errcode']=='0'){
  351. return json(['code'=>'00','msg'=>'成功']);
  352. }
  353. }else{
  354. return json(['code'=>'01','msg'=>'失败']);
  355. }
  356. }else{
  357. $data = input();
  358. $order_id = $data['order_id']; //订单id
  359. $result = db('repair_order')->where("order_id","=",$order_id)->find();
  360. $identity = db('user')->where("openid","=",$user_data['openid'])->find();
  361. if($result['repuser']){
  362. $repuserinfo = db('user')->where("openid","=",$result['repuser'])->find();
  363. $result['repuser'] = $repuserinfo['username'];
  364. }
  365. $result['identify'] = $identity['identity'];
  366. $this->assign('result',$result); //订单的信息
  367. return view();
  368. }
  369. }
  370. //分享页面的生成
  371. public function sharepage(){
  372. $user_data = cookie('user'); //拿到用户的信息
  373. $result = db('user')->where("openid","=",$user_data['openid'])->find(); //获取到用户的信息
  374. if($result['identity']==2 || $result['identity']==99){
  375. $num = $this->get_rand_number(); //随机生成的六位数字(邀请码)
  376. vendor("phpqrcode.phpqrcode");
  377. $code = new \QRcode();
  378. $errorLevel = "L"; //定义生成图片宽度和高度;默认为3
  379. $size = "4"; //定义尺寸
  380. $content='http://'.$_SERVER['HTTP_HOST']."/index/index/register?num=".$num; //生成的网址(含有邀请码的)
  381. $data = [
  382. "author"=>$user_data['openid'], //邀请人
  383. "url" =>$content, //url
  384. "code"=>$num, //邀请码
  385. "addtime"=>time(), //生成时间
  386. ];
  387. $share_data = db('share')->insert($data); //插入到数据库中去
  388. if($share_data){
  389. $filename = './static/images/'.date("Ymd").$num.'.png';
  390. $tt = $code->png($content,$filename, $errorLevel, $size);
  391. $this->assign("code",$num);
  392. $this->assign('imgurl',date("Ymd").$num.'.png'); //图片信息传递给前端
  393. // exit;
  394. return view();
  395. }
  396. }else{
  397. $this->assign('imgurl',null); //没有信息传递
  398. return view();
  399. }
  400. }
  401. //随机生成数字(作为邀请码来使用)
  402. public static function get_rand_number($start = 1, $end = 9, $length = 6){
  403. $connt = 0;
  404. $temp = [];
  405. while($connt < $length){
  406. $temp[] = mt_rand($start, $end);
  407. $data = array_unique($temp);
  408. $connt = count($data);
  409. }
  410. sort($data);
  411. $data = implode("",$data);
  412. return $data;
  413. }
  414. }