OrderMemberForm.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. namespace app\modules\client\models\v1;
  8. use app\models\AccountLog;
  9. use app\models\Level;
  10. use app\models\LevelOrder;
  11. use app\models\User;
  12. use app\modules\client\models\v1\order\OrderPayDataForm;
  13. use app\utils\OrderNo;
  14. use app\utils\Wechat\WechatPay;
  15. use yii\base\Model;
  16. class OrderMemberForm extends Model
  17. {
  18. public $store_id;
  19. public $pay_type;
  20. public $level_id;
  21. public $form_id;
  22. public $order;
  23. public $user;
  24. public $_from;
  25. public function rules()
  26. {
  27. return [
  28. [['level_id'], 'number'],
  29. [['_from'], 'string'],
  30. [['_from'], 'in', 'range' => ['app', 'mini', 'official', 'h5']],
  31. ];
  32. }
  33. public function save()
  34. {
  35. if (!$this->validate()) {
  36. return [
  37. 'code' => 1,
  38. 'msg' => $this->getErrorSummary(false)[0],
  39. ];
  40. }
  41. $level = Level::findOne([
  42. 'id' => $this->level_id,
  43. 'is_delete' => 0,
  44. 'store_id' => $this->store_id, 'status' => 1
  45. ]);
  46. // $level = Level::find()->select(['id', 'level', 'price'])
  47. // ->where(['store_id' => $this->store_id, 'is_delete' => 0, 'status' => 1])
  48. // ->andWhere(['<>','price', '0'])
  49. // ->andWhere(['>', 'level', $this->user->level])
  50. // ->andWhere(['level' => $id])
  51. // ->orderBy('level asc')->asArray()->one();
  52. if (!$level) {
  53. return [
  54. 'code' => 1,
  55. 'msg' => '数据异常'
  56. ];
  57. }
  58. $order = new LevelOrder();
  59. $order->store_id = $this->store_id;
  60. $order->user_id = $this->user->id;
  61. $order->current_level = $this->user->level;
  62. $order->after_level = $level->level;
  63. $order->order_no = OrderNo::getOrderNo(OrderNo::ORDER_LEVEL);
  64. $order->is_pay = 0;
  65. $order->is_delete = 0;
  66. $order->created_at = time();
  67. $pay_price = $level->price ?: 0;
  68. $order->pay_price = $pay_price;
  69. if ($order->save()) {
  70. return [
  71. 'code' => 0,
  72. 'data' => [
  73. 'add_time' => $order->created_at,
  74. 'order_id' => $order->id
  75. ]
  76. ];
  77. } else {
  78. return [
  79. 'code' => 1,
  80. 'msg' => $order->errors[0]
  81. ];
  82. }
  83. }
  84. }