【更新】登录时如果新的用户登录没有菜单则清空顶部模块选中

This commit is contained in:
俞宝山
2026-01-27 00:22:02 +08:00
parent 93d7c5daf2
commit cf34cdb621
10 changed files with 80 additions and 5 deletions

View File

@@ -12,6 +12,10 @@
*/ */
package vip.xiaonuo.dev.api; package vip.xiaonuo.dev.api;
import cn.hutool.json.JSONObject;
import java.util.List;
/** /**
* 字典API * 字典API
* *
@@ -27,4 +31,12 @@ public interface DevDictApi {
* @date 2025/6/6 13:04 * @date 2025/6/6 13:04
*/ */
String getDictLabel(String typeCode, String value); String getDictLabel(String typeCode, String value);
/**
* 根据父类型获取字典列表
*
* @author xuyuxiang
* @date 2025/6/6 13:04
*/
List<JSONObject> getDictListByParentDictValue(String typeCode);
} }

View File

@@ -269,7 +269,7 @@ public class AuthThirdServiceImpl extends ServiceImpl<AuthThirdMapper, AuthThird
.clientSecret(devConfigApi.getValueByKey(SNOWY_THIRD_IAM_CLIENT_SECRET_KEY)) .clientSecret(devConfigApi.getValueByKey(SNOWY_THIRD_IAM_CLIENT_SECRET_KEY))
.redirectUri(devConfigApi.getValueByKey(SNOWY_THIRD_IAM_REDIRECT_URL_KEY)) .redirectUri(devConfigApi.getValueByKey(SNOWY_THIRD_IAM_REDIRECT_URL_KEY))
.ignoreCheckState(true) .ignoreCheckState(true)
.scopes(CollectionUtil.newArrayList("profile", "account", "email", "phone")) .scopes(CollectionUtil.newArrayList("profile", "account", "email", "phone", "org", "position"))
.build(), Map.of( .build(), Map.of(
"authorizeUrl", devConfigApi.getValueByKey(SNOWY_THIRD_IAM_AUTHORIZE_URL_KEY), "authorizeUrl", devConfigApi.getValueByKey(SNOWY_THIRD_IAM_AUTHORIZE_URL_KEY),
"accessTokenUrl", devConfigApi.getValueByKey(SNOWY_THIRD_IAM_ACCESS_TOKEN_URL_KEY), "accessTokenUrl", devConfigApi.getValueByKey(SNOWY_THIRD_IAM_ACCESS_TOKEN_URL_KEY),

View File

@@ -36,7 +36,13 @@ public enum BizDataTypeEnum {
/** /**
* 人员 * 人员
*/ */
USER("USER"); USER("USER"),
/**
* 用户组
*/
GROUP("GROUP");
private final String value; private final String value;

View File

@@ -28,6 +28,7 @@ import jakarta.annotation.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import vip.xiaonuo.auth.core.util.StpLoginUserUtil; import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
import vip.xiaonuo.biz.core.enums.BizDataTypeEnum;
import vip.xiaonuo.biz.modular.group.entity.BizGroup; import vip.xiaonuo.biz.modular.group.entity.BizGroup;
import vip.xiaonuo.biz.modular.group.mapper.BizGroupMapper; import vip.xiaonuo.biz.modular.group.mapper.BizGroupMapper;
import vip.xiaonuo.biz.modular.group.param.*; import vip.xiaonuo.biz.modular.group.param.*;
@@ -39,6 +40,7 @@ import vip.xiaonuo.biz.modular.user.enums.BizUserStatusEnum;
import vip.xiaonuo.biz.modular.user.service.BizUserService; import vip.xiaonuo.biz.modular.user.service.BizUserService;
import vip.xiaonuo.common.enums.CommonSortOrderEnum; import vip.xiaonuo.common.enums.CommonSortOrderEnum;
import vip.xiaonuo.common.exception.CommonException; import vip.xiaonuo.common.exception.CommonException;
import vip.xiaonuo.common.listener.CommonDataChangeEventCenter;
import vip.xiaonuo.common.page.CommonPageRequest; import vip.xiaonuo.common.page.CommonPageRequest;
import vip.xiaonuo.sys.api.SysGroupApi; import vip.xiaonuo.sys.api.SysGroupApi;
@@ -85,6 +87,8 @@ public class BizGroupServiceImpl extends ServiceImpl<BizGroupMapper, BizGroup> i
public void add(BizGroupAddParam bizGroupAddParam) { public void add(BizGroupAddParam bizGroupAddParam) {
BizGroup bizGroup = BeanUtil.toBean(bizGroupAddParam, BizGroup.class); BizGroup bizGroup = BeanUtil.toBean(bizGroupAddParam, BizGroup.class);
this.save(bizGroup); this.save(bizGroup);
// 发布增加事件
CommonDataChangeEventCenter.doAddWithData(BizDataTypeEnum.GROUP.getValue(), JSONUtil.createArray().put(bizGroup));
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@@ -93,13 +97,18 @@ public class BizGroupServiceImpl extends ServiceImpl<BizGroupMapper, BizGroup> i
BizGroup bizGroup = this.queryEntity(bizGroupEditParam.getId()); BizGroup bizGroup = this.queryEntity(bizGroupEditParam.getId());
BeanUtil.copyProperties(bizGroupEditParam, bizGroup); BeanUtil.copyProperties(bizGroupEditParam, bizGroup);
this.updateById(bizGroup); this.updateById(bizGroup);
// 发布更新事件
CommonDataChangeEventCenter.doUpdateWithData(BizDataTypeEnum.GROUP.getValue(), JSONUtil.createArray().put(bizGroup));
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public void delete(List<BizGroupIdParam> bizGroupIdParamList) { public void delete(List<BizGroupIdParam> bizGroupIdParamList) {
List<String> groupIdList = CollStreamUtil.toList(bizGroupIdParamList, BizGroupIdParam::getId);
// 执行删除 // 执行删除
this.removeByIds(CollStreamUtil.toList(bizGroupIdParamList, BizGroupIdParam::getId)); this.removeByIds(groupIdList);
// 发布删除事件
CommonDataChangeEventCenter.doDeleteWithDataIdList(BizDataTypeEnum.GROUP.getValue(), groupIdList);
} }
@Override @Override

View File

@@ -12,11 +12,14 @@
*/ */
package vip.xiaonuo.dev.modular.dict.provider; package vip.xiaonuo.dev.modular.dict.provider;
import cn.hutool.json.JSONObject;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import vip.xiaonuo.dev.api.DevDictApi; import vip.xiaonuo.dev.api.DevDictApi;
import vip.xiaonuo.dev.modular.dict.service.DevDictService; import vip.xiaonuo.dev.modular.dict.service.DevDictService;
import java.util.List;
/** /**
* 字典API接口实现类 * 字典API接口实现类
* *
@@ -38,4 +41,15 @@ public class DevDictApiProvider implements DevDictApi {
public String getDictLabel(String typeCode, String value) { public String getDictLabel(String typeCode, String value) {
return devDictService.getDictLabel(typeCode, value); return devDictService.getDictLabel(typeCode, value);
} }
/**
* 根据父类型获取字典列表
*
* @author yubaoshan
* @date 2025/6/6 13:04
*/
@Override
public List<JSONObject> getDictListByParentDictValue(String typeCode) {
return devDictService.getDictListByParentDictValue(typeCode);
}
} }

View File

@@ -13,6 +13,7 @@
package vip.xiaonuo.dev.modular.dict.service; package vip.xiaonuo.dev.modular.dict.service;
import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.lang.tree.Tree;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import vip.xiaonuo.dev.modular.dict.entity.DevDict; import vip.xiaonuo.dev.modular.dict.entity.DevDict;
@@ -99,4 +100,12 @@ public interface DevDictService extends IService<DevDict> {
* @date 2025/6/6 13:04 * @date 2025/6/6 13:04
*/ */
String getDictLabel(String typeCode, String value); String getDictLabel(String typeCode, String value);
/**
* 根据父类型获取字典列表
*
* @author yubaoshan
* @date 2025/6/6 13:04
*/
List<JSONObject> getDictListByParentDictValue(String typeCode);
} }

View File

@@ -22,6 +22,7 @@ import cn.hutool.core.lang.tree.parser.DefaultNodeParser;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -251,4 +252,11 @@ public class DevDictServiceImpl extends ServiceImpl<DevDictMapper, DevDict> impl
} }
return null; return null;
} }
@Override
public List<JSONObject> getDictListByParentDictValue(String typeCode) {
DevDict parentDict = this.getOne(new LambdaQueryWrapper<DevDict>().eq(DevDict::getDictValue, typeCode));
return this.list(new LambdaQueryWrapper<DevDict>().eq(DevDict::getParentId, parentDict.getId())).stream()
.map(JSONUtil::parseObj).collect(Collectors.toList());
}
} }

View File

@@ -46,7 +46,12 @@ public enum SysDataTypeEnum {
/** /**
* 用户 * 用户
*/ */
USER("USER"); USER("USER"),
/**
* 用户组
*/
GROUP("GROUP");
private final String value; private final String value;

View File

@@ -19,6 +19,7 @@ import cn.hutool.core.lang.tree.TreeNode;
import cn.hutool.core.lang.tree.TreeUtil; import cn.hutool.core.lang.tree.TreeUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -28,13 +29,16 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import vip.xiaonuo.common.enums.CommonSortOrderEnum; import vip.xiaonuo.common.enums.CommonSortOrderEnum;
import vip.xiaonuo.common.exception.CommonException; import vip.xiaonuo.common.exception.CommonException;
import vip.xiaonuo.common.listener.CommonDataChangeEventCenter;
import vip.xiaonuo.common.page.CommonPageRequest; import vip.xiaonuo.common.page.CommonPageRequest;
import vip.xiaonuo.sys.core.enums.SysDataTypeEnum;
import vip.xiaonuo.sys.modular.group.entity.SysGroup; import vip.xiaonuo.sys.modular.group.entity.SysGroup;
import vip.xiaonuo.sys.modular.group.mapper.SysGroupMapper; import vip.xiaonuo.sys.modular.group.mapper.SysGroupMapper;
import vip.xiaonuo.sys.modular.group.param.*; import vip.xiaonuo.sys.modular.group.param.*;
import vip.xiaonuo.sys.modular.group.service.SysGroupService; import vip.xiaonuo.sys.modular.group.service.SysGroupService;
import vip.xiaonuo.sys.modular.org.entity.SysOrg; import vip.xiaonuo.sys.modular.org.entity.SysOrg;
import vip.xiaonuo.sys.modular.org.service.SysOrgService; import vip.xiaonuo.sys.modular.org.service.SysOrgService;
import vip.xiaonuo.sys.modular.position.param.SysPositionIdParam;
import vip.xiaonuo.sys.modular.relation.entity.SysRelation; import vip.xiaonuo.sys.modular.relation.entity.SysRelation;
import vip.xiaonuo.sys.modular.relation.enums.SysRelationCategoryEnum; import vip.xiaonuo.sys.modular.relation.enums.SysRelationCategoryEnum;
import vip.xiaonuo.sys.modular.relation.service.SysRelationService; import vip.xiaonuo.sys.modular.relation.service.SysRelationService;
@@ -87,6 +91,8 @@ public class SysGroupServiceImpl extends ServiceImpl<SysGroupMapper, SysGroup> i
public void add(SysGroupAddParam sysGroupAddParam) { public void add(SysGroupAddParam sysGroupAddParam) {
SysGroup sysGroup = BeanUtil.toBean(sysGroupAddParam, SysGroup.class); SysGroup sysGroup = BeanUtil.toBean(sysGroupAddParam, SysGroup.class);
this.save(sysGroup); this.save(sysGroup);
// 发布增加事件
CommonDataChangeEventCenter.doAddWithData(SysDataTypeEnum.GROUP.getValue(), JSONUtil.createArray().put(sysGroup));
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@@ -95,13 +101,18 @@ public class SysGroupServiceImpl extends ServiceImpl<SysGroupMapper, SysGroup> i
SysGroup sysGroup = this.queryEntity(sysGroupEditParam.getId()); SysGroup sysGroup = this.queryEntity(sysGroupEditParam.getId());
BeanUtil.copyProperties(sysGroupEditParam, sysGroup); BeanUtil.copyProperties(sysGroupEditParam, sysGroup);
this.updateById(sysGroup); this.updateById(sysGroup);
// 发布更新事件
CommonDataChangeEventCenter.doUpdateWithData(SysDataTypeEnum.GROUP.getValue(), JSONUtil.createArray().put(sysGroup));
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public void delete(List<SysGroupIdParam> sysGroupIdParamList) { public void delete(List<SysGroupIdParam> sysGroupIdParamList) {
List<String> groupIdList = CollStreamUtil.toList(sysGroupIdParamList, SysGroupIdParam::getId);
// 执行删除 // 执行删除
this.removeByIds(CollStreamUtil.toList(sysGroupIdParamList, SysGroupIdParam::getId)); this.removeByIds(groupIdList);
// 发布删除事件
CommonDataChangeEventCenter.doDeleteWithDataIdList(SysDataTypeEnum.GROUP.getValue(), groupIdList);
} }
@Override @Override

View File

@@ -1469,6 +1469,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
if (ObjectUtil.isEmpty(sysUser)) { if (ObjectUtil.isEmpty(sysUser)) {
throw new CommonException("用户不存在id值为{}", id); throw new CommonException("用户不存在id值为{}", id);
} }
transService.transOne(sysUser);
return sysUser; return sysUser;
} }