where($totalWhere)->count(); //待支付 $waitPayWhere = $totalWhere; $waitPayWhere[] = ['status', '=', 0]; $waitPayCount = $order->where($waitPayWhere)->count(); //待发货 $waitSendWhere = $totalWhere; $waitSendWhere[] = ['status', '=', 1]; $waitSendCount = $order->where($waitSendWhere)->count(); //待收货 $waitAcceptWhere = $totalWhere; $waitAcceptWhere[] = ['status', '=', 2]; $waitAcceptCount = $order->where($waitAcceptWhere)->count(); //已完成 $okWhere = $totalWhere; $okWhere[] = ['status', '=', 3]; $okCount = $order->where($okWhere)->count(); //已取消 $closeWhere = $totalWhere; $closeWhere[] = ['status', '=', -1]; $closeCount = $order->where($closeWhere)->count(); return app('json')->success([ 'orderCount' => $orderCount, 'waitPayCount' => $waitPayCount, 'waitSendCount' => $waitSendCount, 'waitAcceptCount' => $waitAcceptCount, 'okCount' => $okCount, 'closeCount' => $closeCount, ]); } /** * 商城订单列表 * @param Request $request */ public function list(Request $request) { $pageSize = 50; $post = UtilService::getMore([ ['page', 1], ['uid', 0], ['mobile', ''], ['order_id', ''], ['status', ''], ['time', []], ], $request); $where = []; if (!empty($post['uid'])) { $where[] = ['o.uid', '=', $post['uid']]; } else if (!empty($post['mobile'])) { $m = Db::name('user')->where('mobile', $post['mobile'])->find(); if (!empty($m)) { $where[] = ['o.uid', '=', $m['uid']]; } } if (!empty($post['order_id'])) { $where[] = ['o.order_id', '=', $post['order_id']]; } if ($post['status'] !== '' && in_array((string)$post['status'], ["0", "1", "2", "3", "-1"])) { $where[] = ['o.status', '=', (int)$post['status']]; } //创建时间 $startTime = ''; $endTime = ''; if (!empty($post['time'][0]) && !empty($post['time'][1])) { $startTime = strtotime($post['time'][0]); $endTime = strtotime($post['time'][1]); $where[] = ['o.time', 'between', "{$startTime},{$endTime}"]; } // $order = Db::name('store_order'); $order = Db::name('store_order') ->alias('o') ->field('o.*,u.mobile,u.nickname') ->leftJoin('user u', 'u.uid = o.uid') ->where($where) ->page((int)$post['page'], $pageSize) ->order('o.id', 'desc') ->select() ->toArray(); // 关联订单商品信息 foreach ($order as &$item) { $cartInfo = Db::name('store_order_cart_info') ->where('oid', $item['id']) ->select() ->toArray(); foreach ($cartInfo as &$cart) { if (!empty($cart['cart_info'])) { $innerCartInfo = json_decode($cart['cart_info'], true); unset($cart['cart_info']); $cart = array_merge($cart, $innerCartInfo); } } $item['cart_info'] = $cartInfo; // 关联收货地址信息 if (!empty($item['address_id'])) { $address = Db::name('user_address')->where('id', $item['address_id'])->find(); $item['address'] = $address ?: []; } else { $item['address'] = []; } } $pageCount = Db::name('store_order') ->alias('o') ->leftJoin('user u', 'u.uid = o.uid') ->where($where) ->count(); $result = UtilService::getParam([ 'id', 'order_id', 'uid', 'mobile', 'nickname', 'real_name', 'tel', 'address', 'cart_info', 'total_price', 'pay_price', 'total_postage', 'pay_postage', 'paid', 'status', ['create_time', 'create_time', 'date("Y-m-d H:i:s",$1)'], ['pay_time', 'pay_time', function ($item) { return empty($item) ? "-" : date('Y-m-d H:i:s', $item); }], ['confirm_time', 'confirm_time', function ($item) { return empty($item) ? "-" : date('Y-m-d H:i:s', $item); }], ], $order); return app('json')->success([ 'list' => $result, 'pageCount' => $pageCount, 'pageSize' => $pageSize, 'page' => $post['page'], ]); } /** * 商城订单详情 * @param Request $request */ public function info(Request $request) { $post = UtilService::getMore([ ['id', '', 'empty', '参数错误'], ], $request); $order = Db::name('store_order') ->alias('o') ->field('o.*,u.mobile,u.nickname') ->leftJoin('user u', 'u.uid = o.uid') ->where('o.id', $post['id']) ->find(); if (empty($order)) { return app('json')->fail('订单不存在'); } $data = $order; //获取订单商品 $cartInfo = Db::name('store_order_cart_info') ->where('oid', $data['id']) ->select() ->toArray(); // 解析 cart_info JSON 字段并合并到外层 foreach ($cartInfo as &$item) { if (!empty($item['cart_info'])) { $innerCartInfo = json_decode($item['cart_info'], true); unset($item['cart_info']); $item = array_merge($item, $innerCartInfo); } else { unset($item['cart_info']); } } $data['cart_info'] = $cartInfo; return app('json')->success($data); } /** * 发货 * @param Request $request */ public function fahuo(Request $request) { $post = UtilService::getMore([ ['id', '', 'empty', '参数错误'], ['express_type', ''], ['express_code', ''], ['express_num', ''], ], $request); $order = Db::name('store_order') ->where('id', $post['id']) ->where('status', 1) ->find(); if (empty($order)) { return app('json')->fail('当前订单不可发货'); } if (empty($post['express_num'])) { return app('json')->fail('请输入物流单号'); } $result = Db::name('store_order')->where('id', $post['id'])->update([ 'status' => 2, 'express_type' => $post['express_type'], 'express_code' => $post['express_code'], 'express_num' => $post['express_num'], 'delivery_time' => time(), ]); if ($result) { return app('json')->success('操作成功'); } else { return app('json')->fail('操作失败'); } } /** * 订单备注 * @param Request $request */ public function mono(Request $request) { $post = UtilService::getMore([ ['id', '', 'empty', '参数错误'], ['remark', '', 'empty', '请输入备注内容'], ], $request); $order = Db::name('store_order')->where('id', $post['id'])->find(); if (empty($order)) { return app('json')->fail('订单不存在'); } $result = Db::name('store_order')->where('id', $post['id'])->update([ 'remark' => $post['remark'], ]); if ($result) { return app('json')->success('操作成功'); } else { return app('json')->fail('操作失败'); } } }