diff --git a/online-taxi-public/internal-common/src/main/java/com/internal/contant/CommonStatusEnum.java b/online-taxi-public/internal-common/src/main/java/com/internal/contant/CommonStatusEnum.java index 18e6ecf..5915103 100644 --- a/online-taxi-public/internal-common/src/main/java/com/internal/contant/CommonStatusEnum.java +++ b/online-taxi-public/internal-common/src/main/java/com/internal/contant/CommonStatusEnum.java @@ -22,6 +22,16 @@ CommonStatusEnum { *计价规则:1300-1399 */ PRICE_RULE_EMPTY(1300,"规则不存在"), + + + /** + * 车辆绑定 + */ + DRIVER_CAR_BIND_NOT_EXISTS(1500,"司机和车辆绑定关系不存在"), + DRIVER_CAR_BIND_EXISTS(1502,"司机和车辆绑定关系已存在, 请勿重复绑定"), + + DRIVER_CAR_UNBIND_EXISTS(1503,"司机和车辆绑定关系已绑定"), + /** * 成功 */ diff --git a/online-taxi-public/internal-common/src/main/java/com/internal/contant/DriverCarConstant.java b/online-taxi-public/internal-common/src/main/java/com/internal/contant/DriverCarConstant.java new file mode 100644 index 0000000..902ad53 --- /dev/null +++ b/online-taxi-public/internal-common/src/main/java/com/internal/contant/DriverCarConstant.java @@ -0,0 +1,16 @@ +package com.internal.contant; + + +public class DriverCarConstant { + + /** + * 司机状态绑定 + */ + public static final int DRIVER_CAR_BIND = 1; + + /** + * 司机状态解绑 + */ + public static final int DRIVER_CAR_UNBIND = 2; + +} diff --git a/online-taxi-public/internal-common/src/main/java/com/internal/dto/DriverCarBindingRelationship.java b/online-taxi-public/internal-common/src/main/java/com/internal/dto/DriverCarBindingRelationship.java new file mode 100644 index 0000000..0c23ca2 --- /dev/null +++ b/online-taxi-public/internal-common/src/main/java/com/internal/dto/DriverCarBindingRelationship.java @@ -0,0 +1,37 @@ +package com.internal.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * + *

+ * + * @author author + * @since 2023-04-28 + */ +@Data +public class DriverCarBindingRelationship implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + private Long driverId; + + private Long carId; + + /** + * 1,绑定 + * 2,解绑 + */ + private Integer bindState; + + private LocalDateTime bindingTime; + + private LocalDateTime unBindingTime; + +} diff --git a/online-taxi-public/internal-common/src/main/java/com/internal/util/CommonUtils.java b/online-taxi-public/internal-common/src/main/java/com/internal/util/CommonUtils.java new file mode 100644 index 0000000..07435dc --- /dev/null +++ b/online-taxi-public/internal-common/src/main/java/com/internal/util/CommonUtils.java @@ -0,0 +1,11 @@ +package com.internal.util; + +import java.time.LocalDateTime; + +public class CommonUtils { + + public static LocalDateTime getLocalDateTimeNow(){ + LocalDateTime localDateTime = LocalDateTime.now(); + return localDateTime; + } +} diff --git a/online-taxi-public/service-driver-user/src/main/java/com/taxi/servicedriveruser/controller/DriverCarBindingRelationshipController.java b/online-taxi-public/service-driver-user/src/main/java/com/taxi/servicedriveruser/controller/DriverCarBindingRelationshipController.java new file mode 100644 index 0000000..8f1e46a --- /dev/null +++ b/online-taxi-public/service-driver-user/src/main/java/com/taxi/servicedriveruser/controller/DriverCarBindingRelationshipController.java @@ -0,0 +1,41 @@ +package com.taxi.servicedriveruser.controller; + + +import com.internal.contant.DriverCarConstant; +import com.internal.dto.DriverCarBindingRelationship; +import com.internal.dto.ResponseResult; +import com.internal.util.CommonUtils; +import com.taxi.servicedriveruser.service.DriverCarBindingRelationshipService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 前端控制器 + *

+ * + * @author author + * @since 2023-04-28 + */ +@RestController +@RequestMapping("/driver-car-binding-relationship") +public class DriverCarBindingRelationshipController { + + @Autowired + private DriverCarBindingRelationshipService driverCarBindingRelationshipService; + + @PostMapping("/bind") + public ResponseResult bind(@RequestBody DriverCarBindingRelationship driverCarBindingRelationship){ + + return driverCarBindingRelationshipService.bind(driverCarBindingRelationship); + } + + @PostMapping("/unbind") + public ResponseResult unbind(@RequestBody DriverCarBindingRelationship driverCarBindingRelationship){ + + return driverCarBindingRelationshipService.unbind(driverCarBindingRelationship); + } +} diff --git a/online-taxi-public/service-driver-user/src/main/java/com/taxi/servicedriveruser/generator/MysqlGenerator.java b/online-taxi-public/service-driver-user/src/main/java/com/taxi/servicedriveruser/generator/MysqlGenerator.java index 97ab640..5ea029f 100644 --- a/online-taxi-public/service-driver-user/src/main/java/com/taxi/servicedriveruser/generator/MysqlGenerator.java +++ b/online-taxi-public/service-driver-user/src/main/java/com/taxi/servicedriveruser/generator/MysqlGenerator.java @@ -17,7 +17,7 @@ public class MysqlGenerator { builder.parent("com.taxi.servicedriveruser").pathInfo(Collections.singletonMap(OutputFile.mapperXml, "/Users/topsun/Documents/workSpce/gitlab-projectTest/online-taxi-public/service-driver-user/src/main/java/com/taxi/servicedriveruser/mapper")); }).strategyConfig(builder -> { - builder.addInclude("car"); + builder.addInclude("driver_car_binding_relationship "); }).templateEngine(new FreemarkerTemplateEngine()).execute(); } diff --git a/online-taxi-public/service-driver-user/src/main/java/com/taxi/servicedriveruser/mapper/DriverCarBindingRelationshipMapper.java b/online-taxi-public/service-driver-user/src/main/java/com/taxi/servicedriveruser/mapper/DriverCarBindingRelationshipMapper.java new file mode 100644 index 0000000..0c06813 --- /dev/null +++ b/online-taxi-public/service-driver-user/src/main/java/com/taxi/servicedriveruser/mapper/DriverCarBindingRelationshipMapper.java @@ -0,0 +1,19 @@ +package com.taxi.servicedriveruser.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.internal.dto.DriverCarBindingRelationship; +import org.springframework.stereotype.Repository; + +/** + *

+ * Mapper 接口 + *

+ * + * @author author + * @since 2023-04-28 + */ +@Repository +public interface DriverCarBindingRelationshipMapper extends BaseMapper { + + +} diff --git a/online-taxi-public/service-driver-user/src/main/java/com/taxi/servicedriveruser/service/CarService.java b/online-taxi-public/service-driver-user/src/main/java/com/taxi/servicedriveruser/service/CarService.java index d4454c6..6deab9a 100644 --- a/online-taxi-public/service-driver-user/src/main/java/com/taxi/servicedriveruser/service/CarService.java +++ b/online-taxi-public/service-driver-user/src/main/java/com/taxi/servicedriveruser/service/CarService.java @@ -6,6 +6,8 @@ import com.taxi.servicedriveruser.mapper.CarMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.time.LocalDateTime; + @Service public class CarService { @@ -14,6 +16,9 @@ public class CarService { public ResponseResult addCar(Car car) { + LocalDateTime localDateTime = LocalDateTime.now(); + car.setGmtCreate(localDateTime); + car.setGmtModified(localDateTime); carMapper.insert(car); return ResponseResult.success(); } diff --git a/online-taxi-public/service-driver-user/src/main/java/com/taxi/servicedriveruser/service/DriverCarBindingRelationshipService.java b/online-taxi-public/service-driver-user/src/main/java/com/taxi/servicedriveruser/service/DriverCarBindingRelationshipService.java new file mode 100644 index 0000000..f496607 --- /dev/null +++ b/online-taxi-public/service-driver-user/src/main/java/com/taxi/servicedriveruser/service/DriverCarBindingRelationshipService.java @@ -0,0 +1,95 @@ +package com.taxi.servicedriveruser.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.internal.contant.CommonStatusEnum; +import com.internal.contant.DriverCarConstant; +import com.internal.dto.DriverCarBindingRelationship; +import com.internal.dto.ResponseResult; +import com.internal.util.CommonUtils; +import com.taxi.servicedriveruser.mapper.DriverCarBindingRelationshipMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestBody; + +import javax.print.attribute.standard.NumberUp; +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author author + * @since 2023-04-28 + */ +@Service +public class DriverCarBindingRelationshipService{ + @Autowired + private DriverCarBindingRelationshipMapper driverCarBindingRelationshipMapper; + + public ResponseResult bind(@RequestBody DriverCarBindingRelationship driverCarBindingRelationship){ + //查询条件 + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("driver_id",driverCarBindingRelationship.getDriverId()); + queryWrapper.eq("car_id",driverCarBindingRelationship.getCarId()); + //校验数据 + int count = driverCarBindingRelationshipMapper.selectCount(queryWrapper); + if(count == 1 ){ + driverCarBindingRelationship = driverCarBindingRelationshipMapper.selectOne(queryWrapper); + if(driverCarBindingRelationship != null && DriverCarConstant.DRIVER_CAR_BIND == driverCarBindingRelationship.getBindState()) {//已经绑定 + return ResponseResult.fail(CommonStatusEnum.DRIVER_CAR_BIND_EXISTS); + }else if(driverCarBindingRelationship != null && DriverCarConstant.DRIVER_CAR_UNBIND == driverCarBindingRelationship.getBindState()){//更新数据库绑定状态 + driverCarBindingRelationship.setBindState(DriverCarConstant.DRIVER_CAR_BIND); + driverCarBindingRelationshipMapper.updateById(driverCarBindingRelationship); + } + }else if(count > 1){//排除数据库存在脏数据 + return ResponseResult.fail(CommonStatusEnum.FAIL); + }else{ + //司机已经绑定 + queryWrapper = new QueryWrapper(); + queryWrapper.eq("driver_id",driverCarBindingRelationship.getDriverId()); + queryWrapper.eq("bind_state",DriverCarConstant.DRIVER_CAR_BIND ); + count = driverCarBindingRelationshipMapper.selectCount(queryWrapper); + if(count > 0){ + return ResponseResult.fail(CommonStatusEnum.DRIVER_CAR_BIND_EXISTS); + } + + queryWrapper = new QueryWrapper(); + queryWrapper.eq("car_id",driverCarBindingRelationship.getCarId()); + queryWrapper.eq("bind_state",DriverCarConstant.DRIVER_CAR_BIND ); + count = driverCarBindingRelationshipMapper.selectCount(queryWrapper); + if(count > 0){ + return ResponseResult.fail(CommonStatusEnum.DRIVER_CAR_BIND_EXISTS); + } + + //新增数据,并设置绑定状态 + driverCarBindingRelationship.setBindingTime(CommonUtils.getLocalDateTimeNow() ); + driverCarBindingRelationship.setBindState(DriverCarConstant.DRIVER_CAR_BIND); + driverCarBindingRelationshipMapper.insert(driverCarBindingRelationship); + } + + return ResponseResult.success(); + } + + public ResponseResult unbind(@RequestBody DriverCarBindingRelationship driverCarBindingRelationship){ + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("driver_id",driverCarBindingRelationship.getDriverId()); + queryWrapper.eq("car_id",driverCarBindingRelationship.getCarId()); + int count = driverCarBindingRelationshipMapper.selectCount(queryWrapper); + if(count == 1){ + driverCarBindingRelationship = driverCarBindingRelationshipMapper.selectOne(queryWrapper); + if(DriverCarConstant.DRIVER_CAR_UNBIND == driverCarBindingRelationship.getBindState()){ + return ResponseResult.success(CommonStatusEnum.DRIVER_CAR_UNBIND_EXISTS); + } + driverCarBindingRelationship.setUnBindingTime(CommonUtils.getLocalDateTimeNow() ); + driverCarBindingRelationship.setBindState(DriverCarConstant.DRIVER_CAR_UNBIND); + driverCarBindingRelationshipMapper.updateById(driverCarBindingRelationship); + }else if(count > 1){//排除数据库存在脏数据 + return ResponseResult.fail(CommonStatusEnum.FAIL); + }else{ + return ResponseResult.fail(CommonStatusEnum.DRIVER_CAR_BIND_NOT_EXISTS); + } + return ResponseResult.success(); + } +}