| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 | <?phpnamespace App\Http\Controllers\Manage\OfficialAccount;use App\Modules\OfficialAccount\Models\ForceSubscribeUsers;use App\Modules\OfficialAccount\Models\OfficialAccount;use App\Modules\OfficialAccount\Models\UntieOfficialAccount;use App\Http\Controllers\Channel\BaseController;use App\Modules\OfficialAccount\Services\OfficialAccountService;use App\Http\Controllers\Manage\OfficialAccount\Transformers\OfficialAccountTransformer;use Illuminate\Http\Request;use GuzzleHttp\Client;use Redis;/** * 微信工具修改类 * @author zhoulingjie * */class WeChatToolsController extends BaseController{    /**     * @apiVersion 1.0.0     * @api {GET} OfficialAccount/add_public_templates 根据公共模板id添加模板     * @apiGroup OfficialAccount     * @apiName add_public_templates     * @apiParam   {String}  common_template_id 公共模板id.      */    function add_public_templates(Request $request){       $common_template_id = $request->has('common_template_id') ? $request->input('common_template_id') : '';       $test_appid = $request->has('test_appid') ? $request->input('test_appid') : '';               \Log::info('add_public_templates:'.$common_template_id);       if(empty($common_template_id)) {           return response()->error("PARAM_EMPTY");       }        $officail_accounts = OfficialAccountService::officialAuthAccounts(1,1);//         \Log::info($officail_accounts);        foreach ($officail_accounts as $officail_account){        	try {//         		if($officail_account->appid != 'wxdbc486f1b4f6a8c3') {//         			\Log::info('not_in:'.$officail_account->appid);//         			continue;//         		}        		$timestamp = time();        		$params = array("common_template_id"=>$common_template_id,'gzh_app_id'=>$officail_account->appid,"timestamp"=>$timestamp);        		$sign = get_sign($params);        		        		\Log::info('add_public_template_start,appid:'.$officail_account->appid);        		        		$mediaCustomerJson = $this->getUserClient()->request("GET","add_public_template",        				['query'=>['common_template_id'=>$common_template_id,'gzh_app_id'=>$officail_account->appid,'timestamp'=>$timestamp,'sign'=>$sign],'connect_timeout' => 10]        		)->getBody()->getContents();        		//\Log::info($mediaCustomerJson);        		\Log::info('add_public_template_end,appid:'.$officail_account->appid.' res:'.json_encode($mediaCustomerJson));        	        	} catch (\Exception $e) {        		\Log::info($e->getMessage());        	}        }        return response()->success(['status'=>'1']);    }        /**     * @apiVersion 1.0.0     * @api {GET} OfficialAccount/add_public_templates 根据公共模板id添加模板     * @apiGroup OfficialAccount     * @apiName add_public_templates     * @apiParam   {String}  common_template_id 公共模板id.     */    public function check_official_account_templates(){        	$officail_accounts = OfficialAccountService::officialAuthAccounts(1,1);    	foreach ($officail_accounts as $officail_account){    		try {//     			        		if($officail_account->appid != 'wxdbc486f1b4f6a8c3') {//     			        			\Log::info('not_in:'.$officail_account->appid);//     			        			continue;//     			        		}    			$timestamp = time();    			$params = array("gzh_app_id"=>$officail_account->appid,"timestamp"=>$timestamp);    			$sign = get_sign($params);        			\Log::info('check_official_account_templates_start,appid:'.$officail_account->appid);    			$dataJson = $this->getUserClient()->request("GET","check_official_account_templates",    					['query'=>['gzh_app_id'=>$officail_account->appid,'timestamp'=>$timestamp,'sign'=>$sign],'connect_timeout' => 10]    			)->getBody()->getContents();    			//\Log::info($dataJson);    			\Log::info('check_official_account_templates_end,appid:'.$officail_account->appid.' res:'.json_encode($dataJson));    		}	        catch( \Exception $e){	            \Log::info($e->getMessage());	        }    	}        	return response()->success(['status'=>'1']);        }        /**     * @apiVersion 1.0.0     * @api {GET} OfficialAccount/update_encrypt_menus 更新所有菜单->改为加密     * @apiGroup OfficialAccount     * @apiName update_encrypt_menus     */    public function update_encrypt_menus(){        	$officail_accounts = OfficialAccountService::officialAuthSubscribeAccounts(1,1);    	foreach ($officail_accounts as $officail_account){    		try {//     			if($officail_account->appid != 'wxdbc486f1b4f6a8c3') {//     			   \Log::info('not_in:'.$officail_account->appid);//     			   continue;//     			}    			$timestamp = time();    			$params = array("set_type"=>"menu","authorizer_appid"=>$officail_account->appid,"timestamp"=>$timestamp);    			$sign = get_sign($params);//     			http://zydy/oauth/auto_set_menu_and_template_test?set_type=menu&authorizer_appid=wxdbc486f1b4f6a8c3×tamp=1511509543&sign=98dccc7b29e3c05e4b4367f488ff1966    			        			\Log::info('update_encrypt_menus_start,appid:'.$officail_account->appid);        			$dataJson = $this->getAuthClient()->request("GET","auto_set_menu_and_template_test",    					['query'=>["set_type"=>"menu",'authorizer_appid'=>$officail_account->appid,'timestamp'=>$timestamp,'sign'=>$sign],'connect_timeout' => 10]    			)->getBody()->getContents();    			//\Log::info($dataJson);    			\Log::info('update_encrypt_menus_end,appid:'.$officail_account->appid.' res:'.json_encode($dataJson));        		}    		catch( \Exception $e){    			\Log::info($e->getMessage());    		}        	}        	return response()->success(['status'=>'1']);        }        /**     * @apiVersion 1.0.0     * @api {GET} OfficialAccount/untie_distribution_official_account 解绑公众号     * @apiGroup OfficialAccount     * @apiName untie_distribution_official_account     * @apiParam   {String}  appid 渠道id.     */    public function untie_distribution_official_account(Request $request){    	$appid = $request->has('appid') ? $request->input('appid') : '';    	$force_untie = $request->has('force_untie') ? $request->input('force_untie') : '0';    	    	\Log::info('untie_distribution_official_account_start:'.$appid);    	    	if(empty($appid)) {    		return response()->error("PARAM_EMPTY");    	}    	    	// 找到公众号     	$official_account = OfficialAccount::officialAccountArrByAppid($appid);    	if(empty($official_account)) {    		return response()->error("NOT_FOUND_OFFICIAL_ACCOUNT");    	}    	    	// 判断公众号的注册用户数,大于10个默认是老号不给删除,否则用户数据会异常    	$force_subscribe_count = ForceSubscribeUsers::forceSubscribeUsersCountByAppid($appid);    	\Log::info('untie_distribution_official_account_appid:'.$appid.' force_subscribe_count:'.$force_subscribe_count.' $force_untie:'.$force_untie);    	if($force_untie){    		// 强制解绑的话,大号也不行    		if($force_subscribe_count >=10000){    			return response()->error("OLD_APP_NOT_ALLOW_DELETE");    		}    	}else{    		// 小权限限制下500人    		if($force_subscribe_count >=500){    			return response()->error("OLD_APP_NOT_ALLOW_DELETE");    		}    	}    	    	// 备份    	$untie_offcial_account = object_to_array($official_account);    	UntieOfficialAccount::firstOrCreate($untie_offcial_account);    	    	// 删除OfficialAccount    	\Log::info('del_official_account:'.json_encode($official_account));    	OfficialAccount::deleteOfficialAccount($official_account['id']);    	    	// 删除redis中OfficialAccount缓存    	\Log::info('del_redis:'.'official_account_info:app_id:'.$appid);    	Redis::del('official_account_info:app_id:'.$appid);    	    	\Log::info('untie_distribution_official_account_end:'.$appid);        	return response()->success(['status'=>'1']);        }        public function getUserClient(){    	return new Client(['base_uri' => env('MEDIA_API_BASE_URI')]);    }        public function getAuthClient(){    	return new Client(['base_uri' => env('AUTH_API_BASE_URI')]);    }}
 |