# 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