|
|
@@ -11,9 +11,12 @@ import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
+import shop.alien.config.redis.BaseRedisService;
|
|
|
import shop.alien.entity.store.StorePlatformRole;
|
|
|
+import shop.alien.entity.store.StoreUser;
|
|
|
import shop.alien.entity.store.vo.StorePlatformRoleVo;
|
|
|
import shop.alien.mapper.StorePlatformRoleMapper;
|
|
|
+import shop.alien.mapper.StoreUserMapper;
|
|
|
import shop.alien.storeplatform.service.StorePlatformRoleMenuService;
|
|
|
import shop.alien.storeplatform.service.StorePlatformRoleService;
|
|
|
import shop.alien.storeplatform.service.StorePlatformUserRoleService;
|
|
|
@@ -36,6 +39,8 @@ public class StorePlatformRoleServiceImpl extends ServiceImpl<StorePlatformRoleM
|
|
|
private final StorePlatformRoleMapper storePlatformRoleMapper;
|
|
|
private final StorePlatformRoleMenuService storePlatformRoleMenuService;
|
|
|
private final StorePlatformUserRoleService storePlatformUserRoleService;
|
|
|
+ private final StoreUserMapper storeUserMapper;
|
|
|
+ private final BaseRedisService baseRedisService;
|
|
|
|
|
|
@Override
|
|
|
public IPage<StorePlatformRole> getRolePage(int page, int size, Integer storeId, String roleName, String description, String status) {
|
|
|
@@ -273,6 +278,36 @@ public class StorePlatformRoleServiceImpl extends ServiceImpl<StorePlatformRoleM
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
+ //角色被编辑 清除当前被编辑角色的账号的token
|
|
|
+ try {
|
|
|
+ // 获取该角色下的所有用户ID
|
|
|
+ Integer storeId = role.getStoreId() != null ? role.getStoreId() : originalRole.getStoreId();
|
|
|
+ List<Integer> userIds = storePlatformUserRoleService.getUserIdsByRoleId(role.getRoleId(), storeId);
|
|
|
+ if (userIds != null && !userIds.isEmpty()) {
|
|
|
+ // 根据用户ID查询用户信息,获取手机号
|
|
|
+ for (Integer userId : userIds) {
|
|
|
+ StoreUser storeUser = storeUserMapper.selectById(userId);
|
|
|
+ if (storeUser != null && storeUser.getPhone() != null) {
|
|
|
+ // 删除Redis中的token,key格式:storePlatform_手机号
|
|
|
+ String tokenKey = "store_" + storeUser.getPhone();
|
|
|
+ String existingToken = baseRedisService.getString(tokenKey);
|
|
|
+ if (existingToken != null) {
|
|
|
+ baseRedisService.delete(tokenKey);
|
|
|
+ log.info("清除角色编辑后的用户token成功,roleId={}, userId={}, phone={}, tokenKey={}",
|
|
|
+ role.getRoleId(), userId, storeUser.getPhone(), tokenKey);
|
|
|
+ } else {
|
|
|
+ log.warn("用户token不存在或已过期,roleId={}, userId={}, phone={}, tokenKey={}",
|
|
|
+ role.getRoleId(), userId, storeUser.getPhone(), tokenKey);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ log.info("该角色下没有关联用户,无需清除token,roleId={}", role.getRoleId());
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("清除角色编辑后的用户token失败,roleId={}, error={}", role.getRoleId(), e.getMessage(), e);
|
|
|
+ // 不清除token不影响角色更新,只记录错误日志
|
|
|
+ }
|
|
|
log.info("成功更新角色权限,roleId={}, menuIds={}", role.getRoleId(), menuIds);
|
|
|
}
|
|
|
|