diff --git a/app/Domains/Stats/Http/Controllers/OrderController.php b/app/Domains/Stats/Http/Controllers/OrderController.php index 202a2456..0be1fe2c 100644 --- a/app/Domains/Stats/Http/Controllers/OrderController.php +++ b/app/Domains/Stats/Http/Controllers/OrderController.php @@ -3,17 +3,20 @@ namespace App\Domains\Stats\Http\Controllers; use App\Core\Controller; use Illuminate\Http\Request; +use App\Domains\Stats\Services\OrderService; -class CompanyReportController extends Controller +class OrderController extends Controller { protected $request; + protected $orderService; /** * 构造函数,自动注入. */ - public function __construct(Request $request) + public function __construct(Request $request, OrderService $orderService) { $this->request = $request; + $this->orderService = $orderService; } /** @@ -21,9 +24,14 @@ class CompanyReportController extends Controller * * @return \Illuminate\Http\Response */ - public function index() + public function index($type) { - // + $conditions = $this->request->all(); + $conditions['type'] = $type; + + $res = $this->OrderService->index($conditions); + + return res($res, '订单统计', 201); } diff --git a/app/Domains/Stats/Routes/api.php b/app/Domains/Stats/Routes/api.php index 6d79400f..3d2e2dff 100644 --- a/app/Domains/Stats/Routes/api.php +++ b/app/Domains/Stats/Routes/api.php @@ -6,4 +6,7 @@ $router->group(['prefix' => 'stats', 'as' => 'stats', 'middleware' => ['adminAut $router->get('/company-count', ['as' => 'company-count.index', 'uses' => 'CompanyCountController@index']); $router->get('/company-count/export', ['as' => 'company-count.export', 'uses' => 'CompanyCountController@export']); + // 订单统计 + $router->get('/order/{type}', ['as' => 'order.index', 'uses' => 'OrderController@index']); + }); diff --git a/app/Domains/Stats/Services/OrderService.php b/app/Domains/Stats/Services/OrderService.php index c923ea29..0283d318 100644 --- a/app/Domains/Stats/Services/OrderService.php +++ b/app/Domains/Stats/Services/OrderService.php @@ -43,17 +43,19 @@ class OrderService extends Service * * @return void */ - public function index(array $conditions = []) + public function index($type, array $conditions = []) { + $conditions['type'] = $type; $conditions['source'] = 1; $companies = $this->companyRepository->withTrashed()->get()->pluck('name', 'id')->toArray(); $packages = $this->packageRepository->withTrashed()->get()->pluck('name', 'id')->toArray(); $select = [ - 'id', + DB::raw("string_agg(DISTINCT id, ',') as id"), 'company_id', 'package_id', + 'product_id', 'unit_price', 'pay_channel', DB::raw('SUM(counts) as counts'), @@ -88,8 +90,7 @@ class OrderService extends Service $companies = $this->companyRepository->withTrashed()->get()->pluck('name', 'id')->toArray(); $packages = $this->packageRepository->withTrashed()->get()->pluck('name', 'id')->toArray(); - - $repository->withConditons() + $repository->withConditions($conditions)->applyConditions()->paginate($conditions['limit']); $select = [ 'id', diff --git a/app/Domains/Virtual/Http/Controllers/OrderController.php b/app/Domains/Virtual/Http/Controllers/OrderController.php index 8a163796..37701d72 100644 --- a/app/Domains/Virtual/Http/Controllers/OrderController.php +++ b/app/Domains/Virtual/Http/Controllers/OrderController.php @@ -34,7 +34,6 @@ class OrderController extends Controller $conditions = $this->request->all(); $conditions['limit'] = $this->request->get('limit', 20); $conditions['source'] = 0; - $conditions['type'] = 0; $orders = $this->orderService->paginate($conditions); diff --git a/database/seeds/PermissionSeeder.php b/database/seeds/PermissionSeeder.php index ec031996..d36cd255 100644 --- a/database/seeds/PermissionSeeder.php +++ b/database/seeds/PermissionSeeder.php @@ -101,7 +101,7 @@ class PermissionSeeder extends Seeder 'open' => 3, 'children' => [ [ - 'name' => 'virtual.packages.index', 'title' => '基础套餐', 'path' => '/packages?type=0', 'icon' => 'ios-cube', 'type' => 0, 'open' => 3, + 'name' => 'virtual.packages.index', 'title' => '基础套餐', 'path' => '/packages/0', 'icon' => 'ios-cube', 'type' => 0, 'open' => 3, 'children' => [ ['name' => 'virtual.packages.create', 'title' => '创建', 'description' => 'create', 'type' => 1], ['name' => 'virtual.packages.update', 'title' => '编辑', 'description' => 'update', 'type' => 1], @@ -135,7 +135,7 @@ class PermissionSeeder extends Seeder 'open' => 3, 'children' => [ [ - 'name' => 'virtual.orders.index', 'title' => '销售订单', 'path' => '/orders?type=0', 'icon' => 'logo-yen', 'type' => 0, 'open' => 3, + 'name' => 'virtual.orders.index', 'title' => '销售订单', 'path' => '/orders/0', 'icon' => 'logo-yen', 'type' => 0, 'open' => 3, 'children' => [ ['name' => 'virtual.orders.show', 'title' => '查看', 'description' => 'show', 'type' => 1], ['name' => 'virtual.orders.create', 'title' => '创建', 'description' => 'create', 'type' => 1], diff --git a/frontend/src/mixins/index.js b/frontend/src/mixins/index.js index 37b13c32..89fc5040 100644 --- a/frontend/src/mixins/index.js +++ b/frontend/src/mixins/index.js @@ -1,9 +1,7 @@ import { mapGetters } from 'vuex'; -import { - objectDot -} from 'service/util'; +import { objectDot } from 'service/util'; import default_head from 'images/head.png'; export default { diff --git a/frontend/src/router/routes.js b/frontend/src/router/routes.js index 7e07f3ec..648dee6a 100644 --- a/frontend/src/router/routes.js +++ b/frontend/src/router/routes.js @@ -20,8 +20,8 @@ const routes = [ { path: '/companies', name: 'Companies', component: load('virtual/companies/index'), meta: { title: '企业管理' } }, { path: '/company/accounts', name: 'CompanyAccounts', component: load('virtual/company_accounts/index'), meta: { title: '账号管理' } }, { path: '/products', name: 'Products', component: load('virtual/products/index'), meta: { title: '定价管理' } }, - { path: '/orders', name: 'Orders', component: load('virtual/orders/index'), meta: { title: '订单列表' } }, - { path: '/packages', name: 'Packages', component: load('virtual/packages/index'), meta: { title: '套餐管理' } }, + { path: '/orders/:type', name: 'Orders', component: load('virtual/orders/index'), meta: { title: '订单列表' } }, + { path: '/packages/:type', name: 'Packages', component: load('virtual/packages/index'), meta: { title: '套餐管理' } }, { path: '/cards', name: 'Cards', component: load('virtual/cards/index'), meta: { title: '客户列表' } }, { path: '/exports', name: 'StatsExports', component: load('exports/index'), meta: { title: '导出记录' } }, { path: '/stats/company-count', name: 'StatsCompanyCount', component: load('stats/company-count/index'), meta: { title: '企业统计' } } diff --git a/frontend/src/service/util.js b/frontend/src/service/util.js index 6aa6767f..55db40e1 100644 --- a/frontend/src/service/util.js +++ b/frontend/src/service/util.js @@ -136,3 +136,16 @@ export function objectDot(object, prepend = '') { return results; } + +/** + * 合计数组对象 + * @param {Array}} array + * @param {String} key + */ +export function sumBy(array, key) { + return array.map((item) => { + return item[key]; + }).reduce((acc, cur) => { + return acc + cur; + }); +}; diff --git a/frontend/src/views/stats/company-count/index.vue b/frontend/src/views/stats/company-count/index.vue index 60f84cce..61ea592a 100644 --- a/frontend/src/views/stats/company-count/index.vue +++ b/frontend/src/views/stats/company-count/index.vue @@ -51,11 +51,37 @@
总计 |
+ + | {{stats.total}} |
+ {{stats.counts}} |
+ {{stats.renewed_counts}} |
+ {{stats.valid_counts}} |
+ + |
---|
{{message}}
\n\t选择图标
\n\n{{CONFIG.title}}
\n \n