OrderSendClass.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. namespace bizHd\order\classes;
  3. use biz\shop\models\Shop;
  4. use biz\sj\classes\MerchantClass;
  5. use bizHd\message\classes\InformAdminClass;
  6. use bizHd\message\classes\InformUserClass;
  7. use bizHd\user\classes\UserClass;
  8. use common\components\util;
  9. use bizHd\base\classes\BaseClass;
  10. class OrderSendClass extends BaseClass
  11. {
  12. public static $baseFile = '\bizHd\order\models\OrderSend';
  13. //流程id与名称
  14. public static $actionId = ['placeOrder' => 10, 'printOrder' => 20, 'deliver' => 30, 'reach' => 40];
  15. public static $action = [
  16. 10 => ['name' => '下单', 'sign' => 'placeOrder'],
  17. 20 => ['name' => '制单', 'sign' => 'printOrder',],
  18. 30 => ['name' => '发货', 'sign' => 'deliver'],
  19. 40 => ['name' => '送达', 'sign' => 'reach']
  20. ];
  21. //下单完成,开始制单 ssh 2019.12.13
  22. public static function placeOrder($data)
  23. {
  24. //下单完成
  25. $orderId = $data['orderId'];
  26. $payTime = $data['payTime'];
  27. $actionId = self::$actionId;
  28. $placeOrderId = $actionId['placeOrder'];
  29. $orderSn = $data['orderSn'] ?? '';
  30. $time = time();
  31. $data = ['actionId' => $placeOrderId, 'orderId' => $orderId, 'orderSn' => $orderSn, 'finishTime' => $payTime, 'addTime' => $time, 'inTurn' => $placeOrderId];
  32. self::add($data);
  33. OrderClass::updateById($orderId, ['currentFlow' => 1]);
  34. //制单开始
  35. $printOrderId = $actionId['printOrder'];
  36. $data = ['actionId' => $printOrderId, 'orderId' => $orderId, 'orderSn' => $orderSn, 'finishTime' => 0, 'addTime' => $time, 'inTurn' => $printOrderId];
  37. self::add($data);
  38. }
  39. //当前待执行的动作 ssh 2019.12.16
  40. public static function toDoActionId($orderSn)
  41. {
  42. $action = self::getByCondition(['orderSn' => $orderSn], false, 'inTurn DESC');
  43. if (empty($action)) {
  44. util::fail('没有找到当前待执行的流程');
  45. }
  46. $actionId = 0;
  47. if (empty($action['finishTime'])) {
  48. $actionId = $action['actionId'];
  49. }
  50. return $actionId;
  51. }
  52. //免发货流程的处理 ssh 2020.3.12
  53. public static function withoutSend($order)
  54. {
  55. $id = $order['id'];
  56. if ($order['status'] == OrderClass::ORDER_STATUS_COMPLETE) {
  57. util::fail('订单已完成');
  58. }
  59. self::deleteByCondition(['orderId' => $id]);
  60. //订单状态变更
  61. OrderClass::updateById($id, ['sendType' => 1, 'status' => OrderClass::ORDER_STATUS_COMPLETE, 'totalFlow' => OrderClass::ORDER_TOTAL_FLOW, 'currentFlow' => OrderClass::ORDER_TOTAL_FLOW]);
  62. //待发货订单-1,完成订单+1
  63. $shopId = $order['shopId'];
  64. $shop = Shop::findBySql('select * from ' . Shop::tableName() . ' where id = :id for update', ['id' => $shopId])->one();
  65. $shop->finishOrder += 1;
  66. $shop->unSendOrder -= 1;
  67. $shop->save();
  68. return OrderClass::ORDER_TOTAL_FLOW;
  69. }
  70. //送达 ssh 2020.6.1
  71. public static function reach($order)
  72. {
  73. $id = $order['id'];
  74. //1 确认送达
  75. $option = 1;
  76. $time = time();
  77. $actionIdList = self::$actionId;
  78. $reachId = $actionIdList['reach'];
  79. OrderSendClass::updateByCondition(['orderId' => $id, 'actionId' => $reachId], ['option' => $option, 'finishTime' => $time]);
  80. // $customId = $order['customId'];
  81. // $customInfo = [];
  82. // $sjId = $order['sjId'];
  83. // $merchant = MerchantClass::getById($sjId);
  84. // //完成通知客户
  85. // InformUserClass::sendComplete($customInfo, $order, $merchant);
  86. //完成通知管理员
  87. //InformAdminClass::sendComplete($order);
  88. }
  89. }