Bläddra i källkod

付款模块-付款申请接口开发,根据登录角色获取相应权限公共方法开发

ZhangWenQiang 5 år sedan
förälder
incheckning
6ca4bc8bcc

+ 3 - 3
happy-boot-module-powerjob/src/main/java/org/jeecg/modules/hlgpayment/controller/HlgPaymentController.java

@@ -66,9 +66,9 @@ public class HlgPaymentController {
                                                    @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
                                                    HttpServletRequest req) {
         Result<IPage<HlgPayment>> result = new Result<IPage<HlgPayment>>();
-        QueryWrapper<HlgPayment> queryWrapper = QueryGenerator.initQueryWrapperForRule(hlgPayment, req.getParameterMap());
-        Page<HlgPayment> page = new Page<HlgPayment>(pageNo, pageSize);
-        Page<HlgPayment> pageList = hlgPaymentService.pageList(page, hlgPayment, queryWrapper);
+//        QueryWrapper<HlgPayment> queryWrapper = QueryGenerator.initQueryWrapperForRule(hlgPayment, req.getParameterMap());
+//        Page<HlgPayment> page = new Page<HlgPayment>(pageNo, pageSize);
+        Page<HlgPayment> pageList = hlgPaymentService.pageListApi(pageNo, pageSize, hlgPayment, req);
         result.setSuccess(true);
         result.setResult(pageList);
         return result;

+ 3 - 0
happy-boot-module-powerjob/src/main/java/org/jeecg/modules/hlgpayment/service/IHlgPaymentService.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.hlgpayment.entity.HlgPaymentDetail;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.List;
 
 /**
@@ -35,4 +36,6 @@ public interface IHlgPaymentService extends IService<HlgPayment> {
     Result<HlgPaymentDetail> handNoSupplementPayment(HlgPaymentDetail hlgPaymentDetail);
 
     Page<HlgPayment> pageRelatePaymentList(Page<HlgPayment> page, HlgPayment hlgPayment, QueryWrapper<HlgPayment> queryWrapper);
+
+    Page<HlgPayment> pageListApi(Integer pageNo, Integer pageSize, HlgPayment hlgPayment, HttpServletRequest request);
 }

+ 58 - 0
happy-boot-module-powerjob/src/main/java/org/jeecg/modules/hlgpayment/service/impl/HlgPaymentServiceImpl.java

@@ -1,10 +1,13 @@
 package org.jeecg.modules.hlgpayment.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
@@ -12,9 +15,14 @@ import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.StringUtils;
 import org.jeecg.common.util.businessAccountUtils;
+import org.jeecg.common.utils.CryptTool;
+import org.jeecg.common.utils.HttpsContants;
+import org.jeecg.common.utils.OauthApi;
+import org.jeecg.common.utils.OauthTokenUtils;
 import org.jeecg.modules.hlgaccount.entity.HlgAccount;
 import org.jeecg.modules.hlgaccount.entity.HlgAccountDetail;
 import org.jeecg.modules.hlgaccount.service.IHlgAccountDetailService;
@@ -53,12 +61,14 @@ import org.jeecg.modules.hlguser.mapper.HlgUserMapper;
 import org.jeecg.modules.hlguser.service.IHlgUserService;
 import org.jeecg.modules.util.ExcelUtils;
 import org.jeecg.modules.util.PayCommon;
+import org.jeecg.modules.util.RoleDataUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
@@ -74,6 +84,7 @@ import java.util.stream.Collectors;
  * @Date: 2020-02-27
  * @Version: V1.0
  */
+@Slf4j
 @Service
 public class HlgPaymentServiceImpl extends ServiceImpl<HlgPaymentMapper, HlgPayment> implements IHlgPaymentService {
 
@@ -1305,4 +1316,51 @@ public class HlgPaymentServiceImpl extends ServiceImpl<HlgPaymentMapper, HlgPaym
     public Page<HlgPayment> pageRelatePaymentList(Page<HlgPayment> page, HlgPayment hlgPayment, QueryWrapper<HlgPayment> queryWrapper) {
         return page.setRecords(baseMapper.findRelatePaymentList(page, hlgPayment, queryWrapper));
     }
+
+
+    /**
+     * 慧灵工-慧盈
+     * 付款申请列表
+     *
+     * @param pageNo
+     * @param pageSize
+     * @param hlgPayment
+     * @return
+     */
+    @Override
+    public Page<HlgPayment> pageListApi(Integer pageNo, Integer pageSize, HlgPayment hlgPayment, HttpServletRequest request) {
+        Page<HlgPayment> page = new Page<>();
+        //获取请求路由路径
+        String routeUrl = request.getServletPath();
+        //获取当前登录用户
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        List<String> companyCodeList = RoleDataUtils.findCompanyCodeList(sysUser.getUsername(), routeUrl, sysUser.getOrgCode());
+        //付款申请列表信息
+        String accessToken = OauthTokenUtils.getDayAccessToken();
+        String requestUrl = OauthApi.paymentList;
+        Map<String, Object> parameters = new HashMap<>();
+        parameters.put("pageNo", pageNo);
+        parameters.put("pageSize", pageSize);
+        parameters.put("companyCodeList", companyCodeList);
+        //数据加密
+        String biz_content = CryptTool.encode(JSONObject.toJSONString(parameters));
+        JSONObject jsonObject = OauthTokenUtils.doRequest(requestUrl, HttpsContants.POST, biz_content, accessToken);
+        log.info("付款申请列表===={}", jsonObject);
+        if (jsonObject != null) {
+            if (jsonObject.getBoolean("success")) {
+                log.info("付款申请列表成功===={}", jsonObject);
+                JSONObject jsonObject1 = jsonObject.getJSONObject("result");
+                List<HlgPayment> list = (List<HlgPayment>) jsonObject1.get("records");
+                log.info("付款申请列表数组==={}", list);
+                page.setRecords(list);
+                page.setTotal(jsonObject1.getLong("total"));
+            } else {
+                throw new JeecgBootException("查询数据异常");
+            }
+        } else {
+            throw new JeecgBootException("查询数据异常");
+        }
+        return page;
+    }
+
 }

+ 77 - 0
happy-boot-module-powerjob/src/main/java/org/jeecg/modules/util/RoleDataUtils.java

@@ -0,0 +1,77 @@
+package org.jeecg.modules.util;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.jeecg.common.util.StringUtils;
+import org.jeecg.modules.hlgcompany.entity.HlgCompany;
+import org.jeecg.modules.hlgcompany.service.IHlgCompanyService;
+import org.jeecg.modules.system.service.ISysPermissionDataRuleService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Author: zwq
+ * @Date: Create in 2020/10/15 10:56
+ * @Description: 角色数据权限工具类
+ */
+@Component
+public class RoleDataUtils {
+
+    @Autowired
+    private ISysPermissionDataRuleService iSysPermissionDataRuleService;
+    @Autowired
+    private IHlgCompanyService iHlgCompanyService;
+
+    public static RoleDataUtils roleDataUtils;
+    public static ISysPermissionDataRuleService sysPermissionDataRuleService;
+    public static IHlgCompanyService hlgCompanyService;
+
+    @PostConstruct
+    public void init() {
+        roleDataUtils = this;
+        sysPermissionDataRuleService = iSysPermissionDataRuleService;
+        hlgCompanyService = iHlgCompanyService;
+    }
+
+    /**
+     * 用户当前路由请求的数据范围
+     *
+     * @param userName
+     * @param routeUrl
+     * @return
+     */
+    public static String getRuleValue(String userName, String routeUrl) {
+        return sysPermissionDataRuleService.getRuleValue(userName, routeUrl);
+    }
+
+    /**
+     * 获取用户当前路由请求的企业数据集合
+     *
+     * @param userName
+     * @param routeUrl
+     * @return
+     */
+    public static List<String> findCompanyCodeList(String userName, String routeUrl, String orgCode) {
+        List<String> codeList = new ArrayList<>();
+        String ruleValue = getRuleValue(userName, routeUrl);
+        QueryWrapper<HlgCompany> queryWrapper = new QueryWrapper<>();
+        if (StringUtils.isNotBlank(ruleValue)) {
+            if (ruleValue.contains("=")) {
+                //查询当前企业
+                queryWrapper.eq("sys_org_code", orgCode);
+            } else if (ruleValue.contains("like")) {
+                //查询当前平台的所有企业
+                queryWrapper.like("sys_org_code", orgCode);
+            }
+            List<HlgCompany> companyList = hlgCompanyService.list(queryWrapper);
+            for (HlgCompany hlgCompany : companyList) {
+                codeList.add(hlgCompany.getCompanyCode());
+            }
+        }
+        return codeList;
+    }
+
+}

+ 29 - 28
happy-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysPermissionDataRuleMapper.java

@@ -1,28 +1,29 @@
-package org.jeecg.modules.system.mapper;
-
-import java.util.List;
-
-import org.apache.ibatis.annotations.Param;
-import org.jeecg.modules.system.entity.SysPermissionDataRule;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-/**
- * <p>
- * 权限规则 Mapper 接口
- * </p>
- *
- * @Author huangzhilin
- * @since 2019-04-01
- */
-public interface SysPermissionDataRuleMapper extends BaseMapper<SysPermissionDataRule> {
-	
-	/**
-	  * 根据用户名和权限id查询
-	 * @param username
-	 * @param permissionId
-	 * @return
-	 */
-	public List<String> queryDataRuleIds(@Param("username") String username,@Param("permissionId") String permissionId);
-
-}
+package org.jeecg.modules.system.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.system.entity.SysPermissionDataRule;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 权限规则 Mapper 接口
+ * </p>
+ *
+ * @Author huangzhilin
+ * @since 2019-04-01
+ */
+public interface SysPermissionDataRuleMapper extends BaseMapper<SysPermissionDataRule> {
+	
+	/**
+	  * 根据用户名和权限id查询
+	 * @param username
+	 * @param permissionId
+	 * @return
+	 */
+	public List<String> queryDataRuleIds(@Param("username") String username,@Param("permissionId") String permissionId);
+
+    String getRuleValue(@Param("userName") String userName, @Param("routeUrl") String routeUrl);
+}

+ 29 - 16
happy-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysPermissionDataRuleMapper.xml

@@ -1,16 +1,29 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.jeecg.modules.system.mapper.SysPermissionDataRuleMapper">
-
-	<!--  查询权限 TODO 这里是不是可以不关联查找 sys_role 表 -->
-	<select id="queryDataRuleIds" resultType="java.lang.String">
-		select data_rule_ids 
-			from sys_role_permission a 
-			join sys_permission b on a.permission_id = b.id
-			join sys_role c on a.role_id = c.id
-			join sys_user_role d on d.role_id = c.id
-			join sys_user e on d.user_id = e.id
-			where e.username = #{username} and b.id =  #{permissionId}
-	</select>
-
-</mapper>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.system.mapper.SysPermissionDataRuleMapper">
+
+	<!--  查询权限 TODO 这里是不是可以不关联查找 sys_role 表 -->
+	<select id="queryDataRuleIds" resultType="java.lang.String">
+		select data_rule_ids 
+			from sys_role_permission a 
+			join sys_permission b on a.permission_id = b.id
+			join sys_role c on a.role_id = c.id
+			join sys_user_role d on d.role_id = c.id
+			join sys_user e on d.user_id = e.id
+			where e.username = #{username} and b.id =  #{permissionId}
+	</select>
+
+	<select id="getRuleValue" resultType="string">
+		SELECT
+			pd.rule_value
+		FROM
+			sys_role a
+		LEFT JOIN sys_role_permission rp ON rp.role_id = a.id
+		LEFT JOIN sys_user_role ur ON ur.role_id = a.id
+		LEFT JOIN sys_user u ON u.id = ur.user_id
+		LEFT JOIN sys_permission p ON p.id = rp.permission_id
+		LEFT JOIN sys_permission_data_rule pd ON pd.id = rp.data_rule_ids
+		WHERE
+			u.username = #{userName} AND p.url = #{routeUrl}
+	</select>
+</mapper>

+ 59 - 55
happy-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysPermissionDataRuleService.java

@@ -1,55 +1,59 @@
-package org.jeecg.modules.system.service;
-
-import java.util.List;
-
-import org.jeecg.modules.system.entity.SysPermissionDataRule;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-
-/**
- * <p>
- * 菜单权限规则 服务类
- * </p>
- *
- * @Author huangzhilin
- * @since 2019-04-01
- */
-public interface ISysPermissionDataRuleService extends IService<SysPermissionDataRule> {
-
-	/**
-	 * 根据菜单id查询其对应的权限数据
-	 * 
-	 * @param permRule
-	 */
-	List<SysPermissionDataRule> getPermRuleListByPermId(String permissionId);
-
-	/**
-	 * 根据页面传递的参数查询菜单权限数据
-	 * 
-	 * @return
-	 */
-	List<SysPermissionDataRule> queryPermissionRule(SysPermissionDataRule permRule);
-	
-	
-	/**
-	  * 根据菜单ID和用户名查找数据权限配置信息
-	 * @param permission
-	 * @param username
-	 * @return
-	 */
-	List<SysPermissionDataRule> queryPermissionDataRules(String username,String permissionId);
-	
-	/**
-	 * 新增菜单权限配置 修改菜单rule_flag
-	 * @param sysPermissionDataRule
-	 */
-	public void savePermissionDataRule(SysPermissionDataRule sysPermissionDataRule);
-	
-	/**
-	 * 删除菜单权限配置 判断菜单还有无权限
-	 * @param dataRuleId
-	 */
-	public void deletePermissionDataRule(String dataRuleId);
-	
-	
-}
+package org.jeecg.modules.system.service;
+
+import java.util.List;
+
+import org.jeecg.modules.system.entity.SysPermissionDataRule;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 菜单权限规则 服务类
+ * </p>
+ *
+ * @Author huangzhilin
+ * @since 2019-04-01
+ */
+public interface ISysPermissionDataRuleService extends IService<SysPermissionDataRule> {
+
+    /**
+     * 根据菜单id查询其对应的权限数据
+     *
+     * @param permRule
+     */
+    List<SysPermissionDataRule> getPermRuleListByPermId(String permissionId);
+
+    /**
+     * 根据页面传递的参数查询菜单权限数据
+     *
+     * @return
+     */
+    List<SysPermissionDataRule> queryPermissionRule(SysPermissionDataRule permRule);
+
+
+    /**
+     * 根据菜单ID和用户名查找数据权限配置信息
+     *
+     * @param permission
+     * @param username
+     * @return
+     */
+    List<SysPermissionDataRule> queryPermissionDataRules(String username, String permissionId);
+
+    /**
+     * 新增菜单权限配置 修改菜单rule_flag
+     *
+     * @param sysPermissionDataRule
+     */
+    public void savePermissionDataRule(SysPermissionDataRule sysPermissionDataRule);
+
+    /**
+     * 删除菜单权限配置 判断菜单还有无权限
+     *
+     * @param dataRuleId
+     */
+    public void deletePermissionDataRule(String dataRuleId);
+
+
+    String getRuleValue(String userName, String routeUrl);
+}

+ 125 - 114
happy-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysPermissionDataRuleImpl.java

@@ -1,114 +1,125 @@
-package org.jeecg.modules.system.service.impl;
-
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import javax.annotation.Resource;
-
-import org.jeecg.common.constant.CommonConstant;
-import org.jeecg.common.system.query.QueryGenerator;
-import org.jeecg.common.util.oConvertUtils;
-import org.jeecg.modules.system.entity.SysPermission;
-import org.jeecg.modules.system.entity.SysPermissionDataRule;
-import org.jeecg.modules.system.mapper.SysPermissionDataRuleMapper;
-import org.jeecg.modules.system.mapper.SysPermissionMapper;
-import org.jeecg.modules.system.service.ISysPermissionDataRuleService;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-
-/**
- * <p>
- * 菜单权限规则  服务实现类
- * </p>
- *
- * @Author huangzhilin
- * @since 2019-04-01
- */
-@Service
-public class SysPermissionDataRuleImpl extends ServiceImpl<SysPermissionDataRuleMapper, SysPermissionDataRule>
-		implements ISysPermissionDataRuleService {
-
-	@Resource
-	private SysPermissionMapper sysPermissionMapper;
-
-	/**
-	 * 根据菜单id查询其对应的权限数据
-	 */
-	@Override
-	public List<SysPermissionDataRule> getPermRuleListByPermId(String permissionId) {
-		LambdaQueryWrapper<SysPermissionDataRule> query = new LambdaQueryWrapper<SysPermissionDataRule>();
-		query.eq(SysPermissionDataRule::getPermissionId, permissionId);
-		query.orderByDesc(SysPermissionDataRule::getCreateTime);
-		List<SysPermissionDataRule> permRuleList = this.list(query);
-		return permRuleList;
-	}
-
-	/**
-	 * 根据前端传递的权限名称和权限值参数来查询权限数据
-	 */
-	@Override
-	public List<SysPermissionDataRule> queryPermissionRule(SysPermissionDataRule permRule) {
-		QueryWrapper<SysPermissionDataRule> queryWrapper = QueryGenerator.initQueryWrapper(permRule, null);
-		return this.list(queryWrapper);
-	}
-
-	@Override
-	public List<SysPermissionDataRule> queryPermissionDataRules(String username,String permissionId) {
-		List<String> idsList = this.baseMapper.queryDataRuleIds(username, permissionId);
-		if(idsList==null || idsList.size()==0 || idsList.get(0)==null ) {
-			return null;
-		}
-		Set<String> set = new HashSet<String>();
-		for (String ids : idsList) {
-			if(ids==null) {
-				continue;
-			}
-			String[] arr = ids.split(",");
-			for (String id : arr) {
-				if(oConvertUtils.isNotEmpty(id)) {
-					set.add(id);
-				}
-			}
-		}
-		if(set.size()==0) {
-			return null;
-		}
-		return this.baseMapper.selectList(new QueryWrapper<SysPermissionDataRule>().in("id", set).eq("status",CommonConstant.STATUS_1));
-	}
-
-	@Override
-	@Transactional
-	public void savePermissionDataRule(SysPermissionDataRule sysPermissionDataRule) {
-		this.save(sysPermissionDataRule);
-		SysPermission permission = sysPermissionMapper.selectById(sysPermissionDataRule.getPermissionId());
-		if(permission!=null && (permission.getRuleFlag()==null || permission.getRuleFlag().equals(CommonConstant.RULE_FLAG_0))) {
-			permission.setRuleFlag(CommonConstant.RULE_FLAG_1);
-			sysPermissionMapper.updateById(permission);
-		}
-	}
-
-	@Override
-	@Transactional
-	public void deletePermissionDataRule(String dataRuleId) {
-		SysPermissionDataRule dataRule = this.baseMapper.selectById(dataRuleId);
-		if(dataRule!=null) {
-			this.removeById(dataRuleId);
-			Integer count =  this.baseMapper.selectCount(new LambdaQueryWrapper<SysPermissionDataRule>().eq(SysPermissionDataRule::getPermissionId, dataRule.getPermissionId()));
-			//注:同一个事务中删除后再查询是会认为数据已被删除的 若事务回滚上述删除无效
-			if(count==null || count==0) {
-				SysPermission permission = sysPermissionMapper.selectById(dataRule.getPermissionId());
-				if(permission!=null && permission.getRuleFlag().equals(CommonConstant.RULE_FLAG_1)) {
-					permission.setRuleFlag(CommonConstant.RULE_FLAG_0);
-					sysPermissionMapper.updateById(permission);
-				}
-			}
-		}
-		
-	}
-
-}
+package org.jeecg.modules.system.service.impl;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.annotation.Resource;
+
+import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.system.entity.SysPermission;
+import org.jeecg.modules.system.entity.SysPermissionDataRule;
+import org.jeecg.modules.system.mapper.SysPermissionDataRuleMapper;
+import org.jeecg.modules.system.mapper.SysPermissionMapper;
+import org.jeecg.modules.system.service.ISysPermissionDataRuleService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * <p>
+ * 菜单权限规则  服务实现类
+ * </p>
+ *
+ * @Author huangzhilin
+ * @since 2019-04-01
+ */
+@Service
+public class SysPermissionDataRuleImpl extends ServiceImpl<SysPermissionDataRuleMapper, SysPermissionDataRule>
+        implements ISysPermissionDataRuleService {
+
+    @Resource
+    private SysPermissionMapper sysPermissionMapper;
+
+    /**
+     * 根据菜单id查询其对应的权限数据
+     */
+    @Override
+    public List<SysPermissionDataRule> getPermRuleListByPermId(String permissionId) {
+        LambdaQueryWrapper<SysPermissionDataRule> query = new LambdaQueryWrapper<SysPermissionDataRule>();
+        query.eq(SysPermissionDataRule::getPermissionId, permissionId);
+        query.orderByDesc(SysPermissionDataRule::getCreateTime);
+        List<SysPermissionDataRule> permRuleList = this.list(query);
+        return permRuleList;
+    }
+
+    /**
+     * 根据前端传递的权限名称和权限值参数来查询权限数据
+     */
+    @Override
+    public List<SysPermissionDataRule> queryPermissionRule(SysPermissionDataRule permRule) {
+        QueryWrapper<SysPermissionDataRule> queryWrapper = QueryGenerator.initQueryWrapper(permRule, null);
+        return this.list(queryWrapper);
+    }
+
+    @Override
+    public List<SysPermissionDataRule> queryPermissionDataRules(String username, String permissionId) {
+        List<String> idsList = this.baseMapper.queryDataRuleIds(username, permissionId);
+        if (idsList == null || idsList.size() == 0 || idsList.get(0) == null) {
+            return null;
+        }
+        Set<String> set = new HashSet<String>();
+        for (String ids : idsList) {
+            if (ids == null) {
+                continue;
+            }
+            String[] arr = ids.split(",");
+            for (String id : arr) {
+                if (oConvertUtils.isNotEmpty(id)) {
+                    set.add(id);
+                }
+            }
+        }
+        if (set.size() == 0) {
+            return null;
+        }
+        return this.baseMapper.selectList(new QueryWrapper<SysPermissionDataRule>().in("id", set).eq("status", CommonConstant.STATUS_1));
+    }
+
+    @Override
+    @Transactional
+    public void savePermissionDataRule(SysPermissionDataRule sysPermissionDataRule) {
+        this.save(sysPermissionDataRule);
+        SysPermission permission = sysPermissionMapper.selectById(sysPermissionDataRule.getPermissionId());
+        if (permission != null && (permission.getRuleFlag() == null || permission.getRuleFlag().equals(CommonConstant.RULE_FLAG_0))) {
+            permission.setRuleFlag(CommonConstant.RULE_FLAG_1);
+            sysPermissionMapper.updateById(permission);
+        }
+    }
+
+    @Override
+    @Transactional
+    public void deletePermissionDataRule(String dataRuleId) {
+        SysPermissionDataRule dataRule = this.baseMapper.selectById(dataRuleId);
+        if (dataRule != null) {
+            this.removeById(dataRuleId);
+            Integer count = this.baseMapper.selectCount(new LambdaQueryWrapper<SysPermissionDataRule>().eq(SysPermissionDataRule::getPermissionId, dataRule.getPermissionId()));
+            //注:同一个事务中删除后再查询是会认为数据已被删除的 若事务回滚上述删除无效
+            if (count == null || count == 0) {
+                SysPermission permission = sysPermissionMapper.selectById(dataRule.getPermissionId());
+                if (permission != null && permission.getRuleFlag().equals(CommonConstant.RULE_FLAG_1)) {
+                    permission.setRuleFlag(CommonConstant.RULE_FLAG_0);
+                    sysPermissionMapper.updateById(permission);
+                }
+            }
+        }
+
+    }
+
+    /**
+     * 用户当前路由请求的数据范围
+     *
+     * @param userName
+     * @param routeUrl
+     * @return
+     */
+    @Override
+    public String getRuleValue(String userName, String routeUrl) {
+        return baseMapper.getRuleValue(userName, routeUrl);
+    }
+}