Index.php 17 KB

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