OrderSendClass.php 3.7 KB

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