OrderSendClass.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace biz\order\classes;
  3. use common\components\stringUtil;
  4. use common\components\util;
  5. use common\services\xhOrderDayNumService;
  6. use common\services\xhOrderMonthNumService;
  7. use Yii;
  8. use biz\base\classes\BaseClass;
  9. class OrderSendClass extends BaseClass
  10. {
  11. public static $baseFile = '\biz\order\models\OrderSend';
  12. //流程id与名称
  13. public static $actionId = ['placeOrder' => 10, 'printOrder' => 20, 'deliver' => 30, 'reach' => 40, 'finish' => 50];
  14. public static $action = [
  15. 10 => ['name' => '下单', 'sign' => 'placeOrder'],
  16. 20 => ['name' => '打单', 'sign' => 'printOrder',],
  17. 30 => ['name' => '发货', 'sign' => 'deliver'],
  18. 40 => ['name' => '送达', 'sign' => 'reach'],
  19. 50 => ['name' => '完成', 'sign' => 'finish'],
  20. ];
  21. //总流程数
  22. const TOTAL_FLOW = 4;
  23. //下单操作完成 shish 2019.12.13
  24. public static function placeOrder($data)
  25. {
  26. //下单完成
  27. $orderId = $data['orderId'];
  28. $payTime = $data['payTime'];
  29. $actionId = self::$actionId;
  30. $placeOrderId = $actionId['placeOrder'];
  31. $time = time();
  32. $data = ['actionId' => $placeOrderId, 'orderId' => $orderId, 'finishTime' => $payTime, 'addTime' => $time, 'inTurn' => $placeOrderId];
  33. self::add($data);
  34. OrderClass::updateById($orderId, ['currentFlow' => 1]);
  35. //打单未开始
  36. $printOrderId = $actionId['printOrder'];
  37. $data = ['actionId' => $printOrderId, 'orderId' => $orderId, 'finishTime' => 0, 'addTime' => $time, 'inTurn' => $printOrderId];
  38. self::add($data);
  39. }
  40. //当前待执行的动作 shish 2019.12.16
  41. public static function toDoActionId($id)
  42. {
  43. $action = self::getByCondition(['orderId' => $id], false, 'inTurn DESC');
  44. $actionId = 0;
  45. if (empty($action['finishTime'])) {
  46. $actionId = $action['actionId'];
  47. }
  48. return $actionId;
  49. }
  50. //免发货流程的处理 shish 2020.3.12
  51. public static function withoutSend($order)
  52. {
  53. $id = $order['id'];
  54. if ($order['status'] == OrderClass::ORDER_STATUS_COMPLETE) {
  55. util::fail('订单已完成');
  56. }
  57. self::deleteByCondition(['orderId' => $id]);
  58. //订单状态变更
  59. OrderClass::updateById($id, ['sendType' => 1, 'totalFlow' => OrderClass::ORDER_TOTAL_FLOW, 'currentFlow' => OrderClass::ORDER_TOTAL_FLOW]);
  60. OrderClass::complete($order);
  61. return OrderClass::ORDER_TOTAL_FLOW;
  62. }
  63. }