AdoptOrderPickForm.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. namespace app\plugins\adopt\models\client;
  8. use app\models\Goods;
  9. use app\models\Order;
  10. use app\models\OrderDetail;
  11. use app\plugins\adopt\models\AdoptOrderInfo;
  12. use app\utils\Notice\NoticeSend;
  13. use yii\base\Model;
  14. class AdoptOrderPickForm extends Model
  15. {
  16. public $store_id;
  17. public $user_id;
  18. public $order_id;
  19. public $pick_type;
  20. public $book_self_pick_date;
  21. public $book_self_pick_time;
  22. public function rules()
  23. {
  24. return [
  25. [['order_id', 'pick_type', 'user_id', 'store_id'], 'required'],
  26. [['book_self_pick_date', 'book_self_pick_time'], 'string'],
  27. ];
  28. }
  29. public function save()
  30. {
  31. if (!$this->validate()) {
  32. return $this->getErrorSummary(false)[0];
  33. }
  34. $t = \Yii::$app->db->beginTransaction();
  35. $adopt_order = Order::find()->alias('o')
  36. ->where([
  37. 'o.store_id' => $this->store_id,
  38. 'o.user_id' => $this->user_id,
  39. 'o.id' => $this->order_id,
  40. 'o.is_delete' => 0,
  41. ])
  42. ->leftJoin(AdoptOrderInfo::tableName() . ' aoi', "aoi.order_id = o.id ")
  43. ->andWhere([
  44. 'aoi.is_mature' => AdoptOrderInfo::ORDER_FLOW_MATURE,
  45. 'aoi.is_delete' => 0,
  46. ])
  47. ->select(['aoi.*', 'o.order_no', 'o.user_id'])
  48. ->asArray()->one();
  49. if (!$adopt_order) {
  50. $t->rollBack();
  51. return [
  52. 'code' => 1,
  53. 'msg' => '订单不存在'
  54. ];
  55. }
  56. if ($adopt_order['pick_method'] != AdoptOrderInfo::ORDER_FLOW_NO_PICK) {
  57. $t->rollBack();
  58. return [
  59. 'code' => 1,
  60. 'msg' => '您已选择采摘方式'
  61. ];
  62. }
  63. $adopt_order_info = AdoptOrderInfo::findOne(['order_id' => $this->order_id, 'store_id' => $this->store_id]);
  64. if ($this->pick_type == 1){
  65. $adopt_order_info->pick_method = AdoptOrderInfo::ORDER_FLOW_SELF_PICK;
  66. $adopt_order_info->book_self_pick_date = $this->book_self_pick_date;
  67. $adopt_order_info->book_self_pick_time = $this->book_self_pick_time;
  68. } else {
  69. $adopt_order_info->pick_method = AdoptOrderInfo::ORDER_FLOW_OTHER_PICK;
  70. $adopt_order_info->pick_treatment_method = AdoptOrderInfo::ORDER_FLOW_PICK_STORAGE;
  71. $adopt_order_info->pick_treatment_method_time = time();
  72. }
  73. $adopt_order_info->pick_time = time();
  74. if ($adopt_order_info->save()) {
  75. $t->commit();
  76. if ($this->pick_type == 1){
  77. $goods = Goods::findOne(OrderDetail::findOne(['order_id' => $this->order_id])->goods_id);
  78. NoticeSend::AdoptOrderStateChange($adopt_order['user_id'], $adopt_order_info->mobile, $adopt_order['order_no'], $goods->name, 2);
  79. return [
  80. 'code' => 0,
  81. 'msg' => '您已选择自己收取,请记得来收取哦,感谢您的支持~'
  82. ];
  83. }else{
  84. $goods = Goods::findOne(OrderDetail::findOne(['order_id' => $this->order_id])->goods_id);
  85. NoticeSend::AdoptOrderStateChange($adopt_order['user_id'], $adopt_order_info->mobile, $adopt_order['order_no'], $goods->name, 3);
  86. return [
  87. 'code' => 0,
  88. 'msg' => '您已选择农场收取,请尽快支付代采费用哦,感谢您的支持~'
  89. ];
  90. }
  91. } else {
  92. $t->rollBack();
  93. return [
  94. 'code' => 1,
  95. 'msg' => '操作失败'
  96. ];
  97. }
  98. }
  99. }