Browse Source

投入产出增加商户筛选

liuzejian 1 year ago
parent
commit
ec3e2805fd

+ 29 - 0
modules/Channel/Http/Controllers/CompanyUserController.php

@@ -0,0 +1,29 @@
+<?php
+
+namespace Modules\Channel\Http\Controllers;
+
+use Catch\Base\CatchController;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
+
+class CompanyUserController extends CatchController
+{
+    /**
+     * 商户列表
+     * @param Request $request
+     */
+    public function list(Request $request) {
+        $username = $request->input('username');
+        return DB::table('users')
+            ->join('user_has_roles','users.id', 'user_has_roles.user_id')
+            ->when($username, function ($query, $username){
+                return $query->where('users.username', 'like', '%'. $username. '%');
+            })
+            ->where([
+                'user_has_roles.role_id' => 1,
+                'users.status' => 1,
+                'users.deleted_at' => 0
+            ])->select('users.username', 'users.id')
+            ->get();
+    }
+}

+ 6 - 0
modules/Channel/routes/route.php

@@ -2,8 +2,10 @@
 
 use Illuminate\Support\Facades\Route;
 use Modules\Channel\Http\Controllers\AdvertiserController;
+use Modules\Channel\Http\Controllers\CompanyUserController;
 use Modules\Channel\Http\Controllers\PayTemplateController;
 use Modules\Channel\Http\Controllers\UserMiniprogramController;
+use Modules\Jiesuan\Services\CompanyUserMoneyService;
 
 Route::prefix('channel')->group(function () {
     Route::post('advertiser/add', [AdvertiserController::class, 'addAdvertiser']);
@@ -47,5 +49,9 @@ Route::prefix('channel')->group(function () {
     Route::any('promotions/options', [\Modules\Channel\Http\Controllers\OrdersController::class, 'promotionsOptions']);
     Route::any('miniprogram/use_list', [\Modules\Channel\Http\Controllers\OrdersController::class, 'userUseList']);
     Route::any('promotions/users', [\Modules\Channel\Http\Controllers\OrdersController::class, 'promotionsUsers']);
+
+    Route::prefix('companyUser')->group(function(){
+        Route::get('list', [CompanyUserController::class, 'list']);
+    });
 });
 

+ 9 - 4
modules/Statistic/Http/Controllers/ROITJController.php

@@ -19,7 +19,8 @@ class ROITJController extends CatchController
             'start_at' => 'nullable|date_format:Y-m-d',
             'end_at' => 'nullable|date_format:Y-m-d|after_or_equal:start_at',
             'ranse_id' => 'nullable|integer|min:1',
-            'miniprogram_id' => 'nullable|integer|min:1'
+            'miniprogram_id' => 'nullable|integer|min:1',
+            'puser_id' => 'nullable|integer|min:1'
         ]);
 
         $startAt = $request->input('start_at');
@@ -35,6 +36,9 @@ class ROITJController extends CatchController
         if ($roles->contains('optimizer')) {
             $userId = $this->getLoginUserId();
         }
+        if($roles->contains('administrator')) {
+            $puserId = $request->input('puser_id');
+        }
 
         return DB::table('tj_promotion_day_charge')
             ->when($startAt, function ($query, $startAt) {
@@ -75,15 +79,16 @@ class ROITJController extends CatchController
                 ->whereIn('id', $result->pluck('miniprogram_id'))
                 ->select('id', 'name')
                 ->get()->keyBy('id');
-            $companyUserName = DB::table('users')
-                ->where('id', $result->first()->puser_id)->value('username');
+            $companyUserNames = DB::table('users')
+                ->whereIn('id', $result->pluck('puser_id'))->select('id','username')
+                ->get()->keyBy('id');
             $promotions = DB::table('promotions')
                 ->whereIn('id', $result->pluck('promotion_id'))
                 ->select('id', 'name')
                 ->get()->keyBy('id');
             foreach ($result as $item) {
                 // 商户
-                $item->company_username = $companyUserName;
+                $item->company_username = $companyUserNames->get($item->puser_id)->username ?? '';
                 // 优化师
                 $item->optimizer_name = $users->get($item->user_id)->username ?? '';
                 // 小程序

+ 19 - 0
tests/Channel/Http/Controllers/CompanyUserControllerTest.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace Tests\Channel\Http\Controllers;
+
+use Modules\Channel\Http\Controllers\CompanyUserController;
+use PHPUnit\Framework\TestCase;
+use Tests\UsedTestCase;
+
+class CompanyUserControllerTest extends UsedTestCase
+{
+
+    public function testList()
+    {
+        $res = $this->withHeaders([
+            'Authorization' => 'Bearer '. $this->token,
+        ])->json('get','http://localhost/api/channel/companyUser/list');
+        $this->dumpJson($res);
+    }
+}

+ 1 - 1
tests/Statistic/Http/Controllers/ROITJControllerTest.php

@@ -14,7 +14,7 @@ class ROITJControllerTest extends UsedTestCase
             'Authorization' => 'Bearer '. $this->token,
         ])->json('get','http://localhost/api/statistic/roi/list', [
 //            'user_id' => 10,
-            'limit' => 3,
+//            'limit' => 3,
 //            'start_at' => '2023-06-03',
 //            'end_at' => '2023-06-04',
         ]);

+ 2 - 2
tests/UsedTestCase.php

@@ -13,11 +13,11 @@ abstract class UsedTestCase extends BaseTestCase
     {
         parent::setUp(); // TODO: Change the autogenerated stub
         $tokenInfo = $this->post('http://localhost/api/login', [
-//            'email' => 'catch@admin.com',
+            'email' => 'catch@admin.com',
             'remember' => false,
 //            'email' => 'xiaoli@qq.com',
             'password' => 'catchadmin',
-            'email' => 'aa4@test.com',
+//            'email' => 'aa4@test.com',
         ])->json();
         $this->token = $tokenInfo['data']['token'];
     }