AdoptOrderDetailForm.php 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670
  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\constants\OptionSetting;
  9. use app\models\common\ExpressDetail;
  10. use app\models\DeliveryInfo;
  11. use app\models\District;
  12. use app\models\Goods;
  13. use app\models\Mch;
  14. use app\models\Md;
  15. use app\models\Option;
  16. use app\models\Order;
  17. use app\models\OrderComment;
  18. use app\models\OrderDetail;
  19. use app\models\OrderForm;
  20. use app\models\OrderRefund;
  21. use app\models\SaasUser;
  22. use app\models\Shop;
  23. use app\models\Store;
  24. use app\models\User;
  25. use app\models\VerifyCard;
  26. use app\plugins\adopt\models\AdoptCostOrder;
  27. use app\plugins\adopt\models\AdoptGoods;
  28. use app\plugins\adopt\models\AdoptOrderInfo;
  29. use app\utils\Delivery\Delivery;
  30. use app\utils\Tools;
  31. use yii\base\Model;
  32. use yii\helpers\Json;
  33. use yii\helpers\Json as HelpersJson;
  34. class AdoptOrderDetailForm extends Model
  35. {
  36. public $store_id;
  37. public $user_id;
  38. public $order_id;
  39. public $order_no;
  40. public $order_user_id;
  41. public $delivery_type;
  42. public $latitude;
  43. public $longitude;
  44. public function rules()
  45. {
  46. return [
  47. [['order_id'], 'required'],
  48. ];
  49. }
  50. public function search()
  51. {
  52. if (!$this->validate()) {
  53. return ['code' => 1, 'msg' => $this->getErrorSummary(false)[0]];
  54. }
  55. $order = Order::findOne([
  56. 'store_id' => $this->store_id,
  57. 'id' => $this->order_id,
  58. 'user_id' => $this->user_id,
  59. 'is_delete' => 0,
  60. 'is_recycle'=> 0,
  61. ]);
  62. $adopt_order = AdoptOrderInfo::findOne([
  63. 'store_id' => $this->store_id,
  64. 'order_id' => $this->order_id,
  65. ]);
  66. if (!$order || !$adopt_order) {
  67. return [
  68. 'code' => 1,
  69. 'msg' => '订单不存在',
  70. ];
  71. }
  72. $status = "";
  73. $order_status_code = -1;
  74. if ($order->is_pay == 0) {
  75. $status = '订单未付款';
  76. $order_status_code = 0;
  77. } elseif (($order->is_pay == Order::IS_PAY_TRUE || $order->pay_type == Order::PAY_TYPE_COD) &&
  78. $adopt_order->is_mature == AdoptOrderInfo::ORDER_FLOW_NO_MATURE) {
  79. $status = '订单待成熟';
  80. $order_status_code = 1;
  81. } elseif (($order->is_pay == Order::IS_PAY_TRUE || $order->pay_type == Order::PAY_TYPE_COD) &&
  82. $adopt_order->is_mature == AdoptOrderInfo::ORDER_FLOW_MATURE &&
  83. $adopt_order->pick_method == AdoptOrderInfo::ORDER_FLOW_NO_PICK) {
  84. $status = '已成熟待收取';
  85. $order_status_code = 2;
  86. }
  87. elseif (($order->is_pay == Order::IS_PAY_TRUE || $order->pay_type == Order::PAY_TYPE_COD) &&
  88. $adopt_order->is_mature == AdoptOrderInfo::ORDER_FLOW_MATURE &&
  89. $adopt_order->pick_method == AdoptOrderInfo::ORDER_FLOW_SELF_PICK &&
  90. $adopt_order->confirm_self_pick_book == AdoptOrderInfo::ORDER_FLOW_NO_CONFIRM_SELF_PICK_BOOK) {
  91. $status = '待后台确认自采预约';
  92. $order_status_code = 3;
  93. }
  94. elseif (($order->is_pay == Order::IS_PAY_TRUE || $order->pay_type == Order::PAY_TYPE_COD) &&
  95. $adopt_order->is_mature == AdoptOrderInfo::ORDER_FLOW_MATURE &&
  96. $adopt_order->pick_method == AdoptOrderInfo::ORDER_FLOW_SELF_PICK &&
  97. $adopt_order->confirm_self_pick_book == AdoptOrderInfo::ORDER_FLOW_CONFIRM_SELF_PICK_BOOK &&
  98. $adopt_order->start_self_pick == AdoptOrderInfo::ORDER_FLOW_NO_CONFIRM_START_SELF_PICK) {
  99. $status = '等待自采中';
  100. $order_status_code = 4;
  101. }
  102. elseif (($order->is_pay == Order::IS_PAY_TRUE || $order->pay_type == Order::PAY_TYPE_COD) &&
  103. $adopt_order->is_mature == AdoptOrderInfo::ORDER_FLOW_MATURE &&
  104. $adopt_order->pick_method == AdoptOrderInfo::ORDER_FLOW_SELF_PICK &&
  105. $adopt_order->start_self_pick == AdoptOrderInfo::ORDER_FLOW_CONFIRM_START_SELF_PICK &&
  106. $adopt_order->end_self_pick == AdoptOrderInfo::ORDER_FLOW_NO_CONFIRM_END_SELF_PICK) {
  107. $status = '自采中';
  108. $order_status_code = 5;
  109. }
  110. elseif (($order->is_pay == Order::IS_PAY_TRUE || $order->pay_type == Order::PAY_TYPE_COD) &&
  111. $adopt_order->is_mature == AdoptOrderInfo::ORDER_FLOW_MATURE &&
  112. $adopt_order->pick_method == AdoptOrderInfo::ORDER_FLOW_OTHER_PICK &&
  113. $adopt_order->is_storage == AdoptOrderInfo::ORDER_FLOW_NO_STORAGE) {
  114. $status = '农场采摘中';
  115. $order_status_code = 6;
  116. }
  117. elseif (($order->is_pay == Order::IS_PAY_TRUE || $order->pay_type == Order::PAY_TYPE_COD) &&
  118. $adopt_order->is_mature == AdoptOrderInfo::ORDER_FLOW_MATURE &&
  119. (($adopt_order->pick_method == AdoptOrderInfo::ORDER_FLOW_SELF_PICK &&
  120. $adopt_order->pick_treatment_method != AdoptOrderInfo::ORDER_FLOW_PICK_TAKE &&
  121. $adopt_order->end_self_pick == AdoptOrderInfo::ORDER_FLOW_CONFIRM_END_SELF_PICK)
  122. || $adopt_order->pick_method == AdoptOrderInfo::ORDER_FLOW_OTHER_PICK) &&
  123. $adopt_order->is_storage == AdoptOrderInfo::ORDER_FLOW_NO_STORAGE) {
  124. $status = '已收取待入库';
  125. $order_status_code = 7;
  126. } elseif (($order->is_pay == Order::IS_PAY_TRUE || $order->pay_type == Order::PAY_TYPE_COD) &&
  127. $adopt_order->is_mature == AdoptOrderInfo::ORDER_FLOW_MATURE &&
  128. $adopt_order->pick_treatment_method == AdoptOrderInfo::ORDER_FLOW_PICK_STORAGE &&
  129. $adopt_order->is_storage == AdoptOrderInfo::ORDER_FLOW_STORAGE && $adopt_order->is_preserve == AdoptOrderInfo::ORDER_FLOW_WAIT_PRESERVE) {
  130. $status = '已入库待保管';
  131. $order_status_code = 8;
  132. } elseif (($order->is_pay == Order::IS_PAY_TRUE || $order->pay_type == Order::PAY_TYPE_COD) &&
  133. $adopt_order->is_mature == AdoptOrderInfo::ORDER_FLOW_MATURE &&
  134. $adopt_order->pick_treatment_method == AdoptOrderInfo::ORDER_FLOW_PICK_STORAGE &&
  135. $adopt_order->is_storage == AdoptOrderInfo::ORDER_FLOW_STORAGE && $adopt_order->is_preserve == AdoptOrderInfo::ORDER_FLOW_PRESERVE &&
  136. $order->trade_status != Order::ORDER_FLOW_CONFIRM) {
  137. $status = '保管中';
  138. $order_status_code = 9;
  139. } elseif ($order->trade_status == Order::ORDER_FLOW_CONFIRM) {
  140. $status = '订单已完成';
  141. $order_status_code = 10;
  142. }
  143. $goods_list = OrderDetail::find()->alias('od')
  144. ->where(['od.order_id' => $order->id, 'od.is_delete' => 0])->all();
  145. $num = 0;
  146. $book = [];
  147. foreach ($goods_list as $i => $item) {
  148. if ($order->order_type == 1 || $order->order_type == 2) {
  149. $attr = Json::decode($item['attr']);
  150. if ($order->order_type == 1) {
  151. if (count($attr) > 1) {
  152. $date_data = current($attr)['date'] . '/' . end($attr)['date'];
  153. } else {
  154. $date_data = $attr[0]['date'];
  155. }
  156. $book = [
  157. 'date' => $date_data
  158. ];
  159. } else{
  160. $book['date'] = $attr['date'] . ' ' . $attr['time'];
  161. }
  162. }
  163. $goods = HelpersJson::decode($item['goods_info']);
  164. $orderComment = OrderComment::findOne(['store_id' => $this->store_id, 'order_id' => $order->id, 'goods_id' => $item['goods_id']]);
  165. $newItem = [];
  166. $goods_model = Goods::findOne($item['goods_id']);
  167. $adopt_goods = AdoptGoods::findOne(['goods_id' => $item['goods_id']]);
  168. $cards = [];
  169. if (!empty($goods_model->verify_card_id)) {
  170. $ids = explode(',', $goods_model->verify_card_id);
  171. $cards = Tools::getVerifyList($ids);
  172. } else {
  173. $cards = [];
  174. }
  175. $self_pick_date = $adopt_goods->self_pick_date ? json_decode($adopt_goods->self_pick_date) : [];
  176. $self_pick_date = $this->periodTime(strtotime($self_pick_date[0]),strtotime($self_pick_date[1]));
  177. $newItem['self_pick_date'] = $self_pick_date ? $self_pick_date : [];
  178. $newItem['self_pick_times'] = $adopt_goods->self_pick_times ? json_decode($adopt_goods->self_pick_times) : [];
  179. $newItem['yield'] = $adopt_goods->yield;
  180. $newItem['varieties'] = $adopt_goods->varieties;
  181. $newItem['growth_cycle'] = $adopt_goods->growth_cycle;
  182. $newItem['verify_card'] = $cards;
  183. $newItem['is_comment'] = (!$orderComment && $order->is_pay == Order::IS_PAY_TRUE && $order->trade_status == Order::ORDER_FLOW_CONFIRM) ? 1 : 0;
  184. $newItem['goods_id'] = $item['goods_id'];
  185. $newItem['order_detail_id'] = $item['id'];
  186. $newItem['name'] = $item['goods_name'] ?: $goods['name'];
  187. $newItem['total_price'] = $item['total_price'];
  188. $newItem['num'] = $item['num'];
  189. $newItem['attr'] = json_decode($item['attr']);
  190. $num += intval($item['num']);
  191. $newItem['goods_pic'] = $item['pic'] ?: $goods['cover_pic'];
  192. if ($item['is_refund'] == 1) {
  193. $newItem['is_order_refund'] = 1;
  194. } else {
  195. $newItem['is_order_refund'] = 0;
  196. }
  197. if ($order->is_pay == 1 && ($order->trade_status == Order::ORDER_FLOW_SEND || $order->trade_status == Order::ORDER_FLOW_CONFIRM) && $order->order_type != 4) {
  198. $newItem['order_refund_enable'] = 1;
  199. } else {
  200. $newItem['order_refund_enable'] = 0;
  201. }
  202. if ($order->trade_status == Order::ORDER_FLOW_CONFIRM) {
  203. $after_sale_time = Option::get(OptionSetting::STORE_AFTER_SALE_TIME);
  204. if ((time() - $order->confirm_time) > $after_sale_time['value'] * 86400) {//超过可售后时间
  205. $newItem['order_refund_enable'] = 0;
  206. }
  207. }
  208. if($item['is_level'] == 1 && ($order->discount && $order->discount < 10)){
  209. $newItem['is_level'] = 1;
  210. }
  211. // 商品配送方式信息
  212. $newItem['delivery_type'] = $item['delivery_type'];
  213. $newItem['shop'] = [];
  214. if ($item['delivery_type'] == OrderDetail::GOODS_DELIVERY_SHOP) {
  215. $shop_info = Shop::find()->where(['id' => $item['shop_id']])->asArray()->one();
  216. $newItem['shop']['address'] = $shop_info['address'];
  217. $newItem['shop']['id'] = $shop_info['id'];
  218. $newItem['shop']['name'] = $shop_info['name'];
  219. $newItem['shop']['mobile'] = $shop_info['mobile'];
  220. }
  221. $newList[] = $newItem;
  222. }
  223. if ($order->before_update_price) {
  224. if ($order->before_update_price < $order->pay_price) {
  225. $before_update = "加价";
  226. $money = $order->pay_price - $order->before_update_price;
  227. } else {
  228. $before_update = "优惠";
  229. $money = $order->before_update_price - $order->pay_price;
  230. }
  231. } else {
  232. $before_update = "";
  233. $money = "";
  234. }
  235. if(!$order->integral){
  236. $order->integral = 0;
  237. }
  238. // 查询物流信息
  239. $model = new ExpressDetail();
  240. // $model->express = $order->express;
  241. // $model->express_no = $order->express_no;
  242. // TODO: 测试
  243. $model->express = '圆通';
  244. $model->express_no = 'YT5364186723454';
  245. $model->store_id = $this->store_id;
  246. $res = $model->search();
  247. $express_detail = [];
  248. if ($res['code'] != 0) {
  249. $express_detail['list'] = [];
  250. $express_detail['status'] = 0;
  251. $express_detail['status_text'] = '未知';
  252. } else {
  253. $express_detail = $res['data'];
  254. }
  255. $deliveryInfo = null;
  256. if ($order->is_delivery == 1) {
  257. $deliveryInfo = DeliveryInfo::find()->where(['order_no' => $order->order_no])->one();
  258. }
  259. $final_pay_type = [];
  260. $pay_type_list = [];
  261. $is_open_friend_pay = false;
  262. $pay_type_list_json = Option::get(OptionSetting::STORE_PAYMENT, get_store_id(), 'pay', Option::get(OptionSetting::STORE_PAYMENT, get_store_id(), 'store')['value']);
  263. if (!empty($pay_type_list_json)) {
  264. $pay_type_list_arr = Json::decode($pay_type_list_json['value']);
  265. foreach ($pay_type_list_arr as $index => $pay_type) {
  266. if ($index == 'friend' && $pay_type['value'] == 1) {
  267. $pay_type_list[] = [
  268. 'name' => '朋友代付',
  269. 'payment' => 7,
  270. ];
  271. $is_open_friend_pay = true;
  272. }
  273. if (is_wechat_platform() && $index == 'wechat') {
  274. $pay_type_list[] = [
  275. 'name' => '微信支付',
  276. 'payment' => 1,
  277. ];
  278. }
  279. if (is_alipay_platform() && $index == 'alipay') {
  280. $pay_type_list[] = [
  281. 'name' => '支付宝支付',
  282. 'payment' => 4,
  283. ];
  284. }
  285. if (is_toutiao_platform()) {
  286. $pay_type_list[] = [
  287. 'name' => '线上支付',
  288. 'payment' => 5,
  289. ];
  290. }
  291. if ($index == 'huodao' && $pay_type['value'] == 1) {
  292. $pay_type_list[] = [
  293. 'name' => '货到付款',
  294. 'payment' => 2,
  295. ];
  296. }
  297. }
  298. }
  299. // 判断是否开启好友代付
  300. if ($order->food_flag_id > 0) {
  301. if ($order->md_id > 0) {
  302. $md = Md::findOne($order->md_id);
  303. $food_payment = $md->food_payment;
  304. } else {
  305. $store = Store::findOne($order->store_id);
  306. $food_payment = $store->food_payment;
  307. }
  308. if (!empty($food_payment)) {
  309. $pay_type_list = [];
  310. $food_pay_type = Json::decode($food_payment);
  311. foreach ($food_pay_type as &$value) {
  312. if ($value['key'] == 'friend') {
  313. if ($is_open_friend_pay && $value['value'] == 1) {
  314. $is_open_friend_pay = true;
  315. $value['value'] = 1;
  316. } else {
  317. $value['value'] = 0;
  318. $is_open_friend_pay = false;
  319. }
  320. }
  321. if ($value['key'] == 'friend') {
  322. $value['payment'] = 7;
  323. }
  324. if ($value['key'] == 'alipay') {
  325. $value['payment'] = 4;
  326. }
  327. if ($value['key'] == 'wechat') {
  328. $value['payment'] = 1;
  329. }
  330. if ($value['key'] == 'huodao') {
  331. $value['payment'] = 2;
  332. }
  333. if (is_wechat_platform() && $value['key'] == 'wechat') {
  334. $pay_type_list[] = $value;
  335. }
  336. if (is_alipay_platform() && $value['key'] == 'alipay') {
  337. $pay_type_list[] = $value;
  338. }
  339. if (is_toutiao_platform()) {
  340. $pay_type_list[] = [
  341. 'name' => '线上支付',
  342. 'payment' => 5,
  343. ];
  344. }
  345. if ($index == 'huodao' && $value['key'] == 1) {
  346. $pay_type_list[] = $value;
  347. }
  348. }
  349. $final_pay_type = $pay_type_list;
  350. }
  351. } else {
  352. $final_pay_type = $pay_type_list;
  353. }
  354. // 订单人信息
  355. $saas_user = SaasUser::findOne(['mobile' => User::findOne($order->user_id)->binding]);
  356. // 代付人信息
  357. $pay_user_info = [];
  358. if ($order->pay_user_id > 0) {
  359. $pay_saas_user = SaasUser::findOne(['mobile' => User::findOne($order->pay_user_id)->binding]);
  360. $pay_user_info = [
  361. 'name' => $pay_saas_user->name,
  362. 'mobile' => $pay_saas_user->mobile
  363. ];
  364. }
  365. // 门店信息
  366. $md_info = [];
  367. if ($order->md_id > 0) {
  368. $md = Md::findOne($order->md_id);
  369. $md_info = [
  370. 'name' => $md->name,
  371. 'address' => District::findOne($md->province)->name . District::findOne($md->city)->name
  372. . District::findOne($md->district)->name . $md->address,
  373. 'latitude' => $md->latitude,
  374. 'longitude' => $md->longitude,
  375. 'mobile' => $md->mobile,
  376. 'distance' => Tools::getDistance($md->latitude, $md->longitude, get_params('latitude'), get_params('longitude'))
  377. ];
  378. } else {
  379. $store = Store::findOne($order->store_id);
  380. $province_name = District::findOne($store->province_id)->name;
  381. $city_name = District::findOne($store->city_id)->name;
  382. $district_name = District::findOne($store->district_id)->name;
  383. $lat = '';
  384. $long = '';
  385. $coordinate = explode(',', $store->coordinate);
  386. if ($coordinate) {
  387. $lat = $coordinate[0];
  388. $long = $coordinate[1];
  389. }
  390. $md_info = [
  391. 'name' => $store->name,
  392. 'address' => $province_name .$city_name
  393. . $district_name . $store->address,
  394. 'latitude' => $lat,
  395. 'longitude' => $long,
  396. 'mobile' => $store->contact_tel,
  397. 'distance' => Tools::getDistance($lat, $long, get_params('latitude'), get_params('longitude'))
  398. ];
  399. }
  400. $growth_status = [];
  401. if (($order->is_pay == Order::IS_PAY_TRUE || $order->pay_type == Order::PAY_TYPE_COD) ) {
  402. if ($adopt_order->is_mature == AdoptOrderInfo::ORDER_FLOW_MATURE) {
  403. $growth_status[]=[
  404. 'name' => '已成熟',
  405. 'time' => date("Y-m-d H:i:s", $order->pay_time). ' 至 '. date("Y-m-d H:i:s", $adopt_order->mature_time),
  406. 'desc' => '正在成长中,请耐心等待哦',
  407. ];
  408. }else{
  409. $growth_status[]=[
  410. 'name' => '待成熟',
  411. 'time' => date("Y-m-d H:i:s", $order->pay_time). ' 至 '. date("Y-m-d H:i:s", $adopt_order->mature_time),
  412. 'desc' => '正在成长中,请耐心等待哦',
  413. ];
  414. }
  415. }
  416. if (($order->is_pay == Order::IS_PAY_TRUE || $order->pay_type == Order::PAY_TYPE_COD) &&
  417. $adopt_order->is_mature == AdoptOrderInfo::ORDER_FLOW_MATURE ){
  418. if ($adopt_order->pick_method == AdoptOrderInfo::ORDER_FLOW_SELF_PICK){
  419. if ($adopt_order->confirm_self_pick_book == AdoptOrderInfo::ORDER_FLOW_CONFIRM_SELF_PICK_BOOK) {
  420. $growth_status[]=[
  421. 'name' => '后台确认自采预约',
  422. 'time' => date("Y-m-d H:i:s", $adopt_order->confirm_self_pick_book_time),
  423. 'desc' => '您认养的'.$newList[0]['name'].'已成熟,您已选择自己收取并预约,后台已确认自采预约',
  424. ];
  425. }else {
  426. $growth_status[]=[
  427. 'name' => '待后台确认自采预约',
  428. 'time' => '',
  429. 'desc' => '您认养的'.$newList[0]['name'].'已成熟,您已选择自己收取并预约,等待后台确认自采预约中',
  430. ];
  431. }
  432. if ($adopt_order->confirm_self_pick_book == AdoptOrderInfo::ORDER_FLOW_CONFIRM_SELF_PICK_BOOK) {
  433. if ($adopt_order->start_self_pick == AdoptOrderInfo::ORDER_FLOW_CONFIRM_START_SELF_PICK && $adopt_order->end_self_pick == AdoptOrderInfo::ORDER_FLOW_CONFIRM_END_SELF_PICK) {
  434. $growth_status[]=[
  435. 'name' => '自采完成',
  436. 'time' => date("Y-m-d H:i:s", $adopt_order->end_self_pick_time),
  437. 'desc' => '您认养的'.$newList[0]['name'].'已成熟,您已选择自己收取,正在收取中',
  438. ];
  439. }elseif ($adopt_order->start_self_pick == AdoptOrderInfo::ORDER_FLOW_NO_CONFIRM_START_SELF_PICK && $adopt_order->end_self_pick == AdoptOrderInfo::ORDER_FLOW_CONFIRM_END_SELF_PICK) {
  440. $growth_status[]=[
  441. 'name' => '自采中',
  442. 'time' => date("Y-m-d H:i:s", $adopt_order->start_self_pick_time),
  443. 'desc' => '您认养的'.$newList[0]['name'].'已成熟,您已选择自己收取,正在收取中',
  444. ];
  445. }else{
  446. $growth_status[]=[
  447. 'name' => '等待自采中',
  448. 'time' => '',
  449. 'desc' => '您认养的'.$newList[0]['name'].'已成熟,您已选择自己收取,请尽快收取哦',
  450. ];
  451. }
  452. }
  453. if ($adopt_order->start_self_pick == AdoptOrderInfo::ORDER_FLOW_CONFIRM_START_SELF_PICK) {
  454. if ($adopt_order->confirm_self_pick == AdoptOrderInfo::ORDER_FLOW_CONFIRM_SELF_PICK) {
  455. $growth_status[]=[
  456. 'name' => '后台确认自采完成',
  457. 'time' => date("Y-m-d H:i:s", $adopt_order->confirm_self_pick_time),
  458. 'desc' => '您认养的'.$newList[0]['name'].'已成熟,您已开始自采,后台已确认自采完成',
  459. ];
  460. }else{
  461. $growth_status[]=[
  462. 'name' => '待后台确认自采完成',
  463. 'time' => '',
  464. 'desc' => '您认养的'.$newList[0]['name'].'已成熟,您已开始自采,等待后台确认自采完成',
  465. ];
  466. }
  467. if ($adopt_order->end_self_pick == AdoptOrderInfo::ORDER_FLOW_CONFIRM_END_SELF_PICK) {
  468. $growth_status[]=[
  469. 'name' => '确认自采完成',
  470. 'time' => date("Y-m-d H:i:s", $adopt_order->end_self_pick_time),
  471. 'desc' => '您认养的'.$newList[0]['name'].'已成熟,您已开始自采,您已确认自采完成',
  472. ];
  473. }else{
  474. $growth_status[]=[
  475. 'name' => '待确认自采完成',
  476. 'time' => '',
  477. 'desc' => '您认养的'.$newList[0]['name'].'已成熟,您已开始自采,等待您确认自采完成',
  478. ];
  479. }
  480. }
  481. }elseif ($adopt_order->pick_method == AdoptOrderInfo::ORDER_FLOW_OTHER_PICK) {
  482. $growth_status[]=[
  483. 'name' => '农场收取中',
  484. 'time' => date("Y-m-d H:i:s", $adopt_order->mature_time),
  485. 'desc' => '您认养的'.$newList[0]['name'].'已成熟,您已选择农场代收,农场正在收取中',
  486. ];
  487. }else{
  488. $growth_status[]=[
  489. 'name' => '待收取',
  490. 'time' => date("Y-m-d H:i:s", $adopt_order->mature_time),
  491. 'desc' => '您认养的'.$newList[0]['name'].'已成熟,快来领取吧',
  492. ];
  493. }
  494. }
  495. if (($order->is_pay == Order::IS_PAY_TRUE || $order->pay_type == Order::PAY_TYPE_COD) &&
  496. $adopt_order->is_mature == AdoptOrderInfo::ORDER_FLOW_MATURE &&
  497. (($adopt_order->pick_method == AdoptOrderInfo::ORDER_FLOW_SELF_PICK &&
  498. $adopt_order->pick_treatment_method != AdoptOrderInfo::ORDER_FLOW_PICK_TAKE &&
  499. $adopt_order->end_self_pick == AdoptOrderInfo::ORDER_FLOW_CONFIRM_END_SELF_PICK)
  500. || $adopt_order->pick_method == AdoptOrderInfo::ORDER_FLOW_OTHER_PICK)
  501. ){
  502. if ($adopt_order->is_storage == AdoptOrderInfo::ORDER_FLOW_STORAGE) {
  503. $growth_status[]=[
  504. 'name' => '已入库',
  505. 'time' => date("Y-m-d H:i:s", $adopt_order->pick_time),
  506. 'desc' => '农场已收取完成并入库,记得及时选择是否保管或者领走哦',
  507. ];
  508. }else{
  509. $growth_status[]=[
  510. 'name' => '待入库',
  511. 'time' => date("Y-m-d H:i:s", $adopt_order->pick_time),
  512. 'desc' => '农场正在收取入库中',
  513. ];
  514. }
  515. }
  516. if (($order->is_pay == Order::IS_PAY_TRUE || $order->pay_type == Order::PAY_TYPE_COD) &&
  517. $adopt_order->is_mature == AdoptOrderInfo::ORDER_FLOW_MATURE &&
  518. ($adopt_order->pick_method != AdoptOrderInfo::ORDER_FLOW_NO_PICK) &&
  519. $adopt_order->is_storage == AdoptOrderInfo::ORDER_FLOW_STORAGE ){
  520. if ($adopt_order->is_preserve == AdoptOrderInfo::ORDER_FLOW_PRESERVE){
  521. $growth_status[]=[
  522. 'name' => '农场保管中',
  523. 'time' => date("Y-m-d H:i:s", $adopt_order->preserve_time),
  524. 'desc' => '您认养的'.$newList[0]['name'].'正在农场保管中,记得及时来提货哦',
  525. ];
  526. }elseif ($adopt_order->is_preserve == AdoptOrderInfo::ORDER_FLOW_NO_PRESERVE){
  527. $growth_status[]=[
  528. 'name' => '不保管',
  529. 'time' => '',
  530. 'desc' => '您认养的'.$newList[0]['name'].' 已选择不保管,记得及时来提货哦',
  531. ];
  532. }
  533. }
  534. if ($order->trade_status == Order::ORDER_FLOW_CONFIRM){
  535. $growth_status[]=[
  536. 'name' => '已完成',
  537. 'time' => date("Y-m-d H:i:s", $adopt_order->preserve_time),
  538. 'desc' => '您认养的'.$newList[0]['name'].'已完成',
  539. ];
  540. }
  541. $adopt_cost_order = AdoptCostOrder::find()->where(['order_type' => 0, 'is_pay' => 1, 'order_id' => $order['id']])->one();
  542. $is_pay_pick_fee = $adopt_cost_order ? 1 : 0;
  543. \Yii::warning($final_pay_type);
  544. return [
  545. 'code' => 0,
  546. 'msg' => 'success',
  547. 'data' => [
  548. 'shop_name' => $order->md_id > 0 || !empty($md_info['name']) ? $md_info['name'] : '平台自营',
  549. 'pay_user_info' => $pay_user_info,
  550. 'pay_user_id' => $order->pay_user_id,
  551. 'pay_type_list' => $final_pay_type,
  552. 'is_delivery' => $order->is_delivery,
  553. 'express_detail' => $express_detail,
  554. 'order_id' => $order->id,
  555. 'is_pay' => $order->is_pay,
  556. 'status' => $status,
  557. 'status_code' => $order_status_code,
  558. 'express' => $order->express,
  559. 'express_no' => $order->express_no,
  560. 'name' => $order->name,
  561. 'mobile' => $order->mobile,
  562. 'address' => $order->address,
  563. 'order_no' => $order->order_no,
  564. 'addtime' => date('Y-m-d H:i:s', $order->created_at),
  565. 'total_price' => doubleval(sprintf('%.2f', $order->total_price)),
  566. 'express_price' => doubleval(sprintf('%.2f', $order->express_price)),
  567. 'goods_total_price' => doubleval(sprintf('%.2f', doubleval($order->total_price) - doubleval($order->express_price))),
  568. 'coupon_sub_price' => isset($order->coupon_sub_price) ? $order->coupon_sub_price : 0,
  569. 'pay_price' => $deliveryInfo ? sprintf("%1.2f", $order->pay_price + $deliveryInfo->fee) : $order->pay_price ,
  570. 'num' => $num,
  571. 'md_info' => $md_info,
  572. 'goods_list' => $newList,
  573. 'is_offline' => $order->is_offline,
  574. 'content' => $order->content ? $order->content : "",
  575. 'before_update' => $before_update,
  576. 'money' => $money,
  577. 'discount' => $order->discount,
  578. 'user_coupon_id' => $order->user_coupon_id,
  579. 'words' => $order->words,
  580. 'pay_type' => $order->pay_type,
  581. 'integral'=> json_decode($order->integral),
  582. 'apply_delete' => $order->apply_delete,
  583. 'trade_status' => $order->trade_status,
  584. 'type' => $order->type,
  585. 'order_type' => $order->order_type,
  586. 'book' => $book,
  587. 'book_man_info' => Json::decode($order->book_info),
  588. 'book_info' => OrderForm::findAll(['order_id' => $order->id]),
  589. 'cancel_reason' => Delivery::$validReason,
  590. 'delivery_info' => $deliveryInfo,
  591. 'flag_id' => $order->food_flag_id,
  592. 'food_code' => $order->food_code,
  593. 'food_book_ext' => $order->food_book_ext ? Json::decode($order->food_book_ext) : [],
  594. 'open_friend_pay' => intval($is_open_friend_pay),
  595. 'user_info' => [
  596. 'name' => $saas_user->name,
  597. 'avatar' => $saas_user->avatar
  598. ],
  599. 'adopt_name' => $adopt_order->name,
  600. 'adopt_mobile' => $adopt_order->mobile,
  601. 'is_mature' => $adopt_order->is_mature,
  602. 'mature_time' => date('Y-m-d H:i:s', $adopt_order->mature_time),
  603. 'pick_method' => $adopt_order->pick_method,
  604. 'pick_time' => date('Y-m-d H:i:s', $adopt_order->pick_time),
  605. 'is_storage' => $adopt_order->is_storage,
  606. 'storage_time' => date('Y-m-d H:i:s', $adopt_order->storage_time),
  607. 'is_preserve' => $adopt_order->is_preserve,
  608. 'preserve_time' => date('Y-m-d H:i:s', $adopt_order->preserve_time),
  609. 'harvest_weight' => $adopt_order->harvest_weight,
  610. 'growth_status' => $growth_status,
  611. ],
  612. ];
  613. }
  614. function periodTime($beginTime, $endTime) {
  615. $i = 0;
  616. $arr = [];
  617. while ($beginTime <= $endTime) {
  618. $arr[$i] = date('Y-m-d',$beginTime);
  619. $beginTime = strtotime('+1 day', $beginTime);
  620. $i++;
  621. }
  622. return $arr;
  623. }
  624. }