From f64b6be332be68497594393d9eb6d16551f75223 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Mon, 17 Jul 2023 17:08:30 +0800 Subject: [PATCH] 用户登录获取用户的微信昵称和头像 --- src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java | 1 src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java | 18 +++++++++ src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java | 10 +++++ src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java | 33 ++++++++++++++++ src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java | 1 src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java | 5 ++ src/main/java/cc/mrbird/febs/mall/service/IAgentService.java | 2 + src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 1 8 files changed, 71 insertions(+), 0 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java b/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java index afddeb0..42e4064 100644 --- a/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java +++ b/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**/ + } diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java b/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java index a9a7103..875e530 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java +++ b/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); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java index 694cdee..a5baa88 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java +++ b/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); + } } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java index 9d7d7bf..cf063cf 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java +++ b/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("自动登录失败"); diff --git a/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java b/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java index 6f420fe..a8fd333 100644 --- a/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java +++ b/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"; } diff --git a/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java b/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java index 474f46f..6026574 100644 --- a/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java +++ b/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); + } + } } diff --git a/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java b/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java index 3149d76..a46e1a5 100644 --- a/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java +++ b/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), diff --git a/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java b/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java index f68e238..d4832e7 100644 --- a/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java +++ b/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); + } } -- Gitblit v1.9.1