From 67da87e6d31440fb4f7d7fd57e0a62a9ea5665fa Mon Sep 17 00:00:00 2001
From: "382696293@qq.com" <382696293@qq.com>
Date: Fri, 12 Jan 2024 09:22:19 +0800
Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E7=99=BB=E5=BD=95=E6=B5=81?=
=?UTF-8?q?=E7=A8=8B=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../mapper/WxScriptMessageMapper.xml | 2 +-
.../controller/UserMemberController.java | 8 ++++++-
.../service/IWxUserMemberService.java | 5 +++-
.../service/impl/WxUserMemberServiceImpl.java | 24 +++++++++++++++----
4 files changed, 32 insertions(+), 7 deletions(-)
diff --git a/flossom-common/flossom-common-core/src/main/resources/mapper/WxScriptMessageMapper.xml b/flossom-common/flossom-common-core/src/main/resources/mapper/WxScriptMessageMapper.xml
index 469dde0..3fb1469 100644
--- a/flossom-common/flossom-common-core/src/main/resources/mapper/WxScriptMessageMapper.xml
+++ b/flossom-common/flossom-common-core/src/main/resources/mapper/WxScriptMessageMapper.xml
@@ -137,7 +137,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where
message_type = #{messageType}
- and status = #{status}
+ and status = 0
order by create_time desc
LIMIT 1
diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/UserMemberController.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/UserMemberController.java
index ad54728..d36e2ec 100644
--- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/UserMemberController.java
+++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/controller/UserMemberController.java
@@ -3,6 +3,7 @@ package com.flossom.miniProgram.controller;
import com.flossom.common.core.constant.Constants;
import com.flossom.common.core.domain.R;
import com.flossom.common.core.domain.SysFile;
+import com.flossom.common.core.domain.entity.WxUserMember;
import com.flossom.common.core.exception.ServiceException;
import com.flossom.common.core.utils.StringUtils;
import com.flossom.common.core.web.controller.BaseController;
@@ -41,7 +42,12 @@ public class UserMemberController extends BaseController {
logger.error("登录code不能为空");
return AjaxResult.error("登录失败");
}
- return AjaxResult.success(wxUserMemberService.login(code));
+ // 判断注册
+ WxUserMember wxUserMember = wxUserMemberService.wxRegister(code);
+ if (wxUserMember == null) {
+ return AjaxResult.error("登录失败");
+ }
+ return AjaxResult.success(wxUserMemberService.login(wxUserMember));
}
/**
diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/IWxUserMemberService.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/IWxUserMemberService.java
index aecfad0..bbe5f9b 100644
--- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/IWxUserMemberService.java
+++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/IWxUserMemberService.java
@@ -1,11 +1,14 @@
package com.flossom.miniProgram.service;
+import com.flossom.common.core.domain.entity.WxUserMember;
import com.flossom.miniProgram.domain.vo.LoginUserVo;
import com.flossom.miniProgram.domain.vo.UserMemberUpdateVo;
public interface IWxUserMemberService {
- LoginUserVo login(String code) throws Exception;
+ WxUserMember wxRegister(String code) throws Exception;
+
+ LoginUserVo login(WxUserMember wxUserMember);
String upgradeMember(String code) throws Exception;
diff --git a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxUserMemberServiceImpl.java b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxUserMemberServiceImpl.java
index d5599f6..fd01298 100644
--- a/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxUserMemberServiceImpl.java
+++ b/flossom-modules/flossom-mini-program/src/main/java/com/flossom/miniProgram/service/impl/WxUserMemberServiceImpl.java
@@ -16,6 +16,7 @@ import com.flossom.common.core.mapper.WxScriptMessageMapper;
import com.flossom.common.core.mapper.WxUserMemberMapper;
import com.flossom.common.core.mapper.WxUserScriptLogMapper;
import com.flossom.common.core.utils.DateUtils;
+import com.flossom.common.core.utils.StringUtils;
import com.flossom.common.redis.service.RedisService;
import com.flossom.common.security.utils.SecurityUtils;
import com.flossom.miniProgram.domain.vo.*;
@@ -60,14 +61,14 @@ public class WxUserMemberServiceImpl implements IWxUserMemberService {
@Override
@Transactional
- public LoginUserVo login(String code) throws Exception {
+ public WxUserMember wxRegister(String code) throws Exception {
// 1、使用临时凭证 code 获取 appi + appsecret + unionid
String result = MiniProgramUtils.getSessionKeyAndOpenId(code);
logger.info("请求微信服务器获取openid和unionid,返回结果:{}", result);
WxCode2SessionRet wxCode2SessionRet = JSON.parseObject(result, WxCode2SessionRet.class);
if (wxCode2SessionRet.getErrcode() != null) {
logger.error(wxCode2SessionRet.getErrmsg());
- throw new ServiceException("校验失败");
+ throw new ServiceException("登录失败");
}
logger.info("openid = {}", wxCode2SessionRet.getOpenid());
logger.info("unionid = {}", wxCode2SessionRet.getUnionid());
@@ -108,11 +109,21 @@ public class WxUserMemberServiceImpl implements IWxUserMemberService {
}
}
+ /**
+ * 临时将 sessionKey 放到 wxUserMember,调用登录时方便获取
+ */
+ wxUserMember.getParams().put(CacheConstants.WX_SESSION_KEY_CACHE + wxUserMember.getOpenid(),
+ wxCode2SessionRet.getSession_key());
+ return wxUserMember;
+ }
+
+ @Override
+ public LoginUserVo login(WxUserMember wxUserMember) {
// 3、登录请求,获取 token
R