WechatTestController.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. <?php
  2. namespace App\Http\Controllers\Wechat\OfficialAccount;
  3. use Illuminate\Routing\Controller;
  4. use App\Modules\OfficialAccount\Services\OfficialAccountService;
  5. use App\Modules\OfficialAccount\Models\OfficialAccount;
  6. use App\Modules\OfficialAccount\Models\ForceSubscribeUsers;
  7. use App\Http\Controllers\Wechat\OfficialAccount\Transformers\OfficialAccountTransformer;
  8. use App\Modules\Book\Services\BookConfigService;
  9. use App\Modules\OfficialAccount\Models\WechatTemplates;
  10. use App\Modules\OfficialAccount\Models\WechatTemplateMsgs;
  11. use App\Modules\OfficialAccount\Models\WechatPublicTemplates;
  12. use Illuminate\Http\Request;
  13. use GuzzleHttp\Client;
  14. use App\Libs\OSS;
  15. use Redis;
  16. use App\Jobs\SendTestEmail;
  17. class WechatTestController extends Controller
  18. {
  19. //------------------Test OfficialAccointsController
  20. // 通过渠道号获取所有服务号 --Manage
  21. function allOfficialAccountBydistributionChannelId(Request $request)
  22. {
  23. $distribution_channel_id = $request->has('distribution_channel_id') ? $request->input('distribution_channel_id') : '';
  24. if(empty($distribution_channel_id)) {
  25. return response()->error("PARAM_EMPTY");
  26. }
  27. \Log::info('-------------------获取当前渠道下的所有服务号-----------------------------------');
  28. \Log::info($distribution_channel_id);
  29. $officialAccount['distribution_channel_id'] = $distribution_channel_id;
  30. $officialAccountService = OfficialAccountService::allOfficialAccountBydistributionChannelId($officialAccount);
  31. return response()->collection(new OfficialAccountTransformer(), $officialAccountService);
  32. }
  33. // 通过渠道号获取服务号数量 --Manage
  34. function officialAccountCountByChannelId(Request $request)
  35. {
  36. $distribution_channel_id = $request->has('distribution_channel_id') ? $request->input('distribution_channel_id') : '';
  37. if(empty($distribution_channel_id)) {
  38. return response()->error("PARAM_EMPTY");
  39. }
  40. $officialAccount['distribution_channel_id'] = $distribution_channel_id;
  41. $officialAccountService = OfficialAccountService::officialAccountCountByChannelId($officialAccount);
  42. return response()->success(['official_num'=>$officialAccountService]);
  43. }
  44. // sign加密
  45. function getSignTest(Request $request){
  46. // $appid = $request->has('appid') ? $request->input('appid') : '';
  47. //
  48. // if(empty($appid)) {
  49. // return response()->error("PARAM_EMPTY");
  50. // }
  51. //
  52. // $timestamp = $request->has('timestamp') ? $request->input('timestamp') : '';
  53. //
  54. // if(empty($timestamp)) {
  55. // return response()->error("PARAM_EMPTY");
  56. // }
  57. //
  58. // $params = array("authorizer_appid"=>$appid,"timestamp"=>$timestamp);
  59. //
  60. // $sign = get_sign($params);
  61. //
  62. // return response()->success(['sign'=>$sign]);
  63. $timestamp = 1519359397;
  64. $official_accounts = 'wx1affdca495a3ab1e';
  65. $params = array("authorizer_appid"=>$official_accounts,"timestamp"=>$timestamp);
  66. $sign = get_sign($params);
  67. try {
  68. $mediaCustomerJson = $this->getUserClient()->request("GET","auto_set_menu_and_template_test",
  69. ['query'=>['authorizer_appid'=>$official_accounts,'timestamp'=>$timestamp,'sign'=>$sign],'connect_timeout' => 10]
  70. )->getBody()->getContents();
  71. } catch (\Exception $e) {
  72. \Log::info($e);
  73. }
  74. return response()->success(['status'=>'1']);
  75. }
  76. // // 更新公众号信息至Redis
  77. // function updateOfficialToRedisTest(Request $request)
  78. // {
  79. // $allOfficialAccounts = OfficialAccount::getAllOfficialAccountDB();
  80. // if(count($allOfficialAccounts)>0){
  81. // for ($i=0; $i < count($allOfficialAccounts); $i++) {
  82. // $official_accounts = $allOfficialAccounts[$i];
  83. // $officialAccountArray = $official_accounts->toArray();
  84. //// dd(json_encode($officialAccountArray));
  85. // Redis::hset('official_account_info:app_id:'.$official_accounts['appid'], 'official_account_info', json_encode($officialAccountArray));
  86. //
  87. //
  88. // }
  89. // }
  90. //// dd(1);
  91. // return response()->success(['sign'=>count($allOfficialAccounts)]);
  92. //
  93. // }
  94. // 更新公众号信息至Redis
  95. function getOfficialFromRedis(Request $request)
  96. {
  97. $appid = $request->has('appid') ? $request->input('appid') : '';
  98. if(empty($appid)) {
  99. return response()->error("PARAM_EMPTY");
  100. }
  101. $officialMsg = Redis::hget('official_account_info:app_id:'.$appid, 'official_account_info');
  102. $official_object = json_decode($officialMsg);
  103. return response()->success(['official_account_info'=>$official_object]);
  104. }
  105. // 获取模板或者客服信息Redis
  106. function getWechatMsgRedis(Request $request)
  107. {
  108. $task_id = $request->has('task_id') ? $request->input('task_id') : '';
  109. if(empty($task_id)) {
  110. return response()->error("PARAM_EMPTY");
  111. }
  112. $officialMsg = Redis::hget('send_wechat_msg:task_id:'.$task_id, 'wechat_msg');
  113. \Log::info($officialMsg);
  114. $official_object = json_decode($officialMsg);
  115. return response()->success(['official_account_info'=>$official_object]);
  116. }
  117. // 通过appid获取公众号
  118. function officialAccountByAppidTestRedis(Request $request)
  119. {
  120. $appid = $request->has('appid') ? $request->input('appid') : '';
  121. if(empty($appid)) {
  122. return response()->error("PARAM_EMPTY");
  123. }
  124. $officialAccountPrams['appid'] = $appid;
  125. $officialAccountService = OfficialAccountService::officialAccountByAppid($officialAccountPrams);
  126. return response()->item(new OfficialAccountTransformer(), $officialAccountService);
  127. }
  128. // 获取模板或者客服信息Redis
  129. function testSendMailDelayQueue(Request $request)
  130. {
  131. $test = '这是一条测试的Email信息。。。。';
  132. /**
  133. * 通过Job方式发送模板消息-----queue
  134. */
  135. $job = (new SendTestEmail($test))->onConnection('rabbitmq')->delay(20);
  136. dispatch($job);
  137. return response()->success(['send_email_queue_delay_test'=>$test]);
  138. }
  139. // 所有公众号发送模板消息
  140. function updateOfficialToRedisTest(Request $request)
  141. {
  142. $allOfficialAccounts = OfficialAccount::getAllOfficialAccountDB();
  143. if(count($allOfficialAccounts)>0){
  144. for ($i=0; $i < count($allOfficialAccounts); $i++) {
  145. $official_accounts = $allOfficialAccounts[$i];
  146. $wechatTemplates = WechatTemplates::wechatTemplateByAppidAndTemplateId($official_accounts['appid'],'TM405959659');
  147. if(empty($wechatTemplates)) {
  148. \Log::info('send_template5555555555:======未找到模板');
  149. }else{
  150. $wechatTemplateMsgs['appid'] = $official_accounts['appid'];
  151. $wechatTemplateMsgs['distribution_channel_id'] = $official_accounts['distribution_channel_id'];
  152. $wechatTemplateMsgs['status'] = '1';
  153. $wechatTemplateMsgs['del_flag'] = 0;
  154. $wechatTemplateMsgs['user_num'] = 0;
  155. $wechatTemplateMsgs['name'] = '2018狗年春节钜惠';
  156. $wechatTemplateMsgs['send_time'] = '2018-02-14 20:30:21';
  157. $wechatTemplateMsgs['template_content'] = '[{"first.DATA":["尊敬的会员: 恭喜您抽中双节双重大礼包!","#ff0000"]},{"keynote1.DATA":["充50送50 、充108送128!书币翻倍读不停!","#0099ff"]},{"keynote2.DATA":["活动时间2月14日-2月21日","#ff0000"]},{"remark.DATA":["点击【详情】,立即领取限时大礼包>>>","#0099ff"]}]';
  158. $wechatTemplateMsgs['redirect_url'] = 'https://site'.$official_accounts['distribution_channel_id'].'.leyuee.com/sale/springactivity?token=1JMfs0yjYR1CV6Bsf8ZWlp34WIYsg61d';
  159. $wechatTemplateMsgs['remark'] = '';
  160. $wechatTemplateMsgs['subscribe_time'] = 'z';
  161. $wechatTemplateMsgs['sex'] = 'z';
  162. $wechatTemplateMsgs['balance'] = 'z';
  163. $wechatTemplateMsgs['order_type'] = 'z';
  164. $wechatTemplateMsgs['category_id'] = 'z';
  165. $wechatTemplateMsgs['template_id'] = $wechatTemplates['template_id'];
  166. $templateMsgs = WechatTemplateMsgs::create($wechatTemplateMsgs);
  167. $officialAccountArray = $templateMsgs->toArray();
  168. Redis::hset('send_wechat_msg:task_id:'.$templateMsgs['id'], 'wechat_msg', json_encode($officialAccountArray));
  169. }
  170. }
  171. }
  172. return response()->success(['sign'=>count($allOfficialAccounts)]);
  173. }
  174. // 根据用户id获取推荐的书籍
  175. function getSimpleChannelBook(Request $request){
  176. $uid = $request->get('uid');
  177. $num = 6;
  178. $bid =1;
  179. $books = BookConfigService::getSimpleChannelBookLoop($bid,$num,$uid);
  180. return response()->success($books);
  181. }
  182. // // 获取模板或者客服信息Redis
  183. // function updateOfficialToRedisTest(Request $request)
  184. // {
  185. //
  186. //
  187. // $timestamp = 1517556929;
  188. //
  189. // $allOfficialAccounts = OfficialAccount::getAllOfficialAccountDB();
  190. // if(count($allOfficialAccounts)>0){
  191. // for ($i=0; $i < count($allOfficialAccounts); $i++) {
  192. //
  193. // $official_accounts = $allOfficialAccounts[$i];
  194. // $params = array("authorizer_appid"=>$official_accounts['appid'],"timestamp"=>$timestamp);
  195. // $sign = get_sign($params);
  196. //
  197. // try {
  198. //
  199. // $mediaCustomerJson = $this->getUserClient()->request("GET","auto_set_menu_and_template_test",
  200. // ['query'=>['authorizer_appid'=>$official_accounts['appid'],'timestamp'=>$timestamp,'sign'=>$sign],'connect_timeout' => 3]
  201. // )->getBody()->getContents();
  202. //
  203. // } catch (\Exception $e) {
  204. // \Log::info($e);
  205. // }
  206. //
  207. //
  208. // }
  209. // }
  210. //
  211. // return response()->success(['sign'=>count($allOfficialAccounts)]);
  212. //
  213. // }
  214. //
  215. public function getUserClient(){
  216. // return new Client(['base_uri' => 'http://118.31.133.29/api/']);
  217. return new Client(['base_uri' => 'http://zsyauth.aizhuishu.com/oauth/']);
  218. }
  219. }