Compare commits

...

15 Commits

Author SHA1 Message Date
曾文豪
2d8208e4dc publish 2.0.27
All checks were successful
/ local-deploy (push) Successful in 8m4s
2025-04-24 11:39:20 +08:00
曾文豪
c4ba637de7 build(springboot-util & springboot-web): 升级依赖版本 2025-04-24 11:38:56 +08:00
曾文豪
7b0b9e0925 feat(core-log): 添加操作日志时指定创建时间 2025-04-24 10:14:29 +08:00
曾文豪
463ddf1b1e publish 2.0.26
All checks were successful
/ local-deploy (push) Successful in 18s
2025-04-22 13:41:17 +08:00
曾文豪
6fdc69fc2d publish 2.0.25
All checks were successful
/ local-deploy (push) Successful in 19s
2025-04-22 13:33:29 +08:00
曾文豪
fde73e57b9 feat(cache): 添加重复操作检查功能 2025-04-22 13:32:58 +08:00
曾文豪
8a517b09fd fix(web): 修复 CoreConfigService 中的空值问题 2025-04-09 15:05:20 +08:00
曾文豪
217d044940 publish 2.0.24
All checks were successful
/ local-deploy (push) Successful in 19s
2025-04-07 15:45:21 +08:00
曾文豪
9ecf58d75e feat(role): 添加公开服务功能 2025-04-07 15:44:45 +08:00
曾文豪
5c0d47a011 publish 2.0.23
All checks were successful
/ local-deploy (push) Successful in 17s
2025-04-05 14:57:09 +08:00
曾文豪
08066f1367 Merge remote-tracking branch 'origin/master' 2025-04-05 14:55:06 +08:00
曾文豪
9e7ed69d37 feat(web): 修改配置备注为配置键 2025-04-05 14:55:00 +08:00
曾文豪
2793b2a634 publish 2.0.22
All checks were successful
/ local-deploy (push) Successful in 21s
2025-03-31 00:29:39 +08:00
曾文豪
9885e640e9 build: 更新代码仓库地址 2025-03-26 23:25:45 +08:00
曾文豪
9b285db5bd publish 2.0.21
All checks were successful
/ local-deploy (push) Successful in 18s
2025-03-24 17:10:33 +08:00
20 changed files with 151 additions and 39 deletions

View File

@@ -50,7 +50,7 @@
<repositories>
<repository>
<id>kepai-repo</id>
<url>http://git.kepai365.com/tiesheng/repository/raw/master</url>
<url>https://git.tieshengkeji.com/api/packages/tieshengkeji/maven</url>
</repository>
</repositories>
```

22
pom.xml
View File

@@ -6,7 +6,7 @@
<groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-parent</artifactId>
<version>2.0.20</version>
<version>2.0.27</version>
<packaging>pom</packaging>
<name>springboot-parent</name>
<description>杭州铁晟科技有限公司基础依赖</description>
@@ -58,49 +58,49 @@
<dependency>
<groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-database</artifactId>
<version>2.0.20</version>
<version>2.0.27</version>
</dependency>
<dependency>
<groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-login</artifactId>
<version>2.0.20</version>
<version>2.0.27</version>
</dependency>
<dependency>
<groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-web</artifactId>
<version>2.0.20</version>
<version>2.0.27</version>
</dependency>
<dependency>
<groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-util</artifactId>
<version>2.0.20</version>
<version>2.0.27</version>
</dependency>
<dependency>
<groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-platform</artifactId>
<version>2.0.20</version>
<version>2.0.27</version>
</dependency>
<dependency>
<groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-message</artifactId>
<version>2.0.20</version>
<version>2.0.27</version>
</dependency>
<dependency>
<groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-role</artifactId>
<version>2.0.20</version>
<version>2.0.27</version>
</dependency>
<dependency>
<groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-annotation</artifactId>
<version>2.0.20</version>
<version>2.0.27</version>
</dependency>
<dependency>
@@ -120,8 +120,8 @@
<pluginRepositories>
<pluginRepository>
<id>kepai-repo-plugin</id>
<url>http://git.kepai365.com/tiesheng/repository/raw/master</url>
<id>tiesheng-repo-plugin</id>
<url>https://git.tieshengkeji.com/api/packages/tieshengkeji/maven</url>
</pluginRepository>
</pluginRepositories>

View File

@@ -6,11 +6,11 @@
<parent>
<groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-parent</artifactId>
<version>2.0.20</version>
<version>2.0.27</version>
</parent>
<artifactId>springboot-ademo</artifactId>
<version>2.0.20</version>
<version>2.0.27</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
@@ -46,8 +46,8 @@
<repositories>
<repository>
<id>kepai-repo</id>
<url>http://git.kepai365.com/tiesheng/repository/raw/master</url>
<id>tiesheng-repo</id>
<url>https://git.tieshengkeji.com/api/packages/tieshengkeji/maven</url>
</repository>
</repositories>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -6,7 +6,7 @@
<parent>
<groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-parent</artifactId>
<version>2.0.20</version>
<version>2.0.27</version>
</parent>
<artifactId>springboot-role</artifactId>

View File

@@ -13,6 +13,7 @@ import com.tiesheng.role.pojos.vo.GroupTypeDTO;
import com.tiesheng.role.pojos.vo.ServiceMenuVO;
import com.tiesheng.role.service.CoreRoleService;
import com.tiesheng.util.pojos.ApiResp;
import com.tiesheng.util.pojos.DaoBase;
import com.tiesheng.util.pojos.TokenBean;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -43,6 +44,14 @@ public class CommRoleController {
List<CoreRoleAuthority> allOwnerMenus = coreRoleService.getOwnerAuthorityLeafList(tokenBean.getId(), tokenBean.getRoleId());
List<String> list = allOwnerMenus.stream().map(CoreRoleAuthority::getService).collect(Collectors.toList());
// 添加公开服务
list.addAll(coreRoleService.getServerMapper().selectList(new QueryWrapper<CoreRoleServer>()
.eq("is_public", 1).eq("is_deleted", 0).eq("is_open", 1)
).stream().map(DaoBase::getId).collect(Collectors.toList()));
// 去除重复
list = CollUtil.distinct(list);
List<CoreRoleServer> roleServerList = new ArrayList<>();
if (CollUtil.isNotEmpty(list)) {
roleServerList = coreRoleService.getServerMapper().selectList(new QueryWrapper<CoreRoleServer>()

View File

@@ -66,6 +66,12 @@ public class CoreRoleServer extends DaoBase {
@TableField(value = "ext3")
private String ext3;
/**
* 是否公开
*/
@TableField(value = "is_public")
private Integer isPublic;
/**
* 获取名称
*
@@ -227,4 +233,22 @@ public class CoreRoleServer extends DaoBase {
public void setExt3(String ext3) {
this.ext3 = ext3;
}
/**
* 获取是否公开
*
* @return is_public - 是否公开
*/
public Integer getIsPublic() {
return isPublic;
}
/**
* 设置是否公开
*
* @param isPublic 是否公开
*/
public void setIsPublic(Integer isPublic) {
this.isPublic = isPublic;
}
}

View File

@@ -0,0 +1,3 @@
alter table core_role_server
add is_public int default 0 null comment '是否公开';

View File

@@ -17,10 +17,11 @@
<result column="ext1" jdbcType="VARCHAR" property="ext1" />
<result column="ext2" jdbcType="VARCHAR" property="ext2" />
<result column="ext3" jdbcType="VARCHAR" property="ext3" />
<result column="is_public" jdbcType="INTEGER" property="isPublic" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, create_time, update_time, is_deleted, `name`, remark, logo, sort, is_open, link,
ext1, ext2, ext3
ext1, ext2, ext3, is_public
</sql>
</mapper>

View File

@@ -6,7 +6,7 @@
<parent>
<groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-parent</artifactId>
<version>2.0.20</version>
<version>2.0.27</version>
</parent>
<artifactId>springboot-util</artifactId>
@@ -82,7 +82,7 @@
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
<version>8.0.33</version>
</dependency>
<dependency>
@@ -107,7 +107,7 @@
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15to18</artifactId>
<version>1.68</version>
<version>1.80</version>
</dependency>
<dependency>

View File

@@ -1,7 +1,6 @@
package com.tiesheng.util.service;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.servlet.ServletUtil;
import cn.hutool.extra.spring.SpringUtil;
import com.alibaba.fastjson.JSON;
import com.tiesheng.util.ServletKit;
@@ -10,6 +9,7 @@ import com.tiesheng.util.service.cache.TsCacheHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Objects;
import java.util.Set;
@Service
@@ -92,4 +92,20 @@ public class TsCacheService {
remove(captchaKey);
}
/**
* 验证是否重复操作
*
* @param key
* @param value
* @param seconds
*/
public void checkRepeat(String key, String value, int seconds) {
String s = get(key);
if (StrUtil.isNotEmpty(s) && Objects.equals(s, value)) {
throw new ApiException("操作频繁,请稍后再试");
}
put(key, value, seconds);
}
}

View File

@@ -6,7 +6,7 @@
<parent>
<groupId>com.tiesheng.springboot-parent</groupId>
<artifactId>springboot-parent</artifactId>
<version>2.0.20</version>
<version>2.0.27</version>
</parent>
<artifactId>springboot-web</artifactId>
@@ -30,9 +30,39 @@
<artifactId>spring-boot-starter-json</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
<exclusion>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-el</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>9.0.104</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-el</artifactId>
<version>9.0.104</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
<version>9.0.104</version>
</dependency>
<!-- aspect -->
<dependency>
<groupId>org.springframework.boot</groupId>

View File

@@ -1,6 +1,8 @@
package com.tiesheng.web.config.operation;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
@@ -56,6 +58,8 @@ public class OperationAspect {
@Around("methodArgs()")
public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
DateTime crateTime = DateUtil.date();
HttpServletRequest request = ServletKit.getRequest();
if (request == null) {
return joinPoint.proceed();
@@ -115,7 +119,7 @@ public class OperationAspect {
}
}
coreLogService.addOperationLog(
coreLogService.addOperationLog(crateTime,
tsTokenConfig.validToken(request, false), title, subject, reqMaps);
return response;

View File

@@ -1,5 +1,6 @@
package com.tiesheng.web.service;
import cn.hutool.core.util.StrUtil;
import com.tiesheng.util.exception.ApiException;
import com.tiesheng.util.service.TsCacheService;
import com.tiesheng.util.service.TsServiceBase;
@@ -41,7 +42,7 @@ public class CoreConfigService extends TsServiceBase<CoreConfigSystemMapper, Cor
CoreConfigSystem oneByColumn = tsCacheService.getObj(CONFIG_SYSTEM_PREFIX + configKey,
CoreConfigSystem.class, -1);
if (oneByColumn != null) {
if (oneByColumn != null && StrUtil.isNotEmpty(oneByColumn.getConfigVal())) {
return oneByColumn;
}
@@ -51,7 +52,7 @@ public class CoreConfigService extends TsServiceBase<CoreConfigSystemMapper, Cor
oneByColumn.setId(configKey);
oneByColumn.setConfigKey(configKey);
oneByColumn.setConfigVal(defaultValue);
oneByColumn.setRemark(defaultValue);
oneByColumn.setRemark(configKey);
oneByColumn.setConfigType(0);
save(oneByColumn);
}

View File

@@ -23,6 +23,7 @@ import com.tiesheng.web.util.ProcessSyncConsumer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
@@ -154,7 +155,7 @@ public class CoreLogService extends TsServiceBase<CoreLogOperationMapper, CoreLo
/**
* 添加操作日志
*/
public void addOperationLog(TokenBean tokenBean, String title, String subject, Object params) {
public void addOperationLog(Date createTime, TokenBean tokenBean, String title, String subject, Object params) {
if (tokenBean == null || StrUtil.isEmpty(tokenBean.getId())) {
return;
@@ -165,7 +166,7 @@ public class CoreLogService extends TsServiceBase<CoreLogOperationMapper, CoreLo
}
CoreLogOperation operation = new CoreLogOperation();
operation.setCreateTime(DateUtil.date());
operation.setCreateTime(createTime);
operation.setUpdateTime(DateUtil.date());
operation.setUserId(requestUserInfo.getId());
operation.setUserName(requestUserInfo.getName());

View File

@@ -2,7 +2,6 @@ package com.tiesheng.web.service;
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.tiesheng.web.mapper.CoreLogApiMapper;
import com.tiesheng.web.pojos.dao.CoreLogApi;
@@ -12,6 +11,8 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import javax.validation.constraints.NotNull;
import java.io.IOException;
import java.util.Objects;
@Component
public class OkHttpLogInterceptor implements Interceptor {
@@ -22,11 +23,14 @@ public class OkHttpLogInterceptor implements Interceptor {
@NotNull
@Override
public Response intercept(@NotNull Chain chain) {
CoreLogApi logApi = new CoreLogApi();
public Response intercept(@NotNull Chain chain) throws IOException {
Request request = chain.request();
if (Objects.equals(request.header("skipApiLog"), "true")) {
return chain.proceed(request);
}
CoreLogApi logApi = new CoreLogApi();
logApi.setUrl(request.url().toString());
logApi.setContent(requestBody2String(request));
@@ -47,10 +51,29 @@ public class OkHttpLogInterceptor implements Interceptor {
}
} catch (Exception e) {
JSONObject object = new JSONObject();
object.put("code", -1);
object.put("message", JSON.toJSONString(e));
object.put("code", 500);
object.put("message", e.getMessage());
object.put("exception", e);
logApi.setRespBody(object.toJSONString());
response = new Response.Builder()
// 必须设置请求对象
.request(chain.request())
// 指定协议版本
.protocol(Protocol.HTTP_1_1)
// 设置HTTP状态码
.code(object.getInteger("code"))
// 状态信息
.message(object.getString("message"))
// 设置响应体
.body(ResponseBody.create(MediaType.parse("application/json"), object.toJSONString()))
.headers(new Headers.Builder().build()) // 可选:设置响应头
.build();
}
ThreadUtil.execute(() -> coreLogApiMapper.insert(logApi));