Merge remote-tracking branch 'origin/dev.saas'

dev
刘武 2024-09-25 09:36:51 +08:00
commit 7e3ae3b7b6
38 changed files with 321 additions and 241 deletions

View File

@ -16,6 +16,7 @@ public class LoginBody {
*/ */
private String password; private String password;
public String getUsername () { public String getUsername () {
return username; return username;
} }

View File

@ -25,4 +25,9 @@ public class ServiceNameConstants {
* *
*/ */
public static final String SMART_SERVICE = "cloud-smart-car"; public static final String SMART_SERVICE = "cloud-smart-car";
public static final String SAAS_SERVICE = "cloud-saas";
} }

View File

@ -29,6 +29,10 @@
<groupId>com.muyu</groupId> <groupId>com.muyu</groupId>
<artifactId>cloud-common-security</artifactId> <artifactId>cloud-common-security</artifactId>
</dependency> </dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -1,34 +1,28 @@
package com.muyu.cloud.common.many.datasource; package com.muyu.cloud.common.many.datasource;
import cn.hutool.json.JSONObject;
import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration; import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration;
import com.muyu.cloud.common.many.datasource.constents.DatasourceContent; import com.muyu.cloud.common.many.datasource.constents.DatasourceContent;
import com.muyu.cloud.common.saas.domain.model.EntInfo;
import com.muyu.cloud.common.many.datasource.factory.DruidDataSourceFactory;
import com.muyu.cloud.common.many.datasource.domain.model.DataSourceInfo; import com.muyu.cloud.common.many.datasource.domain.model.DataSourceInfo;
import com.muyu.cloud.common.many.datasource.factory.DruidDataSourceFactory;
import com.muyu.cloud.common.many.datasource.role.DynamicDataSource; import com.muyu.cloud.common.many.datasource.role.DynamicDataSource;
import com.muyu.cloud.common.saas.domain.model.EntInfo;
import com.muyu.cloud.common.saas.exception.SaaSException; import com.muyu.cloud.common.saas.exception.SaaSException;
import com.muyu.common.core.domain.Result; import com.muyu.common.core.domain.Result;
import com.muyu.common.core.utils.SpringUtils; import com.muyu.common.core.utils.SpringUtils;
import com.muyu.common.core.web.page.TableDataInfo; import com.muyu.common.system.domain.Datasource;
import com.muyu.common.system.domain.SysFirmUser;
import com.muyu.common.system.domain.SysUser; import com.muyu.common.system.domain.SysUser;
import com.muyu.common.system.remote.RemoteSaaSService;
import com.muyu.common.system.remote.RemoteUserService; import com.muyu.common.system.remote.RemoteUserService;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner; import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -42,20 +36,18 @@ import java.util.Map;
*/ */
@Log4j2 @Log4j2
@Component @Component
@AutoConfiguration(before = MybatisPlusAutoConfiguration.class) @AutoConfiguration(before = {MybatisPlusAutoConfiguration.class, MybatisAutoConfiguration.class})
public class ManyDataSource implements ApplicationRunner{ public class ManyDataSource implements ApplicationRunner{
private List<EntInfo> dataSourceInfoList(){ private List<EntInfo> dataSourceInfoList(){
RemoteUserService remoteUserService = SpringUtils.getBean(RemoteUserService.class); RemoteSaaSService remoteSaaSService = SpringUtils.getBean(RemoteSaaSService.class);
Result<List<SysUser>> tableDataInfoResult = remoteUserService.companyList(); Result<List<Datasource>> tableDataInfoResult = remoteSaaSService.findDatabaseList();
if (tableDataInfoResult==null){ if (tableDataInfoResult==null){
throw new SaaSException("saas远调数据源错误"); throw new SaaSException("saas远调数据源错误");
} }
List<SysUser> data = tableDataInfoResult.getData(); List<Datasource> data = tableDataInfoResult.getData();
if (tableDataInfoResult.getCode() ==Result.SUCCESS && data !=null){ if (tableDataInfoResult.getCode() ==Result.SUCCESS && data !=null){
List<EntInfo> list = new ArrayList<>(); List<EntInfo> list = new ArrayList<>();
for (SysUser row : data) { for (Datasource row : data) {
list.add( list.add(
EntInfo.builder() EntInfo.builder()
.entCode(row.getDatabaseName()) .entCode(row.getDatabaseName())
@ -114,5 +106,4 @@ public class ManyDataSource implements ApplicationRunner{
log.info("存储数据连接池为key:{}",dataSourceInfo.getKey()); log.info("存储数据连接池为key:{}",dataSourceInfo.getKey());
} }
} }
} }

View File

@ -1,28 +1,26 @@
package com.muyu.cloud.car.domain; package com.muyu.cloud.common.saas.domain;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
/**
* @Author WangXin
* @Data 2024/9/19
* @Description
* @Version 1.0.0
*/
@TableName("user")
@Data @Data
@Builder
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class User { @TableName(value = "datasource", autoResultMap = true)
public class Datasource {
@TableId(value = "id",type = IdType.AUTO)
private Integer id;
public String firmName;
public String databaseName;
@TableId(type = IdType.AUTO)
private Integer userId;
private String userName;
} }

View File

@ -25,5 +25,8 @@
<groupId>com.muyu</groupId> <groupId>com.muyu</groupId>
<artifactId>cloud-common-core</artifactId> <artifactId>cloud-common-core</artifactId>
</dependency> </dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -0,0 +1,26 @@
package com.muyu.common.system.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "datasource", autoResultMap = true)
public class Datasource {
@TableId(value = "id",type = IdType.AUTO)
private Integer id;
public String firmName;
public String databaseName;
}

View File

@ -0,0 +1,29 @@
package com.muyu.common.system.remote;
import com.muyu.common.core.constant.SecurityConstants;
import com.muyu.common.core.constant.ServiceNameConstants;
import com.muyu.common.core.domain.Result;
import com.muyu.common.system.domain.Datasource;
import com.muyu.common.system.domain.LoginUser;
import com.muyu.common.system.domain.SysUser;
import com.muyu.common.system.remote.factory.RemoteSaaSFallbackFactory;
import com.muyu.common.system.remote.factory.RemoteUserFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
*
* @author muyu
*/
@FeignClient(contextId = "SaasService", value = ServiceNameConstants.SAAS_SERVICE, fallbackFactory = RemoteSaaSFallbackFactory.class)
public interface RemoteSaaSService {
@GetMapping("/saas/findDatabaseList")
public Result<List<Datasource>> findDatabaseList();
}

View File

@ -0,0 +1,33 @@
package com.muyu.common.system.remote.factory;
import com.muyu.common.core.domain.Result;
import com.muyu.common.system.domain.Datasource;
import com.muyu.common.system.domain.LoginUser;
import com.muyu.common.system.domain.SysUser;
import com.muyu.common.system.remote.RemoteSaaSService;
import com.muyu.common.system.remote.RemoteUserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import java.util.List;
/**
*
*
* @author muyu
*/
@Component
public class RemoteSaaSFallbackFactory implements FallbackFactory<RemoteSaaSService> {
@Override
public RemoteSaaSService create(Throwable cause) {
return new RemoteSaaSService() {
@Override
public Result<List<Datasource>> findDatabaseList() {
return Result.error("查询数据库失败:" + cause.getMessage());
}
};
}
}

View File

@ -1,3 +1,4 @@
com.muyu.common.system.remote.factory.RemoteUserFallbackFactory com.muyu.common.system.remote.factory.RemoteUserFallbackFactory
com.muyu.common.system.remote.factory.RemoteLogFallbackFactory com.muyu.common.system.remote.factory.RemoteLogFallbackFactory
com.muyu.common.system.remote.factory.RemoteFileFallbackFactory com.muyu.common.system.remote.factory.RemoteFileFallbackFactory
com.muyu.common.system.remote.factory.RemoteSaaSFallbackFactory

View File

@ -1,25 +0,0 @@
package com.muyu.cloud.car;
import com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure;
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration;
import com.muyu.common.security.annotation.EnableCustomConfig;
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;
@EnableCustomConfig
//@EnableCustomSwagger2
@EnableMyFeignClients
@SpringBootApplication(
exclude = {
DataSourceAutoConfiguration.class,
DruidDataSourceAutoConfigure.class,
DynamicDataSourceAutoConfiguration.class
}
)
public class CarApplication {
public static void main(String[] args) {
SpringApplication.run(CarApplication.class, args);
}
}

View File

@ -1,30 +0,0 @@
package com.muyu.cloud.car.controller;
import com.muyu.cloud.car.domain.User;
import com.muyu.cloud.car.service.CarService;
import com.muyu.common.core.web.controller.BaseController;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* @Author WangXin
* @Data 2024/9/19
* @Description
* @Version 1.0.0
*/
@RestController
@RequestMapping("/test")
public class CarController extends BaseController {
@Resource
private CarService carService;
@GetMapping("/sel")
public List<User> sel() {
return carService.list();
}
}

View File

@ -1,20 +0,0 @@
package com.muyu.cloud.car.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.cloud.car.domain.User;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @Author WangXin
* @Data 2024/9/19
* @Description
* @Version 1.0.0
*/
public interface CarMapper extends BaseMapper<User> {
List<User> selectMyList();
}

View File

@ -1,19 +0,0 @@
package com.muyu.cloud.car.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.cloud.car.domain.User;
import java.util.List;
/**
* @Author WangXin
* @Data 2024/9/19
* @Description
* @Version 1.0.0
*/
public interface CarService extends IService<User> {
List<User> selectList();
}

View File

@ -1,28 +0,0 @@
package com.muyu.cloud.car.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.cloud.car.domain.User;
import com.muyu.cloud.car.mapper.CarMapper;
import com.muyu.cloud.car.service.CarService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* @Author WangXin
* @Data 2024/9/19
* @Description
* @Version 1.0.0
*/
@Service
public class CarServiceImpl extends ServiceImpl<CarMapper, User> implements CarService {
@Resource
private CarMapper carMapper;
@Override
public List<User> selectList() {
return carMapper.selectMyList();
}
}

View File

@ -1,58 +0,0 @@
# Tomcat
server:
port: 49701
# nacos线上地址
nacos:
addr: 47.101.53.251:8848
user-name: nacos
password: nacos
namespace: four
# SPRING_AMQP_DESERIALIZATION_TRUST_ALL=true spring.amqp.deserialization.trust.all
# Spring
spring:
amqp:
deserialization:
trust:
all: true
main:
allow-bean-definition-overriding: true
application:
# 应用名称
name: cloud-saas
profiles:
# 环境配置
active: dev
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: ${nacos.addr}
# nacos用户名
username: ${nacos.user-name}
# nacos密码
password: ${nacos.password}
# 命名空间
namespace: ${nacos.namespace}
config:
# 服务注册地址
server-addr: ${nacos.addr}
# nacos用户名
username: ${nacos.user-name}
# nacos密码
password: ${nacos.password}
# 命名空间
namespace: ${nacos.namespace}
# 配置文件格式
file-extension: yml
# 共享配置
shared-configs:
# 系统共享配置
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
# 系统环境Config共享配置
- application-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
logging:
level:
com.muyu.cloud.mapper: DEBUG

View File

@ -80,11 +80,11 @@
<artifactId>cloud-common-api-doc</artifactId> <artifactId>cloud-common-api-doc</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.muyu</groupId> <groupId>com.muyu</groupId>
<artifactId>cloud-common-rabbit</artifactId> <artifactId>cloud-common-saas</artifactId>
</dependency> </dependency>
</dependencies> </dependencies>
<build> <build>
@ -104,6 +104,4 @@
</plugins> </plugins>
</build> </build>
</project> </project>

View File

@ -1,11 +1,18 @@
package com.muyu; package com.muyu;
import com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure;
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration;
import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication @SpringBootApplication(exclude = {
DataSourceAutoConfiguration.class,
DruidDataSourceAutoConfigure.class,
DynamicDataSourceAutoConfiguration.class
})
@EnableFeignClients @EnableFeignClients
@MapperScan(value = "com.muyu.mapper") @MapperScan(value = "com.muyu.mapper")
public class CarSystemApplication { public class CarSystemApplication {

View File

@ -17,6 +17,10 @@
</description> </description>
<dependencies> <dependencies>
<dependency>
<groupId>com.muyu</groupId>
<artifactId>cloud-common-saas</artifactId>
</dependency>
<!-- SpringCloud Alibaba Nacos --> <!-- SpringCloud Alibaba Nacos -->
<dependency> <dependency>

View File

@ -1,8 +1,11 @@
package com.muyu.fence; package com.muyu.fence;
import com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure;
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration;
import com.muyu.common.security.annotation.EnableMyFeignClients; import com.muyu.common.security.annotation.EnableMyFeignClients;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
/** /**
* @Author YuPing * @Author YuPing
@ -10,7 +13,11 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
* @Version 1.0 * @Version 1.0
* @Data 2024-09-18 11:27:38 * @Data 2024-09-18 11:27:38
*/ */
@SpringBootApplication @SpringBootApplication(exclude = {
DataSourceAutoConfiguration.class,
DruidDataSourceAutoConfigure.class,
DynamicDataSourceAutoConfiguration.class
})
@EnableMyFeignClients @EnableMyFeignClients
public class FenceApplication { public class FenceApplication {
public static void main(String[] args) { public static void main(String[] args) {

View File

@ -17,6 +17,7 @@
<dependencies> <dependencies>
<!-- SpringCloud Alibaba Nacos --> <!-- SpringCloud Alibaba Nacos -->
<dependency> <dependency>
<groupId>com.alibaba.cloud</groupId> <groupId>com.alibaba.cloud</groupId>

View File

@ -16,6 +16,7 @@ import com.muyu.system.domain.resp.DeptTreeResp;
import com.muyu.system.service.SysDeptService; import com.muyu.system.service.SysDeptService;
import com.muyu.system.service.SysRoleService; import com.muyu.system.service.SysRoleService;
import com.muyu.system.service.SysUserService; import com.muyu.system.service.SysUserService;
import jakarta.websocket.server.PathParam;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -194,7 +195,7 @@ public class SysRoleController extends BaseController {
@RequiresPermissions("system:role:edit") @RequiresPermissions("system:role:edit")
@Log(title = "角色管理", businessType = BusinessType.GRANT) @Log(title = "角色管理", businessType = BusinessType.GRANT)
@PutMapping("/authUser/selectAll") @PutMapping("/authUser/selectAll")
public Result selectAuthUserAll (Long roleId, Long[] userIds) { public Result selectAuthUserAll (@RequestParam("roleId") Long roleId,@RequestParam("userIds") Long[] userIds) {
roleService.checkRoleDataScope(roleId); roleService.checkRoleDataScope(roleId);
return toAjax(roleService.insertAuthUsers(roleId, userIds)); return toAjax(roleService.insertAuthUsers(roleId, userIds));
} }

View File

@ -282,7 +282,7 @@ public class SysUserController extends BaseController {
@RequiresPermissions("system:user:edit") @RequiresPermissions("system:user:edit")
@Log(title = "用户管理", businessType = BusinessType.GRANT) @Log(title = "用户管理", businessType = BusinessType.GRANT)
@PutMapping("/authRole") @PutMapping("/authRole")
public Result insertAuthRole (Long userId, Long[] roleIds) { public Result insertAuthRole (@RequestParam("userId") Long userId,@RequestParam("roleIds") Long[] roleIds) {
userService.checkUserDataScope(userId); userService.checkUserDataScope(userId);
userService.insertUserAuth(userId, roleIds); userService.insertUserAuth(userId, roleIds);
return success(); return success();

View File

@ -86,6 +86,10 @@
<groupId>com.muyu</groupId> <groupId>com.muyu</groupId>
<artifactId>cloud-common-rabbit</artifactId> <artifactId>cloud-common-rabbit</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@ -1,5 +1,6 @@
package com.muyu; package com.muyu;
import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;

View File

@ -1,28 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 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> <parent>
<groupId>com.muyu</groupId> <groupId>com.muyu</groupId>
<artifactId>cloud-modules</artifactId> <artifactId>cloud-modules</artifactId>
<version>3.6.3</version> <version>3.6.3</version>
</parent> </parent>
<artifactId>cloud-car</artifactId> <modelVersion>4.0.0</modelVersion>
<properties> <artifactId>cloud-saas</artifactId>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target> <description>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> cloud-saas
</properties> </description>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>com.muyu</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>cloud-common-saas</artifactId> <artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>4.1.2</version>
</dependency> </dependency>
<!-- SpringCloud Alibaba Nacos --> <!-- SpringCloud Alibaba Nacos -->
<dependency> <dependency>
<groupId>com.alibaba.cloud</groupId> <groupId>com.alibaba.cloud</groupId>
@ -77,6 +80,9 @@
<artifactId>cloud-common-api-doc</artifactId> <artifactId>cloud-common-api-doc</artifactId>
</dependency> </dependency>
</dependencies> </dependencies>
<build> <build>

View File

@ -0,0 +1,19 @@
package com.muyu.saas;
import com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure;
import com.muyu.common.security.annotation.EnableMyFeignClients;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
@SpringBootApplication
@EnableMyFeignClients
@MapperScan(value = "com.muyu.saas.mapper")
public class SaasApplication {
public static void main(String[] args) {
SpringApplication.run(SaasApplication.class,args);
}
}

View File

@ -0,0 +1,64 @@
package com.muyu.saas.controller;
import com.muyu.common.core.domain.Result;
import com.muyu.saas.domain.Datasource;
import com.muyu.saas.service.SaasService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("saas")
public class SaaSController {
@Autowired
private SaasService saasService;
/**
*
* @return
*/
@GetMapping("findDatabaseList")
public Result<List<Datasource>> findDatabaseList(){
List<Datasource> list=saasService.list();
return Result.success(list);
};
/**
*
* @param datasource
* @return
*/
@PostMapping("addDatasource")
public Result addDatasource(@RequestBody Datasource datasource){
saasService.save(datasource);
return Result.success("添加成功");
};
@PostMapping("updDatasource")
public Result updDatasource(@RequestBody Datasource datasource){
saasService.updateById(datasource);
return Result.success("修改成功");
}
/**
*
* @param id
* @return
*/
@PostMapping("delDatasource/{id}")
public Result delDatasource(@PathVariable("id") Integer id){
saasService.removeById(id);
return Result.success("删除成功");
}
}

View File

@ -0,0 +1,26 @@
package com.muyu.saas.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "datasource", autoResultMap = true)
public class Datasource {
@TableId(value = "id",type = IdType.AUTO)
private Integer id;
public String firmName;
public String databaseName;
}

View File

@ -0,0 +1,8 @@
package com.muyu.saas.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.saas.domain.Datasource;
public interface SaaSMapper extends BaseMapper<Datasource> {
}

View File

@ -0,0 +1,8 @@
package com.muyu.saas.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.saas.domain.Datasource;
public interface SaasService extends IService<Datasource> {
}

View File

@ -0,0 +1,18 @@
package com.muyu.saas.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.saas.domain.Datasource;
import com.muyu.saas.mapper.SaaSMapper;
import com.muyu.saas.service.SaasService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class SaasServiceImpl extends ServiceImpl<SaaSMapper,Datasource> implements SaasService {
@Autowired
private SaaSMapper saaSMapper;
}

View File

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

View File

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

View File

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

View File

@ -2,9 +2,7 @@
<!DOCTYPE mapper <!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.muyu.cloud.car.mapper.CarMapper"> <mapper namespace="com.muyu.saas.mapper.SaaSMapper">
<select id="selectMyList" resultType="com.muyu.cloud.car.domain.User">
select * from user
</select>
</mapper> </mapper>

View File

@ -15,11 +15,10 @@
<module>cloud-modules-file</module> <module>cloud-modules-file</module>
<module>cloud-modules-template</module> <module>cloud-modules-template</module>
<module>cloud-modules-fence</module> <module>cloud-modules-fence</module>
<module>cloud-modules-car</module>
<module>cloud-modules-wechat</module> <module>cloud-modules-wechat</module>
<module>cloud-modules-breakdown</module> <module>cloud-modules-breakdown</module>
<module>cloud-car</module>
<module>cloud-modules-warn</module> <module>cloud-modules-warn</module>
<module>cloud-saas</module>
</modules> </modules>
<artifactId>cloud-modules</artifactId> <artifactId>cloud-modules</artifactId>