fast()多数据源调整

car-ser
王熙朝 2024-06-08 20:39:19 +08:00
parent 43d3d167dc
commit 2341e41020
38 changed files with 403 additions and 38 deletions

View File

@ -0,0 +1,16 @@
package com.muyu.auth.form;
import com.muyu.common.system.domain.LoginUser;
import com.muyu.common.system.remote.RemoteUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class Sys {
@Autowired
private RemoteUserService remoteUserService;
public void sys(LoginUser userInfo) {
System.out.println(userInfo);
}
}

View File

@ -1,5 +1,6 @@
package com.muyu.auth.service;
import com.muyu.auth.form.Sys;
import com.muyu.common.core.constant.CacheConstants;
import com.muyu.common.core.constant.Constants;
import com.muyu.common.core.constant.SecurityConstants;
@ -18,6 +19,8 @@ import com.muyu.common.system.domain.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
/**
*
*
@ -37,6 +40,9 @@ public class SysLoginService {
@Autowired
private RedisService redisService;
@Autowired
private Sys sys;
/**
*
*/
@ -88,6 +94,7 @@ public class SysLoginService {
}
passwordService.validate(user, password);
recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功");
sys.sys(userInfo);
return userInfo;
}

View File

@ -20,4 +20,12 @@ public class ServiceNameConstants {
* serviceid
*/
public static final String FILE_SERVICE = "muyu-file";
/**
*
*/
public static final String GOODS_SERVICE = "muyu-goods";
/**
*
*/
public static final String RANGE_SERVICE = "muyu-range";
}

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.muyu</groupId>
<artifactId>muyu-common</artifactId>
<version>3.6.3</version>
</parent>
<artifactId>muyu-common-goods</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.muyu</groupId>
<artifactId>muyu-common-core</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,39 @@
package com.muyu.common.goods.domain;
import lombok.Data;
import java.io.Serializable;
@Data
public class Sources implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
private Long id;
/**
* id
*/
private Long enterpriseId;
/**
*
*/
private String name;
/**
*
*/
private String url;
/**
* ip
*/
private String ip;
/**
*
*/
private String username;
/**
*
*/
private String password;
}

View File

@ -0,0 +1,25 @@
package com.muyu.common.goods.remote;
import com.muyu.common.core.constant.ServiceNameConstants;
import com.muyu.common.core.domain.Result;
import com.muyu.common.goods.domain.Sources;
import com.muyu.common.goods.remote.factory.RemoteSourcesFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import java.util.List;
@FeignClient(
contextId = "sourcesService",
value = ServiceNameConstants.GOODS_SERVICE,
fallbackFactory = RemoteSourcesFallbackFactory.class
)
public interface RemoteSourcesService {
/**
*
* @return
*/
@PostMapping("enterprise/listSources")
public Result<List<Sources>> listSources();
}

View File

@ -0,0 +1,22 @@
package com.muyu.common.goods.remote.factory;
import com.muyu.common.core.domain.Result;
import com.muyu.common.goods.domain.Sources;
import com.muyu.common.goods.remote.RemoteSourcesService;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class RemoteSourcesFallbackFactory implements FallbackFactory<RemoteSourcesService> {
@Override
public RemoteSourcesService create(Throwable cause) {
return new RemoteSourcesService() {
@Override
public Result<List<Sources>> listSources() {
return Result.error(cause.getMessage());
}
};
}
}

View File

@ -0,0 +1 @@
com.muyu.common.goods.remote.factory.RemoteSourcesFallbackFactory

View File

@ -133,4 +133,14 @@ public class LoginUser implements Serializable {
public void setSysUser (SysUser sysUser) {
this.sysUser = sysUser;
}
public Long getFirm() {
return firm;
}
public void setFirm(Long firm) {
this.firm = firm;
}
}

View File

@ -108,6 +108,7 @@ public class SysUser extends BaseEntity {
@Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT)
private Date loginDate;
/**
*
*/
@ -140,11 +141,8 @@ public class SysUser extends BaseEntity {
/**
*
*/
private Long firm;
/**
*
*/
private Integer identification;
public SysUser (Long userId) {
this.userId = userId;
@ -310,6 +308,14 @@ public class SysUser extends BaseEntity {
this.roleId = roleId;
}
public Long getFirm() {
return firm;
}
public void setFirm(Long firm) {
this.firm = firm;
}
@Override
public String toString () {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
@ -332,6 +338,7 @@ public class SysUser extends BaseEntity {
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.append("dept", getDept())
.append("firm",getFirm())
.toString();
}
}

View File

@ -9,12 +9,18 @@ import com.muyu.common.system.domain.LoginUser;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
*
* @author muyu
*/
@FeignClient(contextId = "remoteUserService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteUserFallbackFactory.class)
@FeignClient(
contextId = "remoteUserService",
value = ServiceNameConstants.SYSTEM_SERVICE,
fallbackFactory = RemoteUserFallbackFactory.class
)
public interface RemoteUserService {
/**
*
@ -37,4 +43,7 @@ public interface RemoteUserService {
*/
@PostMapping("/user/register")
public Result<Boolean> registerUserInfo (@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
@GetMapping("/user/userList")
public Result<List<SysUser>> getUserList();
}

View File

@ -9,6 +9,8 @@ import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import java.util.List;
/**
*
*
@ -31,6 +33,11 @@ public class RemoteUserFallbackFactory implements FallbackFactory<RemoteUserServ
public Result<Boolean> registerUserInfo (SysUser sysUser, String source) {
return Result.error("注册用户失败:" + throwable.getMessage());
}
@Override
public Result<List<SysUser>> getUserList() {
return Result.error("获取用户失败:{}"+throwable.getMessage());
}
};
}
}

View File

@ -18,6 +18,7 @@
<module>muyu-common-datascope</module>
<module>muyu-common-datasource</module>
<module>muyu-common-system</module>
<module>muyu-common-goods</module>
</modules>
<artifactId>muyu-common</artifactId>

View File

@ -90,6 +90,10 @@
<version>3.6.3</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.muyu</groupId>
<artifactId>muyu-common-system</artifactId>
</dependency>
</dependencies>
<build>

View File

@ -6,9 +6,11 @@ import com.muyu.common.core.domain.Result;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.common.system.domain.LoginUser;
import com.muyu.common.system.domain.SysUser;
import com.muyu.common.system.remote.RemoteUserService;
import com.muyu.goods.mapper.BusinessMapper;
import com.muyu.goods.service.IBusinessService;
import com.muyu.system.remote.RemoteSystemManageService;
import lombok.extern.log4j.Log4j2;
import muyu.goods.enterprise.client.config.EnterpriseConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -24,6 +26,7 @@ import java.util.stream.Stream;
* @date 2024-05-26
*/
@Service
@Log4j2
public class BusinessServiceImpl implements IBusinessService
{
@Autowired
@ -31,6 +34,9 @@ public class BusinessServiceImpl implements IBusinessService
@Autowired
private RemoteSystemManageService remoteSystemManageService;
@Autowired
private RemoteUserService remoteUserService;
/**
*
* @return

View File

@ -21,7 +21,7 @@
<dependencies>
<dependency>
<groupId>com.muyu</groupId>
<artifactId>muyu-modules-system</artifactId>
<artifactId>muyu-common-goods</artifactId>
<version>3.6.3</version>
</dependency>
@ -30,6 +30,12 @@
<artifactId>muyu-goods-enterprise-common</artifactId>
<version>3.6.3</version>
</dependency>
<dependency>
<groupId>com.muyu</groupId>
<artifactId>muyu-modules-system</artifactId>
<version>3.6.3</version>
</dependency>
</dependencies>
</project>

View File

@ -1,21 +1,36 @@
package muyu.goods.enterprise.client.config.runner;
import com.muyu.common.security.config.ApplicationConfig;
import com.muyu.common.core.constant.SecurityConstants;
import com.muyu.common.core.domain.Result;
import com.muyu.common.goods.domain.Sources;
import com.muyu.common.goods.remote.RemoteSourcesService;
import com.muyu.common.system.domain.LoginUser;
import com.muyu.common.system.domain.SysUser;
import com.muyu.common.system.remote.RemoteUserService;
import com.muyu.system.remote.RemoteSystemManageService;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.BeansException;
//import muyu.goods.enterprise.remote.EnterpriseDataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestHeader;
import javax.annotation.processing.SupportedAnnotationTypes;
import java.util.List;
@Log4j2
@Component
@Configuration
@ComponentScan
public class EnterpriseConfigRunner implements ApplicationRunner {
@Autowired
private RemoteSourcesService remoteSourcesService;
@Override
public void run(ApplicationArguments args) throws Exception {
Result<List<Sources>> listResult = remoteSourcesService.listSources();
System.out.println(listResult);
}
}

View File

@ -24,5 +24,11 @@
<artifactId>muyu-goods-enterprise-common</artifactId>
<version>3.6.3</version>
</dependency>
<dependency>
<groupId>com.muyu</groupId>
<artifactId>muyu-common-core</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,24 @@
package muyu.goods.enterprise.remote;
import com.muyu.common.core.constant.ServiceNameConstants;
import com.muyu.common.core.domain.Result;
import com.muyu.goods.domain.Sources;
import muyu.goods.enterprise.remote.factory.EnterpriseDataServiceFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import java.util.List;
@FeignClient(
contextId = "enterpriseSources",
value = ServiceNameConstants.GOODS_SERVICE,
fallbackFactory = EnterpriseDataServiceFactory.class
)
public interface EnterpriseDataService {
/**
*
* @return
*/
@PostMapping("/enterprise/listSources")
public Result<List<Sources>> listSources();
}

View File

@ -1,4 +0,0 @@
package muyu.goods.enterprise.remote;
public interface RemoteEnterpriseManageService {
}

View File

@ -0,0 +1,20 @@
package muyu.goods.enterprise.remote.factory;
import com.muyu.common.core.domain.Result;
import com.muyu.goods.domain.Sources;
import muyu.goods.enterprise.remote.EnterpriseDataService;
import org.springframework.cloud.openfeign.FallbackFactory;
import java.util.List;
public class EnterpriseDataServiceFactory implements FallbackFactory<EnterpriseDataService> {
@Override
public EnterpriseDataService create(Throwable cause) {
return new EnterpriseDataService() {
@Override
public Result<List<Sources>> listSources() {
return Result.error(cause.getMessage());
}
};
}
}

View File

@ -5,6 +5,7 @@ import com.muyu.common.security.annotation.EnableMyFeignClients;
import com.muyu.common.swagger.annotation.EnableCustomSwagger2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.scheduling.annotation.EnableAsync;
@SpringBootApplication

View File

@ -6,6 +6,7 @@ import javax.servlet.http.HttpServletResponse;
import com.muyu.common.system.domain.SysUser;
import com.muyu.goods.domain.Enterprise;
import com.muyu.goods.domain.Sources;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@ -153,4 +154,13 @@ public class EnterpriseController extends BaseController
return success(enterpriseService.bu(id));
}
/**
*
* @return
*/
@PostMapping("/listSources")
public Result<List<Sources>> listSources() {
return success(enterpriseService.listSources());
}
}

View File

@ -1,6 +1,8 @@
package com.muyu.goods.mapper;
import java.util.List;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.muyu.goods.domain.Enterprise;
import com.muyu.goods.domain.Sources;
import org.apache.ibatis.annotations.Param;
@ -71,4 +73,6 @@ public interface EnterpriseMapper
void indexSources(Sources sources);
List<Sources> listSources(QueryWrapper<Object> objectQueryWrapper);
}

View File

@ -5,6 +5,7 @@ import java.util.List;
import com.muyu.common.system.domain.SysUser;
import com.muyu.goods.domain.Enterprise;
import com.muyu.goods.domain.Sources;
/**
* Service
@ -79,4 +80,6 @@ public interface IEnterpriseService
String getLevel(Long id, Integer serviceLevel);
String bu(Long id);
List<Sources> listSources();
}

View File

@ -4,6 +4,7 @@ import java.io.IOException;
import java.util.List;
import java.util.UUID;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.muyu.common.core.utils.DateUtils;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.common.system.domain.LoginUser;
@ -76,7 +77,6 @@ public class EnterpriseServiceImpl implements IEnterpriseService
if (i>0){
Enterprise enterprise1 = enterpriseMapper.queryDateEnterprise();
enterpriseConfig.index(enterprise1);
}
return i;
}
@ -206,4 +206,9 @@ public class EnterpriseServiceImpl implements IEnterpriseService
return "成功";
}
@Override
public List<Sources> listSources() {
return enterpriseMapper.listSources(new QueryWrapper<>());
}
}

View File

@ -52,6 +52,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectEnterpriseVo"/>
ORDER BY id DESC LIMIT 1;
</select>
<select id="listSources" resultType="com.muyu.goods.domain.Sources">
select * from sources
</select>
<insert id="insertEnterprise" parameterType="com.muyu.goods.domain.Enterprise" useGeneratedKeys="true" keyProperty="id">

View File

@ -22,6 +22,12 @@
<dependencies>
<dependency>
<groupId>com.muyu</groupId>
<artifactId>muyu-common-goods</artifactId>
<version>3.6.3</version>
</dependency>
<!-- SpringCloud Alibaba Nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
@ -82,6 +88,12 @@
<groupId>com.muyu</groupId>
<artifactId>muyu-common-swagger</artifactId>
</dependency>
<dependency>
<groupId>com.muyu</groupId>
<artifactId>muyu-goods-enterprise-remote</artifactId>
<version>3.6.3</version>
<scope>compile</scope>
</dependency>
</dependencies>

View File

@ -1,4 +0,0 @@
package com.muyu.cloud.Client.run;
public class ManyConfigRunner {
}

View File

@ -1,12 +1,11 @@
package com.muyu.cloud.Client;
package com.muyu.cloud.client;
import com.muyu.cloud.Client.run.ManyConfigRunner;
import lombok.extern.log4j.Log4j2;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Import;
@Log4j2
@ComponentScan
@Import(value = ManyConfigRunner.class)
public class ManyConfig {
@Import(value = CloudConfigRunner.class)
public class CloudConfig {
}

View File

@ -0,0 +1,19 @@
package com.muyu.cloud.client;
import lombok.extern.log4j.Log4j2;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
@Log4j2
@Component
@Configuration
public class CloudConfigRunner implements ApplicationRunner {
// @Autowired
// private RemoteEnterpriseService;
@Override
public void run(ApplicationArguments args) throws Exception {
}
}

View File

@ -2,8 +2,11 @@ package com.muyu.cloud.datasource.config;
import com.alibaba.druid.pool.DruidDataSource;
import com.muyu.cloud.datasource.config.contents.DataSourceInfo;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.common.core.domain.Result;
import com.muyu.common.goods.domain.Sources;
import com.muyu.common.goods.remote.RemoteSourcesService;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
@ -22,22 +25,26 @@ import java.util.Map;
@Log4j2
@Configuration
public class DruidConfig {
// @Autowired
// private DynamicDataSource dynamicDataSource;
@Autowired
private RemoteSourcesService remoteSourcesService;
/**
*
* @return
*/
private List<DataSourceInfo> getDataSourceInfoList(){
System.out.println("获取当前登录信息");
System.out.println(SecurityUtils.getLoginUser());
List<String> databaseNameList = new ArrayList<>(){{
add("3310");
add("3311");
}};
List<Sources> listResult = remoteSourcesService.listSources().getData();
System.out.println(listResult);
List<String> databaseNameList = new ArrayList<>();
listResult.forEach(res -> {
databaseNameList.add(res.getIp());
});
// List<String> databaseNameList = new ArrayList<>(){{
// add("3310");
// add("3311");
// }};
System.out.println(databaseNameList);
List<DataSourceInfo> list = databaseNameList.stream().map(DataSourceInfo::dataIpBuild).toList();
System.out.println(list);
// System.out.println(list);
return list;
}
@ -76,7 +83,7 @@ public class DruidConfig {
getDataSourceInfoList().forEach(dataSourceInfo -> {
dataSourceMap.put(dataSourceInfo.getIp(), createDataSourceConnection(dataSourceInfo));
});
System.out.println(dataSourceMap);
// System.out.println(dataSourceMap);
//设置动态数据源
DynamicDataSource dynamicDataSource = new DynamicDataSource();
// dynamicDataSource.setDefaultTargetDataSource(dynamicDataSource);
@ -84,5 +91,6 @@ public class DruidConfig {
//将数据源信息备份在defineTargetDataSources中
dynamicDataSource.setDefineTargetDataSources(dataSourceMap);
return dynamicDataSource;
}
}

View File

@ -0,0 +1,21 @@
package com.muyu.cloud.remote;
import com.muyu.cloud.domain.Status;
import com.muyu.cloud.remote.factory.DataSourceConfigRunner;
import com.muyu.common.core.constant.ServiceNameConstants;
import com.muyu.common.core.domain.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import java.util.List;
@FeignClient(
contextId = "sourceId",
value = ServiceNameConstants.RANGE_SERVICE,
fallbackFactory = DataSourceConfigRunner.class,
path = "/cloud"
)
public interface DataSourceConfig {
@PostMapping("list")
public Result<List<Status>> list();
}

View File

@ -0,0 +1,20 @@
package com.muyu.cloud.remote.factory;
import com.muyu.cloud.domain.Status;
import com.muyu.cloud.remote.DataSourceConfig;
import com.muyu.common.core.domain.Result;
import org.springframework.cloud.openfeign.FallbackFactory;
import java.util.List;
public class DataSourceConfigRunner implements FallbackFactory<DataSourceConfig> {
@Override
public DataSourceConfig create(Throwable cause) {
return new DataSourceConfig() {
@Override
public Result<List<Status>> list() {
return Result.error(cause.getMessage());
}
};
}
}

View File

@ -1 +1,3 @@
com.muyu.cloud.datasource.interceptor.WebMvcConfig
com.muyu.cloud.client.CloudConfig
com.muyu.cloud.remote.factory.DataSourceConfigRunner

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- 日志存放路径 -->
<property name="log.path" value="logs/muyu-moudels-many-datasource"/>
<property name="log.path" value="logs/muyu-visual-monitor"/>
<!-- 日志输出格式 -->
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>

View File

@ -18,6 +18,7 @@ import com.muyu.system.domain.resp.AuthRoleResp;
import com.muyu.system.domain.resp.UserDetailInfoResp;
import com.muyu.system.domain.resp.UserInfoResp;
import com.muyu.system.service.*;
import org.apache.catalina.User;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
@ -139,6 +140,10 @@ public class SysUserController extends BaseController {
return Result.success(userService.registerUser(sysUser));
}
@GetMapping("/userList")
public Result<List<SysUser>> userList(){
return Result.success(userService.lists());
}
/**
*
*