AdoptOrderSelfPickStateForm.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  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 AdoptOrderSelfPickStateForm extends Model
  15. {
  16. public $store_id;
  17. public $user_id;
  18. public $order_id;
  19. public $state_type;
  20. public function rules()
  21. {
  22. return [
  23. [['order_id', 'state_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.pick_method' => AdoptOrderInfo::ORDER_FLOW_SELF_PICK,
  43. 'aoi.is_delete' => 0,
  44. ])
  45. ->select(['aoi.*', 'o.order_no', 'o.user_id'])
  46. ->asArray()->one();
  47. if (!$adopt_order) {
  48. $t->rollBack();
  49. return [
  50. 'code' => 1,
  51. 'msg' => '订单不存在'
  52. ];
  53. }
  54. if ($this->state_type == 1) {
  55. //开始采摘
  56. if ($adopt_order['confirm_self_pick_book'] == AdoptOrderInfo::ORDER_FLOW_NO_CONFIRM_SELF_PICK_BOOK) {
  57. $t->rollBack();
  58. return [
  59. 'code' => 1,
  60. 'msg' => '您还未预约成功,管理员审核通过后才能开始采摘'
  61. ];
  62. }
  63. if ($adopt_order['start_self_pick'] == AdoptOrderInfo::ORDER_FLOW_CONFIRM_START_SELF_PICK) {
  64. $t->rollBack();
  65. return [
  66. 'code' => 1,
  67. 'msg' => '您已开始自采'
  68. ];
  69. }
  70. }else{
  71. //采摘结束
  72. // if ($adopt_order->pick_treatment_method == AdoptOrderInfo::ORDER_FLOW_NO_TREATMENT_METHOD) {
  73. // $t->rollBack();
  74. // return [
  75. // 'code' => 1,
  76. // 'msg' => '您还未选择采摘后处理方式,不能自采完成'
  77. // ];
  78. // }
  79. if ($adopt_order['start_self_pick'] == AdoptOrderInfo::ORDER_FLOW_NO_CONFIRM_START_SELF_PICK) {
  80. $t->rollBack();
  81. return [
  82. 'code' => 1,
  83. 'msg' => '您还未开始自采,不能自采完成'
  84. ];
  85. }
  86. if ($adopt_order['end_self_pick'] == AdoptOrderInfo::ORDER_FLOW_CONFIRM_END_SELF_PICK) {
  87. $t->rollBack();
  88. return [
  89. 'code' => 1,
  90. 'msg' => '您已自采完成'
  91. ];
  92. }
  93. }
  94. $adopt_order_info = AdoptOrderInfo::findOne(['order_id' => $this->order_id, 'store_id' => $this->store_id]);
  95. if ($this->state_type == 2){
  96. $adopt_order_info->end_self_pick = AdoptOrderInfo::ORDER_FLOW_CONFIRM_END_SELF_PICK;
  97. $adopt_order_info->end_self_pick_time = time();
  98. } else {
  99. $adopt_order_info->start_self_pick = AdoptOrderInfo::ORDER_FLOW_CONFIRM_START_SELF_PICK;
  100. $adopt_order_info->start_self_pick_time = time();
  101. }
  102. if ($adopt_order_info->save()) {
  103. $t->commit();
  104. if ($this->state_type == 2) {
  105. $goods = Goods::findOne(OrderDetail::findOne(['order_id' => $this->order_id])->goods_id);
  106. NoticeSend::AdoptOrderStateChange($adopt_order['user_id'], $adopt_order->mobile, $adopt_order['order_no'], $goods->name, 6);
  107. return [
  108. 'code' => 0,
  109. 'msg' => '您的商品已自采结束,请记得选择带走或者入库哦,感谢您的支持~'
  110. ];
  111. } else {
  112. $goods = Goods::findOne(OrderDetail::findOne(['order_id' => $this->order_id])->goods_id);
  113. NoticeSend::AdoptOrderStateChange($adopt_order['user_id'], $adopt_order->mobile, $adopt_order['order_no'], $goods->name, 5);
  114. return [
  115. 'code' => 0,
  116. 'msg' => '您的商品已开始自采,请记得来庄园采摘哦,感谢您的支持~'
  117. ];
  118. }
  119. } else {
  120. $t->rollBack();
  121. return [
  122. 'code' => 1,
  123. 'msg' => '操作失败'
  124. ];
  125. }
  126. }
  127. }