OrderController.php 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. namespace console\controllers;
  3. use bizGhs\order\classes\OrderClass;
  4. use bizGhs\order\models\Order;
  5. use bizGhs\order\services\OrderService;
  6. use common\components\dict;
  7. use common\components\noticeUtil;
  8. use Yii;
  9. use yii\console\Controller;
  10. /**
  11. * 订单相关
  12. */
  13. class OrderController extends Controller
  14. {
  15. //待配送订单,超过24小时自动完成 ./yii order/auto-finish
  16. public function actionAutoFinish()
  17. {
  18. $remain = time() - 86400;
  19. $date = date("Y-m-d H:i:s", $remain);
  20. $query = new \yii\db\Query();
  21. $query->from(Order::tableName());
  22. $query->where(['status' => OrderClass::ORDER_STATUS_UN_SEND])->andWhere(['<=', 'addTime', $date]);
  23. $query->orderBy('deadline ASC');
  24. Yii::$app->params['ptStyle'] = dict::getDict('ptStyle', 'ghs');
  25. //如果有报错,抛出异常
  26. Yii::$app->params['errorReport'] = 1;
  27. foreach ($query->batch() as $orderInfoList) {
  28. foreach ($orderInfoList as $orderInfo) {
  29. $connection = Yii::$app->db;//事务处理
  30. $transaction = $connection->beginTransaction();
  31. $id = $orderInfo['id'] ?? 0;
  32. $orderSn = $orderInfo['orderSn'] ?? '';
  33. $status = $orderInfo['status'] ?? OrderClass::ORDER_STATUS_UN_PAY;
  34. $addTime = $orderInfo['addTime'] ?? '';
  35. $prefix = "订单{$orderSn},ID{$id},创建于{$addTime},状态是{$status}";
  36. if ($status != OrderClass::ORDER_STATUS_UN_SEND) {
  37. noticeUtil::push($prefix . " 自动确认完成操作时,状态不对", '15280215347');
  38. continue;
  39. }
  40. if (empty($addTime) && $addTime > $date) {
  41. noticeUtil::push($prefix . " 自动确认完成操作时,时间不对", '15280215347');
  42. continue;
  43. }
  44. try {
  45. $unSendOrder = OrderClass::getById($id, true);
  46. OrderClass::selfSend($unSendOrder);
  47. $hasSendOrder = OrderClass::getById($id, true);
  48. OrderService::reach($hasSendOrder);
  49. $transaction->commit();
  50. noticeUtil::push($prefix . " 已【自动确认完成】 SUCCESS", '15280215347');
  51. } catch (\Exception $e) {
  52. $transaction->rollBack();
  53. $msg = $e->getMessage();
  54. noticeUtil::push("销售单自动确认完成报错了!订单号:{$orderSn},错误信息:{$msg}", '15280215347');
  55. }
  56. }
  57. }
  58. }
  59. }