WechatInnerApisController.php 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295
  1. <?php
  2. namespace App\Http\Controllers\Wechat\Api;
  3. use App\Http\Requests;
  4. use App\Modules\OfficialAccount\Services\WechatTemplateService;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Http\Response;
  7. use EasyWeChat\Foundation\Application;
  8. use App\Libs\Classes\WxSign;
  9. use App\Http\Controllers\WechatBaseApisController;
  10. use Illuminate\Support\Facades\Redis;
  11. /**
  12. * 微信内部中间件相关api接口
  13. * @author zhoulingjie
  14. *
  15. */
  16. class WechatInnerApisController extends WechatBaseApisController
  17. {
  18. public function __construct($_param)
  19. {
  20. parent::__construct($_param);
  21. }
  22. /**
  23. * 得到事件的推送内容
  24. *
  25. */
  26. public function get_event_content($event,$content,$gzh_app_id,$openid)
  27. {
  28. $data = array();
  29. $data['event'] = strtolower($event);
  30. $data['content'] = $content;
  31. $data['appid'] = $gzh_app_id;
  32. $data['openid'] = $openid;
  33. return $this->do_api_post($data,'get_event_content');
  34. }
  35. /**
  36. * 得到强关用户信息
  37. */
  38. function get_force_wx_user($gzh_app_id,$openid)
  39. {
  40. $data = array();
  41. $data['appid'] = $gzh_app_id;
  42. $data['openid'] = $openid;
  43. return $this->do_api_post($data,'get_force_wx_user');
  44. }
  45. /**
  46. * 得到默认登录用户信息
  47. */
  48. function get_login_wx_user($gzh_app_id,$union_id)
  49. {
  50. $data = array();
  51. $data['appid'] = $gzh_app_id;
  52. $data['unionid'] = $union_id;
  53. return $this->do_api_post($data,'get_login_wx_user');
  54. }
  55. /**
  56. * 得到公众号信息
  57. */
  58. function get_official_account($gzh_app_id)
  59. {
  60. // 从redis取
  61. $redis_offcial_account_key = env('redis_offcial_account_key');
  62. if(!empty($redis_offcial_account_key)){
  63. $redis_offcial_account_key = $redis_offcial_account_key.$gzh_app_id;
  64. // v('get_official_account_from_redis:'.$gzh_app_id.' redis_offcial_account_key:'.$redis_offcial_account_key);
  65. $official_account = Redis::hGet($redis_offcial_account_key,'official_account_info');
  66. $official_account = objectToArray(json_decode($official_account));
  67. // v('official_account:'.json_encode($official_account));
  68. if(empty($official_account)){
  69. v('get_official_account_from_redis_api:'.$gzh_app_id);
  70. $data = array();
  71. $data['appid'] = $gzh_app_id;
  72. return $this->do_api_post($data,'get_official_account');
  73. }
  74. return $official_account;
  75. }else{
  76. v('get_official_account_from_api:'.$gzh_app_id);
  77. $data = array();
  78. $data['appid'] = $gzh_app_id;
  79. return $this->do_api_post($data,'get_official_account');
  80. }
  81. }
  82. /**
  83. * 得到基础模板消息列表
  84. */
  85. function get_wechat_public_templates($gzh_app_id)
  86. {
  87. $data = array();
  88. $data['appid'] = $gzh_app_id;
  89. return $this->do_api_post($data,'get_wechat_public_templates');
  90. }
  91. /**
  92. * 得到公众号对应的模板消息
  93. */
  94. function get_template_official_info($gzh_app_id,$common_template_id)
  95. {
  96. $data = array();
  97. $data['appid'] = $gzh_app_id;
  98. $data['common_template_id'] = $common_template_id;
  99. return $this->do_api_post($data,'get_template_official_info');
  100. }
  101. /**
  102. * 得到公众号对应的菜单设置列表
  103. */
  104. function get_official_account_menus($gzh_app_id)
  105. {
  106. $data = array();
  107. $data['appid'] = $gzh_app_id;
  108. return $this->do_api_post($data,'get_official_account_menus');
  109. }
  110. /**
  111. * 和强关公众号交互时间更新
  112. */
  113. function update_user_interaction_time($gzh_app_id,$openid,$distribution_channel_id)
  114. {
  115. $data = array();
  116. $data['appid'] = $gzh_app_id;
  117. $data['openid'] = $openid;
  118. $data['distribution_channel_id'] = $distribution_channel_id;
  119. $data['last_interactive_time'] = date('Y-m-d H:i:s');
  120. return $this->do_api_post($data,'update_user_interaction_time');
  121. }
  122. /**
  123. * 更新模板消息任务状态
  124. */
  125. function update_template_task_status($task_id,$status,$msg)
  126. {
  127. // 从redis取
  128. $redis_task_key = env('redis_task_key');
  129. if(!empty($redis_task_key)){
  130. $redis_task_key = $redis_task_key.$task_id;
  131. // v('update_template_task_status_from_redis:'.$task_id.' redis_task_key:'.$redis_task_key);
  132. $template_task = Redis::hGet($redis_task_key,'wechat_msg');
  133. $template_task = objectToArray(json_decode($template_task));
  134. // v('update_template_task_status_template_task:'.json_encode($template_task));
  135. $task_status = isset($template_task['status']) ? $template_task['status']:'';
  136. v('update_template_task_status_task_id:'.$task_id.' $task_status:'.$task_status);
  137. if($task_status == 1 || $task_status == 8){
  138. v('update_template_task_status_exe_innner:'.$task_id);
  139. $data = array();
  140. $data['id'] = $task_id;
  141. $data['status'] = $status;
  142. $data['msg'] = $msg;
  143. WechatTemplateService::updateWechatTemplateStatus($data);
  144. //return $this->do_api_post($data,'update_template_task_status');
  145. }else{
  146. v('update_template_task_status_ignore:'.$task_id.' status:'.$task_status);
  147. }
  148. return false;
  149. }else{
  150. v('update_template_task_status_inner:'.$task_id);
  151. $data = array();
  152. $data['id'] = $task_id;
  153. $data['status'] = $status;
  154. $data['msg'] = $msg;
  155. return $this->do_api_post($data,'update_template_task_status');
  156. }
  157. }
  158. /**
  159. * 关注
  160. */
  161. function subscribe_wx_user($gzh_app_id,$openid)
  162. {
  163. $data = array();
  164. $data['appid'] = $gzh_app_id;
  165. $data['openid'] = $openid;
  166. return $this->do_api_post($data,'subscribe_wx_user');
  167. }
  168. /**
  169. * 取消关注
  170. */
  171. function unsubscribe_wx_user($gzh_app_id,$openid)
  172. {
  173. $data = array();
  174. $data['appid'] = $gzh_app_id;
  175. $data['openid'] = $openid;
  176. return $this->do_api_post($data,'unsubscribe_wx_user');
  177. }
  178. /**
  179. * 更新用户uid
  180. */
  181. function update_force_wx_user($openid,$uid)
  182. {
  183. $data = array();
  184. $data['uid'] = $uid;
  185. $data['openid'] = $openid;
  186. return $this->do_api_post($data,'update_force_wx_user');
  187. }
  188. /**
  189. * 取消授权
  190. */
  191. function cancel_oauth_official_account($gzh_app_id)
  192. {
  193. $data = array();
  194. $data['appid'] = $gzh_app_id;
  195. return $this->do_api_post($data,'cancel_oauth_official_account');
  196. }
  197. /**
  198. * 保存默认登录用户信息
  199. */
  200. function save_login_wx_user($data)
  201. {
  202. return $this->do_api_post($data,'save_login_wx_user');
  203. }
  204. /**
  205. * 保存强关登录用户信息
  206. */
  207. function save_force_wx_user($data)
  208. {
  209. return $this->do_api_post($data,'save_force_wx_user');
  210. }
  211. /**
  212. * 保存公众号信息
  213. */
  214. function save_official_account($data)
  215. {
  216. return $this->do_api_post($data,'save_official_account');
  217. }
  218. /**
  219. * 保存公众号对应模板消息
  220. */
  221. function save_template_official_info($data)
  222. {
  223. return $this->do_api_post($data,'save_template_official_info');
  224. }
  225. /**
  226. * 更新公众号对应模板消息
  227. */
  228. function update_template_official_info($data)
  229. {
  230. return $this->do_api_post($data,'update_template_official_info');
  231. }
  232. /**
  233. * 得到模板消息任务
  234. */
  235. function get_template_task($task_id)
  236. {
  237. // 从redis取
  238. $redis_task_key = env('redis_task_key');
  239. if(!empty($redis_task_key)){
  240. $redis_task_key = $redis_task_key.$task_id;
  241. $template_task = Redis::hGet($redis_task_key,'wechat_msg');
  242. $template_task = objectToArray(json_decode($template_task));
  243. if(empty($template_task)){
  244. v('get_template_task_from_redis_api:'.$task_id);
  245. $data = array();
  246. $data['id'] = $task_id;
  247. return $this->do_api_post($data,'get_template_task');
  248. }
  249. return $template_task;
  250. }else{
  251. $data = array();
  252. $data['id'] = $task_id;
  253. return $this->do_api_post($data,'get_template_task');
  254. }
  255. }
  256. /**
  257. * 得到素材强关的映射关系(distribution_channel_id,openid => uid)
  258. */
  259. function get_material_force_subscribe_mapping($distribution_channel_id,$openid)
  260. {
  261. $data = array();
  262. $data['distribution_channel_id'] = $distribution_channel_id;
  263. $data['openid'] = $openid;
  264. return $this->do_api_post($data,'get_material_force_subscribe_mapping');
  265. }
  266. }