OrderPriceForm.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. namespace app\modules\client\models\v1\admin;
  8. use app\models\Order;
  9. use app\models\OrderDetail;
  10. use yii\base\Model;
  11. class OrderPriceForm extends Model
  12. {
  13. public $store_id;
  14. public $order_id;
  15. public $pay_price;
  16. public $express_price;
  17. public $order_type;
  18. public function rules()
  19. {
  20. return [
  21. [['pay_price', 'express_price'], 'number'],
  22. [['order_type'],'string'],
  23. [['order_id'],'integer']
  24. ];
  25. }
  26. public function save()
  27. {
  28. if (!$this->validate()) {
  29. return [
  30. 'code' => 1,
  31. 'msg' => $this->getErrorSummary(false)[0],
  32. ];
  33. }
  34. $order = Order::findOne([
  35. 'id' => $this->order_id,
  36. 'is_delete' => Order::IS_DELETE_FALSE,
  37. 'is_pay' => Order::IS_PAY_FALSE,
  38. 'mch_id' => 0]);
  39. if (!$order) {
  40. return [
  41. 'code' => 1,
  42. 'msg' => '订单错误'
  43. ];
  44. }
  45. $money = doubleval($order->pay_price);
  46. $express = doubleval($order->express_price);
  47. if ($this->express_price || $this->express_price == 0) {
  48. if ($this->express_price < 0) {
  49. return [
  50. 'code' => 1,
  51. 'msg' => '运费不能小于0'
  52. ];
  53. }
  54. if ($order->before_update_express) {
  55. } else {
  56. $order->before_update_express = $express;
  57. }
  58. $order->express_price = $this->express_price ?? $order->express_price;
  59. }
  60. if ($this->pay_price || $this->pay_price == 0) {
  61. if ($this->pay_price < 0) {
  62. return [
  63. 'code' => 1,
  64. 'msg' => '支付价格不能小于0'
  65. ];
  66. }
  67. if ($order->before_update_price) {
  68. } else {
  69. $order->before_update_price = $money;
  70. }
  71. $order->pay_price = $this->pay_price;
  72. }
  73. if ($order->save()) {
  74. $orderDetailList = OrderDetail::findAll(['order_id' => $order->id, 'is_delete' => 0]);
  75. $goodsTotalPrice = 0.00;
  76. $goodsTotalPayPrice = $order->pay_price - $order->express_price;
  77. foreach ($orderDetailList as $goods) {
  78. $goodsTotalPrice += $goods->total_price;
  79. }
  80. foreach ($orderDetailList as $goods) {
  81. if (in_array(get_plugin_type(), [0,2])) {
  82. $goods->total_price = doubleval(sprintf('%.2f', $goodsTotalPayPrice * $goods->total_price / $goodsTotalPrice));
  83. }
  84. $goods->save();
  85. }
  86. // TODO: 重新设置分销等
  87. // $this->setReturnData($order);
  88. return [
  89. 'code' => 0,
  90. 'msg' => '成功'
  91. ];
  92. } else {
  93. return [
  94. 'code' => 1,
  95. 'msg' => $this->getErrorSummary(false)[0],
  96. ];
  97. }
  98. }
  99. // /**
  100. // * 设置佣金
  101. // */
  102. // private function setReturnData($order)
  103. // {
  104. // $form = new ShareMoneyForm();
  105. // $form->order = $order;
  106. // if ($this->order_type == 'ms') {
  107. // $form->order_type = 1;
  108. // } else {
  109. // $form->order_type = 0;
  110. // }
  111. // return $form->setData();
  112. // }
  113. }