From 3d9c6a62db6c926cc42648880002d444fa73788a Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Thu, 11 Apr 2019 12:43:39 +0800 Subject: [PATCH] =?UTF-8?q?[=E4=BC=9A=E5=91=98=E7=AE=A1=E7=90=86][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9]:=E7=B2=89=E4=B8=9D=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mp/controller/WxMemController.java | 40 +++++++++++++------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/mlWechatOpen/src/main/java/com/iformall/mp/controller/WxMemController.java b/mlWechatOpen/src/main/java/com/iformall/mp/controller/WxMemController.java index 67e87c2..4d5be01 100644 --- a/mlWechatOpen/src/main/java/com/iformall/mp/controller/WxMemController.java +++ b/mlWechatOpen/src/main/java/com/iformall/mp/controller/WxMemController.java @@ -2,10 +2,7 @@ package com.iformall.mp.controller; import com.iformall.common.ResultData; import com.iformall.domain.po.WxAuthorizerInfo; -import com.iformall.domain.po.WxCUser; -import com.iformall.enums.EnumAppType; import com.iformall.mapper.WxAuthorizerInfoMapper; -import com.iformall.mapper.WxCUserMapper; import com.iformall.mp.manager.WxMpManager; import com.iformall.service.WxCUserService; import me.chanjar.weixin.common.error.WxErrorException; @@ -21,7 +18,6 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.Date; import java.util.List; /** @@ -42,10 +38,9 @@ public class WxMemController { private WxCUserService userService; @GetMapping("/syncAccountFansList") - public ResultData syncAccountFansList(@PathVariable String appId) throws WxErrorException { + public ResultData syncAccountFansList(@PathVariable String appId) { final WxMpService wxService = wxMpManager.getMpService(appId); - WxAuthorizerInfo authQ = new WxAuthorizerInfo(); authQ.setAuthorizerAppid(appId); WxAuthorizerInfo authorizerInfo = wxAuthorizerInfoMapper.findWeChatMp(authQ); @@ -55,9 +50,7 @@ public class WxMemController { while (true) { WxMpUserList mpUserList = wxService.getUserService().userList(nextOpenId); logger.info(mpUserList.toString()); - List userList = wxService.getUserService().userInfoList(mpUserList.getOpenids()); - logger.info(userList.toString()); - saveToDB(userList, authorizerInfo); + getBatchUserInfos(wxService, mpUserList, authorizerInfo); nextOpenId = mpUserList.getNextOpenid(); if(StringUtils.isBlank(nextOpenId)) { break; @@ -66,9 +59,32 @@ public class WxMemController { return new ResultData(); } - private void saveToDB(List userList, WxAuthorizerInfo authorizerInfo) { - for(WxMpUser mpUser: userList) { - userService.saveOrUpdateMpUser(mpUser, authorizerInfo); + private void getBatchUserInfos(WxMpService wxService, WxMpUserList mpUserList, WxAuthorizerInfo authorizerInfo) { + List openIds = mpUserList.getOpenids(); + if(openIds.size() > 100) { + int index = 0; + while(true) { + getBatchUserInfo(wxService, openIds.subList(index, index + 99), authorizerInfo); + index += 100; + } + } else { + getBatchUserInfo(wxService, openIds, authorizerInfo); + } + } + + private void getBatchUserInfo(WxMpService wxService, List openIds, WxAuthorizerInfo authorizerInfo) { + List userList = null; + try{ + userList = wxService.getUserService().userInfoList(openIds); + } catch (WxErrorException e) { + logger.error("batchget userinfo list error: " + e.getMessage()); + return; + } + if(userList != null) { + logger.info(userList.toString()); + for(WxMpUser mpUser: userList) { + userService.saveOrUpdateMpUser(mpUser, authorizerInfo); + } } } }