fast()登录切换数据源

car-ser
王熙朝 2024-06-09 21:00:48 +08:00
parent 2341e41020
commit a560229583
24 changed files with 227 additions and 41 deletions

View File

@ -51,6 +51,12 @@
<groupId>com.muyu</groupId>
<artifactId>muyu-common-security</artifactId>
</dependency>
<dependency>
<groupId>com.muyu</groupId>
<artifactId>muyu-common-goods</artifactId>
<version>3.6.3</version>
<scope>compile</scope>
</dependency>
</dependencies>

View File

@ -4,6 +4,7 @@ import com.muyu.common.security.annotation.EnableMyFeignClients;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.cloud.openfeign.EnableFeignClients;
/**
*

View File

@ -1,16 +0,0 @@
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

@ -0,0 +1,70 @@
package com.muyu.auth.form;
import com.muyu.auth.service.SysLoginService;
import com.muyu.common.goods.domain.Sources;
import com.muyu.common.goods.domain.Status;
import com.muyu.common.goods.remote.RemoteDataSourceService;
import com.muyu.common.goods.remote.RemoteSourcesService;
import com.muyu.common.system.domain.SysUser;
import lombok.extern.log4j.Log4j2;
import org.apache.http.client.utils.HttpClientUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.net.*;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpRequest.*;
import java.net.http.HttpResponse;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
@Log4j2
@Component
public class SysFormSources {
@Autowired
private RemoteSourcesService remoteSourcesService;
@Autowired
private RemoteDataSourceService remoteDataSourceService;;
public void sysSetUser(SysUser sysUser){
String saas = null;
HashMap<String, String> hashMap = new HashMap<>();
if (sysUser.getFirm()!=null){
List<Sources> sourcesList = remoteSourcesService.listSources().getData();
Sources sources = sourcesList.stream().filter(sour -> sour.getEnterpriseId() == sysUser.getFirm()).collect(Collectors.toList()).get(0);
saas = sources.getIp();
}else {
saas = "3306";
}
System.out.println(saas);
hashMap.put("saas",saas);
// try {
// //创建HttpClient实例
// HttpClient client = HttpClient.newBuilder().build();
// //创建请求并添加rui
// URI uri = new URI("http://127.0.0.1:9209/cloud/list");
// HttpRequest request = HttpRequest.newBuilder()
// .uri(uri)
// .header("saas", saas)
// .POST(BodyPublishers.noBody())
// .build();
// //发送请求并接收请求响应
// HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
// //输出响应状态和内容
// System.out.println(response.statusCode());
// System.out.println(response.body());
// } catch (URISyntaxException e) {
// throw new RuntimeException(e);
// } catch (IOException e) {
// throw new RuntimeException(e);
// } catch (InterruptedException e) {
// throw new RuntimeException(e);
// }
List<Status> data = remoteDataSourceService.list(saas).getData();
System.out.println(data);
}
}

View File

@ -1,6 +1,6 @@
package com.muyu.auth.service;
import com.muyu.auth.form.Sys;
import com.muyu.auth.form.SysFormSources;
import com.muyu.common.core.constant.CacheConstants;
import com.muyu.common.core.constant.Constants;
import com.muyu.common.core.constant.SecurityConstants;
@ -13,14 +13,12 @@ import com.muyu.common.core.utils.StringUtils;
import com.muyu.common.core.utils.ip.IpUtils;
import com.muyu.common.redis.service.RedisService;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.common.system.remote.RemoteUserService;
import com.muyu.common.system.domain.SysUser;
import com.muyu.common.system.domain.LoginUser;
import com.muyu.common.system.domain.SysUser;
import com.muyu.common.system.remote.RemoteUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
/**
*
*
@ -41,7 +39,7 @@ public class SysLoginService {
private RedisService redisService;
@Autowired
private Sys sys;
private SysFormSources sysFormSources;
/**
*
@ -94,7 +92,7 @@ public class SysLoginService {
}
passwordService.validate(user, password);
recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功");
sys.sys(userInfo);
sysFormSources.sysSetUser(user);
return userInfo;
}

View File

@ -4,8 +4,8 @@ import com.muyu.common.core.constant.Constants;
import com.muyu.common.core.constant.SecurityConstants;
import com.muyu.common.core.utils.StringUtils;
import com.muyu.common.core.utils.ip.IpUtils;
import com.muyu.common.system.remote.RemoteLogService;
import com.muyu.common.system.domain.SysLogininfor;
import com.muyu.common.system.remote.RemoteLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

View File

@ -0,0 +1,24 @@
package com.muyu.common.goods.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName(value = "status")
public class Status {
/**
*
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
*
*/
private String name;
/**
*
*/
private Integer age;
}

View File

@ -0,0 +1,26 @@
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.Status;
import com.muyu.common.goods.remote.factory.RemoteDataSourceFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import java.util.List;
@FeignClient(
contextId = "dataSourcesService",
value = ServiceNameConstants.RANGE_SERVICE,
fallbackFactory = RemoteDataSourceFallbackFactory.class,
path = "/cloud"
)
public interface RemoteDataSourceService {
// @PostMapping("list")
// public Result<List<Status>> list();
@PostMapping("list")
public Result<List<Status>> list(@RequestHeader("saas") String saas);
}

View File

@ -0,0 +1,26 @@
package com.muyu.common.goods.remote.factory;
import com.muyu.common.core.domain.Result;
import com.muyu.common.goods.domain.Status;
import com.muyu.common.goods.remote.RemoteDataSourceService;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class RemoteDataSourceFallbackFactory implements FallbackFactory<RemoteDataSourceService> {
@Override
public RemoteDataSourceService create(Throwable cause) {
return new RemoteDataSourceService() {
@Override
public Result<List<Status>> list(String saas) {
return Result.error(cause.getMessage());
}
// @Override
// public Result<List<Status>> list() {
// return Result.error(cause.getMessage());
// }
};
}
}

View File

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

View File

@ -45,7 +45,7 @@ public class TokenService {
Long userId = loginUser.getSysUser().getUserId();
String userName = loginUser.getSysUser().getUserName();
loginUser.setToken(token);
loginUser.setUserid(userId);
loginUser.setUserId(userId);
loginUser.setUsername(userName);
loginUser.setIpaddr(IpUtils.getIpAddr());
refreshToken(loginUser);

View File

@ -23,7 +23,7 @@ public class LoginUser implements Serializable {
/**
* id
*/
private Long userid;
private Long userId;
/**
*
@ -70,12 +70,12 @@ public class LoginUser implements Serializable {
this.token = token;
}
public Long getUserid () {
return userid;
public Long getUserId () {
return userId;
}
public void setUserid (Long userid) {
this.userid = userid;
public void setUserId (Long userId) {
this.userId = userId;
}
public String getUsername () {
@ -142,5 +142,4 @@ public class LoginUser implements Serializable {
this.firm = firm;
}
}

View File

@ -55,7 +55,7 @@ public class BusinessServiceImpl implements IBusinessService
LoginUser loginUser = SecurityUtils.getLoginUser();
Result<List<SysUser>> lists = remoteSystemManageService.lists();
List<SysUser> data = lists.getData();
SysUser sysUser = data.stream().filter(da -> da.getUserId().equals(loginUser.getUserid())).collect(Collectors.toList()).get(0);
SysUser sysUser = data.stream().filter(da -> da.getUserId().equals(loginUser.getUserId())).collect(Collectors.toList()).get(0);
List<Enterprise> collect = lists().stream().filter(re -> re.getId().equals(sysUser.getFirm())).collect(Collectors.toList());
if (collect.size() == 0){
return null;

View File

@ -0,0 +1,23 @@
package com.muyu.goods.domain;
import lombok.Data;
@Data
public class Custom {
/**
*
*/
private Long customId;
/**
*
*/
private Long enterpriseId;
/**
*
*/
private String customContent;
/**
*
*/
private Integer status;
}

View File

@ -5,6 +5,7 @@ import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.muyu.common.system.domain.SysUser;
import com.muyu.goods.domain.Custom;
import com.muyu.goods.domain.Enterprise;
import com.muyu.goods.domain.Sources;
import org.springframework.beans.factory.annotation.Autowired;
@ -163,4 +164,14 @@ public class EnterpriseController extends BaseController
return success(enterpriseService.listSources());
}
/**
*
* @param custom
* @return
*/
@PostMapping("/indexCustom")
public Result indexCustom(@RequestBody Custom custom) {
return success(enterpriseService.indexCustom(custom));
}
}

View File

@ -3,6 +3,7 @@ package com.muyu.goods.mapper;
import java.util.List;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.muyu.goods.domain.Custom;
import com.muyu.goods.domain.Enterprise;
import com.muyu.goods.domain.Sources;
import org.apache.ibatis.annotations.Param;
@ -75,4 +76,6 @@ public interface EnterpriseMapper
void indexSources(Sources sources);
List<Sources> listSources(QueryWrapper<Object> objectQueryWrapper);
int indexCustom(Custom custom);
}

View File

@ -4,6 +4,7 @@ import java.io.IOException;
import java.util.List;
import com.muyu.common.system.domain.SysUser;
import com.muyu.goods.domain.Custom;
import com.muyu.goods.domain.Enterprise;
import com.muyu.goods.domain.Sources;
@ -82,4 +83,6 @@ public interface IEnterpriseService
String bu(Long id);
List<Sources> listSources();
int indexCustom(Custom custom);
}

View File

@ -9,6 +9,7 @@ import com.muyu.common.core.utils.DateUtils;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.common.system.domain.LoginUser;
import com.muyu.common.system.domain.SysUser;
import com.muyu.goods.domain.Custom;
import com.muyu.goods.domain.Sources;
import com.muyu.goods.pojo.HttpClient;
import com.muyu.system.remote.RemoteSystemManageService;
@ -211,4 +212,11 @@ public class EnterpriseServiceImpl implements IEnterpriseService
return enterpriseMapper.listSources(new QueryWrapper<>());
}
@Override
public int indexCustom(Custom custom) {
System.out.println(custom);
// int i = enterpriseMapper.indexCustom(custom);
return 0;
}
}

View File

@ -113,6 +113,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="password != null">#{password},</if>
</trim>
</insert>
<insert id="indexCustom">
insert into custom (enterprise_id,custom_content,status)
values (#{enterpriseId},#{customContent},0)
</insert>
<update id="updateEnterprise" parameterType="com.muyu.goods.domain.Enterprise">
update enterprise

View File

@ -8,10 +8,7 @@ import com.muyu.cloud.service.CloudService;
import com.muyu.common.core.domain.Result;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -42,7 +39,7 @@ public class CloudController {
}
@PostMapping("list")
public Result<List<Status>> list() {
return Result.success(cloudService.list());
public Result<List<Status>> list(@RequestHeader("saas") String saas) {
return Result.success(cloudService.list(saas));
}
}

View File

@ -35,6 +35,7 @@ public class DruidConfig {
List<Sources> listResult = remoteSourcesService.listSources().getData();
System.out.println(listResult);
List<String> databaseNameList = new ArrayList<>();
databaseNameList.add("3306");
listResult.forEach(res -> {
databaseNameList.add(res.getIp());
});

View File

@ -7,5 +7,5 @@ import java.util.List;
public interface CloudService {
Object selSource();
List<Status> list();
List<Status> list(String saas);
}

View File

@ -1,6 +1,7 @@
package com.muyu.cloud.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.muyu.cloud.datasource.DynamicDataSourceHolder;
import com.muyu.cloud.domain.Status;
import com.muyu.cloud.mapper.CloudMapper;
import com.muyu.cloud.service.CloudService;
@ -19,7 +20,7 @@ public class CloudServiceImpl implements CloudService {
}
@Override
public List<Status> list() {
public List<Status> list(String saas) {
return cloudMapper.list(new QueryWrapper<>());
}
}

View File

@ -513,7 +513,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
@Override
public SysUser getSysUserById() {
LoginUser loginUser = SecurityUtils.getLoginUser();
Long userid = loginUser.getUserid();
Long userid = loginUser.getUserId();
List<SysUser> collect = lists().stream().filter(list -> list.getUserId().equals(userid)).collect(Collectors.toList());
return collect.get(0);
}