OrderSendForm.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. namespace app\modules\client\models\v1\admin;
  8. use app\models\Express;
  9. use app\models\Goods;
  10. use app\models\Order;
  11. use app\models\OrderDetail;
  12. use app\utils\Notice\NoticeSend;
  13. use yii\base\Model;
  14. class OrderSendForm extends Model
  15. {
  16. public $store_id;
  17. public $order_id;
  18. public $express;
  19. public $express_no;
  20. public $words;
  21. const EXPRESS_TYPE_EXPRESS = 1;
  22. const EXPRESS_TYPE_PEISONG = 4;
  23. public function rules()
  24. {
  25. return [
  26. [['express', 'express_no', 'words'], 'trim'],
  27. [['express', 'express_no',], 'required', 'on' => 'EXPRESS'],
  28. [['order_id'], 'required', 'on' => 'PEISONG'],
  29. [['order_id'], 'required'],
  30. [['express', 'express_no',], 'string',],
  31. [['express', 'express_no',], 'default', 'value' => ''],
  32. ];
  33. }
  34. public function attributeLabels()
  35. {
  36. return [
  37. 'express' => '快递公司',
  38. 'express_no' => '快递单号',
  39. 'words' => '商家留言',
  40. ];
  41. }
  42. public function save()
  43. {
  44. if (!$this->validate()) {
  45. return [
  46. 'code' => 1,
  47. 'msg' => $this->getErrorSummary(false)[0],
  48. ];
  49. }
  50. $order = Order::findOne([
  51. 'is_delete' => 0,
  52. 'store_id' => $this->store_id,
  53. 'id' => $this->order_id,
  54. ]);
  55. if (!$order) {
  56. return [
  57. 'code' => 1,
  58. 'msg' => '订单不存在或已删除',
  59. ];
  60. }
  61. if ($order->is_pay == 0 && $order->pay_type != 2) {
  62. return [
  63. 'code' => 1,
  64. 'msg' => '订单未支付'
  65. ];
  66. }
  67. if ($order->apply_delete == Order::ORDER_APPLY_DELETE) {
  68. return [
  69. 'code' => 1,
  70. 'msg' => '该订单正在申请取消操作,请先处理'
  71. ];
  72. }
  73. $expressList = Express::getExpressList();
  74. $ok = false;
  75. foreach ($expressList as $value) {
  76. if ($value['name'] == $this->express) {
  77. $ok = true;
  78. break;
  79. }
  80. }
  81. if (!$ok && $this->scenario == "EXPRESS") {
  82. return [
  83. 'code' => 1,
  84. 'msg' => '快递公司不正确'
  85. ];
  86. }
  87. $order->express = $this->express;
  88. $order->express_no = $this->express_no;
  89. $order->words = $this->words;
  90. $order->trade_status = Order::ORDER_FLOW_SEND;
  91. $order->send_time = time();
  92. if ($order->save()) {
  93. $goods = Goods::findOne(OrderDetail::findOne(['order_id' => $order->id])->goods_id);
  94. if($order->giving_gifts_received_user_id){
  95. NoticeSend::OrderSend($order->giving_gifts_received_user_id, $order->mobile, $order->order_no, $goods->name, $this->express, $this->express_no, $order->order_type);
  96. }else{
  97. NoticeSend::OrderSend($order->user_id, $order->mobile, $order->order_no, $goods->name, $this->express, $this->express_no);
  98. }
  99. return [
  100. 'code' => 0,
  101. 'msg' => '发货成功',
  102. ];
  103. } else {
  104. return [
  105. 'code' => 1,
  106. 'msg' => '操作失败',
  107. ];
  108. }
  109. }
  110. }