fix(): 修复查询多租户

master
DongZeLiang 2024-09-21 09:10:57 +08:00
parent a507bb3e73
commit 518900891d
9 changed files with 62 additions and 18 deletions

View File

@ -3,6 +3,9 @@ package com.muyu.config;
import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
import com.muyu.config.tenant.CustomTenantHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
@ -12,6 +15,9 @@ import org.springframework.context.annotation.Configuration;
@Configuration @Configuration
public class MybatisPlusConfig { public class MybatisPlusConfig {
@Autowired
private CustomTenantHandler customTenantHandler;
/** /**
* ,mybatis, * ,mybatis,
*/ */
@ -19,6 +25,9 @@ public class MybatisPlusConfig {
public MybatisPlusInterceptor mybatisPlusInterceptor() { public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
TenantLineInnerInterceptor tenantInterceptor = new TenantLineInnerInterceptor();
tenantInterceptor.setTenantLineHandler(customTenantHandler);
interceptor.addInnerInterceptor(tenantInterceptor);
return interceptor; return interceptor;
} }
} }

View File

@ -1,6 +1,7 @@
package com.muyu.vehicle.core; package com.muyu.vehicle.core;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.muyu.config.tenant.CustomTenantHandler;
import com.muyu.web.common.pool.FixedThreadPool; import com.muyu.web.common.pool.FixedThreadPool;
import com.muyu.web.common.pool.ScheduledThreadPool; import com.muyu.web.common.pool.ScheduledThreadPool;
import com.muyu.web.domain.VehicleInfo; import com.muyu.web.domain.VehicleInfo;
@ -31,6 +32,8 @@ public class VehicleConfiguration implements ApplicationRunner {
private final VehicleInstanceService vehicleInstanceService; private final VehicleInstanceService vehicleInstanceService;
private final CustomTenantHandler customTenantHandler;
/** /**
* *
*/ */
@ -38,6 +41,7 @@ public class VehicleConfiguration implements ApplicationRunner {
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
int page = 0, pageSize = 10; int page = 0, pageSize = 10;
log.info("初始开始,批量从数据库当中加载数据到内存当中,每次[{}]条", pageSize); log.info("初始开始,批量从数据库当中加载数据到内存当中,每次[{}]条", pageSize);
customTenantHandler.ignore();
while (true){ while (true){
Page<VehicleInfo> vehiclePage = vehicleInfoService.page(new Page<>(page++, pageSize)); Page<VehicleInfo> vehiclePage = vehicleInfoService.page(new Page<>(page++, pageSize));
List<VehicleInfo> vehicleInfoList = vehiclePage.getRecords(); List<VehicleInfo> vehicleInfoList = vehiclePage.getRecords();
@ -47,6 +51,7 @@ public class VehicleConfiguration implements ApplicationRunner {
break; break;
} }
} }
customTenantHandler.remove();
log.info("数据加载完成,耗时:{} MS", System.currentTimeMillis() - startTime); log.info("数据加载完成,耗时:{} MS", System.currentTimeMillis() - startTime);
} }

View File

@ -32,9 +32,12 @@ public class VehicleController {
* @param sum * @param sum
* @return * @return
*/ */
@GetMapping("/gen/{sum}") @GetMapping("/gen/{sum}/{messageTemplateId}")
public Result<String> generate(@PathVariable(value = "sum") Integer sum){ public Result<String> generate(
vehicleInfoService.generate(sum); @PathVariable(value = "sum") Integer sum,
@PathVariable("messageTemplateId") Long messageTemplateId
){
vehicleInfoService.generate(sum, messageTemplateId);
return Result.success(); return Result.success();
} }
/** /**
@ -44,7 +47,7 @@ public class VehicleController {
*/ */
@PostMapping("/create") @PostMapping("/create")
public Result<String> create(@RequestBody VehicleCreateAddReq vehicleCreateAddReq){ public Result<String> create(@RequestBody VehicleCreateAddReq vehicleCreateAddReq){
vehicleInfoService.create(vehicleCreateAddReq.getVinStr()); vehicleInfoService.create(vehicleCreateAddReq.getVinStr(), vehicleCreateAddReq.getMessageTemplateId());
return Result.success(); return Result.success();
} }

View File

@ -11,6 +11,7 @@ import lombok.NoArgsConstructor;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.function.Supplier;
/** /**
* @author DongZeLiang * @author DongZeLiang
@ -44,6 +45,12 @@ public class VehicleInfo {
@TableField(value = "tenant_id", fill = FieldFill.INSERT) @TableField(value = "tenant_id", fill = FieldFill.INSERT)
private String tenantId; private String tenantId;
/**
*
*/
@TableField("message_template_id")
private Long messageTemplateId;
/** /**
* *
*/ */
@ -70,20 +77,22 @@ public class VehicleInfo {
/** /**
* *
* @param messageTemplateId ID
* @return * @return
*/ */
public static VehicleInfo gen() { public static VehicleInfo gen(Supplier<Long> messageTemplateId) {
return VehicleInfo.create(VehicleUtils.genVin()); return VehicleInfo.create(VehicleUtils.genVin(), messageTemplateId);
} }
/** /**
* *
* @return * @return
*/ */
public static VehicleInfo create(String vin) { public static VehicleInfo create(String vin, Supplier<Long> messageTemplateId) {
BigDecimal battery = VehicleUtils.genBattery(); BigDecimal battery = VehicleUtils.genBattery();
return VehicleInfo.builder() return VehicleInfo.builder()
.vin(vin) .vin(vin)
.messageTemplateId(messageTemplateId.get())
.createTime(new Date()) .createTime(new Date())
.batteryLevel(battery) .batteryLevel(battery)
.remainingBattery(battery) .remainingBattery(battery)

View File

@ -20,4 +20,9 @@ public class VehicleCreateAddReq {
* VIN * VIN
*/ */
private String vinStr; private String vinStr;
/**
*
*/
private Long messageTemplateId;
} }

View File

@ -15,15 +15,19 @@ public interface VehicleInfoService extends IService<VehicleInfo> {
/** /**
* *
* @param sum *
* @param sum
* @param messageTemplateId
*/ */
void generate(Integer sum); void generate(Integer sum, Long messageTemplateId);
/** /**
* IVN * IVN
* @param vinStr VIN *
* @param vinStr VIN
* @param messageTemplateId
*/ */
void create (String vinStr); void create (String vinStr, Long messageTemplateId);
/** /**
* *

View File

@ -65,7 +65,9 @@ public class SystemAuthServiceImpl implements SystemAuthService {
UserInfo userInfo = userInfoList.get(0); UserInfo userInfo = userInfoList.get(0);
LambdaQueryWrapper<ServerConfig> serverConfigQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<ServerConfig> serverConfigQueryWrapper = new LambdaQueryWrapper<>();
serverConfigQueryWrapper.eq(ServerConfig::getTenantId, userInfo.getTenantId()); serverConfigQueryWrapper.eq(ServerConfig::getTenantId, userInfo.getTenantId());
customTenantHandler.ignore();
ServerConfig serverConfig = serverConfigService.getOne(serverConfigQueryWrapper); ServerConfig serverConfig = serverConfigService.getOne(serverConfigQueryWrapper);
customTenantHandler.remove();
LoginUserInfo loginUserInfo = LoginUserInfo.builder() LoginUserInfo loginUserInfo = LoginUserInfo.builder()
.id(userInfo.getId()) .id(userInfo.getId())
.tenantId(userInfo.getTenantId()) .tenantId(userInfo.getTenantId())

View File

@ -40,12 +40,16 @@ public class VechileInfoServiceImpl extends ServiceImpl<VehicleInfoMapper, Vehic
/** /**
* *
* *
* @param sum * @param sum
* @param messageTemplateId
*/ */
@Override @Override
@Transactional @Transactional
public void generate (Integer sum) { public void generate (Integer sum, Long messageTemplateId) {
List<VehicleInfo> vehicleInfoList = Stream.generate(VehicleInfo::gen).limit(sum).toList(); List<VehicleInfo> vehicleInfoList =
Stream.generate(() -> VehicleInfo.gen(() -> messageTemplateId))
.limit(sum)
.toList();
this.saveBatch(vehicleInfoList); this.saveBatch(vehicleInfoList);
vehicleInfoList.forEach(vehicleInstanceService::init); vehicleInfoList.forEach(vehicleInstanceService::init);
} }
@ -53,11 +57,12 @@ public class VechileInfoServiceImpl extends ServiceImpl<VehicleInfoMapper, Vehic
/** /**
* IVN * IVN
* *
* @param vinStr VIN * @param vinStr VIN
* @param messageTemplateId
*/ */
@Override @Override
@Transactional @Transactional
public void create (String vinStr) { public void create (String vinStr, Long messageTemplateId) {
String[] vinList = vinStr.split("\n"); String[] vinList = vinStr.split("\n");
StringBuilder errorMsg = new StringBuilder(); StringBuilder errorMsg = new StringBuilder();
for (String vin : vinList) { for (String vin : vinList) {
@ -76,7 +81,9 @@ public class VechileInfoServiceImpl extends ServiceImpl<VehicleInfoMapper, Vehic
if (!errorMsg.isEmpty()) { if (!errorMsg.isEmpty()) {
throw new RuntimeException(errorMsg.toString()); throw new RuntimeException(errorMsg.toString());
} }
List<VehicleInfo> vehicleInfoList = Arrays.stream(vinList).map(VehicleInfo::create).toList(); List<VehicleInfo> vehicleInfoList = Arrays.stream(vinList)
.map((String vin) -> VehicleInfo.create(vin, () -> messageTemplateId))
.toList();
this.saveBatch(vehicleInfoList); this.saveBatch(vehicleInfoList);
vehicleInfoList.forEach(vehicleInstanceService::init); vehicleInfoList.forEach(vehicleInstanceService::init);
} }

View File

@ -1,5 +1,5 @@
server: server:
port: 81 port: 9865
spring: spring:
main: main:
allow-circular-references: true allow-circular-references: true