Kaynağa Gözat

fix: EmployeeMapper/Handler跳过租户过滤+从企业取tenantId

alphaH 1 gün önce
ebeveyn
işleme
c9543fdf05

+ 14 - 0
java/src/main/java/com/payment/platform/module/payment/employee/mapper/EmployeeMapper.java

@@ -1,9 +1,23 @@
 package com.payment.platform.module.payment.employee.mapper;
 
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.payment.platform.module.payment.employee.entity.EmployeeEntity;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
 
 @Mapper
 public interface EmployeeMapper extends BaseMapper<EmployeeEntity> {
+
+    @InterceptorIgnore(tenantLine = "true")
+    @Select("SELECT * FROM pay_employee WHERE employee_id = #{employeeId} AND enterprise_id = #{enterpriseId}")
+    EmployeeEntity selectByEmployeeIdIgnoreTenant(@Param("employeeId") String employeeId, @Param("enterpriseId") String enterpriseId);
+
+    @InterceptorIgnore(tenantLine = "true")
+    int insertIgnoreTenant(EmployeeEntity entity);
+
+    @InterceptorIgnore(tenantLine = "true")
+    int updateByIdIgnoreTenant(@Param("et") EmployeeEntity entity);
 }

+ 13 - 5
java/src/main/java/com/payment/platform/module/payment/notification/handler/EmployeeHandler.java

@@ -6,6 +6,7 @@ import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.payment.platform.module.payment.employee.entity.EmployeeEntity;
 import com.payment.platform.module.payment.employee.mapper.EmployeeMapper;
+import com.payment.platform.module.payment.enterprise.mapper.EnterpriseMapper;
 import com.payment.platform.module.payment.expense.institution.service.InstitutionScopeSyncService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -32,6 +33,7 @@ import java.util.Map;
 public class EmployeeHandler extends BaseNotifyHandler {
 
     private final EmployeeMapper employeeMapper;
+    private final EnterpriseMapper enterpriseMapper;
     private final InstitutionScopeSyncService scopeSyncService;
     private static final ObjectMapper objectMapper = new ObjectMapper();
 
@@ -95,13 +97,13 @@ public class EmployeeHandler extends BaseNotifyHandler {
         String enterpriseId = params.get("enterprise_id");
         log.info("员工新增: employee_id={}, enterprise_id={}", employeeId, enterpriseId);
 
-        EmployeeEntity existing = findByEmployeeId(employeeId, enterpriseId);
+        EmployeeEntity existing = employeeMapper.selectByEmployeeIdIgnoreTenant(employeeId, enterpriseId);
         if (existing != null) {
             updateEmployeeFromParams(existing, params);
-            employeeMapper.updateById(existing);
+            employeeMapper.updateByIdIgnoreTenant(existing);
         } else {
             EmployeeEntity entity = buildEmployeeFromParams(params);
-            employeeMapper.insert(entity);
+            employeeMapper.insertIgnoreTenant(entity);
         }
     }
 
@@ -217,7 +219,7 @@ public class EmployeeHandler extends BaseNotifyHandler {
     private EmployeeEntity findOrCreateEmployee(Map<String, String> params) {
         String employeeId = params.get("employee_id");
         String enterpriseId = params.get("enterprise_id");
-        EmployeeEntity entity = findByEmployeeId(employeeId, enterpriseId);
+        EmployeeEntity entity = employeeMapper.selectByEmployeeIdIgnoreTenant(employeeId, enterpriseId);
         if (entity == null) {
             entity = new EmployeeEntity();
             entity.setEmployeeId(employeeId);
@@ -230,7 +232,7 @@ public class EmployeeHandler extends BaseNotifyHandler {
         EmployeeEntity entity = findOrCreateEmployee(params);
         updateEmployeeFromParams(entity, params);
         if (entity.getId() == null) {
-            employeeMapper.insert(entity);
+            employeeMapper.insertIgnoreTenant(entity);
         } else {
             employeeMapper.updateById(entity);
         }
@@ -253,6 +255,12 @@ public class EmployeeHandler extends BaseNotifyHandler {
         EmployeeEntity entity = new EmployeeEntity();
         entity.setEmployeeId(params.get("employee_id"));
         entity.setEnterpriseId(params.get("enterprise_id"));
+        // 从企业记录取 tenantId(通知无认证上下文)
+        String eid = params.get("enterprise_id");
+        if (StrUtil.isNotBlank(eid)) {
+            var ent = enterpriseMapper.selectByEnterpriseIdIgnoreTenant(eid);
+            if (ent != null) entity.setTenantId(ent.getTenantId());
+        }
         updateEmployeeFromParams(entity, params);
         return entity;
     }