From 0475b7e32a6efd282c6894e1bfa12c9ed20f6987 Mon Sep 17 00:00:00 2001 From: Yen Date: Mon, 26 Sep 2022 11:27:19 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E9=98=85=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/qs/serve/modules/task/WxTask.java | 14 +++++++ .../common/handler/mp/SubscribeHandler.java | 2 +- .../wx/service/impl/WxUserServiceImpl.java | 38 +++++++++++++++++++ 3 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/qs/serve/modules/task/WxTask.java diff --git a/src/main/java/com/qs/serve/modules/task/WxTask.java b/src/main/java/com/qs/serve/modules/task/WxTask.java new file mode 100644 index 00000000..69e21062 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/task/WxTask.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.task; + +import lombok.AllArgsConstructor; + +/** + * @author YenHex + * @since 2022/9/26 + */ +@AllArgsConstructor +public class WxTask { + + + +} diff --git a/src/main/java/com/qs/serve/modules/wx/common/handler/mp/SubscribeHandler.java b/src/main/java/com/qs/serve/modules/wx/common/handler/mp/SubscribeHandler.java index 4d0dc132..b64db95b 100644 --- a/src/main/java/com/qs/serve/modules/wx/common/handler/mp/SubscribeHandler.java +++ b/src/main/java/com/qs/serve/modules/wx/common/handler/mp/SubscribeHandler.java @@ -27,7 +27,7 @@ public class SubscribeHandler implements WxMpMessageHandler { Map context, WxMpService weixinService, WxSessionManager sessionManager) throws WxErrorException { - log.info("新关注用户 OPENID: " + wxMessage.getFromUser()); + log.warn("新关注用户 OPENID: " + wxMessage.getFromUser()); // 获取微信用户基本信息 try { WxMpUser userWxInfo = weixinService.getUserService() diff --git a/src/main/java/com/qs/serve/modules/wx/service/impl/WxUserServiceImpl.java b/src/main/java/com/qs/serve/modules/wx/service/impl/WxUserServiceImpl.java index 91aa8383..38e62275 100644 --- a/src/main/java/com/qs/serve/modules/wx/service/impl/WxUserServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/wx/service/impl/WxUserServiceImpl.java @@ -8,6 +8,7 @@ import com.qs.serve.common.model.consts.GySysConst; import com.qs.serve.common.model.enums.HttpCode; import com.qs.serve.common.util.Assert; import com.qs.serve.common.util.AuthContextUtils; +import com.qs.serve.common.util.CollectionUtil; import com.qs.serve.common.util.JsonUtil; import com.qs.serve.modules.wx.common.conf.WxMpConfig; import com.qs.serve.modules.wx.common.consts.WxStatusConst; @@ -24,10 +25,13 @@ import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken; import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.common.service.WxOAuth2Service; import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.api.WxMpUserService; import me.chanjar.weixin.mp.bean.result.WxMpUser; +import me.chanjar.weixin.mp.bean.result.WxMpUserList; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; /** @@ -45,6 +49,40 @@ public class WxUserServiceImpl extends ServiceImpl impleme @Autowired(required = false) private WxAppService wxAppService; + private List getOpenIds(WxMpUserService wxMpUserService,String nextOpenId){ + WxMpUserList wxMpUserList = null; + List openIds = new ArrayList<>(); + try { + wxMpUserList = wxMpUserService.userList(nextOpenId); + openIds = wxMpUserList.getOpenids(); + String currNextOpenId = wxMpUserList.getNextOpenid(); + if(openIds.size() == 10000) { + openIds.addAll(getOpenIds(wxMpUserService,currNextOpenId)); + } + } catch (WxErrorException e) { + e.printStackTrace(); + } + return openIds; + } + + public void test(){ + WxMpUserService wxMpUserService = wxMpConfig.wxMpService().getUserService(); + List allOpenIds = this.getOpenIds(wxMpUserService,null); + if(CollectionUtil.isEmpty(allOpenIds)){ + List> tmpList = CollectionUtil.createList(allOpenIds,800); + for (List openIdList : tmpList) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(WxUser::getSubscribe,0); + lqw.in(WxUser::getOpenId,openIdList); + WxUser wxUser = new WxUser(); + wxUser.setSubscribe(1); + this.update(wxUser,lqw); + } + } + + } + + @Override public WxUser getCurrentWxUser() { LoginUser loginUser = AuthContextUtils.getLoginUser();