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

pull/445/head
hsdllcw 7 months ago
parent bea7a6efd3
commit 585d83d007

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

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

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

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

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

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