| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743 | <?phpnamespace App\Http\Controllers\Wechat\OfficialAccount;use Illuminate\Routing\Controller as ChannelBaseController;use App\Http\Controllers\Wechat\OfficialAccount\Transformers\WechatTemplatesTransformer;use App\Http\Controllers\Wechat\OfficialAccount\Transformers\WechatTemplatesMsgTransformer;use App\Http\Controllers\Channel\OfficialAccount\Transformers\CustomSendMsgsTransformers;use Illuminate\Http\Request;use GuzzleHttp\Client;use App\Libs\OSS;use App\Jobs\SendTemplate;use App\Modules\OfficialAccount\Services\WechatTemplateService;use App\Modules\OfficialAccount\Services\ForceSubscribeService;use App\Modules\OfficialAccount\Services\CustomMsgService;class WechatTemplatesController extends ChannelBaseController{    /**     * @apiDefine OfficialAccount 公众号     */    /**     * @apiVersion 1.0.0     * @api {GET} OfficialAccount/wechatTemplateByAppidAndTemplateId 通过Appid和common_template_id获取模板     * @apiGroup OfficialAccount     * @apiName wechatTemplateByAppidAndCommonTemplateId     * @apiParam   {String}  appid 公众号的appid.     * @apiParam   {String}  common_template_id 公共模版的ID.     * @apiSuccess {String}  appid 公众号的appid.     * @apiSuccess {String}  common_template_id 公共模版的ID.     * @apiSuccess {String}  template_id 公众号对应模版ID.     * @apiSuccess {String}  name 名称.     * @apiSuccess {String}  send_time 发送时间.     * @apiSuccess {String}  template_content 模板内容.     * @apiSuccess {String}  redirect_url 重定向地址.     * @apiSuccess {String}  send_appid 公众号appid.     * @apiParam {String}  status 模板消息状态.     * @apiParam {String}  remark 备注.     * @apiParam {Number}  distribution_channel_id 分配的渠道Id.     * @apiSuccessExample {json} Success-Response:     *     *       {     *           "code": 0,     *           "msg": "",     *           "data": {     *               "appid": "112211",     *               "common_template_id": "qqqqq",     *               "template_id": "wqwqwq",     *           }     *       }     */    function wechatTemplateByAppidAndCommonTemplateId(Request $request)    {        $appid = $request->has('appid') ? $request->input('appid') : '';        if(empty($appid)) {            return response()->error("PARAM_EMPTY");        }        $common_template_id = $request->has('common_template_id') ? $request->input('common_template_id') : '';        if(empty($common_template_id)) {            return response()->error("PARAM_EMPTY");        }        $wechatTemplate['appid'] = $appid;        $wechatTemplate['common_template_id'] = $common_template_id;        $wechatTemplateService = WechatTemplateService::wechatTemplateByAppidAndCommonTemplateId($wechatTemplate);        return response()->item(new WechatTemplatesTransformer(), $wechatTemplateService);    }    /**     * @apiDefine OfficialAccount 公众号     */    /**     * @apiVersion 1.0.0     * @api {GET} OfficialAccount/wechatTemplateMsgById 通过id获取模板     * @apiGroup OfficialAccount     * @apiName wechatTemplateMsgById     * @apiParam   {String}  id 模板消息id.     * @apiSuccess {String}  template_id 公众号对应模版ID.     * @apiSuccess {String}  name 名称.     * @apiSuccess {String}  send_time 发送时间.     * @apiSuccess {String}  template_content 模板内容.     * @apiSuccess {String}  redirect_url 重定向地址.     * @apiSuccess {String}  send_appid 公众号appid.     * @apiParam {String}  status 模板消息状态.     * @apiParam {String}  remark 备注.     * @apiParam {Number}  distribution_channel_id 分配的渠道Id.     * @apiSuccessExample {json} Success-Response:     *     *       {     *           "code": 0,     *           "msg": "",     *           "data": {     *               "appid": "112211",     *               "common_template_id": "qqqqq",     *               "template_id": "wqwqwq",     *           }     *       }     */    function wechatTemplateMsgById(Request $request)    {        $id = $request->has('id') ? $request->input('id') : '';        if(empty($id)) {            return response()->error("PARAM_EMPTY");        }        \Log::info('==========================获取 模板消息/客服消息推送状态 ID STATUS');        \Log::info($id);        $taskidArray  = explode('_', $id);        if (count($taskidArray)>1) {            if ($taskidArray[0] == 'custom') {                \Log::info('==========================客服消息推送  TASK_ID STATUS');                \Log::info($id);                $customSendMsgsService = CustomMsgService::customSendMsgsByTaskid($id);                if ($customSendMsgsService) {                    \Log::info($customSendMsgsService['status']);                }else{                    \Log::info('未找到这条客服消息');                }                return response()->item(new CustomSendMsgsTransformers(), $customSendMsgsService);            }                    }else{            \Log::info('==========================模板消息推送 ID STATUS');            \Log::info($id);            $wechatTemplateMsg['id'] = $id;            $wechatTemplateMsgService = WechatTemplateService::wechatTemplateMsgById($wechatTemplateMsg);            if ($wechatTemplateMsgService) {                \Log::info($wechatTemplateMsgService['status']);            }else{                \Log::info('未找到这条模板消息');            }                        return response()->item(new WechatTemplatesMsgTransformer(), $wechatTemplateMsgService);        }            }    /**     * @apiVersion 1.0.0     * @api {GET} OfficialAccount/wechatTemplateMsgBydistributionChannelId 获取推送模板消息列表     * @apiGroup OfficialAccount     * @apiName wechatTemplateMsgBydistributionChannelId     * @apiParam   {Number}  distribution_channel_id 分销渠道id.     * @apiSuccess {String}  id 模板消息唯一ID     * @apiSuccess {String}  template_id 公众号对应模版ID.     * @apiSuccess {String}  name 名称.     * @apiSuccess {String}  send_time 发送时间.     * @apiSuccess {String}  template_content 模板内容.     * @apiSuccess {String}  redirect_url 重定向地址.     * @apiSuccess {String}  send_appid 公众号appid.     * @apiParam {String}  status 模板消息状态.     * @apiParam {String}  remark 备注.     * @apiParam {Number}  distribution_channel_id 分配的渠道Id.     * @apiSuccessExample {json} Success-Response:     *     *       {     *           "code": 0,     *           "msg": "",     *           "data": {     *               "appid": "112211",     *               "common_template_id": "qqqqq",     *               "template_id": "wqwqwq",     *           }     *       }     */    function wechatTemplateMsgBydistributionChannelId(Request $request)    {        $distribution_channel_id = $request->has('distribution_channel_id') ? $request->input('distribution_channel_id') : '';        if(empty($distribution_channel_id)) {            return response()->error("PARAM_EMPTY");        }        $wechatTemplatesMsg['distribution_channel_id'] = $distribution_channel_id;        $wechatTemplatesMsgService = WechatTemplateService::wechatTemplateMsgBydistributionChannelId($wechatTemplatesMsg);        return response()->pagination(new WechatTemplatesMsgTransformer(), $wechatTemplatesMsgService);    }    /**     * @apiVersion 1.0.0     * @api {POST} OfficialAccount/addWechatTemplateMsg 发送模板消息     * @apiGroup OfficialAccount     * @apiName addWechatTemplateMsg     * @apiParam {String}  appid 公众号的appid.     * @apiParam {String}  common_template_id 公共模版的ID.     * @apiParam {String}  name 名称.     * @apiParam {String}  send_time 发送时间.     * @apiParam {String}  template_content 模板内容.     * @apiParam {String}  redirect_url 重定向地址.     * @apiParam {String}  remark 备注.     * @apiParam {Number}  distribution_channel_id 分配的渠道Id.     * @apiSuccessExample {json} Success-Response:     *     *       {     *           "code": 0,     *           "msg": "",     *           "data": []     *       }       */    function addWechatTemplateMsg(Request $request)    {    	\Log::info('addWechatTemplateMsg_start:'.json_encode($request->all()));        $appid = $request->has('appid') ? $request->input('appid') : '';        if(empty($appid)) {            return response()->error("PARAM_EMPTY");        }        $common_template_id = $request->has('common_template_id') ? $request->input('common_template_id') : '';        if(empty($common_template_id)) {            return response()->error("PARAM_EMPTY");        }        $name = $request->has('name') ? $request->input('name') : '';        if(empty($name)) {            return response()->error("PARAM_EMPTY");        }        $send_time = $request->has('send_time') ? $request->input('send_time') : '';        if(empty($send_time)) {            return response()->error("PARAM_EMPTY");        }        $template_content = $request->has('template_content') ? $request->input('template_content') : '';        if(empty($template_content)) {            return response()->error("PARAM_EMPTY");        }        $redirect_url = $request->has('redirect_url') ? $request->input('redirect_url') : '';        if(empty($redirect_url)) {            return response()->error("PARAM_EMPTY");        }        $distribution_channel_id = $request->has('distribution_channel_id') ? $request->input('distribution_channel_id') : '';        if(empty($distribution_channel_id)) {            return response()->error("PARAM_EMPTY");        }        $remark = $request->has('remark') ? $request->input('remark') : '';        $subscribe_time = $request->has('subscribe_time') ? $request->input('subscribe_time') : '';        if(empty($subscribe_time)) {            return response()->error("PARAM_EMPTY");        }        $sex = $request->has('sex') ? $request->input('sex') : '';        if(empty($sex)) {            return response()->error("PARAM_EMPTY");        }        $balance = $request->has('balance') ? $request->input('balance') : '';        if(empty($balance)) {            return response()->error("PARAM_EMPTY");        }        $order_type = $request->has('order_type') ? $request->input('order_type') : '';        if(empty($order_type)) {            return response()->error("PARAM_EMPTY");        }        $category_id = $request->has('category_id') ? $request->input('category_id') : '';        if(empty($category_id)) {            return response()->error("PARAM_EMPTY");        }                $is_full_send = $request->has('is_full_send') ? $request->input('is_full_send') : '0';        $wechatTemplateMsgs['appid'] = $appid;        $wechatTemplateMsgs['common_template_id'] = $common_template_id;        $wechatTemplateMsgs['name'] = $name;        $wechatTemplateMsgs['send_time'] = $send_time;        $wechatTemplateMsgs['template_content'] = $template_content;        $wechatTemplateMsgs['redirect_url'] = $redirect_url;        $wechatTemplateMsgs['appid'] = $appid;        $wechatTemplateMsgs['is_full_send'] = $is_full_send;        $wechatTemplateMsgs['distribution_channel_id'] = $distribution_channel_id;        $wechatTemplateMsgs['remark'] = $remark;        $wechatTemplateMsgs['subscribe_time'] = $subscribe_time;        $wechatTemplateMsgs['sex'] = $sex;        $wechatTemplateMsgs['balance'] = $balance;        $wechatTemplateMsgs['order_type'] = $order_type;        $wechatTemplateMsgs['category_id'] = $category_id;        \Log::info($wechatTemplateMsgs);        $resultStatus = WechatTemplateService::addWechatTemplateMsg($wechatTemplateMsgs);        if ($resultStatus == 1) {            return response()->success();        }elseif ($resultStatus == 2) {            return response()->error('TEMEPATES_NOT_FOUND');        }elseif ($resultStatus == 0) {            return response()->error('TEMEPATES_UNSUCCESSFUL');        }else{            return response()->error('TEMEPATES_UNSUCCESSFUL');        }    }    /**     * @apiVersion 1.0.0     * @api {POST} OfficialAccount/testAddWechatTemplateMsg 单个用户测试发送模板消息     * @apiGroup OfficialAccount     * @apiName testAddWechatTemplateMsg     * @apiParam {String}  appid 公众号的appid.     * @apiParam {String}  uid 用户uid.     * @apiParam {String}  common_template_id 公共模版的ID.     * @apiParam {String}  name 名称.     * @apiParam {String}  send_time 发送时间.     * @apiParam {String}  template_content 模板内容.     * @apiParam {String}  redirect_url 重定向地址.     * @apiParam {String}  remark 备注.     * @apiParam {Number}  distribution_channel_id 分配的渠道Id.     * @apiSuccessExample {json} Success-Response:     *     *       {     *           "code": 0,     *           "msg": "",     *           "data": []     *       }       */    function testAddWechatTemplateMsg(Request $request)    {    	\Log::info('testAddWechatTemplateMsg_start');    	\Log::info($request->all());        $appid = $request->has('appid') ? $request->input('appid') : '';        if(empty($appid)) {            return response()->error("PARAM_EMPTY");        }        $uid = $request->has('uid') ? $request->input('uid') : '';        if(empty($uid)) {            return response()->error("PARAM_EMPTY");        }        $common_template_id = $request->has('common_template_id') ? $request->input('common_template_id') : '';        if(empty($common_template_id)) {            return response()->error("PARAM_EMPTY");        }        $name = $request->has('name') ? $request->input('name') : '';        if(empty($name)) {            return response()->error("PARAM_EMPTY");        }        $send_time = $request->has('send_time') ? $request->input('send_time') : '';        if(empty($send_time)) {            return response()->error("PARAM_EMPTY");        }        $template_content = $request->has('template_content') ? $request->input('template_content') : '';        if(empty($template_content)) {            return response()->error("PARAM_EMPTY");        }        $redirect_url = $request->has('redirect_url') ? $request->input('redirect_url') : '';        if(empty($redirect_url)) {            return response()->error("PARAM_EMPTY");        }        $distribution_channel_id = $request->has('distribution_channel_id') ? $request->input('distribution_channel_id') : '';        if(empty($distribution_channel_id)) {            return response()->error("PARAM_EMPTY");        }        $remark = $request->has('remark') ? $request->input('remark') : '';        $wechatTemplateMsgs['appid'] = $appid;        $wechatTemplateMsgs['uid'] = $uid;        $wechatTemplateMsgs['common_template_id'] = $common_template_id;        $wechatTemplateMsgs['name'] = $name;        $wechatTemplateMsgs['send_time'] = $send_time;        $wechatTemplateMsgs['template_content'] = $template_content;        $wechatTemplateMsgs['redirect_url'] = $redirect_url;        $wechatTemplateMsgs['appid'] = $appid;        $wechatTemplateMsgs['distribution_channel_id'] = $distribution_channel_id;        $wechatTemplateMsgs['remark'] = $remark;        $wechatTemplateMsgs['uid'] = $uid;        \Log::info($wechatTemplateMsgs);            \Log::info('======================add_template_send======================'."\n");        $resultStatus = WechatTemplateService::testAddWechatTemplateMsg($wechatTemplateMsgs);        \Log::info('======================add_news_send======================'."\n");               if ($resultStatus == 1) {            return response()->success();        }elseif ($resultStatus == 2) {            return response()->error('TEMEPATES_NOT_FOUND');        }elseif ($resultStatus == 0) {            return response()->error('TEMEPATES_UNSUCCESSFUL');        }else{            return response()->error('TEMEPATES_UNSUCCESSFUL');        }    }    /**     * @apiVersion 1.0.0     * @api {POST} OfficialAccount/addWechatTemplate 保存模板     * @apiGroup OfficialAccount     * @apiName addWechatTemplate     * @apiParam {String}  appid 公众号的appid.     * @apiParam {String}  common_template_id 公共模版的ID.     * @apiParam {String}  template_id 公众号对应模版ID.     * @apiSuccessExample {json} Success-Response:     *     *       {     *           "code": 0,     *           "msg": "",     *           "data": []     *       }       */    function addWechatTemplate(Request $request)    {        $appid = $request->has('appid') ? $request->input('appid') : '';        if(empty($appid)) {            return response()->error("PARAM_EMPTY");        }        $common_template_id = $request->has('common_template_id') ? $request->input('common_template_id') : '';        if(empty($common_template_id)) {            return response()->error("PARAM_EMPTY");        }        $template_id = $request->has('template_id') ? $request->input('template_id') : '';        if(empty($template_id)) {            return response()->error("PARAM_EMPTY");        }        $wechatTemplate['appid'] = $appid;        $wechatTemplate['common_template_id'] = $common_template_id;        $wechatTemplate['template_id'] = $template_id;        $resultStatus = WechatTemplateService::addWechatTemplate($wechatTemplate);        if ($resultStatus == 1) {            return response()->success();        }elseif ($resultStatus == 2) {            return response()->error('TEMEPATES_IS_EXIST');        }elseif ($resultStatus == 0) {            return response()->error('TEMEPATES_UNSUCCESSFUL');        }else{            return response()->error('TEMEPATES_UNSUCCESSFUL');        }            }        /**     * @apiVersion 1.0.0     * @api {POST} OfficialAccount/updateWechatTemplateStatus 更新模板消息任务状态     * @apiGroup OfficialAccount     * @apiName updateWechatTemplateStatus     * @apiParam {String}  id 模板消息唯一id.     * @apiParam {String}  status 模板消息状态.1待发送、2发送中、3已发送、4已停止、0失败     * @apiSuccessExample {json} Success-Response:     *     *       {     *           "code": 0,     *           "msg": "",     *           "data": []     *       }     */        function updateWechatTemplateStatus(Request $request)    {            	$id = $request->has('id') ? $request->input('id') : '';        	\Log::info('==========================更新模板消息或者客服消息状态'.$id);        	if(empty($id)) {    		return response()->error("PARAM_EMPTY");    	}        	$status = $request->has('status') ? $request->input('status') : '';        	if(empty($status)) {    		return response()->error("PARAM_EMPTY");    	}        	$wechatTemplate['id'] = $id;        	$wechatTemplate['status'] = $status;        	$resultStatus = WechatTemplateService::updateWechatTemplateStatus($wechatTemplate);        	if ($resultStatus == 1) {    		return response()->success();    	}elseif ($resultStatus == 2) {    		return response()->error('TEMEPATES_NOT_FOUND');    	}elseif ($resultStatus == 0) {    		return response()->error('TEMEPATES_UNSUCCESSFUL');    	}else{    		return response()->error('TEMEPATES_UNSUCCESSFUL');    	}        }         /**     * @apiVersion 1.0.0     * @api {POST} OfficialAccount/updateWechatTemplateId 更新模板消息模板ID     * @apiGroup OfficialAccount     * @apiName updateWechatTemplate     * @apiSuccessExample {json} Success-Response:     *     *       {     *           "code": 0,     *           "msg": "",     *           "data": []     *       }       */    function updateWechatTemplateId(Request $request)    {        $appid = $request->has('appid') ? $request->input('appid') : '';        $template_id = $request->has('template_id') ? $request->input('template_id') : '';        $common_template_id = $request->has('common_template_id') ? $request->input('common_template_id') : '';        \Log::info('updateWechatTemplateId:appid:'.$appid.' template_id:'.$template_id.' common_template_id:'.$common_template_id);        if(empty($appid) || empty($template_id) || empty($common_template_id) ) {            return response()->error("PARAM_EMPTY");        }                $wechatTemplate = array();        $wechatTemplate['appid'] = $appid;        $wechatTemplate['template_id'] = $template_id;        $wechatTemplate['common_template_id'] = $common_template_id;        $resultStatus = WechatTemplateService::updateWechatTemplateId($wechatTemplate);        if ($resultStatus == 1) {            return response()->success();        }elseif ($resultStatus == 2) {            return response()->error('TEMEPATES_NOT_FOUND');        }elseif ($resultStatus == 0) {            return response()->error('TEMEPATES_UNSUCCESSFUL');        }else{            return response()->error('TEMEPATES_UNSUCCESSFUL');        }    }    /**     * @apiVersion 1.0.0     * @api {POST} OfficialAccount/updateWechatTemplateMsgById 更新模板消息内容     * @apiGroup OfficialAccount     * @apiName updateWechatTemplateMsgById     * @apiParam {String}  id 模板消息唯一id.     * @apiParam {String}  name 标题.     * @apiParam {String}  send_time 发送时间.     * @apiParam {String}  template_content 内容.     * @apiParam {String}  redirect_url 重定向地址.     * @apiParam {String}  remark 备注.     * @apiParam {String}  status 模板消息状态.1待发送、2发送中、3已发送、4已停止、0失败     * @apiSuccessExample {json} Success-Response:     *     *       {     *           "code": 0,     *           "msg": "",     *           "data": []     *       }       */    function updateWechatTemplateMsgById(Request $request)    {        $id = $request->has('id') ? $request->input('id') : '';        if(empty($id)) {            return response()->error("PARAM_EMPTY");        }                    $status = $request->has('status') ? $request->input('status') : '';                $name = $request->has('name') ? $request->input('name') : '';                $send_time = $request->has('send_time') ? $request->input('send_time') : '';        $template_content = $request->has('template_content') ? $request->input('template_content') : '';        $redirect_url = $request->has('redirect_url') ? $request->input('redirect_url') : '';                $remark = $request->has('remark') ? $request->input('remark') : '';        $is_full_send = $request->has('is_full_send') ? $request->input('is_full_send') : '0';                $wechatTemplate['id'] = $id;        $wechatTemplate['status'] = $status;        $wechatTemplate['is_full_send'] = $is_full_send;        $wechatTemplate['name'] = $name;        $wechatTemplate['send_time'] = $send_time;        $wechatTemplate['template_content'] = $template_content;        $wechatTemplate['redirect_url'] = $redirect_url;        $wechatTemplate['remark'] = $remark;        $resultStatus = WechatTemplateService::updateWechatTemplateMsgById($wechatTemplate);        if ($resultStatus == 1) {            return response()->success();        }elseif ($resultStatus == 2) {            return response()->error('TEMEPATESMSG_NOT_FOUND');        }elseif ($resultStatus == 0) {            return response()->error('TEMEPATES_UNSUCCESSFUL');        }else{            return response()->error('TEMEPATES_UNSUCCESSFUL');        }    }    //内部测试RebitMQ用    function testRebitMQ(Request $request)    {                WechatTemplateService::test_add_template_task();    }    //---------------测试接口方法    function forceUserCountByTemplatePrams(Request $request)    {                $distribution_channel_id = $request->has('distribution_channel_id') ? $request->input('distribution_channel_id') : '';        if(empty($distribution_channel_id)) {            return response()->error("PARAM_EMPTY");        }        $subscribe_time = $request->has('subscribe_time') ? $request->input('subscribe_time') : '';        if(empty($subscribe_time)) {            return response()->error("PARAM_EMPTY");        }        $appids = $request->has('appids') ? $request->input('appids') : '';        if(empty($appids)) {            return response()->error("PARAM_EMPTY");        }        $sex = $request->has('sex') ? $request->input('sex') : '';        if(empty($sex)) {            return response()->error("PARAM_EMPTY");        }        $balance = $request->has('balance') ? $request->input('balance') : '';        if(empty($balance)) {            return response()->error("PARAM_EMPTY");        }        $order_type = $request->has('order_type') ? $request->input('order_type') : '';        if(empty($order_type)) {            return response()->error("PARAM_EMPTY");        }        $category_id = $request->has('category_id') ? $request->input('category_id') : '';        if(empty($category_id)) {            return response()->error("PARAM_EMPTY");        }        $forceSubscribes = ForceSubscribeService::forceUserCountByTemplatePrams($appids,$distribution_channel_id,$subscribe_time,$sex,$balance,$category_id,$order_type);        return response()->success(['num'=>count($forceSubscribes)]);    }}
 |