Jelajahi Sumber

异常管理、物流数据增加数据隔离

yzc 1 tahun lalu
induk
melakukan
7dcc7b3157

+ 23 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/abnormal/impl/AbnormalInfoServiceImpl.java

@@ -1,6 +1,8 @@
 package com.fjhx.victoriatourist.service.abnormal.impl;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.dynamic.datasource.annotation.DS;
+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;
@@ -9,11 +11,16 @@ import com.fjhx.victoriatourist.entity.abnormal.po.AbnormalInfo;
 import com.fjhx.victoriatourist.entity.abnormal.vo.AbnormalInfoVo;
 import com.fjhx.victoriatourist.mapper.abnormal.AbnormalInfoMapper;
 import com.fjhx.victoriatourist.service.abnormal.AbnormalInfoService;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.common.utils.wrapper.SqlField;
+import com.ruoyi.system.service.ISysRoleService;
 import com.ruoyi.system.utils.UserUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Set;
+
 
 /**
  * <p>
@@ -26,6 +33,8 @@ import org.springframework.stereotype.Service;
 @DS(SourceConstant.VICTORIATOURIST)
 @Service
 public class AbnormalInfoServiceImpl extends ServiceImpl<AbnormalInfoMapper, AbnormalInfo> implements AbnormalInfoService {
+    @Autowired
+    private ISysRoleService sysRoleService;
 
     @Override
     public Page<AbnormalInfoVo> getPage(AbnormalInfoSelectDto dto) {
@@ -40,6 +49,20 @@ public class AbnormalInfoServiceImpl extends ServiceImpl<AbnormalInfoMapper, Abn
                 new SqlField(AbnormalInfo::getLinkCode)
         );
 
+        //添加权限过滤
+        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("ai.id");
+
         wrapper.orderByDesc("ai", AbnormalInfo::getId);
         Page<AbnormalInfoVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         //赋值创建人名称

+ 20 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/logistics/impl/LogisticsInfosServiceImpl.java

@@ -31,7 +31,9 @@ import com.fjhx.victoriatourist.service.jd.JdBackService;
 import com.fjhx.victoriatourist.service.logistics.LogisticsDetailsService;
 import com.fjhx.victoriatourist.service.logistics.LogisticsInfosService;
 import com.fjhx.victoriatourist.utils.LogisticsConstant;
+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.context.event.EventListener;
 import org.springframework.stereotype.Service;
@@ -39,6 +41,7 @@ import org.springframework.stereotype.Service;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 
@@ -62,6 +65,8 @@ public class LogisticsInfosServiceImpl extends ServiceImpl<LogisticsInfosMapper,
     private JdBackService jdBackService;
     @Autowired
     private JdBackDetailsService jdBackDetailsService;
+    @Autowired
+    private ISysRoleService sysRoleService;
 
 
     @Override
@@ -77,6 +82,21 @@ public class LogisticsInfosServiceImpl extends ServiceImpl<LogisticsInfosMapper,
                     .or().in(LogisticsInfos::getLogisticsCompanyCode, companyCodes)
             );
         }
+
+        //添加权限过滤
+        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("li.id");
+
         wrapper.orderByDesc("li", LogisticsInfos::getId);
         Page<LogisticsInfosVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<LogisticsInfosVo> records = page.getRecords();

+ 4 - 0
hx-victoriatourist/src/main/resources/mapper/abnormal/AbnormalInfoMapper.xml

@@ -20,6 +20,10 @@
             ai.purchase_id
         from abnormal_info ai
                  left JOIN bytesailing_purchase.purchase p ON ai.purchase_id = p.id
+                 LEFT JOIN bytesailing_purchase.purchase_detail pd ON pd.purchase_id = p.id
+                 LEFT JOIN bytesailing_item.product_info pi ON pd.bussiness_id = pi.id
+                 LEFT JOIN bytesailing_base.sys_dept de
+                           ON json_unquote(pi.victoriatourist_json - > '$.deptId') = de.dept_id
             ${ew.customSqlSegment}
     </select>
 

+ 5 - 0
hx-victoriatourist/src/main/resources/mapper/logistics/LogisticsInfosMapper.xml

@@ -24,6 +24,11 @@
             li.address,
             li.purchase_id
         from logistics_infos li
+                 LEFT JOIN bytesailing_purchase.purchase p ON li.purchase_id = p.id
+                 LEFT JOIN bytesailing_purchase.purchase_detail pd ON pd.purchase_id = p.id
+                 LEFT JOIN bytesailing_item.product_info pi ON pd.bussiness_id = pi.id
+                 LEFT JOIN bytesailing_base.sys_dept de
+                           ON json_unquote(pi.victoriatourist_json - > '$.deptId') = de.dept_id
             ${ew.customSqlSegment}
     </select>