diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d67ac77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# casic项目 V1.0.0
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot + shiro + mybatis-plus !
+基于casic项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),
+可以直接作为一个后台管理系统的脚手架! 目标 `更简洁`,`更规范`!
+
+
+#### 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket)
+>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+
+
+
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d67ac77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# casic项目 V1.0.0
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot + shiro + mybatis-plus !
+基于casic项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),
+可以直接作为一个后台管理系统的脚手架! 目标 `更简洁`,`更规范`!
+
+
+#### 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket)
+>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
new file mode 100644
index 0000000..180d0a8
--- /dev/null
+++ b/casic-server/pom.xml
@@ -0,0 +1,70 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-xj-connector
+ 1.0.0
+ ../pom.xml
+
+
+ casic-server
+ ${pro.version}
+ jar
+ casic-server
+ casic 的spring boot版本
+
+
+
+
+ com.casic
+ casic-core
+ ${core.version}
+
+
+ com.casic
+ casic-admin-support
+ ${admin.version}
+
+
+
+ com.casic
+ casic-export-support
+ 1.0.0.alpha
+
+
+
+ cn.hutool
+ hutool-all
+ 5.7.2
+
+
+ com.alibaba
+ easyexcel
+ 3.1.0
+
+
+ org.apache.poi
+ poi
+ 4.1.2
+
+
+ org.apache.poi
+ poi-ooxml
+ 4.1.2
+
+
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d67ac77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# casic项目 V1.0.0
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot + shiro + mybatis-plus !
+基于casic项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),
+可以直接作为一个后台管理系统的脚手架! 目标 `更简洁`,`更规范`!
+
+
+#### 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket)
+>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
new file mode 100644
index 0000000..180d0a8
--- /dev/null
+++ b/casic-server/pom.xml
@@ -0,0 +1,70 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-xj-connector
+ 1.0.0
+ ../pom.xml
+
+
+ casic-server
+ ${pro.version}
+ jar
+ casic-server
+ casic 的spring boot版本
+
+
+
+
+ com.casic
+ casic-core
+ ${core.version}
+
+
+ com.casic
+ casic-admin-support
+ ${admin.version}
+
+
+
+ com.casic
+ casic-export-support
+ 1.0.0.alpha
+
+
+
+ cn.hutool
+ hutool-all
+ 5.7.2
+
+
+ com.alibaba
+ easyexcel
+ 3.1.0
+
+
+ org.apache.poi
+ poi
+ 4.1.2
+
+
+ org.apache.poi
+ poi-ooxml
+ 4.1.2
+
+
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java
new file mode 100644
index 0000000..38921fc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java
@@ -0,0 +1,125 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.dto.BusinessReportInfoRequest;
+import com.casic.missiles.modular.system.dto.IdsDTO;
+import com.casic.missiles.modular.system.enums.DictEnum;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+import com.casic.missiles.modular.system.service.IBusinessConnectTestrecordService;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 测试链接记录表控制器
+ *
+ * @author dev
+ * @Date 2023-05-17 11:04:13
+ */
+@Controller
+@RequestMapping("/businessConnectTestrecord")
+public class BusinessConnectTestrecordController extends BaseController {
+
+
+ @Resource
+ private IBusinessConnectTestrecordService businessConnectTestrecordService;
+
+
+ /**
+ * 获取测试链接记录表列表
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object batchDelete(@RequestBody @Valid IdsDTO idsDTO) {
+// Assert.isFalse(cn.hutool.core.util.ObjectUtil.isEmpty(idsDTO.getIds()), () -> {
+// throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+// });
+ return ResponseData.success(businessConnectTestrecordService.deleteBatchIds(idsDTO.getIds()));
+ }
+
+ /**
+ * 获取测试链接记录表分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper queryWrapper = new EntityWrapper<>();
+ queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime());
+ queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime());
+ queryWrapper.orderBy("CREATE_TIME", false);
+ page = businessConnectTestrecordService.selectPage(page, queryWrapper);
+ List businessConnectTestrecordList = page.getRecords();
+ businessConnectTestrecordList.forEach(businessConnectTesrecord -> {
+ businessConnectTesrecord.setTestResult(DictEnum.TEST_STATUS.equals(businessConnectTesrecord.getTestResult()) ?
+ DictEnum.TEST_PASSED : DictEnum.TEST_FAILED);
+ });
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增测试链接记录表
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(@RequestBody @Valid BusinessConnectTestrecord businessConnectTestrecord) {
+// Assert.isFalse(ObjectUtil.isEmpty(businessConnectTestrecord.getTestUrl()), () -> {
+// throw new BusinessException(BusinessExceptionEnum.TEST_URL_NULL);
+// });
+ return businessConnectTestrecordService.saveBusinessConnectTestRecord(businessConnectTestrecord.getTestPlatform(), businessConnectTestrecord.getTestUrl()) ?
+ ResponseData.success() : ResponseData.error("save failed");
+ }
+
+ /**
+ * 批量导入测试
+ */
+ @RequestMapping(value = "/fileImport", method = RequestMethod.POST)
+ @ResponseBody
+ public Object fileImport(@RequestParam("file") MultipartFile file) {
+// Assert.isFalse(Objects.isNull(file), () -> {
+// throw new BusinessException(BusinessExceptionEnum.FILE_NULL);
+// });
+ List> urlList = businessConnectTestrecordService.parseSourceFile(file);
+ return businessConnectTestrecordService.saveBatchBusinessConnectTestRecord(urlList) ?
+ ResponseData.success() : ResponseData.error("save failed");
+ }
+
+
+ /**
+ * 批量导出测试记录
+ */
+ @RequestMapping(value = "/fileExport")
+ @ResponseBody
+ public void fileExport(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest, HttpServletResponse response) {
+ EntityWrapper queryWrapper = new EntityWrapper<>();
+ queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime());
+ queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime());
+ queryWrapper.orderBy("CREATE_TIME",false);
+ businessConnectTestrecordService.exportUsersToExcel(businessConnectTestrecordService.selectList(queryWrapper), response);
+ }
+
+
+ /**
+ * 修改测试链接记录表
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BusinessConnectTestrecord businessConnectTestrecord) {
+ businessConnectTestrecordService.updateById(businessConnectTestrecord);
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d67ac77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# casic项目 V1.0.0
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot + shiro + mybatis-plus !
+基于casic项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),
+可以直接作为一个后台管理系统的脚手架! 目标 `更简洁`,`更规范`!
+
+
+#### 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket)
+>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
new file mode 100644
index 0000000..180d0a8
--- /dev/null
+++ b/casic-server/pom.xml
@@ -0,0 +1,70 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-xj-connector
+ 1.0.0
+ ../pom.xml
+
+
+ casic-server
+ ${pro.version}
+ jar
+ casic-server
+ casic 的spring boot版本
+
+
+
+
+ com.casic
+ casic-core
+ ${core.version}
+
+
+ com.casic
+ casic-admin-support
+ ${admin.version}
+
+
+
+ com.casic
+ casic-export-support
+ 1.0.0.alpha
+
+
+
+ cn.hutool
+ hutool-all
+ 5.7.2
+
+
+ com.alibaba
+ easyexcel
+ 3.1.0
+
+
+ org.apache.poi
+ poi
+ 4.1.2
+
+
+ org.apache.poi
+ poi-ooxml
+ 4.1.2
+
+
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java
new file mode 100644
index 0000000..38921fc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java
@@ -0,0 +1,125 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.dto.BusinessReportInfoRequest;
+import com.casic.missiles.modular.system.dto.IdsDTO;
+import com.casic.missiles.modular.system.enums.DictEnum;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+import com.casic.missiles.modular.system.service.IBusinessConnectTestrecordService;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 测试链接记录表控制器
+ *
+ * @author dev
+ * @Date 2023-05-17 11:04:13
+ */
+@Controller
+@RequestMapping("/businessConnectTestrecord")
+public class BusinessConnectTestrecordController extends BaseController {
+
+
+ @Resource
+ private IBusinessConnectTestrecordService businessConnectTestrecordService;
+
+
+ /**
+ * 获取测试链接记录表列表
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object batchDelete(@RequestBody @Valid IdsDTO idsDTO) {
+// Assert.isFalse(cn.hutool.core.util.ObjectUtil.isEmpty(idsDTO.getIds()), () -> {
+// throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+// });
+ return ResponseData.success(businessConnectTestrecordService.deleteBatchIds(idsDTO.getIds()));
+ }
+
+ /**
+ * 获取测试链接记录表分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper queryWrapper = new EntityWrapper<>();
+ queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime());
+ queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime());
+ queryWrapper.orderBy("CREATE_TIME", false);
+ page = businessConnectTestrecordService.selectPage(page, queryWrapper);
+ List businessConnectTestrecordList = page.getRecords();
+ businessConnectTestrecordList.forEach(businessConnectTesrecord -> {
+ businessConnectTesrecord.setTestResult(DictEnum.TEST_STATUS.equals(businessConnectTesrecord.getTestResult()) ?
+ DictEnum.TEST_PASSED : DictEnum.TEST_FAILED);
+ });
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增测试链接记录表
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(@RequestBody @Valid BusinessConnectTestrecord businessConnectTestrecord) {
+// Assert.isFalse(ObjectUtil.isEmpty(businessConnectTestrecord.getTestUrl()), () -> {
+// throw new BusinessException(BusinessExceptionEnum.TEST_URL_NULL);
+// });
+ return businessConnectTestrecordService.saveBusinessConnectTestRecord(businessConnectTestrecord.getTestPlatform(), businessConnectTestrecord.getTestUrl()) ?
+ ResponseData.success() : ResponseData.error("save failed");
+ }
+
+ /**
+ * 批量导入测试
+ */
+ @RequestMapping(value = "/fileImport", method = RequestMethod.POST)
+ @ResponseBody
+ public Object fileImport(@RequestParam("file") MultipartFile file) {
+// Assert.isFalse(Objects.isNull(file), () -> {
+// throw new BusinessException(BusinessExceptionEnum.FILE_NULL);
+// });
+ List> urlList = businessConnectTestrecordService.parseSourceFile(file);
+ return businessConnectTestrecordService.saveBatchBusinessConnectTestRecord(urlList) ?
+ ResponseData.success() : ResponseData.error("save failed");
+ }
+
+
+ /**
+ * 批量导出测试记录
+ */
+ @RequestMapping(value = "/fileExport")
+ @ResponseBody
+ public void fileExport(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest, HttpServletResponse response) {
+ EntityWrapper queryWrapper = new EntityWrapper<>();
+ queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime());
+ queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime());
+ queryWrapper.orderBy("CREATE_TIME",false);
+ businessConnectTestrecordService.exportUsersToExcel(businessConnectTestrecordService.selectList(queryWrapper), response);
+ }
+
+
+ /**
+ * 修改测试链接记录表
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BusinessConnectTestrecord businessConnectTestrecord) {
+ businessConnectTestrecordService.updateById(businessConnectTestrecord);
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java
new file mode 100644
index 0000000..5a00c42
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.response.ResponseData;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @ClassName DemoController
+ * @Description TODO
+ * @Author lenovo
+ * @Date 2020/6/13 15:38
+ * @Version 1.0
+ */
+@RestController
+@RequestMapping("/demo")
+public class DemoController {
+ /**
+ * 获取mockToken
+ */
+ @PostMapping("/list")
+ @ResponseBody
+ public Object list(){
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d67ac77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# casic项目 V1.0.0
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot + shiro + mybatis-plus !
+基于casic项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),
+可以直接作为一个后台管理系统的脚手架! 目标 `更简洁`,`更规范`!
+
+
+#### 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket)
+>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
new file mode 100644
index 0000000..180d0a8
--- /dev/null
+++ b/casic-server/pom.xml
@@ -0,0 +1,70 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-xj-connector
+ 1.0.0
+ ../pom.xml
+
+
+ casic-server
+ ${pro.version}
+ jar
+ casic-server
+ casic 的spring boot版本
+
+
+
+
+ com.casic
+ casic-core
+ ${core.version}
+
+
+ com.casic
+ casic-admin-support
+ ${admin.version}
+
+
+
+ com.casic
+ casic-export-support
+ 1.0.0.alpha
+
+
+
+ cn.hutool
+ hutool-all
+ 5.7.2
+
+
+ com.alibaba
+ easyexcel
+ 3.1.0
+
+
+ org.apache.poi
+ poi
+ 4.1.2
+
+
+ org.apache.poi
+ poi-ooxml
+ 4.1.2
+
+
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java
new file mode 100644
index 0000000..38921fc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java
@@ -0,0 +1,125 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.dto.BusinessReportInfoRequest;
+import com.casic.missiles.modular.system.dto.IdsDTO;
+import com.casic.missiles.modular.system.enums.DictEnum;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+import com.casic.missiles.modular.system.service.IBusinessConnectTestrecordService;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 测试链接记录表控制器
+ *
+ * @author dev
+ * @Date 2023-05-17 11:04:13
+ */
+@Controller
+@RequestMapping("/businessConnectTestrecord")
+public class BusinessConnectTestrecordController extends BaseController {
+
+
+ @Resource
+ private IBusinessConnectTestrecordService businessConnectTestrecordService;
+
+
+ /**
+ * 获取测试链接记录表列表
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object batchDelete(@RequestBody @Valid IdsDTO idsDTO) {
+// Assert.isFalse(cn.hutool.core.util.ObjectUtil.isEmpty(idsDTO.getIds()), () -> {
+// throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+// });
+ return ResponseData.success(businessConnectTestrecordService.deleteBatchIds(idsDTO.getIds()));
+ }
+
+ /**
+ * 获取测试链接记录表分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper queryWrapper = new EntityWrapper<>();
+ queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime());
+ queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime());
+ queryWrapper.orderBy("CREATE_TIME", false);
+ page = businessConnectTestrecordService.selectPage(page, queryWrapper);
+ List businessConnectTestrecordList = page.getRecords();
+ businessConnectTestrecordList.forEach(businessConnectTesrecord -> {
+ businessConnectTesrecord.setTestResult(DictEnum.TEST_STATUS.equals(businessConnectTesrecord.getTestResult()) ?
+ DictEnum.TEST_PASSED : DictEnum.TEST_FAILED);
+ });
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增测试链接记录表
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(@RequestBody @Valid BusinessConnectTestrecord businessConnectTestrecord) {
+// Assert.isFalse(ObjectUtil.isEmpty(businessConnectTestrecord.getTestUrl()), () -> {
+// throw new BusinessException(BusinessExceptionEnum.TEST_URL_NULL);
+// });
+ return businessConnectTestrecordService.saveBusinessConnectTestRecord(businessConnectTestrecord.getTestPlatform(), businessConnectTestrecord.getTestUrl()) ?
+ ResponseData.success() : ResponseData.error("save failed");
+ }
+
+ /**
+ * 批量导入测试
+ */
+ @RequestMapping(value = "/fileImport", method = RequestMethod.POST)
+ @ResponseBody
+ public Object fileImport(@RequestParam("file") MultipartFile file) {
+// Assert.isFalse(Objects.isNull(file), () -> {
+// throw new BusinessException(BusinessExceptionEnum.FILE_NULL);
+// });
+ List> urlList = businessConnectTestrecordService.parseSourceFile(file);
+ return businessConnectTestrecordService.saveBatchBusinessConnectTestRecord(urlList) ?
+ ResponseData.success() : ResponseData.error("save failed");
+ }
+
+
+ /**
+ * 批量导出测试记录
+ */
+ @RequestMapping(value = "/fileExport")
+ @ResponseBody
+ public void fileExport(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest, HttpServletResponse response) {
+ EntityWrapper queryWrapper = new EntityWrapper<>();
+ queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime());
+ queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime());
+ queryWrapper.orderBy("CREATE_TIME",false);
+ businessConnectTestrecordService.exportUsersToExcel(businessConnectTestrecordService.selectList(queryWrapper), response);
+ }
+
+
+ /**
+ * 修改测试链接记录表
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BusinessConnectTestrecord businessConnectTestrecord) {
+ businessConnectTestrecordService.updateById(businessConnectTestrecord);
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java
new file mode 100644
index 0000000..5a00c42
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.response.ResponseData;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @ClassName DemoController
+ * @Description TODO
+ * @Author lenovo
+ * @Date 2020/6/13 15:38
+ * @Version 1.0
+ */
+@RestController
+@RequestMapping("/demo")
+public class DemoController {
+ /**
+ * 获取mockToken
+ */
+ @PostMapping("/list")
+ @ResponseBody
+ public Object list(){
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java
new file mode 100644
index 0000000..08482c1
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java
@@ -0,0 +1,71 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+/**
+ * 控制器
+ *
+ * @author dev123
+ * @Date 2018-11-19 13:15:14
+ */
+@RestController
+public class TemplateController extends BaseController {
+ private static Logger logger = LoggerFactory.getLogger(TemplateController.class);
+ @Value("${casic.file-down-path}")
+ private String downloadPath;
+
+
+ /**
+ * 文件模板下载
+ */
+ @GetMapping("/template/download")
+ public void doPost(@RequestParam("filename") String filename, HttpServletResponse response)
+ throws ServletException, IOException {
+ logger.info(downloadPath);
+ if (downloadPath.startsWith("/")) {
+ downloadPath = downloadPath.substring(1);
+ }
+ File file = new File(downloadPath, filename);
+ // 获取文件名
+ String fileName = null;
+ if (filename.contains("/")) {
+ fileName = filename.substring(filename.lastIndexOf("/") + 1);
+ } else {
+ fileName = filename;
+ }
+
+ // 设置以流的形式下载文件,这样可以实现任意格式的文件下载
+ response.setContentType("application/octet-stream");
+ response.addHeader("Content-Disposition", " attachment;filename=" + fileName);
+ response.setContentLength((int) file.length());
+
+ FileInputStream fis = null;
+ try {
+ fis = new FileInputStream(file);
+ byte[] buffer = new byte[1024];
+ int readTmp = 0;
+ while ((readTmp = fis.read(buffer)) != -1) {
+ response.getOutputStream().write(buffer, 0, readTmp);
+ }
+ } catch (Exception e) {
+ logger.info(e.getMessage());
+ e.printStackTrace();
+ } finally {
+ response.getOutputStream().flush();
+ response.getOutputStream().close();
+ fis.close();
+ }
+ }
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d67ac77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# casic项目 V1.0.0
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot + shiro + mybatis-plus !
+基于casic项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),
+可以直接作为一个后台管理系统的脚手架! 目标 `更简洁`,`更规范`!
+
+
+#### 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket)
+>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
new file mode 100644
index 0000000..180d0a8
--- /dev/null
+++ b/casic-server/pom.xml
@@ -0,0 +1,70 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-xj-connector
+ 1.0.0
+ ../pom.xml
+
+
+ casic-server
+ ${pro.version}
+ jar
+ casic-server
+ casic 的spring boot版本
+
+
+
+
+ com.casic
+ casic-core
+ ${core.version}
+
+
+ com.casic
+ casic-admin-support
+ ${admin.version}
+
+
+
+ com.casic
+ casic-export-support
+ 1.0.0.alpha
+
+
+
+ cn.hutool
+ hutool-all
+ 5.7.2
+
+
+ com.alibaba
+ easyexcel
+ 3.1.0
+
+
+ org.apache.poi
+ poi
+ 4.1.2
+
+
+ org.apache.poi
+ poi-ooxml
+ 4.1.2
+
+
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java
new file mode 100644
index 0000000..38921fc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java
@@ -0,0 +1,125 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.dto.BusinessReportInfoRequest;
+import com.casic.missiles.modular.system.dto.IdsDTO;
+import com.casic.missiles.modular.system.enums.DictEnum;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+import com.casic.missiles.modular.system.service.IBusinessConnectTestrecordService;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 测试链接记录表控制器
+ *
+ * @author dev
+ * @Date 2023-05-17 11:04:13
+ */
+@Controller
+@RequestMapping("/businessConnectTestrecord")
+public class BusinessConnectTestrecordController extends BaseController {
+
+
+ @Resource
+ private IBusinessConnectTestrecordService businessConnectTestrecordService;
+
+
+ /**
+ * 获取测试链接记录表列表
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object batchDelete(@RequestBody @Valid IdsDTO idsDTO) {
+// Assert.isFalse(cn.hutool.core.util.ObjectUtil.isEmpty(idsDTO.getIds()), () -> {
+// throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+// });
+ return ResponseData.success(businessConnectTestrecordService.deleteBatchIds(idsDTO.getIds()));
+ }
+
+ /**
+ * 获取测试链接记录表分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper queryWrapper = new EntityWrapper<>();
+ queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime());
+ queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime());
+ queryWrapper.orderBy("CREATE_TIME", false);
+ page = businessConnectTestrecordService.selectPage(page, queryWrapper);
+ List businessConnectTestrecordList = page.getRecords();
+ businessConnectTestrecordList.forEach(businessConnectTesrecord -> {
+ businessConnectTesrecord.setTestResult(DictEnum.TEST_STATUS.equals(businessConnectTesrecord.getTestResult()) ?
+ DictEnum.TEST_PASSED : DictEnum.TEST_FAILED);
+ });
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增测试链接记录表
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(@RequestBody @Valid BusinessConnectTestrecord businessConnectTestrecord) {
+// Assert.isFalse(ObjectUtil.isEmpty(businessConnectTestrecord.getTestUrl()), () -> {
+// throw new BusinessException(BusinessExceptionEnum.TEST_URL_NULL);
+// });
+ return businessConnectTestrecordService.saveBusinessConnectTestRecord(businessConnectTestrecord.getTestPlatform(), businessConnectTestrecord.getTestUrl()) ?
+ ResponseData.success() : ResponseData.error("save failed");
+ }
+
+ /**
+ * 批量导入测试
+ */
+ @RequestMapping(value = "/fileImport", method = RequestMethod.POST)
+ @ResponseBody
+ public Object fileImport(@RequestParam("file") MultipartFile file) {
+// Assert.isFalse(Objects.isNull(file), () -> {
+// throw new BusinessException(BusinessExceptionEnum.FILE_NULL);
+// });
+ List> urlList = businessConnectTestrecordService.parseSourceFile(file);
+ return businessConnectTestrecordService.saveBatchBusinessConnectTestRecord(urlList) ?
+ ResponseData.success() : ResponseData.error("save failed");
+ }
+
+
+ /**
+ * 批量导出测试记录
+ */
+ @RequestMapping(value = "/fileExport")
+ @ResponseBody
+ public void fileExport(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest, HttpServletResponse response) {
+ EntityWrapper queryWrapper = new EntityWrapper<>();
+ queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime());
+ queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime());
+ queryWrapper.orderBy("CREATE_TIME",false);
+ businessConnectTestrecordService.exportUsersToExcel(businessConnectTestrecordService.selectList(queryWrapper), response);
+ }
+
+
+ /**
+ * 修改测试链接记录表
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BusinessConnectTestrecord businessConnectTestrecord) {
+ businessConnectTestrecordService.updateById(businessConnectTestrecord);
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java
new file mode 100644
index 0000000..5a00c42
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.response.ResponseData;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @ClassName DemoController
+ * @Description TODO
+ * @Author lenovo
+ * @Date 2020/6/13 15:38
+ * @Version 1.0
+ */
+@RestController
+@RequestMapping("/demo")
+public class DemoController {
+ /**
+ * 获取mockToken
+ */
+ @PostMapping("/list")
+ @ResponseBody
+ public Object list(){
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java
new file mode 100644
index 0000000..08482c1
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java
@@ -0,0 +1,71 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+/**
+ * 控制器
+ *
+ * @author dev123
+ * @Date 2018-11-19 13:15:14
+ */
+@RestController
+public class TemplateController extends BaseController {
+ private static Logger logger = LoggerFactory.getLogger(TemplateController.class);
+ @Value("${casic.file-down-path}")
+ private String downloadPath;
+
+
+ /**
+ * 文件模板下载
+ */
+ @GetMapping("/template/download")
+ public void doPost(@RequestParam("filename") String filename, HttpServletResponse response)
+ throws ServletException, IOException {
+ logger.info(downloadPath);
+ if (downloadPath.startsWith("/")) {
+ downloadPath = downloadPath.substring(1);
+ }
+ File file = new File(downloadPath, filename);
+ // 获取文件名
+ String fileName = null;
+ if (filename.contains("/")) {
+ fileName = filename.substring(filename.lastIndexOf("/") + 1);
+ } else {
+ fileName = filename;
+ }
+
+ // 设置以流的形式下载文件,这样可以实现任意格式的文件下载
+ response.setContentType("application/octet-stream");
+ response.addHeader("Content-Disposition", " attachment;filename=" + fileName);
+ response.setContentLength((int) file.length());
+
+ FileInputStream fis = null;
+ try {
+ fis = new FileInputStream(file);
+ byte[] buffer = new byte[1024];
+ int readTmp = 0;
+ while ((readTmp = fis.read(buffer)) != -1) {
+ response.getOutputStream().write(buffer, 0, readTmp);
+ }
+ } catch (Exception e) {
+ logger.info(e.getMessage());
+ e.printStackTrace();
+ } finally {
+ response.getOutputStream().flush();
+ response.getOutputStream().close();
+ fis.close();
+ }
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusinessConnectTestrecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusinessConnectTestrecordMapper.java
new file mode 100644
index 0000000..d787992
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusinessConnectTestrecordMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+
+/**
+ *
+ * 测试链接记录 Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2023-05-17
+ */
+public interface BusinessConnectTestrecordMapper extends BaseMapper {
+
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d67ac77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# casic项目 V1.0.0
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot + shiro + mybatis-plus !
+基于casic项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),
+可以直接作为一个后台管理系统的脚手架! 目标 `更简洁`,`更规范`!
+
+
+#### 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket)
+>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
new file mode 100644
index 0000000..180d0a8
--- /dev/null
+++ b/casic-server/pom.xml
@@ -0,0 +1,70 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-xj-connector
+ 1.0.0
+ ../pom.xml
+
+
+ casic-server
+ ${pro.version}
+ jar
+ casic-server
+ casic 的spring boot版本
+
+
+
+
+ com.casic
+ casic-core
+ ${core.version}
+
+
+ com.casic
+ casic-admin-support
+ ${admin.version}
+
+
+
+ com.casic
+ casic-export-support
+ 1.0.0.alpha
+
+
+
+ cn.hutool
+ hutool-all
+ 5.7.2
+
+
+ com.alibaba
+ easyexcel
+ 3.1.0
+
+
+ org.apache.poi
+ poi
+ 4.1.2
+
+
+ org.apache.poi
+ poi-ooxml
+ 4.1.2
+
+
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java
new file mode 100644
index 0000000..38921fc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java
@@ -0,0 +1,125 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.dto.BusinessReportInfoRequest;
+import com.casic.missiles.modular.system.dto.IdsDTO;
+import com.casic.missiles.modular.system.enums.DictEnum;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+import com.casic.missiles.modular.system.service.IBusinessConnectTestrecordService;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 测试链接记录表控制器
+ *
+ * @author dev
+ * @Date 2023-05-17 11:04:13
+ */
+@Controller
+@RequestMapping("/businessConnectTestrecord")
+public class BusinessConnectTestrecordController extends BaseController {
+
+
+ @Resource
+ private IBusinessConnectTestrecordService businessConnectTestrecordService;
+
+
+ /**
+ * 获取测试链接记录表列表
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object batchDelete(@RequestBody @Valid IdsDTO idsDTO) {
+// Assert.isFalse(cn.hutool.core.util.ObjectUtil.isEmpty(idsDTO.getIds()), () -> {
+// throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+// });
+ return ResponseData.success(businessConnectTestrecordService.deleteBatchIds(idsDTO.getIds()));
+ }
+
+ /**
+ * 获取测试链接记录表分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper queryWrapper = new EntityWrapper<>();
+ queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime());
+ queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime());
+ queryWrapper.orderBy("CREATE_TIME", false);
+ page = businessConnectTestrecordService.selectPage(page, queryWrapper);
+ List businessConnectTestrecordList = page.getRecords();
+ businessConnectTestrecordList.forEach(businessConnectTesrecord -> {
+ businessConnectTesrecord.setTestResult(DictEnum.TEST_STATUS.equals(businessConnectTesrecord.getTestResult()) ?
+ DictEnum.TEST_PASSED : DictEnum.TEST_FAILED);
+ });
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增测试链接记录表
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(@RequestBody @Valid BusinessConnectTestrecord businessConnectTestrecord) {
+// Assert.isFalse(ObjectUtil.isEmpty(businessConnectTestrecord.getTestUrl()), () -> {
+// throw new BusinessException(BusinessExceptionEnum.TEST_URL_NULL);
+// });
+ return businessConnectTestrecordService.saveBusinessConnectTestRecord(businessConnectTestrecord.getTestPlatform(), businessConnectTestrecord.getTestUrl()) ?
+ ResponseData.success() : ResponseData.error("save failed");
+ }
+
+ /**
+ * 批量导入测试
+ */
+ @RequestMapping(value = "/fileImport", method = RequestMethod.POST)
+ @ResponseBody
+ public Object fileImport(@RequestParam("file") MultipartFile file) {
+// Assert.isFalse(Objects.isNull(file), () -> {
+// throw new BusinessException(BusinessExceptionEnum.FILE_NULL);
+// });
+ List> urlList = businessConnectTestrecordService.parseSourceFile(file);
+ return businessConnectTestrecordService.saveBatchBusinessConnectTestRecord(urlList) ?
+ ResponseData.success() : ResponseData.error("save failed");
+ }
+
+
+ /**
+ * 批量导出测试记录
+ */
+ @RequestMapping(value = "/fileExport")
+ @ResponseBody
+ public void fileExport(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest, HttpServletResponse response) {
+ EntityWrapper queryWrapper = new EntityWrapper<>();
+ queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime());
+ queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime());
+ queryWrapper.orderBy("CREATE_TIME",false);
+ businessConnectTestrecordService.exportUsersToExcel(businessConnectTestrecordService.selectList(queryWrapper), response);
+ }
+
+
+ /**
+ * 修改测试链接记录表
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BusinessConnectTestrecord businessConnectTestrecord) {
+ businessConnectTestrecordService.updateById(businessConnectTestrecord);
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java
new file mode 100644
index 0000000..5a00c42
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.response.ResponseData;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @ClassName DemoController
+ * @Description TODO
+ * @Author lenovo
+ * @Date 2020/6/13 15:38
+ * @Version 1.0
+ */
+@RestController
+@RequestMapping("/demo")
+public class DemoController {
+ /**
+ * 获取mockToken
+ */
+ @PostMapping("/list")
+ @ResponseBody
+ public Object list(){
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java
new file mode 100644
index 0000000..08482c1
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java
@@ -0,0 +1,71 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+/**
+ * 控制器
+ *
+ * @author dev123
+ * @Date 2018-11-19 13:15:14
+ */
+@RestController
+public class TemplateController extends BaseController {
+ private static Logger logger = LoggerFactory.getLogger(TemplateController.class);
+ @Value("${casic.file-down-path}")
+ private String downloadPath;
+
+
+ /**
+ * 文件模板下载
+ */
+ @GetMapping("/template/download")
+ public void doPost(@RequestParam("filename") String filename, HttpServletResponse response)
+ throws ServletException, IOException {
+ logger.info(downloadPath);
+ if (downloadPath.startsWith("/")) {
+ downloadPath = downloadPath.substring(1);
+ }
+ File file = new File(downloadPath, filename);
+ // 获取文件名
+ String fileName = null;
+ if (filename.contains("/")) {
+ fileName = filename.substring(filename.lastIndexOf("/") + 1);
+ } else {
+ fileName = filename;
+ }
+
+ // 设置以流的形式下载文件,这样可以实现任意格式的文件下载
+ response.setContentType("application/octet-stream");
+ response.addHeader("Content-Disposition", " attachment;filename=" + fileName);
+ response.setContentLength((int) file.length());
+
+ FileInputStream fis = null;
+ try {
+ fis = new FileInputStream(file);
+ byte[] buffer = new byte[1024];
+ int readTmp = 0;
+ while ((readTmp = fis.read(buffer)) != -1) {
+ response.getOutputStream().write(buffer, 0, readTmp);
+ }
+ } catch (Exception e) {
+ logger.info(e.getMessage());
+ e.printStackTrace();
+ } finally {
+ response.getOutputStream().flush();
+ response.getOutputStream().close();
+ fis.close();
+ }
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusinessConnectTestrecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusinessConnectTestrecordMapper.java
new file mode 100644
index 0000000..d787992
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusinessConnectTestrecordMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+
+/**
+ *
+ * 测试链接记录 Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2023-05-17
+ */
+public interface BusinessConnectTestrecordMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusinessConnectTestrecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusinessConnectTestrecordMapper.xml
new file mode 100644
index 0000000..0d02de0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusinessConnectTestrecordMapper.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, TEST_PLATFORM AS testPlatform, TEST_URL AS testUrl, TEST_RESULT AS testResult, TEST_TIME AS testTime, CREATE_TIME AS createTime, DESCRIPTION AS description
+
+
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d67ac77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# casic项目 V1.0.0
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot + shiro + mybatis-plus !
+基于casic项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),
+可以直接作为一个后台管理系统的脚手架! 目标 `更简洁`,`更规范`!
+
+
+#### 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket)
+>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
new file mode 100644
index 0000000..180d0a8
--- /dev/null
+++ b/casic-server/pom.xml
@@ -0,0 +1,70 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-xj-connector
+ 1.0.0
+ ../pom.xml
+
+
+ casic-server
+ ${pro.version}
+ jar
+ casic-server
+ casic 的spring boot版本
+
+
+
+
+ com.casic
+ casic-core
+ ${core.version}
+
+
+ com.casic
+ casic-admin-support
+ ${admin.version}
+
+
+
+ com.casic
+ casic-export-support
+ 1.0.0.alpha
+
+
+
+ cn.hutool
+ hutool-all
+ 5.7.2
+
+
+ com.alibaba
+ easyexcel
+ 3.1.0
+
+
+ org.apache.poi
+ poi
+ 4.1.2
+
+
+ org.apache.poi
+ poi-ooxml
+ 4.1.2
+
+
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java
new file mode 100644
index 0000000..38921fc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java
@@ -0,0 +1,125 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.dto.BusinessReportInfoRequest;
+import com.casic.missiles.modular.system.dto.IdsDTO;
+import com.casic.missiles.modular.system.enums.DictEnum;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+import com.casic.missiles.modular.system.service.IBusinessConnectTestrecordService;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 测试链接记录表控制器
+ *
+ * @author dev
+ * @Date 2023-05-17 11:04:13
+ */
+@Controller
+@RequestMapping("/businessConnectTestrecord")
+public class BusinessConnectTestrecordController extends BaseController {
+
+
+ @Resource
+ private IBusinessConnectTestrecordService businessConnectTestrecordService;
+
+
+ /**
+ * 获取测试链接记录表列表
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object batchDelete(@RequestBody @Valid IdsDTO idsDTO) {
+// Assert.isFalse(cn.hutool.core.util.ObjectUtil.isEmpty(idsDTO.getIds()), () -> {
+// throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+// });
+ return ResponseData.success(businessConnectTestrecordService.deleteBatchIds(idsDTO.getIds()));
+ }
+
+ /**
+ * 获取测试链接记录表分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper queryWrapper = new EntityWrapper<>();
+ queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime());
+ queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime());
+ queryWrapper.orderBy("CREATE_TIME", false);
+ page = businessConnectTestrecordService.selectPage(page, queryWrapper);
+ List businessConnectTestrecordList = page.getRecords();
+ businessConnectTestrecordList.forEach(businessConnectTesrecord -> {
+ businessConnectTesrecord.setTestResult(DictEnum.TEST_STATUS.equals(businessConnectTesrecord.getTestResult()) ?
+ DictEnum.TEST_PASSED : DictEnum.TEST_FAILED);
+ });
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增测试链接记录表
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(@RequestBody @Valid BusinessConnectTestrecord businessConnectTestrecord) {
+// Assert.isFalse(ObjectUtil.isEmpty(businessConnectTestrecord.getTestUrl()), () -> {
+// throw new BusinessException(BusinessExceptionEnum.TEST_URL_NULL);
+// });
+ return businessConnectTestrecordService.saveBusinessConnectTestRecord(businessConnectTestrecord.getTestPlatform(), businessConnectTestrecord.getTestUrl()) ?
+ ResponseData.success() : ResponseData.error("save failed");
+ }
+
+ /**
+ * 批量导入测试
+ */
+ @RequestMapping(value = "/fileImport", method = RequestMethod.POST)
+ @ResponseBody
+ public Object fileImport(@RequestParam("file") MultipartFile file) {
+// Assert.isFalse(Objects.isNull(file), () -> {
+// throw new BusinessException(BusinessExceptionEnum.FILE_NULL);
+// });
+ List> urlList = businessConnectTestrecordService.parseSourceFile(file);
+ return businessConnectTestrecordService.saveBatchBusinessConnectTestRecord(urlList) ?
+ ResponseData.success() : ResponseData.error("save failed");
+ }
+
+
+ /**
+ * 批量导出测试记录
+ */
+ @RequestMapping(value = "/fileExport")
+ @ResponseBody
+ public void fileExport(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest, HttpServletResponse response) {
+ EntityWrapper queryWrapper = new EntityWrapper<>();
+ queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime());
+ queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime());
+ queryWrapper.orderBy("CREATE_TIME",false);
+ businessConnectTestrecordService.exportUsersToExcel(businessConnectTestrecordService.selectList(queryWrapper), response);
+ }
+
+
+ /**
+ * 修改测试链接记录表
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BusinessConnectTestrecord businessConnectTestrecord) {
+ businessConnectTestrecordService.updateById(businessConnectTestrecord);
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java
new file mode 100644
index 0000000..5a00c42
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.response.ResponseData;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @ClassName DemoController
+ * @Description TODO
+ * @Author lenovo
+ * @Date 2020/6/13 15:38
+ * @Version 1.0
+ */
+@RestController
+@RequestMapping("/demo")
+public class DemoController {
+ /**
+ * 获取mockToken
+ */
+ @PostMapping("/list")
+ @ResponseBody
+ public Object list(){
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java
new file mode 100644
index 0000000..08482c1
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java
@@ -0,0 +1,71 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+/**
+ * 控制器
+ *
+ * @author dev123
+ * @Date 2018-11-19 13:15:14
+ */
+@RestController
+public class TemplateController extends BaseController {
+ private static Logger logger = LoggerFactory.getLogger(TemplateController.class);
+ @Value("${casic.file-down-path}")
+ private String downloadPath;
+
+
+ /**
+ * 文件模板下载
+ */
+ @GetMapping("/template/download")
+ public void doPost(@RequestParam("filename") String filename, HttpServletResponse response)
+ throws ServletException, IOException {
+ logger.info(downloadPath);
+ if (downloadPath.startsWith("/")) {
+ downloadPath = downloadPath.substring(1);
+ }
+ File file = new File(downloadPath, filename);
+ // 获取文件名
+ String fileName = null;
+ if (filename.contains("/")) {
+ fileName = filename.substring(filename.lastIndexOf("/") + 1);
+ } else {
+ fileName = filename;
+ }
+
+ // 设置以流的形式下载文件,这样可以实现任意格式的文件下载
+ response.setContentType("application/octet-stream");
+ response.addHeader("Content-Disposition", " attachment;filename=" + fileName);
+ response.setContentLength((int) file.length());
+
+ FileInputStream fis = null;
+ try {
+ fis = new FileInputStream(file);
+ byte[] buffer = new byte[1024];
+ int readTmp = 0;
+ while ((readTmp = fis.read(buffer)) != -1) {
+ response.getOutputStream().write(buffer, 0, readTmp);
+ }
+ } catch (Exception e) {
+ logger.info(e.getMessage());
+ e.printStackTrace();
+ } finally {
+ response.getOutputStream().flush();
+ response.getOutputStream().close();
+ fis.close();
+ }
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusinessConnectTestrecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusinessConnectTestrecordMapper.java
new file mode 100644
index 0000000..d787992
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusinessConnectTestrecordMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+
+/**
+ *
+ * 测试链接记录 Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2023-05-17
+ */
+public interface BusinessConnectTestrecordMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusinessConnectTestrecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusinessConnectTestrecordMapper.xml
new file mode 100644
index 0000000..0d02de0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusinessConnectTestrecordMapper.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, TEST_PLATFORM AS testPlatform, TEST_URL AS testUrl, TEST_RESULT AS testResult, TEST_TIME AS testTime, CREATE_TIME AS createTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java
new file mode 100644
index 0000000..c9fbd5a
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java
@@ -0,0 +1,56 @@
+package com.casic.missiles.modular.system.dto;
+
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.casic.missiles.modular.system.enums.DictEnum;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+
+@Data
+public class BusinessConnectRecordDTO implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+// @ExportModel(sort = 0, title = "平台类型")
+ @ExcelProperty(value = "平台类型", order = 0)
+ private String testPlatform;
+// @ExportModel(sort = 1, title = "链接地址")
+ @ExcelProperty(value = "链接地址", order = 1)
+ private String testUrl;
+// @ExportModel(sort = 2, title = "测试时间")
+ @ExcelProperty(value = "测试时间", order = 2)
+ private String createTime;
+// @ExportModel(sort = 3, title = "消耗时间/ms")
+ @ExcelProperty(value = "消耗时间/ms", order = 3)
+ private String testTime;
+// @ExportModel(sort = 4, title = "证书号")
+ @ExcelProperty(value = "测试结果", order = 4)
+ private String testResult;
+
+
+ public static List convert(List testrecordList) {
+ List businessConnectRecordDTOList = new ArrayList<>();
+ testrecordList.forEach(testrecord -> {
+ businessConnectRecordDTOList.add(new BusinessConnectRecordDTO(testrecord));
+ });
+ return businessConnectRecordDTOList;
+ }
+
+
+ public BusinessConnectRecordDTO(BusinessConnectTestrecord testrecord) {
+ this.testPlatform = ObjectUtil.isNotEmpty(testrecord.getTestPlatform())?testrecord.getTestPlatform():"-";
+ this.testResult = DictEnum.TEST_STATUS.equals(testrecord.getTestResult()) ? DictEnum.TEST_PASSED : DictEnum.TEST_FAILED;
+ this.testTime = testrecord.getTestTime();
+ this.createTime = DateUtil.formatDateTime(testrecord.getCreateTime());
+ this.testUrl = testrecord.getTestUrl();
+ }
+
+ public BusinessConnectRecordDTO() {
+ }
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d67ac77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# casic项目 V1.0.0
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot + shiro + mybatis-plus !
+基于casic项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),
+可以直接作为一个后台管理系统的脚手架! 目标 `更简洁`,`更规范`!
+
+
+#### 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket)
+>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
new file mode 100644
index 0000000..180d0a8
--- /dev/null
+++ b/casic-server/pom.xml
@@ -0,0 +1,70 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-xj-connector
+ 1.0.0
+ ../pom.xml
+
+
+ casic-server
+ ${pro.version}
+ jar
+ casic-server
+ casic 的spring boot版本
+
+
+
+
+ com.casic
+ casic-core
+ ${core.version}
+
+
+ com.casic
+ casic-admin-support
+ ${admin.version}
+
+
+
+ com.casic
+ casic-export-support
+ 1.0.0.alpha
+
+
+
+ cn.hutool
+ hutool-all
+ 5.7.2
+
+
+ com.alibaba
+ easyexcel
+ 3.1.0
+
+
+ org.apache.poi
+ poi
+ 4.1.2
+
+
+ org.apache.poi
+ poi-ooxml
+ 4.1.2
+
+
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java
new file mode 100644
index 0000000..38921fc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java
@@ -0,0 +1,125 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.dto.BusinessReportInfoRequest;
+import com.casic.missiles.modular.system.dto.IdsDTO;
+import com.casic.missiles.modular.system.enums.DictEnum;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+import com.casic.missiles.modular.system.service.IBusinessConnectTestrecordService;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 测试链接记录表控制器
+ *
+ * @author dev
+ * @Date 2023-05-17 11:04:13
+ */
+@Controller
+@RequestMapping("/businessConnectTestrecord")
+public class BusinessConnectTestrecordController extends BaseController {
+
+
+ @Resource
+ private IBusinessConnectTestrecordService businessConnectTestrecordService;
+
+
+ /**
+ * 获取测试链接记录表列表
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object batchDelete(@RequestBody @Valid IdsDTO idsDTO) {
+// Assert.isFalse(cn.hutool.core.util.ObjectUtil.isEmpty(idsDTO.getIds()), () -> {
+// throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+// });
+ return ResponseData.success(businessConnectTestrecordService.deleteBatchIds(idsDTO.getIds()));
+ }
+
+ /**
+ * 获取测试链接记录表分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper queryWrapper = new EntityWrapper<>();
+ queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime());
+ queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime());
+ queryWrapper.orderBy("CREATE_TIME", false);
+ page = businessConnectTestrecordService.selectPage(page, queryWrapper);
+ List businessConnectTestrecordList = page.getRecords();
+ businessConnectTestrecordList.forEach(businessConnectTesrecord -> {
+ businessConnectTesrecord.setTestResult(DictEnum.TEST_STATUS.equals(businessConnectTesrecord.getTestResult()) ?
+ DictEnum.TEST_PASSED : DictEnum.TEST_FAILED);
+ });
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增测试链接记录表
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(@RequestBody @Valid BusinessConnectTestrecord businessConnectTestrecord) {
+// Assert.isFalse(ObjectUtil.isEmpty(businessConnectTestrecord.getTestUrl()), () -> {
+// throw new BusinessException(BusinessExceptionEnum.TEST_URL_NULL);
+// });
+ return businessConnectTestrecordService.saveBusinessConnectTestRecord(businessConnectTestrecord.getTestPlatform(), businessConnectTestrecord.getTestUrl()) ?
+ ResponseData.success() : ResponseData.error("save failed");
+ }
+
+ /**
+ * 批量导入测试
+ */
+ @RequestMapping(value = "/fileImport", method = RequestMethod.POST)
+ @ResponseBody
+ public Object fileImport(@RequestParam("file") MultipartFile file) {
+// Assert.isFalse(Objects.isNull(file), () -> {
+// throw new BusinessException(BusinessExceptionEnum.FILE_NULL);
+// });
+ List> urlList = businessConnectTestrecordService.parseSourceFile(file);
+ return businessConnectTestrecordService.saveBatchBusinessConnectTestRecord(urlList) ?
+ ResponseData.success() : ResponseData.error("save failed");
+ }
+
+
+ /**
+ * 批量导出测试记录
+ */
+ @RequestMapping(value = "/fileExport")
+ @ResponseBody
+ public void fileExport(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest, HttpServletResponse response) {
+ EntityWrapper queryWrapper = new EntityWrapper<>();
+ queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime());
+ queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime());
+ queryWrapper.orderBy("CREATE_TIME",false);
+ businessConnectTestrecordService.exportUsersToExcel(businessConnectTestrecordService.selectList(queryWrapper), response);
+ }
+
+
+ /**
+ * 修改测试链接记录表
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BusinessConnectTestrecord businessConnectTestrecord) {
+ businessConnectTestrecordService.updateById(businessConnectTestrecord);
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java
new file mode 100644
index 0000000..5a00c42
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.response.ResponseData;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @ClassName DemoController
+ * @Description TODO
+ * @Author lenovo
+ * @Date 2020/6/13 15:38
+ * @Version 1.0
+ */
+@RestController
+@RequestMapping("/demo")
+public class DemoController {
+ /**
+ * 获取mockToken
+ */
+ @PostMapping("/list")
+ @ResponseBody
+ public Object list(){
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java
new file mode 100644
index 0000000..08482c1
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java
@@ -0,0 +1,71 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+/**
+ * 控制器
+ *
+ * @author dev123
+ * @Date 2018-11-19 13:15:14
+ */
+@RestController
+public class TemplateController extends BaseController {
+ private static Logger logger = LoggerFactory.getLogger(TemplateController.class);
+ @Value("${casic.file-down-path}")
+ private String downloadPath;
+
+
+ /**
+ * 文件模板下载
+ */
+ @GetMapping("/template/download")
+ public void doPost(@RequestParam("filename") String filename, HttpServletResponse response)
+ throws ServletException, IOException {
+ logger.info(downloadPath);
+ if (downloadPath.startsWith("/")) {
+ downloadPath = downloadPath.substring(1);
+ }
+ File file = new File(downloadPath, filename);
+ // 获取文件名
+ String fileName = null;
+ if (filename.contains("/")) {
+ fileName = filename.substring(filename.lastIndexOf("/") + 1);
+ } else {
+ fileName = filename;
+ }
+
+ // 设置以流的形式下载文件,这样可以实现任意格式的文件下载
+ response.setContentType("application/octet-stream");
+ response.addHeader("Content-Disposition", " attachment;filename=" + fileName);
+ response.setContentLength((int) file.length());
+
+ FileInputStream fis = null;
+ try {
+ fis = new FileInputStream(file);
+ byte[] buffer = new byte[1024];
+ int readTmp = 0;
+ while ((readTmp = fis.read(buffer)) != -1) {
+ response.getOutputStream().write(buffer, 0, readTmp);
+ }
+ } catch (Exception e) {
+ logger.info(e.getMessage());
+ e.printStackTrace();
+ } finally {
+ response.getOutputStream().flush();
+ response.getOutputStream().close();
+ fis.close();
+ }
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusinessConnectTestrecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusinessConnectTestrecordMapper.java
new file mode 100644
index 0000000..d787992
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusinessConnectTestrecordMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+
+/**
+ *
+ * 测试链接记录 Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2023-05-17
+ */
+public interface BusinessConnectTestrecordMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusinessConnectTestrecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusinessConnectTestrecordMapper.xml
new file mode 100644
index 0000000..0d02de0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusinessConnectTestrecordMapper.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, TEST_PLATFORM AS testPlatform, TEST_URL AS testUrl, TEST_RESULT AS testResult, TEST_TIME AS testTime, CREATE_TIME AS createTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java
new file mode 100644
index 0000000..c9fbd5a
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java
@@ -0,0 +1,56 @@
+package com.casic.missiles.modular.system.dto;
+
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.casic.missiles.modular.system.enums.DictEnum;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+
+@Data
+public class BusinessConnectRecordDTO implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+// @ExportModel(sort = 0, title = "平台类型")
+ @ExcelProperty(value = "平台类型", order = 0)
+ private String testPlatform;
+// @ExportModel(sort = 1, title = "链接地址")
+ @ExcelProperty(value = "链接地址", order = 1)
+ private String testUrl;
+// @ExportModel(sort = 2, title = "测试时间")
+ @ExcelProperty(value = "测试时间", order = 2)
+ private String createTime;
+// @ExportModel(sort = 3, title = "消耗时间/ms")
+ @ExcelProperty(value = "消耗时间/ms", order = 3)
+ private String testTime;
+// @ExportModel(sort = 4, title = "证书号")
+ @ExcelProperty(value = "测试结果", order = 4)
+ private String testResult;
+
+
+ public static List convert(List testrecordList) {
+ List businessConnectRecordDTOList = new ArrayList<>();
+ testrecordList.forEach(testrecord -> {
+ businessConnectRecordDTOList.add(new BusinessConnectRecordDTO(testrecord));
+ });
+ return businessConnectRecordDTOList;
+ }
+
+
+ public BusinessConnectRecordDTO(BusinessConnectTestrecord testrecord) {
+ this.testPlatform = ObjectUtil.isNotEmpty(testrecord.getTestPlatform())?testrecord.getTestPlatform():"-";
+ this.testResult = DictEnum.TEST_STATUS.equals(testrecord.getTestResult()) ? DictEnum.TEST_PASSED : DictEnum.TEST_FAILED;
+ this.testTime = testrecord.getTestTime();
+ this.createTime = DateUtil.formatDateTime(testrecord.getCreateTime());
+ this.testUrl = testrecord.getTestUrl();
+ }
+
+ public BusinessConnectRecordDTO() {
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessReportInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessReportInfoRequest.java
new file mode 100644
index 0000000..9cbe7cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessReportInfoRequest.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+@Data
+public class BusinessReportInfoRequest {
+
+ private String specialItem;
+
+ private String beginTime;
+
+ private String endTime;
+
+ private Long id;
+
+ private Long thirdId;
+
+ //用于初始化和点击事件刷新地图数据区分 1:点击事件,0:初始化
+ private boolean flag;
+
+ private int page;
+
+ //用于是否是实时刷新 true实时刷新
+ private Boolean isReal;
+
+
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d67ac77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# casic项目 V1.0.0
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot + shiro + mybatis-plus !
+基于casic项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),
+可以直接作为一个后台管理系统的脚手架! 目标 `更简洁`,`更规范`!
+
+
+#### 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket)
+>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
new file mode 100644
index 0000000..180d0a8
--- /dev/null
+++ b/casic-server/pom.xml
@@ -0,0 +1,70 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-xj-connector
+ 1.0.0
+ ../pom.xml
+
+
+ casic-server
+ ${pro.version}
+ jar
+ casic-server
+ casic 的spring boot版本
+
+
+
+
+ com.casic
+ casic-core
+ ${core.version}
+
+
+ com.casic
+ casic-admin-support
+ ${admin.version}
+
+
+
+ com.casic
+ casic-export-support
+ 1.0.0.alpha
+
+
+
+ cn.hutool
+ hutool-all
+ 5.7.2
+
+
+ com.alibaba
+ easyexcel
+ 3.1.0
+
+
+ org.apache.poi
+ poi
+ 4.1.2
+
+
+ org.apache.poi
+ poi-ooxml
+ 4.1.2
+
+
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java
new file mode 100644
index 0000000..38921fc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java
@@ -0,0 +1,125 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.dto.BusinessReportInfoRequest;
+import com.casic.missiles.modular.system.dto.IdsDTO;
+import com.casic.missiles.modular.system.enums.DictEnum;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+import com.casic.missiles.modular.system.service.IBusinessConnectTestrecordService;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 测试链接记录表控制器
+ *
+ * @author dev
+ * @Date 2023-05-17 11:04:13
+ */
+@Controller
+@RequestMapping("/businessConnectTestrecord")
+public class BusinessConnectTestrecordController extends BaseController {
+
+
+ @Resource
+ private IBusinessConnectTestrecordService businessConnectTestrecordService;
+
+
+ /**
+ * 获取测试链接记录表列表
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object batchDelete(@RequestBody @Valid IdsDTO idsDTO) {
+// Assert.isFalse(cn.hutool.core.util.ObjectUtil.isEmpty(idsDTO.getIds()), () -> {
+// throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+// });
+ return ResponseData.success(businessConnectTestrecordService.deleteBatchIds(idsDTO.getIds()));
+ }
+
+ /**
+ * 获取测试链接记录表分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper queryWrapper = new EntityWrapper<>();
+ queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime());
+ queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime());
+ queryWrapper.orderBy("CREATE_TIME", false);
+ page = businessConnectTestrecordService.selectPage(page, queryWrapper);
+ List businessConnectTestrecordList = page.getRecords();
+ businessConnectTestrecordList.forEach(businessConnectTesrecord -> {
+ businessConnectTesrecord.setTestResult(DictEnum.TEST_STATUS.equals(businessConnectTesrecord.getTestResult()) ?
+ DictEnum.TEST_PASSED : DictEnum.TEST_FAILED);
+ });
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增测试链接记录表
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(@RequestBody @Valid BusinessConnectTestrecord businessConnectTestrecord) {
+// Assert.isFalse(ObjectUtil.isEmpty(businessConnectTestrecord.getTestUrl()), () -> {
+// throw new BusinessException(BusinessExceptionEnum.TEST_URL_NULL);
+// });
+ return businessConnectTestrecordService.saveBusinessConnectTestRecord(businessConnectTestrecord.getTestPlatform(), businessConnectTestrecord.getTestUrl()) ?
+ ResponseData.success() : ResponseData.error("save failed");
+ }
+
+ /**
+ * 批量导入测试
+ */
+ @RequestMapping(value = "/fileImport", method = RequestMethod.POST)
+ @ResponseBody
+ public Object fileImport(@RequestParam("file") MultipartFile file) {
+// Assert.isFalse(Objects.isNull(file), () -> {
+// throw new BusinessException(BusinessExceptionEnum.FILE_NULL);
+// });
+ List> urlList = businessConnectTestrecordService.parseSourceFile(file);
+ return businessConnectTestrecordService.saveBatchBusinessConnectTestRecord(urlList) ?
+ ResponseData.success() : ResponseData.error("save failed");
+ }
+
+
+ /**
+ * 批量导出测试记录
+ */
+ @RequestMapping(value = "/fileExport")
+ @ResponseBody
+ public void fileExport(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest, HttpServletResponse response) {
+ EntityWrapper queryWrapper = new EntityWrapper<>();
+ queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime());
+ queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime());
+ queryWrapper.orderBy("CREATE_TIME",false);
+ businessConnectTestrecordService.exportUsersToExcel(businessConnectTestrecordService.selectList(queryWrapper), response);
+ }
+
+
+ /**
+ * 修改测试链接记录表
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BusinessConnectTestrecord businessConnectTestrecord) {
+ businessConnectTestrecordService.updateById(businessConnectTestrecord);
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java
new file mode 100644
index 0000000..5a00c42
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.response.ResponseData;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @ClassName DemoController
+ * @Description TODO
+ * @Author lenovo
+ * @Date 2020/6/13 15:38
+ * @Version 1.0
+ */
+@RestController
+@RequestMapping("/demo")
+public class DemoController {
+ /**
+ * 获取mockToken
+ */
+ @PostMapping("/list")
+ @ResponseBody
+ public Object list(){
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java
new file mode 100644
index 0000000..08482c1
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java
@@ -0,0 +1,71 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+/**
+ * 控制器
+ *
+ * @author dev123
+ * @Date 2018-11-19 13:15:14
+ */
+@RestController
+public class TemplateController extends BaseController {
+ private static Logger logger = LoggerFactory.getLogger(TemplateController.class);
+ @Value("${casic.file-down-path}")
+ private String downloadPath;
+
+
+ /**
+ * 文件模板下载
+ */
+ @GetMapping("/template/download")
+ public void doPost(@RequestParam("filename") String filename, HttpServletResponse response)
+ throws ServletException, IOException {
+ logger.info(downloadPath);
+ if (downloadPath.startsWith("/")) {
+ downloadPath = downloadPath.substring(1);
+ }
+ File file = new File(downloadPath, filename);
+ // 获取文件名
+ String fileName = null;
+ if (filename.contains("/")) {
+ fileName = filename.substring(filename.lastIndexOf("/") + 1);
+ } else {
+ fileName = filename;
+ }
+
+ // 设置以流的形式下载文件,这样可以实现任意格式的文件下载
+ response.setContentType("application/octet-stream");
+ response.addHeader("Content-Disposition", " attachment;filename=" + fileName);
+ response.setContentLength((int) file.length());
+
+ FileInputStream fis = null;
+ try {
+ fis = new FileInputStream(file);
+ byte[] buffer = new byte[1024];
+ int readTmp = 0;
+ while ((readTmp = fis.read(buffer)) != -1) {
+ response.getOutputStream().write(buffer, 0, readTmp);
+ }
+ } catch (Exception e) {
+ logger.info(e.getMessage());
+ e.printStackTrace();
+ } finally {
+ response.getOutputStream().flush();
+ response.getOutputStream().close();
+ fis.close();
+ }
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusinessConnectTestrecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusinessConnectTestrecordMapper.java
new file mode 100644
index 0000000..d787992
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusinessConnectTestrecordMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+
+/**
+ *
+ * 测试链接记录 Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2023-05-17
+ */
+public interface BusinessConnectTestrecordMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusinessConnectTestrecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusinessConnectTestrecordMapper.xml
new file mode 100644
index 0000000..0d02de0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusinessConnectTestrecordMapper.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, TEST_PLATFORM AS testPlatform, TEST_URL AS testUrl, TEST_RESULT AS testResult, TEST_TIME AS testTime, CREATE_TIME AS createTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java
new file mode 100644
index 0000000..c9fbd5a
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java
@@ -0,0 +1,56 @@
+package com.casic.missiles.modular.system.dto;
+
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.casic.missiles.modular.system.enums.DictEnum;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+
+@Data
+public class BusinessConnectRecordDTO implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+// @ExportModel(sort = 0, title = "平台类型")
+ @ExcelProperty(value = "平台类型", order = 0)
+ private String testPlatform;
+// @ExportModel(sort = 1, title = "链接地址")
+ @ExcelProperty(value = "链接地址", order = 1)
+ private String testUrl;
+// @ExportModel(sort = 2, title = "测试时间")
+ @ExcelProperty(value = "测试时间", order = 2)
+ private String createTime;
+// @ExportModel(sort = 3, title = "消耗时间/ms")
+ @ExcelProperty(value = "消耗时间/ms", order = 3)
+ private String testTime;
+// @ExportModel(sort = 4, title = "证书号")
+ @ExcelProperty(value = "测试结果", order = 4)
+ private String testResult;
+
+
+ public static List convert(List testrecordList) {
+ List businessConnectRecordDTOList = new ArrayList<>();
+ testrecordList.forEach(testrecord -> {
+ businessConnectRecordDTOList.add(new BusinessConnectRecordDTO(testrecord));
+ });
+ return businessConnectRecordDTOList;
+ }
+
+
+ public BusinessConnectRecordDTO(BusinessConnectTestrecord testrecord) {
+ this.testPlatform = ObjectUtil.isNotEmpty(testrecord.getTestPlatform())?testrecord.getTestPlatform():"-";
+ this.testResult = DictEnum.TEST_STATUS.equals(testrecord.getTestResult()) ? DictEnum.TEST_PASSED : DictEnum.TEST_FAILED;
+ this.testTime = testrecord.getTestTime();
+ this.createTime = DateUtil.formatDateTime(testrecord.getCreateTime());
+ this.testUrl = testrecord.getTestUrl();
+ }
+
+ public BusinessConnectRecordDTO() {
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessReportInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessReportInfoRequest.java
new file mode 100644
index 0000000..9cbe7cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessReportInfoRequest.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+@Data
+public class BusinessReportInfoRequest {
+
+ private String specialItem;
+
+ private String beginTime;
+
+ private String endTime;
+
+ private Long id;
+
+ private Long thirdId;
+
+ //用于初始化和点击事件刷新地图数据区分 1:点击事件,0:初始化
+ private boolean flag;
+
+ private int page;
+
+ //用于是否是实时刷新 true实时刷新
+ private Boolean isReal;
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java
new file mode 100644
index 0000000..a359449
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * @Description: for batch use
+ * @Author: wangpeng
+ * @Date: 2022/11/26 9:51
+ */
+@Data
+public class IdsDTO {
+ @NotNull
+ private List ids;
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d67ac77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# casic项目 V1.0.0
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot + shiro + mybatis-plus !
+基于casic项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),
+可以直接作为一个后台管理系统的脚手架! 目标 `更简洁`,`更规范`!
+
+
+#### 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket)
+>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
new file mode 100644
index 0000000..180d0a8
--- /dev/null
+++ b/casic-server/pom.xml
@@ -0,0 +1,70 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-xj-connector
+ 1.0.0
+ ../pom.xml
+
+
+ casic-server
+ ${pro.version}
+ jar
+ casic-server
+ casic 的spring boot版本
+
+
+
+
+ com.casic
+ casic-core
+ ${core.version}
+
+
+ com.casic
+ casic-admin-support
+ ${admin.version}
+
+
+
+ com.casic
+ casic-export-support
+ 1.0.0.alpha
+
+
+
+ cn.hutool
+ hutool-all
+ 5.7.2
+
+
+ com.alibaba
+ easyexcel
+ 3.1.0
+
+
+ org.apache.poi
+ poi
+ 4.1.2
+
+
+ org.apache.poi
+ poi-ooxml
+ 4.1.2
+
+
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java
new file mode 100644
index 0000000..38921fc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java
@@ -0,0 +1,125 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.dto.BusinessReportInfoRequest;
+import com.casic.missiles.modular.system.dto.IdsDTO;
+import com.casic.missiles.modular.system.enums.DictEnum;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+import com.casic.missiles.modular.system.service.IBusinessConnectTestrecordService;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 测试链接记录表控制器
+ *
+ * @author dev
+ * @Date 2023-05-17 11:04:13
+ */
+@Controller
+@RequestMapping("/businessConnectTestrecord")
+public class BusinessConnectTestrecordController extends BaseController {
+
+
+ @Resource
+ private IBusinessConnectTestrecordService businessConnectTestrecordService;
+
+
+ /**
+ * 获取测试链接记录表列表
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object batchDelete(@RequestBody @Valid IdsDTO idsDTO) {
+// Assert.isFalse(cn.hutool.core.util.ObjectUtil.isEmpty(idsDTO.getIds()), () -> {
+// throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+// });
+ return ResponseData.success(businessConnectTestrecordService.deleteBatchIds(idsDTO.getIds()));
+ }
+
+ /**
+ * 获取测试链接记录表分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper queryWrapper = new EntityWrapper<>();
+ queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime());
+ queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime());
+ queryWrapper.orderBy("CREATE_TIME", false);
+ page = businessConnectTestrecordService.selectPage(page, queryWrapper);
+ List businessConnectTestrecordList = page.getRecords();
+ businessConnectTestrecordList.forEach(businessConnectTesrecord -> {
+ businessConnectTesrecord.setTestResult(DictEnum.TEST_STATUS.equals(businessConnectTesrecord.getTestResult()) ?
+ DictEnum.TEST_PASSED : DictEnum.TEST_FAILED);
+ });
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增测试链接记录表
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(@RequestBody @Valid BusinessConnectTestrecord businessConnectTestrecord) {
+// Assert.isFalse(ObjectUtil.isEmpty(businessConnectTestrecord.getTestUrl()), () -> {
+// throw new BusinessException(BusinessExceptionEnum.TEST_URL_NULL);
+// });
+ return businessConnectTestrecordService.saveBusinessConnectTestRecord(businessConnectTestrecord.getTestPlatform(), businessConnectTestrecord.getTestUrl()) ?
+ ResponseData.success() : ResponseData.error("save failed");
+ }
+
+ /**
+ * 批量导入测试
+ */
+ @RequestMapping(value = "/fileImport", method = RequestMethod.POST)
+ @ResponseBody
+ public Object fileImport(@RequestParam("file") MultipartFile file) {
+// Assert.isFalse(Objects.isNull(file), () -> {
+// throw new BusinessException(BusinessExceptionEnum.FILE_NULL);
+// });
+ List> urlList = businessConnectTestrecordService.parseSourceFile(file);
+ return businessConnectTestrecordService.saveBatchBusinessConnectTestRecord(urlList) ?
+ ResponseData.success() : ResponseData.error("save failed");
+ }
+
+
+ /**
+ * 批量导出测试记录
+ */
+ @RequestMapping(value = "/fileExport")
+ @ResponseBody
+ public void fileExport(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest, HttpServletResponse response) {
+ EntityWrapper queryWrapper = new EntityWrapper<>();
+ queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime());
+ queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime());
+ queryWrapper.orderBy("CREATE_TIME",false);
+ businessConnectTestrecordService.exportUsersToExcel(businessConnectTestrecordService.selectList(queryWrapper), response);
+ }
+
+
+ /**
+ * 修改测试链接记录表
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BusinessConnectTestrecord businessConnectTestrecord) {
+ businessConnectTestrecordService.updateById(businessConnectTestrecord);
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java
new file mode 100644
index 0000000..5a00c42
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.response.ResponseData;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @ClassName DemoController
+ * @Description TODO
+ * @Author lenovo
+ * @Date 2020/6/13 15:38
+ * @Version 1.0
+ */
+@RestController
+@RequestMapping("/demo")
+public class DemoController {
+ /**
+ * 获取mockToken
+ */
+ @PostMapping("/list")
+ @ResponseBody
+ public Object list(){
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java
new file mode 100644
index 0000000..08482c1
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java
@@ -0,0 +1,71 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+/**
+ * 控制器
+ *
+ * @author dev123
+ * @Date 2018-11-19 13:15:14
+ */
+@RestController
+public class TemplateController extends BaseController {
+ private static Logger logger = LoggerFactory.getLogger(TemplateController.class);
+ @Value("${casic.file-down-path}")
+ private String downloadPath;
+
+
+ /**
+ * 文件模板下载
+ */
+ @GetMapping("/template/download")
+ public void doPost(@RequestParam("filename") String filename, HttpServletResponse response)
+ throws ServletException, IOException {
+ logger.info(downloadPath);
+ if (downloadPath.startsWith("/")) {
+ downloadPath = downloadPath.substring(1);
+ }
+ File file = new File(downloadPath, filename);
+ // 获取文件名
+ String fileName = null;
+ if (filename.contains("/")) {
+ fileName = filename.substring(filename.lastIndexOf("/") + 1);
+ } else {
+ fileName = filename;
+ }
+
+ // 设置以流的形式下载文件,这样可以实现任意格式的文件下载
+ response.setContentType("application/octet-stream");
+ response.addHeader("Content-Disposition", " attachment;filename=" + fileName);
+ response.setContentLength((int) file.length());
+
+ FileInputStream fis = null;
+ try {
+ fis = new FileInputStream(file);
+ byte[] buffer = new byte[1024];
+ int readTmp = 0;
+ while ((readTmp = fis.read(buffer)) != -1) {
+ response.getOutputStream().write(buffer, 0, readTmp);
+ }
+ } catch (Exception e) {
+ logger.info(e.getMessage());
+ e.printStackTrace();
+ } finally {
+ response.getOutputStream().flush();
+ response.getOutputStream().close();
+ fis.close();
+ }
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusinessConnectTestrecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusinessConnectTestrecordMapper.java
new file mode 100644
index 0000000..d787992
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusinessConnectTestrecordMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+
+/**
+ *
+ * 测试链接记录 Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2023-05-17
+ */
+public interface BusinessConnectTestrecordMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusinessConnectTestrecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusinessConnectTestrecordMapper.xml
new file mode 100644
index 0000000..0d02de0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusinessConnectTestrecordMapper.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, TEST_PLATFORM AS testPlatform, TEST_URL AS testUrl, TEST_RESULT AS testResult, TEST_TIME AS testTime, CREATE_TIME AS createTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java
new file mode 100644
index 0000000..c9fbd5a
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java
@@ -0,0 +1,56 @@
+package com.casic.missiles.modular.system.dto;
+
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.casic.missiles.modular.system.enums.DictEnum;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+
+@Data
+public class BusinessConnectRecordDTO implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+// @ExportModel(sort = 0, title = "平台类型")
+ @ExcelProperty(value = "平台类型", order = 0)
+ private String testPlatform;
+// @ExportModel(sort = 1, title = "链接地址")
+ @ExcelProperty(value = "链接地址", order = 1)
+ private String testUrl;
+// @ExportModel(sort = 2, title = "测试时间")
+ @ExcelProperty(value = "测试时间", order = 2)
+ private String createTime;
+// @ExportModel(sort = 3, title = "消耗时间/ms")
+ @ExcelProperty(value = "消耗时间/ms", order = 3)
+ private String testTime;
+// @ExportModel(sort = 4, title = "证书号")
+ @ExcelProperty(value = "测试结果", order = 4)
+ private String testResult;
+
+
+ public static List convert(List testrecordList) {
+ List businessConnectRecordDTOList = new ArrayList<>();
+ testrecordList.forEach(testrecord -> {
+ businessConnectRecordDTOList.add(new BusinessConnectRecordDTO(testrecord));
+ });
+ return businessConnectRecordDTOList;
+ }
+
+
+ public BusinessConnectRecordDTO(BusinessConnectTestrecord testrecord) {
+ this.testPlatform = ObjectUtil.isNotEmpty(testrecord.getTestPlatform())?testrecord.getTestPlatform():"-";
+ this.testResult = DictEnum.TEST_STATUS.equals(testrecord.getTestResult()) ? DictEnum.TEST_PASSED : DictEnum.TEST_FAILED;
+ this.testTime = testrecord.getTestTime();
+ this.createTime = DateUtil.formatDateTime(testrecord.getCreateTime());
+ this.testUrl = testrecord.getTestUrl();
+ }
+
+ public BusinessConnectRecordDTO() {
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessReportInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessReportInfoRequest.java
new file mode 100644
index 0000000..9cbe7cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessReportInfoRequest.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+@Data
+public class BusinessReportInfoRequest {
+
+ private String specialItem;
+
+ private String beginTime;
+
+ private String endTime;
+
+ private Long id;
+
+ private Long thirdId;
+
+ //用于初始化和点击事件刷新地图数据区分 1:点击事件,0:初始化
+ private boolean flag;
+
+ private int page;
+
+ //用于是否是实时刷新 true实时刷新
+ private Boolean isReal;
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java
new file mode 100644
index 0000000..a359449
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * @Description: for batch use
+ * @Author: wangpeng
+ * @Date: 2022/11/26 9:51
+ */
+@Data
+public class IdsDTO {
+ @NotNull
+ private List ids;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java
new file mode 100644
index 0000000..5bcaa79
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java
@@ -0,0 +1,26 @@
+package com.casic.missiles.modular.system.enums;
+
+/**
+ * @Description: 字典名枚举
+ * @Author: zt
+ * @Date: 2023/4/20 10:41
+ */
+public interface DictEnum {
+ //测试通过
+ String TEST_PASSED = "通过";
+ //测试不通过
+ String TEST_FAILED = "不通过";
+ //测试状态
+ String TEST_STATUS = "1";
+ //发布平台
+ String PLATE = "plate";
+ //一级标签
+ String FIRST_TAG = "tags";
+ //下发
+ String PROCESS_SEND = "4";
+
+ //投票支持
+ String VOTE_APPROVE = "1";
+ //投票反对
+ String VOTE_AGAINST = "0";
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d67ac77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# casic项目 V1.0.0
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot + shiro + mybatis-plus !
+基于casic项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),
+可以直接作为一个后台管理系统的脚手架! 目标 `更简洁`,`更规范`!
+
+
+#### 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket)
+>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
new file mode 100644
index 0000000..180d0a8
--- /dev/null
+++ b/casic-server/pom.xml
@@ -0,0 +1,70 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-xj-connector
+ 1.0.0
+ ../pom.xml
+
+
+ casic-server
+ ${pro.version}
+ jar
+ casic-server
+ casic 的spring boot版本
+
+
+
+
+ com.casic
+ casic-core
+ ${core.version}
+
+
+ com.casic
+ casic-admin-support
+ ${admin.version}
+
+
+
+ com.casic
+ casic-export-support
+ 1.0.0.alpha
+
+
+
+ cn.hutool
+ hutool-all
+ 5.7.2
+
+
+ com.alibaba
+ easyexcel
+ 3.1.0
+
+
+ org.apache.poi
+ poi
+ 4.1.2
+
+
+ org.apache.poi
+ poi-ooxml
+ 4.1.2
+
+
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java
new file mode 100644
index 0000000..38921fc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java
@@ -0,0 +1,125 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.dto.BusinessReportInfoRequest;
+import com.casic.missiles.modular.system.dto.IdsDTO;
+import com.casic.missiles.modular.system.enums.DictEnum;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+import com.casic.missiles.modular.system.service.IBusinessConnectTestrecordService;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 测试链接记录表控制器
+ *
+ * @author dev
+ * @Date 2023-05-17 11:04:13
+ */
+@Controller
+@RequestMapping("/businessConnectTestrecord")
+public class BusinessConnectTestrecordController extends BaseController {
+
+
+ @Resource
+ private IBusinessConnectTestrecordService businessConnectTestrecordService;
+
+
+ /**
+ * 获取测试链接记录表列表
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object batchDelete(@RequestBody @Valid IdsDTO idsDTO) {
+// Assert.isFalse(cn.hutool.core.util.ObjectUtil.isEmpty(idsDTO.getIds()), () -> {
+// throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+// });
+ return ResponseData.success(businessConnectTestrecordService.deleteBatchIds(idsDTO.getIds()));
+ }
+
+ /**
+ * 获取测试链接记录表分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper queryWrapper = new EntityWrapper<>();
+ queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime());
+ queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime());
+ queryWrapper.orderBy("CREATE_TIME", false);
+ page = businessConnectTestrecordService.selectPage(page, queryWrapper);
+ List businessConnectTestrecordList = page.getRecords();
+ businessConnectTestrecordList.forEach(businessConnectTesrecord -> {
+ businessConnectTesrecord.setTestResult(DictEnum.TEST_STATUS.equals(businessConnectTesrecord.getTestResult()) ?
+ DictEnum.TEST_PASSED : DictEnum.TEST_FAILED);
+ });
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增测试链接记录表
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(@RequestBody @Valid BusinessConnectTestrecord businessConnectTestrecord) {
+// Assert.isFalse(ObjectUtil.isEmpty(businessConnectTestrecord.getTestUrl()), () -> {
+// throw new BusinessException(BusinessExceptionEnum.TEST_URL_NULL);
+// });
+ return businessConnectTestrecordService.saveBusinessConnectTestRecord(businessConnectTestrecord.getTestPlatform(), businessConnectTestrecord.getTestUrl()) ?
+ ResponseData.success() : ResponseData.error("save failed");
+ }
+
+ /**
+ * 批量导入测试
+ */
+ @RequestMapping(value = "/fileImport", method = RequestMethod.POST)
+ @ResponseBody
+ public Object fileImport(@RequestParam("file") MultipartFile file) {
+// Assert.isFalse(Objects.isNull(file), () -> {
+// throw new BusinessException(BusinessExceptionEnum.FILE_NULL);
+// });
+ List> urlList = businessConnectTestrecordService.parseSourceFile(file);
+ return businessConnectTestrecordService.saveBatchBusinessConnectTestRecord(urlList) ?
+ ResponseData.success() : ResponseData.error("save failed");
+ }
+
+
+ /**
+ * 批量导出测试记录
+ */
+ @RequestMapping(value = "/fileExport")
+ @ResponseBody
+ public void fileExport(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest, HttpServletResponse response) {
+ EntityWrapper queryWrapper = new EntityWrapper<>();
+ queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime());
+ queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime());
+ queryWrapper.orderBy("CREATE_TIME",false);
+ businessConnectTestrecordService.exportUsersToExcel(businessConnectTestrecordService.selectList(queryWrapper), response);
+ }
+
+
+ /**
+ * 修改测试链接记录表
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BusinessConnectTestrecord businessConnectTestrecord) {
+ businessConnectTestrecordService.updateById(businessConnectTestrecord);
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java
new file mode 100644
index 0000000..5a00c42
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.response.ResponseData;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @ClassName DemoController
+ * @Description TODO
+ * @Author lenovo
+ * @Date 2020/6/13 15:38
+ * @Version 1.0
+ */
+@RestController
+@RequestMapping("/demo")
+public class DemoController {
+ /**
+ * 获取mockToken
+ */
+ @PostMapping("/list")
+ @ResponseBody
+ public Object list(){
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java
new file mode 100644
index 0000000..08482c1
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java
@@ -0,0 +1,71 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+/**
+ * 控制器
+ *
+ * @author dev123
+ * @Date 2018-11-19 13:15:14
+ */
+@RestController
+public class TemplateController extends BaseController {
+ private static Logger logger = LoggerFactory.getLogger(TemplateController.class);
+ @Value("${casic.file-down-path}")
+ private String downloadPath;
+
+
+ /**
+ * 文件模板下载
+ */
+ @GetMapping("/template/download")
+ public void doPost(@RequestParam("filename") String filename, HttpServletResponse response)
+ throws ServletException, IOException {
+ logger.info(downloadPath);
+ if (downloadPath.startsWith("/")) {
+ downloadPath = downloadPath.substring(1);
+ }
+ File file = new File(downloadPath, filename);
+ // 获取文件名
+ String fileName = null;
+ if (filename.contains("/")) {
+ fileName = filename.substring(filename.lastIndexOf("/") + 1);
+ } else {
+ fileName = filename;
+ }
+
+ // 设置以流的形式下载文件,这样可以实现任意格式的文件下载
+ response.setContentType("application/octet-stream");
+ response.addHeader("Content-Disposition", " attachment;filename=" + fileName);
+ response.setContentLength((int) file.length());
+
+ FileInputStream fis = null;
+ try {
+ fis = new FileInputStream(file);
+ byte[] buffer = new byte[1024];
+ int readTmp = 0;
+ while ((readTmp = fis.read(buffer)) != -1) {
+ response.getOutputStream().write(buffer, 0, readTmp);
+ }
+ } catch (Exception e) {
+ logger.info(e.getMessage());
+ e.printStackTrace();
+ } finally {
+ response.getOutputStream().flush();
+ response.getOutputStream().close();
+ fis.close();
+ }
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusinessConnectTestrecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusinessConnectTestrecordMapper.java
new file mode 100644
index 0000000..d787992
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusinessConnectTestrecordMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+
+/**
+ *
+ * 测试链接记录 Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2023-05-17
+ */
+public interface BusinessConnectTestrecordMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusinessConnectTestrecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusinessConnectTestrecordMapper.xml
new file mode 100644
index 0000000..0d02de0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusinessConnectTestrecordMapper.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, TEST_PLATFORM AS testPlatform, TEST_URL AS testUrl, TEST_RESULT AS testResult, TEST_TIME AS testTime, CREATE_TIME AS createTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java
new file mode 100644
index 0000000..c9fbd5a
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java
@@ -0,0 +1,56 @@
+package com.casic.missiles.modular.system.dto;
+
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.casic.missiles.modular.system.enums.DictEnum;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+
+@Data
+public class BusinessConnectRecordDTO implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+// @ExportModel(sort = 0, title = "平台类型")
+ @ExcelProperty(value = "平台类型", order = 0)
+ private String testPlatform;
+// @ExportModel(sort = 1, title = "链接地址")
+ @ExcelProperty(value = "链接地址", order = 1)
+ private String testUrl;
+// @ExportModel(sort = 2, title = "测试时间")
+ @ExcelProperty(value = "测试时间", order = 2)
+ private String createTime;
+// @ExportModel(sort = 3, title = "消耗时间/ms")
+ @ExcelProperty(value = "消耗时间/ms", order = 3)
+ private String testTime;
+// @ExportModel(sort = 4, title = "证书号")
+ @ExcelProperty(value = "测试结果", order = 4)
+ private String testResult;
+
+
+ public static List convert(List testrecordList) {
+ List businessConnectRecordDTOList = new ArrayList<>();
+ testrecordList.forEach(testrecord -> {
+ businessConnectRecordDTOList.add(new BusinessConnectRecordDTO(testrecord));
+ });
+ return businessConnectRecordDTOList;
+ }
+
+
+ public BusinessConnectRecordDTO(BusinessConnectTestrecord testrecord) {
+ this.testPlatform = ObjectUtil.isNotEmpty(testrecord.getTestPlatform())?testrecord.getTestPlatform():"-";
+ this.testResult = DictEnum.TEST_STATUS.equals(testrecord.getTestResult()) ? DictEnum.TEST_PASSED : DictEnum.TEST_FAILED;
+ this.testTime = testrecord.getTestTime();
+ this.createTime = DateUtil.formatDateTime(testrecord.getCreateTime());
+ this.testUrl = testrecord.getTestUrl();
+ }
+
+ public BusinessConnectRecordDTO() {
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessReportInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessReportInfoRequest.java
new file mode 100644
index 0000000..9cbe7cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessReportInfoRequest.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+@Data
+public class BusinessReportInfoRequest {
+
+ private String specialItem;
+
+ private String beginTime;
+
+ private String endTime;
+
+ private Long id;
+
+ private Long thirdId;
+
+ //用于初始化和点击事件刷新地图数据区分 1:点击事件,0:初始化
+ private boolean flag;
+
+ private int page;
+
+ //用于是否是实时刷新 true实时刷新
+ private Boolean isReal;
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java
new file mode 100644
index 0000000..a359449
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * @Description: for batch use
+ * @Author: wangpeng
+ * @Date: 2022/11/26 9:51
+ */
+@Data
+public class IdsDTO {
+ @NotNull
+ private List ids;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java
new file mode 100644
index 0000000..5bcaa79
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java
@@ -0,0 +1,26 @@
+package com.casic.missiles.modular.system.enums;
+
+/**
+ * @Description: 字典名枚举
+ * @Author: zt
+ * @Date: 2023/4/20 10:41
+ */
+public interface DictEnum {
+ //测试通过
+ String TEST_PASSED = "通过";
+ //测试不通过
+ String TEST_FAILED = "不通过";
+ //测试状态
+ String TEST_STATUS = "1";
+ //发布平台
+ String PLATE = "plate";
+ //一级标签
+ String FIRST_TAG = "tags";
+ //下发
+ String PROCESS_SEND = "4";
+
+ //投票支持
+ String VOTE_APPROVE = "1";
+ //投票反对
+ String VOTE_AGAINST = "0";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusinessConnectTestrecord.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusinessConnectTestrecord.java
new file mode 100644
index 0000000..5a43beb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusinessConnectTestrecord.java
@@ -0,0 +1,78 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 测试链接记录
+ *
+ *
+ * @author stylefeng123
+ * @since 2023-05-17
+ */
+@Data
+@TableName("business_connect_testrecord")
+public class BusinessConnectTestrecord extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键id
+ */
+ @TableId("ID")
+ private Long id;
+ /**
+ * 测试平台
+ */
+ @TableField("TEST_PLATFORM")
+ private String testPlatform;
+ /**
+ * 链接地址
+ */
+ @TableField("TEST_URL")
+ private String testUrl;
+ /**
+ * 测试结果1:通过,0,无效
+ */
+ @TableField("TEST_RESULT")
+ private String testResult;
+ /**
+ * 消耗时间
+ */
+ @TableField("TEST_TIME")
+ private String testTime;
+ /**
+ * 测试时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 备注
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+
+ public BusinessConnectTestrecord() {
+ }
+
+ public BusinessConnectTestrecord(String[] dto, String plate) {
+ this.testPlatform =plate;
+ this.testUrl = dto[0];
+ this.testTime = dto[1];
+ this.createTime = new Date();
+ this.testResult = "200".equals(dto[2]) ? "1" : "0";
+ }
+
+ @Override
+ protected Serializable pkVal() {
+ return null;
+ }
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d67ac77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# casic项目 V1.0.0
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot + shiro + mybatis-plus !
+基于casic项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),
+可以直接作为一个后台管理系统的脚手架! 目标 `更简洁`,`更规范`!
+
+
+#### 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket)
+>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
new file mode 100644
index 0000000..180d0a8
--- /dev/null
+++ b/casic-server/pom.xml
@@ -0,0 +1,70 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-xj-connector
+ 1.0.0
+ ../pom.xml
+
+
+ casic-server
+ ${pro.version}
+ jar
+ casic-server
+ casic 的spring boot版本
+
+
+
+
+ com.casic
+ casic-core
+ ${core.version}
+
+
+ com.casic
+ casic-admin-support
+ ${admin.version}
+
+
+
+ com.casic
+ casic-export-support
+ 1.0.0.alpha
+
+
+
+ cn.hutool
+ hutool-all
+ 5.7.2
+
+
+ com.alibaba
+ easyexcel
+ 3.1.0
+
+
+ org.apache.poi
+ poi
+ 4.1.2
+
+
+ org.apache.poi
+ poi-ooxml
+ 4.1.2
+
+
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java
new file mode 100644
index 0000000..38921fc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java
@@ -0,0 +1,125 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.dto.BusinessReportInfoRequest;
+import com.casic.missiles.modular.system.dto.IdsDTO;
+import com.casic.missiles.modular.system.enums.DictEnum;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+import com.casic.missiles.modular.system.service.IBusinessConnectTestrecordService;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 测试链接记录表控制器
+ *
+ * @author dev
+ * @Date 2023-05-17 11:04:13
+ */
+@Controller
+@RequestMapping("/businessConnectTestrecord")
+public class BusinessConnectTestrecordController extends BaseController {
+
+
+ @Resource
+ private IBusinessConnectTestrecordService businessConnectTestrecordService;
+
+
+ /**
+ * 获取测试链接记录表列表
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object batchDelete(@RequestBody @Valid IdsDTO idsDTO) {
+// Assert.isFalse(cn.hutool.core.util.ObjectUtil.isEmpty(idsDTO.getIds()), () -> {
+// throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+// });
+ return ResponseData.success(businessConnectTestrecordService.deleteBatchIds(idsDTO.getIds()));
+ }
+
+ /**
+ * 获取测试链接记录表分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper queryWrapper = new EntityWrapper<>();
+ queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime());
+ queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime());
+ queryWrapper.orderBy("CREATE_TIME", false);
+ page = businessConnectTestrecordService.selectPage(page, queryWrapper);
+ List businessConnectTestrecordList = page.getRecords();
+ businessConnectTestrecordList.forEach(businessConnectTesrecord -> {
+ businessConnectTesrecord.setTestResult(DictEnum.TEST_STATUS.equals(businessConnectTesrecord.getTestResult()) ?
+ DictEnum.TEST_PASSED : DictEnum.TEST_FAILED);
+ });
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增测试链接记录表
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(@RequestBody @Valid BusinessConnectTestrecord businessConnectTestrecord) {
+// Assert.isFalse(ObjectUtil.isEmpty(businessConnectTestrecord.getTestUrl()), () -> {
+// throw new BusinessException(BusinessExceptionEnum.TEST_URL_NULL);
+// });
+ return businessConnectTestrecordService.saveBusinessConnectTestRecord(businessConnectTestrecord.getTestPlatform(), businessConnectTestrecord.getTestUrl()) ?
+ ResponseData.success() : ResponseData.error("save failed");
+ }
+
+ /**
+ * 批量导入测试
+ */
+ @RequestMapping(value = "/fileImport", method = RequestMethod.POST)
+ @ResponseBody
+ public Object fileImport(@RequestParam("file") MultipartFile file) {
+// Assert.isFalse(Objects.isNull(file), () -> {
+// throw new BusinessException(BusinessExceptionEnum.FILE_NULL);
+// });
+ List> urlList = businessConnectTestrecordService.parseSourceFile(file);
+ return businessConnectTestrecordService.saveBatchBusinessConnectTestRecord(urlList) ?
+ ResponseData.success() : ResponseData.error("save failed");
+ }
+
+
+ /**
+ * 批量导出测试记录
+ */
+ @RequestMapping(value = "/fileExport")
+ @ResponseBody
+ public void fileExport(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest, HttpServletResponse response) {
+ EntityWrapper queryWrapper = new EntityWrapper<>();
+ queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime());
+ queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime());
+ queryWrapper.orderBy("CREATE_TIME",false);
+ businessConnectTestrecordService.exportUsersToExcel(businessConnectTestrecordService.selectList(queryWrapper), response);
+ }
+
+
+ /**
+ * 修改测试链接记录表
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BusinessConnectTestrecord businessConnectTestrecord) {
+ businessConnectTestrecordService.updateById(businessConnectTestrecord);
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java
new file mode 100644
index 0000000..5a00c42
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.response.ResponseData;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @ClassName DemoController
+ * @Description TODO
+ * @Author lenovo
+ * @Date 2020/6/13 15:38
+ * @Version 1.0
+ */
+@RestController
+@RequestMapping("/demo")
+public class DemoController {
+ /**
+ * 获取mockToken
+ */
+ @PostMapping("/list")
+ @ResponseBody
+ public Object list(){
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java
new file mode 100644
index 0000000..08482c1
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java
@@ -0,0 +1,71 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+/**
+ * 控制器
+ *
+ * @author dev123
+ * @Date 2018-11-19 13:15:14
+ */
+@RestController
+public class TemplateController extends BaseController {
+ private static Logger logger = LoggerFactory.getLogger(TemplateController.class);
+ @Value("${casic.file-down-path}")
+ private String downloadPath;
+
+
+ /**
+ * 文件模板下载
+ */
+ @GetMapping("/template/download")
+ public void doPost(@RequestParam("filename") String filename, HttpServletResponse response)
+ throws ServletException, IOException {
+ logger.info(downloadPath);
+ if (downloadPath.startsWith("/")) {
+ downloadPath = downloadPath.substring(1);
+ }
+ File file = new File(downloadPath, filename);
+ // 获取文件名
+ String fileName = null;
+ if (filename.contains("/")) {
+ fileName = filename.substring(filename.lastIndexOf("/") + 1);
+ } else {
+ fileName = filename;
+ }
+
+ // 设置以流的形式下载文件,这样可以实现任意格式的文件下载
+ response.setContentType("application/octet-stream");
+ response.addHeader("Content-Disposition", " attachment;filename=" + fileName);
+ response.setContentLength((int) file.length());
+
+ FileInputStream fis = null;
+ try {
+ fis = new FileInputStream(file);
+ byte[] buffer = new byte[1024];
+ int readTmp = 0;
+ while ((readTmp = fis.read(buffer)) != -1) {
+ response.getOutputStream().write(buffer, 0, readTmp);
+ }
+ } catch (Exception e) {
+ logger.info(e.getMessage());
+ e.printStackTrace();
+ } finally {
+ response.getOutputStream().flush();
+ response.getOutputStream().close();
+ fis.close();
+ }
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusinessConnectTestrecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusinessConnectTestrecordMapper.java
new file mode 100644
index 0000000..d787992
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusinessConnectTestrecordMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+
+/**
+ *
+ * 测试链接记录 Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2023-05-17
+ */
+public interface BusinessConnectTestrecordMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusinessConnectTestrecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusinessConnectTestrecordMapper.xml
new file mode 100644
index 0000000..0d02de0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusinessConnectTestrecordMapper.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, TEST_PLATFORM AS testPlatform, TEST_URL AS testUrl, TEST_RESULT AS testResult, TEST_TIME AS testTime, CREATE_TIME AS createTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java
new file mode 100644
index 0000000..c9fbd5a
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java
@@ -0,0 +1,56 @@
+package com.casic.missiles.modular.system.dto;
+
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.casic.missiles.modular.system.enums.DictEnum;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+
+@Data
+public class BusinessConnectRecordDTO implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+// @ExportModel(sort = 0, title = "平台类型")
+ @ExcelProperty(value = "平台类型", order = 0)
+ private String testPlatform;
+// @ExportModel(sort = 1, title = "链接地址")
+ @ExcelProperty(value = "链接地址", order = 1)
+ private String testUrl;
+// @ExportModel(sort = 2, title = "测试时间")
+ @ExcelProperty(value = "测试时间", order = 2)
+ private String createTime;
+// @ExportModel(sort = 3, title = "消耗时间/ms")
+ @ExcelProperty(value = "消耗时间/ms", order = 3)
+ private String testTime;
+// @ExportModel(sort = 4, title = "证书号")
+ @ExcelProperty(value = "测试结果", order = 4)
+ private String testResult;
+
+
+ public static List convert(List testrecordList) {
+ List businessConnectRecordDTOList = new ArrayList<>();
+ testrecordList.forEach(testrecord -> {
+ businessConnectRecordDTOList.add(new BusinessConnectRecordDTO(testrecord));
+ });
+ return businessConnectRecordDTOList;
+ }
+
+
+ public BusinessConnectRecordDTO(BusinessConnectTestrecord testrecord) {
+ this.testPlatform = ObjectUtil.isNotEmpty(testrecord.getTestPlatform())?testrecord.getTestPlatform():"-";
+ this.testResult = DictEnum.TEST_STATUS.equals(testrecord.getTestResult()) ? DictEnum.TEST_PASSED : DictEnum.TEST_FAILED;
+ this.testTime = testrecord.getTestTime();
+ this.createTime = DateUtil.formatDateTime(testrecord.getCreateTime());
+ this.testUrl = testrecord.getTestUrl();
+ }
+
+ public BusinessConnectRecordDTO() {
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessReportInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessReportInfoRequest.java
new file mode 100644
index 0000000..9cbe7cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessReportInfoRequest.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+@Data
+public class BusinessReportInfoRequest {
+
+ private String specialItem;
+
+ private String beginTime;
+
+ private String endTime;
+
+ private Long id;
+
+ private Long thirdId;
+
+ //用于初始化和点击事件刷新地图数据区分 1:点击事件,0:初始化
+ private boolean flag;
+
+ private int page;
+
+ //用于是否是实时刷新 true实时刷新
+ private Boolean isReal;
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java
new file mode 100644
index 0000000..a359449
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * @Description: for batch use
+ * @Author: wangpeng
+ * @Date: 2022/11/26 9:51
+ */
+@Data
+public class IdsDTO {
+ @NotNull
+ private List ids;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java
new file mode 100644
index 0000000..5bcaa79
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java
@@ -0,0 +1,26 @@
+package com.casic.missiles.modular.system.enums;
+
+/**
+ * @Description: 字典名枚举
+ * @Author: zt
+ * @Date: 2023/4/20 10:41
+ */
+public interface DictEnum {
+ //测试通过
+ String TEST_PASSED = "通过";
+ //测试不通过
+ String TEST_FAILED = "不通过";
+ //测试状态
+ String TEST_STATUS = "1";
+ //发布平台
+ String PLATE = "plate";
+ //一级标签
+ String FIRST_TAG = "tags";
+ //下发
+ String PROCESS_SEND = "4";
+
+ //投票支持
+ String VOTE_APPROVE = "1";
+ //投票反对
+ String VOTE_AGAINST = "0";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusinessConnectTestrecord.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusinessConnectTestrecord.java
new file mode 100644
index 0000000..5a43beb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusinessConnectTestrecord.java
@@ -0,0 +1,78 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 测试链接记录
+ *
+ *
+ * @author stylefeng123
+ * @since 2023-05-17
+ */
+@Data
+@TableName("business_connect_testrecord")
+public class BusinessConnectTestrecord extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键id
+ */
+ @TableId("ID")
+ private Long id;
+ /**
+ * 测试平台
+ */
+ @TableField("TEST_PLATFORM")
+ private String testPlatform;
+ /**
+ * 链接地址
+ */
+ @TableField("TEST_URL")
+ private String testUrl;
+ /**
+ * 测试结果1:通过,0,无效
+ */
+ @TableField("TEST_RESULT")
+ private String testResult;
+ /**
+ * 消耗时间
+ */
+ @TableField("TEST_TIME")
+ private String testTime;
+ /**
+ * 测试时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 备注
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+
+ public BusinessConnectTestrecord() {
+ }
+
+ public BusinessConnectTestrecord(String[] dto, String plate) {
+ this.testPlatform =plate;
+ this.testUrl = dto[0];
+ this.testTime = dto[1];
+ this.createTime = new Date();
+ this.testResult = "200".equals(dto[2]) ? "1" : "0";
+ }
+
+ @Override
+ protected Serializable pkVal() {
+ return null;
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusinessConnectTestrecordService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusinessConnectTestrecordService.java
new file mode 100644
index 0000000..5f9b0f5
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusinessConnectTestrecordService.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ *
+ * 测试链接记录 服务类
+ *
+ *
+ * @author stylefeng123
+ * @since 2023-05-17
+ */
+public interface IBusinessConnectTestrecordService extends IService {
+
+
+ boolean saveBusinessConnectTestRecord(String plate,String url);
+
+ boolean saveBatchBusinessConnectTestRecord(List> urls);
+
+ //解析文件流
+ List> parseSourceFile(MultipartFile file);
+
+ void exportUsersToExcel(List list, HttpServletResponse response);
+
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9e20bc1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.idea/
+**/target/**
+logs/
+*.iml
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d67ac77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+# casic项目 V1.0.0
+
+## 介绍
+基于SpringBoot,致力于做更简洁的后台管理系统,完美整合springboot + shiro + mybatis-plus !
+基于casic项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),
+可以直接作为一个后台管理系统的脚手架! 目标 `更简洁`,`更规范`!
+
+
+#### 其他
+>* [git地址](http://192.168.0.203:8080/gitbucket)
+>* [本地免登地址](http://localhost:8083/route/mockToken)
+
+
+
+
+
diff --git a/casic-server/pom.xml b/casic-server/pom.xml
new file mode 100644
index 0000000..180d0a8
--- /dev/null
+++ b/casic-server/pom.xml
@@ -0,0 +1,70 @@
+
+
+ 4.0.0
+
+ com.casic
+ casic-xj-connector
+ 1.0.0
+ ../pom.xml
+
+
+ casic-server
+ ${pro.version}
+ jar
+ casic-server
+ casic 的spring boot版本
+
+
+
+
+ com.casic
+ casic-core
+ ${core.version}
+
+
+ com.casic
+ casic-admin-support
+ ${admin.version}
+
+
+
+ com.casic
+ casic-export-support
+ 1.0.0.alpha
+
+
+
+ cn.hutool
+ hutool-all
+ 5.7.2
+
+
+ com.alibaba
+ easyexcel
+ 3.1.0
+
+
+ org.apache.poi
+ poi
+ 4.1.2
+
+
+ org.apache.poi
+ poi-ooxml
+ 4.1.2
+
+
+
+
+
+
+
+ src/main/java
+
+ **/*.xml
+
+
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java
new file mode 100644
index 0000000..38921fc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/BusinessConnectTestrecordController.java
@@ -0,0 +1,125 @@
+package com.casic.missiles.modular.system.controller;
+
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.core.common.constant.factory.PageFactory;
+import com.casic.missiles.modular.system.dto.BusinessReportInfoRequest;
+import com.casic.missiles.modular.system.dto.IdsDTO;
+import com.casic.missiles.modular.system.enums.DictEnum;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+import com.casic.missiles.modular.system.service.IBusinessConnectTestrecordService;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 测试链接记录表控制器
+ *
+ * @author dev
+ * @Date 2023-05-17 11:04:13
+ */
+@Controller
+@RequestMapping("/businessConnectTestrecord")
+public class BusinessConnectTestrecordController extends BaseController {
+
+
+ @Resource
+ private IBusinessConnectTestrecordService businessConnectTestrecordService;
+
+
+ /**
+ * 获取测试链接记录表列表
+ */
+ @RequestMapping(value = "/batchDelete")
+ @ResponseBody
+ public Object batchDelete(@RequestBody @Valid IdsDTO idsDTO) {
+// Assert.isFalse(cn.hutool.core.util.ObjectUtil.isEmpty(idsDTO.getIds()), () -> {
+// throw new BusinessException(BusinessExceptionEnum.ID_NULL);
+// });
+ return ResponseData.success(businessConnectTestrecordService.deleteBatchIds(idsDTO.getIds()));
+ }
+
+ /**
+ * 获取测试链接记录表分页列表
+ */
+ @RequestMapping(value = "/listPage")
+ @ResponseBody
+ public Object listPage(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest) {
+ Page page = new PageFactory().defaultPage();
+ EntityWrapper queryWrapper = new EntityWrapper<>();
+ queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime());
+ queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime());
+ queryWrapper.orderBy("CREATE_TIME", false);
+ page = businessConnectTestrecordService.selectPage(page, queryWrapper);
+ List businessConnectTestrecordList = page.getRecords();
+ businessConnectTestrecordList.forEach(businessConnectTesrecord -> {
+ businessConnectTesrecord.setTestResult(DictEnum.TEST_STATUS.equals(businessConnectTesrecord.getTestResult()) ?
+ DictEnum.TEST_PASSED : DictEnum.TEST_FAILED);
+ });
+ return ResponseData.success(super.packForBT(page));
+ }
+
+ /**
+ * 新增测试链接记录表
+ */
+ @RequestMapping(value = "/add")
+ @ResponseBody
+ public Object add(@RequestBody @Valid BusinessConnectTestrecord businessConnectTestrecord) {
+// Assert.isFalse(ObjectUtil.isEmpty(businessConnectTestrecord.getTestUrl()), () -> {
+// throw new BusinessException(BusinessExceptionEnum.TEST_URL_NULL);
+// });
+ return businessConnectTestrecordService.saveBusinessConnectTestRecord(businessConnectTestrecord.getTestPlatform(), businessConnectTestrecord.getTestUrl()) ?
+ ResponseData.success() : ResponseData.error("save failed");
+ }
+
+ /**
+ * 批量导入测试
+ */
+ @RequestMapping(value = "/fileImport", method = RequestMethod.POST)
+ @ResponseBody
+ public Object fileImport(@RequestParam("file") MultipartFile file) {
+// Assert.isFalse(Objects.isNull(file), () -> {
+// throw new BusinessException(BusinessExceptionEnum.FILE_NULL);
+// });
+ List> urlList = businessConnectTestrecordService.parseSourceFile(file);
+ return businessConnectTestrecordService.saveBatchBusinessConnectTestRecord(urlList) ?
+ ResponseData.success() : ResponseData.error("save failed");
+ }
+
+
+ /**
+ * 批量导出测试记录
+ */
+ @RequestMapping(value = "/fileExport")
+ @ResponseBody
+ public void fileExport(@RequestBody @Valid BusinessReportInfoRequest reportInfoRequest, HttpServletResponse response) {
+ EntityWrapper queryWrapper = new EntityWrapper<>();
+ queryWrapper.ge(ObjectUtil.isNotEmpty(reportInfoRequest.getBeginTime()), "CREATE_TIME", reportInfoRequest.getBeginTime());
+ queryWrapper.le(ObjectUtil.isNotEmpty(reportInfoRequest.getEndTime()), "CREATE_TIME", reportInfoRequest.getEndTime());
+ queryWrapper.orderBy("CREATE_TIME",false);
+ businessConnectTestrecordService.exportUsersToExcel(businessConnectTestrecordService.selectList(queryWrapper), response);
+ }
+
+
+ /**
+ * 修改测试链接记录表
+ */
+ @RequestMapping(value = "/update")
+ @ResponseBody
+ public Object update(BusinessConnectTestrecord businessConnectTestrecord) {
+ businessConnectTestrecordService.updateById(businessConnectTestrecord);
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java
new file mode 100644
index 0000000..5a00c42
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/DemoController.java
@@ -0,0 +1,29 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.response.ResponseData;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @ClassName DemoController
+ * @Description TODO
+ * @Author lenovo
+ * @Date 2020/6/13 15:38
+ * @Version 1.0
+ */
+@RestController
+@RequestMapping("/demo")
+public class DemoController {
+ /**
+ * 获取mockToken
+ */
+ @PostMapping("/list")
+ @ResponseBody
+ public Object list(){
+ return ResponseData.success();
+ }
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java
new file mode 100644
index 0000000..08482c1
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/controller/TemplateController.java
@@ -0,0 +1,71 @@
+package com.casic.missiles.modular.system.controller;
+
+import com.casic.missiles.core.base.controller.BaseController;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+/**
+ * 控制器
+ *
+ * @author dev123
+ * @Date 2018-11-19 13:15:14
+ */
+@RestController
+public class TemplateController extends BaseController {
+ private static Logger logger = LoggerFactory.getLogger(TemplateController.class);
+ @Value("${casic.file-down-path}")
+ private String downloadPath;
+
+
+ /**
+ * 文件模板下载
+ */
+ @GetMapping("/template/download")
+ public void doPost(@RequestParam("filename") String filename, HttpServletResponse response)
+ throws ServletException, IOException {
+ logger.info(downloadPath);
+ if (downloadPath.startsWith("/")) {
+ downloadPath = downloadPath.substring(1);
+ }
+ File file = new File(downloadPath, filename);
+ // 获取文件名
+ String fileName = null;
+ if (filename.contains("/")) {
+ fileName = filename.substring(filename.lastIndexOf("/") + 1);
+ } else {
+ fileName = filename;
+ }
+
+ // 设置以流的形式下载文件,这样可以实现任意格式的文件下载
+ response.setContentType("application/octet-stream");
+ response.addHeader("Content-Disposition", " attachment;filename=" + fileName);
+ response.setContentLength((int) file.length());
+
+ FileInputStream fis = null;
+ try {
+ fis = new FileInputStream(file);
+ byte[] buffer = new byte[1024];
+ int readTmp = 0;
+ while ((readTmp = fis.read(buffer)) != -1) {
+ response.getOutputStream().write(buffer, 0, readTmp);
+ }
+ } catch (Exception e) {
+ logger.info(e.getMessage());
+ e.printStackTrace();
+ } finally {
+ response.getOutputStream().flush();
+ response.getOutputStream().close();
+ fis.close();
+ }
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusinessConnectTestrecordMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusinessConnectTestrecordMapper.java
new file mode 100644
index 0000000..d787992
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/BusinessConnectTestrecordMapper.java
@@ -0,0 +1,16 @@
+package com.casic.missiles.modular.system.dao;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+
+/**
+ *
+ * 测试链接记录 Mapper 接口
+ *
+ *
+ * @author stylefeng123
+ * @since 2023-05-17
+ */
+public interface BusinessConnectTestrecordMapper extends BaseMapper {
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusinessConnectTestrecordMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusinessConnectTestrecordMapper.xml
new file mode 100644
index 0000000..0d02de0
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dao/mapping/BusinessConnectTestrecordMapper.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID AS id, TEST_PLATFORM AS testPlatform, TEST_URL AS testUrl, TEST_RESULT AS testResult, TEST_TIME AS testTime, CREATE_TIME AS createTime, DESCRIPTION AS description
+
+
+
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java
new file mode 100644
index 0000000..c9fbd5a
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessConnectRecordDTO.java
@@ -0,0 +1,56 @@
+package com.casic.missiles.modular.system.dto;
+
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.casic.missiles.modular.system.enums.DictEnum;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+
+@Data
+public class BusinessConnectRecordDTO implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+// @ExportModel(sort = 0, title = "平台类型")
+ @ExcelProperty(value = "平台类型", order = 0)
+ private String testPlatform;
+// @ExportModel(sort = 1, title = "链接地址")
+ @ExcelProperty(value = "链接地址", order = 1)
+ private String testUrl;
+// @ExportModel(sort = 2, title = "测试时间")
+ @ExcelProperty(value = "测试时间", order = 2)
+ private String createTime;
+// @ExportModel(sort = 3, title = "消耗时间/ms")
+ @ExcelProperty(value = "消耗时间/ms", order = 3)
+ private String testTime;
+// @ExportModel(sort = 4, title = "证书号")
+ @ExcelProperty(value = "测试结果", order = 4)
+ private String testResult;
+
+
+ public static List convert(List testrecordList) {
+ List businessConnectRecordDTOList = new ArrayList<>();
+ testrecordList.forEach(testrecord -> {
+ businessConnectRecordDTOList.add(new BusinessConnectRecordDTO(testrecord));
+ });
+ return businessConnectRecordDTOList;
+ }
+
+
+ public BusinessConnectRecordDTO(BusinessConnectTestrecord testrecord) {
+ this.testPlatform = ObjectUtil.isNotEmpty(testrecord.getTestPlatform())?testrecord.getTestPlatform():"-";
+ this.testResult = DictEnum.TEST_STATUS.equals(testrecord.getTestResult()) ? DictEnum.TEST_PASSED : DictEnum.TEST_FAILED;
+ this.testTime = testrecord.getTestTime();
+ this.createTime = DateUtil.formatDateTime(testrecord.getCreateTime());
+ this.testUrl = testrecord.getTestUrl();
+ }
+
+ public BusinessConnectRecordDTO() {
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessReportInfoRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessReportInfoRequest.java
new file mode 100644
index 0000000..9cbe7cc
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/BusinessReportInfoRequest.java
@@ -0,0 +1,27 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+@Data
+public class BusinessReportInfoRequest {
+
+ private String specialItem;
+
+ private String beginTime;
+
+ private String endTime;
+
+ private Long id;
+
+ private Long thirdId;
+
+ //用于初始化和点击事件刷新地图数据区分 1:点击事件,0:初始化
+ private boolean flag;
+
+ private int page;
+
+ //用于是否是实时刷新 true实时刷新
+ private Boolean isReal;
+
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java
new file mode 100644
index 0000000..a359449
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/dto/IdsDTO.java
@@ -0,0 +1,17 @@
+package com.casic.missiles.modular.system.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * @Description: for batch use
+ * @Author: wangpeng
+ * @Date: 2022/11/26 9:51
+ */
+@Data
+public class IdsDTO {
+ @NotNull
+ private List ids;
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java
new file mode 100644
index 0000000..5bcaa79
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/enums/DictEnum.java
@@ -0,0 +1,26 @@
+package com.casic.missiles.modular.system.enums;
+
+/**
+ * @Description: 字典名枚举
+ * @Author: zt
+ * @Date: 2023/4/20 10:41
+ */
+public interface DictEnum {
+ //测试通过
+ String TEST_PASSED = "通过";
+ //测试不通过
+ String TEST_FAILED = "不通过";
+ //测试状态
+ String TEST_STATUS = "1";
+ //发布平台
+ String PLATE = "plate";
+ //一级标签
+ String FIRST_TAG = "tags";
+ //下发
+ String PROCESS_SEND = "4";
+
+ //投票支持
+ String VOTE_APPROVE = "1";
+ //投票反对
+ String VOTE_AGAINST = "0";
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusinessConnectTestrecord.java b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusinessConnectTestrecord.java
new file mode 100644
index 0000000..5a43beb
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/model/BusinessConnectTestrecord.java
@@ -0,0 +1,78 @@
+package com.casic.missiles.modular.system.model;
+
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 测试链接记录
+ *
+ *
+ * @author stylefeng123
+ * @since 2023-05-17
+ */
+@Data
+@TableName("business_connect_testrecord")
+public class BusinessConnectTestrecord extends Model {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键id
+ */
+ @TableId("ID")
+ private Long id;
+ /**
+ * 测试平台
+ */
+ @TableField("TEST_PLATFORM")
+ private String testPlatform;
+ /**
+ * 链接地址
+ */
+ @TableField("TEST_URL")
+ private String testUrl;
+ /**
+ * 测试结果1:通过,0,无效
+ */
+ @TableField("TEST_RESULT")
+ private String testResult;
+ /**
+ * 消耗时间
+ */
+ @TableField("TEST_TIME")
+ private String testTime;
+ /**
+ * 测试时间
+ */
+ @TableField("CREATE_TIME")
+ private Date createTime;
+ /**
+ * 备注
+ */
+ @TableField("DESCRIPTION")
+ private String description;
+
+
+ public BusinessConnectTestrecord() {
+ }
+
+ public BusinessConnectTestrecord(String[] dto, String plate) {
+ this.testPlatform =plate;
+ this.testUrl = dto[0];
+ this.testTime = dto[1];
+ this.createTime = new Date();
+ this.testResult = "200".equals(dto[2]) ? "1" : "0";
+ }
+
+ @Override
+ protected Serializable pkVal() {
+ return null;
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusinessConnectTestrecordService.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusinessConnectTestrecordService.java
new file mode 100644
index 0000000..5f9b0f5
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/IBusinessConnectTestrecordService.java
@@ -0,0 +1,31 @@
+package com.casic.missiles.modular.system.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ *
+ * 测试链接记录 服务类
+ *
+ *
+ * @author stylefeng123
+ * @since 2023-05-17
+ */
+public interface IBusinessConnectTestrecordService extends IService {
+
+
+ boolean saveBusinessConnectTestRecord(String plate,String url);
+
+ boolean saveBatchBusinessConnectTestRecord(List> urls);
+
+ //解析文件流
+ List> parseSourceFile(MultipartFile file);
+
+ void exportUsersToExcel(List list, HttpServletResponse response);
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusinessConnectTestrecordServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusinessConnectTestrecordServiceImpl.java
new file mode 100644
index 0000000..f9f5e66
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/system/service/impl/BusinessConnectTestrecordServiceImpl.java
@@ -0,0 +1,195 @@
+package com.casic.missiles.modular.system.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+//import com.casic.missiles.core.base.service.IBaseExportService;
+import com.casic.missiles.core.base.response.ResponseData;
+import com.casic.missiles.modular.system.dao.BusinessConnectTestrecordMapper;
+import com.casic.missiles.modular.system.dto.BusinessConnectRecordDTO;
+import com.casic.missiles.modular.system.model.BusinessConnectTestrecord;
+import com.casic.missiles.modular.system.service.IBusinessConnectTestrecordService;
+import com.casic.missiles.modular.system.ssl.LinkTestUtil;
+import com.casic.missiles.modular.system.util.ExcelUtils;
+import org.apache.commons.collections4.ListUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.util.FileCopyUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+
+
+/**
+ *
+ * 测试链接记录 服务实现类
+ *
+ *
+ * @author stylefeng123
+ * @since 2023-05-17
+ */
+@Service
+public class BusinessConnectTestrecordServiceImpl extends ServiceImpl implements IBusinessConnectTestrecordService {
+
+
+ @Autowired
+// private IBaseExportService iBaseExportService;
+
+ protected static final Map mapperExcel = new HashMap<>();
+
+ static {
+ mapperExcel.put("链接地址", "testUrl");
+ }
+
+
+ @Value("${casic.file-down-path}")
+ private String downloadPath;
+
+ @Override
+ public boolean saveBusinessConnectTestRecord(String plate,String url) {
+
+ String result = LinkTestUtil.testUrl(url);
+ return this.insert(new BusinessConnectTestrecord(result.split(","), plate));
+ }
+
+ @Override
+ public boolean saveBatchBusinessConnectTestRecord(List> urls) {
+ //小于50个测试地址直接返回,大于50用线程返回
+ if (ObjectUtil.isNotEmpty(urls) && urls.size() <= 20) {
+ List testrecordList = new ArrayList<>();
+ urls.forEach(s -> {
+ String result = LinkTestUtil.testUrl(s.get("url") + "");
+ testrecordList.add(new BusinessConnectTestrecord(result.split(","), s.get("plate") + ""));
+ });
+ return this.insertBatch(testrecordList);
+ }
+ List>> listList = ListUtils.partition(urls, 20);
+ ExecutorService es = Executors.newFixedThreadPool(10);
+ List testrecordTasks = new ArrayList<>();
+ listList.forEach(list -> {
+ testrecordTasks.add(new BusinessConnectTestrecordTask(list));
+
+ });
+ List> futures = null;
+ try {
+ futures = es.invokeAll(testrecordTasks);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ es.shutdown();
+
+ //汇总各个子线程的数据结果
+ //这里处理线程结果
+ while (futures.size() > 0) {
+ for (int i = 0; i < futures.size(); i++) {
+ Future mapFuture = futures.get(i);
+ System.out.println("index:" + i + ",future:" + mapFuture.isDone());
+ if (mapFuture.isDone()) futures.remove(futures.get(i));
+ }
+ }
+ return true;
+ }
+
+ class BusinessConnectTestrecordTask implements Callable {
+
+ List> connectTestrecordList;
+
+ public BusinessConnectTestrecordTask(List> list) {
+ this.connectTestrecordList = list;
+ }
+
+ @Override
+ public Boolean call() throws Exception {
+ List testrecordList = new ArrayList<>();
+ connectTestrecordList.forEach(s -> {
+ String result = LinkTestUtil.testUrl(s.get("url") + "");
+ testrecordList.add(new BusinessConnectTestrecord(result.split(","), s.get("plate") + ""));
+ });
+ return insertBatch(testrecordList);
+ }
+ }
+
+ @Override
+ public List> parseSourceFile(MultipartFile file) {
+ List> stringList = new ArrayList<>();
+ try {
+ File tempFile = new File(downloadPath , System.currentTimeMillis() + file.getOriginalFilename());
+ if (!tempFile.exists()) {
+ tempFile.createNewFile();
+ }
+ FileCopyUtils.copy(file.getBytes(), tempFile);
+ FileInputStream inputStream = new FileInputStream(tempFile);
+
+ List> list = ExcelUtils.getListByExcel(inputStream, file.getOriginalFilename());
+ for (int i = 1; i < list.size(); i++) {
+ HashMap map = new HashMap<>();
+ List