Kaynağa Gözat

租户配置数据库、下拉菜单接口

xuezizhuo 1 yıl önce
ebeveyn
işleme
80e68ff068

+ 4 - 3
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/DataSourceController.java

@@ -34,10 +34,11 @@ public class DataSourceController extends BaseController {
 
         DataSource dataSource = JSON.parseObject(JSON.toJSONString(map.get("dataSource")), DataSource.class);
         Integer tenantId = (Integer)map.get("tenantId");
-        if(dataSourceService.selectDatabaseExist(dataSource.getDatabaseIp(),dataSource.getDatabaseName(),dataSource.getPortNumber())>0){
-            return AjaxResult.error("数据已存在");
+        if(dataSourceService.selectDatabaseExist(dataSource)>0){
+            return AjaxResult.error("数据已存在");
         }
-        return toAjax(dataSourceService.insertDataSource(dataSource,tenantId.longValue()));
+        //return toAjax(dataSourceService.insertDataSource(dataSource,tenantId.longValue()));
+        return dataSourceService.insertDataSource(dataSource,tenantId.longValue());
     }
 
 }

+ 13 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java

@@ -1,6 +1,8 @@
 package com.ruoyi.web.controller.system;
 
 import java.util.List;
+
+import com.ruoyi.common.annotation.Anonymous;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
@@ -139,4 +141,15 @@ public class SysMenuController extends BaseController
         }
         return toAjax(menuService.deleteMenuById(menuId));
     }
+
+    /**
+     * 动态表格获取菜单
+     */
+    @PreAuthorize("@ss.hasPermi('system:menu:list')")
+    @GetMapping("/getMenuList")
+    public AjaxResult getMenuList()
+    {
+        List<SysMenu> menus = menuService.getMenuList();
+        return success(menus);
+    }
 }

+ 1 - 1
ruoyi-system/src/main/java/com/ruoyi/system/mapper/DataSourceMapper.java

@@ -16,7 +16,7 @@ public interface DataSourceMapper {
     /**
      * 查询同一数据源下数据库是否存在
      */
-    int selectDatabaseExist(@Param("databaseIp") String databaseIp,@Param("databaseName") String databaseName,@Param("portNumber") Long portNumber);
+    int selectDatabaseExist(DataSource dataSource);
 
     /**
      * 新增数据源

+ 5 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysMenuMapper.java

@@ -136,4 +136,9 @@ public interface SysMenuMapper
      * @return 结果
      */
     public SysMenu checkMenuNameUnique(@Param("menuName") String menuName, @Param("parentId") Long parentId);
+
+    /**
+     * 动态表格获取菜单
+     */
+    List<SysMenu> getMenuList();
 }

+ 3 - 2
ruoyi-system/src/main/java/com/ruoyi/system/service/IDataSourceService.java

@@ -1,5 +1,6 @@
 package com.ruoyi.system.service;
 
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.entity.DataSource;
 
 public interface IDataSourceService {
@@ -7,12 +8,12 @@ public interface IDataSourceService {
     /**
      * 查询同一数据源下数据库是否存在
      */
-    int selectDatabaseExist(String databaseIp, String databaseName, Long portNumber);
+    int selectDatabaseExist(DataSource dataSource);
 
     /**
      * 绑定数据源,和租户关联
      */
-    int insertDataSource(DataSource dataSource,Long tenantId);
+    AjaxResult insertDataSource(DataSource dataSource, Long tenantId);
 
     /**
      * 根据编号查询数据源

+ 5 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysMenuService.java

@@ -141,4 +141,9 @@ public interface ISysMenuService
      * @return 结果
      */
     public boolean checkMenuNameUnique(SysMenu menu);
+
+    /**
+     * 动态表格菜单列表
+     */
+    public List<SysMenu> getMenuList();
 }

+ 25 - 4
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/DataSourceServiceImpl.java

@@ -1,12 +1,17 @@
 package com.ruoyi.system.service.impl;
 
 
+import com.ruoyi.common.constant.HttpStatus;
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.entity.DataSource;
 import com.ruoyi.common.core.domain.entity.SysTenant;
 import com.ruoyi.system.mapper.DataSourceMapper;
 import com.ruoyi.system.service.IDataSourceService;
 import com.ruoyi.system.service.ISysTenantService;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
 
 import javax.annotation.Resource;
 
@@ -19,19 +24,35 @@ public class DataSourceServiceImpl implements IDataSourceService {
     @Resource
     private ISysTenantService sysTenantService;
 
+    RestTemplate restTemplate = new RestTemplate();
+
+    @Value("${parameter.ip.DATA_ENGINE_INITDATABASE_IP}")
+    public String DATA_ENGINE_INITDATABASE_IP;
+
     @Override
-    public int selectDatabaseExist(String databaseIp, String databaseName, Long portNumber) {
-        return dataSourceMapper.selectDatabaseExist(databaseIp,databaseName,portNumber);
+    public int selectDatabaseExist(DataSource dataSource) {
+        return dataSourceMapper.selectDatabaseExist(dataSource);
     }
 
     @Override
-    public int insertDataSource(DataSource dataSource,Long tenantId) {
+    public AjaxResult insertDataSource(DataSource dataSource,Long tenantId) {
+
+        //调用数据引擎服务初始化数据库接口
+        ResponseEntity<AjaxResult> dataSourceResponseEntity = restTemplate.postForEntity(DATA_ENGINE_INITDATABASE_IP, dataSource, AjaxResult.class);
+        //获取请求状态码
+        int code = (int)dataSourceResponseEntity.getBody().get("code");
+        String msg = (String) dataSourceResponseEntity.getBody().get("msg");
+        if(code == HttpStatus.WARN){
+            return AjaxResult.warn(msg);
+        }
+
         dataSourceMapper.insertDataSource(dataSource);
         //租户绑定数据源
         SysTenant sysTenant = new SysTenant();
         sysTenant.setTenantId(tenantId);
         sysTenant.setDatasourceId(dataSource.getId());
-        return sysTenantService.updateSysTenant(sysTenant);
+        sysTenantService.updateSysTenant(sysTenant);
+        return AjaxResult.success();
     }
 
     @Override

+ 12 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java

@@ -354,6 +354,18 @@ public class SysMenuServiceImpl implements ISysMenuService
         return UserConstants.UNIQUE;
     }
 
+    @Override
+    public List<SysMenu> getMenuList() {
+
+//        List<SysMenu> menuList = null;
+        // 管理员显示所有菜单信息
+//        if (SysUser.isAdmin(userId))
+//        {
+//            menuList = menuMapper.getMenuList();
+//        }
+        return menuMapper.getMenuList();
+    }
+
     /**
      * 获取路由名称
      * 

+ 2 - 1
ruoyi-system/src/main/resources/mapper/system/DataSourceMapper.xml

@@ -31,7 +31,8 @@
     </select>
 
     <select id="selectDatabaseExist" resultType="int">
-        select count(1) from data_source where database_ip = #{databaseIp} and database_name = #{databaseName} and port_number = #{portNumber}
+        select count(1) from data_source where database_ip = #{databaseIp} and database_name = #{databaseName}
+                                           and username = #{username} and port_number = #{portNumber} and database_type = #{databaseType}
     </select>
 
     <insert id="insertDataSource" useGeneratedKeys="true" keyProperty="id">

+ 5 - 0
ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml

@@ -244,4 +244,9 @@
 	    delete from sys_menu where menu_id = #{menuId}
 	</delete>
 
+	<select id="getMenuList" resultMap="SysMenuResult">
+		<include refid="selectMenuVo"></include>
+		where menu_type != 'F'
+	</select>
+
 </mapper>