select()->count(); $list = Db::table($table)->paginate(20, $count)->toArray(); $i = 0; foreach ($list['data'] as $ll) { $list['data'][$i]['account'] = round($list['data'][$i]['account'], 2); $i += 1; } return json($list); } public function user_all() { $count = Db::table('zxc_user')->select(); return json($count); } public function read($message = '') { $count = Db::table('zxc_user')->select()->count(); $list = Db::table('zxc_user')->where('phone|openid', 'like', '%' . $message . '%')->paginate(20, $count); return json($list); } public function UpdateDiscount($message) { $time = date("Y-m-d H:i:s"); Db::table('discount')->where('id', 1)->update(['message' => $message, 'update_time' => $time]); return json(['code' => '更新成功']); } public function DiscountInfo() { $message = Db::table('discount')->where('id', 1)->value('message'); return json(['code' => '200', 'message' => $message]); } public function UserEdit($openid, $username, $phone, $sex, $location_area, $address) { $table = 'zxc_user'; $data = ['username' => $username, 'phone' => $phone, 'sex' => $sex, 'address' => $address]; $update = Db::table($table)->where('openid', $openid)->update($data); if ($update != 0) { return json(['code' => 200, 'message' => '更新成功']); } else { return json(['code' => 1, 'message' => '没有更新']); } } public function UserInfo($openid) { $table = 'zxc_user'; $info = Db::table($table)->where('openid', $openid)->field('username,sex,phone,address')->find(); $location_area = Db::table($table)->where('openid', $openid)->value('location_area'); if (!empty($location_area)) { $location_area = explode('-', $location_area); } $info['location_area'] = $location_area; return json(['code' => 200, 'message' => '请求成功', 'data' => $info]); } public function area() { $area = Db::table('area')->select(); return json($area); } public function StationPrice(Request $request) { $data = $request->param(); $where = []; if (isset($data['station_number']) && !empty($data['station_number'])) { $where['charge_station_number'] = ['=', $data['station_number']]; } $info = Db::table('charge_station')->where($where)->where('charge_station_id', 19)->field('*')->find(); // if ($info['station_type'] == 0) { $station_type = '快充'; // } else { $station_type = '慢充'; // } $ElectricityFee = str_replace('电费:', '', $info['ElectricityFee']); $Elect = explode(',', $ElectricityFee); for ($index = 0; $index < count($Elect); $index++) { $kk['time_interval'] = substr($Elect[$index], 0, 11); $kk['univalence'] = explode(':', $Elect[$index])[3]; $ss[] = $kk; } $ServiceFee = str_replace('服务费:', '', $info['ServiceFee']); $Server = explode(',', $ServiceFee); for ($index = 0; $index < count($Server); $index++) { $ll['time_interval'] = substr($Server[$index], 0, -5); $ll['univalence'] = substr($Server[$index], Strlen($Server[$index]) - 4); $mm[] = $ll; } $info2 = Db::table('charge_station')->select(); return json(['code' => 2000, 'Station_Type' => $station_type, 'ElectricityFee' => $ss, 'ServiceFee' => $mm, 'yuan' => $info2]); } public function StationPriceUpdate($station_number, $time_interval, $univalence) { $time_interval = preg_replace("/\s| /", "", $time_interval);; $univalence = preg_replace("/\s| /", "", $univalence);; $time_interval = str_replace('[', '', $time_interval); $time_interval = str_replace("'", "", $time_interval); $time_interval = str_replace('"', '', $time_interval); $time_interval = str_replace(']', '', $time_interval); $univalence = str_replace('[', '', $univalence); $univalence = str_replace(']', '', $univalence); $univalence = str_replace("'", "", $univalence); $univalence = str_replace('"', '', $univalence); $time_interval = explode(",", $time_interval); $univalence = explode(",", $univalence); $z = array(); $ss = ''; $station_type = \app\model\ChargeStation::where('charge_station_number', $station_number)->value('station_type'); for ($i = 0; $i < count($time_interval); $i++) { if ($station_type != 1) { $z[$i] = $time_interval[$i] . ':' . number_format((float)($univalence[$i]), 6); if ($i != 7) { $ss .= $z[$i] . ','; } else { $ss .= $z[$i]; } } else { $z[$i] = $time_interval[$i] . ':' . number_format((float)$univalence[$i], 6); $ss .= $z[$i]; } } $last = '电费:' . $ss; \app\model\ChargeStation::where('charge_station_number', $station_number)->update(['ElectricityFee' => $last]); return json(['code' => 200, 'message' => '修改成功']); } protected function getLen($num) { $pos = strrpos($num, '.'); $ext = substr($num, $pos + 1); $len = strlen($ext); return $len; } public function WxLogin() { $code = input('code'); $res = getWxMessage($code); $userInfo = Db::table('zxc_user')->where('openid', $res['openid'])->find(); $time = date('Y-m-d H:i:s', time()); if (!$userInfo) { $data = ['openid' => $res['openid'], 'createtime' => $time]; $id = Db::table('zxc_user')->insertGetId($data); } else { $id = $userInfo['user_id']; } Db::table('zxc_user')->where('user_id', $id)->update(['logintime' => $time]); $token = signToken($id); return json(['code' => 200, 'message' => '登录成功', 'token' => $token, 'openid' => $res['openid']]); } public function WxGetArea($openid) { $area_three = Db::table('area_three')->column('area'); $new = array_rand($area_three); $area = $area_three[$new]; $userinfo = \app\model\User::where('openid', $openid)->value('area'); if (empty($userinfo)) { $message = \app\model\User::where('openid', $openid)->value('area'); if (empty($message)) { return json(['code' => 1, 'message' => '地区信息无效']); } $table_user = 'zxc_user'; $createtime = date('Y-m-d H:i:s', time()); $user = Db::table($table_user)->where('openid', $openid)->find(); if (empty($user)) { $data = ['openid' => $openid, 'createtime' => $createtime, 'area' => $area]; Db::table($table_user)->save($data); return json(['code' => 200, 'message' => '用户地区保存成功']); } return json(['code' => 200, 'message' => '用户地区保存成功']); } else { return json(['code' => 200, 'message' => '用户地区信息已存过']); } } public function checkToken($token) { $key = 'zbcazbc'; $key = new Key($key, 'HS256'); $status = array("code" => 1); // echo $token; try { JWT::$leeway = 60;//当前时间减去60,把时间留点余地 $decoded = JWT::decode($token, $key, array('HS256')); //HS256方式,这里要和签发的时候对应 $arr = (array)$decoded; $res['code'] = 200; $res['msg'] = 'OK'; $res['data'] = $arr['data']; return json($res); } catch (\Firebase\JWT\SignatureInvalidException $e) { //签名不正确 $status['msg'] = "签名不正确"; return json($status); } catch (\Firebase\JWT\BeforeValidException $e) { // 签名在某个时间点之后才能用 $status['msg'] = "token失效"; return json($status); } catch (\Firebase\JWT\ExpiredException $e) { // token过期 $status['msg'] = "token失效"; return json($status); } catch (Exception $e) { //其他错误 $status['msg'] = "未知错误"; return json($status); } } public function UserBalance($openid) { $table_user = 'zxc_user'; $info = Db::table($table_user)->where('openid', $openid)->field('account,phone')->find(); $balance = $info['account']; $balance = sprintf("%01.2f", $balance); $FrozenAccount = Db::table($table_user)->where('openid', $openid)->value('FrozenAccount'); $FrozenAccount = sprintf("%01.2f", $FrozenAccount); $table = 'zxc_charge_order'; $count = Db::table($table)->where('openid', $openid)->field('order_number,start_time,end_time,revenue,status')->count(); $enterprise_accout = Db::table('enterprise_user')->where('phone', $info['phone'])->count(); return json([ 'openid' => $openid, 'balance' => $balance, 'count' => $count, 'FrozenAccount' => $FrozenAccount, 'phone' => $info['phone'], 'enterprise' => $enterprise_accout ]); } public function getMoneyLog(){ $result = Db::table('zxc_user_money_log')->where('openid',input('openid'))->order('id desc')->select(); return json($result); } // 企业相关 /** * 获取企业信息 * */ public function getEnterpriseInfo($phone) { $enterprise_user = Db::table('enterprise_user')->where('phone', $phone)->find(); if ($enterprise_user) { $enterprise = Db::table('enterprise')->where('id', $enterprise_user['enterprise_id'])->find(); $enterprise['is_account'] = $enterprise_user['group_id'] == 1 ? false : true; $enterprise['enterprise_user_id'] = $enterprise_user['id']; return json($enterprise); } return json([]); } // 充值记录 public function getEnterpriseReangeLog() { } protected function generate_tuikuan($length) { $chars = '0123456789'; $time = time(); $password = 'DZZS' . $time . 'TK'; for ($i = 0; $i < $length; $i++) { $password .= $chars[mt_rand(0, strlen($chars) - 1)]; } return $password; } } function signToken($uid) { $key = 'zbcazbc'; $token = array( "iss" => $key, //签发者 可以为空 "aud" => '', //面象的用户,可以为空 "iat" => time(), //签发时间 "nbf" => time() + 3, //在什么时候jwt开始生效 (这里表示生成100秒后才生效) "exp" => time() + 1296000, //token 过期时间 "data" => [ //记录的userid的信息,这里是自已添加上去的,如果有其它信息,可以再添加数组的键值对 'uid' => $uid, ] ); // print_r($token); // $keyId = "keyId"; $jwt = JWT::encode($token, $key, "HS256"); //根据参数生成了 token return $jwt; } function getCurl($url) { $headerArray = array("Content-type:application/json;", "Accept:application/json"); $ch = curl_init();//初始化CURL curl_setopt($ch, CURLOPT_URL, $url);//设置访问地址 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);//HTTPS访问设置 关闭监视 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);//HTTPS访问设置 关闭监视访问地址 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, $headerArray);//设置访问头部信息 $output = curl_exec($ch);//获取结果 curl_close($ch);//关闭连接 $output = json_decode($output, true);//json数据转换 return $output; } function getWxMessage($code) { //网址,appid,appsecret都封装至配置文件中,方便后期管理 $url = sprintf(config('wx.url'), config('wx.AppID'), config('wx.AppSecret'), $code); //使用封装的CURL方法 $res = getCurl($url); //返回结果 return $res; } function getDistance($lat1, $lng1, $lat2, $lng2) { $earthRadius = 6367000; $lat1 = ($lat1 * pi()) / 180; $lng1 = ($lng1 * pi()) / 180; $lat2 = ($lat2 * pi()) / 180; $lng2 = ($lng2 * pi()) / 180; $calcLongitude = $lng2 - $lng1; $calcLatitude = $lat2 - $lat1; $stepOne = pow(sin($calcLatitude / 2), 2) + cos($lat1) * cos($lat2) * pow(sin($calcLongitude / 2), 2); $stepTwo = 2 * asin(min(1, sqrt($stepOne))); $calculatedDistance = $earthRadius * $stepTwo; return round($calculatedDistance / 1000, 2); }