Sfoglia il codice sorgente

allocation miniprogram fix

zhaoyang 1 anno fa
parent
commit
18776b4dac

+ 1 - 1
modules/Channel/Http/Controllers/PayTemplateController.php

@@ -43,7 +43,7 @@ class PayTemplateController extends CatchController
         if($name){
         if($name){
             $where[] = ['name','like','%'.$name.'%']; 
             $where[] = ['name','like','%'.$name.'%']; 
         }
         }
-        return $this->payTemplate->where($where)->paginate(20);
+        return $this->payTemplate->orderBy('id','desc')->where($where)->paginate(20);
     }
     }
 
 
 
 

+ 12 - 1
modules/Channel/Services/User/UserService.php

@@ -25,11 +25,22 @@ class UserService {
 
 
 
 
     public static function userHasRole(int $uid,string $identify){
     public static function userHasRole(int $uid,string $identify){
+
+        return self::userHasRoles($uid,[$identify]);
+    }
+
+    public static function userHasRoles(int $uid,array $identify){
         return Users::join('user_has_roles','user_has_roles.user_id','=','users.id')
         return Users::join('user_has_roles','user_has_roles.user_id','=','users.id')
         ->join('roles','roles.id','=','user_has_roles.role_id')
         ->join('roles','roles.id','=','user_has_roles.role_id')
         ->where('users.id',$uid)
         ->where('users.id',$uid)
-        ->where('roles.identify',$identify)
+        ->whereIn('roles.identify',$identify)
         ->count();
         ->count();
     }
     }
 
 
+    public static function getOptimizers($pid,array $field){
+        return Users::where('pid',$pid)->where('status',1)->select($field)->get();
+    }
+    
+
+
 }
 }

+ 27 - 10
modules/Manage/Http/Controllers/UserMiniprogramController.php

@@ -2,19 +2,26 @@
 
 
 namespace Modules\Manage\Http\Controllers;
 namespace Modules\Manage\Http\Controllers;
 
 
-use Catch\Base\CatchController;
+use Log;
 use Illuminate\Http\Request;
 use Illuminate\Http\Request;
-use Modules\Channel\Models\UserHasMiniprograms;
-use Modules\Channel\Services\User\UserService;
-use Modules\Channel\Exceptions\ChannelBusinessException;
+use Catch\Base\CatchController;
 use Modules\Common\Errors\Errors;
 use Modules\Common\Errors\Errors;
 use Modules\Manage\Models\Miniprogram;
 use Modules\Manage\Models\Miniprogram;
-use Log;
+use Modules\User\Http\Controllers\UserTrait;
+use Modules\Channel\Services\User\UserService;
+use Modules\Channel\Models\UserHasMiniprograms;
+use Modules\Channel\Exceptions\ChannelBusinessException;
 
 
 class UserMiniprogramController extends CatchController
 class UserMiniprogramController extends CatchController
 {
 {
+    use UserTrait;
 
 
     const  COMPANY_ROLE = 'company';
     const  COMPANY_ROLE = 'company';
+    const  ADMINISTRATOR_ROLE = 'administrator';
+    const  OPTIMIZER_ROLE = 'optimizer';
+
+
+
     public function __construct(
     public function __construct(
         protected readonly UserHasMiniprograms $userHasMiniprograms,
         protected readonly UserHasMiniprograms $userHasMiniprograms,
         protected readonly Miniprogram $miniprogram
         protected readonly Miniprogram $miniprogram
@@ -25,7 +32,7 @@ class UserMiniprogramController extends CatchController
 
 
 
 
     /**
     /**
-     * 绑定小程序和投放公司的关系
+     * 绑定小程序和投放公司的关系 或者投放公司把小程序分配给优化师
      * @param [type] $miniprogram_id 
      * @param [type] $miniprogram_id 
      * @param Request $request  uid=2,3,4,5 actison=on|off on:分配,off取消分配
      * @param Request $request  uid=2,3,4,5 actison=on|off on:分配,off取消分配
      * @return array
      * @return array
@@ -33,7 +40,11 @@ class UserMiniprogramController extends CatchController
      */
      */
     public function allocationStore($miniprogram_id,Request $request)
     public function allocationStore($miniprogram_id,Request $request)
     {
     {
-        $uids  = $request->post('uids');
+        $uid = $this->getLoginUser()->id;
+        if(!UserService::userHasRoles($uid,[self::COMPANY_ROLE,self::ADMINISTRATOR_ROLE])){
+            ChannelBusinessException::throwError(Errors::PARAM_EMPTY);
+        }
+        $uids = $request->post('uids');
         $action = $request->post('action');
         $action = $request->post('action');
         if(empty($miniprogram_id) || empty($uids) || empty($action) || !in_array($action,['on','off'])){
         if(empty($miniprogram_id) || empty($uids) || empty($action) || !in_array($action,['on','off'])){
             ChannelBusinessException::throwError(Errors::PARAM_EMPTY);
             ChannelBusinessException::throwError(Errors::PARAM_EMPTY);
@@ -45,8 +56,8 @@ class UserMiniprogramController extends CatchController
         }
         }
 
 
         return collect(explode(',',$uids))->filter(function (int $value, int $key) use($miniprogram_id,$action){
         return collect(explode(',',$uids))->filter(function (int $value, int $key) use($miniprogram_id,$action){
-            $user_access = UserService::userHasRole($value,self::COMPANY_ROLE);
-            //只能分配给投手公司
+            $user_access = UserService::userHasRoles($value,[self::COMPANY_ROLE,self::OPTIMIZER_ROLE]);
+            //只能分配给投手公司或者优化师
             if($user_access){
             if($user_access){
                 $result = $this->userHasMiniprograms->where('uid',$value)->where('miniprogram_id',$miniprogram_id)->first();
                 $result = $this->userHasMiniprograms->where('uid',$value)->where('miniprogram_id',$miniprogram_id)->first();
                 if($action == 'off'){
                 if($action == 'off'){
@@ -89,7 +100,13 @@ class UserMiniprogramController extends CatchController
      * 
      * 
      */
      */
     public function getAllocationInfo($miniprogram_id){
     public function getAllocationInfo($miniprogram_id){
-        $all_company_account = UserService::listByRole(self::COMPANY_ROLE,['users.username','users.id']);
+        $uid = $this->getLoginUser()->id;
+        if(UserService::userHasRole($uid,self::ADMINISTRATOR_ROLE)){
+            $all_company_account = UserService::listByRole(self::COMPANY_ROLE,['users.username','users.id']);
+        }else{
+            $all_company_account = UserService::getOptimizers($uid,['users.username','users.id']);
+        }
+       
         $result = $all_company_account->map(function ($item,$key) use($miniprogram_id) {
         $result = $all_company_account->map(function ($item,$key) use($miniprogram_id) {
             $info = $this->userHasMiniprograms->where('uid',$item->id)->where('miniprogram_id',$miniprogram_id)->where('is_enabled',1)->count();
             $info = $this->userHasMiniprograms->where('uid',$item->id)->where('miniprogram_id',$miniprogram_id)->where('is_enabled',1)->count();
             if($info){
             if($info){