src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java
@@ -158,4 +158,22 @@ } /** 新用户注册 end**/ /** 用户信息 start**/ @Bean public DirectExchange memberInfoExchange() { return new DirectExchange(RabbitQueueEnum.YWG_MEMBER_INFO.getExchange()); } @Bean public Queue memberInfoQueue() { return new Queue(RabbitQueueEnum.YWG_MEMBER_INFO.getQueue()); } @Bean public Binding memberInfoBind() { return BindingBuilder.bind(memberInfoQueue()).to(memberInfoExchange()).with(RabbitQueueEnum.YWG_MEMBER_INFO.getRoute()); } /** 新用户注册 end**/ } src/main/java/cc/mrbird/febs/mall/service/IAgentService.java
@@ -11,4 +11,6 @@ void addMember(String memberOpenId); void addMemberScan(String str); void updateMemberInfo(String str); } src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
@@ -5,6 +5,7 @@ import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.common.utils.AppContants; import cc.mrbird.febs.common.utils.HttpCurlUtil; import cc.mrbird.febs.common.utils.ShareCodeUtil; import cc.mrbird.febs.mall.entity.*; import cc.mrbird.febs.mall.mapper.*; @@ -24,6 +25,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.IOException; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.ArrayList; @@ -283,4 +285,35 @@ mallMemberWalletMapper.insert(wallet); return; } @Override public void updateMemberInfo(String str) { String[] split = StrUtil.split(str, "-"); String accessToken = split[0]; String openId = split[1]; MallMember mallMember = memberMapper.selectMemberByOpenId(openId); if (ObjectUtil.isNotEmpty(mallMember)) { return; } String requrl = "https://api.weixin.qq.com/sns/userinfo?access_token="+accessToken+"&openid="+openId+"&lang=zh_CN"; String reslutData = null; try { reslutData = HttpCurlUtil.sendGetHttp(requrl, null); } catch (IOException e) { e.printStackTrace(); return; } net.sf.json.JSONObject json = net.sf.json.JSONObject.fromObject(reslutData); log.info("微信获取用户信息={}", json); if (json.containsKey("errcode")) { log.info("微信登录获取到异常信息errcode"); return; } String nickname = json.getString("nickname"); String headImgUrl = json.getString("headimgurl"); mallMember.setName(nickname); mallMember.setAvatar(headImgUrl); memberMapper.updateById(mallMember); } } src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -621,6 +621,7 @@ authInfo.put("rasToken", generateAsaToken(token)); authInfo.put("accessToken",accessToken); authInfo.put("openId",openId); agentProducer.sendMemberInfoMsg(accessToken+"-"+openId); febsResponse.success().data(authInfo); } else { return febsResponse.fail().message("自动登录失败"); src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java
@@ -15,4 +15,5 @@ */ public static final String YWG_MEMBER_SUB = "queue_ywg_member_sub"; public static final String YWG_MEMBER_SUB_SCAN = "queue_ywg_member_sub_scan"; public static final String YWG_MEMBER_INFO = "queue_ywg_member_info"; } src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
@@ -92,4 +92,14 @@ log.error("收到新增用户扫码:", e); } } @RabbitListener(queues = QueueConstants.YWG_MEMBER_INFO) public void getMemberInfoMsg(String str) { log.info("收到用户信息:{}", str); try { agentService.updateMemberInfo(str); } catch (Exception e) { log.error("收到用户信息:", e); } } } src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java
@@ -6,6 +6,7 @@ @Getter public enum RabbitQueueEnum { YWG_MEMBER_INFO("exchange_ywg_member_info", "route_key_ywg_member_info",QueueConstants.YWG_MEMBER_INFO), YWG_MEMBER_SUB_SCAN("exchange_ywg_member_sub_scan", "route_key_ywg_member_sub_scan",QueueConstants.YWG_MEMBER_SUB_SCAN), YWG_MEMBER_SUB("exchange_ywg_member_sub", "route_key_ywg_member_sub",QueueConstants.YWG_MEMBER_SUB), src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
@@ -86,4 +86,9 @@ log.info("新增用户扫码:{}", str); rabbitTemplate.convertAndSend(RabbitQueueEnum.YWG_MEMBER_SUB_SCAN.getExchange(), RabbitQueueEnum.YWG_MEMBER_SUB_SCAN.getRoute(), str); } public void sendMemberInfoMsg(String str) { log.info("更新用户信息:{}", str); rabbitTemplate.convertAndSend(RabbitQueueEnum.YWG_MEMBER_INFO.getExchange(), RabbitQueueEnum.YWG_MEMBER_INFO.getRoute(), str); } }