Forráskód Böngészése

修改给公司账号分配小程序的逻辑

zqwang 1 éve
szülő
commit
decd5363b2

+ 1 - 0
modules/Common/Errors/Errors.php

@@ -33,4 +33,5 @@ class Errors
     public const REQUEST_HTTP_STATUS_ERROR = [500401, '请求上游接口返回http状态码有误'];
     public const REQUEST_CODE_STATUS_ERROR = [500402, '请求上游接口返回code状态码有误'];
     public const SYNC_WECHAT_NOT_OK = [500302, '剧集没有成功同步到微信'];
+    public const  MINIPROGRAM_OWNER_ACCOUNT_ROLE_ERROR= [5000501, '所分配的账号不是投放公司账号'];
 }

+ 45 - 3
modules/Manage/Http/Controllers/MiniprogramController.php

@@ -211,7 +211,52 @@ class MiniprogramController extends CatchController
         if(!$miniprogram_info || $miniprogram_info->status == 0){
             ChannelBusinessException::throwError(Errors::MINIPROGRAM_STATUS_ERROR);
         }
+        $userContext = $this->getUserContext(null);
+        if ($userContext['loginUserRoles']->contains(self::COMPANY_ROLE)) {
+            // 公司给投手分配小程序
+            return  $this->allocationStoreCompany($miniprogram_id,$uids,$action);
+        }else{
+            $companyId = explode(',',$uids)[0] ?: 0;
+            if (empty($companyId)){
+                ChannelBusinessException::throwError(Errors::PARAM_EMPTY);
+            }
+            if(!UserService::userHasRoles($companyId,[self::COMPANY_ROLE])){
+                ChannelBusinessException::throwError(Errors::MINIPROGRAM_OWNER_ACCOUNT_ROLE_ERROR);
+            }
+
+            // 小程序原拥有公司账号id
+            $ownerCompanyId = DB::table('user_has_miniprograms as up')
+                ->leftJoin('user_has_roles as ur','ur.user_id','=','up.uid')
+                ->leftJoin('roles as r','r.id','=','ur.role_id')
+                ->where('up.is_enabled',1)
+                ->where('up.miniprogram_id',$miniprogram_id)
+                ->where('r.identify','company')->orderBy('up.id','desc')
+                ->value('up.uid');
+
+            if ($companyId == $ownerCompanyId){
+                // 相同则不修改
+                return  true;
+            }
+            if ($ownerCompanyId >  0){
+                //  若小程序已经分配给其他公司
+               $this->userHasMiniprograms::where('miniprogram_id',$miniprogram_id)->update(['is_enabled',0]);
+            }
+            $result = $this->userHasMiniprograms->where('uid',$companyId)->where('miniprogram_id',$miniprogram_id)->first();
+            if($result){
+                if($result->is_enabled == 0){
+                    $result->is_enabled = 1;
+                    $result->save();
+                }
+                return true;
+            }
+          return  $this->userHasMiniprograms->create([
+                'uid'=>$companyId,'miniprogram_id'=>$miniprogram_id,'is_enabled'=>1
+            ]);
+        }
+
+    }
 
+    protected  function allocationStoreCompany($miniprogram_id,$uids,$action){
         return collect(explode(',',$uids))->filter(function (int $value, int $key) use($miniprogram_id,$action){
             $user_access = UserService::userHasRoles($value,[self::COMPANY_ROLE,self::OPTIMIZER_ROLE]);
             //只能分配给投手公司或者优化师
@@ -238,10 +283,7 @@ class MiniprogramController extends CatchController
             }
             return false;
         });
-
     }
-
-
     /**
      * 获取投手公司和小程序的绑定关系,用于前端数据回显
      * @param [type] $miniprogram_id