添加电子围栏redis
This commit is contained in:
@ -7,4 +7,6 @@ public interface RedisKeyConstants {
|
|||||||
|
|
||||||
String BIND_CAR_KEY = SERVICE_PREFIX + "bindCar:";
|
String BIND_CAR_KEY = SERVICE_PREFIX + "bindCar:";
|
||||||
|
|
||||||
|
String E_Fence_KEY = SERVICE_PREFIX + "eFence:";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,17 @@
|
|||||||
|
package com.sczx.order.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.sczx.order.po.ElectronicFenceRulePO;
|
||||||
|
import com.sczx.order.po.OrderCarChangePO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 订单车辆变更表 Mapper 接口
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author zhangli
|
||||||
|
* @since 2025-09-03 23:12:55
|
||||||
|
*/
|
||||||
|
public interface ElectronicFenceRuleMapper extends BaseMapper<ElectronicFenceRulePO> {
|
||||||
|
|
||||||
|
}
|
||||||
66
src/main/java/com/sczx/order/po/ElectronicFenceRulePO.java
Normal file
66
src/main/java/com/sczx/order/po/ElectronicFenceRulePO.java
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
package com.sczx.order.po;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.annotation.JSONField;
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 套餐规则与电子围栏关联表
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author lingma
|
||||||
|
* @since 2025-07-25 17:17:28
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@TableName("zc_electronic_fence_rule")
|
||||||
|
@ApiModel(value = "ElectronicFenceRulePO对象", description = "套餐规则与电子围栏关联表")
|
||||||
|
public class ElectronicFenceRulePO implements Serializable {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@ApiModelProperty("规则ID")
|
||||||
|
@TableId(value = "id", type = IdType.AUTO)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@ApiModelProperty("车辆规则ID")
|
||||||
|
private Long carRuleId;
|
||||||
|
|
||||||
|
@ApiModelProperty("电子围栏ID")
|
||||||
|
private Long electronicFenceId;
|
||||||
|
|
||||||
|
@ApiModelProperty("排序")
|
||||||
|
private Integer sortOrder;
|
||||||
|
|
||||||
|
@ApiModelProperty("删除标志(0代表存在 2代表删除)")
|
||||||
|
private String delFlag;
|
||||||
|
|
||||||
|
@ApiModelProperty("创建者")
|
||||||
|
private String createBy;
|
||||||
|
|
||||||
|
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
|
@ApiModelProperty("创建时间")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
@ApiModelProperty("更新者")
|
||||||
|
private String updateBy;
|
||||||
|
|
||||||
|
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||||
|
@ApiModelProperty("更新时间")
|
||||||
|
private LocalDateTime updateTime;
|
||||||
|
|
||||||
|
@ApiModelProperty("备注")
|
||||||
|
private String remark;
|
||||||
|
}
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
package com.sczx.order.repository;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.sczx.order.po.ElectronicFenceRulePO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 套餐规则与电子围栏关联表 服务类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author lingma
|
||||||
|
* @since 2025-07-25 17:17:28
|
||||||
|
*/
|
||||||
|
public interface ElectronicFenceRuleRepo extends IService<ElectronicFenceRulePO> {
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
package com.sczx.order.repository.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.sczx.order.po.ElectronicFenceRulePO;
|
||||||
|
import com.sczx.order.repository.ElectronicFenceRuleRepo;
|
||||||
|
import com.sczx.order.mapper.ElectronicFenceRuleMapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 套餐规则与电子围栏关联表 服务实现类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author lingma
|
||||||
|
* @since 2025-07-25 17:17:28
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class ElectronicFenceRuleRepoImpl extends ServiceImpl<ElectronicFenceRuleMapper, ElectronicFenceRulePO> implements ElectronicFenceRuleRepo {
|
||||||
|
|
||||||
|
}
|
||||||
@ -60,6 +60,9 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private OrderCarChangeRepo orderCarChangeRepo;
|
private OrderCarChangeRepo orderCarChangeRepo;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ElectronicFenceRuleRepo electronicFenceRuleRepo;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private JwtUtil jwtUtil;
|
private JwtUtil jwtUtil;
|
||||||
|
|
||||||
@ -1182,8 +1185,22 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
if (status.equals("40001") || status.equals("40002") || status.equals("40003") || status.equals("40005") || status.equals("40006")){
|
if (status.equals("40001") || status.equals("40002") || status.equals("40003") || status.equals("40005") || status.equals("40006")){
|
||||||
throw new BizException("此用户在租电APP还有未完成的订单,请联系用户完成租电订单或是驳回此租车订单");
|
throw new BizException("此用户在租电APP还有未完成的订单,请联系用户完成租电订单或是驳回此租车订单");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
//绑定电子围栏
|
||||||
|
LambdaQueryWrapper<ElectronicFenceRulePO> electqueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
electqueryWrapper.eq(ElectronicFenceRulePO::getCarRuleId, orderMainPO.getRentCarRuleId())
|
||||||
|
.eq(ElectronicFenceRulePO::getDelFlag, "0")
|
||||||
|
.orderByAsc(ElectronicFenceRulePO::getSortOrder);
|
||||||
|
ElectronicFenceRulePO electronicFenceRulePO = electronicFenceRuleRepo.getOne(electqueryWrapper);
|
||||||
|
|
||||||
|
if (electronicFenceRulePO != null) {
|
||||||
|
String redisEfenceKey = RedisKeyConstants.E_Fence_KEY + carDTO.getLotNumber();
|
||||||
|
redisUtil.set(redisEfenceKey, electronicFenceRulePO.getElectronicFenceId().toString());
|
||||||
|
log.info("电子围栏ID已存入Redis,key: {}, 电子围栏ID: {}", redisEfenceKey, electronicFenceRulePO.getElectronicFenceId());
|
||||||
|
} else {
|
||||||
|
log.warn("未找到租车规则ID为 {} 的电子围栏规则", orderMainPO.getRentCarRuleId());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
LambdaQueryWrapper<OrderSubPO> queryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<OrderSubPO> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
@ -1313,6 +1330,8 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
updateWrapper.eq(OrderMainPO::getOrderNo, bindCarToOrderReq.getOrderNo());
|
updateWrapper.eq(OrderMainPO::getOrderNo, bindCarToOrderReq.getOrderNo());
|
||||||
orderMainRepo.update(updateWrapper);
|
orderMainRepo.update(updateWrapper);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(!CollectionUtils.isEmpty(bindCarToOrderReq.getImageList())){
|
if(!CollectionUtils.isEmpty(bindCarToOrderReq.getImageList())){
|
||||||
//添加车辆图片
|
//添加车辆图片
|
||||||
List<OrderCarImgPO> carImagePOList = new ArrayList<>();
|
List<OrderCarImgPO> carImagePOList = new ArrayList<>();
|
||||||
@ -1339,7 +1358,18 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
.set(CarPO::getBrsStatus, CarStatusEnum.NORMAL.getCode());
|
.set(CarPO::getBrsStatus, CarStatusEnum.NORMAL.getCode());
|
||||||
carRepo.update(oldCarPOLambdaUpdateWrapper);
|
carRepo.update(oldCarPOLambdaUpdateWrapper);
|
||||||
|
|
||||||
|
//更新电子围栏
|
||||||
|
LambdaUpdateWrapper<CarPO> oldCarIotPOLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
||||||
|
oldCarIotPOLambdaUpdateWrapper.eq(CarPO::getId, orderMainPO.getVehicleId());
|
||||||
|
CarPO oldCarPO = carRepo.getOne(oldCarIotPOLambdaUpdateWrapper);
|
||||||
|
|
||||||
|
String redisEfenceKey = RedisKeyConstants.E_Fence_KEY + oldCarPO.getLotNumber();
|
||||||
|
if(redisUtil.get(redisEfenceKey) != null){
|
||||||
|
String efence = redisUtil.get(redisEfenceKey);
|
||||||
|
String newKey = RedisKeyConstants.E_Fence_KEY + carDTO.getLotNumber();
|
||||||
|
redisUtil.delete(redisEfenceKey);
|
||||||
|
redisUtil.set(newKey, efence);
|
||||||
|
}
|
||||||
|
|
||||||
//记录变更记录
|
//记录变更记录
|
||||||
OrderCarChangePO orderCarChangePO = new OrderCarChangePO();
|
OrderCarChangePO orderCarChangePO = new OrderCarChangePO();
|
||||||
@ -1430,6 +1460,13 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
carPOLambdaUpdateWrapper.eq(CarPO::getId, orderDTO.getVehicleId())
|
carPOLambdaUpdateWrapper.eq(CarPO::getId, orderDTO.getVehicleId())
|
||||||
.set(CarPO::getBrsStatus, CarStatusEnum.NORMAL.getCode());
|
.set(CarPO::getBrsStatus, CarStatusEnum.NORMAL.getCode());
|
||||||
carRepo.update(carPOLambdaUpdateWrapper);
|
carRepo.update(carPOLambdaUpdateWrapper);
|
||||||
|
//删除车辆电子围栏缓存
|
||||||
|
String redisEfenceKey = RedisKeyConstants.E_Fence_KEY + carPO.getLotNumber();
|
||||||
|
if (redisUtil.get(redisEfenceKey) != null){
|
||||||
|
redisUtil.deleteRedisLock(redisEfenceKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//异步执行分润
|
//异步执行分润
|
||||||
ThreadPoolUtils.getThreadPool().execute(() -> {
|
ThreadPoolUtils.getThreadPool().execute(() -> {
|
||||||
orderDistribService.saveOrderDistrib(returnCarReq.getOrderNo());
|
orderDistribService.saveOrderDistrib(returnCarReq.getOrderNo());
|
||||||
|
|||||||
@ -24,6 +24,10 @@ public class RedisUtil {
|
|||||||
redisTemplate.opsForValue().set(key, value, timeout, unit);
|
redisTemplate.opsForValue().set(key, value, timeout, unit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void set(String key, String value) {
|
||||||
|
redisTemplate.opsForValue().set(key, value);
|
||||||
|
}
|
||||||
|
|
||||||
public String get(String key) {
|
public String get(String key) {
|
||||||
return redisTemplate.opsForValue().get(key);
|
return redisTemplate.opsForValue().get(key);
|
||||||
}
|
}
|
||||||
|
|||||||
5
src/main/resources/mapper/ElectronicFenceRuleMapper.xml
Normal file
5
src/main/resources/mapper/ElectronicFenceRuleMapper.xml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.sczx.order.mapper.ElectronicFenceRuleMapper">
|
||||||
|
|
||||||
|
</mapper>
|
||||||
Reference in New Issue
Block a user