| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 |
- <?php
- declare (strict_types = 1);
- namespace app\system\controller;
- use app\BaseController;
- use app\model\api\StoreOrder;
- use app\model\api\StoreOrderCartInfo;
- use app\Request;
- use library\services\UtilService;
- use think\facade\Db;
- class Shop extends BaseController
- {
- /**
- * 商城订单统计
- * @param Request $request
- */
- public function total(Request $request)
- {
- $post = UtilService::getMore([
- ['status', ''],
- ], $request);
- $order = Db::name('store_order');
- $totalWhere = [];
- if ($post['status'] !== '' && in_array((string)$post['status'], ["0", "1", "2", "3", "-1"])) {
- $totalWhere[] = ['status', '=', (int)$post['status']];
- }
- //全部
- $orderCount = $order->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');
- $data = $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();
- $pageCount = $order->where($where)->count();
- $result = UtilService::getParam([
- 'id',
- 'order_id',
- 'uid',
- 'mobile',
- 'nickname',
- 'real_name',
- 'phone',
- 'province',
- 'city',
- 'district',
- 'detail',
- 'total_price',
- 'pay_price',
- 'total_postage',
- 'pay_postage',
- 'paid',
- 'status',
- ['time', '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);
- }],
- ], $data);
- 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->toArray();
- //获取订单商品
- $cartInfo = Db::name('store_order_cart_info')
- ->where('oid', $data['id'])
- ->select()
- ->toArray();
- $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('操作失败');
- }
- }
- }
|