diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/DatasourceController.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/DatasourceController.java
new file mode 100644
index 00000000..b8f3a049
--- /dev/null
+++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/DatasourceController.java
@@ -0,0 +1,69 @@
+package com.cloud.kicc.system.controller;
+
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.cloud.kicc.common.core.api.R;
+import com.cloud.kicc.common.core.constant.AppConstants;
+import com.cloud.kicc.system.api.entity.Datasource;
+import com.cloud.kicc.system.service.IDatasourceService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Arrays;
+
+/**
+ *
+ * 可视化数据源配置表 前端控制器
+ *
+ *
+ * @author wangxiang4
+ * @since 2024-03-01
+ */
+@RestController
+@RequestMapping(AppConstants.APP_SYSTEM + "/datasource")
+@RequiredArgsConstructor
+public class DatasourceController {
+
+ private final IDatasourceService iDatasourceService;
+
+ private LambdaQueryWrapper getQueryWrapper(Datasource datasource) {
+ return new LambdaQueryWrapper()
+ .like(StrUtil.isNotBlank(datasource.getName()), Datasource::getName, datasource.getName())
+ .like(StrUtil.isNotBlank(datasource.getUsername()), Datasource::getUsername, datasource.getUsername())
+ .orderByDesc(Datasource::getCreateTime);
+ }
+
+ @GetMapping("/list")
+ public R list(Page page, Datasource datasource) {
+ IPage result = iDatasourceService.page(page, getQueryWrapper(datasource));
+ return R.ok(result.getRecords(), result.getTotal());
+ }
+
+ @GetMapping("/{id:\\w+}")
+ public R getById(@PathVariable("id") String id) {
+ return R.ok(iDatasourceService.getById(id));
+ }
+
+ @PostMapping("/save")
+ public R save(@RequestBody Datasource datasource) {
+ iDatasourceService.save(datasource);
+ return R.ok();
+ }
+
+ @PutMapping("/update")
+ public R update(@RequestBody Datasource datasource) {
+ iDatasourceService.updateById(datasource);
+ return R.ok();
+ }
+
+ @DeleteMapping("/remove/{id:[\\w,]+}")
+ public R remove(@PathVariable String[] id) {
+ iDatasourceService.removeByIds(Arrays.asList(id));
+ return R.ok();
+ }
+
+}
+
diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/DatasourceMapper.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/DatasourceMapper.java
new file mode 100644
index 00000000..bd6aa53d
--- /dev/null
+++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/DatasourceMapper.java
@@ -0,0 +1,16 @@
+package com.cloud.kicc.system.mapper;
+
+import com.cloud.kicc.system.api.entity.Datasource;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 可视化数据源配置表 Mapper 接口
+ *
+ *
+ * @author wangxiang4
+ * @since 2024-03-01
+ */
+public interface DatasourceMapper extends BaseMapper {
+
+}
diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/IDatasourceService.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/IDatasourceService.java
new file mode 100644
index 00000000..611ee676
--- /dev/null
+++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/IDatasourceService.java
@@ -0,0 +1,16 @@
+package com.cloud.kicc.system.service;
+
+import com.cloud.kicc.system.api.entity.Datasource;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 可视化数据源配置表 服务类
+ *
+ *
+ * @author wangxiang4
+ * @since 2024-03-01
+ */
+public interface IDatasourceService extends IService {
+
+}
diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/DatasourceServiceImpl.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/DatasourceServiceImpl.java
new file mode 100644
index 00000000..f1f84c6a
--- /dev/null
+++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/DatasourceServiceImpl.java
@@ -0,0 +1,22 @@
+package com.cloud.kicc.system.service.impl;
+
+import com.cloud.kicc.system.api.entity.Datasource;
+import com.cloud.kicc.system.mapper.DatasourceMapper;
+import com.cloud.kicc.system.service.IDatasourceService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 可视化数据源配置表 服务实现类
+ *
+ *
+ * @author wangxiang4
+ * @since 2024-03-01
+ */
+@Service
+@RequiredArgsConstructor
+public class DatasourceServiceImpl extends ServiceImpl implements IDatasourceService {
+
+}
diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/DatasourceMapper.xml b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/DatasourceMapper.xml
new file mode 100644
index 00000000..7db19b71
--- /dev/null
+++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/DatasourceMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+