AdoptOrderPickTreatmentMethodForm.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  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 AdoptOrderPickTreatmentMethodForm extends Model
  15. {
  16. public $store_id;
  17. public $user_id;
  18. public $order_id;
  19. public $treatment_method_type;
  20. public function rules()
  21. {
  22. return [
  23. [['order_id', 'treatment_method_type'], 'required'],
  24. ];
  25. }
  26. public function save()
  27. {
  28. if (!$this->validate()) {
  29. return $this->getErrorSummary(false)[0];
  30. }
  31. $t = \Yii::$app->db->beginTransaction();
  32. $adopt_order = Order::find()->alias('o')
  33. ->where([
  34. 'o.store_id' => $this->store_id,
  35. 'o.user_id' => $this->user_id,
  36. 'o.id' => $this->order_id,
  37. 'o.is_delete' => 0,
  38. ])
  39. ->leftJoin(AdoptOrderInfo::tableName() . ' aoi', "aoi.order_id = o.id ")
  40. ->andWhere([
  41. 'aoi.is_mature' => AdoptOrderInfo::ORDER_FLOW_MATURE,
  42. 'aoi.is_delete' => 0,
  43. ])
  44. ->select(['aoi.*', 'o.order_no', 'o.user_id'])
  45. ->asArray()->one();
  46. if (!$adopt_order) {
  47. $t->rollBack();
  48. return [
  49. 'code' => 1,
  50. 'msg' => '订单不存在'
  51. ];
  52. }
  53. if ($adopt_order['end_self_pick'] == AdoptOrderInfo::ORDER_FLOW_NO_CONFIRM_END_SELF_PICK) {
  54. $t->rollBack();
  55. return [
  56. 'code' => 1,
  57. 'msg' => '您还没有采摘结束不能操作'
  58. ];
  59. }
  60. if ($adopt_order['pick_treatment_method'] != AdoptOrderInfo::ORDER_FLOW_NO_TREATMENT_METHOD) {
  61. $t->rollBack();
  62. return [
  63. 'code' => 1,
  64. 'msg' => '您已选择采摘后处理方式'
  65. ];
  66. }
  67. $adopt_order_info = AdoptOrderInfo::findOne(['order_id' => $this->order_id, 'store_id' => $this->store_id]);
  68. if ($this->treatment_method_type == 2){
  69. $adopt_order_info->pick_treatment_method = AdoptOrderInfo::ORDER_FLOW_PICK_STORAGE;
  70. } else {
  71. $adopt_order_info->pick_treatment_method = AdoptOrderInfo::ORDER_FLOW_PICK_TAKE;
  72. $order = Order::find()->where(['id' => $this->order_id, 'store_id' => $this->store_id, 'user_id' => $this->user_id])->one();
  73. $order->trade_status = Order::ORDER_FLOW_CONFIRM;
  74. if (!$order->save()) {
  75. $t->rollBack();
  76. return [
  77. 'code' => 1,
  78. 'msg' => '操作失败'
  79. ];
  80. }
  81. }
  82. $adopt_order_info->pick_treatment_method_time = time();
  83. if ($adopt_order_info->save()) {
  84. $t->commit();
  85. if ($this->treatment_method_type == 2){
  86. $goods = Goods::findOne(OrderDetail::findOne(['order_id' => $this->order_id])->goods_id);
  87. NoticeSend::AdoptOrderStateChange($adopt_order['user_id'], $adopt_order_info->mobile, $adopt_order['order_no'], $goods->name, 9);
  88. return [
  89. 'code' => 0,
  90. 'msg' => '您的商品已选择入库,请记得通知管理员入库哦,感谢您的支持'
  91. ];
  92. } else {
  93. $goods = Goods::findOne(OrderDetail::findOne(['order_id' => $this->order_id])->goods_id);
  94. NoticeSend::AdoptOrderStateChange($adopt_order['user_id'], $adopt_order_info->mobile, $adopt_order['order_no'], $goods->name, 8);
  95. NoticeSend::AdoptOrderStateChange($adopt_order['user_id'], $adopt_order_info->mobile, $adopt_order['order_no'], $goods->name, 13);
  96. return [
  97. 'code' => 0,
  98. 'msg' => '您的商品已选择带走,感谢您的支持,祝您购物愉快~'
  99. ];
  100. }
  101. } else {
  102. $t->rollBack();
  103. return [
  104. 'code' => 1,
  105. 'msg' => '操作失败'
  106. ];
  107. }
  108. }
  109. }