CsOrdersController.php 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558
  1. <?php
  2. namespace addons\CloudStock\api\modules\v1\controllers;
  3. use addons\CloudStock\api\services\CloudStockFillCartService;
  4. use addons\CloudStock\api\services\CloudStockFillOrderService;
  5. use addons\CloudStock\api\services\CloudStockGoodsService;
  6. use addons\CloudStock\common\enums\CloudStockEnum;
  7. use addons\CloudStock\common\events\order\FillOrderConfirmEvent;
  8. use addons\CloudStock\common\logic\order\PayNotify;
  9. use addons\CloudStock\common\logic\order\RestrictPurchases;
  10. use addons\CloudStock\common\models\CloudStockAgent;
  11. use addons\CloudStock\common\models\CloudStockAgentOrder;
  12. use addons\CloudStock\common\models\CloudStockAgentOrderDetails;
  13. use addons\CloudStock\common\models\CloudStockDeductionDetail;
  14. use addons\CloudStock\common\models\CloudStockFillOrder;
  15. use addons\CloudStock\common\models\CloudStockGoods;
  16. use addons\CloudStock\common\models\CloudStockLevel;
  17. use addons\CloudStock\common\models\CloudStockAgentGoods;
  18. use addons\CloudStock\common\models\CloudStockGoodsStockLog;
  19. use addons\CloudStock\common\models\CloudStockIncreaseDetail;
  20. use addons\CloudStock\api\services\CloudStockAgentOrderService;
  21. use common\models\common\Express;
  22. use common\models\common\PaymentTrade;
  23. use common\enums\AddonsEnum;
  24. use common\enums\StatusEnum;
  25. use common\helpers\StringHelper;
  26. use common\models\goods\Goods;
  27. use common\models\user\User;
  28. class CsOrdersController extends BaseController
  29. {
  30. public $modelClass = '';
  31. /**
  32. * 不用进行登录验证的方法
  33. *
  34. * 例如: ['index', 'update', 'create', 'view', 'delete']
  35. * 默认全部需要验证
  36. *
  37. * @var array
  38. */
  39. protected $authOptional = [];
  40. /**
  41. * @name:
  42. * @msg: 代理商自提订单列表
  43. * @param {*}
  44. * @return {*}
  45. */
  46. public function actionList()
  47. {
  48. if (!\Yii::$app->request->isGet) {
  49. return $this->error('请求方式错误');
  50. }
  51. $page = \Yii::$app->request->get('page', 1);
  52. $limit = \Yii::$app->request->get('limit', $this->pageSize);
  53. $wheres[] = ['mall_id' => $this->mall_id, 'user_id' => $this->user_id, 'status' => StatusEnum::ENABLED];
  54. $params = [
  55. 'select' => 'id,mall_id,user_id,goods_id,num,address,express_no,express_code,send_status,mobile,name,created_at,remark,seller_remark',
  56. 'where' => $wheres,
  57. 'order' => 'created_at desc',
  58. 'page' => $page,
  59. 'limit' => $limit,
  60. 'with' => [
  61. 'details' => function ($query) {
  62. $query
  63. ->where(['status' => StatusEnum::ENABLED])
  64. ->select('goods_id, num, order_id')
  65. ->with([
  66. 'goods' => function ($query) {
  67. $query->select('id, goods_name, cover_pic');
  68. }
  69. ]);
  70. }
  71. ]
  72. ];
  73. $orders = CloudStockAgentOrder::listPage($params);
  74. if (empty($orders['list'])) {
  75. if (is_array($orders['list'])) {
  76. return $this->success('success', $orders);
  77. } else {
  78. return $this->error('获取自提订单失败:' . CloudStockAgentOrder::getStaticError());
  79. }
  80. }
  81. $send_status_map = CloudStockEnum::getAgentOrdetStatusMap();
  82. $orders['send_status_map'] = $send_status_map;
  83. $setting =\Yii::$app->services->setting->addons->get($this->mall_id, AddonsEnum::ADDONS_NAME_CLOUD_STOCK, 'basic');
  84. $orders['is_show_update_address'] = $setting['is_show_update_address'] ?: 0;
  85. return $this->success('success', $orders);
  86. }
  87. /**
  88. * @name:
  89. * @msg: 订单详情
  90. * @param {*}
  91. * @return {*}
  92. */
  93. public function actionDetail()
  94. {
  95. try {
  96. if (!\Yii::$app->request->isGet) {
  97. return $this->error('请求方式错误');
  98. }
  99. $order_id = \Yii::$app->request->get('order_id');
  100. if (empty($order_id)) return $this->error('参数错误');
  101. $order = CloudStockAgentOrder::find()
  102. ->select('id,mall_id,user_id,num,address,express_code,express_no,goods_id,mobile,name,created_at,send_status')
  103. ->where(['mall_id' => $this->mall_id, 'user_id' => $this->user_id, 'status' => StatusEnum::ENABLED, 'id' => $order_id])
  104. ->with([
  105. 'details' => function ($query) {
  106. $query
  107. ->where(['status' => StatusEnum::ENABLED])
  108. ->select('goods_id, num, order_id')
  109. ->with([
  110. 'goods' => function ($query) {
  111. $query->select('id, goods_name, cover_pic');
  112. }
  113. ]);
  114. }
  115. ])
  116. ->asArray()
  117. ->one();
  118. if (empty($order)) return $this->error('订单不存在');
  119. $send_status_map = CloudStockEnum::getAgentOrdetStatusMap();
  120. $traces = CloudStockAgentOrder::viewLogistics($order_id,$this->mall_id);
  121. $order['traces'] = $traces;
  122. $order['express_name'] = '';
  123. $express = Express::findOne(['code'=>$order['express_code'],'status'=>StatusEnum::ENABLED]);
  124. $order['express_name'] = $express ? $express['name'] : '';
  125. return $this->success('success', ['order' => $order, 'send_status_map' => $send_status_map]);
  126. }catch (\Exception $e){
  127. return $this->error($e->getMessage());
  128. }
  129. }
  130. /**
  131. * @name:
  132. * @msg: 确认收货
  133. * @param {integer} order_id 订单id
  134. * @return {*}
  135. */
  136. public function actionConfirm()
  137. {
  138. if (!\Yii::$app->request->isPost) {
  139. return $this->error('请求方式错误');
  140. }
  141. $order_id = \Yii::$app->request->post('order_id');
  142. if (empty($order_id)) return $this->error('参数错误');
  143. $agent_order = CloudStockAgentOrder::findOne([
  144. 'id' => $order_id,
  145. 'mall_id' => $this->mall_id,
  146. 'user_id' => $this->user_id,
  147. 'status' => StatusEnum::ENABLED,
  148. 'send_status' => CloudStockEnum::PICK_ORDER_STATUS1,
  149. ]);
  150. if (empty($agent_order)) return $this->error('订单不存在或者未发货');
  151. $params = [
  152. 'id' => $order_id,
  153. 'send_status' => CloudStockEnum::PICK_ORDER_STATUS2,
  154. ];
  155. $res = CloudStockAgentOrder::setData($this->mall_id, $params);
  156. if (false === $res) return $this->error(CloudStockAgentOrder::getStaticError());
  157. // 自提订单确认收货事件
  158. $event = new FillOrderConfirmEvent($this->mall_id);
  159. $data = ['id' => $order_id];
  160. \Yii::$app->services->events->dispatch($event, $data, $event->listeners);
  161. return $this->success('操作成功');
  162. }
  163. /**
  164. * @name:
  165. * @msg: 创建订单
  166. * @param {integer} goods_id:商品 id
  167. * @param {integer} number:补货数量
  168. * @param {float} pay_money:支付金额
  169. * @param {string} pay_type:支付方式
  170. * @param {string} transaction_password:交易密码
  171. * @return {*}
  172. */
  173. public function actionCreate()
  174. {
  175. if (!\Yii::$app->request->isPost) {
  176. return $this->error('请求方式错误');
  177. }
  178. $post = \Yii::$app->request->post();
  179. $rules = [
  180. [['goods_id', 'number', 'pay_money'], 'required'],
  181. [['goods_id', 'number'], 'integer'],
  182. ['pay_money', 'number'],
  183. ];
  184. $res = \Yii::$app->services->validate->validate($post, $rules);
  185. if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
  186. // 当前会员是否可以补货当前商品
  187. $rr = CloudStockGoods::canFillGood($this->mall_id, $post['goods_id'], $this->stock_agent->level, $this->user_id);
  188. if (false === $rr) {
  189. return $this->error('暂不能补货当前商品');
  190. }
  191. $agent_level = $this->stock_agent->level;
  192. $level_model = CloudStockLevel::findOne(['mall_id'=>$this->mall_id,'level'=>$agent_level,'status'=>StatusEnum::ENABLED]);
  193. if(!empty($level_model['is_open_fill_min'])&&!empty($level_model['fill_min'])&&$post['number']<$level_model['fill_min']){
  194. return $this->error('每次补货的最低数量为'.$level_model['fill_min']);
  195. }
  196. $all_stocks = CloudStockGoods::allPerantAgentGoodStocks($post['goods_id'], $this->user_id, $this->mall_id);
  197. if (false === $all_stocks) {
  198. return $this->error(CloudStockGoods::getStaticError());
  199. } elseif ($post['number'] > $all_stocks) {
  200. return $this->error('补货数量超过了商品库存');
  201. }
  202. $stock_good = CloudStockGoods::findOne(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'goods_id' => $post['goods_id']]);
  203. if (empty($stock_good)) return $this->error('商品数据异常');
  204. if( !empty($stock_good['min_replenish']) && $post['number'] < $stock_good['min_replenish'] ) {
  205. return $this->error('最低补货数量:'.$stock_good['min_replenish']);
  206. }
  207. if(!empty($stock_good['restrict_permissions'])){
  208. $restrict_permissions = json_decode($stock_good['restrict_permissions'],true);
  209. if(!empty($restrict_permissions)){
  210. $cloud_stock_agent = CloudStockAgent::find()->where(['user_id'=>$this->user_id,'status'=>StatusEnum::ENABLED,'mall_id'=>$this->mall_id])->one();
  211. if(in_array($cloud_stock_agent['level'],$restrict_permissions)){
  212. return $this->error('您当前等级禁止购买此商品');
  213. }
  214. }
  215. }
  216. try {
  217. RestrictPurchases::check($this->mall_id,$this->user_id,[$post['goods_id']],$post['number']);
  218. }catch (\Exception $e){
  219. return $this->error($e->getMessage());
  220. }
  221. $agent_price = json_decode($stock_good['agent_price'],true);
  222. $agent_price = array_column($agent_price,null,'level');
  223. $unit_price = 0;
  224. if(!empty($agent_price[$this->stock_agent->level])){
  225. $unit_price = $agent_price[$this->stock_agent->level]['price'];
  226. if(!empty($stock_good['is_take_by_range'])){
  227. foreach($agent_price[$this->stock_agent->level]['price_list'] as $item){
  228. if($item['start_num'] <= $post['number'] && $post['number'] <= $item['end_num']){
  229. $unit_price = $item['price'];
  230. }
  231. }
  232. }
  233. }
  234. $pay_money = bcmul($unit_price, $post['number'], 2);
  235. if ($pay_money != $post['pay_money']) return $this->error('支付金额错误');
  236. $order_no = StringHelper::generateOrderNo('CSF');
  237. //生成支付流水
  238. $order_trade_info[] = [
  239. 'order_no' => $order_no,
  240. 'amount' => $pay_money,
  241. 'title' => '云库存补货订单',
  242. 'notify_class' => PayNotify::class,
  243. 'order_type' => AddonsEnum::ADDONS_NAME_CLOUD_STOCK,
  244. ];
  245. $res_trade = \Yii::$app->services->pay->createTrade($this->mall_id, $this->user_id, $order_trade_info);
  246. if ($res_trade == false) return $this->error('生成支付流水失败');
  247. $params = [
  248. 'user_id' => $this->user_id,
  249. 'trade_id' => $res_trade['trade_id'],
  250. 'pay_money' => $pay_money,
  251. 'order_no' => $order_no,
  252. 'trade_no' => $res_trade['trade_no'],
  253. 'is_pay' => CloudStockEnum::FILL_STATUS_NOT_PAY,
  254. 'goods_id' => $post['goods_id'],
  255. 'num' => $post['number'],
  256. ];
  257. $res_fill_order = CloudStockFillOrder::setData($this->mall_id, $params);
  258. if (false === $res) return $this->error(CloudStockFillOrder::getStaticError());
  259. // 获取设置
  260. $configs = \Yii::$app->services->setting->addons->get($this->mall_id, AddonsEnum::ADDONS_NAME_CLOUD_STOCK, 'basic');
  261. $is_enable_rand_fee = $configs['is_enable_rand_fee'] ?? 0;
  262. return $this->success('订单创建成功', ['trade_no' => $res_trade['trade_no'], 'trade_id' => $res_trade['trade_id'], 'order_ids' => $res_fill_order->id,'is_enable_rand_fee'=>$is_enable_rand_fee]);
  263. }
  264. /**
  265. * @name:
  266. * @msg: 取消自提订单
  267. */
  268. public function actionCancelAgentOrder()
  269. {
  270. if (!\Yii::$app->request->isPost) {
  271. return $this->error('请求方式错误');
  272. }
  273. $post = \Yii::$app->request->post();
  274. $rules = [
  275. [['id'], 'required'],
  276. [['id'], 'integer'],
  277. ];
  278. $res = \Yii::$app->services->validate->validate($post, $rules);
  279. if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
  280. $order = CloudStockAgentOrder::findOne($post['id']);
  281. if (empty($order)) {
  282. return $this->error('自提订单异常');
  283. }
  284. if($order->send_status != CloudStockEnum::PICK_ORDER_STATUS3){
  285. return $this->error('自提订单状态异常');
  286. }
  287. $details = CloudStockAgentOrderDetails::find()
  288. ->where(['status' => StatusEnum::ENABLED, 'order_id' => $order->id, 'mall_id' => $order->mall_id])
  289. ->select('num, goods_id')
  290. ->asArray()
  291. ->all();
  292. if (empty($details)) {
  293. return $this->error('自提订单异常');
  294. }
  295. $t = \Yii::$app->db->beginTransaction();
  296. try{
  297. foreach ($details as $detail) {
  298. $params_add = [
  299. 'goods_id' => $detail['goods_id'],
  300. 'changes_dir' => CloudStockEnum::STOCK_CHANGE_ADD,
  301. 'user_id' => $order['user_id'],
  302. 'order_id' => $order['id'],
  303. 'order_type' => 0,
  304. 'changes_type' => CloudStockEnum::CHANGE_TYPE_PICKOFFLINE_RETURN,
  305. 'num' => $detail['num'],
  306. 'status' => StatusEnum::ENABLED,
  307. ];
  308. $res_save_log = CloudStockGoodsStockLog::setData($this->mall_id, $params_add);
  309. if (false === $res_save_log) {
  310. throw new \Exception(CloudStockGoodsStockLog::getStaticError());
  311. }
  312. $add_params = [
  313. 'user_id' => $order['user_id'],
  314. 'num' => $detail['num'],
  315. 'mall_id'=>$this->mall_id,
  316. 'goods_id' => $detail['goods_id'],
  317. 'order_id' => $order['id'],
  318. 'order_type' => 0,
  319. 'changes_type' => CloudStockEnum::CHANGE_TYPE_PICKOFFLINE_RETURN,
  320. 'stock_log_id' => $res_save_log->id,
  321. 'status' => StatusEnum::ENABLED,
  322. ];
  323. $res_add = CloudStockIncreaseDetail::setData($add_params);
  324. if (false === $res_add) {
  325. throw new \Exception(CloudStockIncreaseDetail::getStaticError());
  326. }
  327. $cloud_stock_agent_goods_model = CloudStockAgentGoods::findOne(['mall_id' => $order['mall_id'], 'user_id' => $order['user_id'], 'goods_id' => $detail['goods_id'], 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]]);
  328. if (!empty($cloud_stock_agent_goods_model)) {
  329. $cloud_stock_agent_goods_model->num += $detail['num'];
  330. $res = $cloud_stock_agent_goods_model->save();
  331. if ($res == false) throw new \Exception($cloud_stock_agent_goods_model->getErrorMessage());
  332. }
  333. $cloud_stock_agent_model = CloudStockAgent::findOne(['mall_id' => $order['mall_id'], 'user_id' => $order['user_id'], 'status' => StatusEnum::ENABLED]);
  334. if (!empty($cloud_stock_agent_model)) {
  335. $cloud_stock_agent_model->stock += $detail['num'];
  336. $res = $cloud_stock_agent_model->save();
  337. if ($res == false) throw new \Exception($cloud_stock_agent_model->getErrorMessage());
  338. }
  339. $order->send_status = CloudStockEnum::PICK_ORDER_STATUS4;
  340. if (!$order->save()){
  341. throw new \Exception($order->getErrorMessage());
  342. }
  343. }
  344. $t->commit();
  345. return $this->success('取消成功');
  346. }catch(\Exception $e){
  347. $t->rollBack();
  348. return $this->error($e->getMessage());
  349. }
  350. }
  351. /**
  352. * @name:
  353. * @msg: 订单支付成功页面
  354. */
  355. public function actionPaySuccess(){
  356. if (!\Yii::$app->request->isGet) {
  357. return $this->error('请求方式错误');
  358. }
  359. $params = \Yii::$app->request->get();
  360. $rules = [
  361. [['trade_id'], 'required'],
  362. [['trade_id'], 'integer'],
  363. ];
  364. $res = \Yii::$app->services->validate->validate($params, $rules);
  365. if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
  366. // 获取设置
  367. $configs = \Yii::$app->services->setting->addons->get($this->mall_id, AddonsEnum::ADDONS_NAME_CLOUD_STOCK, 'basic');
  368. $detail['is_enable_rand_fee'] = $configs['is_enable_rand_fee'] ?? 0;
  369. $order = CloudStockFillOrder::find()
  370. ->select('order_no,created_at,num,pay_money as order_money,goods_id')
  371. ->where(['trade_id'=>$params['trade_id']])
  372. ->asArray()
  373. ->one();
  374. if(empty($order)) return $detail;
  375. $payment = PaymentTrade::find()
  376. ->select('is_pay,pay_time,pay_fee,rand_fee')
  377. ->where(['id'=>$params['trade_id']])
  378. ->asArray()
  379. ->one();
  380. $goods = Goods::find()
  381. ->select('cover_pic,goods_name,price')
  382. ->where(['id'=>$order['goods_id']])
  383. ->asArray()
  384. ->one();
  385. $detail = array_merge($detail,$order,$payment,$goods);
  386. $detail['created_at'] = date("Y-m-d H:i:s",$detail['created_at']);
  387. $detail['pay_time'] = date("Y-m-d H:i:s",$detail['pay_time']);
  388. return $this->success('请求成功',$detail);
  389. }
  390. /**
  391. * 批量补货预览
  392. *
  393. * @return void
  394. */
  395. public function actionBatchFillPreview()
  396. {
  397. $baseParams = ['user_id' => $this->user_id, 'mall_id' => $this->mall_id, 'stock_agent' => $this->stock_agent];
  398. $fillOrderService = new CloudStockFillOrderService($baseParams);
  399. $cartList = (new CloudStockFillCartService($baseParams))->getCartList();
  400. if (empty($cartList)) {
  401. $this->error('购物车商品为空');
  402. return;
  403. }
  404. $this->success('success', $fillOrderService->preview($cartList));
  405. }
  406. /**
  407. * 批量补货
  408. *
  409. * @return void
  410. */
  411. public function actionBatchFill()
  412. {
  413. $baseParams = ['user_id' => $this->user_id, 'mall_id' => $this->mall_id, 'stock_agent' => $this->stock_agent];
  414. $cartList = (new CloudStockFillCartService($baseParams))->getCartList();
  415. if (empty($cartList)) {
  416. $this->error('购物车商品为空');
  417. return;
  418. }
  419. try {
  420. $fillOrderService = new CloudStockFillOrderService($baseParams);
  421. $this->success('success', $fillOrderService->batchFill($cartList));
  422. }catch (\Exception $e) {
  423. $this->error($e->getMessage());
  424. }
  425. }
  426. /**
  427. * 批量下单订单详情
  428. *
  429. * @return array|mixed|void|null
  430. */
  431. public function actionGetBatchFillOrderDetails()
  432. {
  433. $batchOrderId = \Yii::$app->request->get('batch_order_id', 0);
  434. if (empty($batchOrderId)) {
  435. $this->error('参数错误');
  436. return;
  437. }
  438. $fillOrderService = new CloudStockFillOrderService(['mall_id' => $this->mall_id, 'user_id' => $this->user_id]);
  439. $this->success('success', $fillOrderService->getBatchFillOrderDetails($batchOrderId));
  440. }
  441. /**
  442. * 修改备注
  443. *
  444. * @return void
  445. */
  446. public function actionEditRemark()
  447. {
  448. $params = \Yii::$app->request->post();
  449. $rules = [
  450. [['id', 'remark'], 'required'],
  451. [['id'], 'integer'],
  452. [['remark'], 'string', 'max' => 255],
  453. ];
  454. $res = \Yii::$app->services->validate->validate($params, $rules);
  455. if ($res === false) {
  456. return $this->error(\Yii::$app->services->validate->getErrorMessage());
  457. }
  458. $service = new CloudStockAgentOrderService(['mall_id' => $this->mall_id]);
  459. if (
  460. !$service->modifyRemark(
  461. $params['id'],
  462. $params['remark'],
  463. false,
  464. function ($order) {
  465. if (!in_array($order['send_status'] ?? null, [CloudStockEnum::PICK_ORDER_STATUS0, CloudStockEnum::PICK_ORDER_STATUS3])) {
  466. throw new \RuntimeException('订单状态不允许修改备注');
  467. }
  468. if ($order['user_id'] != $this->user_id) {
  469. throw new \RuntimeException('订单不存在');
  470. }
  471. }
  472. )
  473. ) {
  474. $this->error($service->getError());
  475. return;
  476. }
  477. $this->success();
  478. }
  479. /**
  480. * 修改收货地址
  481. *
  482. * @return void
  483. */
  484. public function actionModifyAddress()
  485. {
  486. $params = \Yii::$app->request->post();
  487. $rules = [
  488. [['id', 'address_id'], 'required'],
  489. [['id', 'address_id'], 'integer'],
  490. ];
  491. $res = \Yii::$app->services->validate->validate($params, $rules);
  492. if ($res === false) {
  493. return $this->error(\Yii::$app->services->validate->getErrorMessage());
  494. }
  495. $service = new CloudStockAgentOrderService(['mall_id' => $this->mall_id, 'user_id' => $this->user_id]);
  496. if (!$service->modifyAddress(['id' => $params['id'], 'address_id' => $params['address_id']])) {
  497. $this->error($service->getError());
  498. return;
  499. }
  500. $this->success();
  501. }
  502. /**
  503. * 订单详情
  504. *
  505. * @return void
  506. */
  507. public function actionGetOrderDetail()
  508. {
  509. $params = \Yii::$app->request->get();
  510. $rules = [
  511. [['id'], 'required'],
  512. [['id'], 'integer'],
  513. ];
  514. $res = \Yii::$app->services->validate->validate($params, $rules);
  515. if ($res === false) {
  516. $this->error(\Yii::$app->services->validate->getErrorMessage());
  517. return;
  518. }
  519. $service = new CloudStockAgentOrderService(['mall_id' => $this->mall_id, 'user_id' => $this->user_id]);
  520. $this->success('success', $service->getOrderDetail($params['id']));
  521. }
  522. }