🎉 3.7.0.RELEASE Token加密传输

This commit is contained in:
smallchill 2023-09-12 02:00:24 +08:00
parent fd5135e3a5
commit abc412290c
49 changed files with 225 additions and 233 deletions

View File

@ -176,7 +176,7 @@ recommend that a file or class name and description of purpose be included on
the same "printed page" as the copyright notice for easier identification within
third-party archives.
Copyright 2023 BladeX (https://bladex.vip)
Copyright 2023 BladeX (https://bladex.cn)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.

View File

@ -1,13 +1,13 @@
<p align="center">
<img src="https://img.shields.io/badge/Release-V3.6.0-green.svg" alt="Downloads">
<img src="https://img.shields.io/badge/Release-V3.7.0-green.svg" alt="Downloads">
<img src="https://img.shields.io/badge/JDK-1.8+-green.svg" alt="Build Status">
<img src="https://img.shields.io/badge/license-Apache%202-blue.svg" alt="Build Status">
<img src="https://img.shields.io/badge/Spring%20Cloud-2021-blue.svg" alt="Coverage Status">
<img src="https://img.shields.io/badge/Spring%20Boot-2.7.10-blue.svg" alt="Downloads">
<a target="_blank" href="https://bladex.vip">
<a target="_blank" href="https://bladex.cn">
<img src="https://img.shields.io/badge/Author-Small%20Chill-ff69b4.svg" alt="Downloads">
</a>
<a target="_blank" href="https://bladex.vip">
<a target="_blank" href="https://bladex.cn">
<img src="https://img.shields.io/badge/Copyright%20-@BladeX-%23ff3f59.svg" alt="Downloads">
</a>
</p>
@ -53,8 +53,8 @@ SpringBlade
```
## 官方信息
* 官网地址:[https://bladex.vip](https://bladex.vip)
* 问答社区:[https://sns.bladex.vip](https://sns.bladex.vip)
* 官网地址:[https://bladex.cn](https://bladex.cn)
* 问答社区:[https://sns.bladex.cn](https://sns.bladex.cn)
* 会员计划:[SpringBlade会员计划](https://gitee.com/smallc/SpringBlade/wikis/SpringBlade会员计划)
* 交流一群:`477853168`(满)
* 交流二群:`751253339`(满)
@ -65,15 +65,15 @@ SpringBlade
* 交流七群:`298061704`
## 在线演示
* Saber-基于Vue[https://saber.bladex.vip](https://saber.bladex.vip)
* Sword-基于React[https://sword.bladex.vip](https://sword.bladex.vip)
* Saber-基于Vue[https://saber.bladex.cn](https://saber.bladex.cn)
* Sword-基于React[https://sword.bladex.cn](https://sword.bladex.cn)
## 数据大屏
* 数据大屏展示系统:[https://data.bladex.vip](https://data.bladex.vip)
* 数据大屏展示系统:[https://data.bladex.cn](https://data.bladex.cn)
## 技术文档
* [SpringBlade开发手册一览](https://gitee.com/smallc/SpringBlade/wikis/SpringBlade开发手册)
* [SpringBlade常见问题集锦](https://sns.bladex.vip/article-14966.html)
* [SpringBlade常见问题集锦](https://sns.bladex.cn/article-14966.html)
* [SpringBlade基于Kuboard部署K8S](https://kuboard.cn/learning/k8s-practice/spring-blade/)
* [SpringBlade基于Rainbond部署](https://www.rainbond.com/docs/micro-service/example/blade)
@ -103,7 +103,7 @@ Apache Licence也是对商业应用友好的许可。使用者也可以在需要
# 界面
## [BladeX](https://bladex.vip/#/vip) 工作流一览
## [BladeX](https://bladex.cn/#/vip) 工作流一览
<table>
<tr>
<td><img src="https://gitee.com/smallc/SpringBlade/raw/master/pic/bladex-flow1.png"/></td>

View File

@ -8,7 +8,7 @@
<parent>
<artifactId>SpringBlade</artifactId>
<groupId>org.springblade</groupId>
<version>3.6.0</version>
<version>3.7.0</version>
</parent>
<artifactId>blade-auth</artifactId>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>SpringBlade</artifactId>
<groupId>org.springblade</groupId>
<version>3.6.0</version>
<version>3.7.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>SpringBlade</artifactId>
<groupId>org.springblade</groupId>
<version>3.6.0</version>
<version>3.7.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>blade-ops</artifactId>
<groupId>org.springblade</groupId>
<version>3.6.0</version>
<version>3.7.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -6,7 +6,7 @@
<parent>
<groupId>org.springblade</groupId>
<artifactId>blade-ops</artifactId>
<version>3.6.0</version>
<version>3.7.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>org.springblade</groupId>
<artifactId>blade-ops</artifactId>
<version>3.6.0</version>
<version>3.7.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>blade-ops</artifactId>
<groupId>org.springblade</groupId>
<version>3.6.0</version>
<version>3.7.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>blade-ops</artifactId>
<groupId>org.springblade</groupId>
<version>3.6.0</version>
<version>3.7.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>blade-ops</artifactId>
<groupId>org.springblade</groupId>
<version>3.6.0</version>
<version>3.7.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>blade-ops</artifactId>
<groupId>org.springblade</groupId>
<version>3.6.0</version>
<version>3.7.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,13 +5,13 @@
<parent>
<artifactId>SpringBlade</artifactId>
<groupId>org.springblade</groupId>
<version>3.6.0</version>
<version>3.7.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>blade-ops</artifactId>
<name>${project.artifactId}</name>
<version>3.6.0</version>
<version>3.7.0</version>
<packaging>pom</packaging>
<modules>
<module>blade-admin</module>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>blade-service-api</artifactId>
<groupId>org.springblade</groupId>
<version>3.6.0</version>
<version>3.7.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>blade-service-api</artifactId>
<groupId>org.springblade</groupId>
<version>3.6.0</version>
<version>3.7.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>blade-service-api</artifactId>
<groupId>org.springblade</groupId>
<version>3.6.0</version>
<version>3.7.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -36,7 +36,7 @@ import java.util.List;
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "DictVO对象", description = "DictVO对象")
public class DictVO extends Dict implements INode {
public class DictVO extends Dict implements INode<DictVO> {
private static final long serialVersionUID = 1L;
/**
* 主键ID
@ -54,10 +54,10 @@ public class DictVO extends Dict implements INode {
* 子孙节点
*/
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<INode> children;
private List<DictVO> children;
@Override
public List<INode> getChildren() {
public List<DictVO> getChildren() {
if (this.children == null) {
this.children = new ArrayList<>();
}

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>blade-service-api</artifactId>
<groupId>org.springblade</groupId>
<version>3.6.0</version>
<version>3.7.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>blade-service-api</artifactId>
<groupId>org.springblade</groupId>
<version>3.6.0</version>
<version>3.7.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -35,7 +35,7 @@ import java.util.List;
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "DeptVO对象", description = "DeptVO对象")
public class DeptVO extends Dept implements INode {
public class DeptVO extends Dept implements INode<DeptVO> {
private static final long serialVersionUID = 1L;
/**
@ -54,10 +54,10 @@ public class DeptVO extends Dept implements INode {
* 子孙节点
*/
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<INode> children;
private List<DeptVO> children;
@Override
public List<INode> getChildren() {
public List<DeptVO> getChildren() {
if (this.children == null) {
this.children = new ArrayList<>();
}

View File

@ -35,7 +35,7 @@ import java.util.List;
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "MenuVO对象", description = "MenuVO对象")
public class MenuVO extends Menu implements INode {
public class MenuVO extends Menu implements INode<MenuVO> {
private static final long serialVersionUID = 1L;
/**
@ -54,7 +54,7 @@ public class MenuVO extends Menu implements INode {
* 子孙节点
*/
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<INode> children;
private List<MenuVO> children;
/**
* 是否有子孙节点
@ -63,7 +63,7 @@ public class MenuVO extends Menu implements INode {
private Boolean hasChildren;
@Override
public List<INode> getChildren() {
public List<MenuVO> getChildren() {
if (this.children == null) {
this.children = new ArrayList<>();
}

View File

@ -36,7 +36,7 @@ import java.util.List;
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "RegionVO对象", description = "行政区划表")
public class RegionVO extends Region implements INode {
public class RegionVO extends Region implements INode<RegionVO> {
private static final long serialVersionUID = 1L;
/**
@ -66,7 +66,7 @@ public class RegionVO extends Region implements INode {
* 子孙节点
*/
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<INode> children;
private List<RegionVO> children;
@Override
public Long getId() {
@ -79,7 +79,7 @@ public class RegionVO extends Region implements INode {
}
@Override
public List<INode> getChildren() {
public List<RegionVO> getChildren() {
if (this.children == null) {
this.children = new ArrayList<>();
}

View File

@ -35,7 +35,7 @@ import java.util.List;
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "RoleVO对象", description = "RoleVO对象")
public class RoleVO extends Role implements INode {
public class RoleVO extends Role implements INode<RoleVO> {
private static final long serialVersionUID = 1L;
/**
@ -54,10 +54,10 @@ public class RoleVO extends Role implements INode {
* 子孙节点
*/
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<INode> children;
private List<RoleVO> children;
@Override
public List<INode> getChildren() {
public List<RoleVO> getChildren() {
if (this.children == null) {
this.children = new ArrayList<>();
}

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>blade-service-api</artifactId>
<groupId>org.springblade</groupId>
<version>3.6.0</version>
<version>3.7.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,13 +5,13 @@
<parent>
<artifactId>SpringBlade</artifactId>
<groupId>org.springblade</groupId>
<version>3.6.0</version>
<version>3.7.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>blade-service-api</artifactId>
<name>${project.artifactId}</name>
<version>3.6.0</version>
<version>3.7.0</version>
<packaging>pom</packaging>
<description>SpringBlade 微服务API集合</description>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>blade-service</artifactId>
<groupId>org.springblade</groupId>
<version>3.6.0</version>
<version>3.7.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -34,7 +34,7 @@ import org.springframework.web.bind.annotation.RestController;
@Api(value = "配置接口", tags = "即时刷新配置")
public class DemoController {
@Value("${demo.name}")
@Value("${demo.name:1}")
private String name;
private final DemoProperties properties;

View File

@ -6,7 +6,7 @@
<parent>
<groupId>org.springblade</groupId>
<artifactId>blade-service</artifactId>
<version>3.6.0</version>
<version>3.7.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -55,4 +55,124 @@ public class DashBoardController {
return R.data(list);
}
/**
* 获取消息
*
* @return
*/
@GetMapping("/notices")
@ApiOperation(value = "消息", notes = "消息")
public R notices() {
List<Map<String, String>> list = new ArrayList<>();
Map<String, String> map1 = new HashMap<>(16);
map1.put("logo", "https://spring.io/img/homepage/icon-spring-framework.svg");
map1.put("title", "SpringBoot");
map1.put("description", "现在的web项目几乎都会用到spring框架而要使用spring难免需要配置大量的xml配置文件而 springboot的出现解 决了这一问题一个项目甚至不用部署到服务器上直接开跑真像springboot所说“just run”。");
map1.put("member", "Chill");
map1.put("href", "http://spring.io/projects/spring-boot");
list.add(map1);
Map<String, String> map2 = new HashMap<>(16);
map2.put("logo", "https://spring.io/img/homepage/icon-spring-cloud.svg");
map2.put("title", "SpringCloud");
map2.put("description", "SpringCloud是基于SpringBoot的一整套实现微服务的框架。他提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件。");
map2.put("member", "Chill");
map2.put("href", "http://spring.io/projects/spring-cloud");
list.add(map2);
Map<String, String> map3 = new HashMap<>(16);
map3.put("logo", "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1546359961068&di=05ff9406e6675ca9a58a525a7e7950b9&imgtype=jpg&src=http%3A%2F%2Fimg0.imgtn.bdimg.com%2Fit%2Fu%3D575314515%2C4268715674%26fm%3D214%26gp%3D0.jpg");
map3.put("title", "Mybatis");
map3.put("description", "MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。");
map3.put("member", "Chill");
map3.put("href", "http://www.mybatis.org/mybatis-3/getting-started.html");
list.add(map3);
Map<String, String> map4 = new HashMap<>(16);
map4.put("logo", "https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png");
map4.put("title", "React");
map4.put("description", "React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架都不满意就决定自己写一套用来架设Instagram 的网站。做出来以后发现这套东西很好用就在2013年5月开源了。");
map4.put("member", "Chill");
map4.put("href", "https://reactjs.org/");
list.add(map4);
Map<String, String> map5 = new HashMap<>(16);
map5.put("logo", "https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png");
map5.put("title", "Ant Design");
map5.put("description", "蚂蚁金服体验技术部经过大量的项目实践和总结,沉淀出设计语言 Ant Design这可不单纯只是设计原则、控件规范和视觉尺寸还配套有前端代码实现方案。也就是说采用Ant Design后UI设计和前端界面研发可同步完成效率大大提升。");
map5.put("member", "Chill");
map5.put("href", "https://ant.design/docs/spec/introduce-cn");
list.add(map5);
Map<String, String> map6 = new HashMap<>(16);
map6.put("logo", "https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png");
map6.put("title", "Ant Design Pro");
map6.put("description", "Ant Design Pro 是一个企业级开箱即用的中后台前端/设计解决方案。符合阿里追求的'敏捷的前端+强大的中台'的思想。");
map6.put("member", "Chill");
map6.put("href", "https://pro.ant.design");
list.add(map6);
return R.data(list);
}
/**
* 获取我的消息
*
* @return
*/
@GetMapping("/my-notices")
@ApiOperation(value = "消息", notes = "消息")
public R myNotices() {
List<Map<String, String>> list = new ArrayList<>();
Map<String, String> map1 = new HashMap<>(16);
map1.put("id", "000000001");
map1.put("avatar", "https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png");
map1.put("title", "你收到了 14 份新周报");
map1.put("datetime", "2018-08-09");
map1.put("type", "notification");
list.add(map1);
Map<String, String> map2 = new HashMap<>(16);
map2.put("id", "000000002");
map2.put("avatar", "https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png");
map2.put("title", "你推荐的 曲妮妮 已通过第三轮面试");
map2.put("datetime", "2018-08-08");
map2.put("type", "notification");
list.add(map2);
Map<String, String> map3 = new HashMap<>(16);
map3.put("id", "000000003");
map3.put("avatar", "https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg");
map3.put("title", "曲丽丽 评论了你");
map3.put("description", "描述信息描述信息描述信息");
map3.put("datetime", "2018-08-07");
map3.put("type", "message");
map3.put("clickClose", "true");
list.add(map3);
Map<String, String> map4 = new HashMap<>(16);
map4.put("id", "000000004");
map4.put("avatar", "https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg");
map4.put("title", "朱偏右 回复了你");
map4.put("description", "这种模板用于提醒谁与你发生了互动,左侧放『谁』的头像");
map4.put("type", "message");
map4.put("datetime", "2018-08-07");
map4.put("clickClose", "true");
list.add(map4);
Map<String, String> map5 = new HashMap<>(16);
map5.put("id", "000000005");
map5.put("title", "任务名称");
map5.put("description", "任务需要在 2018-01-12 20:00 前启动");
map5.put("extra", "未开始");
map5.put("status", "todo");
map5.put("type", "event");
list.add(map5);
return R.data(list);
}
}

View File

@ -23,7 +23,9 @@ import org.springblade.common.cache.CacheNames;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.annotation.PreAuth;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.constant.RoleConstant;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.entity.Notice;
import org.springblade.desk.service.INoticeService;
@ -32,9 +34,6 @@ import org.springblade.desk.wrapper.NoticeWrapper;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
@ -43,6 +42,7 @@ import java.util.Map;
* @author Chill
* @since 2018-09-29
*/
@PreAuth(RoleConstant.HAS_CRYPTO)
@RestController
@RequestMapping("notice")
@AllArgsConstructor
@ -118,125 +118,4 @@ public class NoticeController extends BladeController implements CacheNames {
return R.status(temp);
}
/**
* 获取消息
*
* @return
*/
@GetMapping("/notices")
@ApiOperationSupport(order = 7)
@ApiOperation(value = "消息", notes = "消息")
public R notices() {
List<Map<String, String>> list = new ArrayList<>();
Map<String, String> map1 = new HashMap<>(16);
map1.put("logo", "https://spring.io/img/homepage/icon-spring-framework.svg");
map1.put("title", "SpringBoot");
map1.put("description", "现在的web项目几乎都会用到spring框架而要使用spring难免需要配置大量的xml配置文件而 springboot的出现解 决了这一问题一个项目甚至不用部署到服务器上直接开跑真像springboot所说“just run”。");
map1.put("member", "Chill");
map1.put("href", "http://spring.io/projects/spring-boot");
list.add(map1);
Map<String, String> map2 = new HashMap<>(16);
map2.put("logo", "https://spring.io/img/homepage/icon-spring-cloud.svg");
map2.put("title", "SpringCloud");
map2.put("description", "SpringCloud是基于SpringBoot的一整套实现微服务的框架。他提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件。");
map2.put("member", "Chill");
map2.put("href", "http://spring.io/projects/spring-cloud");
list.add(map2);
Map<String, String> map3 = new HashMap<>(16);
map3.put("logo", "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1546359961068&di=05ff9406e6675ca9a58a525a7e7950b9&imgtype=jpg&src=http%3A%2F%2Fimg0.imgtn.bdimg.com%2Fit%2Fu%3D575314515%2C4268715674%26fm%3D214%26gp%3D0.jpg");
map3.put("title", "Mybatis");
map3.put("description", "MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。");
map3.put("member", "Chill");
map3.put("href", "http://www.mybatis.org/mybatis-3/getting-started.html");
list.add(map3);
Map<String, String> map4 = new HashMap<>(16);
map4.put("logo", "https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png");
map4.put("title", "React");
map4.put("description", "React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架都不满意就决定自己写一套用来架设Instagram 的网站。做出来以后发现这套东西很好用就在2013年5月开源了。");
map4.put("member", "Chill");
map4.put("href", "https://reactjs.org/");
list.add(map4);
Map<String, String> map5 = new HashMap<>(16);
map5.put("logo", "https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png");
map5.put("title", "Ant Design");
map5.put("description", "蚂蚁金服体验技术部经过大量的项目实践和总结,沉淀出设计语言 Ant Design这可不单纯只是设计原则、控件规范和视觉尺寸还配套有前端代码实现方案。也就是说采用Ant Design后UI设计和前端界面研发可同步完成效率大大提升。");
map5.put("member", "Chill");
map5.put("href", "https://ant.design/docs/spec/introduce-cn");
list.add(map5);
Map<String, String> map6 = new HashMap<>(16);
map6.put("logo", "https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png");
map6.put("title", "Ant Design Pro");
map6.put("description", "Ant Design Pro 是一个企业级开箱即用的中后台前端/设计解决方案。符合阿里追求的'敏捷的前端+强大的中台'的思想。");
map6.put("member", "Chill");
map6.put("href", "https://pro.ant.design");
list.add(map6);
return R.data(list);
}
/**
* 获取我的消息
*
* @return
*/
@GetMapping("/my-notices")
@ApiOperation(value = "消息", notes = "消息")
public R myNotices() {
List<Map<String, String>> list = new ArrayList<>();
Map<String, String> map1 = new HashMap<>(16);
map1.put("id", "000000001");
map1.put("avatar", "https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png");
map1.put("title", "你收到了 14 份新周报");
map1.put("datetime", "2018-08-09");
map1.put("type", "notification");
list.add(map1);
Map<String, String> map2 = new HashMap<>(16);
map2.put("id", "000000002");
map2.put("avatar", "https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png");
map2.put("title", "你推荐的 曲妮妮 已通过第三轮面试");
map2.put("datetime", "2018-08-08");
map2.put("type", "notification");
list.add(map2);
Map<String, String> map3 = new HashMap<>(16);
map3.put("id", "000000003");
map3.put("avatar", "https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg");
map3.put("title", "曲丽丽 评论了你");
map3.put("description", "描述信息描述信息描述信息");
map3.put("datetime", "2018-08-07");
map3.put("type", "message");
map3.put("clickClose", "true");
list.add(map3);
Map<String, String> map4 = new HashMap<>(16);
map4.put("id", "000000004");
map4.put("avatar", "https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg");
map4.put("title", "朱偏右 回复了你");
map4.put("description", "这种模板用于提醒谁与你发生了互动,左侧放『谁』的头像");
map4.put("type", "message");
map4.put("datetime", "2018-08-07");
map4.put("clickClose", "true");
list.add(map4);
Map<String, String> map5 = new HashMap<>(16);
map5.put("id", "000000005");
map5.put("title", "任务名称");
map5.put("description", "任务需要在 2018-01-12 20:00 前启动");
map5.put("extra", "未开始");
map5.put("status", "todo");
map5.put("type", "event");
list.add(map5);
return R.data(list);
}
}

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>blade-service</artifactId>
<groupId>org.springblade</groupId>
<version>3.6.0</version>
<version>3.7.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>blade-service</artifactId>
<groupId>org.springblade</groupId>
<version>3.6.0</version>
<version>3.7.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -24,7 +24,6 @@ import org.springblade.core.mp.support.Condition;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.node.INode;
import org.springblade.core.tool.utils.Func;
import org.springblade.system.entity.Dept;
import org.springblade.system.service.IDeptService;
@ -71,7 +70,7 @@ public class DeptController extends BladeController {
})
@ApiOperationSupport(order = 2)
@ApiOperation(value = "列表", notes = "传入dept")
public R<List<INode>> list(@ApiIgnore @RequestParam Map<String, Object> dept, BladeUser bladeUser) {
public R<List<DeptVO>> list(@ApiIgnore @RequestParam Map<String, Object> dept, BladeUser bladeUser) {
QueryWrapper<Dept> queryWrapper = Condition.getQueryWrapper(dept, Dept.class);
List<Dept> list = deptService.list((!bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID)) ? queryWrapper.lambda().eq(Dept::getTenantId, bladeUser.getTenantId()) : queryWrapper);
return R.data(DeptWrapper.build().listNodeVO(list));

View File

@ -21,7 +21,6 @@ import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.node.INode;
import org.springblade.core.tool.utils.Func;
import org.springblade.system.entity.Dict;
import org.springblade.system.service.IDictService;
@ -72,8 +71,7 @@ public class DictController extends BladeController {
})
@ApiOperationSupport(order = 2)
@ApiOperation(value = "列表", notes = "传入dict")
public R<List<INode>> list(@ApiIgnore @RequestParam Map<String, Object> dict) {
@SuppressWarnings("unchecked")
public R<List<DictVO>> list(@ApiIgnore @RequestParam Map<String, Object> dict) {
List<Dict> list = dictService.list(Condition.getQueryWrapper(dict, Dict.class).lambda().orderByAsc(Dict::getSort));
return R.data(DictWrapper.build().listNodeVO(list));
}

View File

@ -24,7 +24,6 @@ import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.node.INode;
import org.springblade.system.entity.Region;
import org.springblade.system.service.IRegionService;
import org.springblade.system.vo.RegionVO;
@ -81,8 +80,8 @@ public class RegionController extends BladeController {
})
@ApiOperationSupport(order = 3)
@ApiOperation(value = "懒加载列表", notes = "传入menu")
public R<List<INode>> lazyList(String parentCode, @ApiIgnore @RequestParam Map<String, Object> menu) {
List<INode> list = regionService.lazyList(parentCode, menu);
public R<List<RegionVO>> lazyList(String parentCode, @ApiIgnore @RequestParam Map<String, Object> menu) {
List<RegionVO> list = regionService.lazyList(parentCode, menu);
return R.data(RegionWrapper.build().listNodeLazyVO(list));
}
@ -96,8 +95,8 @@ public class RegionController extends BladeController {
})
@ApiOperationSupport(order = 4)
@ApiOperation(value = "懒加载列表", notes = "传入menu")
public R<List<INode>> lazyTree(String parentCode, @ApiIgnore @RequestParam Map<String, Object> menu) {
List<INode> list = regionService.lazyTree(parentCode, menu);
public R<List<RegionVO>> lazyTree(String parentCode, @ApiIgnore @RequestParam Map<String, Object> menu) {
List<RegionVO> list = regionService.lazyTree(parentCode, menu);
return R.data(RegionWrapper.build().listNodeLazyVO(list));
}

View File

@ -24,7 +24,6 @@ import org.springblade.core.mp.support.Condition;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.node.INode;
import org.springblade.core.tool.utils.CacheUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.system.entity.Role;
@ -75,7 +74,7 @@ public class RoleController extends BladeController {
})
@ApiOperationSupport(order = 2)
@ApiOperation(value = "列表", notes = "传入role")
public R<List<INode>> list(@ApiIgnore @RequestParam Map<String, Object> role, BladeUser bladeUser) {
public R<List<RoleVO>> list(@ApiIgnore @RequestParam Map<String, Object> role, BladeUser bladeUser) {
QueryWrapper<Role> queryWrapper = Condition.getQueryWrapper(role, Role.class);
List<Role> list = roleService.list((!bladeUser.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID)) ? queryWrapper.lambda().eq(Role::getTenantId, bladeUser.getTenantId()) : queryWrapper);
return R.data(RoleWrapper.build().listNodeVO(list));

View File

@ -16,8 +16,8 @@
package org.springblade.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springblade.core.tool.node.INode;
import org.springblade.system.entity.Region;
import org.springblade.system.vo.RegionVO;
import java.util.List;
import java.util.Map;
@ -36,7 +36,7 @@ public interface RegionMapper extends BaseMapper<Region> {
* @param param
* @return
*/
List<INode> lazyList(String parentCode, Map<String, Object> param);
List<RegionVO> lazyList(String parentCode, Map<String, Object> param);
/**
* 懒加载列表
@ -45,6 +45,6 @@ public interface RegionMapper extends BaseMapper<Region> {
* @param param
* @return
*/
List<INode> lazyTree(String parentCode, Map<String, Object> param);
List<RegionVO> lazyTree(String parentCode, Map<String, Object> param);
}

View File

@ -16,8 +16,8 @@
package org.springblade.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.core.tool.node.INode;
import org.springblade.system.entity.Region;
import org.springblade.system.vo.RegionVO;
import java.util.List;
import java.util.Map;
@ -52,7 +52,7 @@ public interface IRegionService extends IService<Region> {
* @param param
* @return
*/
List<INode> lazyList(String parentCode, Map<String, Object> param);
List<RegionVO> lazyList(String parentCode, Map<String, Object> param);
/**
* 懒加载列表
@ -61,6 +61,6 @@ public interface IRegionService extends IService<Region> {
* @param param
* @return
*/
List<INode> lazyTree(String parentCode, Map<String, Object> param);
List<RegionVO> lazyTree(String parentCode, Map<String, Object> param);
}

View File

@ -18,12 +18,12 @@ package org.springblade.system.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.tool.node.INode;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringPool;
import org.springblade.system.entity.Region;
import org.springblade.system.mapper.RegionMapper;
import org.springblade.system.service.IRegionService;
import org.springblade.system.vo.RegionVO;
import org.springframework.stereotype.Service;
import java.util.List;
@ -87,12 +87,12 @@ public class RegionServiceImpl extends ServiceImpl<RegionMapper, Region> impleme
}
@Override
public List<INode> lazyList(String parentCode, Map<String, Object> param) {
public List<RegionVO> lazyList(String parentCode, Map<String, Object> param) {
return baseMapper.lazyList(parentCode, param);
}
@Override
public List<INode> lazyTree(String parentCode, Map<String, Object> param) {
public List<RegionVO> lazyTree(String parentCode, Map<String, Object> param) {
return baseMapper.lazyTree(parentCode, param);
}
}

View File

@ -18,7 +18,6 @@ package org.springblade.system.wrapper;
import org.springblade.common.constant.CommonConstant;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.node.ForestNodeMerger;
import org.springblade.core.tool.node.INode;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.SpringUtil;
@ -58,8 +57,8 @@ public class DeptWrapper extends BaseEntityWrapper<Dept, DeptVO> {
return deptVO;
}
public List<INode> listNodeVO(List<Dept> list) {
List<INode> collect = list.stream().map(dept -> BeanUtil.copy(dept, DeptVO.class)).collect(Collectors.toList());
public List<DeptVO> listNodeVO(List<Dept> list) {
List<DeptVO> collect = list.stream().map(dept -> BeanUtil.copy(dept, DeptVO.class)).collect(Collectors.toList());
return ForestNodeMerger.merge(collect);
}

View File

@ -18,7 +18,6 @@ package org.springblade.system.wrapper;
import org.springblade.common.constant.CommonConstant;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.node.ForestNodeMerger;
import org.springblade.core.tool.node.INode;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.SpringUtil;
@ -58,8 +57,8 @@ public class DictWrapper extends BaseEntityWrapper<Dict, DictVO> {
return dictVO;
}
public List<INode> listNodeVO(List<Dict> list) {
List<INode> collect = list.stream().map(dict -> BeanUtil.copy(dict, DictVO.class)).collect(Collectors.toList());
public List<DictVO> listNodeVO(List<Dict> list) {
List<DictVO> collect = list.stream().map(dict -> BeanUtil.copy(dict, DictVO.class)).collect(Collectors.toList());
return ForestNodeMerger.merge(collect);
}

View File

@ -17,7 +17,6 @@ package org.springblade.system.wrapper;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.node.ForestNodeMerger;
import org.springblade.core.tool.node.INode;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.SpringUtil;
import org.springblade.system.entity.Region;
@ -52,7 +51,7 @@ public class RegionWrapper extends BaseEntityWrapper<Region, RegionVO> {
return regionVO;
}
public List<INode> listNodeLazyVO(List<INode> list) {
public List<RegionVO> listNodeLazyVO(List<RegionVO> list) {
return ForestNodeMerger.merge(list);
}

View File

@ -18,7 +18,6 @@ package org.springblade.system.wrapper;
import org.springblade.common.constant.CommonConstant;
import org.springblade.core.mp.support.BaseEntityWrapper;
import org.springblade.core.tool.node.ForestNodeMerger;
import org.springblade.core.tool.node.INode;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.SpringUtil;
@ -58,8 +57,8 @@ public class RoleWrapper extends BaseEntityWrapper<Role, RoleVO> {
return roleVO;
}
public List<INode> listNodeVO(List<Role> list) {
List<INode> collect = list.stream().map(this::entityVO).collect(Collectors.toList());
public List<RoleVO> listNodeVO(List<Role> list) {
List<RoleVO> collect = list.stream().map(this::entityVO).collect(Collectors.toList());
return ForestNodeMerger.merge(collect);
}

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>blade-service</artifactId>
<groupId>org.springblade</groupId>
<version>3.6.0</version>
<version>3.7.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -7,12 +7,12 @@
<parent>
<groupId>org.springblade</groupId>
<artifactId>SpringBlade</artifactId>
<version>3.6.0</version>
<version>3.7.0</version>
</parent>
<artifactId>blade-service</artifactId>
<name>${project.artifactId}</name>
<version>3.6.0</version>
<version>3.7.0</version>
<packaging>pom</packaging>
<description>SpringBlade 微服务集合</description>

View File

@ -69,10 +69,10 @@ knife4j:
swagger:
title: SpringBlade 接口文档系统
description: SpringBlade 接口文档系统
version: 3.6.0
version: 3.7.0
license: Powered By SpringBlade
licenseUrl: https://bladex.vip
terms-of-service-url: https://bladex.vip
licenseUrl: https://bladex.cn
terms-of-service-url: https://bladex.cn
contact:
name: smallchill
email: smallchill@163.com
@ -83,6 +83,8 @@ blade:
token:
#使用 blade-auth服务 @org.springblade.test.SignKeyGenerator 获取
sign-key: 请配置32位签名提高安全性
#使用AesUtil.genAesKey()生成,需和后端配置保持一致
aes-key: 请配置Aes的密钥
xss:
enabled: true
skip-url:

12
pom.xml
View File

@ -5,12 +5,12 @@
<groupId>org.springblade</groupId>
<artifactId>SpringBlade</artifactId>
<version>3.6.0</version>
<version>3.7.0</version>
<packaging>pom</packaging>
<properties>
<blade.tool.version>3.6.0</blade.tool.version>
<blade.project.version>3.6.0</blade.project.version>
<blade.tool.version>3.7.0</blade.tool.version>
<blade.project.version>3.7.0</blade.project.version>
<java.version>1.8</java.version>
<maven.plugin.version>3.8.1</maven.plugin.version>
@ -22,10 +22,10 @@
<mica.auto.version>2.3.2</mica.auto.version>
<mysql.connector.version>8.0.32</mysql.connector.version>
<spring.version>5.3.27</spring.version>
<spring.boot.version>2.7.10</spring.boot.version>
<spring.version>5.3.29</spring.version>
<spring.boot.version>2.7.15</spring.boot.version>
<spring.boot.admin.version>2.7.10</spring.boot.admin.version>
<spring.cloud.version>2021.0.6</spring.cloud.version>
<spring.cloud.version>2021.0.8</spring.cloud.version>
<alibaba.cloud.version>2021.0.5.0</alibaba.cloud.version>
<alibaba.nacos.version>2.1.2</alibaba.nacos.version>

View File

@ -1,2 +1,2 @@
REGISTER=192.168.0.157/blade
TAG=3.6.0
TAG=3.7.0

View File

@ -152,7 +152,7 @@ spec:
spec:
containers:
- name: blade-admin
image: 'swr.cn-east-2.myhuaweicloud.com/blade/blade-admin:3.6.0'
image: 'swr.cn-east-2.myhuaweicloud.com/blade/blade-admin:3.7.0'
args:
- '--spring.profiles.active=${PROFILE}'
- '--spring.cloud.nacos.config.server-addr=${NACOS_SERVER_ADDR}'
@ -386,7 +386,7 @@ spec:
spec:
containers:
- name: blade-auth
image: 'swr.cn-east-2.myhuaweicloud.com/blade/blade-auth:3.6.0'
image: 'swr.cn-east-2.myhuaweicloud.com/blade/blade-auth:3.7.0'
args:
- '--spring.profiles.active=${PROFILE}'
- '--spring.cloud.nacos.config.server-addr=${NACOS_SERVER_ADDR}'
@ -625,7 +625,7 @@ spec:
spec:
containers:
- name: blade-desk
image: 'swr.cn-east-2.myhuaweicloud.com/blade/blade-desk:3.6.0'
image: 'swr.cn-east-2.myhuaweicloud.com/blade/blade-desk:3.7.0'
args:
- '--spring.profiles.active=${PROFILE}'
- '--spring.cloud.nacos.config.server-addr=${NACOS_SERVER_ADDR}'
@ -864,7 +864,7 @@ spec:
spec:
containers:
- name: blade-develop
image: 'swr.cn-east-2.myhuaweicloud.com/blade/blade-develop:3.6.0'
image: 'swr.cn-east-2.myhuaweicloud.com/blade/blade-develop:3.7.0'
args:
- '--spring.profiles.active=${PROFILE}'
- '--spring.cloud.nacos.config.server-addr=${NACOS_SERVER_ADDR}'
@ -1096,7 +1096,7 @@ spec:
spec:
containers:
- name: blade-gateway
image: 'swr.cn-east-2.myhuaweicloud.com/blade/blade-gateway:3.6.0'
image: 'swr.cn-east-2.myhuaweicloud.com/blade/blade-gateway:3.7.0'
args:
- '--spring.profiles.active=${PROFILE}'
- '--spring.cloud.nacos.config.server-addr=${NACOS_SERVER_ADDR}'
@ -1331,7 +1331,7 @@ spec:
spec:
containers:
- name: blade-log
image: 'swr.cn-east-2.myhuaweicloud.com/blade/blade-log:3.6.0'
image: 'swr.cn-east-2.myhuaweicloud.com/blade/blade-log:3.7.0'
args:
- '--spring.profiles.active=${PROFILE}'
- '--spring.cloud.nacos.config.server-addr=${NACOS_SERVER_ADDR}'
@ -1565,7 +1565,7 @@ spec:
spec:
containers:
- name: blade-report
image: 'swr.cn-east-2.myhuaweicloud.com/blade/blade-report:3.6.0'
image: 'swr.cn-east-2.myhuaweicloud.com/blade/blade-report:3.7.0'
args:
- '--spring.profiles.active=${PROFILE}'
- '--spring.cloud.nacos.config.server-addr=${NACOS_SERVER_ADDR}'
@ -1799,7 +1799,7 @@ spec:
spec:
containers:
- name: blade-resource
image: 'swr.cn-east-2.myhuaweicloud.com/blade/blade-resource:3.6.0'
image: 'swr.cn-east-2.myhuaweicloud.com/blade/blade-resource:3.7.0'
args:
- '--spring.profiles.active=${PROFILE}'
- '--spring.cloud.nacos.config.server-addr=${NACOS_SERVER_ADDR}'
@ -2033,7 +2033,7 @@ spec:
spec:
containers:
- name: blade-system
image: 'swr.cn-east-2.myhuaweicloud.com/blade/blade-system:3.6.0'
image: 'swr.cn-east-2.myhuaweicloud.com/blade/blade-system:3.7.0'
args:
- '--spring.profiles.active=${PROFILE}'
- '--spring.cloud.nacos.config.server-addr=${NACOS_SERVER_ADDR}'
@ -2267,7 +2267,7 @@ spec:
spec:
containers:
- name: blade-user
image: 'swr.cn-east-2.myhuaweicloud.com/blade/blade-user:3.6.0'
image: 'swr.cn-east-2.myhuaweicloud.com/blade/blade-user:3.7.0'
args:
- '--spring.profiles.active=${PROFILE}'
- '--spring.cloud.nacos.config.server-addr=${NACOS_SERVER_ADDR}'
@ -2496,7 +2496,7 @@ spec:
spec:
containers:
- name: saber-web
image: 'swr.cn-east-2.myhuaweicloud.com/blade/saber-web:3.6.0'
image: 'swr.cn-east-2.myhuaweicloud.com/blade/saber-web:3.7.0'
ports:
- name: web
containerPort: 80
@ -2721,7 +2721,7 @@ spec:
spec:
containers:
- name: blade-swagger
image: 'swr.cn-east-2.myhuaweicloud.com/blade/blade-swagger:3.6.0'
image: 'swr.cn-east-2.myhuaweicloud.com/blade/blade-swagger:3.7.0'
args:
- '--spring.profiles.active=${PROFILE}'
- '--spring.cloud.nacos.config.server-addr=${NACOS_SERVER_ADDR}'
@ -3749,7 +3749,7 @@ spec:
spec:
containers:
- name: mysql
image: 'swr.cn-east-2.myhuaweicloud.com/blade/saber-db:v3.6.0'
image: 'swr.cn-east-2.myhuaweicloud.com/blade/saber-db:v3.7.0'
ports:
- name: mysql
containerPort: 3306