|  | @@ -98,86 +98,4 @@ public class WxApiController {
 | 
	
		
			
				|  |  |      public ResultVo<DoctorInfo> getDoctorInfo(@RequestParam("doctorCode") String doctorCode) {
 | 
	
		
			
				|  |  |          return service.getDoctorInfo(doctorCode);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    @GetMapping("/pushMsgToAllUser")
 | 
	
		
			
				|  |  | -    public void pushMsgToAllUser() {
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        // http://127.0.0.1:8805/wxserver/wxApi/pushMsgToAllUser
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        int taskOrder = 0;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        String token = PropertiesUtil.getProperty("access_token");
 | 
	
		
			
				|  |  | -        String getUserListUrl = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=" + token;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        RestTemplate template = new RestTemplate();
 | 
	
		
			
				|  |  | -        JSONObject userList = template.getForObject(getUserListUrl, JSONObject.class);
 | 
	
		
			
				|  |  | -        assert userList != null;
 | 
	
		
			
				|  |  | -        JSONArray openIds = userList.getJSONObject("data").getJSONArray("openid");
 | 
	
		
			
				|  |  | -        new Business(openIds, taskOrder).start();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        while (userList.containsKey("next_openid") && StringUtil.notBlank(userList.getString("next_openid"))) {
 | 
	
		
			
				|  |  | -            getUserListUrl = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=" + token + "&next_openid=" +
 | 
	
		
			
				|  |  | -                    userList.getString("next_openid");
 | 
	
		
			
				|  |  | -            userList = template.getForObject(getUserListUrl, JSONObject.class);
 | 
	
		
			
				|  |  | -            assert userList != null;
 | 
	
		
			
				|  |  | -            if (userList.getInteger("count") > 0) {
 | 
	
		
			
				|  |  | -                taskOrder += 1;
 | 
	
		
			
				|  |  | -                openIds = userList.getJSONObject("data").getJSONArray("openid");
 | 
	
		
			
				|  |  | -                new Business(openIds, taskOrder).start();
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    static class Business extends Thread {
 | 
	
		
			
				|  |  | -        private final JSONArray openIds;
 | 
	
		
			
				|  |  | -        private final int order;
 | 
	
		
			
				|  |  | -        JSONObject content;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        public Business(JSONArray openIds, int order) {
 | 
	
		
			
				|  |  | -            this.openIds = openIds;
 | 
	
		
			
				|  |  | -            String msgContent = "{\"touser\":\"\",\"data\":" +
 | 
	
		
			
				|  |  | -                    "{\"keyword2\":{\"color\":\"#173177\",\"value\":\"长沙市医保局\"}," +
 | 
	
		
			
				|  |  | -                    "\"keyword1\":{\"color\":\"#173177\",\"value\":\"湖南省医保局、长沙市医保局联合指导普惠型补充医疗保险缴费仅剩30天,还未缴费的市民请抓紧办理!\"}," +
 | 
	
		
			
				|  |  | -                    "\"remark\":{\"color\":\"#FF0000\",\"value\":\"【政府指导,普惠全民】超50万长沙市民已办理!订单金额:139元/年,每天不到4毛钱,最高保障300万。" +
 | 
	
		
			
				|  |  | -                    "不限年龄、性别,老幼同价,带病可保可赔,支持医保个账支付。订单状态:即将截止!\"}," +
 | 
	
		
			
				|  |  | -                    "\"first\":{\"color\":\"#FF0000\",\"value\":\"你好,你有新的待办事项未办理,请2小时内点击办理!\"}}," +
 | 
	
		
			
				|  |  | -                    "\"template_id\":\"qW3HNhNfFFbBVQ9TtIuAr7Z70UB1jDwK8LtjNkU9uDQ\"," +
 | 
	
		
			
				|  |  | -                    "\"url\":\"https://hmb.yinbangbroker.com/changsha22/h5/product/index?shareFrom=0001110&shareCode=a5d776450f9dd8d8249221f02580c4b4&template=0f83ca02360b498711e8930cacdf2a3c\"}";
 | 
	
		
			
				|  |  | -            this.content = JSONObject.parseObject(msgContent);
 | 
	
		
			
				|  |  | -            this.order = order;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        @Override
 | 
	
		
			
				|  |  | -        public void run() {
 | 
	
		
			
				|  |  | -            RestTemplate template = new RestTemplate();
 | 
	
		
			
				|  |  | -            int pushSuccessCount = 0;
 | 
	
		
			
				|  |  | -            for (int i = 0; i < openIds.size(); i++) {
 | 
	
		
			
				|  |  | -                content.replace("touser", openIds.getString(i));
 | 
	
		
			
				|  |  | -                String sendMsgUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + PropertiesUtil.getProperty("access_token");
 | 
	
		
			
				|  |  | -                JSONObject res = template.postForObject(sendMsgUrl, content, JSONObject.class);
 | 
	
		
			
				|  |  | -                if (null != res) {
 | 
	
		
			
				|  |  | -                    Integer code = res.getInteger("errcode");
 | 
	
		
			
				|  |  | -                    if (null != code && code == 0) {
 | 
	
		
			
				|  |  | -                        pushSuccessCount += 1;
 | 
	
		
			
				|  |  | -                    } else {
 | 
	
		
			
				|  |  | -                        try {
 | 
	
		
			
				|  |  | -                            TimeUnit.MILLISECONDS.sleep(300);
 | 
	
		
			
				|  |  | -                            sendMsgUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + PropertiesUtil.getProperty("access_token");
 | 
	
		
			
				|  |  | -                            res = template.postForObject(sendMsgUrl, content, JSONObject.class);
 | 
	
		
			
				|  |  | -                            if (null != res) {
 | 
	
		
			
				|  |  | -                                code = res.getInteger("errcode");
 | 
	
		
			
				|  |  | -                                if (null != code && code == 0) {
 | 
	
		
			
				|  |  | -                                    pushSuccessCount += 1;
 | 
	
		
			
				|  |  | -                                }
 | 
	
		
			
				|  |  | -                            }
 | 
	
		
			
				|  |  | -                        } catch (InterruptedException e) {
 | 
	
		
			
				|  |  | -                            throw new RuntimeException(e);
 | 
	
		
			
				|  |  | -                        }
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                log.info("【线程{},序号{}】推送消息结果:{}", order, pushSuccessCount, res);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            log.info("【线程{}】推送完成,用户列表共 {} 位,推送成功 {} 条。", order, openIds.size(), pushSuccessCount);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  |  }
 |