Compare commits

...

18 Commits
0.9.8 ... 1.0.0

Author SHA1 Message Date
曾文豪
38d6bae04f publish 1.0.0 2023-04-26 14:43:43 +08:00
曾文豪
e49bf32117 perf:增加参数配置时的额外校验 2023-04-23 16:35:48 +08:00
曾文豪
bc3ea0e10c perf:依赖更新 2023-04-23 16:32:29 +08:00
曾文豪
305dc743b2 chore:更新gitlab-ci 2023-04-21 15:43:07 +08:00
曾文豪
6f0360bad5 chore:更新gitlab-ci 2023-04-21 15:37:43 +08:00
曾文豪
5012c4bd53 chore:更新gitlab-ci 2023-04-21 15:29:07 +08:00
曾文豪
dd69b3bb1f perf:依赖更新 2023-04-21 15:28:21 +08:00
曾文豪
33d20c518e publish 0.9.14 2023-04-17 15:23:45 +08:00
曾文豪
d0935cbda0 publish 0.9.13 2023-04-17 15:08:24 +08:00
曾文豪
3ed9a47c66 publish 0.9.13 2023-04-17 14:47:24 +08:00
曾文豪
3f6989d039 publish 0.9.12 2023-04-11 16:32:16 +08:00
曾文豪
6f6e997fd3 perf:版本号现在可以从外部目录中获取 2023-04-11 16:18:37 +08:00
曾文豪
d9987b41ea publish 0.9.11 2023-04-10 16:48:18 +08:00
曾文豪
c33ad6075e perf:调整导入流程的条数 2023-04-10 16:48:02 +08:00
曾文豪
a32c333a6c publish 0.9.10 2023-04-10 14:22:45 +08:00
曾文豪
ed66f035e5 perf:调整导入流程的泛型 2023-04-10 14:22:20 +08:00
曾文豪
f5dd706e6e perf:调整demo 2023-04-10 14:21:15 +08:00
曾文豪
6766694272 publish 0.9.9 2023-04-06 10:29:37 +08:00
28 changed files with 328 additions and 111 deletions

View File

@@ -9,8 +9,8 @@ deploy-jar:
rules: rules:
- if: $CI_COMMIT_TAG - if: $CI_COMMIT_TAG
script: script:
- mvn clean deploy -Dmaven.test.skip -DaltDeploymentRepository=master::default::file:/usr/local/nginx/html/kepai-repo - mvn clean deploy -Dmaven.test.skip -DaltDeploymentRepository=master::default::file:/usr/local/nginx/html/tiesheng-repo
- cd /usr/local/nginx/html/kepai-repo - cd /usr/local/nginx/html/tiesheng-repo
- git checkout master - git checkout master
- git pull - git pull
- git add . - git add .

24
pom.xml
View File

@@ -6,7 +6,7 @@
<groupId>com.tiesheng.springboot-parent</groupId> <groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-parent</artifactId> <artifactId>springboot-parent</artifactId>
<version>0.9.8</version> <version>1.0.0</version>
<packaging>pom</packaging> <packaging>pom</packaging>
<name>springboot-parent</name> <name>springboot-parent</name>
<description>杭州铁晟科技有限公司基础依赖</description> <description>杭州铁晟科技有限公司基础依赖</description>
@@ -57,55 +57,55 @@
<dependency> <dependency>
<groupId>com.tiesheng.springboot-parent</groupId> <groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-database</artifactId> <artifactId>springboot-database</artifactId>
<version>0.9.8</version> <version>1.0.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.tiesheng.springboot-parent</groupId> <groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-login</artifactId> <artifactId>springboot-login</artifactId>
<version>0.9.8</version> <version>1.0.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.tiesheng.springboot-parent</groupId> <groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-web</artifactId> <artifactId>springboot-web</artifactId>
<version>0.9.8</version> <version>1.0.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.tiesheng.springboot-parent</groupId> <groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-util</artifactId> <artifactId>springboot-util</artifactId>
<version>0.9.8</version> <version>1.0.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.tiesheng.springboot-parent</groupId> <groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-platform</artifactId> <artifactId>springboot-platform</artifactId>
<version>0.9.8</version> <version>1.0.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.tiesheng.springboot-parent</groupId> <groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-message</artifactId> <artifactId>springboot-message</artifactId>
<version>0.9.8</version> <version>1.0.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.tiesheng.springboot-parent</groupId> <groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-encrypt</artifactId> <artifactId>springboot-encrypt</artifactId>
<version>0.9.8</version> <version>1.0.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.tiesheng.springboot-parent</groupId> <groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-annotation</artifactId> <artifactId>springboot-annotation</artifactId>
<version>0.9.8</version> <version>1.0.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.tiesheng.springboot-parent</groupId> <groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-poi</artifactId> <artifactId>springboot-poi</artifactId>
<version>0.9.8</version> <version>1.0.0</version>
</dependency> </dependency>
<dependency> <dependency>
@@ -117,7 +117,7 @@
<dependency> <dependency>
<groupId>com.baomidou</groupId> <groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId> <artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version> <version>3.5.3</version>
</dependency> </dependency>
</dependencies> </dependencies>
@@ -126,7 +126,7 @@
<pluginRepositories> <pluginRepositories>
<pluginRepository> <pluginRepository>
<id>kepai-repo-plugin</id> <id>kepai-repo-plugin</id>
<url>http://git.kepai365.com/zeng_wenhao/kepai-repo/raw/master</url> <url>http://git.kepai365.com/tiesheng/repository/raw/master</url>
</pluginRepository> </pluginRepository>
</pluginRepositories> </pluginRepositories>

Binary file not shown.

View File

@@ -6,7 +6,7 @@
<parent> <parent>
<groupId>com.tiesheng.springboot-parent</groupId> <groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-parent</artifactId> <artifactId>springboot-parent</artifactId>
<version>0.9.8</version> <version>1.0.0</version>
</parent> </parent>
<artifactId>springboot-ademo</artifactId> <artifactId>springboot-ademo</artifactId>
@@ -25,12 +25,18 @@
<groupId>com.tiesheng.springboot-parent</groupId> <groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-web</artifactId> <artifactId>springboot-web</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
</dependency>
</dependencies> </dependencies>
<repositories> <repositories>
<repository> <repository>
<id>kepai-repo</id> <id>kepai-repo</id>
<url>http://git.kepai365.com/zeng_wenhao/kepai-repo/raw/master</url> <url>http://git.kepai365.com/tiesheng/repository/raw/master</url>
</repository> </repository>
</repositories> </repositories>

View File

@@ -1,10 +1,17 @@
package com.tiesheng.demo.controller; package com.tiesheng.demo.controller;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.TimeInterval;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import cn.hutool.log.LogFactory; import cn.hutool.log.LogFactory;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.sax.handler.RowHandler;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import com.tiesheng.annotation.token.TokenIgnore; import com.tiesheng.annotation.token.TokenIgnore;
import com.tiesheng.core.service.CoreMessageService; import com.tiesheng.core.service.CoreMessageService;
import com.tiesheng.demo.pojos.PoiBean;
import com.tiesheng.demo.pojos.TestFile; import com.tiesheng.demo.pojos.TestFile;
import com.tiesheng.login.config.token.TsTokenConfig; import com.tiesheng.login.config.token.TsTokenConfig;
import com.tiesheng.login.config.token.bean.TokenBean; import com.tiesheng.login.config.token.bean.TokenBean;
@@ -19,6 +26,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.util.List; import java.util.List;
/** /**
@@ -121,4 +129,43 @@ public class TestController {
return ApiResp.respOK(""); return ApiResp.respOK("");
} }
@RequestMapping("poi")
@TokenIgnore
public ApiResp<String> poi() {
TimeInterval timeInterval = new TimeInterval();
FileUploadPath file = FileUploadPath.file("/upload/test.xlsx");
EasyExcel.read(new File(file.getAbsolutePath()), PoiBean.class, new ReadListener<PoiBean>() {
@Override
public void invoke(PoiBean poiBean, AnalysisContext analysisContext) {
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}).sheet().doRead();
System.out.println("timeInterval: " + timeInterval.interval());
return ApiResp.respOK("");
}
@RequestMapping("poiTool")
@TokenIgnore
public ApiResp<String> poiTool() {
TimeInterval timeInterval = new TimeInterval();
FileUploadPath file = FileUploadPath.file("/upload/test.xlsx");
ExcelUtil.getReader(new File(file.getAbsolutePath())).read();
System.out.println("timeInterval: " + timeInterval.interval());
return ApiResp.respOK("");
}
} }

View File

@@ -0,0 +1,75 @@
package com.tiesheng.demo.pojos;
import com.alibaba.excel.annotation.ExcelProperty;
public class PoiBean {
@ExcelProperty("学院")
private String college;
private String type;
private String name;
private String no;
private String sex;
private String fdy;
private String fdyNo;
///////////////////////////////////////////////////////////////////////////
// setter\getter
///////////////////////////////////////////////////////////////////////////
public String getCollege() {
return college;
}
public void setCollege(String college) {
this.college = college;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getFdy() {
return fdy;
}
public void setFdy(String fdy) {
this.fdy = fdy;
}
public String getFdyNo() {
return fdyNo;
}
public void setFdyNo(String fdyNo) {
this.fdyNo = fdyNo;
}
}

View File

@@ -7,31 +7,10 @@
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"
name="viewport" name="viewport"
/> />
<title>钉钉授权</title>
</head> </head>
<body> <body>
<script src="dingtalk.open.js"></script>
<script type="text/javascript"> <script type="text/javascript">
function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return decodeURI(r[2]);
return null;
}
dd.runtime.permission.requestAuthCode({
corpId: getQueryString("corpId"),
onSuccess: function (result) {
let search = window.location.search + "&code=" + result.code;
window.location.href = "/auth/ding/oauth2/" + getQueryString("service") + search;
},
onFail: function (err) {
window.location.href = "./error.html?message=" + JSON.stringify(err);
}
})
</script> </script>
</body> </body>
</html> </html>

View File

@@ -7,30 +7,10 @@
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"
name="viewport" name="viewport"
/> />
<title>钉钉授权</title>
</head> </head>
<body> <body>
<script src="dingtalk.open.js"></script>
<script type="text/javascript"> <script type="text/javascript">
function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return decodeURI(r[2]);
return null;
}
dd.runtime.permission.requestAuthCode({
corpId: getQueryString("corpId"),
onSuccess: function (result) {
let search = window.location.search + "&code=" + result.code;
window.location.href = "/auth/ding/oauth2/" + getQueryString("service") + search;
},
onFail: function (err) {
window.location.href = "./error.html?message=" + JSON.stringify(err);
}
})
</script> </script>
</body> </body>

View File

@@ -6,7 +6,7 @@
<parent> <parent>
<groupId>com.tiesheng.springboot-parent</groupId> <groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-parent</artifactId> <artifactId>springboot-parent</artifactId>
<version>0.9.8</version> <version>1.0.0</version>
</parent> </parent>
<artifactId>springboot-annotation</artifactId> <artifactId>springboot-annotation</artifactId>

View File

@@ -6,7 +6,7 @@
<parent> <parent>
<groupId>com.tiesheng.springboot-parent</groupId> <groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-parent</artifactId> <artifactId>springboot-parent</artifactId>
<version>0.9.8</version> <version>1.0.0</version>
</parent> </parent>
<artifactId>springboot-database</artifactId> <artifactId>springboot-database</artifactId>

View File

@@ -6,7 +6,7 @@
<parent> <parent>
<groupId>com.tiesheng.springboot-parent</groupId> <groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-parent</artifactId> <artifactId>springboot-parent</artifactId>
<version>0.9.8</version> <version>1.0.0</version>
</parent> </parent>
<artifactId>springboot-encrypt</artifactId> <artifactId>springboot-encrypt</artifactId>

View File

@@ -6,7 +6,7 @@
<parent> <parent>
<groupId>com.tiesheng.springboot-parent</groupId> <groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-parent</artifactId> <artifactId>springboot-parent</artifactId>
<version>0.9.8</version> <version>1.0.0</version>
</parent> </parent>
<artifactId>springboot-login</artifactId> <artifactId>springboot-login</artifactId>

View File

@@ -6,7 +6,7 @@
<parent> <parent>
<groupId>com.tiesheng.springboot-parent</groupId> <groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-parent</artifactId> <artifactId>springboot-parent</artifactId>
<version>0.9.8</version> <version>1.0.0</version>
</parent> </parent>
<artifactId>springboot-message</artifactId> <artifactId>springboot-message</artifactId>

View File

@@ -6,7 +6,7 @@
<parent> <parent>
<groupId>com.tiesheng.springboot-parent</groupId> <groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-parent</artifactId> <artifactId>springboot-parent</artifactId>
<version>0.9.8</version> <version>1.0.0</version>
</parent> </parent>
<artifactId>springboot-platform</artifactId> <artifactId>springboot-platform</artifactId>

View File

@@ -6,7 +6,7 @@
<parent> <parent>
<groupId>com.tiesheng.springboot-parent</groupId> <groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-parent</artifactId> <artifactId>springboot-parent</artifactId>
<version>0.9.8</version> <version>1.0.0</version>
</parent> </parent>
<artifactId>springboot-poi</artifactId> <artifactId>springboot-poi</artifactId>

View File

@@ -6,7 +6,7 @@
<parent> <parent>
<groupId>com.tiesheng.springboot-parent</groupId> <groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-parent</artifactId> <artifactId>springboot-parent</artifactId>
<version>0.9.8</version> <version>1.0.0</version>
</parent> </parent>
<artifactId>springboot-util</artifactId> <artifactId>springboot-util</artifactId>
@@ -33,14 +33,14 @@
<dependency> <dependency>
<groupId>cn.hutool</groupId> <groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId> <artifactId>hutool-all</artifactId>
<version>5.8.11</version> <version>5.8.16</version>
</dependency> </dependency>
<!-- fastJson --> <!-- fastJson -->
<dependency> <dependency>
<groupId>com.alibaba</groupId> <groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId> <artifactId>fastjson</artifactId>
<version>1.2.78</version> <version>1.2.83</version>
</dependency> </dependency>
<!-- 加解密 --> <!-- 加解密 -->

View File

@@ -5,6 +5,7 @@ import cn.hutool.core.comparator.VersionComparator;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.spring.SpringUtil; import cn.hutool.extra.spring.SpringUtil;
import cn.hutool.json.JSONUtil;
import cn.hutool.log.LogFactory; import cn.hutool.log.LogFactory;
import com.tiesheng.util.exception.ApiException; import com.tiesheng.util.exception.ApiException;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -13,6 +14,7 @@ import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -71,12 +73,24 @@ public class GlobalConfig {
} }
PathMatchingResourcePatternResolver patternResolver = new PathMatchingResourcePatternResolver(); PathMatchingResourcePatternResolver patternResolver = new PathMatchingResourcePatternResolver();
try { try {
Resource[] resources = patternResolver.getResources(String.format("classpath*:static/%s*/index.html", htmlDir));
List<String> versions = new ArrayList<>(); List<String> versions = new ArrayList<>();
// jar包中的资源
Resource[] resources = patternResolver.getResources(String.format("classpath*:static/%s*/index.html", htmlDir));
for (Resource resource : resources) { for (Resource resource : resources) {
String path = FileUtil.normalize(resource.getURL().getPath()); String path = FileUtil.normalize(resource.getURL().getPath());
versions.add(StrUtil.subBetween(path, htmlDir, "/index.html")); versions.add(StrUtil.subBetween(path, htmlDir, "/index.html"));
} }
// 目录中的资源
String folder = String.format("%s/static/%s", System.getProperty("user.dir"), htmlDir);
if (FileUtil.exist(folder)) {
File[] files = FileUtil.ls(folder);
for (File file : files) {
versions.add(StrUtil.subAfter(file.getAbsolutePath(), htmlDir, true));
}
}
if (CollUtil.isEmpty(versions)) { if (CollUtil.isEmpty(versions)) {
throw new ApiException("无法重定向,请检查资源"); throw new ApiException("无法重定向,请检查资源");
} }

View File

@@ -16,7 +16,7 @@ import javax.annotation.PostConstruct;
@ConfigurationProperties(prefix = "tiesheng.ip2region") @ConfigurationProperties(prefix = "tiesheng.ip2region")
public class Ip2regionConfig { public class Ip2regionConfig {
private String dbUrl = "http://git.kepai365.com/zeng_wenhao/kepai-repo/raw/master/ipdb/ip2region.xdb"; private String dbUrl = "http://git.kepai365.com/tiesheng/repository/raw/master/ipdb/ip2region.xdb";
private String dbPath = System.getProperty("user.dir") + "/runtime/ip2region/ip2region.xdb"; private String dbPath = System.getProperty("user.dir") + "/runtime/ip2region/ip2region.xdb";
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////

View File

@@ -6,7 +6,7 @@
<parent> <parent>
<groupId>com.tiesheng.springboot-parent</groupId> <groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-parent</artifactId> <artifactId>springboot-parent</artifactId>
<version>0.9.8</version> <version>1.0.0</version>
</parent> </parent>
<artifactId>springboot-web</artifactId> <artifactId>springboot-web</artifactId>

View File

@@ -14,6 +14,7 @@ import com.tiesheng.core.pojos.dto.config.ConfigFuncDTO;
import com.tiesheng.core.pojos.dto.config.ConfigSystemDTO; import com.tiesheng.core.pojos.dto.config.ConfigSystemDTO;
import com.tiesheng.core.pojos.dto.config.EnumTypeDTO; import com.tiesheng.core.pojos.dto.config.EnumTypeDTO;
import com.tiesheng.core.service.CoreConfigService; import com.tiesheng.core.service.CoreConfigService;
import com.tiesheng.core.service.TieshengWebConfigurer;
import com.tiesheng.util.exception.ApiException; import com.tiesheng.util.exception.ApiException;
import com.tiesheng.util.pojos.ApiResp; import com.tiesheng.util.pojos.ApiResp;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -31,6 +32,8 @@ public class ConfigController {
@Autowired @Autowired
CoreConfigService coreConfigService; CoreConfigService coreConfigService;
@Autowired
TieshengWebConfigurer tieshengWebConfigurer;
/** /**
@@ -72,6 +75,8 @@ public class ConfigController {
configKey.setConfigVal(dto.getConfigVal()); configKey.setConfigVal(dto.getConfigVal());
configKey.setRemark(dto.getRemark()); configKey.setRemark(dto.getRemark());
configKey.setExtra(dto.getExtra()); configKey.setExtra(dto.getExtra());
tieshengWebConfigurer.configSystemCheck(configKey);
coreConfigService.updateById(configKey); coreConfigService.updateById(configKey);
return ApiResp.respOK(""); return ApiResp.respOK("");

View File

@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.tiesheng.core.pojos.DaoBase; import com.tiesheng.core.pojos.DaoBase;
import java.util.Date; import java.util.Date;
/** /**
@@ -37,12 +36,6 @@ public class CoreLogProcess extends DaoBase {
@TableField(value = "fail_num") @TableField(value = "fail_num")
private Integer failNum; private Integer failNum;
/**
* 失败的文件
*/
@TableField(value = "fail_file")
private String failFile;
/** /**
* 类型import-导入sync-同步) * 类型import-导入sync-同步)
*/ */
@@ -50,11 +43,29 @@ public class CoreLogProcess extends DaoBase {
private String type; private String type;
/** /**
* 状态(0-未完成1-完成) * 状态0-未完成1-完成
*/ */
@TableField(value = "`status`") @TableField(value = "`status`")
private Integer status; private Integer status;
/**
* 失败的文件
*/
@TableField(value = "fail_file")
private String failFile;
/**
* 异常说明
*/
@TableField(value = "error")
private String error;
/**
* 进度
*/
@TableField(value = "`process`")
private Integer process;
/** /**
* 获取标题 * 获取标题
* *
@@ -127,14 +138,6 @@ public class CoreLogProcess extends DaoBase {
this.failNum = failNum; this.failNum = failNum;
} }
public String getFailFile() {
return failFile;
}
public void setFailFile(String failFile) {
this.failFile = failFile;
}
/** /**
* 获取类型import-导入sync-同步) * 获取类型import-导入sync-同步)
* *
@@ -154,20 +157,74 @@ public class CoreLogProcess extends DaoBase {
} }
/** /**
* 获取状态(0-未完成1-完成) * 获取状态0-未完成1-完成
* *
* @return status - 状态(0-未完成1-完成) * @return status - 状态0-未完成1-完成
*/ */
public Integer getStatus() { public Integer getStatus() {
return status; return status;
} }
/** /**
* 设置状态(0-未完成1-完成) * 设置状态0-未完成1-完成
* *
* @param status 状态(0-未完成1-完成) * @param status 状态0-未完成1-完成
*/ */
public void setStatus(Integer status) { public void setStatus(Integer status) {
this.status = status; this.status = status;
} }
}
/**
* 获取失败的文件
*
* @return fail_file - 失败的文件
*/
public String getFailFile() {
return failFile;
}
/**
* 设置失败的文件
*
* @param failFile 失败的文件
*/
public void setFailFile(String failFile) {
this.failFile = failFile;
}
/**
* 获取异常说明
*
* @return error - 异常说明
*/
public String getError() {
return error;
}
/**
* 设置异常说明
*
* @param error 异常说明
*/
public void setError(String error) {
this.error = error;
}
/**
* 获取进度
*
* @return process - 进度
*/
public Integer getProcess() {
return process;
}
/**
* 设置进度
*
* @param process 进度
*/
public void setProcess(Integer process) {
this.process = process;
}
}

View File

@@ -13,12 +13,16 @@ public class ProcessDetailVo {
private Integer failNum; private Integer failNum;
private Integer process;
private String type; private String type;
private Integer status; private Integer status;
private String failFile; private String failFile;
private String error;
public Integer getStatus() { public Integer getStatus() {
return status; return status;
} }
@@ -74,4 +78,20 @@ public class ProcessDetailVo {
public void setFailFile(String failFile) { public void setFailFile(String failFile) {
this.failFile = failFile; this.failFile = failFile;
} }
public Integer getProcess() {
return process;
}
public void setProcess(Integer process) {
this.process = process;
}
public String getError() {
return error;
}
public void setError(String error) {
this.error = error;
}
} }

View File

@@ -69,7 +69,7 @@ public class CoreLogService extends TsServiceBase<CoreLogOperationMapper, CoreLo
* @param title 标题 * @param title 标题
* @param list 要导入的数据 * @param list 要导入的数据
*/ */
public <T> CoreLogProcess addProcess(String title, List<T> list, ProcessImportConsumer consumer) { public <T> CoreLogProcess addProcess(String title, List<T> list, ProcessImportConsumer<T> consumer) {
if (CollUtil.isEmpty(list)) { if (CollUtil.isEmpty(list)) {
throw new ApiException("文件中不存在数据"); throw new ApiException("文件中不存在数据");
} }
@@ -79,21 +79,28 @@ public class CoreLogService extends TsServiceBase<CoreLogOperationMapper, CoreLo
coreLogProcess.setType("import"); coreLogProcess.setType("import");
coreLogProcess.setSuccessNum(0); coreLogProcess.setSuccessNum(0);
coreLogProcess.setFailNum(0); coreLogProcess.setFailNum(0);
coreLogProcess.setProcess(0);
coreLogProcess.setError("");
coreLogProcessMapper.insert(coreLogProcess); coreLogProcessMapper.insert(coreLogProcess);
ThreadUtil.execute(() -> { ThreadUtil.execute(() -> {
CollUtil.split(list, 100).forEach((it) -> { CollUtil.split(list, 100).forEach((it) -> {
int accept = consumer.accept(it); int accept = 0;
coreLogProcess.setSuccessNum(coreLogProcess.getSuccessNum() + accept); try {
coreLogProcess.setFailNum(coreLogProcess.getFailNum() + 100 - accept); accept = consumer.accept(it);
} catch (Exception e) {
if (coreLogProcess.getFailNum() + coreLogProcess.getSuccessNum() == list.size()) { coreLogProcess.setError(coreLogProcess.getError() + ";" + JSONUtil.toJsonStr(e));
coreLogProcess.setFailFile(consumer.getFailFile());
coreLogProcess.setStatus(1);
} }
coreLogProcess.setProcess(coreLogProcess.getProcess() + it.size());
coreLogProcess.setSuccessNum(coreLogProcess.getSuccessNum() + accept);
coreLogProcess.setFailNum(coreLogProcess.getFailNum() + it.size() - accept);
coreLogProcessMapper.updateById(coreLogProcess); coreLogProcessMapper.updateById(coreLogProcess);
}); });
// 执行结束
coreLogProcess.setFailFile(consumer.getFailFile());
coreLogProcess.setStatus(1);
coreLogProcessMapper.updateById(coreLogProcess);
}); });
@@ -111,24 +118,34 @@ public class CoreLogService extends TsServiceBase<CoreLogOperationMapper, CoreLo
public CoreLogProcess addProcess(String title, ProcessSyncConsumer consumer) { public CoreLogProcess addProcess(String title, ProcessSyncConsumer consumer) {
CoreLogProcess coreLogProcess = new CoreLogProcess(); CoreLogProcess coreLogProcess = new CoreLogProcess();
coreLogProcess.setTitle(title); coreLogProcess.setTitle(title);
coreLogProcess.setTotal(0);
coreLogProcess.setType("sync"); coreLogProcess.setType("sync");
coreLogProcess.setSuccessNum(0); coreLogProcess.setSuccessNum(0);
coreLogProcess.setFailNum(0); coreLogProcess.setFailNum(0);
coreLogProcess.setTotal(0);
coreLogProcess.setProcess(0);
coreLogProcess.setError("");
coreLogProcessMapper.insert(coreLogProcess); coreLogProcessMapper.insert(coreLogProcess);
ThreadUtil.execute(() -> { ThreadUtil.execute(() -> {
int pageSize = 1000; int pageSize = 1000;
int pageNum = 1, lastCount = pageSize; int pageNum = 1, lastCount = pageSize;
while (lastCount == pageSize) { while (lastCount == pageSize) {
lastCount = consumer.accept(pageNum, pageSize); try {
coreLogProcess.setSuccessNum(coreLogProcess.getSuccessNum() + lastCount); lastCount = consumer.accept(pageNum, pageSize);
if (lastCount != pageSize) { coreLogProcess.setTotal(coreLogProcess.getTotal() + lastCount);
coreLogProcess.setStatus(1); coreLogProcess.setProcess(coreLogProcess.getTotal());
coreLogProcess.setSuccessNum(coreLogProcess.getSuccessNum() + lastCount);
} catch (Exception e) {
coreLogProcess.setError(coreLogProcess.getError() + ";" + JSONUtil.toJsonStr(e));
} }
coreLogProcessMapper.updateById(coreLogProcess); coreLogProcessMapper.updateById(coreLogProcess);
pageNum++; pageNum++;
} }
// 执行结束
coreLogProcess.setStatus(1);
coreLogProcessMapper.updateById(coreLogProcess);
}); });
return coreLogProcess; return coreLogProcess;

View File

@@ -29,9 +29,9 @@ public class CorePlatformUniqueService extends TsServiceBase<CorePlatformUniqueM
if (platformUnique == null) { if (platformUnique == null) {
platformUnique = new CorePlatformUnique(); platformUnique = new CorePlatformUnique();
platformUnique.setAppId(loginInfo.getAppId()); platformUnique.setAppId(loginInfo.getAppId());
platformUnique.setPlatform(loginInfo.getPlatform());
platformUnique.setUniqueId(loginInfo.getUnique()); platformUnique.setUniqueId(loginInfo.getUnique());
} }
platformUnique.setPlatform(loginInfo.getPlatform());
platformUnique.setInfo(loginInfo.getInfo()); platformUnique.setInfo(loginInfo.getInfo());
saveOrUpdate(platformUnique); saveOrUpdate(platformUnique);

View File

@@ -2,6 +2,7 @@ package com.tiesheng.core.service;
import cn.hutool.log.LogFactory; import cn.hutool.log.LogFactory;
import com.tiesheng.core.pojos.RequestUserInfo; import com.tiesheng.core.pojos.RequestUserInfo;
import com.tiesheng.core.pojos.dao.CoreConfigSystem;
import com.tiesheng.core.pojos.dao.CorePlatformUnique; import com.tiesheng.core.pojos.dao.CorePlatformUnique;
import com.tiesheng.login.config.token.bean.TokenBean; import com.tiesheng.login.config.token.bean.TokenBean;
import com.tiesheng.util.exception.ApiRespEnum; import com.tiesheng.util.exception.ApiRespEnum;
@@ -54,6 +55,14 @@ public interface TieshengWebConfigurer {
return uploadPath; return uploadPath;
} }
/**
* 系统配置验证
* 如果不符合规则,可以抛出异常
*/
default void configSystemCheck(CoreConfigSystem configSystem) {
}
/** /**
* 登录逻辑 * 登录逻辑
* *

View File

@@ -2,7 +2,7 @@ package com.tiesheng.core.util;
import java.util.List; import java.util.List;
public interface ProcessImportConsumer { public interface ProcessImportConsumer<T> {
/** /**
@@ -12,7 +12,7 @@ public interface ProcessImportConsumer {
* @param <T> * @param <T>
* @return 返回成功的数量 * @return 返回成功的数量
*/ */
<T> int accept(List<T> list); int accept(List<T> list);
/** /**

View File

@@ -64,6 +64,12 @@ ALTER TABLE core_log_process
ALTER TABLE core_log_process ALTER TABLE core_log_process
ADD fail_file varchar(500) null default null COMMENT '失败的文件'; ADD fail_file varchar(500) null default null COMMENT '失败的文件';
ALTER TABLE core_log_process
ADD error text null default null COMMENT '异常说明';
ALTER TABLE core_log_process
ADD process int(6) not null default 0 COMMENT '进度';
-- ---------------------------- -- ----------------------------
-- Table structure for core_log_operation -- Table structure for core_log_operation
-- ---------------------------- -- ----------------------------

View File

@@ -15,10 +15,12 @@
<result column="type" jdbcType="VARCHAR" property="type" /> <result column="type" jdbcType="VARCHAR" property="type" />
<result column="status" jdbcType="INTEGER" property="status" /> <result column="status" jdbcType="INTEGER" property="status" />
<result column="fail_file" jdbcType="VARCHAR" property="failFile" /> <result column="fail_file" jdbcType="VARCHAR" property="failFile" />
<result column="error" jdbcType="LONGVARCHAR" property="error" />
<result column="process" jdbcType="INTEGER" property="process" />
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
<!--@mbg.generated--> <!--@mbg.generated-->
id, create_time, update_time, is_deleted, title, total, success_num, fail_num, `type`, id, create_time, update_time, is_deleted, title, total, success_num, fail_num, `type`,
`status`, fail_file `status`, fail_file, error, `process`
</sql> </sql>
</mapper> </mapper>