AdoptOrderPreserveForm.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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 AdoptOrderPreserveForm extends Model
  15. {
  16. public $store_id;
  17. public $user_id;
  18. public $order_id;
  19. public $preserve_type;
  20. public function rules()
  21. {
  22. return [
  23. [['order_id', 'preserve_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_preserve' => AdoptOrderInfo::ORDER_FLOW_WAIT_PRESERVE,
  43. 'aoi.is_delete' => 0,
  44. 'aoi.pick_treatment_method' => AdoptOrderInfo::ORDER_FLOW_PICK_STORAGE
  45. ])
  46. ->select(['aoi.*', 'o.order_no', 'o.user_id'])
  47. ->asArray()->one();
  48. if (!$adopt_order) {
  49. $t->rollBack();
  50. return [
  51. 'code' => 1,
  52. 'msg' => '订单不存在'
  53. ];
  54. }
  55. if ($adopt_order['is_preserve'] != AdoptOrderInfo::ORDER_FLOW_WAIT_PRESERVE) {
  56. $t->rollBack();
  57. return [
  58. 'code' => 1,
  59. 'msg' => '您已选择保管方式'
  60. ];
  61. }
  62. $adopt_order_info = AdoptOrderInfo::findOne(['order_id' => $this->order_id, 'store_id' => $this->store_id]);
  63. if ($this->preserve_type == 1){
  64. $adopt_order_info->is_preserve = AdoptOrderInfo::ORDER_FLOW_NO_PRESERVE;
  65. $order1 = Order::find()->where(['id' => $this->order_id, 'store_id' => $this->store_id, 'user_id' => $this->user_id])->one();
  66. $order1->trade_status = Order::ORDER_FLOW_CONFIRM;
  67. if (!$order1->save()) {
  68. $t->rollBack();
  69. return [
  70. 'code' => 1,
  71. 'msg' => '操作失败'
  72. ];
  73. }
  74. }else {
  75. $adopt_order_info->is_preserve = AdoptOrderInfo::ORDER_FLOW_PRESERVE;
  76. }
  77. $adopt_order_info->preserve_time = time();
  78. if ($adopt_order_info->save()) {
  79. $t->commit();
  80. if ($this->preserve_type == 1){
  81. $goods = Goods::findOne(OrderDetail::findOne(['order_id' => $this->order_id])->goods_id);
  82. NoticeSend::AdoptOrderStateChange($adopt_order['user_id'], $adopt_order_info->mobile, $adopt_order['order_no'], $goods->name, 12);
  83. NoticeSend::AdoptOrderStateChange($adopt_order['user_id'], $adopt_order_info->mobile, $adopt_order['order_no'], $goods->name, 13);
  84. return [
  85. 'code' => 0,
  86. 'msg' => '您的商品已选择不保管,感谢您的支持,祝您购物愉快~'
  87. ];
  88. } else {
  89. $goods = Goods::findOne(OrderDetail::findOne(['order_id' => $this->order_id])->goods_id);
  90. NoticeSend::AdoptOrderStateChange($adopt_order['user_id'], $adopt_order_info->mobile, $adopt_order['order_no'], $goods->name, 11);
  91. return [
  92. 'code' => 0,
  93. 'msg' => '您的商品已选择保管,请记得来提货哦,感谢您的支持~'
  94. ];
  95. }
  96. } else {
  97. $t->rollBack();
  98. return [
  99. 'code' => 1,
  100. 'msg' => '操作失败'
  101. ];
  102. }
  103. }
  104. }