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.extension.plugins.MybatisPlusInterceptor;
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.Configuration;
@ -12,6 +15,9 @@ import org.springframework.context.annotation.Configuration;
@Configuration
public class MybatisPlusConfig {
@Autowired
private CustomTenantHandler customTenantHandler;
/**
* ,mybatis,
*/
@ -19,6 +25,9 @@ public class MybatisPlusConfig {
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
TenantLineInnerInterceptor tenantInterceptor = new TenantLineInnerInterceptor();
tenantInterceptor.setTenantLineHandler(customTenantHandler);
interceptor.addInnerInterceptor(tenantInterceptor);
return interceptor;
}
}

View File

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

View File

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

View File

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

View File

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

View File

@ -15,15 +15,19 @@ public interface VehicleInfoService extends IService<VehicleInfo> {
/**
*
*
* @param sum
* @param messageTemplateId
*/
void generate(Integer sum);
void generate(Integer sum, Long messageTemplateId);
/**
* IVN
*
* @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);
LambdaQueryWrapper<ServerConfig> serverConfigQueryWrapper = new LambdaQueryWrapper<>();
serverConfigQueryWrapper.eq(ServerConfig::getTenantId, userInfo.getTenantId());
customTenantHandler.ignore();
ServerConfig serverConfig = serverConfigService.getOne(serverConfigQueryWrapper);
customTenantHandler.remove();
LoginUserInfo loginUserInfo = LoginUserInfo.builder()
.id(userInfo.getId())
.tenantId(userInfo.getTenantId())

View File

@ -41,11 +41,15 @@ public class VechileInfoServiceImpl extends ServiceImpl<VehicleInfoMapper, Vehic
*
*
* @param sum
* @param messageTemplateId
*/
@Override
@Transactional
public void generate (Integer sum) {
List<VehicleInfo> vehicleInfoList = Stream.generate(VehicleInfo::gen).limit(sum).toList();
public void generate (Integer sum, Long messageTemplateId) {
List<VehicleInfo> vehicleInfoList =
Stream.generate(() -> VehicleInfo.gen(() -> messageTemplateId))
.limit(sum)
.toList();
this.saveBatch(vehicleInfoList);
vehicleInfoList.forEach(vehicleInstanceService::init);
}
@ -54,10 +58,11 @@ public class VechileInfoServiceImpl extends ServiceImpl<VehicleInfoMapper, Vehic
* IVN
*
* @param vinStr VIN
* @param messageTemplateId
*/
@Override
@Transactional
public void create (String vinStr) {
public void create (String vinStr, Long messageTemplateId) {
String[] vinList = vinStr.split("\n");
StringBuilder errorMsg = new StringBuilder();
for (String vin : vinList) {
@ -76,7 +81,9 @@ public class VechileInfoServiceImpl extends ServiceImpl<VehicleInfoMapper, Vehic
if (!errorMsg.isEmpty()) {
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);
vehicleInfoList.forEach(vehicleInstanceService::init);
}

View File

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