@@ -52,7 +52,12 @@ public class MenuServiceImpl extends BaseServiceImpl<MenuMapper, MenuDO, MenuRes
52
52
@ Override
53
53
public Long add (MenuReq req ) {
54
54
String title = req .getTitle ();
55
- CheckUtils .throwIf (this .isNameExists (title , req .getParentId (), null ), "新增失败,[{}] 已存在" , title );
55
+ CheckUtils .throwIf (this .isTitleExists (title , req .getParentId (), null ), "新增失败,标题 [{}] 已存在" , title );
56
+ // 目录和菜单的组件名称不能重复
57
+ if (!MenuTypeEnum .BUTTON .equals (req .getType ())) {
58
+ String name = req .getName ();
59
+ CheckUtils .throwIf (this .isNameExists (name , null ), "新增失败,组件名称 [{}] 已存在" , name );
60
+ }
56
61
// 目录类型菜单,默认为 Layout
57
62
if (MenuTypeEnum .DIR .equals (req .getType ())) {
58
63
req .setComponent (StrUtil .blankToDefault (req .getComponent (), "Layout" ));
@@ -64,7 +69,12 @@ public Long add(MenuReq req) {
64
69
@ Override
65
70
public void update (MenuReq req , Long id ) {
66
71
String title = req .getTitle ();
67
- CheckUtils .throwIf (this .isNameExists (title , req .getParentId (), id ), "修改失败,[{}] 已存在" , title );
72
+ CheckUtils .throwIf (this .isTitleExists (title , req .getParentId (), id ), "修改失败,标题 [{}] 已存在" , title );
73
+ // 目录和菜单的组件名称不能重复
74
+ if (!MenuTypeEnum .BUTTON .equals (req .getType ())) {
75
+ String name = req .getName ();
76
+ CheckUtils .throwIf (this .isNameExists (name , id ), "修改失败,组件名称 [{}] 已存在" , name );
77
+ }
68
78
MenuDO oldMenu = super .getById (id );
69
79
CheckUtils .throwIfNotEqual (req .getType (), oldMenu .getType (), "不允许修改菜单类型" );
70
80
super .update (req , id );
@@ -100,18 +110,33 @@ public List<MenuResp> listByRoleCode(String roleCode) {
100
110
}
101
111
102
112
/**
103
- * 名称是否存在
113
+ * 标题是否存在
104
114
*
105
- * @param name 名称
115
+ * @param title 标题
106
116
* @param parentId 上级 ID
107
117
* @param id ID
108
- * @return 是否存在
118
+ * @return true:存在;false:不存在
109
119
*/
110
- private boolean isNameExists (String name , Long parentId , Long id ) {
120
+ private boolean isTitleExists (String title , Long parentId , Long id ) {
111
121
return baseMapper .lambdaQuery ()
112
- .eq (MenuDO ::getTitle , name )
122
+ .eq (MenuDO ::getTitle , title )
113
123
.eq (MenuDO ::getParentId , parentId )
114
124
.ne (null != id , MenuDO ::getId , id )
115
125
.exists ();
116
126
}
127
+
128
+ /**
129
+ * 名称是否存在
130
+ *
131
+ * @param name 标题
132
+ * @param id ID
133
+ * @return true:存在;false:不存在
134
+ */
135
+ private boolean isNameExists (String name , Long id ) {
136
+ return baseMapper .lambdaQuery ()
137
+ .eq (MenuDO ::getName , name )
138
+ .ne (MenuDO ::getType , MenuTypeEnum .BUTTON )
139
+ .ne (null != id , MenuDO ::getId , id )
140
+ .exists ();
141
+ }
117
142
}
0 commit comments