diff --git a/muyu-common/muyu-common-system/pom.xml b/muyu-common/muyu-common-system/pom.xml
index 62fdc74..ca8f7d8 100644
--- a/muyu-common/muyu-common-system/pom.xml
+++ b/muyu-common/muyu-common-system/pom.xml
@@ -23,5 +23,11 @@
com.muyu
muyu-common-core
+
+ com.muyu
+ muyu-networking-common
+ 3.6.3
+ compile
+
diff --git a/muyu-modules/muyu-networking/muyu-networking-common/src/main/java/com/muyu/domain/AddService.java b/muyu-modules/muyu-networking/muyu-networking-common/src/main/java/com/muyu/domain/AddService.java
index 74a5e42..fd95c9e 100644
--- a/muyu-modules/muyu-networking/muyu-networking-common/src/main/java/com/muyu/domain/AddService.java
+++ b/muyu-modules/muyu-networking/muyu-networking-common/src/main/java/com/muyu/domain/AddService.java
@@ -25,6 +25,70 @@ public class AddService extends BaseEntity {
*增值类型
* */
private Integer addValue;
+ /**
+ *增值服务名称
+ * */
+ private String addName;
+ /**
+ *增值服务价格
+ * */
+ private Double addPrice;
+ /**
+ *增值服务状态
+ * */
+ private Integer addStatus;
+ /**
+ *增值服务描述
+ * */
+ private String addDesc;
+ /**
+ *增值服务图片
+ * */
+ private String addImg;
+ /**
+ *增值服务类型
+ * */
+ private Integer addType;
+ /**
+ *增值服务类型
+ * */
+ private Integer addTypeId;
+ /**
+ *增值服务类型
+ * */
+ private String addTypeName;
+ /**
+ *增值服务类型
+ * */
+ private String addTypeDesc;
+ /**
+ *增值服务类型
+ * */
+ private String addTypeImg;
+ /**
+ *增值服务类型
+ * */
+ private Integer addTypeStatus;
+ /**
+ *增值服务类型
+ * */
+ private Integer addTypeSort;
+ /**
+ *增值服务类型
+ * */
+ private Integer addTypeSort1;
+ /**
+ *增值服务类型
+ * */
+ private Integer addTypeSort2;
+ /**
+ *增值服务类型
+ * */
+ private Integer addTypeSort3;
+ /**
+ *增值服务类型
+ * */
+ private Integer addTypeSort4;
diff --git a/muyu-modules/muyu-networking/muyu-networking-service/src/main/java/com/muyu/networking/service/EntInfoService.java b/muyu-modules/muyu-networking/muyu-networking-service/src/main/java/com/muyu/networking/service/EntInfoService.java
index b26a453..1eaf7ae 100644
--- a/muyu-modules/muyu-networking/muyu-networking-service/src/main/java/com/muyu/networking/service/EntInfoService.java
+++ b/muyu-modules/muyu-networking/muyu-networking-service/src/main/java/com/muyu/networking/service/EntInfoService.java
@@ -1,8 +1,11 @@
package com.muyu.networking.service;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.muyu.domain.Enterprise;
import com.muyu.domain.datasources.EntInfo;
+import java.util.List;
+
/**
* @ClassDescription:
* @JdkVersion: 17
@@ -10,4 +13,8 @@ import com.muyu.domain.datasources.EntInfo;
* @Created: 2024/6/10 20:55
*/
public interface EntInfoService extends IService {
+
+
+ public List selectEnterpriseList(EntInfo entInfo);
+
}
diff --git a/muyu-modules/muyu-networking/muyu-networking-service/src/main/java/com/muyu/networking/service/impl/EntInfoServiceImpl.java b/muyu-modules/muyu-networking/muyu-networking-service/src/main/java/com/muyu/networking/service/impl/EntInfoServiceImpl.java
index 1c8a2ba..ce498ee 100644
--- a/muyu-modules/muyu-networking/muyu-networking-service/src/main/java/com/muyu/networking/service/impl/EntInfoServiceImpl.java
+++ b/muyu-modules/muyu-networking/muyu-networking-service/src/main/java/com/muyu/networking/service/impl/EntInfoServiceImpl.java
@@ -1,13 +1,14 @@
package com.muyu.networking.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.muyu.domain.Enterprise;
import com.muyu.domain.datasources.EntInfo;
import com.muyu.networking.mapper.EntInfoMapper;
-import com.muyu.networking.mapper.EnterpriseMapper;
import com.muyu.networking.service.EntInfoService;
-import com.muyu.networking.service.EnterpriseService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.annotation.AccessType;
+
+import java.util.List;
+
/**
* @ClassDescription:
@@ -18,4 +19,13 @@ import com.muyu.networking.service.EnterpriseService;
public class EntInfoServiceImpl extends ServiceImpl implements EntInfoService {
+ @Autowired
+ private EntInfoMapper entInfoMapper;
+
+
+ @Override
+ public List selectEnterpriseList(EntInfo entInfo) {
+ LambdaQueryWrapper entInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
+ return entInfoMapper.selectList(entInfoLambdaQueryWrapper);
+ }
}
diff --git a/muyu-modules/muyu-networking/pom.xml b/muyu-modules/muyu-networking/pom.xml
index ef15bb2..52123c8 100644
--- a/muyu-modules/muyu-networking/pom.xml
+++ b/muyu-modules/muyu-networking/pom.xml
@@ -14,6 +14,7 @@
muyu-networking-common
muyu-networking-service
+
@@ -23,6 +24,14 @@
+
+
+ cn.hutool
+ hutool-all
+ 5.8.27
+
+
+
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
diff --git a/muyu-modules/muyu-vehicle/muyu-vehicle-common/pom.xml b/muyu-modules/muyu-vehicle/muyu-vehicle-common/pom.xml
new file mode 100644
index 0000000..a7b7538
--- /dev/null
+++ b/muyu-modules/muyu-vehicle/muyu-vehicle-common/pom.xml
@@ -0,0 +1,21 @@
+
+
+ 4.0.0
+
+ com.muyu
+ muyu
+ 3.6.3
+ ../../../pom.xml
+
+
+ muyu-vehicle-common
+
+
+ 17
+ 17
+ UTF-8
+
+
+
diff --git a/muyu-modules/muyu-vehicle/muyu-vehicle-service/pom.xml b/muyu-modules/muyu-vehicle/muyu-vehicle-service/pom.xml
index 68b295d..687ab42 100644
--- a/muyu-modules/muyu-vehicle/muyu-vehicle-service/pom.xml
+++ b/muyu-modules/muyu-vehicle/muyu-vehicle-service/pom.xml
@@ -26,6 +26,12 @@
3.6.3
+
+
+ org.springframework.boot
+ spring-boot-starter-amqp
+
+
cn.hutool
hutool-all
diff --git a/muyu-modules/muyu-vehicle/muyu-vehicle-service/src/main/java/com/muyu/vehicle/config/RabbitAdminConfig.java b/muyu-modules/muyu-vehicle/muyu-vehicle-service/src/main/java/com/muyu/vehicle/config/RabbitAdminConfig.java
new file mode 100644
index 0000000..f3ac822
--- /dev/null
+++ b/muyu-modules/muyu-vehicle/muyu-vehicle-service/src/main/java/com/muyu/vehicle/config/RabbitAdminConfig.java
@@ -0,0 +1,60 @@
+package com.muyu.vehicle.config;
+
+
+import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
+import org.springframework.amqp.rabbit.connection.ConnectionFactory;
+import org.springframework.amqp.rabbit.core.RabbitAdmin;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.beans.factory.annotation.Value;
+/**
+ * @ClassDescription:
+ * @JdkVersion: 17
+ * @Author: zhangxu
+ * @Created: 2024/6/10 20:29
+ */
+@Configuration
+public class RabbitAdminConfig {
+
+
+ @Value("${spring.rabbitmq.host}")
+ private String host;
+ @Value("${spring.rabbitmq.username}")
+ private String username;
+ @Value("${spring.rabbitmq.password}")
+ private String password;
+ @Value("${spring.rabbitmq.virtualhost}")
+ private String virtualhost;
+
+ /**
+ * 构建 RabbitMQ的连接工厂
+ * @return
+ */
+ @Bean
+ public ConnectionFactory connectionFactory() {
+ CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
+ connectionFactory.setAddresses(host);
+ connectionFactory.setUsername(username);
+ connectionFactory.setPassword(password);
+ connectionFactory.setVirtualHost(virtualhost);
+ // 配置发送确认回调时,次配置必须配置,否则即使在RabbitTemplate配置了ConfirmCallback也不会生效
+ connectionFactory.setPublisherConfirmType(CachingConnectionFactory.ConfirmType.CORRELATED);
+ connectionFactory.setPublisherReturns(true);
+ return connectionFactory;
+ }
+
+ /**
+ * 自己初始化 RabbitAdmin
+ * @param connectionFactory
+ * @return
+ */
+ @Bean
+ public RabbitAdmin rabbitAdmin(ConnectionFactory connectionFactory) {
+ RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory);
+ rabbitAdmin.setAutoStartup(true);
+ return rabbitAdmin;
+ }
+
+
+
+}
diff --git a/muyu-modules/muyu-vehicle/muyu-vehicle-service/src/main/java/com/muyu/vehicle/config/RabbitmqConfig.java b/muyu-modules/muyu-vehicle/muyu-vehicle-service/src/main/java/com/muyu/vehicle/config/RabbitmqConfig.java
new file mode 100644
index 0000000..d213523
--- /dev/null
+++ b/muyu-modules/muyu-vehicle/muyu-vehicle-service/src/main/java/com/muyu/vehicle/config/RabbitmqConfig.java
@@ -0,0 +1,21 @@
+package com.muyu.vehicle.config;
+
+import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @ClassDescription:
+ * @JdkVersion: 17
+ * @Author: zhangxu
+ * @Created: 2024/6/10 20:27
+ */
+@Configuration
+public class RabbitmqConfig {
+ // 消息转换配置
+ @Bean
+ public Jackson2JsonMessageConverter jsonMessageConverter() {
+ return new Jackson2JsonMessageConverter();
+ }
+
+}
diff --git a/muyu-modules/muyu-vehicle/muyu-vehicle-service/src/main/java/com/muyu/vehicle/config/ReturnCallbackConfig.java b/muyu-modules/muyu-vehicle/muyu-vehicle-service/src/main/java/com/muyu/vehicle/config/ReturnCallbackConfig.java
new file mode 100644
index 0000000..30f5f9f
--- /dev/null
+++ b/muyu-modules/muyu-vehicle/muyu-vehicle-service/src/main/java/com/muyu/vehicle/config/ReturnCallbackConfig.java
@@ -0,0 +1,36 @@
+package com.muyu.vehicle.config;
+
+import org.springframework.amqp.core.ReturnedMessage;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import javax.annotation.PostConstruct;
+
+/**
+ * @ClassDescription:
+ * @JdkVersion: 17
+ * @Author: zhangxu
+ * @Created: 2024/6/10 20:27
+ */
+public class ReturnCallbackConfig implements RabbitTemplate.ReturnsCallback{
+
+ @Autowired
+ private RabbitTemplate rabbitTemplate;
+
+ @PostConstruct // @PostContruct是spring框架的注解,在⽅法上加该注解会在项⽬启动的时候执⾏该⽅法,也可以理解为在spring容器初始化的时候执
+ public void init() {
+ rabbitTemplate.setReturnsCallback(this);
+ }
+
+ /**
+ * 消息发送到 队列失败 执行的 方法
+ * @param returnedMessage the returned message and metadata.
+ */
+ @Override
+ public void returnedMessage(ReturnedMessage returnedMessage) {
+ System.out.println("消息" + returnedMessage.getMessage().toString() + "被交换机" + returnedMessage.getExchange() + "回退!"
+ + "退回原因为:" + returnedMessage.getReplyText());
+ // 回退了所有的信息,可做补偿机制 记录到 数据库
+ }
+
+}
diff --git a/muyu-modules/muyu-vehicle/muyu-vehicle-service/src/main/java/com/muyu/vehicle/myDatasource/ManyDataSource.java b/muyu-modules/muyu-vehicle/muyu-vehicle-service/src/main/java/com/muyu/vehicle/myDatasource/ManyDataSource.java
new file mode 100644
index 0000000..cfbecc3
--- /dev/null
+++ b/muyu-modules/muyu-vehicle/muyu-vehicle-service/src/main/java/com/muyu/vehicle/myDatasource/ManyDataSource.java
@@ -0,0 +1,121 @@
+package com.muyu.vehicle.myDatasource;
+
+
+import com.alibaba.druid.pool.DruidDataSource;
+import com.alibaba.fastjson.JSON;
+
+import com.muyu.common.core.domain.Result;
+import com.muyu.common.core.utils.SpringUtils;
+import com.muyu.common.system.remote.RemoteUserService;
+import com.muyu.domain.datasources.EntInfo;
+import com.muyu.vehicle.myDatasource.domain.DataSourceInfo;
+import com.muyu.vehicle.myDatasource.domain.EnterpriseInfo;
+import com.muyu.vehicle.myDatasource.factory.DruidDataSourceFactory;
+import com.muyu.vehicle.myDatasource.rule.DynamicDataSource;
+import com.rabbitmq.client.Channel;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.rabbit.annotation.Queue;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Primary;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassDescription:
+ * @JdkVersion: 17
+ * @Author: zhangxu
+ * @Created: 2024/6/10 20:04
+ */
+@Log4j2
+@Component
+public class ManyDataSource {
+
+
+ @Autowired
+ private RemoteUserService remoteEntInfoService;
+
+
+ @Autowired
+ private RedisTemplate redisTemplate;
+
+ @RabbitListener(queuesToDeclare = {@Queue(name = "RoutingKey")})
+ public void smsConfig(String msg, Message message, Channel channel) {
+ //获取消息的ID
+ String messageId = message.getMessageProperties().getMessageId();
+ try {
+ //添加消息id到redis set集合中 添加成功返回1 表示未消费 添加失败返回0 表示已消费
+ Long count = redisTemplate.opsForSet().add("messageId", messageId);
+ //添加成功 正常消费信息
+ if (count == 1) {
+ log.info("开始消费");
+ DruidDataSourceFactory druidDataSourceFactory = SpringUtils.getBean(DruidDataSourceFactory.class);
+ DynamicDataSource dynamicDataSource = SpringUtils.getBean(DynamicDataSource.class);
+ EntInfo entinfo = JSON.parseObject(msg, EntInfo.class);
+ DataSourceInfo dataSourceInfo = DataSourceInfo.hostAndPortBuild(entinfo.getEntCode(), entinfo.getIp(), Math.toIntExact(entinfo.getPort()));
+ DruidDataSource druidDataSource = druidDataSourceFactory.create(dataSourceInfo);
+ dynamicDataSource.put(dataSourceInfo.getKey(), druidDataSource);
+ //确认消费
+ channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
+ log.info("消费成功");
+ }
+ } catch (Exception e) {
+ //删除队列ID
+ log.info("消费重复");
+ try {
+ //回退消息
+ channel.basicReject(message.getMessageProperties().getDeliveryTag(), true);
+ log.info("消费失败");
+ } catch (IOException ex) {
+ //回退失败
+ log.info("消费异常");
+ }
+ }
+ }
+
+ private List dataSourceInfoList() {
+ Result> entInfoResult = remoteEntInfoService.list();
+ List entInfoList = entInfoResult.getData();
+ List list = new ArrayList<>();
+ entInfoList.forEach(entInfo -> {
+ list.add(
+ EnterpriseInfo.builder()
+ .entCode(entInfo.getEntCode())
+ .ip(entInfo.getIp())
+ .port(String.valueOf(entInfo.getPort()))
+ .build()
+ );
+ });
+ return list;
+ }
+
+ @Bean
+ @Primary
+ public DynamicDataSource dynamicDataSource(DruidDataSourceFactory druidDataSourceFactory) {
+
+ Map