AdoptOrderController.php 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. namespace app\modules\admin\controllers\adopt;
  8. use app\models\common\admin\order\CommonUpdateAddress;
  9. use app\models\Goods;
  10. use app\models\Order;
  11. use app\models\OrderComment;
  12. use app\models\OrderDetail;
  13. use app\models\Shop;
  14. use app\modules\admin\controllers\BaseController;
  15. use app\modules\admin\models\adopt\AdoptOrderListForm;
  16. use app\modules\admin\models\OrderClerkForm;
  17. use app\modules\admin\models\OrderPriceForm;
  18. use app\modules\admin\models\OrderSendForm;
  19. use app\plugins\adopt\models\AdoptOrderInfo;
  20. use app\utils\PrintOrder;
  21. use yii\helpers\Html;
  22. use app\models\User;
  23. use app\modules\admin\models\ExpressDetailForm;
  24. use app\modules\admin\models\OrderCommentForm;
  25. use app\modules\admin\models\OrderListForm;
  26. use app\modules\admin\models\OrderRefundListForm;
  27. use app\modules\admin\models\OrderRevokeForm;
  28. use app\modules\admin\models\OrderRefundForm;
  29. use app\modules\admin\models\OrderShopForm;
  30. use app\utils\Notice\NoticeSend;
  31. use app\utils\PrintExpress;
  32. class AdoptOrderController extends BaseController
  33. {
  34. /**
  35. * 平台商品订单列表
  36. * @return \yii\web\Response
  37. */
  38. public function actionList() {
  39. $store_id = get_store_id();
  40. $form = new AdoptOrderListForm();
  41. $form->attributes = get_params();
  42. if (!empty(get_params('is_offline')) && get_params('is_offline') == Order::IS_OFFLINE_TRUE) {
  43. $form->is_offline = Order::IS_OFFLINE_TRUE;
  44. } else {
  45. $form->is_offline = Order::IS_OFFLINE_FALSE;
  46. }
  47. $form->store_id = $store_id;
  48. $form->order_id = get_params('order_id');
  49. return $this->asJson($form->search());
  50. }
  51. /**
  52. * 平台商品订单取消
  53. */
  54. public function actionApplyOrderDelete()
  55. {
  56. $store_id = get_store_id();
  57. $where = [
  58. 'id' => post_params('id'),
  59. 'is_delete' => Order::IS_DELETE_FALSE,
  60. 'store_id' => $store_id,
  61. 'mch_id' => 0,
  62. ];
  63. // type=1 后台主要取消订单, type=0 用户发起订单取消申请
  64. if (post_params('type') == Order::CANCEL_USER_TYPE) {
  65. $where['apply_delete'] = Order::ORDER_APPLY_DELETE;
  66. }
  67. $order = Order::findOne($where);
  68. if (!$order || $order->mch_id > 0) {
  69. return $this->asJson([
  70. 'code' => 1,
  71. 'msg' => '订单不存在,请刷新页面后重试'
  72. ]);
  73. }
  74. // 发送备注消息
  75. $order->remark = post_params('remark', '');
  76. // 同意
  77. if (post_params('status') == 1) {
  78. $form = new OrderRevokeForm();
  79. $form->order_id = $order->id;
  80. $form->delete_pass = true;
  81. $form->user_id = $order->user_id;
  82. $form->store_id = $order->store_id;
  83. $res = $form->save();
  84. if ($res['code'] == 0) {
  85. $order->save();
  86. $goods = Goods::findOne(OrderDetail::findOne(['order_id' => $order->id])->goods_id);
  87. NoticeSend::OrderCancel($order->user_id, $order->mobile, $order->order_no, $order->pay_price, $goods->name, 1);
  88. // 订单打印
  89. if ((int)$order->md_id === -1 || (int)$order->md_id === 0 || !isset($order->md_id)) {
  90. $order->md_id = 0;
  91. }
  92. $printer_order = new PrintOrder($order->store_id, $order->id, 'confirm', 0, $order->md_id);
  93. $printer_order->is_refund = true;
  94. $printer_order->print_order();
  95. return $this->asJson([
  96. 'code' => 0,
  97. 'msg' => '操作成功',
  98. ]);
  99. } else {
  100. return $this->asJson($res);
  101. }
  102. } else { //拒绝
  103. $order->apply_delete = Order::ORDER_APPLY_DELETE_DEFAULT;
  104. $order->save();
  105. // TODO :推送订单取消拒绝消息
  106. return $this->asJson([
  107. 'code' => 0,
  108. 'msg' => '操作成功',
  109. ]);
  110. }
  111. }
  112. /**
  113. * 添加备注
  114. */
  115. public function actionSellerComments()
  116. {
  117. $store_id = get_store_id();
  118. $order_id = get_params('order_id');
  119. $seller_comments = get_params('seller_comments');
  120. $form = Order::find()->where(['store_id' => $store_id, 'id' => $order_id, 'mch_id' => get_mch_id()])->one();
  121. $form->seller_comments = $seller_comments;
  122. if ($form->save()) {
  123. return $this->asJson([
  124. 'code' => 0,
  125. 'msg' => '操作成功',
  126. ]);
  127. } else {
  128. return $this->asJson([
  129. 'code' => 1,
  130. 'msg' => '操作失败',
  131. ]);
  132. }
  133. }
  134. /**
  135. * 添加商家留言
  136. */
  137. public function actionSetWords()
  138. {
  139. $store_id = get_store_id();
  140. $order_id = post_params('order_id');
  141. $words = post_params('words');
  142. $form = Order::find()->where(['store_id' => $store_id, 'id' => $order_id, 'mch_id' => get_mch_id()])->one();
  143. $form->words = $words;
  144. if ($form->save()) {
  145. return $this->asJson([
  146. 'code' => 0,
  147. 'msg' => '操作成功',
  148. ]);
  149. } else {
  150. return $this->asJson([
  151. 'code' => 1,
  152. 'msg' => '操作失败',
  153. ]);
  154. }
  155. }
  156. /**
  157. * 更新订单地址
  158. * @return \yii\web\Response
  159. */
  160. public function actionSetOrderAddress()
  161. {
  162. $commonUpdateAddress = new CommonUpdateAddress();
  163. $commonUpdateAddress->data = post_params();
  164. $updateAddress = $commonUpdateAddress->updateAddress();
  165. return $this->asJson($updateAddress);
  166. }
  167. /**
  168. * 售后订单列表
  169. */
  170. public function actionRefund()
  171. {
  172. $form = new OrderRefundListForm();
  173. $form->attributes = \Yii::$app->request->get();
  174. $form->attributes = \Yii::$app->request->post();
  175. $form->store_id = get_store_id();
  176. return $this->asJson($form->search());
  177. }
  178. /**
  179. * 处理售后订单
  180. */
  181. public function actionRefundHandle()
  182. {
  183. $form = new OrderRefundForm();
  184. $form->attributes = post_params();
  185. $form->store_id = get_store_id();
  186. return $this->asJson($form->save());
  187. }
  188. /**
  189. * 商品评论列表
  190. */
  191. public function actionCommentList() {
  192. $form = new OrderCommentForm();
  193. $form->store_id = get_store_id();
  194. return $this->asJson($form->getComment());
  195. }
  196. /**
  197. * 评论回复
  198. */
  199. public function actionCommentReply() {
  200. $form = new OrderCommentForm();
  201. $form->id = post_params('id');
  202. $form->reply_content = post_params('reply_content');
  203. $form->store_id = get_store_id();
  204. return $this->asJson($form->reply());
  205. }
  206. /**
  207. * 评论显示隐藏
  208. */
  209. public function actionCommentHide() {
  210. $form = new OrderCommentForm();
  211. $form->id = post_params('id');
  212. $form->status = post_params('status');
  213. $form->store_id = get_store_id();
  214. return $this->asJson($form->hideStatus());
  215. }
  216. /**
  217. * 评论删除
  218. */
  219. public function actionCommentDelete() {
  220. $form = new OrderCommentForm();
  221. $form->id = post_params('id');
  222. $form->status = post_params('status');
  223. $form->store_id = get_store_id();
  224. return $this->asJson($form->deleteStatus());
  225. }
  226. /**
  227. * @return array|string
  228. */
  229. public function actionCommentEdit()
  230. {
  231. $store_id = get_store_id();
  232. $form = new OrderCommentForm();
  233. $pic_list = array();
  234. if (!empty(post_params('pic_list'))) {
  235. if (count(post_params('pic_list')) > 6) {
  236. return $this->asJson(
  237. [
  238. 'code' => 1,
  239. 'msg' => '图片最多为6张'
  240. ]
  241. );
  242. }
  243. foreach (post_params('pic_list') as $item) {
  244. $pic_list[] = Html::encode($item);
  245. }
  246. }
  247. $form->pic_list = json_encode($pic_list);
  248. if (json_encode($pic_list) === '[""]') {
  249. $form->pic_list = '[]';
  250. }
  251. $form->store_id = $store_id;
  252. $form->attributes = post_params();
  253. $created_at = post_params('created_at');
  254. $form->created_at = $created_at ? strtotime($created_at) : time();
  255. return $this->asJson($form->save());
  256. }
  257. /**
  258. * 订单发货
  259. * @return mixed
  260. */
  261. public function actionSend()
  262. {
  263. $form = new OrderSendForm();
  264. $post = post_params();
  265. if ($post['is_express'] == OrderSendForm::EXPRESS_TYPE_EXPRESS) {
  266. $form->scenario = 'EXPRESS';
  267. }elseif ($post['is_express'] == OrderSendForm::EXPRESS_TYPE_DADA){
  268. $form->scenario = 'DADA';
  269. }elseif ($post['is_express'] == OrderSendForm::EXPRESS_TYPE_UU){
  270. $form->scenario = 'UU';
  271. }elseif ($post['is_express'] == OrderSendForm::EXPRESS_TYPE_PEISONG){
  272. $form->scenario = 'PEISONG';
  273. }
  274. $form->attributes = $post;
  275. $form->store_id = get_store_id();
  276. return $this->asJson($form->cost_order_save());
  277. }
  278. /**
  279. * 货到付款 确认收货
  280. * @return \yii\web\Response
  281. */
  282. public function actionConfirm()
  283. {
  284. $store_id = get_store_id();
  285. $order_id = post_params('order_id');
  286. $order = Order::findOne([
  287. 'id' => $order_id,
  288. 'mch_id' => 0,
  289. 'store_id' => $store_id
  290. ]);
  291. if (!$order) {
  292. return $this->asJson([
  293. 'code' => 1,
  294. 'msg' => '订单不存在,请刷新重试',
  295. ]);
  296. }
  297. if ($order->pay_type != 2) {
  298. return $this->asJson([
  299. 'code' => 1,
  300. 'msg' => '订单支付方式不是货到付款,无法确认收货',
  301. ]);
  302. }
  303. if ($order->trade_status != Order::ORDER_FLOW_SEND) {
  304. return $this->asJson([
  305. 'code' => 1,
  306. 'msg' => '订单未发货',
  307. ]);
  308. }
  309. $order->trade_status = Order::ORDER_FLOW_CONFIRM;
  310. $order->confirm_time = time();
  311. $order->is_pay = Order::IS_PAY_TRUE;
  312. $order->pay_time = time();
  313. if ($order->save()) {
  314. return $this->asJson([
  315. 'code' => 0,
  316. 'msg' => '成功',
  317. ]);
  318. } else {
  319. return $this->asJson([
  320. 'code' => 1,
  321. 'msg' => $order->errors[0],
  322. ]);
  323. }
  324. }
  325. /**
  326. * 小票打印
  327. * @return mixed
  328. */
  329. public function actionPrintOrder()
  330. {
  331. $data = post_params();
  332. $store_id = get_store_id();
  333. $md_id = get_md_id();
  334. // 订单打印
  335. if ((int)$md_id === -1 || (int)$md_id === 0 || !isset($order->md_id)) {
  336. $md_id = 0;
  337. }
  338. $print = new PrintOrder($store_id, $data['order_id'], 'reprint', $data['order_type'],
  339. $md_id );
  340. return $this->asJson($print->print_order());
  341. }
  342. /**
  343. * 订单打印
  344. */
  345. public function actionPrint()
  346. {
  347. $id = \Yii::$app->request->get('id');
  348. $express = \Yii::$app->request->get('express');
  349. $post_code = \Yii::$app->request->get('code');
  350. $form = new PrintExpress();
  351. $form->store_id = get_store_id();
  352. $form->order_id = $id;
  353. $form->express = $express;
  354. $form->post_code = $post_code;
  355. return $this->asJson($form->send());
  356. }
  357. /**
  358. * 核销订单
  359. * @return mixed
  360. */
  361. public function actionClerk()
  362. {
  363. $form = new OrderClerkForm();
  364. $form->attributes = post_params();
  365. $form->order_model = 'app\models\Order';
  366. $form->store_id = get_store_id();
  367. return $this->asJson($form->clerk());
  368. }
  369. /**
  370. * 修改价格
  371. * @return mixed
  372. */
  373. public function actionModifyPrice()
  374. {
  375. $form = new OrderPriceForm();
  376. $form->attributes = post_params();
  377. $form->store_id = get_store_id();
  378. return $this->asJson($form->save());
  379. }
  380. /**
  381. * 移入回收站
  382. */
  383. public function actionEdit()
  384. {
  385. $order_id = get_params('order_id');
  386. $is_recycle = get_params('is_recycle');
  387. if ($is_recycle == 0 || $is_recycle == 1) {
  388. $form = Order::find()->where(['store_id' => get_store_id(), 'mch_id' => 0])
  389. ->andWhere('id = :order_id', [':order_id' => $order_id])->one();
  390. $form->is_recycle = $is_recycle;
  391. if ($form && $form->save()) {
  392. return $this->asJson([
  393. 'code' => 0,
  394. 'msg' => '操作成功',
  395. ]);
  396. }
  397. };
  398. return $this->asJson([
  399. 'code' => 1,
  400. 'msg' => '操作失败',
  401. ]);
  402. }
  403. /**
  404. * 订单物流信息
  405. */
  406. public function actionExpressDetail()
  407. {
  408. $form = new ExpressDetailForm();
  409. $form->attributes = get_params();
  410. $form->store_id = get_store_id();
  411. $form->user_id = get_user_id();
  412. return $this->asJson($form->search());
  413. }
  414. /**
  415. * 修改自提点
  416. */
  417. public function actionUpdateShop()
  418. {
  419. $form = new OrderShopForm();
  420. $form->order_id = get_params('order_id');
  421. $form->shop_id = get_params('shop_id');
  422. $form->goods_id = get_params('goods_id');
  423. return $this->asJson($form->save());
  424. }
  425. /**
  426. * 是否认养成熟
  427. * @return \yii\web\Response
  428. */
  429. public function actionOrderMature()
  430. {
  431. $store_id = get_store_id();
  432. $order_id = post_params('order_id');
  433. $order = Order::findOne([
  434. 'id' => $order_id,
  435. 'mch_id' => 0,
  436. 'store_id' => $store_id
  437. ]);
  438. $adopt_order = AdoptOrderInfo::findOne([
  439. 'order_id' => $order_id,
  440. 'store_id' => $store_id,
  441. ]);
  442. if (!$order || !$adopt_order) {
  443. return $this->asJson([
  444. 'code' => 1,
  445. 'msg' => '订单不存在,请刷新重试',
  446. ]);
  447. }
  448. // if ($order->trade_status != Order::ORDER_FLOW_SEND) {
  449. // return $this->asJson([
  450. // 'code' => 1,
  451. // 'msg' => '订单未发货',
  452. // ]);
  453. // }
  454. // $order->trade_status = Order::ORDER_FLOW_CONFIRM;
  455. $adopt_order->is_mature = 1;
  456. $adopt_order->mature_time = time();
  457. if ($adopt_order->save()) {
  458. $goods = Goods::findOne(OrderDetail::findOne(['order_id' => $order_id])->goods_id);
  459. NoticeSend::AdoptOrderStateChange($order->user_id, $adopt_order->mobile, $order->order_no, $goods->name, 1);
  460. return $this->asJson([
  461. 'code' => 0,
  462. 'msg' => '修改成功',
  463. ]);
  464. } else {
  465. return $this->asJson([
  466. 'code' => 1,
  467. 'msg' => $adopt_order->errors[0],
  468. ]);
  469. }
  470. }
  471. /**
  472. * 是否入库
  473. * @return \yii\web\Response
  474. */
  475. public function actionOrderStorage()
  476. {
  477. $store_id = get_store_id();
  478. $order_id = post_params('order_id');
  479. $harvest_weight = post_params('harvest_weight');
  480. $harvest_storage_pic_url = post_params('harvest_storage_pic_url');
  481. $order = Order::findOne([
  482. 'id' => $order_id,
  483. 'mch_id' => 0,
  484. 'store_id' => $store_id
  485. ]);
  486. $adopt_order = AdoptOrderInfo::findOne([
  487. 'order_id' => $order_id,
  488. 'store_id' => $store_id,
  489. ]);
  490. if (!$order || !$adopt_order) {
  491. return $this->asJson([
  492. 'code' => 1,
  493. 'msg' => '订单不存在,请刷新重试',
  494. ]);
  495. }
  496. if ($adopt_order->is_mature == 0) {
  497. return $this->asJson([
  498. 'code' => 1,
  499. 'msg' => '认养未成熟,不能入库',
  500. ]);
  501. }
  502. // if ($order->trade_status != Order::ORDER_FLOW_SEND) {
  503. // return $this->asJson([
  504. // 'code' => 1,
  505. // 'msg' => '订单未发货',
  506. // ]);
  507. // }
  508. // $order->trade_status = Order::ORDER_FLOW_CONFIRM;
  509. $adopt_order->is_storage = 1;
  510. $adopt_order->storage_time = time();
  511. $adopt_order->harvest_weight = $harvest_weight;
  512. $adopt_order->harvest_storage_pic_url = $harvest_storage_pic_url;
  513. if ($adopt_order->save()) {
  514. $goods = Goods::findOne(OrderDetail::findOne(['order_id' => $order_id])->goods_id);
  515. NoticeSend::AdoptOrderStateChange($order->user_id, $adopt_order->mobile, $order->order_no, $goods->name, 10);
  516. return $this->asJson([
  517. 'code' => 0,
  518. 'msg' => '成功',
  519. ]);
  520. } else {
  521. return $this->asJson([
  522. 'code' => 1,
  523. 'msg' => $adopt_order->errors[0],
  524. ]);
  525. }
  526. }
  527. /**
  528. * 订单额外费用
  529. */
  530. public function actionOrderExtraFee()
  531. {
  532. $store_id = get_store_id();
  533. $order_id = post_params('order_id');
  534. $other_pick_fee = post_params('other_pick_fee');
  535. $preserve_fee = post_params('preserve_fee');
  536. $form = AdoptOrderInfo::find()->where(['store_id' => $store_id, 'order_id' => $order_id])->one();
  537. $form->other_pick_fee = $other_pick_fee ? $other_pick_fee : [];
  538. $form->preserve_fee = $preserve_fee ? $preserve_fee : [];
  539. if ($form->save()) {
  540. return $this->asJson([
  541. 'code' => 0,
  542. 'msg' => '操作成功',
  543. ]);
  544. } else {
  545. return $this->asJson([
  546. 'code' => 1,
  547. 'msg' => '操作失败',
  548. ]);
  549. }
  550. }
  551. /**
  552. * 是否确认自采完成
  553. * @return \yii\web\Response
  554. */
  555. public function actionOrderConfirmSelfPick()
  556. {
  557. $store_id = get_store_id();
  558. $order_id = post_params('order_id');
  559. $order = Order::findOne([
  560. 'id' => $order_id,
  561. 'mch_id' => 0,
  562. 'store_id' => $store_id
  563. ]);
  564. $adopt_order = AdoptOrderInfo::findOne([
  565. 'order_id' => $order_id,
  566. 'store_id' => $store_id,
  567. ]);
  568. if (!$order || !$adopt_order) {
  569. return $this->asJson([
  570. 'code' => 1,
  571. 'msg' => '订单不存在,请刷新重试',
  572. ]);
  573. }
  574. if($adopt_order->end_self_pick == 0) {
  575. return $this->asJson([
  576. 'code' => 1,
  577. 'msg' => '用户未确认自采完成,您还不能确认自采完成',
  578. ]);
  579. }
  580. $adopt_order->confirm_self_pick = 1;
  581. $adopt_order->confirm_self_pick_time = time();
  582. if ($adopt_order->save()) {
  583. $goods = Goods::findOne(OrderDetail::findOne(['order_id' => $order_id])->goods_id);
  584. NoticeSend::AdoptOrderStateChange($order->user_id, $adopt_order->mobile, $order->order_no, $goods->name, 7);
  585. // $order->trade_status = Order::ORDER_FLOW_CONFIRM;
  586. //
  587. // if ($order->save()) {
  588. // return $this->asJson([
  589. // 'code' => 0,
  590. // 'msg' => '修改成功',
  591. // ]);
  592. // }else {
  593. // return $this->asJson([
  594. // 'code' => 1,
  595. // 'msg' => $order->errors[0],
  596. // ]);
  597. // }
  598. return $this->asJson([
  599. 'code' => 0,
  600. 'msg' => '修改成功',
  601. ]);
  602. } else {
  603. return $this->asJson([
  604. 'code' => 1,
  605. 'msg' => $adopt_order->errors[0],
  606. ]);
  607. }
  608. }
  609. /**
  610. * 是否确认自采预约
  611. * @return \yii\web\Response
  612. */
  613. public function actionOrderConfirmSelfPickBook()
  614. {
  615. $store_id = get_store_id();
  616. $order_id = post_params('order_id');
  617. $order = Order::findOne([
  618. 'id' => $order_id,
  619. 'mch_id' => 0,
  620. 'store_id' => $store_id
  621. ]);
  622. $adopt_order = AdoptOrderInfo::findOne([
  623. 'order_id' => $order_id,
  624. 'store_id' => $store_id,
  625. ]);
  626. if (!$order || !$adopt_order) {
  627. return $this->asJson([
  628. 'code' => 1,
  629. 'msg' => '订单不存在,请刷新重试',
  630. ]);
  631. }
  632. $adopt_order->confirm_self_pick_book = 1;
  633. $adopt_order->confirm_self_pick_book_time = time();
  634. if ($adopt_order->save()) {
  635. $goods = Goods::findOne(OrderDetail::findOne(['order_id' => $order_id])->goods_id);
  636. NoticeSend::AdoptOrderStateChange($order->user_id, $adopt_order->mobile, $order->order_no, $goods->name, 4);
  637. return $this->asJson([
  638. 'code' => 0,
  639. 'msg' => '修改成功',
  640. ]);
  641. } else {
  642. return $this->asJson([
  643. 'code' => 1,
  644. 'msg' => $adopt_order->errors[0],
  645. ]);
  646. }
  647. }
  648. }