Compare commits

2 Commits

Author SHA1 Message Date
zc
800fc68cb9 配置 2026-05-13 09:32:41 +08:00
zc
d4f20f7a67 Merge branch 'refs/heads/dev_zc' into dev_io_zc
# Conflicts:
#	example/mqtt-car/src/main/java/org/dromara/mica/mqtt/server/entity/CarPassGather.java
#	example/mqtt-car/src/main/java/org/dromara/mica/mqtt/server/listener/CarMessageListener.java
#	example/mqtt-car/src/main/resources/application-dev.yml
#	example/mqtt-car/src/main/resources/application-prod.yml
2026-05-12 11:53:39 +08:00
10 changed files with 203 additions and 153 deletions

View File

@@ -10,8 +10,8 @@ import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
@Data @Data
@TableName("sys_io_lock_equipment") @TableName("sys_equipment")
public class IoLockEquipment implements Serializable { public class Equipment implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@@ -21,6 +21,9 @@ public class IoLockEquipment implements Serializable {
@TableId(type = IdType.AUTO) @TableId(type = IdType.AUTO)
private Long id; private Long id;
/** 所属产品Id */
private Long productId;
/** 设备名称 */ /** 设备名称 */
private String name; private String name;
@@ -33,6 +36,15 @@ public class IoLockEquipment implements Serializable {
/** 设备密码 */ /** 设备密码 */
private String password; private String password;
/** 设备区域 */
private Long spaceId;
/** 设备位置 */
private Long pointId;
/** 对接状态(0未对接 1对接成功) */
private Long state;
/** 设备状态(0在线 1离线) */ /** 设备状态(0在线 1离线) */
private String flag; private String flag;

View File

@@ -47,21 +47,28 @@ public class CarMessageListener {
@Autowired @Autowired
RedisService redisService; RedisService redisService;
// @Autowired @Autowired
// ICarParkRecordService carParkRecordService; ICarParkRecordService carParkRecordService;
//
// @Autowired
// ICarPassRecordService carPassRecordService;
//
// @Autowired
// ICarParkItemService carParkItemService;
//
// @Autowired
// ICarPassGatherService carPassGatherService;
// private static String key = "1234567898765432"; @Autowired
ICarPassRecordService carPassRecordService;
// private String jinjiangUrl = "http://127.0.0.1:6609/"; @Autowired
ICarParkItemService carParkItemService;
@Autowired
ICarPassGatherService carPassGatherService;
@Autowired
private ServerService service;
private static String key = "1234567898765432";
//xa、jl、td、xj
private String jinjiangUrl = "http://127.0.0.1:6609/";
//zr
// private String jinjiangUrl = "http://192.168.155.42:6609/";
/** /**
* 心跳 * 心跳
@@ -74,7 +81,7 @@ public class CarMessageListener {
String sn = topicVars.get("sn"); String sn = topicVars.get("sn");
log.info("接收到来自客户端 [{}] 的心跳消息 -> Topic: {}", sn, topic); log.info("接收到来自客户端 [{}] 的心跳消息 -> Topic: {}", sn, topic);
// 更新客户端的最后心跳 // 更新客户端的最后心跳
redisService.setCacheObject(CacheConstants.EQUIPMENT_HEARTBEAT + sn, FlagEnums.ONLINE.getCode(), CacheConstants.OFFLINE_THRESHOLD, TimeUnit.MILLISECONDS); redisService.setCacheObject(CacheConstants.EQUIPMENT_HEARTBEAT + sn, FlagEnums.ONLINE.getCode(), CacheConstants.OFFLINE_THRESHOLD, TimeUnit.MILLISECONDS);
} }
@@ -84,7 +91,7 @@ public class CarMessageListener {
* @param topic * @param topic
* @param message * @param message
*/ */
/*@MqttServerFunction("device/${sn}/message/down/white_list_operator/reply") @MqttServerFunction("device/${sn}/message/down/white_list_operator/reply")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void white_list_operator_reply(String topic, byte[] message) { public void white_list_operator_reply(String topic, byte[] message) {
log.info("接收到车牌下发消息 -> Topic: {}, message: {}", topic, new String(message)); log.info("接收到车牌下发消息 -> Topic: {}, message: {}", topic, new String(message));
@@ -104,7 +111,7 @@ public class CarMessageListener {
carParkRecord.setSync("1"); carParkRecord.setSync("1");
} }
carParkRecordService.updateByClientId(carParkRecord); carParkRecordService.updateByClientId(carParkRecord);
}*/ }
/** /**
* 车牌入场出场识别监听 * 车牌入场出场识别监听
@@ -116,98 +123,98 @@ public class CarMessageListener {
public void ivs_result(String topic, Map<String, String> topicVars, byte[] message) throws Exception { public void ivs_result(String topic, Map<String, String> topicVars, byte[] message) throws Exception {
String sn = topicVars.get("sn"); String sn = topicVars.get("sn");
log.info("接收到车辆识别消息 -> Topic: {}", topic); log.info("接收到车辆识别消息 -> Topic: {}", topic);
//
// //如果开启了锁杆,且车位满了 //如果开启了锁杆,且车位满了
// CarParkItem carParkItem = carParkItemService.selectBySn(sn); CarParkItem carParkItem = carParkItemService.selectBySn(sn);
// long count = carPassGatherService.count(new QueryWrapper<CarPassGather>().eq("park_id", carParkItem.getParkId())); long count = carPassGatherService.count(new QueryWrapper<CarPassGather>().eq("park_id", carParkItem.getParkId()));
// if (StrUtil.equals(carParkItem.getWay(), "0") //入场 if (StrUtil.equals(carParkItem.getWay(), "0") //入场
// && carParkItem.getAutoLock() == 1 //开启了锁杆 && carParkItem.getAutoLock() == 1 //开启了锁杆
// && count >= carParkItem.getCarsNum()) { //车位满了 && count >= carParkItem.getCarsNum()) { //车位满了
// log.info("车位满了,不记录入场数据"); log.info("车位满了,不记录入场数据");
// return; return;
// } }
//
// String data = new String(message, StandardCharsets.UTF_8); String data = new String(message, StandardCharsets.UTF_8);
// JSONObject jsonObject = JSONObject.parseObject(data); JSONObject jsonObject = JSONObject.parseObject(data);
// JSONObject payload = jsonObject.getJSONObject("payload"); JSONObject payload = jsonObject.getJSONObject("payload");
// String id = jsonObject.getString("id"); String id = jsonObject.getString("id");
// JSONObject alarmInfoPlate = payload.getJSONObject("AlarmInfoPlate"); JSONObject alarmInfoPlate = payload.getJSONObject("AlarmInfoPlate");
// JSONObject result = alarmInfoPlate.getJSONObject("result"); JSONObject result = alarmInfoPlate.getJSONObject("result");
// JSONObject plateResult = result.getJSONObject("PlateResult"); JSONObject plateResult = result.getJSONObject("PlateResult");
// JSONObject carBrand = plateResult.getJSONObject("car_brand"); JSONObject carBrand = plateResult.getJSONObject("car_brand");
// String license = plateResult.getString("license"); String license = plateResult.getString("license");
// String colorType = plateResult.getString("colorType"); String colorType = plateResult.getString("colorType");
// String str = ""; String str = "";
// if ("5".equals(colorType)) { if ("5".equals(colorType)) {
// str = AESUtil.decrptyAES_ECB(license, key).substring(0, 20); str = AESUtil.decrptyAES_ECB(license, key).substring(0, 20);
// } else { } else {
// str = AESUtil.decrptyAES_ECB(license, key).substring(0, 18); str = AESUtil.decrptyAES_ECB(license, key).substring(0, 18);
// } }
//
// license = AESUtil.UTF8decode(str); license = AESUtil.UTF8decode(str);
// log.info("解密前车牌:{},解谜后的车牌:{}", plateResult.getString("license"), license); log.info("解密前车牌:{},解谜后的车牌:{}", plateResult.getString("license"), license);
//
// //保存通行记录 //保存通行记录
// CarPassRecord record = new CarPassRecord(); CarPassRecord record = new CarPassRecord();
// record.setCarColor(plateResult.getString("carColor")); record.setCarColor(plateResult.getString("carColor"));
// record.setColorType(colorType); record.setColorType(colorType);
// record.setDirection(plateResult.getString("direction")); record.setDirection(plateResult.getString("direction"));
// record.setLicense(license); record.setLicense(license);
// record.setDataType("0"); record.setDataType("0");
// Map<String, Object> paramMap = new HashMap<>(); Map<String, Object> paramMap = new HashMap<>();
// paramMap.put("url", plateResult.getString("full_image_content")); paramMap.put("url", plateResult.getString("full_image_content"));
// String repose = HttpUtil.createPost(jinjiangUrl + "file/uploadMinioCarBase64") String repose = HttpUtil.createPost(jinjiangUrl + "file/uploadMinioCarBase64")
// .body(JSON.toJSONString(paramMap)) .body(JSON.toJSONString(paramMap))
// .execute() .execute()
// .body(); .body();
// log.info("imgRsp:{}", repose); log.info("imgRsp:{}", repose);
// JSONObject imgRsp = JSONObject.parseObject(repose); JSONObject imgRsp = JSONObject.parseObject(repose);
// if (null != imgRsp && imgRsp.getInteger("code") == 200) { if (null != imgRsp && imgRsp.getInteger("code") == 200) {
// record.setUrl(imgRsp.getJSONObject("data").getString("url")); record.setUrl(imgRsp.getJSONObject("data").getString("url"));
// } }
// if (plateResult.containsKey("start_time")) { if (plateResult.containsKey("start_time")) {
// log.info("拿到了时间:{}", plateResult.getLong("start_time")); log.info("拿到了时间:{}", plateResult.getLong("start_time"));
// record.setPassTime(DateUtil.date(plateResult.getLong("start_time"))); record.setPassTime(DateUtil.date(plateResult.getLong("start_time")));
// } else { } else {
// log.info("没有拿到时间,默认当前时间"); log.info("没有拿到时间,默认当前时间");
// record.setPassTime(DateUtil.date(new Date())); record.setPassTime(DateUtil.date(new Date()));
// } }
// record.setSn(sn); record.setSn(sn);
// record.setUniqueNo(id); record.setUniqueNo(id);
// record.setParkId(carParkItem.getParkId()); record.setParkId(carParkItem.getParkId());
// record.setTriggerType(plateResult.getString("triggerType")); record.setTriggerType(plateResult.getString("triggerType"));
// record.setType(carBrand.getString("type")); record.setType(carBrand.getString("type"));
// carPassRecordService.save(record); carPassRecordService.save(record);
//
// //保存/删除在场数据 //保存/删除在场数据
// boolean isExist = carPassGatherService.exists(new QueryWrapper<CarPassGather>().eq("license", license).eq("park_id", carParkItem.getParkId())); boolean isExist = carPassGatherService.exists(new QueryWrapper<CarPassGather>().eq("license", license).eq("park_id", carParkItem.getParkId()));
// //入场新增数据 //入场新增数据
// if (StrUtil.equals(carParkItem.getWay(), "0") && !isExist) { if (StrUtil.equals(carParkItem.getWay(), "0") && !isExist) {
// CarPassGather carPassGather = new CarPassGather(); CarPassGather carPassGather = new CarPassGather();
// carPassGather.setLicense(license); carPassGather.setLicense(license);
// carPassGather.setParkId(carParkItem.getParkId()); carPassGather.setParkId(carParkItem.getParkId());
// carPassGather.setArea(carParkItem.getArea()); carPassGather.setArea(carParkItem.getArea());
// carPassGather.setJoinTime(record.getPassTime()); carPassGather.setJoinTime(record.getPassTime());
// carPassGather.setSn(sn); carPassGather.setSn(sn);
// carPassGatherService.save(carPassGather); carPassGatherService.save(carPassGather);
//
// //最后一辆车进场 //最后一辆车进场
// if (carParkItem.getAutoLock() == 1 && (count + 1) >= carParkItem.getCarsNum()) { if (carParkItem.getAutoLock() == 1 && (count + 1) >= carParkItem.getCarsNum()) {
// List<String> snList = carParkItemService.selectSnByParkId(carParkItem.getParkId()); List<String> snList = carParkItemService.selectSnByParkId(carParkItem.getParkId());
// for (String s : snList) { for (String s : snList) {
// service.locked(s, 2, 0); service.locked(s, 2, 0);
// } }
// } }
// } else if (StrUtil.equals(carParkItem.getWay(), "1") && isExist) {//出场删除数据 } else if (StrUtil.equals(carParkItem.getWay(), "1") && isExist) {//出场删除数据
// carPassGatherService.deleteByLicense(license); carPassGatherService.deleteByLicense(license);
// //出去一辆车,有空位 //出去一辆车,有空位
// if (carParkItem.getAutoLock() == 1 && count == carParkItem.getCarsNum()) { if (carParkItem.getAutoLock() == 1 && count == carParkItem.getCarsNum()) {
// List<String> snList = carParkItemService.selectSnByParkId(carParkItem.getParkId()); List<String> snList = carParkItemService.selectSnByParkId(carParkItem.getParkId());
// for (String s : snList) { for (String s : snList) {
// service.locked(s, 0, 0); service.locked(s, 0, 0);
// } }
// } }
// } }
} }
/** /**
@@ -216,7 +223,7 @@ public class CarMessageListener {
* @param topic * @param topic
* @param message * @param message
*/ */
/*@MqttServerFunction("device/${sn}/message/up/ivs_result_offline") @MqttServerFunction("device/${sn}/message/up/ivs_result_offline")
public void ivs_result_offline(String topic, Map<String, String> topicVars, byte[] message) throws Exception { public void ivs_result_offline(String topic, Map<String, String> topicVars, byte[] message) throws Exception {
String sn = topicVars.get("sn"); String sn = topicVars.get("sn");
log.info("接收到车辆离线识别消息 -> Topic: {}", topic); log.info("接收到车辆离线识别消息 -> Topic: {}", topic);
@@ -271,7 +278,7 @@ public class CarMessageListener {
record.setTriggerType(plateResult.getString("triggerType")); record.setTriggerType(plateResult.getString("triggerType"));
record.setType(carBrand.getString("type")); record.setType(carBrand.getString("type"));
carPassRecordService.save(record); carPassRecordService.save(record);
}*/ }
/** /**
* IO输出事件监听 * IO输出事件监听

View File

@@ -16,10 +16,13 @@
package org.dromara.mica.mqtt.server.listener; package org.dromara.mica.mqtt.server.listener;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.mica.mqtt.core.server.event.IMqttConnectStatusListener; import org.dromara.mica.mqtt.core.server.event.IMqttConnectStatusListener;
import org.dromara.mica.mqtt.server.constant.CacheConstants; import org.dromara.mica.mqtt.server.constant.CacheConstants;
import org.dromara.mica.mqtt.server.entity.Equipment;
import org.dromara.mica.mqtt.server.enums.FlagEnums; import org.dromara.mica.mqtt.server.enums.FlagEnums;
import org.dromara.mica.mqtt.server.mapper.EquipmentMapper;
import org.dromara.mica.mqtt.server.redis.RedisService; import org.dromara.mica.mqtt.server.redis.RedisService;
import org.dromara.mica.mqtt.server.service.IEquipmentService; import org.dromara.mica.mqtt.server.service.IEquipmentService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -27,6 +30,8 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.tio.core.ChannelContext; import org.tio.core.ChannelContext;
import java.util.concurrent.TimeUnit;
/** /**
* mqtt 连接状态 * mqtt 连接状态
* *

View File

@@ -2,9 +2,10 @@ package org.dromara.mica.mqtt.server.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.dromara.mica.mqtt.server.entity.IoLockEquipment; import org.dromara.mica.mqtt.server.entity.CarInfo;
import org.dromara.mica.mqtt.server.entity.Equipment;
@Mapper @Mapper
public interface EquipmentMapper extends BaseMapper<IoLockEquipment> { public interface EquipmentMapper extends BaseMapper<Equipment> {
} }

View File

@@ -1,15 +1,15 @@
package org.dromara.mica.mqtt.server.service; package org.dromara.mica.mqtt.server.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.mica.mqtt.server.entity.IoLockEquipment; import org.dromara.mica.mqtt.server.entity.Equipment;
import java.util.List; import java.util.List;
public interface IEquipmentService extends IService<IoLockEquipment> { public interface IEquipmentService extends IService<Equipment> {
IoLockEquipment selectEquipmentBySn(String sn); Equipment selectEquipmentBySn(String sn);
List<IoLockEquipment> selectAllSnFlag(); List<Equipment> selectAllSnFlag();
void updateFlag(String sn, String flag); void updateFlag(String sn, String flag);
} }

View File

@@ -2,7 +2,7 @@ package org.dromara.mica.mqtt.server.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.dromara.mica.mqtt.server.entity.IoLockEquipment; import org.dromara.mica.mqtt.server.entity.Equipment;
import org.dromara.mica.mqtt.server.mapper.EquipmentMapper; import org.dromara.mica.mqtt.server.mapper.EquipmentMapper;
import org.dromara.mica.mqtt.server.service.IEquipmentService; import org.dromara.mica.mqtt.server.service.IEquipmentService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -11,25 +11,25 @@ import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
@Service @Service
public class EquipmentServiceImpl extends ServiceImpl<EquipmentMapper, IoLockEquipment> implements IEquipmentService { public class EquipmentServiceImpl extends ServiceImpl<EquipmentMapper, Equipment> implements IEquipmentService {
@Autowired @Autowired
EquipmentMapper equipmentMapper; EquipmentMapper equipmentMapper;
@Override @Override
public IoLockEquipment selectEquipmentBySn(String sn) { public Equipment selectEquipmentBySn(String sn) {
return equipmentMapper.selectOne(new QueryWrapper<IoLockEquipment>().eq("sequence", sn).last("limit 1")); return equipmentMapper.selectOne(new QueryWrapper<Equipment>().eq("sequence", sn).eq("product_id", 4L).last("limit 1"));
} }
@Override @Override
public List<IoLockEquipment> selectAllSnFlag() { public List<Equipment> selectAllSnFlag() {
return equipmentMapper.selectList(new QueryWrapper<IoLockEquipment>().select("sequence", "flag")); return equipmentMapper.selectList(new QueryWrapper<Equipment>().eq("product_id", 4L).select("sequence", "flag"));
} }
@Override @Override
public void updateFlag(String sn, String flag) { public void updateFlag(String sn, String flag) {
IoLockEquipment equipment = new IoLockEquipment(); Equipment equipment = new Equipment();
equipment.setFlag(flag); equipment.setFlag(flag);
equipmentMapper.update(equipment, new QueryWrapper<IoLockEquipment>().eq("sequence", sn)); equipmentMapper.update(equipment, new QueryWrapper<Equipment>().eq("sequence", sn).eq("product_id", 4L));
} }
} }

View File

@@ -1,9 +1,11 @@
package org.dromara.mica.mqtt.server.task; package org.dromara.mica.mqtt.server.task;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.mica.mqtt.server.constant.CacheConstants; import org.dromara.mica.mqtt.server.constant.CacheConstants;
import org.dromara.mica.mqtt.server.entity.IoLockEquipment; import org.dromara.mica.mqtt.server.entity.Equipment;
import org.dromara.mica.mqtt.server.enums.FlagEnums; import org.dromara.mica.mqtt.server.enums.FlagEnums;
import org.dromara.mica.mqtt.server.mapper.EquipmentMapper;
import org.dromara.mica.mqtt.server.redis.RedisService; import org.dromara.mica.mqtt.server.redis.RedisService;
import org.dromara.mica.mqtt.server.service.IEquipmentService; import org.dromara.mica.mqtt.server.service.IEquipmentService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -28,28 +30,32 @@ public class HeartbeatOnLineTask {
@Scheduled(fixedRate = 15 * 1000) @Scheduled(fixedRate = 15 * 1000)
public void run() { public void run() {
log.info("===========心跳检测============="); // 添加异常捕获,防止单个任务异常导致定时任务线程阻塞
//查询车辆摄像头的编码和在线状态 try {
List<IoLockEquipment> equipment = equipmentService.selectAllSnFlag(); log.info("===========心跳检测=============");
//查询车辆摄像头的编码和在线状态
List<Equipment> equipment = equipmentService.selectAllSnFlag();
for (IoLockEquipment equip : equipment) { for (Equipment equip : equipment) {
//缓存中有该设备心跳key //缓存中有该设备心跳key
if (redisService.hasKey(CacheConstants.EQUIPMENT_HEARTBEAT + equip.getSequence())) { if (redisService.hasKey(CacheConstants.EQUIPMENT_HEARTBEAT + equip.getSequence())) {
String flag = redisService.getCacheObject(CacheConstants.EQUIPMENT_HEARTBEAT + equip.getSequence()); String flag = redisService.getCacheObject(CacheConstants.EQUIPMENT_HEARTBEAT + equip.getSequence());
//有心跳,但是和数据库设备在线状态不一致 //有心跳,但是和数据库设备在线状态不一致
if (!StrUtil.equals(flag, equip.getFlag())) { if (!StrUtil.equals(flag, equip.getFlag())) {
log.info("设备:{}flag:{}", equip.getSequence(), flag); log.info("设备:{}flag:{}", equip.getSequence(), flag);
equipmentService.updateFlag(equip.getSequence(), flag); equipmentService.updateFlag(equip.getSequence(), flag);
} }
} else { } else {
//没有心跳上传,且设备在线,将设备置为离线 //没有心跳上传,且设备在线,将设备置为离线
if (StrUtil.equals(FlagEnums.ONLINE.getCode(), equip.getFlag())) { if (StrUtil.equals(FlagEnums.ONLINE.getCode(), equip.getFlag())) {
log.info("设备:{},无心跳离线", equip.getSequence()); log.info("设备:{},无心跳离线", equip.getSequence());
equipmentService.updateFlag(equip.getSequence(), FlagEnums.OFFLINE.getCode()); equipmentService.updateFlag(equip.getSequence(), FlagEnums.OFFLINE.getCode());
}
} }
} }
} catch (Exception e) {
// 捕获所有异常并记录日志,确保定时任务能继续执行
log.error("HeartbeatOnLineTask 定时任务执行异常", e);
} }
} }
} }

View File

@@ -48,7 +48,7 @@ public class PlatePublishTask {
/** /**
* 定时查询数据库需要下发的车辆进行下发 * 定时查询数据库需要下发的车辆进行下发
*/ */
// @Scheduled(fixedDelay = 8 * 1000) @Scheduled(fixedDelay = 8 * 1000)
public void run() { public void run() {
// 添加异常捕获,防止单个任务异常导致定时任务线程阻塞 // 添加异常捕获,防止单个任务异常导致定时任务线程阻塞
try { try {

View File

@@ -1,10 +1,26 @@
spring: spring:
datasource: datasource:
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
#xa
# url: jdbc:mysql://127.0.0.1:3306/xa_cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&connectTimeout=5000&socketTimeout=30000
# username: root
# password: Xahg2024.
#jl
# url: jdbc:mysql://127.0.0.1:3306/jl_cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&connectTimeout=5000&socketTimeout=30000
# username: root
# password: JL202509jj
#td #td
url: jdbc:mysql://192.168.251.16:3306/td_cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&connectTimeout=5000&socketTimeout=30000 # url: jdbc:mysql://127.0.0.1:3306/td_cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&connectTimeout=5000&socketTimeout=30000
# username: root
# password: td@JJ2024
#zr
# url: jdbc:mysql://192.168.155.42:3306/zr_cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&connectTimeout=5000&socketTimeout=30000
# username: root
# password: zr202407.J
#xj
url: jdbc:mysql://127.0.0.1:3306/xj_cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&connectTimeout=5000&socketTimeout=30000
username: root username: root
password: td@JJ2024 password: XjJN2024!
# Druid 连接池配置 # Druid 连接池配置
druid: druid:
max-active: 20 max-active: 20
@@ -19,10 +35,13 @@ spring:
min-evictable-idle-time-millis: 300000 min-evictable-idle-time-millis: 300000
data: data:
redis: redis:
host: 192.168.251.16 #zr
# host: 192.168.155.42
# xa、jl、td、xj
host: 127.0.0.1
port: 6379 port: 6379
password: password:
database: 2 database: 1
# Redis 超时配置,防止连接阻塞 # Redis 超时配置,防止连接阻塞
timeout: 5000ms timeout: 5000ms
lettuce: lettuce:

View File

@@ -6,8 +6,8 @@ spring:
name: mica-mqtt-server name: mica-mqtt-server
# 环境 dev|test|prod # 环境 dev|test|prod
profiles: profiles:
active: dev # active: dev
# active: prod active: prod
messages: messages:
encoding: UTF-8 encoding: UTF-8
basename: i18n/messages basename: i18n/messages