OrderSendClass.php 2.8 KB

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