添加电子围栏redis
This commit is contained in:
@ -7,4 +7,6 @@ public interface RedisKeyConstants {
|
||||
|
||||
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
|
||||
private OrderCarChangeRepo orderCarChangeRepo;
|
||||
|
||||
@Autowired
|
||||
private ElectronicFenceRuleRepo electronicFenceRuleRepo;
|
||||
|
||||
@Autowired
|
||||
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")){
|
||||
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<>();
|
||||
@ -1313,6 +1330,8 @@ public class OrderServiceImpl implements OrderService {
|
||||
updateWrapper.eq(OrderMainPO::getOrderNo, bindCarToOrderReq.getOrderNo());
|
||||
orderMainRepo.update(updateWrapper);
|
||||
|
||||
|
||||
|
||||
if(!CollectionUtils.isEmpty(bindCarToOrderReq.getImageList())){
|
||||
//添加车辆图片
|
||||
List<OrderCarImgPO> carImagePOList = new ArrayList<>();
|
||||
@ -1339,7 +1358,18 @@ public class OrderServiceImpl implements OrderService {
|
||||
.set(CarPO::getBrsStatus, CarStatusEnum.NORMAL.getCode());
|
||||
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();
|
||||
@ -1430,6 +1460,13 @@ public class OrderServiceImpl implements OrderService {
|
||||
carPOLambdaUpdateWrapper.eq(CarPO::getId, orderDTO.getVehicleId())
|
||||
.set(CarPO::getBrsStatus, CarStatusEnum.NORMAL.getCode());
|
||||
carRepo.update(carPOLambdaUpdateWrapper);
|
||||
//删除车辆电子围栏缓存
|
||||
String redisEfenceKey = RedisKeyConstants.E_Fence_KEY + carPO.getLotNumber();
|
||||
if (redisUtil.get(redisEfenceKey) != null){
|
||||
redisUtil.deleteRedisLock(redisEfenceKey);
|
||||
}
|
||||
|
||||
|
||||
//异步执行分润
|
||||
ThreadPoolUtils.getThreadPool().execute(() -> {
|
||||
orderDistribService.saveOrderDistrib(returnCarReq.getOrderNo());
|
||||
|
||||
@ -24,6 +24,10 @@ public class RedisUtil {
|
||||
redisTemplate.opsForValue().set(key, value, timeout, unit);
|
||||
}
|
||||
|
||||
public void set(String key, String value) {
|
||||
redisTemplate.opsForValue().set(key, value);
|
||||
}
|
||||
|
||||
public String get(String 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