Files
MeSHard 94f7e83679 init
2025-11-10 16:12:07 +08:00

390 lines
15 KiB
PHP

<?php
declare (strict_types=1);
namespace app\controller;
use app\controller\Bus\PlugCharge;
use app\model\EnterpriseUser;
use app\model\ServiceFee;
use DateInterval;
use DateTime;
use think\facade\Db;
use think\Request;
class Test
{
static $OperatorID = 'MA5UTE3F1'; //运营商标识
static $OperatorSecret = '1234567890abcdef';//运营商密钥
static $Seq = '0001';
public function tttt()
{
$data = ["vin" => "LA9LC30F0NCLA6198", "connectorID" => "5001110048204", "StartSc" => 44];
if (isset($data['vin']) && isset($data['connectorID'])) {
// $this->PlugGennerateOrder($data['ConnectorID'], $data['Vin']);
$AppointmentTime = Db::table('appointment_time')->where('id', 1)->value('AppointmentTime');
$currentDate = new DateTime();
$combinedDateTime = new DateTime($currentDate->format('Y-m-d') . ' ' . $AppointmentTime);
$AppointmentTime = $combinedDateTime->format('Y-m-d H:i:s');
$nowTime = $currentDate->format('Y-m-d H:i:s');
$nowDay = $currentDate->format('Y-m-d');
$check = Db::table('appointment')->whereDay('action_time', $nowDay)->where('Vin', $data['vin'])->find();
if (empty($check)) {
Db::table('appointment')->save(['action_time' => $nowTime, 'ConnectorID' => $data['connectorID'], 'Vin' => $data['vin'], 'plug_time' => $AppointmentTime]);
} else {
$checkVin = Db::table('appointment')->where('Vin', $data['vin'])->value('ConnectorID');
if ($checkVin != $data['connectorID']) {
Db::table('appointment')->where('Vin', $data['vin'])->save(['action_time' => $nowTime, 'ConnectorID' => $data['connectorID']]);
}
}
$kk['SuccStat'] = 0;
$kk['FailReason'] = 0;
}
$data = json_encode($data);
$h = new PlugCharge();
$st = $h->signToken();
$data = $h->Encrypt($data);
return json($st);
}
public function GetPriceTest($station_id, $openid, $table)
{
$station_type = \app\model\ChargeStation::where('charge_station_id', $station_id)->value('station_type');
$ElectricityFee = Db::table('charge_station')->where('charge_station_id', $station_id)->value('ElectricityFee');
$type = Db::table($table)->where('openid', $openid)->value('type');
if ($type != 3) {
$ServiceFee = ServiceFee::where('type', $type)->where('station_type', $station_type)->value('service_fee');
} else {
$group_id = EnterpriseUser::where('openid', $openid)->value('group_id');
$ServiceFee = ServiceFee::where('type', $type)->where('station_type', $station_type)->where('group_id', $group_id)->value('service_fee');
}
// $ServiceFee= Db::table('charge_station')->where('charge_station_id',$station_id)->value('ServiceFee');
$ElectricityFee = str_replace('电费:', '', $ElectricityFee);
$Elect = explode(',', $ElectricityFee);
for ($index = 0; $index < count($Elect); $index++) {
$kk['time_interval'] = substr($Elect[$index], 0, 11);
$tt = explode('~', $kk['time_interval']);
$start = $tt[0] . ':00';
$end = $tt[1] . ':00';
$kk['univalence'] = explode(':', $Elect[$index])[3];
$kk['start'] = $start;
$kk['end'] = $end;
$ss[] = $kk;
}
$ServiceFee = str_replace('服务费:', '', $ServiceFee);
$Server = explode(',', $ServiceFee);
$wk_day = date('w');
$now_time = time();
$start_time = '2023-03-18 00:00:00';
$start_time = strtotime($start_time);
$wkday_ar = array('日', '一', '二', '三', '四', '五', '六');
for ($index = 0; $index < count($Server); $index++) {
$ll['time_interval'] = substr($Server[$index], 0, -5);
// if ($wkday_ar[$wk_day] == '三' && $now_time > $start_time && $type == 1) {
// $ll['univalence'] = number_format((float)(substr($Server[$index], Strlen($Server[$index]) - 4) - 0.20), 2);
// } else {
$ll['univalence'] = substr($Server[$index], Strlen($Server[$index]) - 4);
// }
$mm[] = $ll;
}
if ($station_type == 1) {
return json(['EPrice' => number_format((float)($ss[0]['univalence']), 6), 'SPrice' => number_format((float)($mm[0]['univalence']), 2)]);
} elseif ($station_type == 0) {
return json(['message' => $ss, 'SPrice' => number_format((float)($mm[0]['univalence']), 2)]);
}
}
public function tsesg1()
{
$currentDate = new DateTime();
$todayDate = $currentDate->format('Y-m-d H:i:s');
$nowDay = $currentDate->format('Y-m-d');
$PlugOrder = Db::table('appointment')->select();
foreach ($PlugOrder as $order) {
$status = Db::table('charge_pile')->where('ConnectorID', $order['ConnectorID'])->value('status');
echo $status;
}
}
public function index()
{
$map1 = [
['status', '=', 255],
['is_pushed', '=', 1],
];
$map2 = [
['status', '=', 0],
['is_pushed', '=', 1],
];
$hasfault = Db::table('charge_pile')->whereOr([$map1, $map2])->order('charge_pile_id desc')->select();
$case1 = [
['charge_pile.status', '=', 255],
['is_pushed', '=', 1],
];
$case2 = [
['charge_pile.status', '=', 0],
['is_pushed', '=', 1],
];
$faultInfo = Db::table('charge_pile,charge_station')
->whereOr([$case1, $case2])
->where('charge_pile.charge_station_id = charge_station.charge_station_id')
->order('charge_pile_id desc')
->field('charge_station.charge_station_id,charge_station_name,charge_pile.charge_pile_number,charge_station.area,charge_station.street,charge_pile.status,charge_pile.no')
->find();
return json($faultInfo);
}
/**
* 显示创建资源表单页.
*
* @return \think\Response
*/
public function create()
{
$faultInfo = Db::table('charge_pile,charge_station')
->where('charge_pile.status', 3)
->where('charge_pile.is_pushed', 1)
->where('charge_pile.charge_station_id = charge_station.charge_station_id')
->order('charge_pile_id desc')
->field('charge_station.charge_station_id,charge_station_name,charge_pile.charge_pile_number,charge_station.area,charge_station.street,charge_pile.status,charge_pile.is_pushed')
->find();
return json($faultInfo);
}
/**
* 保存新建的资源
*
* @param \think\Request $request
* @return \think\Response
*/
public function save()
{
$openid_array = Db::table('zxc_user')->column('openid');
foreach ($openid_array as $openid) {
$table_user = 'zxc_user';
$table_order = 'zxc_charge_order';
$table_recharge = 'zxc_recharge';
$account = Db::table($table_user)->where('openid', $openid)->value('account');
$recharge_all = Db::table($table_recharge)->where('openid', $openid)->sum('total');
$recharge_all /= 100;
$check = Db::table($table_order)->where('openid', $openid)->where('status', 2)->order('start_time desc')->value('end_time');
if (empty($check)) {
$order_all = Db::table($table_order)->where('openid', $openid)->where('status', 4)->sum('TotalMoney');
$inorder = Db::table($table_order)->where('openid', $openid)->where('status', '<>', 4)->where('status', '<>', 5)->order('start_time desc')->value('WithholdingMoney');
$order_total = $order_all + $inorder;
} else {
$order_total = Db::table($table_order)->where('openid', $openid)->where('status', 4)->sum('TotalMoney');
}
$order_total = round($order_total, 2);
$mask = round($recharge_all - $order_total, 2); //这里还要减已经提现的
if (round($mask, 2) == round($account, 2)) {
continue;
} else {
$ss['order_total'] = $order_total;
$ss['openid'] = $openid;
$ss['recharge_all'] = $recharge_all;
$ss['mask'] = $mask;
$ss['account'] = $account;
}
$ll[] = $ss;
}
return json($ll);
}
public function FindOneUser($openid)
{
$table_user = 'zxc_user';
$table_order = 'zxc_charge_order';
$table_recharge = 'zxc_recharge';
$table_refund = 'zxc_refund';
$account = Db::table($table_user)->where('openid', $openid)->value('account');
$recharge_all = Db::table($table_recharge)->where('openid', $openid)->sum('total');
$recharge_all /= 100;
$check = Db::table($table_order)->where('openid', $openid)->where('status', 2)->order('start_time desc')->value('end_time');
if (empty($check)) {
$order_all = Db::table($table_order)->where('openid', $openid)->where('status', 4)->sum('TotalMoney');
$inorder = Db::table($table_order)->where('openid', $openid)->where('status', '<>', 4)->where('status', '<>', 5)->order('start_time desc')->value('WithholdingMoney');
$order_total = $order_all + $inorder;
} else {
$order_total = Db::table($table_order)->where('openid', $openid)->where('status', 4)->sum('TotalMoney');
}
$refund_total = Db::table($table_refund)->where('openid', $openid)->sum('refund_total');
$refund_total /= 100;
$order_total = round($order_total, 2);
$mask = round($recharge_all - $order_total - $refund_total, 2); //这里还要减已经提现的
if (round($mask, 2) == round($account, 2)) {
$ss['status'] = 'ok';
} else {
$ss['order_total'] = $order_total;
$ss['openid'] = $openid;
$ss['recharge_all'] = $recharge_all;
$ss['mask'] = $mask;
$ss['account'] = $account;
$ss['refund_total'] = $refund_total;
}
return json($ss);
}
public function FindAllExUser($area, $time = '2023-05-11')
{
$table_user = 'zxc_user';
$table_order = 'zxc_charge_order';
$table_recharge = 'zxc_recharge';
$table_refund = 'zxc_refund';
$openid = Db::table($table_user)->column('openid');
$kk = array();
foreach ($openid as $o) {
$checkdate = Db::table($table_order)->where('start_time', '<', $time)->find();
if (empty($checkdate)) {
continue;
} else {
$account = Db::table($table_user)->where('openid', $o)->value('account');
$recharge_all = Db::table($table_recharge)->where('openid', $o)->sum('total');
$recharge_all /= 100;
$check = Db::table($table_order)->where('openid', $o)->where('status', 2)->order('start_time desc')->value('end_time');
if (empty($check)) {
$order_all = Db::table($table_order)->where('openid', $o)->where('status', 4)->sum('TotalMoney');
$inorder = Db::table($table_order)->where('openid', $o)->where('status', '<>', 4)->where('status', '<>', 5)->order('start_time desc')->value('WithholdingMoney');
$order_total = $order_all + $inorder;
} else {
$order_total = Db::table($table_order)->where('openid', $o)->where('status', 4)->sum('TotalMoney');
}
$order_total = round($order_total, 2);
$refund_total = Db::table($table_refund)->where('openid', $o)->sum('refund_total');
$refund_total /= 100;
$refund_total = round($refund_total, 2);
$mask = round($recharge_all - $order_total - $refund_total, 2); //这里还要减已经提现的
if (round($mask, 2) == round($account, 2)) {
$ss['status'] = 'ok';
} else {
$ss['order_total'] = $order_total;
$ss['openid'] = $o;
$ss['recharge_all'] = $recharge_all;
$ss['refund_total'] = $refund_total;
$ss['mask'] = $mask;
$ss['account'] = $account;
$kk[] = $ss;
}
}
}
return json($kk);
}
public function correction($openid)
{
$OrderList = new ChargeOrder();
$OrderList->OrderList($openid);
$table_order = 'zxc_charge_order';
$order = Db::table($table_order)->where('openid', $openid)->select()->toArray();
$i = 0;
foreach ($order as $oo) {
if (($oo['TotalMoney'] + $oo['FeedbackMoney']) != $oo['WithholdingMoney'] && $oo['status'] == 4) {
Db::table($table_order)->where('order_number', $oo['order_number'])->save(['TotalMoney' => round($oo['WithholdingMoney'] - $oo['FeedbackMoney'], 2)]);
$ss['order_number'] = $oo['order_number'];
$ss['TotalMoney'] = $oo['TotalMoney'];
$ss['WithholdingMoney'] = $oo['WithholdingMoney'];
$ss['FeedbackMoney'] = $oo['FeedbackMoney'];
$new_TotalMoney = Db::table($table_order)->where('order_number', $oo['order_number'])->value('TotalMoney');
$ss['NewMoney'] = $new_TotalMoney;
$i += 1;
} else {
continue;
}
$ll[] = $ss;
}
$ll['update_num'] = $i;
return json($ll);
}
/**
* 显示指定的资源
*
* @param int $id
* @return \think\Response
*/
public function read($id)
{
//
}
/**
* 显示编辑资源表单页.
*
* @param int $id
* @return \think\Response
*/
public function edit($order_number = 'DZZS1673603040121831')
{
$message = Db::table('charge_order_longgangjiedao')->where('order_number', $order_number)->find();
echo strtotime($message['start_time']);
echo strtotime("2023-03-03 15:09:47");
}
/**
* 保存更新的资源
*
* @param \think\Request $request
* @param int $id
* @return \think\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* 删除指定资源
*
* @param int $id
* @return \think\Response
*/
public function delete($id)
{
//
}
}
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);
}
function Encrypt($data)
{
$aes = new Aes();
return $aes->encrypt($data);
}
function HmacMD5($data)
{
$md5 = new HMACMD5();
return $md5->HMAC($data);
}