[fix] 修复微信登录后unionid和openid信息丢失的问题

This commit is contained in:
hsdllcw
2025-05-27 15:12:23 +08:00
parent bea7a6efd3
commit 585d83d007
6 changed files with 27 additions and 27 deletions

View File

@@ -331,10 +331,8 @@ public class SysUserServiceImpl implements ISysUserService
insertUserPost(user); insertUserPost(user);
// 重绑定微信信息 // 重绑定微信信息
if (Objects.nonNull(user.getSysUserAccount())) { if (Objects.nonNull(user.getSysUserAccount())) {
KSysUserAccount sysUserAccount = new KSysUserAccount();
sysUserAccount.setUserId(userId);
kSysUserService.updateSysUserAccount(sysUserAccount);
if (Objects.nonNull(user.getSysUserAccount().getWxUnionId())) { if (Objects.nonNull(user.getSysUserAccount().getWxUnionId())) {
kSysUserService.unBindWxByUserId(userId);
kSysUserService.updateSysUserAccount(user.getSysUserAccount()); kSysUserService.updateSysUserAccount(user.getSysUserAccount());
} }
} }

View File

@@ -140,7 +140,7 @@ open class InnerSysUserController : BaseController() {
originUser.avatar = targetUser.avatar ?: originUser.avatar originUser.avatar = targetUser.avatar ?: originUser.avatar
originUser.sex = targetUser.sex ?: originUser.sex originUser.sex = targetUser.sex ?: originUser.sex
originUser.updateBy = originUser.userName originUser.updateBy = originUser.userName
originUser.sysUserAccount = loginUser.sysUser.sysUserAccount originUser.sysUserAccount = loginUser.sysUser.sysUserAccount.apply { this.userId = originUser.userId }
userService.updateUser(originUser) userService.updateUser(originUser)
// 更新缓存用户信息 // 更新缓存用户信息
tokenService.setLoginUser(loginUser) tokenService.setLoginUser(loginUser)

View File

@@ -2,6 +2,7 @@ package com.ruoyi.system.mapper
import com.ruoyi.system.api.domain.KSysUserAccount import com.ruoyi.system.api.domain.KSysUserAccount
import com.ruoyi.system.api.domain.SysUser import com.ruoyi.system.api.domain.SysUser
import org.apache.ibatis.annotations.Param
/** /**
* 用户表 数据层 * 用户表 数据层
@@ -16,6 +17,7 @@ interface KSysUserMapper {
* @return 用户对象信息 * @return 用户对象信息
*/ */
fun selectUserById(userId: Long): KSysUserAccount? fun selectUserById(userId: Long): KSysUserAccount?
/** /**
* 通过用户名查询用户 * 通过用户名查询用户
* *
@@ -36,5 +38,5 @@ interface KSysUserMapper {
fun updateSysUserAccount(sysUserAccount: KSysUserAccount): Int fun updateSysUserAccount(sysUserAccount: KSysUserAccount): Int
fun unBindWxUnionIdByUserId(params: Map<String, Any?>): Int fun unBindWxByUserId(@Param("userId") userId: Long): Int
} }

View File

@@ -44,5 +44,5 @@ interface IKSysUserService {
/** /**
* 解绑微信 * 解绑微信
*/ */
fun unBindWxUnionIdByUserId(userId: Long): Int fun unBindWxByUserId(userId: Long): Int
} }

View File

@@ -50,12 +50,7 @@ open class KSysUserServiceImpl : IKSysUserService {
return kSysUserMapper.updateSysUserAccount(sysUserAccount) return kSysUserMapper.updateSysUserAccount(sysUserAccount)
} }
override fun unBindWxUnionIdByUserId(userId: Long): Int { override fun unBindWxByUserId(userId: Long): Int {
return kSysUserMapper.unBindWxUnionIdByUserId( return kSysUserMapper.unBindWxByUserId(userId)
mapOf(
"userId" to userId,
"wxUnionId" to null,
)
)
} }
} }

View File

@@ -130,23 +130,28 @@
</insert> </insert>
<update id="updateSysUserAccount"> <update id="updateSysUserAccount">
update ums_member_wechat update ums_member_wechat
set unionid = #{wxUnionId}, <set>
openid = #{openid}, <if test="unionid != null and unionid != ''">unionid = #{unionid},</if>
routine_openid = #{routineOpenid}, <if test="openid != null and openid != ''">openid = #{openid},</if>
groupid = #{groupid}, <if test="routineOpenid != null and routineOpenid != ''">routine_openid = #{routineOpenid},</if>
tagid_list = #{tagidList}, <if test="groupid != null and groupid != ''">groupid = #{groupid},</if>
subscribe = #{subscribe}, <if test="tagidList != null and tagidList != ''">tagid_list = #{tagidList},</if>
subscribe_time = #{subscribeTime}, <if test="subscribe != null and subscribe != ''">subscribe = #{subscribe},</if>
session_key = #{sessionKey}, <if test="subscribeTime != null and subscribeTime != ''">subscribe_time = #{subscribeTime},</if>
access_token = #{accessToken}, <if test="sessionKey != null and sessionKey != ''">session_key = #{sessionKey},</if>
expires_in = #{expiresIn}, <if test="accessToken != null and accessToken != ''">access_token = #{accessToken},</if>
refresh_token = #{refreshToken}, <if test="expiresIn != null and expiresIn != ''">expires_in = #{expiresIn},</if>
expire_time = #{expireTime} <if test="refreshToken != null and refreshToken != ''">refresh_token = #{refreshToken},</if>
<if test="expireTime != null and expireTime != ''">expire_time = #{expireTime},</if>
update_time = sysdate()
</set>
where member_id = #{userId} where member_id = #{userId}
</update> </update>
<insert id="unBindWxUnionIdByUserId"> <insert id="unBindWxByUserId">
update ums_member_wechat update ums_member_wechat
set unionid = #{wxUnionId} set unionid = null,
openid = null,
routine_openid = null
where member_id = #{userId} where member_id = #{userId}
</insert> </insert>
</mapper> </mapper>