From 2a7781d6908f2b8dcd197ba215301761603fe17d Mon Sep 17 00:00:00 2001
From: zhuo <2089219845@qq.com>
Date: 星期四, 20 二月 2025 17:56:03 +0800
Subject: [PATCH] 添加仅看我权限注解

---
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java                    |   15 ++
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java                      |   20 +++-
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeSelect.java                        |   16 +++
 basic-server/src/main/java/com/ruoyi/basic/controller/StandardTemplateController.java          |    2 
 inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java              |    4 
 inspect-server/src/main/java/com/ruoyi/inspect/controller/RawMaterialOrderController.java      |    8 +
 ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysRoleVo.java                           |   21 ++++
 ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml                            |   27 ++++-
 ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/PersonalScopeAspect.java             |   82 ++++++++++++++++
 inspect-server/src/main/java/com/ruoyi/inspect/controller/InsUnqualifiedHandlerController.java |    4 
 ruoyi-common/src/main/java/com/ruoyi/common/annotation/PersonalScope.java                      |   32 ++++++
 ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java                   |    2 
 ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml                                |    6 
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java       |    6 -
 14 files changed, 217 insertions(+), 28 deletions(-)

diff --git a/basic-server/src/main/java/com/ruoyi/basic/controller/StandardTemplateController.java b/basic-server/src/main/java/com/ruoyi/basic/controller/StandardTemplateController.java
index 07be416..55cb2a9 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/controller/StandardTemplateController.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/controller/StandardTemplateController.java
@@ -57,7 +57,7 @@
     @GetMapping("/getEditTemplatePreparation")
     public Result<?> getEditTemplatePreparation(@RequestParam("id") Integer id) {
         StandardTemplate byId = standardTemplateService.getById(id);
-        return Result.success("OK", byId.getThing());
+        return Result.success(byId.getThing());
     }
 
     @ApiOperation(value = "澶嶅埗鍘熷璁板綍妯℃澘")
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java
index bda6f2e..b8f1002 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java
@@ -85,7 +85,7 @@
     @GetMapping("/selectOrderManDay")
     public Result<?> selectOrderManDay(Integer id) {
         int day = insProductService.selectOrderManDay(id);
-        return Result.success("鎴愬姛", LocalDateTime.now().plusHours(day).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+        return Result.success(LocalDateTime.now().plusHours(day).format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
     }
 
     @ApiOperation(value = "鏌ヨ妫�楠屼笅鍗曞唴瀹硅鎯�")
@@ -120,7 +120,7 @@
     @ApiOperation(value = "閫氳繃妫�楠屽崟妯℃澘id鑾峰彇妫�楠屽崟妯℃澘鍐呭")
     @GetMapping("/selectInsOrderTemplateById")
     public Result<?> selectInsOrderTemplateById(Integer id) {
-        return Result.success("鎴愬姛", insOrderTemplateService.selectInsOrderTemplateById(id));
+        return Result.success(insOrderTemplateService.selectInsOrderTemplateById(id));
     }
 
     @ApiOperation(value = "鍒犻櫎妫�楠屽崟妯℃澘")
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsUnqualifiedHandlerController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsUnqualifiedHandlerController.java
index 035e565..6712b95 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsUnqualifiedHandlerController.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsUnqualifiedHandlerController.java
@@ -4,6 +4,7 @@
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.annotation.Anonymous;
 import com.ruoyi.common.core.domain.Result;
 import com.ruoyi.common.oa.OAProcess;
 import com.ruoyi.inspect.dto.PushOADto;
@@ -59,6 +60,7 @@
     }
 
 
+    @Anonymous
     @ApiOperation(value = "涓嶅悎鏍煎鐞哋A鍥炶皟")
     @RequestMapping(value = "/callback", produces = "text/plain")
     public String unqualifiedHandlerOACallback(String data){
@@ -72,7 +74,7 @@
             JSONArray objects = JSONArray.parseArray(JSONObject.toJSONString(o));
             unqualifiedHandlerService.unqualifiedHandlerOACallback(oaWorkId, checkResult,objects);
         } catch (Exception e) {
-            System.out.println(e.getMessage());
+            log.error("oa鍥炶皟澶辫触: " + e.getMessage());
             msg = OAProcess.oaReturnMsg(1, "oa鍥炶皟澶辫触: " + e.getMessage());
         }
         System.out.println("oa鍥炶皟杩斿洖缁撴灉========>" + msg);
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/RawMaterialOrderController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/RawMaterialOrderController.java
index abc3b2a..1211049 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/controller/RawMaterialOrderController.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/controller/RawMaterialOrderController.java
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.basic.dto.*;
 import com.ruoyi.basic.pojo.IfsInventoryQuantity;
+import com.ruoyi.common.annotation.PersonalScope;
 import com.ruoyi.inspect.dto.InsPlaceOrderDto;
 import com.ruoyi.inspect.dto.SampleProductDto;
 import com.ruoyi.inspect.pojo.InsOrder;
@@ -19,6 +20,7 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
@@ -54,6 +56,8 @@
 
     @ApiOperation(value = "鍘熸潗鏂欐楠屾煡璇㈡楠屼腑")
     @GetMapping("/getIfsByStateOne")
+//    @PreAuthorize("@ss.hasPermi('business:order')")
+//    @PersonalScope(permsName = "business:order", objectName = IfsInventoryQuantityDto.class, paramName = "createUser")
     public Result getIfsByStateOne(Page page, IfsInventoryQuantityDto ifsInventoryQuantityDto){
         return Result.success(rawMaterialOrderService.getIfsByStateOne(page, ifsInventoryQuantityDto));
     }
@@ -78,7 +82,7 @@
     @ApiOperation(value = "閫氳繃鍘熸潗鏂欐楠屽崟妯℃澘id鑾峰彇妫�楠屽崟妯℃澘鍐呭")
     @GetMapping("/selectRawMaterOrderTemplateById")
     public Result<?> selectRawMaterOrderTemplateById(Integer id) {
-        return Result.success("鎴愬姛", rawMaterialOrderTemplateService.selectRawMaterOrderTemplateById(id));
+        return Result.success(rawMaterialOrderTemplateService.selectRawMaterOrderTemplateById(id));
     }
 
     @ApiOperation(value = "鍒犻櫎鍘熸潗鏂欐楠屽崟妯℃澘")
@@ -144,7 +148,7 @@
     @ApiOperation(value = "鑾峰彇閾滀骇涓氶摼妫�娴嬫暟鎹�")
     @GetMapping("/getIndustryChain")
     public Result<?> getIndustryChain(Integer id) {
-        return Result.success("鎴愬姛", rawMaterialOrderService.getIndustryChain(id));
+        return Result.success(rawMaterialOrderService.getIndustryChain(id));
     }
 
     /**
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java
index b1d6747..44bbca5 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java
@@ -743,9 +743,6 @@
             }
             return null;
         });
-        // todo: 鍒犻櫎鏁伴噰閲囬泦娆℃暟
-//        String key = "frequency" + ":" + entrustCode + ":*";
-//        RedisUtil.delsLike(key);
 
         // 鎻愪氦鐢熸垚鎶ュ憡
         this.generateReport(orderId);
@@ -789,8 +786,7 @@
             }
         }
 
-
-        // todo: 鎴愬搧鎶芥牱娣诲姞鍚堟牸鐘舵��
+        // 鎴愬搧鎶芥牱娣诲姞鍚堟牸鐘舵��
         // 鍒ゆ柇鏄惁鏈夋娊鏍蜂俊鎭�
         if (order.getQuarterItemId() != null) {
             // 鍒ゆ柇鏄惁鏈変笉鍚堟牸
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/annotation/PersonalScope.java b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/PersonalScope.java
new file mode 100644
index 0000000..6df29bc
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/annotation/PersonalScope.java
@@ -0,0 +1,32 @@
+package com.ruoyi.common.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * 浠呯湅鎴戞潈闄�
+ *
+ */
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface PersonalScope {
+
+    /**
+     * 鏉冮檺鏍囪瘑鍚嶇О
+     * @return
+     */
+    String permsName();
+
+    /**
+     * 瀵硅薄鍚嶇О
+     * @return
+     */
+    Class objectName();
+
+    /**
+     * 鍙傛暟鍚嶇О
+     * @return
+     */
+    String paramName();
+
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeSelect.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeSelect.java
index ae25df2..949196f 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeSelect.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeSelect.java
@@ -11,7 +11,7 @@
 
 /**
  * Treeselect鏍戠粨鏋勫疄浣撶被
- * 
+ *
  * @author ruoyi
  */
 public class TreeSelect implements Serializable
@@ -23,6 +23,9 @@
 
     /** 鑺傜偣鍚嶇О */
     private String label;
+
+    /** 鏄惁鍙互閫夋嫨浠呯湅鎴�, 0:鍚�, 1:鏄� */
+    private Integer isRersonalButton;
 
     /** 鑺傜偣绂佺敤 */
     private boolean disabled = false;
@@ -48,6 +51,7 @@
     {
         this.id = menu.getMenuId();
         this.label = menu.getMenuName();
+        this.isRersonalButton = menu.geIsRersonalButton();
         this.children = menu.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList());
     }
 
@@ -90,4 +94,14 @@
     {
         this.children = children;
     }
+
+    public Integer geIsRersonalButton()
+    {
+        return isRersonalButton;
+    }
+
+    public void setIsRersonalButton(Integer isRersonalButton)
+    {
+        this.isRersonalButton = isRersonalButton;
+    }
 }
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java
index ad73692..47354aa 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java
@@ -11,7 +11,7 @@
 
 /**
  * 鑿滃崟鏉冮檺琛� sys_menu
- * 
+ *
  * @author ruoyi
  */
 public class SysMenu extends BaseEntity
@@ -65,6 +65,9 @@
 
     /** 鑿滃崟鍥炬爣 */
     private String icon;
+
+    /** 鏄惁鍙互閫夋嫨浠呯湅鎴�, 0:鍚�, 1:鏄� */
+    private Integer isRersonalButton;
 
     /** 瀛愯彍鍗� */
     private List<SysMenu> children = new ArrayList<SysMenu>();
@@ -236,6 +239,16 @@
         this.icon = icon;
     }
 
+    public Integer geIsRersonalButton()
+    {
+        return isRersonalButton;
+    }
+
+    public void setIsRersonalButton(Integer isRersonalButton)
+    {
+        this.isRersonalButton = isRersonalButton;
+    }
+
     public List<SysMenu> getChildren()
     {
         return children;
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/PersonalScopeAspect.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/PersonalScopeAspect.java
new file mode 100644
index 0000000..c336760
--- /dev/null
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/PersonalScopeAspect.java
@@ -0,0 +1,82 @@
+package com.ruoyi.framework.aspectj;
+
+import com.ruoyi.common.annotation.PersonalScope;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.system.domain.vo.SysRoleVo;
+import com.ruoyi.system.mapper.SysRoleMenuMapper;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.aspectj.lang.annotation.Pointcut;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.lang.reflect.Field;
+import java.util.List;
+
+/**
+ * 浠呯湅鎴戞潈闄�
+ *
+ * @Author zhuo
+ * @Date 2025/2/20
+ */
+@Aspect
+@Component
+public class PersonalScopeAspect {
+
+    @Autowired
+    private SysRoleMenuMapper sysRoleMenuMapper;
+
+    @Pointcut("@annotation(com.ruoyi.common.annotation.PersonalScope)")
+    public void dataScopePointCut() {
+    }
+
+    @Before("dataScopePointCut()")
+    public void doBefore(JoinPoint point) throws Throwable {
+        Long userId = SecurityUtils.getUserId();
+
+        // 鑾峰彇鐩爣鏂规硶鐨勭鍚�
+        MethodSignature signature = (MethodSignature) point.getSignature();
+        // 鑾峰彇鐩爣鏂规硶涓婄殑娉ㄨВ
+        PersonalScope annotation = signature.getMethod().getAnnotation(PersonalScope.class);
+
+        // 鑾峰彇鏉冮檺鍒ゆ柇鏄惁鏄粎鐪嬫垜
+        SysRoleVo sysRoleVo = sysRoleMenuMapper.selectRoleMenu(annotation.permsName(), userId);
+
+        //娌℃湁浠呯湅鎴戞潈闄愯烦杩�
+        if (sysRoleVo == null || sysRoleVo.getIsRersonal() == null || !sysRoleVo.getIsRersonal().equals(1)) {
+            return;
+        }
+
+        // 鑾峰彇鏂归潰涓婃墍鏈夌殑瀵硅薄
+        Object[] args = point.getArgs();
+        for (Object arg : args) {
+            // 寰幆鏌ユ壘鍖归厤鐨勫璞�
+            if (arg.getClass().equals(annotation.objectName())) {
+                Class<?> argClass = arg.getClass();
+                // 鏌ユ壘闇�瑕佸~鍏呯殑瀛楁
+                Field declaredField = getField(argClass, annotation.paramName());
+                declaredField.setAccessible(true);
+                // 娣诲姞鐢ㄦ埛Id
+                declaredField.set(arg, userId.intValue());
+            }
+        }
+    }
+
+    // 閫掑綊鏌ユ壘瀛楁
+    private Field getField(Class<?> clazz, String fieldName) throws NoSuchFieldException {
+        // 浠庡綋鍓嶇被寮�濮嬫煡鎵惧瓧娈�
+        try {
+            return clazz.getDeclaredField(fieldName);
+        } catch (NoSuchFieldException e) {
+            // 濡傛灉褰撳墠绫绘病鏈夋壘鍒帮紝妫�鏌ョ埗绫�
+            Class<?> superClass = clazz.getSuperclass();
+            if (superClass != null) {
+                return getField(superClass, fieldName);
+            } else {
+                throw e;
+            }
+        }
+    }
+}
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
index b0e9080..a0adc27 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
@@ -111,7 +111,7 @@
             .authorizeHttpRequests((requests) -> {
                 permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll());
                 // 瀵逛簬鐧诲綍login 娉ㄥ唽register 楠岃瘉鐮乧aptchaImage 鍏佽鍖垮悕璁块棶
-                requests.antMatchers("/login", "/register", "/captchaImage", "/unqualifiedHandler/callback").permitAll()
+                requests.antMatchers("/login", "/register", "/captchaImage").permitAll()
                     // 闈欐�佽祫婧愶紝鍙尶鍚嶈闂�
                     .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
                     .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysRoleVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysRoleVo.java
new file mode 100644
index 0000000..10f5d5f
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysRoleVo.java
@@ -0,0 +1,21 @@
+package com.ruoyi.system.domain.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @Author zhuo
+ * @Date 2025/2/20
+ */
+@Data
+public class SysRoleVo {
+
+    @ApiModelProperty("鏉冮檺鏍囪瘑")
+    private String perms;
+
+    @ApiModelProperty("鑿滃崟鍚嶇О")
+    private String menuName;
+
+    @ApiModelProperty("鏄惁浠呯湅鎴�, 0: 鍚�, 1:鏄�")
+    private Integer isRersonal;
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java
index 6602bee..9551bd1 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMenuMapper.java
@@ -2,17 +2,19 @@
 
 import java.util.List;
 import com.ruoyi.system.domain.SysRoleMenu;
+import com.ruoyi.system.domain.vo.SysRoleVo;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 瑙掕壊涓庤彍鍗曞叧鑱旇〃 鏁版嵁灞�
- * 
+ *
  * @author ruoyi
  */
 public interface SysRoleMenuMapper
 {
     /**
      * 鏌ヨ鑿滃崟浣跨敤鏁伴噺
-     * 
+     *
      * @param menuId 鑿滃崟ID
      * @return 缁撴灉
      */
@@ -20,7 +22,7 @@
 
     /**
      * 閫氳繃瑙掕壊ID鍒犻櫎瑙掕壊鍜岃彍鍗曞叧鑱�
-     * 
+     *
      * @param roleId 瑙掕壊ID
      * @return 缁撴灉
      */
@@ -28,7 +30,7 @@
 
     /**
      * 鎵归噺鍒犻櫎瑙掕壊鑿滃崟鍏宠仈淇℃伅
-     * 
+     *
      * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
      * @return 缁撴灉
      */
@@ -36,9 +38,17 @@
 
     /**
      * 鎵归噺鏂板瑙掕壊鑿滃崟淇℃伅
-     * 
+     *
      * @param roleMenuList 瑙掕壊鑿滃崟鍒楄〃
      * @return 缁撴灉
      */
     public int batchRoleMenu(List<SysRoleMenu> roleMenuList);
+
+    /**
+     * 鏍规嵁鏉冮檺鏍囪瘑鍜岀敤鎴穒d鏌ヨ鏉冮檺
+     * @param permsName
+     * @param userId
+     * @return
+     */
+    SysRoleVo selectRoleMenu(@Param("permsName") String permsName, @Param("userId") Long userId);
 }
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
index 9284614..91a63e2 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
@@ -26,10 +26,11 @@
 		<result property="updateTime"     column="update_time"    />
 		<result property="updateBy"       column="update_by"      />
 		<result property="remark"         column="remark"         />
+		<result property="isRersonalButton"         column="is_rersonal_button"         />
 	</resultMap>
 
 	<sql id="selectMenuVo">
-        select menu_id, menu_name, parent_id, order_num, path, component, `query`, route_name, is_frame, is_cache, menu_type, visible, status, ifnull(perms,'') as perms, icon, create_time
+        select menu_id, menu_name, parent_id, order_num, path, component, `query`, route_name, is_frame, is_cache, menu_type, visible, status, ifnull(perms,'') as perms, icon, create_time, is_rersonal_button
 		from sys_menu
     </sql>
 
@@ -56,7 +57,7 @@
 	</select>
 
 	<select id="selectMenuListByUserId" parameterType="SysMenu" resultMap="SysMenuResult">
-		select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.`query`, m.route_name, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time
+		select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.`query`, m.route_name, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time, m.is_rersonal_button
 		from sys_menu m
 		left join sys_role_menu rm on m.menu_id = rm.menu_id
 		left join sys_user_role ur on rm.role_id = ur.role_id
@@ -152,6 +153,7 @@
 			<if test="icon !=null and icon != ''">icon = #{icon},</if>
 			<if test="remark != null and remark != ''">remark = #{remark},</if>
 			<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+			<if test="isRersonalButton != null and isRersonalButton != ''">is_rersonal_button = #{isRersonalButton},</if>
 			update_time = sysdate()
 		</set>
 		where menu_id = #{menuId}
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml
index cb60a85..2f71cd4 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml
@@ -8,27 +8,40 @@
 		<result property="roleId"     column="role_id"      />
 		<result property="menuId"     column="menu_id"      />
 	</resultMap>
-	
+
 	<select id="checkMenuExistRole" resultType="Integer">
 	    select count(1) from sys_role_menu where menu_id = #{menuId}
 	</select>
 
-	<delete id="deleteRoleMenuByRoleId" parameterType="Long">
+	<!-- 鏍规嵁鏉冮檺鏍囪瘑鍜岀敤鎴穒d鏌ヨ鏉冮檺 -->
+    <select id="selectRoleMenu" resultType="com.ruoyi.system.domain.vo.SysRoleVo">
+		select sm.perms,
+			   sm.menu_name,
+			   srm.is_rersonal
+		from sys_role_menu srm
+				 left join sys_menu sm on sm.menu_id = srm.menu_id
+				 left join sys_user_role sur on srm.role_id = sur.role_id
+		where sm.perms = #{permsName}
+		  and sur.user_id = #{userId}
+		group by sm.menu_id
+	</select>
+
+    <delete id="deleteRoleMenuByRoleId" parameterType="Long">
 		delete from sys_role_menu where role_id=#{roleId}
 	</delete>
-	
+
 	<delete id="deleteRoleMenu" parameterType="Long">
  		delete from sys_role_menu where role_id in
  		<foreach collection="array" item="roleId" open="(" separator="," close=")">
  			#{roleId}
-        </foreach> 
+        </foreach>
  	</delete>
-	
+
 	<insert id="batchRoleMenu">
 		insert into sys_role_menu(role_id, menu_id) values
 		<foreach item="item" index="index" collection="list" separator=",">
 			(#{item.roleId},#{item.menuId})
 		</foreach>
 	</insert>
-	
-</mapper> 
\ No newline at end of file
+
+</mapper>

--
Gitblit v1.9.3