# pb-back
**Repository Path**: bp_2/pb-back
## Basic Information
- **Project Name**: pb-back
- **Description**: 问题解答的后端项目
- **Primary Language**: Unknown
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-05-03
- **Last Updated**: 2024-05-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
接口文档
# KANTBOOT架构
## 1 结构简介
这个架构的诞生是基于我在多个中小项目中的经验总结,目的是为了提高开发效率,减少重复代码,提高代码的可读性。
## 2 使用技术及技术版本介绍
### 2.1 后端
- Java 17 (zulu openjdk 17)
- Spring Boot 3.1.6
- HuTool 5.8.24
- FastJson2 2.0.37 (用于替换Spring Boot自带的Jackson,与平常的一些json处理)
- Spring Data JPA 3.1.6
> 注:安全方面没有使用Spring Security,而是使用了自己写的一套权限管理方案,具体的实现思路会在后续的文章中详细介绍。
> 注:还有一套微服务架构版,有时间将文档补全后,我再放出来。
### 2.2 PC管理后台端
- Vue 3
- Vite
- Element Plus
- Axios
- Vue Router
- Pinia
- TypeScript
- Sass
### 2.3 移动端
- UniApp
- uView UI
- TypeScript
- Sass
> 注:还有一个KantbootUI组件库,有时间将文档补全后,我再放出来。
> 接下来介绍一下这个后端架构
## 3 常用示例
### 3.1 RestResult(通用工具类)
这是一个方便用户在rest操作的工具类
#### 以下是返回成功信息案例
```java
public class DemoController {
@GetMapping("/demo")
public RestResult demo(){
// 任意类,此处以SysUser类为例
SysUser user = new SysUser();
user.setId(1L);
user.setUsername("admin");
user.setPassword("123456");
// 第一个参数为返回的数据,第二个参数为返回的状态码,第三个参数为返回的信息
return RestResult.success(user,"getSuccess","获取成功");
// 当有国际化字典时,可以直接使用国际化字典中的信息,不需要第三个参数
// return RestResult.success(user,"getSuccess");
}
}
```
### 3.2、BaseException(通用异常类)
这是一个方便用户在抛出异常时使用的工具类
#### 以下是抛出异常案例
```java
public class DemoService{
public void demo(SysUser user){
if(user.getId() == null){
// 第一个参数为异常的状态码,第二个参数为异常的信息
throw BaseException.of("getFail","获取失败");
// 如果在国际化字典中找到了对应的信息,可以直接使用国际化字典中的信息,不需要第二个参数
// throw BaseException.of("getFail");
}
}
}
```
### 3.3、BaseAdminController(通用管理后台控制器)
这是一个方便用户在管理后台使用的工具类,当controller继承此类时,会自带增删改的接口
#### 以下是管理后台控制器案例
```java
@RestController
@RequestMapping("/demo")
public class DemoController extends BaseAdminController {
}
```
### 3.5、快速获取登录的用户
#### 以下是获取用户的案例
```java
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
@Service
public class DemoService {
@Resource
private ISysUserService userService;
public void demo() {
// 获取当前登录用户id
Long userId = userService.getSelfId();
// 获取当前登录用户信息
SysUser user = userService.getSelf();
// 获取经过处理过,更易于前端展示的用户信息
// Map selfMap = userService.getSelfMap();
}
}
```
### 3.6、获取SysSetting配置
> 通常用来设置一些系统的配置,比如token过期时间,系统默认角色、微信小程序的appid、secret等等一些配置信息
```
import com.alibaba.fastjson2.JSON;
import jakarta.annotation.Resource;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.HashMap;
@SpringBootTest
public class ISysSettingGroupServiceTest {
@Resource
private ISysSettingService service;
/**
* 根据分组编码获取设置Map测试
*/
@Test
public void getMapByGroupCodeTest() {
// 根据分组编码获取设置Map
HashMap user = service.getMapByGroupCode("user");
// 示例:{"tokenExpireTime":"604800000","defaultRoleCode":"user"}
System.out.println(JSON.toJSONString(user));
}
/**
* 根据分组编码获取设置列表测试
*/
@Test
public void getValueTest() {
// 根据分组编码获取设置列表
String tokenExpireTime = service.getValue("user", "tokenExpireTime");
// 示例:604800000
System.out.println(tokenExpireTime);
}
}
```
## 4、对应包
### 4.1、util
#### 4.1.1、util-common(通用工具类)
查看对应 README.md
#### 4.1.2、util-core(核心工具类)
查看对应 README.md
### 4.2 地理API整合
查看对应 README.md
### 4.3、发送短信与手机号码查询
查看对应 README.md