|
@@ -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
|