فهرست منبع

货主筛选问题,缓存错误
Service项目规范

LD 5 سال پیش
والد
کامیت
d4f5bff32b
4فایلهای تغییر یافته به همراه10 افزوده شده و 4 حذف شده
  1. 2 0
      app/Providers/AppServiceProvider.php
  2. 5 3
      app/Services/OwnerService.php
  3. 2 1
      app/Services/UserService.php
  4. 1 0
      文档/WAS项目规范.md

+ 2 - 0
app/Providers/AppServiceProvider.php

@@ -32,6 +32,7 @@ use App\Services\OrderService;
 use App\Services\OrderIssueWorkLoadService;
 use App\Services\OrderPackageCommoditiesService;
 use App\Services\OrderTrackingService;
+use App\Services\OwnerReportService;
 use App\Services\OwnerService;
 use App\Services\PackageService;
 use App\Services\PackageStatisticsService;
@@ -125,6 +126,7 @@ class AppServiceProvider extends ServiceProvider
         app()->singleton('OrderIssueService',OrderIssueService::class);
         app()->singleton('OrderService',OrderService::class);
         app()->singleton('OracleDocOrderHeaderService',OracleDOCOrderHeaderService::class);
+        app()->singleton('OwnerReportService',OwnerReportService::class);
         app()->singleton('RejectedBillService',RejectedBillService::class);
         app()->singleton('RejectedBillItemService',RejectedBillItemService::class);
         app()->singleton('StoreCheckingReceiveService',StoreCheckingReceiveService::class);

+ 5 - 3
app/Services/OwnerService.php

@@ -7,6 +7,7 @@ use App\Owner;
 use App\User;
 use Carbon\Carbon;
 use Illuminate\Database\Eloquent\Builder;
+use Illuminate\Support\Collection;
 use Illuminate\Support\Facades\Auth;
 
 Class OwnerService
@@ -22,10 +23,11 @@ Class OwnerService
      */
     public function getSelection(array $column = ['id', 'name'])
     {
-        return $this->cacheService->getOrExecute('OwnersAll_IdName'.md5(json_encode($column)),function()use($column){
-            return Owner::filterAuthorities()->select($column)->get();
+        $ownerIds=app('UserService')->getPermittingOwnerIds(Auth::user());
+        return $this->cacheService->getOrExecute('OwnersAll_IdName'.md5(json_encode($column).json_encode($ownerIds)),function()use($column,$ownerIds){
+            if(empty($ownerIds))return new Collection();
+            return Owner::query()->select($column)->whereIn('id', $ownerIds)->get();
         },config('cache.expirations.owners'));
-
     }
     public function getSelectionId($column = ['id'])
     {

+ 2 - 1
app/Services/UserService.php

@@ -24,7 +24,8 @@ class UserService
         });
         return !!$roles->intersect($thisRoles)->count();
     }
-    function getPermittingOwnerIds($user){
+    function getPermittingOwnerIds($user=null){
+        if(!$user)return [];
         return $this->cacheService->getOrExecute("user{$user['id']}->getPermittingOwnerIds",function()use($user){
             return $user->getPermittingOwnerIdsAttribute() ?? [];
         });

+ 1 - 0
文档/WAS项目规范.md

@@ -27,6 +27,7 @@
 	
 
 ##服务
+    服务不能传入Request,不能返回Builder。以可以明确测试,以及明确缓存
 	注册
 		必须在AppServiceProvicder中用app()->singleton绑定为单例;在控制器使用时可以在参数处依赖注入,也可以用app()实例化,使用app()实例化的,在其上用/**@var 类型 参数名 **/   进行注释以使其可以关联提示;服务中调用其他服务的,也用app()进行实例化并且用@var注释
 		注册字符串名称大写开头