hongxudong %!s(int64=2) %!d(string=hai) anos
pai
achega
9000904ae5

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

@@ -40,9 +40,16 @@ public interface UserMapper {
     int cleanPhone(@Param("userPhone") String userPhone);
 
     /**
-     * @desc   : 通过id更新手机
+     * @desc   : 通过id更新微信
      * @author : 洪旭东
      * @date   : 2024-02-20 14:12
      */
     int updateWxid(@Param("userId") String userId, @Param("userWxid") String userWxid);
+
+    /**
+     * @desc   : 通过id更新手机号
+     * @author : 洪旭东
+     * @date   : 2024-02-20 14:12
+     */
+    int updatePhone(@Param("userId") String userId, @Param("userPhone") String userPhone);
 }

+ 9 - 0
src/main/java/com/dk/oauth/service/impl/AuthAccessTokenServiceImpl.java

@@ -161,6 +161,15 @@ public class AuthAccessTokenServiceImpl extends ServiceImpl<AuthAccessTokenMappe
     @Transactional(rollbackFor = Exception.class)
     public ResponseResultVO<?> register(UserWxLogin userWxLogin){
         UserLogin userLogin = userMapper.getByWxid(userWxLogin.getUserWxid());
+
+        //通过openid查到用户,但手机号为空
+        if (userLogin != null && userLogin.getUserPhone()==null) {
+            //将其他微信用户的相同电话清空
+            userMapper.cleanPhone(userWxLogin.getUserPhone());
+            //更新当前手机号
+            userMapper.updatePhone(userLogin.getUserId(), userWxLogin.getUserPhone());
+        }
+
         if (userLogin == null) {
             //openid没查到,用手机号再查一次
             userLogin = userMapper.getByPhone(userWxLogin.getUserPhone());

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

@@ -40,4 +40,9 @@
         update dkic_a.t_wx_user set user_wxid = #{userWxid}
         where user_id = #{userId}::uuid
     </update>
+
+    <update id="updatePhone">
+        update dkic_a.t_wx_user set user_phone = #{userPhone}
+        where user_id = #{userId}::uuid
+    </update>
 </mapper>