hongxudong 2 лет назад
Родитель
Сommit
0b93945cef

+ 2 - 0
src/main/java/com/dk/oauth/entity/UserLogin.java

@@ -15,6 +15,8 @@ public class UserLogin {
 
     private String userId;
 
+    private String userWxid;
+
     private String userPhone;
 
     private String userName;

+ 1 - 8
src/main/java/com/dk/oauth/mapper/UserMapper.java

@@ -25,13 +25,6 @@ public interface UserMapper {
     UserLogin getByWxid(@Param("userWxid") String userWxid);
     
     /**
-     * @desc   : 检查openid、电话是否存在
-     * @author : 洪旭东
-     * @date   : 2024-02-20 13:42
-     */
-    Integer checkExist(UserWxLogin userWxLogin);
-
-    /**
      * @desc   : 注册用户
      * // TODO: 洪旭东 2024-02-20 密码暂时默认123
      * @author : 洪旭东
@@ -51,5 +44,5 @@ public interface UserMapper {
      * @author : 洪旭东
      * @date   : 2024-02-20 14:12
      */
-    int updatePhone(@Param("userId") String userId, @Param("userPhone") String userPhone);
+    int updateWxid(@Param("userId") String userId, @Param("userWxid") String userWxid);
 }

+ 29 - 36
src/main/java/com/dk/oauth/service/impl/AuthAccessTokenServiceImpl.java

@@ -91,14 +91,13 @@ public class AuthAccessTokenServiceImpl extends ServiceImpl<AuthAccessTokenMappe
      * @date   : 2024-02-20 14:04
      */
     public ResponseResultVO token(HttpServletRequest request){
+        UserLogin userLogin = userMapper.getByPhone(request.getParameter("phone"));
+        if (userLogin == null || (!userLogin.getUserPwd().equals(request.getParameter("password")))) {
+            //无用户 或 密码错误
+            return ResponseResultUtil.error(ErrorCodeEnum.USER_PASSWORD_ERROR.getCode(), ErrorCodeEnum.USER_PASSWORD_ERROR.getMessage());
+        }
+        userLogin.checkUserLogin();
         try {
-            UserLogin userLogin = userMapper.getByPhone(request.getParameter("phone"));
-            if (userLogin == null || (!userLogin.getUserPwd().equals(request.getParameter("password")))) {
-                //无用户 或 密码错误
-                return ResponseResultUtil.error(ErrorCodeEnum.USER_PASSWORD_ERROR.getCode(), ErrorCodeEnum.USER_PASSWORD_ERROR.getMessage());
-            }
-            userLogin.checkUserLogin();
-
             return createToken(userLogin);
         } catch (Exception e) {
             log.error("获取accessToken发生异常=", e);
@@ -113,24 +112,13 @@ public class AuthAccessTokenServiceImpl extends ServiceImpl<AuthAccessTokenMappe
      */
     @Transactional(rollbackFor = Exception.class)
     public ResponseResultVO wxToken(UserWxLogin userWxLogin) {
+        UserLogin userLogin = userMapper.getByWxid(userWxLogin.getUserWxid());
+        if (userLogin == null) {
+            //无用户
+            return ResponseResultUtil.error(ErrorCodeEnum.USER_NOT_EXIST.getCode(), ErrorCodeEnum.USER_NOT_EXIST.getMessage());
+        }
+        userLogin.checkUserLogin();
         try {
-            UserLogin userLogin = userMapper.getByWxid(userWxLogin.getUserWxid());
-            if (userLogin == null) {
-                //openid没查到,用手机号再查一次
-                userLogin = userMapper.getByPhone(userWxLogin.getUserName());
-            } else if (!userLogin.getUserPhone().equals(userWxLogin.getUserPhone())) {
-                //通过openid查到了,对比一下手机号,不同则更新
-                //如新电话已存在,将其他微信用户的电话清空
-                userMapper.cleanPhone(userWxLogin.getUserPhone());
-                userMapper.updatePhone(userLogin.getUserId(), userWxLogin.getUserPhone());
-            }
-
-            if (userLogin == null) {
-                //无用户
-                return ResponseResultUtil.error(ErrorCodeEnum.USER_NOT_EXIST.getCode(), ErrorCodeEnum.USER_NOT_EXIST.getMessage());
-            }
-            userLogin.checkUserLogin();
-
             return createToken(userLogin);
         } catch (Exception e) {
             log.error("获取accessToken发生异常=", e);
@@ -145,22 +133,27 @@ public class AuthAccessTokenServiceImpl extends ServiceImpl<AuthAccessTokenMappe
      */
     @Transactional(rollbackFor = Exception.class)
     public ResponseResultVO<?> register(UserWxLogin userWxLogin){
-        //检查openid、电话是否存在
-        if (userMapper.checkExist(userWxLogin)!=null) {
-            return ResponseResultUtil.error(ErrorCodeEnum.USER_IS_EXIST.getCode(), ErrorCodeEnum.USER_IS_EXIST.getMessage());
+        UserLogin userLogin = userMapper.getByWxid(userWxLogin.getUserWxid());
+        if (userLogin == null) {
+            //openid没查到,用手机号再查一次
+            userLogin = userMapper.getByPhone(userWxLogin.getUserPhone());
+        } else if (userLogin.getUserWxid()==null) {
+            //通过手机号查到了用户,但是openid是空,更新上当前的openid
+            userMapper.updateWxid(userLogin.getUserId(), userWxLogin.getUserWxid());
         }
 
-        //注册
-        userMapper.insert(userWxLogin);
+        //用户无法通过openid或手机号查到 或 通过手机号查到了,但openid不同
+        if (userLogin == null || !userWxLogin.getUserWxid().equals(userLogin.getUserWxid())){
+            //将其他微信用户的相同电话清空
+            userMapper.cleanPhone(userWxLogin.getUserPhone());
+            //注册
+            userMapper.insert(userWxLogin);
 
-        try {
-            UserLogin userLogin = userMapper.getByWxid(userWxLogin.getUserWxid());
-            if (userLogin == null) {
-                //无用户
-                return ResponseResultUtil.error(ErrorCodeEnum.USER_NOT_EXIST.getCode(), ErrorCodeEnum.USER_NOT_EXIST.getMessage());
-            }
-            userLogin.checkUserLogin();
+            userLogin = userMapper.getByWxid(userWxLogin.getUserWxid());
+        }
 
+        userLogin.checkUserLogin();
+        try {
             return createToken(userLogin);
         } catch (Exception e) {
             log.error("获取accessToken发生异常=", e);

+ 5 - 10
src/main/resources/mapper/UserMapper.xml

@@ -4,6 +4,7 @@
 
     <resultMap type="com.dk.oauth.entity.UserLogin" id="ResultMap">
         <result column="user_id" property="userId"/>
+        <result column="user_wxid" property="userWxid"/>
         <result column="user_name" property="userName"/>
         <result column="user_phone" property="userPhone"/>
         <result column="user_pwd" property="userPwd"/>
@@ -13,24 +14,18 @@
 
     <select id="getByPhone" resultMap="ResultMap">
         SELECT
-          user_id, user_name, user_phone, user_pwd, current_cp, flg_valid
+          user_id, user_wxid, user_name, user_phone, user_pwd, current_cp, flg_valid
         FROM dkic_a.t_wx_user
         where user_phone = #{userPhone}
     </select>
 
     <select id="getByWxid" resultMap="ResultMap">
         SELECT
-            user_id, user_name, user_phone, user_pwd, current_cp, flg_valid
+            user_id, user_wxid, user_name, user_phone, user_pwd, current_cp, flg_valid
         FROM dkic_a.t_wx_user
         where user_wxid = #{userWxid}
     </select>
 
-    <select id="checkExist" resultType="Integer">
-        select 1 from dkic_a.t_wx_user
-        where user_wxid = #{userWxid} or user_phone = #{userPhone}
-        limit 1
-    </select>
-
     <insert id="insert">
         insert into dkic_a.t_wx_user (user_wxid, user_name, user_phone, user_pwd)
         values (#{userWxid}, #{userName}, #{userPhone}, md5('123'))
@@ -41,8 +36,8 @@
         where user_phone = #{userPhone}
     </update>
 
-    <update id="updatePhone">
-        update dkic_a.t_wx_user set user_phone = #{userPhone}
+    <update id="updateWxid">
+        update dkic_a.t_wx_user set user_wxid = #{userWxid}
         where user_id = #{userId}::uuid
     </update>
 </mapper>