OrderSubmitPreviewForm.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. /*
  8. * @Author: kai
  9. * @Date: 2021-03-02 09:50:20
  10. * @LastEditTime: 2021-04-23 13:39:19
  11. * @LastEditors: Please set LastEditors
  12. * @Description: In User Settings Edit
  13. * @FilePath: \admin_php\modules\client\models\v1\order\OrderSubmitPreviewForm.php
  14. */
  15. namespace app\modules\alliance\models\pt\order;
  16. use app\constants\OptionSetting;
  17. use app\models\District;
  18. use app\models\FoodFlag;
  19. use app\models\Goods;
  20. use app\models\Md;
  21. use app\models\Option;
  22. use app\models\SaasUser;
  23. use app\models\Store;
  24. use app\models\User;
  25. use app\utils\Delivery\Delivery;
  26. use app\utils\Notice\NoticeAction;
  27. use app\utils\OrderNo;
  28. use app\utils\Tools;
  29. use yii\helpers\Json;
  30. class OrderSubmitPreviewForm extends OrderForm
  31. {
  32. public function rules()
  33. {
  34. return parent::rules();
  35. }
  36. public function search()
  37. {
  38. if (!$this->validate())
  39. return [
  40. 'code' => 1,
  41. 'msg' => $this->getErrorSummary(false)[0],
  42. ];
  43. if(get_store_id() > 0 && Option::get(OptionSetting::MALL_STATUS,get_store_id(),'store',0)['value'] == 1)
  44. return [
  45. 'code' => 1,
  46. 'msg' => '商城已打烊~'
  47. ];
  48. // HKG 新增判断商城打烊状态 结束
  49. try {
  50. // 预生成订单号
  51. $order_no = OrderNo::getOrderNo(OrderNo::ORDER_PT);
  52. cache()->set('delivery_order_no_' . get_saas_user_id(), $order_no);
  53. $storeList = $this->getStoreListData();
  54. if(isset($storeList['code']) && $storeList['code'] == 1){
  55. return $storeList;
  56. }
  57. } catch(\Exception $e) {
  58. return [
  59. 'code' => 1,
  60. 'line' => $e->getLine(),
  61. 'msg' => $e->getMessage(),
  62. 'file' => $e->getFile(),
  63. ];
  64. }
  65. $food_pay_type = $store_info = [];
  66. $md_info = [];
  67. $flag_id = 0;
  68. $store = Store::findOne(get_store_id());
  69. $province_name = District::findOne($store->province_id)->name;
  70. $city_name = District::findOne($store->city_id)->name;
  71. $district_name = District::findOne($store->district_id)->name;
  72. $lat = '';
  73. $long = '';
  74. $coordinate = explode(',', $store->coordinate);
  75. if ($coordinate) {
  76. $lat = $coordinate[0];
  77. $long = $coordinate[1];
  78. }
  79. $md_info = [
  80. 'is_md' => 0,
  81. 'name' => $store->name,
  82. 'detail_address' => $province_name . $city_name . $district_name . $store->address,
  83. 'distance' => Tools::getDistance($this->latitude, $this->longitude, $lat, $long),
  84. 'longitude' => $long,
  85. 'latitude' => $lat,
  86. 'logo' => $store->logo
  87. ];
  88. //计算联盟券
  89. $take_price = 0;
  90. $send_price = 0;
  91. // }
  92. foreach ($storeList[0]['goods_list'] as &$arr) {
  93. $goods = Goods::findOne($arr['goods_id']);
  94. //TODO 新的
  95. //计算返利
  96. $send_price += floatval($goods->goods_send_profit * $arr['price'] * 0.01 * $arr['num']);
  97. $take_price += floatval($goods->goods_take_price * $arr['price'] * 0.01 * $arr['num']);
  98. }
  99. $user = User::findOne(get_user_id());
  100. $user_league_price = 0;
  101. $saas_user = SaasUser::findOne(['mobile' => $user->binding]);
  102. if($saas_user){
  103. $user_league_price = $saas_user->league_price;
  104. }
  105. if($take_price > $user_league_price){
  106. $take_price = $user_league_price;
  107. }
  108. $total_price = 0;
  109. foreach ($storeList as $store_item) {
  110. $total_price += $store_item['total_price'];
  111. }
  112. if ($total_price < $take_price) {
  113. $take_price = 0;
  114. $send_price = 0;
  115. }
  116. $template_id = NoticeAction::getSendTamplateId(['order_pay', 'order_submit', 'order_send']);
  117. return [
  118. 'code' => 0,
  119. 'msg' => 'OOKK',
  120. 'data' => [
  121. 'order_no' => $order_no,
  122. 'flag_id' => intval($flag_id),
  123. 'store_info' => $store_info,
  124. 'food_pay' => $food_pay_type,
  125. 'pay_type_list' => $this->getPayTypeList(),
  126. 'take_price' => $take_price,
  127. 'send_price' => $send_price,
  128. 'user_league_price' => $user_league_price,
  129. 'address' => $this->address,
  130. 'level' => [],
  131. 'store_list' => $storeList,
  132. 'integral'=>$this->integral,
  133. 'goods_card_list' => [],
  134. 'template_id' => $template_id
  135. ],
  136. ];
  137. }
  138. }