Explorar el Código

销售订单/京东订单/库存查询 添加权限过滤

yzc hace 1 año
padre
commit
d37cfbf88f

+ 20 - 1
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdOrderServiceImpl.java

@@ -3,10 +3,12 @@ package com.fjhx.victoriatourist.service.jd.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.area.utils.CustomizeAreaUtil;
+import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.customer.service.customer.CustomerService;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.service.product.ProductInfoService;
@@ -41,6 +43,7 @@ import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.ruoyi.system.service.ISysRoleService;
 import com.ruoyi.system.utils.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -92,6 +95,8 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
     private LogisticsInfosService logisticsInfosService;
     @Autowired
     private LogisticsDetailsService logisticsDetailsService;
+    @Autowired
+    private ISysRoleService sysRoleService;
 
     @Override
     public Page<JdOrderVo> getPage(JdOrderSelectDto dto) {
@@ -100,8 +105,22 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
         wrapper.orderByDesc("jo", JdOrder::getId);
 
         if (ObjectUtil.isNotEmpty(dto.getKeyword())) {
-            wrapper.and(q -> q.like(JdOrderVo::getCode, dto.getKeyword()));
+            wrapper.and(q -> q.like("jo", JdOrderVo::getCode, dto.getKeyword()));
+        }
+
+        //添加权限过滤
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+        Set<String> permissionList = sysRoleService.selectRolePermissionByUserId(SecurityUtils.getUserId());
+        DynamicDataSourceContextHolder.poll();
+        if (ObjectUtil.isNotEmpty(permissionList)) {
+            //if当前用户的角色 in [运营专员, 运营助理] 页面仅展示产品.管理部门 == 当前用户所在部门或下级部门的相关数据
+            if (permissionList.contains("E-commerce operation") || permissionList.contains("Operation assistant")) {
+                wrapper.and(q -> q.eq("de.dept_id", SecurityUtils.getDeptId())
+                        .or()
+                        .like("de.ancestors", SecurityUtils.getDeptId()));
+            }
         }
+        wrapper.groupBy("jo.id");
 
         Page<JdOrderVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<JdOrderVo> records = page.getRecords();

+ 23 - 1
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/order/impl/OrderInfoServiceImpl.java

@@ -3,9 +3,11 @@ package com.fjhx.victoriatourist.service.order.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.area.utils.CustomizeAreaUtil;
+import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.common.utils.Assert;
 import com.fjhx.customer.entity.customer.po.Customer;
 import com.fjhx.customer.service.customer.CustomerService;
@@ -31,7 +33,9 @@ import com.fjhx.wms.entity.stock.po.StockWait;
 import com.fjhx.wms.entity.stock.po.StockWaitDetails;
 import com.fjhx.wms.service.stock.StockWaitDetailsService;
 import com.fjhx.wms.service.stock.StockWaitService;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.ruoyi.system.service.ISysRoleService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -39,6 +43,7 @@ import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Set;
 
 
 /**
@@ -66,14 +71,31 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
     private LogisticsInfosService logisticsInfosService;
     @Autowired
     private LogisticsDetailsService logisticsDetailsService;
+    @Autowired
+    private ISysRoleService sysRoleService;
 
     @Override
     public Page<OrderInfoVo> getPage(OrderInfoSelectDto dto) {
         IWrapper<OrderInfo> wrapper = getWrapper();
-        wrapper.like(OrderInfo::getCode, dto.getKeyword());
+        wrapper.like("oi", OrderInfo::getCode, dto.getKeyword());
         wrapper.eq("oi", OrderInfo::getType, dto.getType());
         wrapper.eq("oi", OrderInfo::getStatus, dto.getStatus());//根据状态过滤
         wrapper.orderByDesc("oi", OrderInfo::getId);
+
+        //添加权限过滤
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+        Set<String> permissionList = sysRoleService.selectRolePermissionByUserId(SecurityUtils.getUserId());
+        DynamicDataSourceContextHolder.poll();
+        if (ObjectUtil.isNotEmpty(permissionList)) {
+            //if当前用户的角色 in [运营专员, 运营助理] 页面仅展示产品.管理部门 == 当前用户所在部门或下级部门的相关数据
+            if (permissionList.contains("E-commerce operation") || permissionList.contains("Operation assistant")) {
+                wrapper.and(q -> q.eq("de.dept_id", SecurityUtils.getDeptId())
+                        .or()
+                        .like("de.ancestors", SecurityUtils.getDeptId()));
+            }
+        }
+        wrapper.groupBy("oi.id");
+
         Page<OrderInfoVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<OrderInfoVo> records = page.getRecords();
         if (ObjectUtil.isEmpty(records)) {

+ 3 - 0
hx-victoriatourist/src/main/resources/mapper/jd/JdOrderMapper.xml

@@ -20,6 +20,9 @@
             jo.update_user,
             jo.update_time
         from jd_order jo
+                 LEFT JOIN jd_order_details jod ON jod.jd_order_id = jo.id
+                 LEFT JOIN bytesailing_item.product_info pi ON jod.product_id = pi.id
+                 LEFT JOIN bytesailing_base.sys_dept de ON json_unquote( pi.victoriatourist_json -> '$.deptId' ) = de.dept_id
             ${ew.customSqlSegment}
     </select>
     <select id="getReceivePage" resultType="com.fjhx.victoriatourist.entity.jd.vo.JdOrderVo">

+ 3 - 0
hx-victoriatourist/src/main/resources/mapper/order/OrderInfoMapper.xml

@@ -28,6 +28,9 @@
             oi.update_user,
             oi.update_time
         from order_info oi
+                 LEFT JOIN order_details od ON od.order_id = oi.id
+                 LEFT JOIN bytesailing_item.product_info pi ON od.product_id = pi.id
+                 LEFT JOIN bytesailing_base.sys_dept de ON json_unquote( pi.victoriatourist_json -> '$.deptId' ) = de.dept_id
             ${ew.customSqlSegment}
     </select>
 

+ 48 - 0
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockServiceImpl.java

@@ -6,8 +6,10 @@ import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
 import com.alibaba.fastjson2.JSONWriter;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.item.entity.product.po.ProductClassify;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.service.product.ProductClassifyService;
@@ -31,7 +33,9 @@ import com.fjhx.wms.service.warehouse.WarehouseService;
 import com.fjhx.wms.utils.CodeEnum;
 import com.obs.services.internal.ServiceException;
 import com.ruoyi.common.core.domain.BaseIdPo;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.ruoyi.system.service.ISysRoleService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -39,6 +43,7 @@ import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -64,6 +69,9 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
     @Autowired
     WarehouseService warehouseService;
 
+    @Autowired
+    private ISysRoleService sysRoleService;
+
     @Override
     public Page<StockVo> getPage(StockSelectDto dto) {
         IWrapper<Stock> wrapper = getWrapper();
@@ -109,6 +117,19 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
             }
         }
 
+        //添加权限过滤
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+        Set<String> permissionList = sysRoleService.selectRolePermissionByUserId(SecurityUtils.getUserId());
+        DynamicDataSourceContextHolder.poll();
+        if (ObjectUtil.isNotEmpty(permissionList)) {
+            //if当前用户的角色 in [运营专员, 运营助理] 页面仅展示产品.管理部门 == 当前用户所在部门或下级部门的相关数据
+            if (permissionList.contains("E-commerce operation") || permissionList.contains("Operation assistant")) {
+                wrapper.and(q -> q.eq("de.dept_id", SecurityUtils.getDeptId())
+                        .or()
+                        .like("de.ancestors", SecurityUtils.getDeptId()));
+            }
+        }
+
         wrapper.orderByDesc("s", Stock::getId);
         Page<StockVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<StockVo> stockVos = page.getRecords();
@@ -256,6 +277,19 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
             }
         }
 
+        //添加权限过滤
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+        Set<String> permissionList = sysRoleService.selectRolePermissionByUserId(SecurityUtils.getUserId());
+        DynamicDataSourceContextHolder.poll();
+        if (ObjectUtil.isNotEmpty(permissionList)) {
+            //if当前用户的角色 in [运营专员, 运营助理] 页面仅展示产品.管理部门 == 当前用户所在部门或下级部门的相关数据
+            if (permissionList.contains("E-commerce operation") || permissionList.contains("Operation assistant")) {
+                wrapper.and(q -> q.eq("de.dept_id", SecurityUtils.getDeptId())
+                        .or()
+                        .like("de.ancestors", SecurityUtils.getDeptId()));
+            }
+        }
+
         wrapper.orderByDesc("s", Stock::getId);
         Page<StockVo> page = this.baseMapper.pageByProduct(dto.getPage(), wrapper);
         List<StockVo> stockVos = page.getRecords();
@@ -330,6 +364,20 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
                 wrapper.orderByDesc("sum(s.quantity)");
             }
         }
+
+        //添加权限过滤
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+        Set<String> permissionList = sysRoleService.selectRolePermissionByUserId(SecurityUtils.getUserId());
+        DynamicDataSourceContextHolder.poll();
+        if (ObjectUtil.isNotEmpty(permissionList)) {
+            //if当前用户的角色 in [运营专员, 运营助理] 页面仅展示产品.管理部门 == 当前用户所在部门或下级部门的相关数据
+            if (permissionList.contains("E-commerce operation") || permissionList.contains("Operation assistant")) {
+                wrapper.and(q -> q.eq("de.dept_id", SecurityUtils.getDeptId())
+                        .or()
+                        .like("de.ancestors", SecurityUtils.getDeptId()));
+            }
+        }
+
         wrapper.orderByDesc("s", Stock::getId);
 
         Page<StockVo> page = this.baseMapper.pageByProductSpu(dto.getPage(), wrapper);

+ 3 - 0
hx-wms/src/main/resources/mapper/stock/StockMapper.xml

@@ -16,6 +16,7 @@
         FROM
             stock s
                 LEFT JOIN bytesailing_item.product_info pi ON s.product_id = pi.id
+                LEFT JOIN bytesailing_base.sys_dept de ON json_unquote( pi.victoriatourist_json -> '$.deptId' ) = de.dept_id
             ${ew.customSqlSegment}
     </select>
     <select id="pageByProduct" resultType="com.fjhx.wms.entity.stock.vo.StockVo">
@@ -33,6 +34,7 @@
         FROM
             stock s
                 LEFT JOIN bytesailing_item.product_info pi ON s.product_id = pi.id
+                LEFT JOIN bytesailing_base.sys_dept de ON json_unquote( pi.victoriatourist_json -> '$.deptId' ) = de.dept_id
             ${ew.customSqlSegment}
     </select>
     <select id="pageByProductSpu" resultType="com.fjhx.wms.entity.stock.vo.StockVo">
@@ -47,6 +49,7 @@
             stock s
                 LEFT JOIN bytesailing_item.product_info pi ON s.product_id = pi.id
                 LEFT JOIN bytesailing_item.product_spu ps ON pi.product_spu_id = ps.id
+                LEFT JOIN bytesailing_base.sys_dept de ON json_unquote( pi.victoriatourist_json -> '$.deptId' ) = de.dept_id
             ${ew.customSqlSegment}
     </select>