zouxuan 3 år sedan
förälder
incheckning
08f3f9e299

+ 0 - 6
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherAttendanceDao.java

@@ -223,12 +223,6 @@ public interface TeacherAttendanceDao extends BaseDAO<Long, TeacherAttendance> {
     int getTotalMinutes(@Param("courseId") Long courseId, @Param("teacherId") Integer teacherId);
 
 	/**
-	 * 清空签退信息
-	 * @param courseId
-	 */
-	void cleanCourseTeacherSignOut(@Param("courseId") Long courseId);
-
-	/**
 	 * 获取当天有异常考勤的老师列表
 	 * @param format
 	 * @return

+ 2 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java

@@ -71,6 +71,8 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
     String OFFLINE_NO_SIGN_OUT_CUT_SALARY = "offline_no_sign_out_cut_salary";
     //线下课老师异常签退扣减课酬单位(1、元,2、百分比)
     String OFFLINE_NO_SIGN_OUT_CUT_SALARY_UNIT = "offline_no_sign_out_cut_salary_unit";
+    //vip课程可更新学生签到状态时间限制,课程结束后{}分钟
+    String ENABLE_STUDENT_ATTENDANCE_TIME_RANGE_VIP = "enable_student_attendance_time_range_vip";
 
     //线上课老师迟到扣减课酬金额
     String ONLINE_LATE_CUT_SALARY = "online_late_cut_salary";
@@ -179,11 +181,6 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
      */
     String OFFLINE_SIGN_IN_EARLY_FORWARD_TIME = "offline_sign_in_early_forward_time";
 
-    /**
-     * 老师正常打卡时间,为课程当天,距离开课时间前{}分钟
-     */
-    public static final String ADVANCE_SIGN_IN_MINUTES = "advance_sign_in_minutes";
-
     String ADVANCE_SIGN_OUT_MINUTES = "advance_sign_out_minutes";
 
     /**
@@ -232,11 +229,6 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
      */
     String ENABLE_STUDENT_ATTENDANCE_TIME_RANGE = "enable_student_attendance_time_range";
 
-    /**
-     * vip课程可更新学生签到状态时间限制,课程结束后{}分钟
-     */
-    String ENABLE_STUDENT_ATTENDANCE_TIME_RANGE_VIP = "enable_student_attendance_time_range_vip";
-
     String ENABLE_STUDENT_ATTENDANCE_BEFOR_COURSE_START_TIME_RANGE_VIP = "enable_student_attendance_befor_course_start_time_range_vip";
 
     /**

+ 0 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/TeacherAttendanceService.java

@@ -129,11 +129,6 @@ public interface TeacherAttendanceService extends BaseService<Long, TeacherAtten
 	 */
 	void updateTeacherAttendance(TeacherAttendance teacherAttendance);
 
-	/**
-	 * 清空考勤
-	 * @param courseId
-	 */
-	void cleanCourseTeacherSignOut(Long courseId);
 
 	/**
 	 * 获取教师签到信息

+ 6 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -217,6 +217,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 		currentCourseDetail.setCurrentClassTimes(courseScheduleDao.countClassGroupOverCourseNum(currentCourseDetail.getClassId()));
         SysConfig sysConfig = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE);
+        sysTenantConfigService.getTenantConfigValue(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE,user.getTenantId());
         SysConfig sysConfigVip = sysConfigService.findByParamName(SysConfigService.ENABLE_STUDENT_ATTENDANCE_TIME_RANGE_VIP);
         currentCourseDetail.setEnableStudentAttendanceTimeRange(sysConfig.getParanValue(Integer.class));
         currentCourseDetail.setEnableStudentAttendanceTimeRangeVip(sysConfigVip.getParanValue(Integer.class));
@@ -230,7 +231,11 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         int normalRemindNum = studentAttendanceDao.countNormalRemindNum(courseID);
         currentCourseDetail.setNormalRemind(normalRemindNum<=0?0:1);
 		currentCourseDetail.setCurrentTime(new Date());
-        currentCourseDetail.setAdvanceSignInMinutes(Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ADVANCE_SIGN_IN_MINUTES)));
+		String tenantConfigValue = sysTenantConfigService.getTenantConfigValue(SysConfigService.OFFLINE_ADVANCE_SIGN_IN_MINUTES, user.getTenantId());
+		if(StringUtils.isEmpty(tenantConfigValue)){
+			tenantConfigValue = "20";
+		}
+		currentCourseDetail.setAdvanceSignInMinutes(Integer.parseInt(tenantConfigValue));
 		String gpsRange = sysTenantConfigService.getTenantConfigValue(SysConfigService.ATTENDANCE_RANGE,user.getTenantId());
 		Integer attendanceRange = 0;
 		if(StringUtils.isNotEmpty(gpsRange)){

+ 11 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -117,7 +117,12 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		teacherAttendance.setClassGroupId(currentCourseDetail.getClassId());
 		teacherAttendance.setRemark(teacherSignOutDto.getTeacherAttendanceInfo().getRemark());
 		teacherAttendance.setSignOutRemark(teacherSignOutDto.getTeacherAttendanceInfo().getSignOutRemark());
-		int advanceSignMinutes = Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ADVANCE_SIGN_IN_MINUTES));
+		int advanceSignMinutes = 20;
+		String tenantConfigValue = sysTenantConfigService.getTenantConfigValue(SysConfigService.OFFLINE_ADVANCE_SIGN_IN_MINUTES, user.getTenantId());
+		if(StringUtils.isNotEmpty(tenantConfigValue)){
+			advanceSignMinutes = Integer.parseInt(tenantConfigValue);
+		}
+
 		int advanceSignOutMinutes = Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ADVANCE_SIGN_OUT_MINUTES));
 		int offlineSignInEarlyForwardTime = Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.OFFLINE_SIGN_IN_EARLY_FORWARD_TIME));
 
@@ -686,7 +691,11 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 		}
 
 		if(Objects.isNull(teacherAttendance.getSignInStatus())||teacherAttendance.getSignInStatus().equals(YesOrNoEnum.NO)){
-			int advanceSignMinutes = Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ADVANCE_SIGN_IN_MINUTES));
+			int advanceSignMinutes = 20;
+			String tenantConfigValue = sysTenantConfigService.getTenantConfigValue(SysConfigService.OFFLINE_ADVANCE_SIGN_IN_MINUTES, courseSchedule.getTenantId());
+			if(StringUtils.isNotEmpty(tenantConfigValue)){
+				advanceSignMinutes = Integer.parseInt(tenantConfigValue);
+			}
 			Date add20Minutes = DateUtil.addMinutes(courseSchedule.getStartClassTime(), advanceSignMinutes * -1);
 			teacherAttendance.setSignInTime(add20Minutes);
 			teacherAttendance.setSignInStatus(teacherAttendanceInfo.getSignInStatus());
@@ -710,12 +719,6 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 	}
 
 	@Override
-	@Transactional(rollbackFor = Exception.class)
-	public void cleanCourseTeacherSignOut(Long courseId) {
-		teacherAttendanceDao.cleanCourseTeacherSignOut(courseId);
-	}
-
-	@Override
 	public TeacherAttendance findByTeacherAttendanceInfo(Long courseId, Integer teacherId) {
 		return teacherAttendanceDao.findByTeacherAttendanceInfo(teacherId.longValue(),courseId);
 	}

+ 0 - 5
mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml

@@ -658,11 +658,6 @@
             #{courseScheduleId}
         </foreach>
     </update>
-    <update id="cleanCourseTeacherSignOut">
-        UPDATE teacher_attendance
-        SET sign_out_status_ = NULL,sign_out_time_= NULL
-    	WHERE course_schedule_id_=#{courseId}
-    </update>
     <update id="clearAttendanceComplaints">
         UPDATE teacher_attendance
         SET is_complaints_ = 0,complaints_status_ = NULL,complaints_content_ = NULL,

+ 11 - 0
mec-im/src/main/java/com/ym/config/WebMvcConfig.java

@@ -9,10 +9,13 @@ import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 import java.util.Date;
 
+import com.ym.interceptor.TenantInterceptor;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Primary;
 import org.springframework.format.FormatterRegistry;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
 import com.fasterxml.jackson.core.JsonGenerator;
@@ -38,6 +41,9 @@ import com.ym.mec.common.enums.BaseEnum;
 @Configuration
 public class WebMvcConfig implements WebMvcConfigurer {
 
+	@Autowired
+	private TenantInterceptor tenantInterceptor;
+
 	/**
 	 * 枚举类的转换器 addConverterFactory
 	 */
@@ -46,6 +52,11 @@ public class WebMvcConfig implements WebMvcConfigurer {
 		registry.addConverterFactory(new EnumConverterFactory());
 	}
 
+	@Override
+	public void addInterceptors(InterceptorRegistry registry) {
+		registry.addInterceptor(tenantInterceptor).addPathPatterns("/**");
+	}
+
 	@SuppressWarnings("rawtypes")
 	@Bean
 	@Primary

+ 1 - 1
mec-im/src/main/java/com/ym/controller/RoomController.java

@@ -7,9 +7,9 @@ import com.ym.service.MessageService;
 import com.ym.service.RoomService;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.FactoryBean;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+
 import java.util.List;
 
 @RestController

+ 53 - 0
mec-im/src/main/java/com/ym/interceptor/TenantInterceptor.java

@@ -0,0 +1,53 @@
+package com.ym.interceptor;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.TenantInfo;
+import com.ym.mec.biz.service.TenantInfoService;
+import com.ym.mec.common.tenant.TenantContextHolder;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@Component
+public class TenantInterceptor extends HandlerInterceptorAdapter {
+
+	private static final String DATA_SOURCE_ID = "datasourceId";
+
+	@Autowired
+	@Lazy
+	private SysUserFeignService sysUserFeignService;
+	
+	@Autowired
+	private TenantInfoService tenantInfoService;
+
+	@Override
+	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler){
+		String tenantId = request.getHeader("tenantId");
+		if(StringUtils.isEmpty(tenantId)){
+			SysUser sysUser = sysUserFeignService.queryUserInfo();
+			if(sysUser != null && sysUser.getTenantId() != null){
+				tenantId = sysUser.getTenantId().toString();
+			}
+		}
+		if(StringUtils.isNotEmpty(tenantId)){
+			TenantContextHolder.setTenantId(tenantId);
+			TenantInfo tenantInfo = tenantInfoService.get(Integer.parseInt(tenantId));
+			if(tenantInfo != null){
+				request.setAttribute(DATA_SOURCE_ID, tenantInfo.getDataSource());
+			}
+		}
+		return true;
+	}
+
+	@Override
+	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
+		TenantContextHolder.clearTenantId();
+	}
+
+}

+ 8 - 10
mec-student/src/main/java/com/ym/mec/student/config/WebMvcConfig.java

@@ -1,9 +1,9 @@
 package com.ym.mec.student.config;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import com.ym.mec.student.interceptor.OperationLogInterceptor;
+import com.ym.mec.common.config.EnumConverterFactory;
+import com.ym.mec.common.config.LocalFastJsonHttpMessageConverter;
+import com.ym.mec.student.interceptor.MDCInterceptor;
+import com.ym.mec.student.interceptor.TenantInterceptor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
 import org.springframework.context.annotation.Bean;
@@ -13,18 +13,16 @@ import org.springframework.http.MediaType;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
-import com.ym.mec.common.config.EnumConverterFactory;
-import com.ym.mec.common.config.LocalFastJsonHttpMessageConverter;
-import com.ym.mec.student.interceptor.MDCInterceptor;
+import java.util.ArrayList;
+import java.util.List;
 
 @Configuration
 public class WebMvcConfig implements WebMvcConfigurer {
 
 	@Autowired
 	private MDCInterceptor mdcInterceptor;
-
 	@Autowired
-	private OperationLogInterceptor operationLogInterceptor;
+	private TenantInterceptor tenantInterceptor;
 
 	/**
 	 * 枚举类的转换器 addConverterFactory
@@ -44,6 +42,7 @@ public class WebMvcConfig implements WebMvcConfigurer {
 		List<String> excludePathPatterns = new ArrayList<String>();
 		excludePathPatterns.add("/login");
 
+		registry.addInterceptor(tenantInterceptor).addPathPatterns("/**");
 		registry.addInterceptor(mdcInterceptor).addPathPatterns(includePathPatterns).excludePathPatterns(excludePathPatterns);
 
 //		registry.addInterceptor(operationLogInterceptor).addPathPatterns("/**").excludePathPatterns("/login");
@@ -57,5 +56,4 @@ public class WebMvcConfig implements WebMvcConfigurer {
 		converter.setSupportedMediaTypes(fastMediaTypes);
 		return new HttpMessageConverters(converter);
 	}
-
 }

+ 54 - 0
mec-student/src/main/java/com/ym/mec/student/interceptor/TenantInterceptor.java

@@ -0,0 +1,54 @@
+package com.ym.mec.student.interceptor;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.TenantInfo;
+import com.ym.mec.biz.service.TenantInfoService;
+import com.ym.mec.common.tenant.TenantContextHolder;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+import springfox.documentation.annotations.Cacheable;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@Component
+public class TenantInterceptor extends HandlerInterceptorAdapter {
+
+	private static final String DATA_SOURCE_ID = "datasourceId";
+
+	@Autowired
+	@Lazy
+	private SysUserFeignService sysUserFeignService;
+	
+	@Autowired
+	private TenantInfoService tenantInfoService;
+
+	@Override
+	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler){
+		String tenantId = request.getHeader("tenantId");
+		if(StringUtils.isEmpty(tenantId)){
+			SysUser sysUser = sysUserFeignService.queryUserInfo();
+			if(sysUser != null && sysUser.getTenantId() != null){
+				tenantId = sysUser.getTenantId().toString();
+			}
+		}
+		if(StringUtils.isNotEmpty(tenantId)){
+			TenantContextHolder.setTenantId(tenantId);
+			TenantInfo tenantInfo = tenantInfoService.get(Integer.parseInt(tenantId));
+			if(tenantInfo != null){
+				request.setAttribute(DATA_SOURCE_ID, tenantInfo.getDataSource());
+			}
+		}
+		return true;
+	}
+
+	@Override
+	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
+		TenantContextHolder.clearTenantId();
+	}
+
+}

+ 4 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/config/WebMvcConfig.java

@@ -13,6 +13,7 @@ import java.util.List;
 
 import com.ym.mec.teacher.interceptor.MDCInterceptor;
 import com.ym.mec.teacher.interceptor.OperationLogInterceptor;
+import com.ym.mec.teacher.interceptor.TenantInterceptor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
 import org.springframework.context.annotation.Bean;
@@ -52,6 +53,8 @@ public class WebMvcConfig implements WebMvcConfigurer {
 
 	@Autowired
 	private OperationLogInterceptor operationLogInterceptor;
+	@Autowired
+	private TenantInterceptor tenantInterceptor;
 
 	@Override
 	public void addInterceptors(InterceptorRegistry registry) {
@@ -59,6 +62,7 @@ public class WebMvcConfig implements WebMvcConfigurer {
 		includePathPatterns.add("/**");
 		List<String> excludePathPatterns = new ArrayList<String>();
 		excludePathPatterns.add("/login");
+		registry.addInterceptor(tenantInterceptor).addPathPatterns("/**");
 		registry.addInterceptor(mdcInterceptor).addPathPatterns(includePathPatterns).excludePathPatterns(excludePathPatterns);
 
 //		registry.addInterceptor(operationLogInterceptor).addPathPatterns("/**").excludePathPatterns("/login");

+ 53 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/interceptor/TenantInterceptor.java

@@ -0,0 +1,53 @@
+package com.ym.mec.teacher.interceptor;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.entity.TenantInfo;
+import com.ym.mec.biz.service.TenantInfoService;
+import com.ym.mec.common.tenant.TenantContextHolder;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Component;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@Component
+public class TenantInterceptor extends HandlerInterceptorAdapter {
+
+	private static final String DATA_SOURCE_ID = "datasourceId";
+
+	@Autowired
+	@Lazy
+	private SysUserFeignService sysUserFeignService;
+	
+	@Autowired
+	private TenantInfoService tenantInfoService;
+
+	@Override
+	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler){
+		String tenantId = request.getHeader("tenantId");
+		if(StringUtils.isEmpty(tenantId)){
+			SysUser sysUser = sysUserFeignService.queryUserInfo();
+			if(sysUser != null && sysUser.getTenantId() != null){
+				tenantId = sysUser.getTenantId().toString();
+			}
+		}
+		if(StringUtils.isNotEmpty(tenantId)){
+			TenantContextHolder.setTenantId(tenantId);
+			TenantInfo tenantInfo = tenantInfoService.get(Integer.parseInt(tenantId));
+			if(tenantInfo != null){
+				request.setAttribute(DATA_SOURCE_ID, tenantInfo.getDataSource());
+			}
+		}
+		return true;
+	}
+
+	@Override
+	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
+		TenantContextHolder.clearTenantId();
+	}
+
+}

+ 3 - 7
mec-web/src/main/java/com/ym/mec/web/config/WebMvcConfig.java

@@ -22,6 +22,8 @@ public class WebMvcConfig implements WebMvcConfigurer {
 
 	@Autowired
 	private OperationLogInterceptor operationLogInterceptor;
+	@Autowired
+	private TenantInterceptor tenantInterceptor;
 
 	/**
 	 * 枚举类的转换器 addConverterFactory
@@ -33,7 +35,7 @@ public class WebMvcConfig implements WebMvcConfigurer {
 
 	@Override
 	public void addInterceptors(InterceptorRegistry registry) {
-		registry.addInterceptor(getTenantInterceptor()).addPathPatterns("/**");
+		registry.addInterceptor(tenantInterceptor).addPathPatterns("/**");
 		registry.addInterceptor(operationLogInterceptor).addPathPatterns("/**").excludePathPatterns("/login");
 	}
 
@@ -45,10 +47,4 @@ public class WebMvcConfig implements WebMvcConfigurer {
 		converter.setSupportedMediaTypes(fastMediaTypes);
 		return new HttpMessageConverters(converter);
 	}
-
-	@Bean
-	public TenantInterceptor getTenantInterceptor() {
-		return new TenantInterceptor();
-	}
-
 }

+ 14 - 9
mec-web/src/main/java/com/ym/mec/web/interceptor/TenantInterceptor.java

@@ -5,13 +5,16 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.entity.TenantInfo;
 import com.ym.mec.biz.service.TenantInfoService;
 import com.ym.mec.common.tenant.TenantContextHolder;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Component;
 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+@Component
 public class TenantInterceptor extends HandlerInterceptorAdapter {
 
 	private static final String DATA_SOURCE_ID = "datasourceId";
@@ -24,19 +27,21 @@ public class TenantInterceptor extends HandlerInterceptorAdapter {
 	private TenantInfoService tenantInfoService;
 
 	@Override
-	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
-		
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		
-		if(sysUser != null){
-			TenantContextHolder.setTenantId(sysUser.getTenantId() + "");
-			
-			TenantInfo tenantInfo = tenantInfoService.get(sysUser.getTenantId());
+	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler){
+		String tenantId = request.getHeader("tenantId");
+		if(StringUtils.isEmpty(tenantId)){
+			SysUser sysUser = sysUserFeignService.queryUserInfo();
+			if(sysUser != null && sysUser.getTenantId() != null){
+				tenantId = sysUser.getTenantId().toString();
+			}
+		}
+		if(StringUtils.isNotEmpty(tenantId)){
+			TenantContextHolder.setTenantId(tenantId);
+			TenantInfo tenantInfo = tenantInfoService.get(Integer.parseInt(tenantId));
 			if(tenantInfo != null){
 				request.setAttribute(DATA_SOURCE_ID, tenantInfo.getDataSource());
 			}
 		}
-		
 		return true;
 	}