first commit

This commit is contained in:
陈现府
2025-11-20 10:45:16 +08:00
commit 8355431361
2643 changed files with 291314 additions and 0 deletions
@@ -0,0 +1,18 @@
package com.mhd.user.application.strategy;
import com.mhd.common.core.domain.po.VehiclePo;
import com.mhd.user.domain.userAggregate.repository.todo.UserDriverDO;
/**
* 定义了为司机绑定车辆的策略接口。
* 策略的职责是准备好车辆(已有的或新建的),并将其与司机关联。
*/
public interface VehicleBindingStrategy {
/**
* 执行车辆绑定策略
*
* @param driver 司机实体对象,包含司机的相关信息
* @param vehicle 车辆PO对象,包含车辆的详细信息
*/
void execute(UserDriverDO driver, VehiclePo vehicle);
}
@@ -0,0 +1,64 @@
package com.mhd.user.application.strategy.impI;
import cn.hutool.core.date.DateUtil;
import com.mhd.common.core.domain.po.UserPo;
import com.mhd.common.core.domain.po.VehiclePo;
import com.mhd.user.application.service.UserApplicationService;
import com.mhd.user.application.strategy.VehicleBindingStrategy;
import com.mhd.user.domain.userAggregate.repository.facade.DriverVehicleBindService;
import com.mhd.user.domain.userAggregate.repository.todo.DriverVehicleBindDo;
import com.mhd.user.domain.userAggregate.repository.todo.UserDriverDO;
import com.mhd.user.domain.userAggregate.service.UserWlhyDomainService;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Component;
@Component
@Log4j2
@RequiredArgsConstructor
public class BindToExistingVehicleStrategy implements VehicleBindingStrategy {
private final UserWlhyDomainService wlhyDomainService;
private final DriverVehicleBindService driverVehicleBindService;
private final UserApplicationService userApplicationService;
@Override
public void execute(UserDriverDO driver, VehiclePo vehicle) {
log.info("执行创建车辆绑定策略类代码");
UserPo user = userApplicationService.selectUserTableByUserId(driver.getUserId());
DriverVehicleBindDo driverVehicleBindDo = new DriverVehicleBindDo();
driverVehicleBindDo.setUserId(driver.getUserId());
driverVehicleBindDo.setVehicleId(vehicle.getVehicleId());
driverVehicleBindDo.setDriverBindId(driver.getUserId());
driverVehicleBindDo.setBindDriverName(user.getUserName());
driverVehicleBindDo.setBindDriverPhone(user.getUserPhone());
driverVehicleBindDo.setTopOrganizationId(user.getTopOrganizationId());
driverVehicleBindDo.setOrganizationId(user.getTopOrganizationId());
driverVehicleBindDo.setVehicleLicensePlateNumber(vehicle.getVehicleLicensePlateNumber());
driverVehicleBindDo.setVehicleTypeId(vehicle.getVehicleTypeId());
driverVehicleBindDo.setVehicleTypeName(vehicle.getVehicleTypeName());
driverVehicleBindDo.setVehicleCheckoutPeriodValidity(
DateUtil.parse(vehicle.getVehicleCheckoutPeriodValidity()));
driverVehicleBindDo.setBusinessLicenseExpireEndDate(
DateUtil.parse(vehicle.getBusinessLicenseExpireEndDate()));
driverVehicleBindDo.setBusinessLicenseLongStatus(vehicle.getBusinessLicenseLongStatus());
driverVehicleBindDo.setRoadTransportCertificateExpireDate(
DateUtil.parse(vehicle.getRoadTransportCertificateExpireDate()));
driverVehicleBindDo.setRoadTransportCertificateLongStatus(
vehicle.getRoadTransportCertificateLongStatus());
driverVehicleBindDo.setDefaultFlag(1);
driverVehicleBindDo.setCreateBy(user.getUserId());
driverVehicleBindDo.setCreateByName(user.getUserName());
driverVehicleBindDo.setCreateTime(DateUtil.date());
log.info("绑定信息:{}",driverVehicleBindDo);
Boolean flag = driverVehicleBindService.insert(driverVehicleBindDo);
if (flag) {
//向网货同步绑定车辆信息
log.info("向网货同步绑定车辆信息");
wlhyDomainService.binding(driverVehicleBindDo);
}
log.info("完成创建车辆绑定策略类代码");
}
}
@@ -0,0 +1,45 @@
package com.mhd.user.application.strategy.impI;
import com.mhd.common.core.domain.dto.VehicleDto;
import com.mhd.common.core.domain.entity.R;
import com.mhd.common.core.domain.po.VehiclePo;
import com.mhd.system.api.TransportFeign;
import com.mhd.user.application.strategy.VehicleBindingStrategy;
import com.mhd.user.domain.userAggregate.repository.todo.UserDriverDO;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Component;
@Component
@Log4j2
@RequiredArgsConstructor
public class CreateAndBindNewVehicleStrategy implements VehicleBindingStrategy {
private final TransportFeign transportFeign;
@Override
public void execute(UserDriverDO driver, VehiclePo vehicle) {
log.info("执行创建车辆并绑定策略类代码");
VehicleDto dto = new VehicleDto();
dto.setVehicleLicensePlateNumber(driver.getVehicleLicensePlateNumber());
dto.setVehicleTypeId(driver.getVehicleTypeId());
dto.setVehicleTypeName(driver.getVehicleTypeName());
dto.setVehicleUsePerson(driver.getUserName());
dto.setUserId(driver.getUserId());
dto.setUserName(driver.getUserName());
dto.setUserPhone(driver.getUserAccount());
dto.setVehicleSource(driver.getUserCarType());
dto.setMotorcadeId(driver.getMotorcadeId());
dto.setMotorcadeName(driver.getMotorcadeName());
dto.setDepartmentId(driver.getDepartmentId());
R<Void> result = transportFeign.addForUserApp(dto);
if (result.getCode() != 200) {
log.warn("feign远程调用新增车辆接口失败 msg:{}", result.getMsg());
throw new RuntimeException("新增车辆失败,请重试!");
}
log.info("结束创建车辆并绑定策略类代码");
}
}
@@ -0,0 +1,18 @@
package com.mhd.user.application.strategy.impI;
import com.mhd.common.core.domain.po.VehiclePo;
import com.mhd.user.application.strategy.VehicleBindingStrategy;
import com.mhd.user.domain.userAggregate.repository.todo.UserDriverDO;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Component;
@Component
@Log4j2
public class HandleBoundVehicleStrategy implements VehicleBindingStrategy {
@Override
public void execute(UserDriverDO driver, VehiclePo vehicle) {
log.warn("车牌号 {} 已被绑定!",driver.getVehicleLicensePlateNumber());
throw new RuntimeException(String.format("车牌号 %s 已被绑定,请确认。", driver.getVehicleLicensePlateNumber()));
}
}