AdoptCostOrderController.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456
  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\AdoptCostOrderListForm;
  16. use app\modules\admin\models\adopt\AdoptOrderListForm;
  17. use app\modules\admin\models\OrderClerkForm;
  18. use app\modules\admin\models\OrderPriceForm;
  19. use app\modules\admin\models\OrderSendForm;
  20. use app\plugins\adopt\models\AdoptCostOrder;
  21. use app\utils\PrintOrder;
  22. use yii\helpers\Html;
  23. use app\models\User;
  24. use app\modules\admin\models\ExpressDetailForm;
  25. use app\modules\admin\models\OrderCommentForm;
  26. use app\modules\admin\models\OrderListForm;
  27. use app\modules\admin\models\OrderRefundListForm;
  28. use app\modules\admin\models\OrderRevokeForm;
  29. use app\modules\admin\models\OrderRefundForm;
  30. use app\modules\admin\models\OrderShopForm;
  31. use app\utils\Notice\NoticeSend;
  32. use app\utils\PrintExpress;
  33. class AdoptCostOrderController extends BaseController
  34. {
  35. /**
  36. * 平台商品订单列表
  37. * @return \yii\web\Response
  38. */
  39. public function actionList() {
  40. $store_id = get_store_id();
  41. $form = new AdoptCostOrderListForm();
  42. $form->attributes = get_params();
  43. if (!empty(get_params('is_offline')) && get_params('is_offline') == Order::IS_OFFLINE_TRUE) {
  44. $form->is_offline = Order::IS_OFFLINE_TRUE;
  45. } else {
  46. $form->is_offline = Order::IS_OFFLINE_FALSE;
  47. }
  48. $form->store_id = $store_id;
  49. $form->order_id = get_params('order_id');
  50. return $this->asJson($form->search());
  51. }
  52. /**list
  53. * 平台商品订单取消
  54. */
  55. public function actionApplyOrderDelete()
  56. {
  57. $store_id = get_store_id();
  58. $where = [
  59. 'id' => post_params('id'),
  60. 'is_delete' => Order::IS_DELETE_FALSE,
  61. 'store_id' => $store_id,
  62. 'mch_id' => 0,
  63. ];
  64. // type=1 后台主要取消订单, type=0 用户发起订单取消申请
  65. if (post_params('type') == Order::CANCEL_USER_TYPE) {
  66. $where['apply_delete'] = Order::ORDER_APPLY_DELETE;
  67. }
  68. $order = AdoptCostOrder::findOne($where);
  69. if (!$order || $order->mch_id > 0) {
  70. return $this->asJson([
  71. 'code' => 1,
  72. 'msg' => '订单不存在,请刷新页面后重试'
  73. ]);
  74. }
  75. // 发送备注消息
  76. $order->remark = post_params('remark', '');
  77. // 同意
  78. if (post_params('status') == 1) {
  79. $form = new OrderRevokeForm();
  80. $form->order_id = $order->id;
  81. $form->delete_pass = true;
  82. $form->user_id = $order->user_id;
  83. $form->store_id = $order->store_id;
  84. $res = $form->saveCost();
  85. if ($res['code'] == 0) {
  86. $order->save();
  87. $goods = Goods::findOne(OrderDetail::findOne(['order_id' => $order->order_id])->goods_id);
  88. NoticeSend::OrderCancel($order->user_id, $order->mobile, $order->order_no, $order->pay_price, $goods->name, 2);
  89. // 订单打印
  90. if ((int)$order->md_id === -1 || (int)$order->md_id === 0 || !isset($order->md_id)) {
  91. $order->md_id = 0;
  92. }
  93. $printer_order = new PrintOrder($order->store_id, $order->id, 'confirm', 0, $order->md_id);
  94. $printer_order->is_refund = true;
  95. $printer_order->print_order();
  96. return $this->asJson([
  97. 'code' => 0,
  98. 'msg' => '操作成功',
  99. ]);
  100. } else {
  101. return $this->asJson($res);
  102. }
  103. } else { //拒绝
  104. $order->apply_delete = Order::ORDER_APPLY_DELETE_DEFAULT;
  105. $order->save();
  106. // TODO :推送订单取消拒绝消息
  107. return $this->asJson([
  108. 'code' => 0,
  109. 'msg' => '操作成功',
  110. ]);
  111. }
  112. }
  113. /**
  114. * 添加备注
  115. */
  116. public function actionSellerComments()
  117. {
  118. $store_id = get_store_id();
  119. $order_id = get_params('order_id');
  120. $seller_comments = get_params('seller_comments');
  121. $form = AdoptCostOrder::find()->where(['store_id' => $store_id, 'id' => $order_id, 'mch_id' => get_mch_id()])->one();
  122. $form->seller_comments = $seller_comments;
  123. if ($form->save()) {
  124. return $this->asJson([
  125. 'code' => 0,
  126. 'msg' => '操作成功',
  127. ]);
  128. } else {
  129. return $this->asJson([
  130. 'code' => 1,
  131. 'msg' => '操作失败',
  132. ]);
  133. }
  134. }
  135. /**
  136. * 添加商家留言
  137. */
  138. public function actionSetWords()
  139. {
  140. $store_id = get_store_id();
  141. $order_id = post_params('order_id');
  142. $words = post_params('words');
  143. $form = AdoptCostOrder::find()->where(['store_id' => $store_id, 'id' => $order_id, 'mch_id' => get_mch_id()])->one();
  144. $form->words = $words;
  145. if ($form->save()) {
  146. return $this->asJson([
  147. 'code' => 0,
  148. 'msg' => '操作成功',
  149. ]);
  150. } else {
  151. return $this->asJson([
  152. 'code' => 1,
  153. 'msg' => '操作失败',
  154. ]);
  155. }
  156. }
  157. /**
  158. * 更新订单地址
  159. * @return \yii\web\Response
  160. */
  161. public function actionSetOrderAddress()
  162. {
  163. $commonUpdateAddress = new CommonUpdateAddress();
  164. $commonUpdateAddress->data = post_params();
  165. $updateAddress = $commonUpdateAddress->updateAddress2();
  166. return $this->asJson($updateAddress);
  167. }
  168. /**
  169. * 售后订单列表
  170. */
  171. public function actionRefund()
  172. {
  173. $form = new OrderRefundListForm();
  174. $form->attributes = \Yii::$app->request->get();
  175. $form->attributes = \Yii::$app->request->post();
  176. $form->store_id = get_store_id();
  177. return $this->asJson($form->search());
  178. }
  179. /**
  180. * 处理售后订单
  181. */
  182. public function actionRefundHandle()
  183. {
  184. $form = new OrderRefundForm();
  185. $form->attributes = post_params();
  186. $form->store_id = get_store_id();
  187. return $this->asJson($form->save());
  188. }
  189. /**
  190. * 商品评论列表
  191. */
  192. public function actionCommentList() {
  193. $form = new OrderCommentForm();
  194. $form->store_id = get_store_id();
  195. return $this->asJson($form->getComment());
  196. }
  197. /**
  198. * 评论回复
  199. */
  200. public function actionCommentReply() {
  201. $form = new OrderCommentForm();
  202. $form->id = post_params('id');
  203. $form->reply_content = post_params('reply_content');
  204. $form->store_id = get_store_id();
  205. return $this->asJson($form->reply());
  206. }
  207. /**
  208. * 评论显示隐藏
  209. */
  210. public function actionCommentHide() {
  211. $form = new OrderCommentForm();
  212. $form->id = post_params('id');
  213. $form->status = post_params('status');
  214. $form->store_id = get_store_id();
  215. return $this->asJson($form->hideStatus());
  216. }
  217. /**
  218. * 评论删除
  219. */
  220. public function actionCommentDelete() {
  221. $form = new OrderCommentForm();
  222. $form->id = post_params('id');
  223. $form->status = post_params('status');
  224. $form->store_id = get_store_id();
  225. return $this->asJson($form->deleteStatus());
  226. }
  227. /**
  228. * @return array|string
  229. */
  230. public function actionCommentEdit()
  231. {
  232. $store_id = get_store_id();
  233. $form = new OrderCommentForm();
  234. $pic_list = array();
  235. if (!empty(post_params('pic_list'))) {
  236. if (count(post_params('pic_list')) > 6) {
  237. return $this->asJson(
  238. [
  239. 'code' => 1,
  240. 'msg' => '图片最多为6张'
  241. ]
  242. );
  243. }
  244. foreach (post_params('pic_list') as $item) {
  245. $pic_list[] = Html::encode($item);
  246. }
  247. }
  248. $form->pic_list = json_encode($pic_list);
  249. if (json_encode($pic_list) === '[""]') {
  250. $form->pic_list = '[]';
  251. }
  252. $form->store_id = $store_id;
  253. $form->attributes = post_params();
  254. $created_at = post_params('created_at');
  255. $form->created_at = $created_at ? strtotime($created_at) : time();
  256. return $this->asJson($form->save());
  257. }
  258. /**
  259. * 订单发货
  260. * @return mixed
  261. */
  262. public function actionSend()
  263. {
  264. $form = new OrderSendForm();
  265. $post = post_params();
  266. if ($post['is_express'] == OrderSendForm::EXPRESS_TYPE_EXPRESS) {
  267. $form->scenario = 'EXPRESS';
  268. }elseif ($post['is_express'] == OrderSendForm::EXPRESS_TYPE_DADA){
  269. $form->scenario = 'DADA';
  270. }elseif ($post['is_express'] == OrderSendForm::EXPRESS_TYPE_UU){
  271. $form->scenario = 'UU';
  272. }elseif ($post['is_express'] == OrderSendForm::EXPRESS_TYPE_PEISONG){
  273. $form->scenario = 'PEISONG';
  274. }
  275. $form->attributes = $post;
  276. $form->store_id = get_store_id();
  277. return $this->asJson($form->cost_order_save());
  278. }
  279. /**
  280. * 货到付款 确认收货
  281. * @return \yii\web\Response
  282. */
  283. public function actionConfirm()
  284. {
  285. $store_id = get_store_id();
  286. $order_id = post_params('order_id');
  287. $order = Order::findOne([
  288. 'id' => $order_id,
  289. 'mch_id' => 0,
  290. 'store_id' => $store_id
  291. ]);
  292. if (!$order) {
  293. return $this->asJson([
  294. 'code' => 1,
  295. 'msg' => '订单不存在,请刷新重试',
  296. ]);
  297. }
  298. if ($order->pay_type != 2) {
  299. return $this->asJson([
  300. 'code' => 1,
  301. 'msg' => '订单支付方式不是货到付款,无法确认收货',
  302. ]);
  303. }
  304. if ($order->trade_status != Order::ORDER_FLOW_SEND) {
  305. return $this->asJson([
  306. 'code' => 1,
  307. 'msg' => '订单未发货',
  308. ]);
  309. }
  310. $order->trade_status = Order::ORDER_FLOW_CONFIRM;
  311. $order->confirm_time = time();
  312. $order->is_pay = Order::IS_PAY_TRUE;
  313. $order->pay_time = time();
  314. if ($order->save()) {
  315. return $this->asJson([
  316. 'code' => 0,
  317. 'msg' => '成功',
  318. ]);
  319. } else {
  320. return $this->asJson([
  321. 'code' => 1,
  322. 'msg' => $order->errors[0],
  323. ]);
  324. }
  325. }
  326. /**
  327. * 小票打印
  328. * @return mixed
  329. */
  330. public function actionPrintOrder()
  331. {
  332. $data = post_params();
  333. $store_id = get_store_id();
  334. $md_id = get_md_id();
  335. // 订单打印
  336. if ((int)$md_id === -1 || (int)$md_id === 0) {
  337. $md_id = 0;
  338. }
  339. $print = new PrintOrder($store_id, $data['order_id'], 'reprint', $data['order_type'],
  340. $md_id );
  341. return $this->asJson($print->print_order());
  342. }
  343. /**
  344. * 订单打印
  345. */
  346. public function actionPrint()
  347. {
  348. $id = \Yii::$app->request->get('id');
  349. $express = \Yii::$app->request->get('express');
  350. $post_code = \Yii::$app->request->get('code');
  351. $form = new PrintExpress();
  352. $form->store_id = get_store_id();
  353. $form->order_id = $id;
  354. $form->express = $express;
  355. $form->post_code = $post_code;
  356. return $this->asJson($form->send());
  357. }
  358. /**
  359. * 核销订单
  360. * @return mixed
  361. */
  362. public function actionClerk()
  363. {
  364. $form = new OrderClerkForm();
  365. $form->attributes = post_params();
  366. $form->order_model = 'app\models\Order';
  367. $form->store_id = get_store_id();
  368. return $this->asJson($form->clerk());
  369. }
  370. /**
  371. * 修改价格
  372. * @return mixed
  373. */
  374. public function actionModifyPrice()
  375. {
  376. $form = new OrderPriceForm();
  377. $form->attributes = post_params();
  378. $form->store_id = get_store_id();
  379. return $this->asJson($form->save());
  380. }
  381. /**
  382. * 移入回收站
  383. */
  384. public function actionEdit()
  385. {
  386. $order_id = get_params('order_id');
  387. $is_recycle = get_params('is_recycle');
  388. if ($is_recycle == 0 || $is_recycle == 1) {
  389. $form = AdoptCostOrder::find()->where(['store_id' => get_store_id(), 'mch_id' => 0])
  390. ->andWhere('id = :order_id', [':order_id' => $order_id])->one();
  391. $form->is_recycle = $is_recycle;
  392. if ($form && $form->save()) {
  393. return $this->asJson([
  394. 'code' => 0,
  395. 'msg' => '操作成功',
  396. ]);
  397. }
  398. };
  399. return $this->asJson([
  400. 'code' => 1,
  401. 'msg' => '操作失败',
  402. ]);
  403. }
  404. /**
  405. * 订单物流信息
  406. */
  407. public function actionExpressDetail()
  408. {
  409. $form = new ExpressDetailForm();
  410. $form->attributes = get_params();
  411. $form->store_id = get_store_id();
  412. $form->user_id = get_user_id();
  413. return $this->asJson($form->search());
  414. }
  415. /**
  416. * 修改自提点
  417. */
  418. public function actionUpdateShop()
  419. {
  420. $form = new OrderShopForm();
  421. $form->order_id = get_params('order_id');
  422. $form->shop_id = get_params('shop_id');
  423. $form->goods_id = get_params('goods_id');
  424. return $this->asJson($form->save());
  425. }
  426. }