isPost()){ $data =input(); //得到传递过来的信息 $data['addtime']= time(); //添加时间 $data['is_register']=1; //标记为已经注册 $data['identity']='0'; //所有用户标记为报修者 //判断是否有邀请码,是否过期。以及邀请码的有效期 $code = isset($data['code'])?$data['code']:null; //获取二维码 $config = db('admin')->where(['id'=>1])->find(); //获取管理员的配置信息 if($code){ $code_data = db('share')->where(['code'=>$code])->find(); if(!$code_data){ return json(['code'=>'01','msg'=>'无效验证码']); } $total_time = $code_data['addtime']+$config['code_time']*60; $time = time(); if($time>$total_time){ return json(['code'=>'01','msg'=>'验证码已过期']); } $data['is_check'] =1; //已经审核(通过就设置为已经审核) } unset($data['code']); $find = db('user')->where("openid","=",$user_data['openid'])->find(); if(!$find){ $data['nickname'] = $user_data['nickname']; $data['openid'] = $user_data['openid']; $data['headimgurl'] = $user_data['headimgurl']; $data['addtime'] = time(); $datas = db('user')->insert($data); if($datas){ return json(['code'=>'00','msg'=>'成功']); }else{ return json(['code'=>'01','msg'=>'失败']); } }else{ $result = db('user')->where("openid","=",$user_data['openid'])->update($data); if($result){ return json(['code'=>'00','msg'=>'成功']); }else{ return json(['code'=>'01','msg'=>'失败']); } } }else{ $data = input(); //获取是否有参数 $code = isset($data['num'])?$data['num']:null; //获取二维码 $config = db('admin')->where(['id'=>1])->find(); //获取管理员的配置信息 $this->assign('overdue',1); if($code){ $code_data = db('share')->where(['code'=>$code])->find(); $total_time = $code_data['addtime']+$config['code_time']*60; $time = time(); if($time>$total_time){ $this->assign('overdue',0); } } $result = db('user')->where("openid","=",$user_data['openid'])->find(); $group_data = db('group')->select(); if(!$result['is_register']){ $this->assign('status',"0"); }else{ $this->assign('status',$result['is_register']); } $this->assign('code',$code); //code的显示 $this->assign('group_data',$group_data); //分组数据 return view(); } } // 个人中心 public function myinfo(){ $user_data = cookie('user'); //拿到用户的信息 $result = db('user')->where("openid","=",$user_data['openid'])->find(); //获取到用户的信息 $repair_num = db('repair_order')->where("openid","=",$user_data['openid'])->count(); //报修记录的条数 $poli_num = db('repair_order')->where("repuser","=",$user_data['openid'])->count(); //维修记录的条数 $result['addtime'] = date("Y-m-d H:i",$result['addtime']);//对注册时间格式化 $this->assign('userinfo',$result); //用户信息 $this->assign('repair_num',$repair_num); //报修记录的条数 $this->assign('poli_num',$poli_num); //维修记录的条数 return view(); } //编辑信息 public function editMyinfo(Request $request){ $user_data = cookie('user'); //拿到用户的信息 if($request->isPost()){ $data = input(); //获取过来的信息 $result = db('user')->where("openid","=",$user_data['openid'])->update($data); if($result){ return json(['code'=>'00','msg'=>'成功']); }else{ return json(['code'=>'01','msg'=>'失败']); } }else{ $result = db('user')->where("openid","=",$user_data['openid'])->find(); //获取到用户的信息 $this->assign('userinfo',$result); return view(); } } // 报修订单(提交) public function repairs(Request $request){ $user_data = cookie('user'); //拿到用户的信息 if($request->isPost()){ $data =input(); //获取用户提交的数据 // 需要组装一下信息 $data['order_id'] = date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8); //创建订单号码 $data['type'] =''; //订单类别(暂时没有) $data['create_time'] = time(); //订单创建时间 $data['update_time'] = time(); //订单更新时间 $data['openid'] = $user_data['openid']; //获得openid $group = Db::name('user')->where('openid', $data['openid'])->field('group')->find(); $data['group'] = $group['group']; $add_data = db('repair_order')->insert($data); //插入数据 $openid_result = db('user')->where('identity','in', '1,2')->where(['is_check'=>'1'])->field('openid')->select(); array_push($openid_result,['openid'=>$user_data['openid']]); $time = time(); $openid_result = array_unique($openid_result, SORT_REGULAR); foreach ($openid_result as $key => $value) { $message_result = $this->sendMessage($value['openid'],$data['order_id'],$data['linkman'],$data['linktel'],'订单状态:接单中','yb20xT_XekDUYJ8WpqbtU8mWFmnzmGo19j8HARQPTj0',$time); //调用模板消息 } if($add_data){ return json(['code'=>'00','msg'=>'成功']); }else{ return json(['code'=>'01','msg'=>'失败']); } }else{ $user_data = cookie('user'); //拿到用户的信息 $result = db('user')->where("openid","=",$user_data['openid'])->find(); //获取到用户的信息 $this->assign('result',$result); //获取用户的信息 return view(); //展示页面 } } /** * 转单 * @param Request $request * @return \think\response\Json */ public function transferOrder(Request $request) { $user_data = cookie('user'); //拿到用户的信息 if($request->isPost()){ $data = input(); $add_data['update_time'] = time(); //更新时间为当前时间 $add_data['status'] = 3; //订单状态更改为 转单 $result = db('repair_order')->where("order_id","=",$data['orderid'])->update($add_data); //更新订单的数据 if(!$result){ return json(['code'=>'01','msg'=>'失败']); } $order_info = db('repair_order')->where("order_id","=",$data['orderid'])->find(); //重新获取订单 $userinfo = db('user')->where("openid","=",$order_info['openid'])->find(); //获取报修者的信息 if($data['openid'] == $userinfo['openid']){ $this->sendMessage($data['openid'],$order_info['order_id'],$order_info['linkman'],$order_info['linktel'],'订单状态:转单','yb20xT_XekDUYJ8WpqbtU8mWFmnzmGo19j8HARQPTj0',$order_info['create_time']); //调用模板消息 }else{ $this->sendMessage($data['openid'],$order_info['order_id'],$order_info['linkman'],$order_info['linktel'],'订单状态:转单','yb20xT_XekDUYJ8WpqbtU8mWFmnzmGo19j8HARQPTj0',$order_info['create_time']); //调用模板消息 $this->sendMessage($userinfo['openid'],$order_info['order_id'],$order_info['linkman'],$order_info['linktel'],'订单状态:转单','yb20xT_XekDUYJ8WpqbtU8mWFmnzmGo19j8HARQPTj0',$order_info['create_time']); //调用模板消息 } return json(['code'=>'00','msg'=>'成功']); } } // 报修记录 public function repairsList(){ $user_data = cookie('user'); //拿到用户的信息 $userinfo = db('user')->where("openid","=",$user_data['openid'])->find(); //获取到用户的信息 $result = db('repair_order')->where("openid","=",$user_data['openid'])->select(); //获取当前用户的订单信息 $this->assign('order_list',$result); //订单的信息列表 $this->assign('userinfo',$userinfo); //当前用户的信息 return view(); } // 报修单详情况(展示信息) public function repairsDetail(Request $request){ $data = input(); //获取传递过来的数据 $orderid = $data['orderid']; //获取到订单的id号码 $user_data = cookie('user'); //拿到用户的信息 $where=[ 'order_id'=>$orderid, "openid"=>$user_data['openid'] ]; $result = db('repair_order')->where($where)->find(); //获取订单信息 $this->assign('result',$result); return view(); } // 报修者对订单的评论 public function linkman_message(Request $request){ if($request->isPost()){ $data =input(); //获取传递过来的参数 $result = db('repair_order')->where("order_id","=",$data['order_id'])->update($data); //更新订单的数据 if($result){ return json(['code'=>'00','msg'=>'成功']); }else{ return json(['code'=>'01','msg'=>'失败']); } }else{ $data = input(); $order_id = $data['orderid']; //订单id $result = db('repair_order')->where("order_id","=",$order_id)->find(); $this->assign('result',$result); //订单的信息 return view(); } } /** * 全部维修记录 * @param Request $request * @return \think\response\View */ public function allList(Request $request) { $user_data = cookie('user'); $result = db('user')->where('openid','=',$user_data['openid'])->find(); $order_list = db('repair_order')->select(); if(!empty($request->param('status'))){ $status = $request->param('status');//根据订单状态查询 switch ($status) { case '4': $order_list = db('repair_order')->where('status','0')->select(); break; case '1': $order_list = db('repair_order')->where('status','1')->select(); break; case '2': $order_list = db('repair_order')->where('status','2')->select(); break; case '3': $order_list = db('repair_order')->where('status','3')->select(); break; } } $this->assign('userinfo',$result); $this->assign('order_list',$order_list); return view(); } // 维修记录 public function polist(){ $user_data = cookie('user'); //拿到用户的信息 $result = db('user')->where("openid","=",$user_data['openid'])->find(); //获取到用户的信息(获取的是维修者的信息) if(!$result){ $notice = "无法查看维修记录"; $this->assign('notice',$notice); }else{ $order_list = db('repair_order')->where("repuser","=",$user_data['openid'])->select(); //获取维修者 订单的信息 $this->assign('userinfo',$result); //用户的信息 $this->assign('order_list',$order_list); //维修订单的信息 return view(); } } //维修记录详情单 public function polistDetail(Request $request){ $user_data = cookie('user'); //拿到用户的信息 if($request->isPost()){ $data =input(); //获取传递过来的参数 $add_data['repuser'] = $user_data['openid']; //获取维修人 $add_data['update_time'] = time(); //更新时间为当前时间 $add_data['status'] = 2; //订单状态更改为 接单中 $add_data['handle'] = $data['handle']; $result = db('repair_order')->where("order_id","=",$data['orderid'])->update($add_data); //更新订单的数据 $order_info = db('repair_order')->where("order_id","=",$data['orderid'])->find(); //重新获取订单 $userinfo = db('user')->where("openid","=",$order_info['repuser'])->find(); //获取报修者的信息 $time = time(); if($result && $order_info){ $message_result = $this->sendMessage($order_info['openid'],$data['orderid'],$userinfo['username'],$userinfo['telephone'],'订单状态:已完成','haRLoUPGKx-JFYPtK6k9VAnCntI9B9cWBSQRTqt_KyI',$time); //调用模板 if($message_result['errcode']=='0'){ return json(['code'=>'00','msg'=>'成功']); } }else{ return json(['code'=>'01','msg'=>'失败']); } }else{ $data = input(); //获取传递过来的数据 $orderid = $data['orderid']; //获取到订单的id号码 $where=[ 'order_id'=>$orderid, "repuser"=>$user_data['openid'] ]; $userinfo = db('user')->where("openid","=",$user_data['openid'])->find(); //获取用户的信息 $result = db('repair_order')->where($where)->find(); //获取当前维修订单的信息 $maintain = db('user')->where('identity','in','1,2')->where('is_check','1')->where('is_register','1')->select(); $this->assign('maintain',$maintain); $this->assign('userinfo',$userinfo); //维修者的信息 $this->assign('result',$result); //订单的信息 return view(); } } //模板消息的调用函数 (openid 订单号 报修人 联系电话 订单的状态 模板id) function sendMessage($openid,$keyword1,$keyword2,$keyword3,$remark,$templateId,$time) { $url="https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=".$this->accessToken; //获取到accesstoken $templateId = $templateId; // 模板id $post_data = array( "touser"=>$openid, "template_id"=>$templateId, "url"=>HOSTNAME."/index/index/qiaodan?order_id=".$keyword1, "data"=> array( "first" => array( "value"=>"报修订单的实时跟踪", "color"=>"#173177" ), "keyword1"=>array( "value"=>$keyword1, "color"=>"#173177", ), "keyword2"=>array( "value"=>$keyword2, "color"=>"#173177" ), "keyword3"=> array( "value"=>$keyword3, "color"=>"#173177" ), "keyword4"=> array( "value"=>date('Y-m-d H:i:s',$time), "color"=>"#173177" ), "remark"=> array( "value"=>$remark, "color"=>"#173177" ), ) ); //将上面的数组数据转为json格式 $post_data = json_encode($post_data); //发起请求 $result = http_curl($url,$post_data,'post'); file_put_contents("moban.txt",$result); return $result; } public function qiaodan(Request $request){ $user_data = cookie('user'); //拿到用户的信息 if($request->isPost()){ $data =input(); //获取传递过来的参数 $add_data['repuser'] = $user_data['openid']; //获取维修人 $add_data['update_time'] = time(); //更新时间为当前时间 $add_data['status'] = 1; //订单状态更改为 接单中 $result = db('repair_order')->where("order_id","=",$data['orderid'])->update($add_data); //更新订单的数据 $order_info = db('repair_order')->where("order_id","=",$data['orderid'])->find();//重新获取订单 $userinfo = db('user')->where("openid","=",$order_info['repuser'])->find();//获取报修者的信息 $time = time(); if($result && $order_info){ $message_result = $this->sendMessage($order_info['openid'],$data['orderid'],$userinfo['username'],$userinfo['telephone'],'订单状态:已接单','haRLoUPGKx-JFYPtK6k9VAnCntI9B9cWBSQRTqt_KyI',$time); //调用模板 if($message_result['errcode']=='0'){ return json(['code'=>'00','msg'=>'成功']); } }else{ return json(['code'=>'01','msg'=>'失败']); } }else{ $data = input(); $order_id = $data['order_id']; //订单id $result = db('repair_order')->where("order_id","=",$order_id)->find(); $identity = db('user')->where("openid","=",$user_data['openid'])->find(); if($result['repuser']){ $repuserinfo = db('user')->where("openid","=",$result['repuser'])->find(); $result['repuser'] = $repuserinfo['username']; } $result['identify'] = $identity['identity']; $this->assign('result',$result); //订单的信息 return view(); } } //分享页面的生成 public function sharepage(){ $user_data = cookie('user'); //拿到用户的信息 $result = db('user')->where("openid","=",$user_data['openid'])->find(); //获取到用户的信息 if($result['identity']==2 || $result['identity']==99){ $num = $this->get_rand_number(); //随机生成的六位数字(邀请码) vendor("phpqrcode.phpqrcode"); $code = new \QRcode(); $errorLevel = "L"; //定义生成图片宽度和高度;默认为3 $size = "4"; //定义尺寸 $content='http://'.$_SERVER['HTTP_HOST']."/index/index/register?num=".$num; //生成的网址(含有邀请码的) $data = [ "author"=>$user_data['openid'], //邀请人 "url" =>$content, //url "code"=>$num, //邀请码 "addtime"=>time(), //生成时间 ]; $share_data = db('share')->insert($data); //插入到数据库中去 if($share_data){ $filename = './static/images/'.date("Ymd").$num.'.png'; $tt = $code->png($content,$filename, $errorLevel, $size); $this->assign("code",$num); $this->assign('imgurl',date("Ymd").$num.'.png'); //图片信息传递给前端 // exit; return view(); } }else{ $this->assign('imgurl',null); //没有信息传递 return view(); } } //随机生成数字(作为邀请码来使用) public static function get_rand_number($start = 1, $end = 9, $length = 6){ $connt = 0; $temp = []; while($connt < $length){ $temp[] = mt_rand($start, $end); $data = array_unique($temp); $connt = count($data); } sort($data); $data = implode("",$data); return $data; } }