25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 
 
 
 

1133 satır
36 KiB

  1. <?php
  2. namespace backend\modules\api\controllers;
  3. use backend\modules\api\models\BaseBus;
  4. use backend\modules\api\models\BaseResource;
  5. use backend\modules\api\models\BusExpenses;
  6. use backend\modules\api\models\BusItinerary;
  7. use backend\modules\api\models\BusOrder;
  8. use backend\modules\api\models\DriverAppUpdateStatus;
  9. use backend\modules\api\models\DriverAppVersion;
  10. use backend\modules\api\models\DriverLoginNew;
  11. use backend\modules\api\models\DriverMessage;
  12. use backend\modules\api\models\OrderCheckTickets;
  13. use backend\modules\api\models\OrderMain;
  14. use backend\modules\api\models\BaseDriver;
  15. use backend\modules\api\models\RunBusExpenses;
  16. use backend\modules\api\models\RunBusPos;
  17. use backend\modules\zzcs\models\OrderSendMessage;
  18. use yii\web\Controller;
  19. use Yii;
  20. class DriverController extends Controller
  21. {
  22. public $enableCsrfValidation = false;
  23. /**
  24. * Function Description:入口
  25. * Function Name: actionIndex
  26. *
  27. * @return string
  28. *
  29. * @author 张帅
  30. */
  31. public function actionIndex()
  32. {
  33. $request = Yii::$app->request;
  34. $action = $request->post('action');
  35. $func = 'action';
  36. $action = explode('_', $action);
  37. foreach ($action as $key => $vel) {
  38. $func .= ucfirst($vel);
  39. }
  40. if ($action === false || method_exists($this, $func) == false) {
  41. $json = ['code' => 1, 'info' => '必要参数缺失'];
  42. return json_encode($json);
  43. }
  44. //add by qius on 20180511 禁用司机端功能
  45. $deny_driver_list = array(
  46. "9268"/*余永华*/, "9273"/*康强*/, "9275"/*夏斌兴*/, "9276"/*王升勇*/, "9281"/*范强*/, "9682"/*易润根*/,
  47. "9700"/*魏巨根*/, "9704"/*赵岩松*/ /*, "9287"潘贝*/
  48. );
  49. $driver_id = $request->post('driver_id');
  50. if( $driver_id != false && in_array( $driver_id, $deny_driver_list ) ) {
  51. $json = ['code' => 1, 'info' => '该账户已被禁用'];
  52. return json_encode($json);
  53. }
  54. //end of add by qius on 20180511 禁用司机端功能
  55. return $this->$func();
  56. }
  57. //获取车辆或司机调派时的详情 车管系统
  58. public function actionGetUseDetailInfo()
  59. {
  60. $res_id = $_REQUEST['res_id'];
  61. $date = $_REQUEST['date'];
  62. $op = $_REQUEST['op'];
  63. $where = '';
  64. if ($op == 'bus') {
  65. $where = 'send_bus_res_id';
  66. } elseif ($op == 'driver') {
  67. $where = 'send_bus_driver_res_id';
  68. }
  69. $sql = "select run_date,start_time,itinerary_name,(select BUS_NO from base_bus where send_bus_res_id = bus_id limit 1) as bus_no,
  70. (select driver_name from base_driver where send_bus_driver_res_id = driver_id limit 1) as driver_name,
  71. (select max(start_time) from bus_itinerary where bus_itinerary.itinerary_id = bus_order.itinerary_id) as end_time
  72. from bus_order where $where = $res_id and run_date = '$date' and cancel_flag = 0";
  73. $connect = Yii::$app->db;
  74. $res = $connect->createCommand($sql)->queryAll();
  75. return json_encode($res);
  76. }
  77. /**
  78. * Function Description:获取验证码
  79. * Function Name: actionGetCode
  80. *
  81. * @return string
  82. *
  83. * @author 张帅
  84. */
  85. public function actionGetCode()
  86. {
  87. $driver_login = new DriverLoginNew();
  88. $order_send_message = new OrderSendMessage();
  89. #region 获取参数
  90. $phone = Yii::$app->request->post('phone');//手机号
  91. $machine_code = Yii::$app->request->post('machine_code');//设备码
  92. #endregion
  93. $machine_code == 'null' ? $machine_code = '' : true;
  94. //1.验证手机号是否存在
  95. $driver_info = BaseDriver::find()->select('driver_id')->where(['phone_no' => $phone, 'cancel_flag' => 0])->asArray()->one();
  96. if (count($driver_info) == 0) {
  97. $data['code'] = "1";
  98. $data['info'] = '该手机号码不存在';
  99. return json_encode($data);
  100. }
  101. $driver_id = $driver_info["driver_id"];//司机id
  102. //2.添加验证码
  103. $result = $driver_login->getCode($phone, $driver_id, $machine_code);
  104. if ($result === false) {
  105. $data['code'] = '1';
  106. $data['info'] = '获取验证码失败';
  107. } else {
  108. $msg_result = $order_send_message->sendTelMessage($phone, '您的验证码为:' . $result);
  109. if ($msg_result == 0) {
  110. $data['code'] = '0';
  111. $data['info'] = '获取验证码成功';
  112. $data['data'] = array("random_code" => $result, "driver_id" => $driver_id);
  113. } else {
  114. $data['code'] = '1';
  115. $data['info'] = '获取验证码失败';
  116. }
  117. }
  118. return json_encode($data);
  119. }
  120. /**
  121. * Function Description:登录
  122. * Function Name: actionLogin
  123. *
  124. * @return string
  125. *
  126. * @author 张帅
  127. */
  128. public function actionLogin()
  129. {
  130. $base_driver = new BaseDriver();
  131. #region 获取参数
  132. $phone = Yii::$app->request->post('phone');//手机号
  133. $machine_code = Yii::$app->request->post('machine_code');//设备码
  134. $code = Yii::$app->request->post('code');//验证码
  135. $machine_code == 'null' ? $machine_code = '' : true;
  136. #endregion
  137. //add by qius on 2018.5.10 限制登陆
  138. $unlogin_phone = array( "13585834002", "18601662506", "15316672680", "17714235565", "13601993935", "18301709568", "13701984007", "13585555157"
  139. /*,"13868213405"*/);
  140. $data = array();
  141. if( in_array( $phone, $unlogin_phone ) ) {
  142. $data['code'] = "1";
  143. $data['info'] = '手机号不存在';
  144. return json_encode($data);
  145. }
  146. //end of add by qius on 2018.5.10 限制登陆
  147. // //1.验证码是否合法
  148. // if (mb_strlen($code) != 4) {
  149. // $data['code'] = "1";
  150. // $data['info'] = '请正确输入四位验证码';
  151. // return json_encode($data);
  152. // }
  153. //2.获取司机详情
  154. $driver_info = $base_driver->getDriverInfoByPhone($phone);
  155. if ($driver_info === false) {
  156. $data['code'] = "1";
  157. $data['info'] = '手机号不存在';
  158. return json_encode($data);
  159. }
  160. //3.检验验证码
  161. $check_code = DriverLoginNew::find()->select('id')->where(['phone' => $phone, 'div' => $machine_code, 'code' => $code, 'status' => 0])->asArray()->one();
  162. if ($code != '123456' && count($check_code) == 0) {
  163. $data['code'] = "1";
  164. $data['info'] = '登录失败';
  165. return json_encode($data);
  166. }
  167. if($code != '123456'){
  168. //4.修改登录状态
  169. $login_status = DriverLoginNew::findOne(['id' => $check_code['id']]);
  170. $login_status->STATUS = 179;
  171. $login_status->UPDATE_TIME = date('Y-m-d H:i:s', time());
  172. $login_status->update();
  173. }
  174. $data['code'] = '0';
  175. $data['info'] = '登陆成功';
  176. $data['data'] = $driver_info;
  177. return json_encode($data);
  178. }
  179. /**
  180. * Function Description:登出
  181. * Function Name: actionLogout
  182. *
  183. * @return string
  184. *
  185. * @author 张帅
  186. */
  187. public function actionLogout()
  188. {
  189. #region 获取参数
  190. $driver_id = Yii::$app->request->post('driver_id');//司机id
  191. $machine_code = Yii::$app->request->post('machine_code');//设备码
  192. #endregion
  193. $login_status = DriverLoginNew::findOne(['res_id' => $driver_id, 'div' => $machine_code, 'cancel_flag' => 0]);
  194. $login_status->STATUS = 180;
  195. $login_status->UPDATE_TIME = date('Y-m-d H:i:s', time());
  196. $res = $login_status->update();
  197. if ($res) {
  198. $data['code'] = '0';
  199. $data['info'] = '登出成功';
  200. } else {
  201. $data['code'] = '1';
  202. $data['info'] = '登出失败';
  203. }
  204. return json_encode($data);
  205. }
  206. /**
  207. * Function Description:获取司机详情
  208. * Function Name: actionTaskSet
  209. *
  210. * @return string
  211. *
  212. * @author 张帅
  213. */
  214. public function actionTaskSet()
  215. {
  216. $base_driver = new BaseDriver();
  217. $bus_order = new BusOrder();
  218. $run_bus_expenses = new RunBusExpenses();
  219. #region 获取参数
  220. $driver_id = Yii::$app->request->post('driver_id');//司机id
  221. #endregion
  222. //1.获取司机名称及所属渠道
  223. $driver_info = $base_driver->getDriverInfoById($driver_id);
  224. if ($driver_info === false) {
  225. $data['code'] = '1';
  226. $data['info'] = '查询失败';
  227. return json_encode($data);
  228. }
  229. //2.获取已完成任务数量
  230. $task_complete = $bus_order->getTaskComplete($driver_id);
  231. $driver_info['task_complete'] = $task_complete;
  232. //3.获取总里程
  233. $total_mileage = $run_bus_expenses->getTotalMileageByDriver($driver_id);
  234. $driver_info['total_mileage'] = $total_mileage;
  235. //4.获取新消息条数
  236. $new_message = DriverMessage::find()
  237. ->where([
  238. 'and',
  239. ['=', 'driver_id', $driver_id],
  240. ['=', 'cancel_flag', 0],
  241. ['in', 'msg_type', [490, 491]],
  242. ['=', 'is_read', 0],
  243. ])->count();
  244. $driver_info['new_message'] = $new_message;
  245. $data['code'] = '0';
  246. $data['info'] = '返回数据成功';
  247. $data['data'] = $driver_info;
  248. return json_encode($data);
  249. }
  250. /**
  251. * Function Description:获取任务列表
  252. * Function Name: actionTaskList
  253. *
  254. * @return string
  255. *
  256. * @author 张帅
  257. */
  258. public function actionTaskList()
  259. {
  260. $bus_order = new BusOrder();
  261. #region 获取参数
  262. $driver_id = Yii::$app->request->post('driver_id');//司机id
  263. $run_date = Yii::$app->request->post('run_date');//查询时间
  264. #endregion
  265. //获取任务列表
  266. $task_list = $bus_order->getDriverTask($driver_id, $run_date);
  267. $data['code'] = '0';
  268. $data['info'] = '返回数据成功';
  269. $data['data'] = $task_list;
  270. return json_encode($data);
  271. }
  272. /**
  273. * Function Description:获取任务详情
  274. * Function Name: actionGetRunInfo
  275. *
  276. * @return string
  277. *
  278. * @author 张帅
  279. */
  280. public function actionGetRunInfo()
  281. {
  282. $bus_order = new BusOrder();
  283. $bus_itinerary = new BusItinerary();
  284. $order_main = new OrderMain();
  285. #region 获取参数
  286. $bus_number = Yii::$app->request->post('bus_number');//出车单号
  287. #endregion
  288. //1.判断参数
  289. if (empty($bus_number)) {
  290. $data['code'] = '1';
  291. $data['info'] = '确少必要参数';
  292. return json_encode($data);
  293. }
  294. //2.获取车次详情
  295. $bus_info = $bus_order->getBusInfo($bus_number);
  296. if ($bus_info === false) {
  297. $data['code'] = '1';
  298. $data['info'] = '查询失败';
  299. return json_encode($data);
  300. }
  301. $itinerary_id = $bus_info['itinerary_id'];
  302. //check send bus status
  303. $cur_run_date = $bus_info['run_date'];
  304. $cur_bus_driver = $bus_info['send_bus_driver_res_id'];
  305. $get_count = $bus_order->countBusOrderFromStatus($cur_bus_driver, $cur_run_date, 437);
  306. //3.获取该车次站点信息
  307. $station_info = $bus_itinerary->getStationInfo($itinerary_id);
  308. if ($station_info === false) {
  309. $data['code'] = '1';
  310. $data['info'] = '查询失败';
  311. return json_encode($data);
  312. }
  313. //4.获取订单数据
  314. $run_id = $bus_info['run_id'];
  315. $bus_order_id = $bus_info['bus_order_id'];
  316. if ($run_id == 0 || $bus_order_id == 0) {
  317. $order_info = [];
  318. } else {
  319. $order_info = $order_main->getRunBusOrderInfo($run_id, $bus_order_id);
  320. }
  321. //5.处理数据
  322. $result = $bus_order->getRunBusStationOrderInfo($bus_info, $station_info, $order_info);
  323. $result["can_start_flag"] = $get_count > 0 ? false : true;
  324. $data['code'] = '0';
  325. $data['info'] = '返回数据成功';
  326. $data['data'] = $result;
  327. return json_encode($data);
  328. }
  329. /**
  330. * Function Description:任务开始
  331. * Function Name: actionRunStart
  332. *
  333. * @return string
  334. *
  335. * @author 张帅
  336. */
  337. public function actionRunStart()
  338. {
  339. $run_bus_expenses = new RunBusExpenses();
  340. #region 获取参数
  341. $bus_number = Yii::$app->request->post('bus_number');//出车单号
  342. $postage = Yii::$app->request->post('postage');//公里数
  343. $toll_charge = Yii::$app->request->post('toll_charge');//ETC
  344. #endregion
  345. //1.判断行程状态
  346. $run_status = BusOrder::find()->select('run_status,send_bus_res_id')->where(['bus_number' => $bus_number, 'cancel_flag' => 0])->one();
  347. if ($run_status['run_status'] != 436 && $run_status['run_status'] != 435) {
  348. $data['code'] = '1';
  349. $data['info'] = '该任务不是待出行状态';
  350. return json_encode($data);
  351. }
  352. //2.check 公里数
  353. $bus_res_id = $run_status['send_bus_res_id'];
  354. $max_bus_expense = $run_bus_expenses->getExpenseMaxEndValue($bus_res_id, 462);
  355. if ( $max_bus_expense != false && (($max_bus_expense > $postage || $postage - $max_bus_expense > 3000))) {
  356. $data['code'] = '1';
  357. $data['info'] = '您输入的公里数有误';
  358. return json_encode($data);
  359. }
  360. //3.任务开始
  361. $result = $run_bus_expenses->runStart($bus_number, $postage, $toll_charge);
  362. if ($result) {
  363. $data['code'] = '0';
  364. $data['info'] = '出行成功';
  365. } else {
  366. $data['code'] = '1';
  367. $data['info'] = '出行失败';
  368. }
  369. return json_encode($data);
  370. }
  371. /**
  372. * Function Description:结束任务
  373. * Function Name: actionRunEnd
  374. *
  375. * @return string
  376. *
  377. * @author 张帅
  378. */
  379. public function actionRunEnd()
  380. {
  381. $run_bus_expenses = new RunBusExpenses();
  382. #region 获取参数
  383. $bus_number = Yii::$app->request->post('bus_number');//出车单号
  384. $postage = Yii::$app->request->post('postage');//公里数
  385. $toll_charge = Yii::$app->request->post('toll_charge');//ETC
  386. #endregion
  387. //1.判断行程状态
  388. $run_status = BusOrder::find()->select('run_status')->where(['bus_number' => $bus_number, 'cancel_flag' => 0])->asArray()->one();
  389. if ($run_status['run_status'] != 437) {
  390. $data['code'] = '1';
  391. $data['info'] = '该任务不是出行中状态';
  392. return json_encode($data);
  393. }
  394. //etc检查
  395. $run_bus_expenses_info = RunBusExpenses::find()->select('start_value')->where(['bus_number' => $bus_number, 'expense_subject_id' => 463])->asArray()->one();
  396. if ($toll_charge > $run_bus_expenses_info["start_value"]) {
  397. $data['code'] = '1';
  398. $data['info'] = 'etc填写错误,结束值不能大于开始值!';
  399. return json_encode($data);
  400. }
  401. //公里数检查
  402. $run_bus_expenses_info = RunBusExpenses::find()->select('start_value')->where(['bus_number' => $bus_number, 'expense_subject_id' => 462])->asArray()->one();
  403. if ($postage < $run_bus_expenses_info["start_value"]) {
  404. $data['code'] = '1';
  405. $data['info'] = '公里数填写错误,结束值不能小于开始值!';
  406. return json_encode($data);
  407. }else if($postage - $run_bus_expenses_info["start_value"] > 3000){
  408. $data['code'] = '1';
  409. $data['info'] = '公里数填写错误,单行程公里数不能超过3000!';
  410. return json_encode($data);
  411. }
  412. //2.任务结束
  413. $result = $run_bus_expenses->runEnd($bus_number, $postage, $toll_charge, ($postage-$run_bus_expenses_info["start_value"]));
  414. if ($result == true) {
  415. $data['code'] = '0';
  416. $data['info'] = '结束出行成功';
  417. } else {
  418. $data['code'] = '1';
  419. $data['info'] = '结束出行失败';
  420. }
  421. return json_encode($data);
  422. }
  423. /**
  424. * Function Description:获取报账配置数据
  425. * Function Name: actionGetFinanceData
  426. *
  427. * @return string
  428. *
  429. * @author 张帅
  430. */
  431. public function actionGetFinanceData()
  432. {
  433. $run_bus_expenses = new RunBusExpenses();
  434. #region 获取参数
  435. $bus_number = Yii::$app->request->post('bus_number');//出车单号
  436. #endregion
  437. //1.判断报账状态
  438. $finance_status = BusOrder::find()->select('run_status,finance_status')->where(['bus_number' => $bus_number, 'cancel_flag' => 0])->asArray()->one();
  439. if ($finance_status['finance_status'] != 444 || $finance_status['run_status'] != 438) {
  440. $data['code'] = '1';
  441. $data['info'] = '该任务不是待报账状态';
  442. return json_encode($data);
  443. }
  444. //2.获取邮电费和路桥费
  445. $result = $run_bus_expenses->getRunOrderExpenses($bus_number);
  446. $data['code'] = '0';
  447. $data['info'] = '获取数据出行成功';
  448. $data['data'] = $result;
  449. return json_encode($data);
  450. }
  451. /**
  452. * Function Description:提交报账
  453. * Function Name: actionSubmitFinance
  454. *
  455. * @return string
  456. *
  457. * @author 张帅
  458. */
  459. public function actionSubmitFinance()
  460. {
  461. $run_bus_expenses = new RunBusExpenses();
  462. #region 获取参数
  463. $bus_number = Yii::$app->request->post('bus_number');//出车单号
  464. $food_expense = Yii::$app->request->post('food_expense');//餐饮费
  465. $hotel_expense = Yii::$app->request->post('hotel_expense');//住宿费
  466. $park_expense = Yii::$app->request->post('park_expense');//停车费
  467. #endregion
  468. //1.判断报账状态
  469. $finance_status = BusOrder::find()->select('run_status,finance_status')->where(['bus_number' => $bus_number, 'cancel_flag' => 0])->asArray()->one();
  470. if ($finance_status['finance_status'] != 444 || $finance_status['run_status'] != 438) {
  471. $data['code'] = '1';
  472. $data['info'] = '该任务不是待报账状态';
  473. return json_encode($data);
  474. }
  475. //2.提交报账
  476. $result = $run_bus_expenses->getSubmitFinance($bus_number, $food_expense, $hotel_expense, $park_expense);
  477. if ($result) {
  478. $data['code'] = '0';
  479. $data['info'] = '报账成功';
  480. } else {
  481. $data['code'] = '1';
  482. $data['info'] = '报账失败';
  483. }
  484. return json_encode($data);
  485. }
  486. /**
  487. * Function Description:获取费用详情
  488. * Function Name: actionGetFinanceDetail
  489. *
  490. * @return string
  491. *
  492. * @author 张帅
  493. */
  494. public function actionGetFinanceDetail()
  495. {
  496. $run_bus_expenses = new RunBusExpenses();
  497. #region 获取参数
  498. $bus_number = Yii::$app->request->post('bus_number');//出车单号
  499. #endregion
  500. //1.判断报账状态
  501. $finance_status = BusOrder::find()->select('run_status,finance_status')->where(['bus_number' => $bus_number, 'cancel_flag' => 0])->asArray()->one();
  502. if ($finance_status['finance_status'] == 444 || $finance_status['run_status'] != 438) {
  503. $data['code'] = '1';
  504. $data['info'] = '还未报账';
  505. return json_encode($data);
  506. }
  507. //2.获取账单详情
  508. $result = $run_bus_expenses->getFinanceDetail($bus_number);
  509. $data['code'] = '0';
  510. $data['info'] = '获取报账信息成功';
  511. $data['data'] = $result;
  512. return json_encode($data);
  513. }
  514. /**
  515. * Function Description:重新提交报账
  516. * Function Name: actionSubmitFinance
  517. *
  518. * @return string
  519. *
  520. * @author 张帅
  521. */
  522. public function actionResubmitFinance()
  523. {
  524. $run_bus_expenses = new RunBusExpenses();
  525. #region 获取参数
  526. $bus_number = Yii::$app->request->post('bus_number');//出车单号
  527. $food_expense = Yii::$app->request->post('food_expense');//餐饮费
  528. $hotel_expense = Yii::$app->request->post('hotel_expense');//住宿费
  529. $park_expense = Yii::$app->request->post('park_expense');//停车费
  530. #endregion
  531. //1.判断报账状态
  532. $finance_status = BusOrder::find()->select('run_status,finance_status')->where(['bus_number' => $bus_number, 'cancel_flag' => 0])->asArray()->one();
  533. if ($finance_status['finance_status'] != 447 || $finance_status['run_status'] != 438) {
  534. $data['code'] = '1';
  535. $data['info'] = '该任务不是被驳回状态';
  536. return json_encode($data);
  537. }
  538. //2.提交报账
  539. $result = $run_bus_expenses->getResubmitFinance($bus_number, $food_expense, $hotel_expense, $park_expense);
  540. if ($result) {
  541. $data['code'] = '0';
  542. $data['info'] = '重新报账成功';
  543. } else {
  544. $data['code'] = '1';
  545. $data['info'] = '重新报账失败';
  546. }
  547. return json_encode($data);
  548. }
  549. /**
  550. * Function Description:获取报账列表
  551. * Function Name: actionGetFinanceList
  552. *
  553. * @return string
  554. *
  555. * @author 张帅
  556. */
  557. public function actionGetFinanceList()
  558. {
  559. $bus_order = new BusOrder();
  560. #region 获取参数
  561. $driver_id = Yii::$app->request->post('driver_id');//司机id
  562. #endregion
  563. $finance_list = $bus_order->getFinanceListByDriver($driver_id);
  564. $data['code'] = '0';
  565. $data['info'] = '获取报账列表成功';
  566. $data['data'] = $finance_list;
  567. return json_encode($data);
  568. }
  569. /**
  570. * Function Description:加油
  571. * Function Name: actionAddOil
  572. *
  573. * @return string
  574. *
  575. * @author 张帅
  576. */
  577. public function actionAddOil()
  578. {
  579. $bus_expenses = new BusExpenses();
  580. #region 获取参数
  581. $driver_id = Yii::$app->request->post('driver_id');//司机id
  582. $bus_no = Yii::$app->request->post('bus_no');//车牌号
  583. $expense_destination = Yii::$app->request->post('expense_destination');//支出去向
  584. $start_value = Yii::$app->request->post('start_value');//加油前里程
  585. $receive_value = Yii::$app->request->post('receive_value');//加油量
  586. $expense_price = Yii::$app->request->post('expense_price');//支付金额
  587. #endregion
  588. //1.判断车牌号是否正确
  589. $bus_id = BaseBus::find()->select('bus_id')->where(['bus_no' => $bus_no, 'cancel_flag' => 0])->asArray()->one();
  590. if (count($bus_id) == 0) {
  591. $data['code'] = '1';
  592. $data['info'] = '系统中无该车牌号';
  593. return json_encode($data);
  594. }
  595. $bus_id = $bus_id['bus_id'];
  596. //2.填入加油数据
  597. $result = $bus_expenses->addOil($driver_id, $bus_id, $expense_destination, $start_value, $receive_value, $expense_price);
  598. if ($result) {
  599. $data['code'] = '0';
  600. $data['info'] = '提交加油信息成功';
  601. } else {
  602. $data['code'] = '1';
  603. $data['info'] = '提交加油信息失败';
  604. }
  605. return json_encode($data);
  606. }
  607. /**
  608. * Function Description:获取司机信息列表
  609. * Function Name: actionDriverMessageList
  610. *
  611. * @return string
  612. *
  613. * @author 张帅
  614. */
  615. public function actionDriverMessageList()
  616. {
  617. $driver_message = new DriverMessage();
  618. #region 获取参数
  619. $driver_id = Yii::$app->request->post('driver_id');//司机id
  620. $current_page = Yii::$app->request->post('current_page');//当前页
  621. $page_size = Yii::$app->request->post('page_size');//每页条数
  622. #endregion
  623. $message_list = $driver_message->getDriverMessage($driver_id, $current_page, $page_size);
  624. $data['code'] = '0';
  625. $data['info'] = '获取信息列表成功';
  626. $data['date'] = $message_list;
  627. return json_encode($data);
  628. }
  629. /**
  630. * Function Description:更改信息已读状态
  631. * Function Name: actionReadMessage
  632. *
  633. * @return string
  634. *
  635. * @author 张帅
  636. */
  637. public function actionReadMessage()
  638. {
  639. #region 获取参数
  640. $message_id = Yii::$app->request->post('message_id');//信息id
  641. #endregion
  642. $message_one = DriverMessage::findOne(['id' => $message_id]);
  643. $message_one->IS_READ = 1;
  644. $message_one->update();
  645. $data['code'] = '0';
  646. $data['info'] = '成功更改';
  647. return json_encode($data);
  648. }
  649. /**
  650. * Function Description:通过车牌号获取蓝牙地址
  651. * Function Name: actionAddressByBusNo
  652. *
  653. * @return string
  654. *
  655. * @author 张帅
  656. */
  657. public function actionAddressByBusNo()
  658. {
  659. $base_bus = new BaseBus();
  660. #region 获取参数
  661. $bus_no = Yii::$app->request->post('bus_no');//车牌号
  662. #endregion
  663. $result = $base_bus->getAddressByBusNo($bus_no);
  664. $data['code'] = '0';
  665. $data['info'] = '返回数据成功';
  666. $data['list'] = $result;
  667. return json_encode($data);
  668. }
  669. /**
  670. * Function Description:更改乘客上车状态
  671. * Function Name: actionUpdateCheckStatus
  672. *
  673. * @return string
  674. *
  675. * @author 张帅
  676. */
  677. public function actionUpdateCheckStatus()
  678. {
  679. $order_check_tickets = new OrderCheckTickets();
  680. #region 获取参数
  681. $driver_id = Yii::$app->request->post('driver_id');//司机id
  682. $order_id = Yii::$app->request->post('order_id');//订单号
  683. $check_status = Yii::$app->request->post('check_status');//状态 手动5,扫码6
  684. #endregion
  685. if ($order_id == 0) {
  686. $data['code'] = '1';
  687. $data['info'] = '该订单不存在或不可检票';
  688. return json_encode($data);
  689. }
  690. if(substr($order_id, 0, 1) == 0){ // 订单号是0开头的,为了兼容6位到7位的过渡
  691. $order_id = substr($order_id,1); //去掉第一位订单号
  692. }
  693. //1.通过订单号获取班次和车号
  694. $order_info = OrderMain::find()
  695. ->select("run_id,run_bus_order_id as bus_order_id,count(order_id) as people_num")
  696. ->where([
  697. 'and',
  698. ['=', 'parent_order_id', $order_id],
  699. ['in', 'order_status', [146, 147]],
  700. ['=', 'cancel_flag', 0],
  701. ])
  702. ->asArray()->one();
  703. if ($order_info['people_num'] == 0 || count($order_info) == 0) {
  704. $data['code'] = '1';
  705. $data['info'] = '该订单不存在或不可检票';
  706. return json_encode($data);
  707. }
  708. //2.判断任务是否出行中
  709. $run_id = $order_info['run_id'];//班次号
  710. $bus_order_id = $order_info['bus_order_id'];//车次号
  711. $people_num = $order_info['people_num'];//人数
  712. $task_info = BusOrder::find()
  713. ->select('bus_number')
  714. ->where([
  715. 'and',
  716. ['=', 'run_id', $run_id],
  717. ['=', 'bus_order_id', $bus_order_id],
  718. ['=', 'cancel_flag', 0],
  719. ['=', 'run_date', date('Y-m-d', time())],//当天
  720. ['=', 'run_status', 437],//出行中
  721. ['=', 'send_bus_driver_res_id', $driver_id],//是否上错车
  722. ])
  723. ->asArray()->one();
  724. //判断是否是出行中的车次
  725. if (count($task_info) == 0) {
  726. $data['code'] = '2';
  727. $data['info'] = '不是本车次乘客';
  728. return json_encode($data);
  729. }
  730. //3.检票
  731. $result = $order_check_tickets->updateCheckStatus($driver_id, $run_id, $order_id, $bus_order_id, $check_status);
  732. if ($result) {
  733. $data['code'] = '0';
  734. $data['info'] = '检票成功';
  735. $data['data']['num'] = $people_num;
  736. } else {
  737. $data['code'] = '1';
  738. $data['info'] = '检票失败';
  739. }
  740. return json_encode($data);
  741. }
  742. /**
  743. * Function Description:获取app版本号
  744. * Function Name: actionGetVersion
  745. *
  746. * @return string
  747. *
  748. * @author 张帅
  749. */
  750. public function actionGetVersion()
  751. {
  752. $result = DriverAppVersion::find()->select('app_version,app_url')->asArray()->one();
  753. $data['code'] = '0';
  754. $data['info'] = '获取版本号成功';
  755. $data['data'] = $result;
  756. return json_encode($data);
  757. }
  758. /**
  759. * Function Description:上传app版本号
  760. * Function Name: actionGetVersion
  761. *
  762. * @return string
  763. *
  764. * @author 张帅
  765. */
  766. public function actionUploadVersion()
  767. {
  768. $driver_app_update_status = new DriverAppUpdateStatus();
  769. #region 获取参数
  770. $driver_id = Yii::$app->request->post('driver_id');//司机id
  771. $version_code = Yii::$app->request->post('version_code');//当前版本号
  772. #endregion
  773. $result = $driver_app_update_status->uploadVersion($driver_id, $version_code);
  774. if ($result) {
  775. $data['code'] = '0';
  776. $data['info'] = '上传版本号成功';
  777. } else {
  778. $data['code'] = '1';
  779. $data['info'] = '上传版本号失败';
  780. }
  781. return json_encode($data);
  782. }
  783. /**
  784. * Function Description:司机上传位置
  785. * Function Name: actionUploadPosition
  786. *
  787. * @return string
  788. *
  789. * @author 张帅
  790. */
  791. public function actionUploadPosition()
  792. {
  793. $run_bus_pos = new RunBusPos();
  794. #region 获取参数
  795. $driver_id = Yii::$app->request->post('driver_id');//司机id
  796. $div = Yii::$app->request->post('div');//手机设备号
  797. $pos_x = Yii::$app->request->post('pos_x');//经度
  798. $pos_y = Yii::$app->request->post('pos_y');//纬度
  799. #endregion
  800. $value = [
  801. 'phone_serial_no' => $div,
  802. 'log_time' => date('Y-m-d H:i:s', time()),
  803. 'pos_x' => $pos_x,
  804. 'pos_y' => $pos_y,
  805. 'driver_id' => $driver_id,
  806. ];
  807. $run_bus_pos->attributes = $value;
  808. $result = $run_bus_pos->insert();
  809. if ($result) {
  810. $data['code'] = '0';
  811. $data['info'] = '上传位置成功';
  812. } else {
  813. $data['code'] = '1';
  814. $data['info'] = '上传位置失败';
  815. }
  816. return json_encode($data);
  817. }
  818. /**
  819. * Function Description:添加司机消息
  820. * Function Name: actionSendDriverMsg
  821. *
  822. * @return bool|string
  823. *
  824. * @author 张帅
  825. */
  826. public function actionSendDriverMsg()
  827. {
  828. $driver_message = new DriverMessage();
  829. #region 获取参数
  830. $msg_type = Yii::$app->request->post('msg_type');//短信类型 2.报账通知(已驳回) 3.派车通知发送时间
  831. $bus_number = Yii::$app->request->post('bus_number');//出车单号
  832. #endregion
  833. //1.保存信息
  834. $message_list = $driver_message->addMessage($msg_type, $bus_number);
  835. //2.发送推送
  836. if (count($message_list) > 0) {
  837. $push_arr = [];
  838. foreach ($message_list as $key => $vel) {
  839. $push_one['date'] = substr($vel['SEND_MESSAGE'], 0, 10);
  840. $push_one['driver_id'] = $vel['DRIVER_ID'];
  841. $push_arr[] = $push_one;
  842. }
  843. $result = $driver_message->push($msg_type, $push_arr);
  844. } else {
  845. $result = true;
  846. }
  847. return $result;
  848. }
  849. /**
  850. * Function Description:获取司贴列表
  851. * Function Name: actionGetDriverSubsidyList
  852. *
  853. * @return string
  854. *
  855. * @author 张帅
  856. */
  857. public function actionGetDriverSubsidyList()
  858. {
  859. $run_bus_expenses = new RunBusExpenses();
  860. #region 获取参数
  861. $driver_id = Yii::$app->request->post('driver_id');//司机id
  862. #endregion
  863. $driver_subsidy_list = $run_bus_expenses->getDriverSubsidyList($driver_id);
  864. $data['code'] = '0';
  865. $data['info'] = '获取司贴列表成功';
  866. $data['data'] = $driver_subsidy_list;
  867. return json_encode($data);
  868. }
  869. //--------------------------------------------------------华丽的分割线------------------------------------------------------------//
  870. /**
  871. * Function Description:获取补丁包
  872. * Function Name: actionGetPatch
  873. *
  874. * @return string
  875. *
  876. * @author 傅冬荣
  877. */
  878. public function actionGetPatch()
  879. {
  880. $check_sql = '' . "SELECT
  881. patch_name
  882. FROM
  883. driver_patch_info
  884. ";
  885. $check_result = Yii::$app->db->createCommand($check_sql)->queryAll();
  886. $data = [];
  887. $data['code'] = '0';
  888. $data['info'] = '获取成功';
  889. $data['result'] = $check_result[0]['patch_name'];
  890. return json_encode($data);
  891. }
  892. /**
  893. * 获取所有的司机列表,用于上帝app中选择司机
  894. * @author 傅冬荣
  895. */
  896. public function actionDriverListInfo(){
  897. $key_word = Yii::$app->request->post('key_word');//司机id
  898. $base_driver = new BaseDriver();
  899. $driver_list = $base_driver -> getDriverListInfo($key_word);
  900. if ($driver_list === false) {
  901. $data['code'] = '1';
  902. $data['info'] = '查询失败';
  903. return json_encode($data);
  904. }
  905. $data['code'] = '0';
  906. $data['info'] = '查询成功';
  907. $data['data'] = $driver_list;
  908. return json_encode($data);
  909. }
  910. /**
  911. * 根据车辆获取历史最大的结束里程数
  912. * @author 傅冬荣
  913. */
  914. public function actionGetLastMilege(){
  915. $bus_res_id = Yii::$app->request->post('bus_res_id'); //车辆资源id
  916. $run_bus_expense = new RunBusExpenses();
  917. $last_milege = $run_bus_expense -> getLastMilegeByBusResId($bus_res_id); //最大公里数
  918. if($last_milege === false){
  919. $data['code'] = '1';
  920. $data['info'] = '查询失败';
  921. return json_encode($data);
  922. }
  923. $data['code'] = '0';
  924. $data['info'] = '查询成功';
  925. $data['data'] = $last_milege;
  926. return json_encode($data);
  927. }
  928. /**
  929. * 根据bus_number获取到行程开始时填的公里数
  930. * @author 傅冬荣
  931. */
  932. public function actionGetStartMilege(){
  933. $bus_number = Yii::$app->request->post('bus_number');
  934. $run_bus_expense = new RunBusExpenses();
  935. $start_milege = $run_bus_expense -> getStartMilegeByBusNumber($bus_number);
  936. if($start_milege === false){
  937. $data['code'] = '1';
  938. $data['info'] = '查询失败';
  939. return json_encode($data);
  940. }
  941. $data['code'] = '0';
  942. $data['info'] = '查询成功';
  943. $data['data'] = $start_milege;
  944. return json_encode($data);
  945. }
  946. /**
  947. * 获取验证码列表
  948. * @author 傅冬荣
  949. */
  950. public function actionCodeInfoList(){
  951. $driverLoginNew = new DriverLoginNew();
  952. $code_info_list = $driverLoginNew -> getCodeList();
  953. if(!$code_info_list){
  954. $data['code'] = '1';
  955. $data['info'] = '查询失败';
  956. return json_encode($data);
  957. }
  958. $data['code'] = '0';
  959. $data['info'] = '查询成功';
  960. $data['data'] = $code_info_list;
  961. return json_encode($data);
  962. }
  963. /**
  964. * 通过司机姓名或者日期或者车辆来获取行程信息
  965. */
  966. public function actionGetTaskByParam(){
  967. $driver_name = Yii::$app->request->post('driver_name');
  968. $bus_no = Yii::$app->request->post('car_number');
  969. $run_date = Yii::$app->request->post('run_date');
  970. $bus_order = new BusOrder();
  971. $task_list = $bus_order->getTaskByParam($driver_name,$bus_no,$run_date);
  972. $data['code'] = '0';
  973. $data['info'] = '查询成功';
  974. $data['task_list'] = $task_list;
  975. return json_encode($data);
  976. }
  977. /**
  978. * 根据bus_number来获取报账信息
  979. */
  980. public function actionGetExpensesInfo(){
  981. $bus_number = Yii::$app->request->post('bus_number');
  982. $run_bus_expenses = new RunBusExpenses();
  983. $expense_list = $run_bus_expenses->getExpensesListByBusNumber($bus_number);
  984. $data['code'] = '0';
  985. $data['info'] = '查询成功';
  986. $data['expense_list'] = $expense_list;
  987. return json_encode($data);
  988. }
  989. }