Browse Source

添加绑定流程

mssql
Yen 3 years ago
parent
commit
faa1a41a78
  1. 1
      src/main/java/com/qs/serve/modules/wx/service/WxUserService.java
  2. 40
      src/main/java/com/qs/serve/modules/wx/service/impl/WxUserServiceImpl.java
  3. 23
      src/main/java/com/qs/serve/task/WxUserTask.java

1
src/main/java/com/qs/serve/modules/wx/service/WxUserService.java

@ -19,6 +19,7 @@ public interface WxUserService extends IService<WxUser> {
*/ */
WxUser getCurrentWxUser(); WxUser getCurrentWxUser();
void syncSubscribe();
List<WxUser> getBySysUserId(String userId); List<WxUser> getBySysUserId(String userId);
List<WxUser> getBySysUserIds(List<String> userIds); List<WxUser> getBySysUserIds(List<String> userIds);

40
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.model.enums.HttpCode;
import com.qs.serve.common.util.Assert; import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.AuthContextUtils; 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.common.util.JsonUtil;
import com.qs.serve.modules.wx.common.conf.WxMpConfig; import com.qs.serve.modules.wx.common.conf.WxMpConfig;
import com.qs.serve.modules.wx.common.consts.WxStatusConst; 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.error.WxErrorException;
import me.chanjar.weixin.common.service.WxOAuth2Service; import me.chanjar.weixin.common.service.WxOAuth2Service;
import me.chanjar.weixin.mp.api.WxMpService; 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.WxMpUser;
import me.chanjar.weixin.mp.bean.result.WxMpUserList;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
@ -45,6 +49,42 @@ public class WxUserServiceImpl extends ServiceImpl<WxUserMapper, WxUser> impleme
@Autowired(required = false) @Autowired(required = false)
private WxAppService wxAppService; private WxAppService wxAppService;
private List<String> getOpenIds(WxMpUserService wxMpUserService,String nextOpenId){
WxMpUserList wxMpUserList = null;
List<String> 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;
}
@Override
public void syncSubscribe(){
log.warn("**同步订阅用户流程-开始**");
WxMpUserService wxMpUserService = wxMpConfig.wxMpService().getUserService();
List<String> allOpenIds = this.getOpenIds(wxMpUserService,null);
if(CollectionUtil.isEmpty(allOpenIds)){
List<List<String>> tmpList = CollectionUtil.createList(allOpenIds,800);
for (List<String> openIdList : tmpList) {
LambdaQueryWrapper<WxUser> lqw = new LambdaQueryWrapper<>();
lqw.eq(WxUser::getSubscribe,0);
lqw.in(WxUser::getOpenId,openIdList);
WxUser wxUser = new WxUser();
wxUser.setSubscribe(1);
this.update(wxUser,lqw);
}
}
log.warn("**同步订阅用户流程-结束**");
}
@Override @Override
public WxUser getCurrentWxUser() { public WxUser getCurrentWxUser() {
LoginUser loginUser = AuthContextUtils.getLoginUser(); LoginUser loginUser = AuthContextUtils.getLoginUser();

23
src/main/java/com/qs/serve/task/WxUserTask.java

@ -0,0 +1,23 @@
package com.qs.serve.task;
import com.qs.serve.modules.wx.service.WxUserService;
import lombok.AllArgsConstructor;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
/**
* @author YenHex
* @since 2022/9/26
*/
@Component
@AllArgsConstructor
public class WxUserTask {
private WxUserService wxUserService;
@Scheduled(cron = "0 0/30 * * * ?")
public void syncSubscribe(){
wxUserService.syncSubscribe();
}
}
Loading…
Cancel
Save