diff --git a/app/controller/api/dataview/Merchant.php b/app/controller/api/dataview/Merchant.php index 4e6b353f..5ea2088c 100644 --- a/app/controller/api/dataview/Merchant.php +++ b/app/controller/api/dataview/Merchant.php @@ -2,6 +2,7 @@ namespace app\controller\api\dataview; +use app\common\dao\system\merchant\MerchantDao; use app\common\model\store\order\StoreOrderProduct; use app\common\model\store\product\Product as model; use app\common\model\user\UserVisit; @@ -45,7 +46,34 @@ class Merchant extends BaseController { [$page, $limit] = $this->getPage(); $where = $this->request->params([ 'status', 'statusTag', 'is_trader', 'category_id', 'type_id', 'area_id', 'street_id']); - return app('json')->success($this->repository->lst($where, $page, $limit)); + $dao = new MerchantDao(); + $query = $dao->search($where); + $count = $query->where(function ($query) { + if ($this->streetCode != '') { + $query->where('street_id', $this->streetCode); + } else { + $query->where('area_id', $this->areaCode); + } + })->count($dao->getPk()); + $list = $query->page($page, $limit)->setOption('field', []) + ->where(function ($query) { + if ($this->streetCode != '') { + $query->where('street_id', $this->streetCode); + } else { + $query->where('area_id', $this->areaCode); + } + }) + ->with([ + 'admin' => function ($query) { + $query->field('mer_id,account'); + }, + 'merchantCategory', + 'merchantType' + ]) + ->order('mer_id','desc') + ->field('sort, mer_id, mer_name, real_name, mer_phone, mer_address, mark, status, create_time,is_best,is_trader,type_id,category_id,copy_product_num,export_dump_num,is_margin,margin,mer_avatar')->select(); + + return app('json')->success(compact('count', 'list')); } // 商户统计 @@ -94,19 +122,29 @@ class Merchant extends BaseController $startDate = $this->request->param('start_date'); $endDate = $this->request->param('end_date'); $merId = $this->request->param('mer_id'); - $res = Cache::store('file')->remember(self::class . '@merchantProductRanking' . $merId. $startDate. $endDate, function () use ($repository, $startDate, $endDate, $merId) { - $list = StoreOrderProduct::getDB()->alias('A')->leftJoin('StoreOrder B', 'A.order_id = B.order_id') - ->field(\think\facade\Db::raw('sum(A.product_num) as total,A.product_id,cart_info')) - ->whereBetweenTime('B.pay_time', $startDate, $endDate) - ->where('B.mer_id', $merId) - ->where('B.paid', 1)->group('A.product_id')->limit(30)->order('total DESC')->select(); - $totalCount = 0; - foreach ($list as $item) { - $totalCount += $item['total']; - } - return compact('list', 'totalCount'); - }, 2000 + random_int(600, 1200)); - return app('json')->success($res); + $endDate = date("$endDate H:i:s", time()); +// $res = Cache::store('file')->remember(self::class . '@merchantProductRanking' . $merId. $startDate. $endDate, function () use ($repository, $startDate, $endDate, $merId) { +// $list = StoreOrderProduct::getDB()->alias('A')->leftJoin('StoreOrder B', 'A.order_id = B.order_id') +// ->field(\think\facade\Db::raw('sum(A.product_num) as total,A.product_id,cart_info')) +// ->whereBetweenTime('B.pay_time', $startDate, $endDate) +// ->where('B.mer_id', $merId) +// ->where('B.paid', 1)->group('A.product_id')->limit(30)->order('total DESC')->select(); +// $totalCount = 0; +// foreach ($list as $item) { +// $totalCount += $item['total']; +// } +// return compact('list', 'totalCount'); +// }, 2000 + random_int(600, 1200)); + $list = StoreOrderProduct::getDB()->alias('A')->leftJoin('StoreOrder B', 'A.order_id = B.order_id') + ->field(\think\facade\Db::raw('sum(A.product_num) as total,A.product_id,cart_info')) + ->whereBetweenTime('B.pay_time', $startDate, $endDate) + ->where('B.mer_id', $merId) + ->where('B.paid', 1)->group('A.product_id')->limit(30)->order('total DESC')->select(); + $totalCount = 0; + foreach ($list as $item) { + $totalCount += $item['total']; + } + return app('json')->success(compact('list', 'totalCount')); } public function merchantProductVisit(UserVisitRepository $repository) @@ -114,20 +152,31 @@ class Merchant extends BaseController $startDate = $this->request->param('start_date'); $endDate = $this->request->param('end_date'); $merId = $this->request->param('mer_id'); - $res = Cache::store('file')->remember(self::class . '@merchantProductVisit' . $merId . $startDate. $endDate, function () use ($repository, $startDate, $endDate, $merId) { - $list = UserVisit::getDB()->alias('A')->join('StoreProduct B', 'A.type_id = B.product_id') - ->join('Merchant C', 'C.mer_id = B.mer_id') - ->field(\think\facade\Db::raw('count(A.type_id) as total,B.image,B.store_name')) - ->whereBetweenTime('A.create_time', $startDate, $endDate) - ->where('A.type', 'product')->where('B.mer_id', $merId)->group('A.type_id')->order('total DESC') - ->limit(30)->select(); - $totalCount = 0; - foreach ($list as $item) { - $totalCount += $item['total']; - } - return compact('list', 'totalCount'); - }, 2000 + random_int(600, 1200)); - return app('json')->success($res); + $endDate = date("$endDate H:i:s", time()); +// $res = Cache::store('file')->remember(self::class . '@merchantProductVisit' . $merId . $startDate. $endDate, function () use ($repository, $startDate, $endDate, $merId) { +// $list = UserVisit::getDB()->alias('A')->join('StoreProduct B', 'A.type_id = B.product_id') +// ->join('Merchant C', 'C.mer_id = B.mer_id') +// ->field(\think\facade\Db::raw('count(A.type_id) as total,B.image,B.store_name')) +// ->whereBetweenTime('A.create_time', $startDate, $endDate) +// ->where('A.type', 'product')->where('B.mer_id', $merId)->group('A.type_id')->order('total DESC') +// ->limit(30)->select(); +// $totalCount = 0; +// foreach ($list as $item) { +// $totalCount += $item['total']; +// } +// return compact('list', 'totalCount'); +// }, 2000 + random_int(600, 1200)); + $list = UserVisit::getDB()->alias('A')->join('StoreProduct B', 'A.type_id = B.product_id') + ->join('Merchant C', 'C.mer_id = B.mer_id') + ->field(\think\facade\Db::raw('count(A.type_id) as total,B.image,B.store_name')) + ->whereBetweenTime('A.create_time', $startDate, $endDate) + ->where('A.type', 'product')->where('B.mer_id', $merId)->group('A.type_id')->order('total DESC') + ->limit(30)->select(); + $totalCount = 0; + foreach ($list as $item) { + $totalCount += $item['total']; + } + return app('json')->success(compact('list', 'totalCount')); } public function merchantProductCart(ProductRepository $repository) @@ -135,21 +184,31 @@ class Merchant extends BaseController $startDate = $this->request->param('start_date'); $endDate = $this->request->param('end_date'); $merId = $this->request->param('mer_id'); - $res = Cache::store('file')->remember(self::class . '@merchantProductCart' . $merId . $startDate. $endDate, function () use ($repository, $startDate, $endDate, $merId) { - $list = \app\common\model\store\product\Product::getDB()->alias('A')->leftJoin('StoreCart B', 'A.product_id = B.product_id') - ->field(\think\facade\Db::raw('sum(B.cart_num) as total,A.product_id,A.store_name,A.image')) - ->whereBetweenTime('B.create_time', $startDate, $endDate) - ->where('A.mer_id', $merId) - ->where('B.product_type', 0)->where('B.is_pay', 0)->where('B.is_del', 0) - ->where('B.is_new', 0)->where('B.is_fail', 0)->group('A.product_id')->limit(30)->order('total DESC')->select(); - $totalCount = 0; - foreach ($list as $item) { - $totalCount += $item['total']; - } - return compact('list', 'totalCount'); - }, 2000 + random_int(600, 1200)); - - return app('json')->success($res); + $endDate = date("$endDate H:i:s", time()); +// $res = Cache::store('file')->remember(self::class . '@merchantProductCart' . $merId . $startDate. $endDate, function () use ($repository, $startDate, $endDate, $merId) { +// $list = \app\common\model\store\product\Product::getDB()->alias('A')->leftJoin('StoreCart B', 'A.product_id = B.product_id') +// ->field(\think\facade\Db::raw('sum(B.cart_num) as total,A.product_id,A.store_name,A.image')) +// ->whereBetweenTime('B.create_time', $startDate, $endDate) +// ->where('A.mer_id', $merId) +// ->where('B.product_type', 0)->where('B.is_pay', 0)->where('B.is_del', 0) +// ->where('B.is_new', 0)->where('B.is_fail', 0)->group('A.product_id')->limit(30)->order('total DESC')->select(); +// $totalCount = 0; +// foreach ($list as $item) { +// $totalCount += $item['total']; +// } +// return compact('list', 'totalCount'); +// }, 2000 + random_int(600, 1200)); + $list = \app\common\model\store\product\Product::getDB()->alias('A')->leftJoin('StoreCart B', 'A.product_id = B.product_id') + ->field(\think\facade\Db::raw('sum(B.cart_num) as total,A.product_id,A.store_name,A.image')) + ->whereBetweenTime('B.create_time', $startDate, $endDate) + ->where('A.mer_id', $merId) + ->where('B.product_type', 0)->where('B.is_pay', 0)->where('B.is_del', 0) + ->where('B.is_new', 0)->where('B.is_fail', 0)->group('A.product_id')->limit(30)->order('total DESC')->select(); + $totalCount = 0; + foreach ($list as $item) { + $totalCount += $item['total']; + } + return app('json')->success(compact('list', 'totalCount')); } public function merchant() diff --git a/app/controller/api/dataview/Order.php b/app/controller/api/dataview/Order.php index c0593432..2730f1ef 100755 --- a/app/controller/api/dataview/Order.php +++ b/app/controller/api/dataview/Order.php @@ -456,6 +456,14 @@ class Order extends BaseController ->field('p.product_id, p.store_name, p.image, COUNT(o.`order_id`) AS total_sales') ->join('store_order_product op', 'p.product_id = op.product_id') ->join('store_order o', 'op.order_id = o.order_id') + ->join('product_order_log og', 'o.order_id = og.order_id') + ->where(function($query) { + if ($this->streetCode != '') { + $query->where('og.street_code', $this->streetCode); + } else { + $query->where('og.district_code', $this->areaCode); + } + }) ->group('p.product_id') ->order('total_sales DESC') ->limit(10) @@ -470,6 +478,13 @@ class Order extends BaseController $merchantRankingList = Db::name('store_order')->alias('o') ->field('m.`mer_id`, m.`mer_name`, m.mini_banner, COUNT(o.`order_id`) AS total_sales') ->join('merchant m', 'o.`mer_id` = m.`mer_id`') + ->where(function($query) { + if ($this->streetCode != '') { + $query->where('m.street_id', $this->streetCode); + } else { + $query->where('m.area_id', $this->areaCode); + } + }) ->group('m.mer_id') ->order('total_sales DESC') ->limit(10) @@ -544,7 +559,14 @@ class Order extends BaseController 'user' => function ($query) { $query->field('uid,nickname,avatar'); }, - ]); + ])->join('product_order_log og', 'StoreOrder.order_id = og.order_id') + ->where(function($query) { + if ($this->streetCode != '') { + $query->where('og.street_code', $this->streetCode); + } else { + $query->where('og.district_code', $this->areaCode); + } + }); $count = $query->count(); $list = $query->page($page, $limit)->select(); return app('json')->success(compact('count', 'list'));