【底座】针对 #IJVOA5 完善C端用户编辑接口“client/user/edit”更新C端用户登录信息

This commit is contained in:
xuyuxiang
2026-07-07 22:36:13 +08:00
parent 9a72e012df
commit ae7184b6ef
2 changed files with 34 additions and 1 deletions
@@ -12,15 +12,19 @@
*/
package vip.xiaonuo.client.modular.user.provider;
import cn.dev33.satoken.session.SaSession;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import vip.xiaonuo.auth.api.SaBaseLoginUserApi;
import vip.xiaonuo.auth.core.pojo.SaBaseClientLoginUser;
import vip.xiaonuo.auth.core.pojo.SaBaseLoginUser;
import vip.xiaonuo.auth.core.util.StpClientUtil;
import vip.xiaonuo.client.modular.user.entity.ClientUser;
import vip.xiaonuo.client.modular.user.result.ClientLoginUser;
import vip.xiaonuo.client.modular.user.service.ClientUserService;
@@ -34,6 +38,7 @@ import java.util.stream.Collectors;
* @author xuyuxiang
* @date 2022/4/29 13:36
**/
@Slf4j
@Service("clientLoginUserApi")
public class ClientLoginUserApiProvider implements SaBaseLoginUserApi {
@@ -239,6 +244,27 @@ public class ClientLoginUserApiProvider implements SaBaseLoginUserApi {
@Override
public void refreshOnlineUserPermission(String userId) {
// C端用户暂无数据权限机制,无需刷新
// 获取该用户所有在线token
List<String> tokenList = StpClientUtil.getTokenValueListByLoginId(userId);
if (ObjectUtil.isEmpty(tokenList)) {
return;
}
// 获取用户基本信息
SaBaseClientLoginUser saBaseClientLoginUser = this.getClientUserById(userId);
if (ObjectUtil.isEmpty(saBaseClientLoginUser)) {
return;
}
// 写入该用户的所有TokenSession
for (String token : tokenList) {
try {
SaSession session = StpClientUtil.getTokenSessionByToken(token);
if (session != null) {
session.set("loginUser", saBaseClientLoginUser);
}
} catch (Exception e) {
log.warn(">>> 刷新C端用户权限缓存时跳过无效token,userId:{},token:{}", userId, token);
}
}
log.info(">>> 已刷新C端在线用户权限缓存,userId:{},token数:{}", userId, tokenList.size());
}
}
@@ -38,6 +38,7 @@ import org.dromara.trans.service.impl.TransService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import vip.xiaonuo.auth.api.SaBaseLoginUserApi;
import vip.xiaonuo.auth.core.pojo.SaBaseClientLoginUser;
import vip.xiaonuo.auth.core.util.StpClientUtil;
import vip.xiaonuo.auth.core.util.StpClientLoginUserUtil;
@@ -160,6 +161,9 @@ public class ClientUserServiceImpl extends ServiceImpl<ClientUserMapper, ClientU
@Resource
private AuthApi authApi;
@Resource(name = "clientLoginUserApi")
private SaBaseLoginUserApi loginUserApi;
@Override
public ClientLoginUser getUserById(String id) {
ClientUser clientUser = this.getById(id);
@@ -273,6 +277,9 @@ public class ClientUserServiceImpl extends ServiceImpl<ClientUserMapper, ClientU
checkParam(clientUserEditParam);
BeanUtil.copyProperties(clientUserEditParam, clientUser);
this.updateById(clientUser);
// 刷新该用户的在线缓存信息
loginUserApi.refreshOnlineUserPermission(clientUserEditParam.getId());
}
private void checkParam(ClientUserEditParam clientUserEditParam) {