diff --git a/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/ManyDataSource.java b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/ManyDataSource.java index d90fb4a..286facf 100644 --- a/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/ManyDataSource.java +++ b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/ManyDataSource.java @@ -71,9 +71,9 @@ public class ManyDataSource { //设置动态数据源 DynamicDataSource dynamicDataSource = new DynamicDataSource(); -// dynamicDataSource.setDefaultTargetDataSource(masterDataSource()); + dynamicDataSource.setTargetDataSources(dataSourceMap); - //将数据源信息备份在defineTargetDataSources中 + dynamicDataSource.setDefineTargetDataSources(dataSourceMap); return dynamicDataSource; } diff --git a/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/constents/DatasourceContent.java b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/constents/DatasourceContent.java index b1d6dbf..b7f985c 100644 --- a/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/constents/DatasourceContent.java +++ b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/constents/DatasourceContent.java @@ -7,7 +7,8 @@ package com.muyu.clw.common.many.datasource.constents; */ public class DatasourceContent { - public final static String DATASOURCE_URL = "jdbc:mysql://{}:{}/car?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&failOverReadOnly=false"; + public final static String DATASOURCE_URL = "jdbc:mysql://{}:{}/car?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&autoReconnect=true&failOverReadOnly=false"; + public final static String USER_NAME = "root"; diff --git a/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/factory/DruidDataSourceFactory.java b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/factory/DruidDataSourceFactory.java index c88a8ad..f3ec412 100644 --- a/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/factory/DruidDataSourceFactory.java +++ b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/factory/DruidDataSourceFactory.java @@ -1,10 +1,12 @@ package com.muyu.clw.common.many.datasource.factory; import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.pool.DruidPooledConnection; import com.muyu.clw.common.many.datasource.domain.model.DataSourceInfo; import lombok.extern.log4j.Log4j2; import org.springframework.stereotype.Component; +import java.sql.Connection; import java.sql.SQLException; /** @@ -30,7 +32,16 @@ public class DruidDataSourceFactory { druidDataSource.setBreakAfterAcquireFailure(true); druidDataSource.setConnectionErrorRetryAttempts(0); druidDataSource.setMaxActive(20); // 设置最大活动连接数为 20 - log.info( "{}->数据源连接成功", dataSourceInfo.getKey()); + +// try { +// Thread.sleep(4000); +// druidDataSource.getConnection(); +// log.info("{}->数据库连接成功", dataSourceInfo.getKey()); +// +// } catch (Exception e) { +// log.error("数据库连接失败: {}", e.getMessage()); +// throw new RuntimeException("数据库连接失败", e); +// } return druidDataSource; } } diff --git a/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/role/DynamicDataSource.java b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/role/DynamicDataSource.java index 08b04f7..fc61c81 100644 --- a/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/role/DynamicDataSource.java +++ b/muyu-common/muyu-common-saas/src/main/java/com/muyu/clw/common/many/datasource/role/DynamicDataSource.java @@ -42,7 +42,8 @@ public class DynamicDataSource extends AbstractRoutingDataSource { */ public void put(String key, DruidDataSource value) { defineTargetDataSources.put(key, value); - log.info("都有哪些数据:{}",defineTargetDataSources); + this.afterPropertiesSet(); + log.info("defineTargetDataSources:{}",defineTargetDataSources); } /** * 决定当前线程使用哪个数据源 @@ -51,4 +52,8 @@ public class DynamicDataSource extends AbstractRoutingDataSource { protected Object determineCurrentLookupKey() { return DynamicDataSourceHolder.getDynamicDataSourceKey(); } + + public Map list(){ + return defineTargetDataSources; + } } diff --git a/muyu-modules/muyu-modules-many/muyu-modules-many-server/src/main/java/com/muyu/authentication/controller/FenceController.java b/muyu-modules/muyu-modules-many/muyu-modules-many-server/src/main/java/com/muyu/authentication/controller/FenceController.java index 80fdcda..749eb5b 100644 --- a/muyu-modules/muyu-modules-many/muyu-modules-many-server/src/main/java/com/muyu/authentication/controller/FenceController.java +++ b/muyu-modules/muyu-modules-many/muyu-modules-many-server/src/main/java/com/muyu/authentication/controller/FenceController.java @@ -31,24 +31,22 @@ public class FenceController extends BaseController /** * 查询电子围栏列表 */ - @RequiresPermissions("many:fence:list") @GetMapping("/list") - public Result> list(Fence fence) + public Result> list(Fence fence,@RequestHeader("ent_code")String headerValue) { startPage(); - List list = fenceService.selectFenceList(fence); + List list = fenceService.selectFenceList(fence,headerValue); return getDataTable(list); } /** * 导出电子围栏列表 */ - @RequiresPermissions("many:fence:export") @Log(title = "电子围栏", businessType = BusinessType.EXPORT) @PostMapping("/export") - public void export(HttpServletResponse response, Fence fence) + public void export(HttpServletResponse response, Fence fence,@RequestHeader("ent_code")String headerValue) { - List list = fenceService.selectFenceList(fence); + List list = fenceService.selectFenceList(fence,headerValue); ExcelUtil util = new ExcelUtil(Fence.class); util.exportExcel(response, list, "电子围栏数据"); } @@ -56,43 +54,39 @@ public class FenceController extends BaseController /** * 获取电子围栏详细信息 */ - @RequiresPermissions("many:fence:query") @GetMapping(value = "/{id}") - public Result getInfo(@PathVariable("id") Long id) + public Result getInfo(@PathVariable("id") Long id,@RequestHeader("ent_code")String headerValue) { - return success(fenceService.selectFenceById(id)); + return success(fenceService.selectFenceById(id,headerValue)); } /** * 新增电子围栏 */ - @RequiresPermissions("many:fence:add") @Log(title = "电子围栏", businessType = BusinessType.INSERT) @PostMapping - public Result add(@RequestBody Fence fence) + public Result add(@RequestBody Fence fence,@RequestHeader("ent_code")String headerValue) { - return toAjax(fenceService.insertFence(fence)); + return toAjax(fenceService.insertFence(fence,headerValue)); } /** * 修改电子围栏 */ - @RequiresPermissions("many:fence:edit") @Log(title = "电子围栏", businessType = BusinessType.UPDATE) @PutMapping - public Result edit(@RequestBody Fence fence) + public Result edit(@RequestBody Fence fence,@RequestHeader("ent_code")String headerValue) { - return toAjax(fenceService.updateFence(fence)); + return toAjax(fenceService.updateFence(fence,headerValue)); } /** * 删除电子围栏 */ - @RequiresPermissions("many:fence:remove") @Log(title = "电子围栏", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") - public Result remove(@PathVariable Long[] ids) + public Result remove(@PathVariable Long[] ids,@RequestHeader("ent_code")String headerValue) { - return toAjax(fenceService.deleteFenceByIds(ids)); + return toAjax(fenceService.deleteFenceByIds(ids,headerValue)); } } diff --git a/muyu-modules/muyu-modules-many/muyu-modules-many-server/src/main/java/com/muyu/authentication/rabbitmq/MessageConsumer.java b/muyu-modules/muyu-modules-many/muyu-modules-many-server/src/main/java/com/muyu/authentication/rabbitmq/MessageConsumer.java index 46e34d2..7c04e12 100644 --- a/muyu-modules/muyu-modules-many/muyu-modules-many-server/src/main/java/com/muyu/authentication/rabbitmq/MessageConsumer.java +++ b/muyu-modules/muyu-modules-many/muyu-modules-many-server/src/main/java/com/muyu/authentication/rabbitmq/MessageConsumer.java @@ -5,31 +5,33 @@ import com.alibaba.fastjson.JSON; import com.muyu.authentication.controller.ManyEnterpriseController; import com.muyu.authentication.service.impl.ManyEnterpriseServiceImpl; +import com.muyu.clw.common.many.datasource.ManyDataSource; import com.muyu.clw.common.many.datasource.domain.model.DataSourceInfo; import com.muyu.clw.common.many.datasource.factory.DruidDataSourceFactory; import com.muyu.clw.common.many.datasource.role.DynamicDataSource; import com.muyu.common.core.utils.SpringUtils; import com.muyu.many.domain.Enterprise ; -import com.muyu.remote.RemoteManyEnterpriseService; import lombok.extern.log4j.Log4j2; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.util.HashMap; +import java.util.Map; + @Log4j2 @Component public class MessageConsumer { @Autowired - private ManyEnterpriseController manyEnterpriseController; + private DruidDataSourceFactory dataSourceFactory; + @Autowired + private DynamicDataSource druidDataSource; @RabbitListener(queues = "text1") public void receiveMessage(String message) { // 在这里处理接收到的消息,并将其写入MySQL数据库 log.info("message:{}",message); - DruidDataSourceFactory dataSourceFactory = SpringUtils.getBean(DruidDataSourceFactory.class); - DynamicDataSource druidDataSource = SpringUtils.getBean(DynamicDataSource.class); - Enterprise parse = JSON.parseObject(message, Enterprise.class); String substring = parse.getContactPhone().substring(parse.getContactPhone().length() - 4); String host="123.56.102.11"; @@ -39,10 +41,11 @@ public class MessageConsumer { DataSourceInfo dataSourceInfo = DataSourceInfo.hostAndPortBuild(key, host, post); + log.info("dataSourceInfo:{}",dataSourceInfo); + DruidDataSource dataSource = dataSourceFactory.create(dataSourceInfo); druidDataSource.put(key,dataSource); - } } diff --git a/muyu-modules/muyu-modules-many/muyu-modules-many-server/src/main/java/com/muyu/authentication/service/IFenceService.java b/muyu-modules/muyu-modules-many/muyu-modules-many-server/src/main/java/com/muyu/authentication/service/IFenceService.java index 93f0a20..c61a42d 100644 --- a/muyu-modules/muyu-modules-many/muyu-modules-many-server/src/main/java/com/muyu/authentication/service/IFenceService.java +++ b/muyu-modules/muyu-modules-many/muyu-modules-many-server/src/main/java/com/muyu/authentication/service/IFenceService.java @@ -20,7 +20,7 @@ public interface IFenceService * @param id 电子围栏主键 * @return 电子围栏 */ - public Fence selectFenceById(Long id); + public Fence selectFenceById(Long id,String headerValue); /** * 查询电子围栏列表 @@ -28,7 +28,7 @@ public interface IFenceService * @param fence 电子围栏 * @return 电子围栏集合 */ - public List selectFenceList(Fence fence); + public List selectFenceList(Fence fence,String headerValue); /** * 新增电子围栏 @@ -36,7 +36,7 @@ public interface IFenceService * @param fence 电子围栏 * @return 结果 */ - public int insertFence(Fence fence); + public int insertFence(Fence fence,String headerValue); /** * 修改电子围栏 @@ -44,7 +44,7 @@ public interface IFenceService * @param fence 电子围栏 * @return 结果 */ - public int updateFence(Fence fence); + public int updateFence(Fence fence,String headerValue); /** * 批量删除电子围栏 @@ -52,7 +52,7 @@ public interface IFenceService * @param ids 需要删除的电子围栏主键集合 * @return 结果 */ - public int deleteFenceByIds(Long[] ids); + public int deleteFenceByIds(Long[] ids,String headerValue); /** * 删除电子围栏信息 @@ -60,5 +60,5 @@ public interface IFenceService * @param id 电子围栏主键 * @return 结果 */ - public int deleteFenceById(Long id); + public int deleteFenceById(Long id,String headerValue); } diff --git a/muyu-modules/muyu-modules-many/muyu-modules-many-server/src/main/java/com/muyu/authentication/service/impl/FenceServiceImpl.java b/muyu-modules/muyu-modules-many/muyu-modules-many-server/src/main/java/com/muyu/authentication/service/impl/FenceServiceImpl.java index 19779cc..28734e6 100644 --- a/muyu-modules/muyu-modules-many/muyu-modules-many-server/src/main/java/com/muyu/authentication/service/impl/FenceServiceImpl.java +++ b/muyu-modules/muyu-modules-many/muyu-modules-many-server/src/main/java/com/muyu/authentication/service/impl/FenceServiceImpl.java @@ -2,6 +2,7 @@ package com.muyu.authentication.service.impl; import com.muyu.authentication.mapper.FenceMapper; import com.muyu.authentication.service.IFenceService; +import com.muyu.clw.common.many.datasource.holder.DynamicDataSourceHolder; import com.muyu.common.core.utils.DateUtils; import com.muyu.many.domain.Fence; import org.springframework.beans.factory.annotation.Autowired; @@ -28,9 +29,12 @@ public class FenceServiceImpl implements IFenceService * @return 电子围栏 */ @Override - public Fence selectFenceById(Long id) + public Fence selectFenceById(Long id,String headerValue) { - return fenceMapper.selectFenceById(id); + getMany(headerValue); + Fence fence = fenceMapper.selectFenceById(id); + getManyDelete(); + return fence; } /** @@ -40,9 +44,13 @@ public class FenceServiceImpl implements IFenceService * @return 电子围栏 */ @Override - public List selectFenceList(Fence fence) + public List selectFenceList(Fence fence,String headerValue) { - return fenceMapper.selectFenceList(fence); + getMany(headerValue); + List fences = fenceMapper.selectFenceList(fence); + getManyDelete(); + return fences; + } /** @@ -52,10 +60,14 @@ public class FenceServiceImpl implements IFenceService * @return 结果 */ @Override - public int insertFence(Fence fence) + public int insertFence(Fence fence,String headerValue) { + getMany(headerValue); fence.setCreateTime(DateUtils.getNowDate()); - return fenceMapper.insertFence(fence); + int i = fenceMapper.insertFence(fence); + getManyDelete(); + return i; + } /** @@ -65,10 +77,14 @@ public class FenceServiceImpl implements IFenceService * @return 结果 */ @Override - public int updateFence(Fence fence) + public int updateFence(Fence fence,String headerValue) { + getMany(headerValue); fence.setUpdateTime(DateUtils.getNowDate()); - return fenceMapper.updateFence(fence); + int i = fenceMapper.updateFence(fence); + getManyDelete(); + return i; + } /** @@ -78,9 +94,13 @@ public class FenceServiceImpl implements IFenceService * @return 结果 */ @Override - public int deleteFenceByIds(Long[] ids) + public int deleteFenceByIds(Long[] ids,String headerValue) { - return fenceMapper.deleteFenceByIds(ids); + getMany(headerValue); + int i = fenceMapper.deleteFenceByIds(ids); + getManyDelete(); + return i; + } /** @@ -90,8 +110,20 @@ public class FenceServiceImpl implements IFenceService * @return 结果 */ @Override - public int deleteFenceById(Long id) + public int deleteFenceById(Long id,String headerValue) { - return fenceMapper.deleteFenceById(id); + getMany(headerValue); + int i = fenceMapper.deleteFenceById(id); + getManyDelete(); + return i; + } + + public void getMany(String entCode){ + //切换数据库 切换到从数据库 + DynamicDataSourceHolder.setDynamicDataSourceKey(entCode); + } + public void getManyDelete (){ + //切换数据库 切换到从数据库 + DynamicDataSourceHolder.removeDynamicDataSourceKey(); } } diff --git a/muyu-modules/muyu-modules-many/muyu-modules-many-server/src/main/resources/mapper/ManyEnterpriseMapper.xml b/muyu-modules/muyu-modules-many/muyu-modules-many-server/src/main/resources/mapper/ManyEnterpriseMapper.xml deleted file mode 100644 index ef5eca9..0000000 --- a/muyu-modules/muyu-modules-many/muyu-modules-many-server/src/main/resources/mapper/ManyEnterpriseMapper.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - -