From 0d1f2260f9f821a3d76267d64a4fd2e270c3ad41 Mon Sep 17 00:00:00 2001
From: bunny <1319900154@qq.com>
Date: Mon, 1 Apr 2024 18:38:57 +0800
Subject: [PATCH] =?UTF-8?q?feat(init):=20=E9=85=8D=E7=BD=AE=E6=96=87?=
=?UTF-8?q?=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/GitCommitMessageStorage.xml | 8 +
common/common-util/pom.xml | 23 ++-
.../src/main/java/com/atguigu/App.java | 13 --
.../ssyx/common/config/MybatisPlusConfig.java | 35 ++++
.../ssyx/common/config/Swagger2Config.java | 93 ++++++++++
.../ssyx/common/constant/MessageConstant.java | 36 ++++
.../ssyx/common/context/BaseContext.java | 27 +++
.../ssyx/common/exception/BunnyException.java | 33 ++++
.../exception/GlobalExceptionHandler.java | 81 ++++++++
.../atguigu/ssyx/common/result/Result.java | 174 ++++++++++++++++++
.../ssyx/common/result/ResultCodeEnum.java | 47 +++++
model/pom.xml | 35 +++-
service/src/main/java/com/atguigu/App.java | 13 --
13 files changed, 581 insertions(+), 37 deletions(-)
create mode 100644 .idea/GitCommitMessageStorage.xml
delete mode 100644 common/common-util/src/main/java/com/atguigu/App.java
create mode 100644 common/service-util/src/main/java/com/atguigu/ssyx/common/config/MybatisPlusConfig.java
create mode 100644 common/service-util/src/main/java/com/atguigu/ssyx/common/config/Swagger2Config.java
create mode 100644 common/service-util/src/main/java/com/atguigu/ssyx/common/constant/MessageConstant.java
create mode 100644 common/service-util/src/main/java/com/atguigu/ssyx/common/context/BaseContext.java
create mode 100644 common/service-util/src/main/java/com/atguigu/ssyx/common/exception/BunnyException.java
create mode 100644 common/service-util/src/main/java/com/atguigu/ssyx/common/exception/GlobalExceptionHandler.java
create mode 100644 common/service-util/src/main/java/com/atguigu/ssyx/common/result/Result.java
create mode 100644 common/service-util/src/main/java/com/atguigu/ssyx/common/result/ResultCodeEnum.java
delete mode 100644 service/src/main/java/com/atguigu/App.java
diff --git a/.idea/GitCommitMessageStorage.xml b/.idea/GitCommitMessageStorage.xml
new file mode 100644
index 0000000..e4fd56a
--- /dev/null
+++ b/.idea/GitCommitMessageStorage.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/common/common-util/pom.xml b/common/common-util/pom.xml
index bfd5c40..da6d822 100644
--- a/common/common-util/pom.xml
+++ b/common/common-util/pom.xml
@@ -1,4 +1,4 @@
-
4.0.0
@@ -17,7 +17,28 @@
UTF-8
+
+
+ org.apache.httpcomponents
+ httpclient
+
+
+ io.jsonwebtoken
+ jjwt
+
+
+
+ joda-time
+ joda-time
+
+
+
+ com.atguigu
+ model
+ 1.0-SNAPSHOT
+ provided
+
diff --git a/common/common-util/src/main/java/com/atguigu/App.java b/common/common-util/src/main/java/com/atguigu/App.java
deleted file mode 100644
index 74498e7..0000000
--- a/common/common-util/src/main/java/com/atguigu/App.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.atguigu;
-
-/**
- * Hello world!
- *
- */
-public class App
-{
- public static void main( String[] args )
- {
- System.out.println( "Hello World!" );
- }
-}
diff --git a/common/service-util/src/main/java/com/atguigu/ssyx/common/config/MybatisPlusConfig.java b/common/service-util/src/main/java/com/atguigu/ssyx/common/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..ff616ae
--- /dev/null
+++ b/common/service-util/src/main/java/com/atguigu/ssyx/common/config/MybatisPlusConfig.java
@@ -0,0 +1,35 @@
+package com.atguigu.ssyx.common.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+/**
+ * MybatisPlus配置类
+ */
+@EnableTransactionManagement
+@Configuration
+@MapperScan("com.atguigu.ssyx.*.mapper")
+public class MybatisPlusConfig {
+
+ /**
+ * mp插件
+ */
+ @Bean
+ public MybatisPlusInterceptor optimisticLockerInnerInterceptor() {
+ MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+ // 向Mybatis过滤器链中添加分页拦截器
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+ // 乐观锁插件
+ interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
+ // 防止全表删除
+ interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());
+ return interceptor;
+ }
+}
\ No newline at end of file
diff --git a/common/service-util/src/main/java/com/atguigu/ssyx/common/config/Swagger2Config.java b/common/service-util/src/main/java/com/atguigu/ssyx/common/config/Swagger2Config.java
new file mode 100644
index 0000000..39d48b1
--- /dev/null
+++ b/common/service-util/src/main/java/com/atguigu/ssyx/common/config/Swagger2Config.java
@@ -0,0 +1,93 @@
+package com.atguigu.ssyx.common.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.ParameterBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.schema.ModelRef;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.service.Contact;
+import springfox.documentation.service.Parameter;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Swagger2配置信息
+ */
+@Configuration
+@EnableSwagger2WebMvc
+public class Swagger2Config {
+
+ @Bean
+ public Docket webApiConfig() {
+ List pars = new ArrayList<>();
+ ParameterBuilder tokenPar = new ParameterBuilder();
+ tokenPar.name("userId")
+ .description("用户token")
+ //.defaultValue(JwtHelper.createToken(1L, "admin"))
+ .defaultValue("1")
+ .modelRef(new ModelRef("string"))
+ .parameterType("header")
+ .required(false)
+ .build();
+ pars.add(tokenPar.build());
+
+ return new Docket(DocumentationType.SWAGGER_2)
+ .groupName("webApi")
+ .apiInfo(webApiInfo())
+ .select()
+ // 只显示api路径下的页面
+ .apis(RequestHandlerSelectors.basePackage("com.atguigu.ssyx"))
+ .paths(PathSelectors.regex("/api/.*"))
+ .build()
+ .globalOperationParameters(pars);
+ }
+
+ @Bean
+ public Docket adminApiConfig() {
+ List pars = new ArrayList<>();
+ ParameterBuilder tokenPar = new ParameterBuilder();
+ tokenPar.name("adminId")
+ .description("用户token")
+ .defaultValue("1")
+ .modelRef(new ModelRef("string"))
+ .parameterType("header")
+ .required(false)
+ .build();
+ pars.add(tokenPar.build());
+
+ return new Docket(DocumentationType.SWAGGER_2)
+ .groupName("adminApi")
+ .apiInfo(adminApiInfo())
+ .select()
+ // 只显示admin路径下的页面
+ .apis(RequestHandlerSelectors.basePackage("com.atguigu.ssyx"))
+ .paths(PathSelectors.regex("/admin/.*"))
+ .build()
+ .globalOperationParameters(pars);
+ }
+
+ private ApiInfo webApiInfo() {
+ return new ApiInfoBuilder()
+ .title("网站-API文档")
+ .description("本文档描述了尚上优选网站微服务接口定义")
+ .version("1.0")
+ .contact(new Contact("atguigu", "http://atguigu.com", "atguigu"))
+ .build();
+ }
+
+ private ApiInfo adminApiInfo() {
+ return new ApiInfoBuilder()
+ .title("后台管理系统-API文档")
+ .description("本文档描述了尚上优选后台系统服务接口定义")
+ .version("1.0")
+ .contact(new Contact("atguigu", "http://atguigu.com", "atguigu"))
+ .build();
+ }
+}
\ No newline at end of file
diff --git a/common/service-util/src/main/java/com/atguigu/ssyx/common/constant/MessageConstant.java b/common/service-util/src/main/java/com/atguigu/ssyx/common/constant/MessageConstant.java
new file mode 100644
index 0000000..b748003
--- /dev/null
+++ b/common/service-util/src/main/java/com/atguigu/ssyx/common/constant/MessageConstant.java
@@ -0,0 +1,36 @@
+package com.atguigu.ssyx.common.constant;
+
+/**
+ * 信息提示常量类
+ */
+public class MessageConstant {
+ public static final String PASSWORD_ERROR = "密码错误";
+ public static final String OLD_PASSWORD_ERROR = "旧密码不匹配";
+ public static final String OLD_PASSWORD_SAME_NEW_PASSWORD = "旧密码与新密码相同";
+ public static final String ACCOUNT_NOT_FOUND = "账号不存在";
+ public static final String ACCOUNT_LOCKED = "账号被锁定";
+ public static final String UNKNOWN_ERROR = "未知错误";
+ public static final String USER_NOT_LOGIN = "用户未登录";
+ public static final String USER_TOKEN_OUT_OF_DATE = "用户登录过期";
+ public static final String LOGIN_FAILED = "登录失败";
+ public static final String UPLOAD_FAILED = "文件上传失败";
+ public static final String PASSWORD_EDIT_FAILED = "密码修改失败";
+ public static final String ALREADY_EXISTS = "已存在";
+ public static final String REQUEST_NOT_EMPTY = "请求不为空";
+ public static final String UPDATE_ID_IS_NOT_EMPTY = "删除id不能为空";
+ public static final String DELETE_ID_IS_NOT_EMPTY = "修改id不能为空";
+ public static final String MENU_IS_NOT_EXIST = "菜单不存在";
+ public static final String SAVE_DTO_IS_NULL = "添加参数不能为空";
+ public static final String UPDATE_DTO_IS_NULL = "修改参数不能为空";
+ public static final String FIND_ID_IS_NOT_EMPTY = "查询ID不能为空";
+ public static final String MESSAGE_CODE_NOT_PASS = "短信验证码未过期";
+ public static final String MESSAGE_CODE_UNAUTHORIZED = "短信验证码未授权,请联系管理员";
+ public static final String VERIFICATION_CODE_ERROR = "验证码错误";
+ public static final String USER_DOES_NOT_EXIST = "用户不存在";
+ public static final String USER_DOES_IS_EXIST = "用户已存在";
+ public static final String VERIFICATION_CODE_IS_EMPTY = "请先发送验证码";
+ public static final String LOGIN_DTO_IS_EMPTY = "登录参数不能为空";
+ public static final String TOKEN_IS_EMPTY = "token为空";
+ public static final String DATA_IS_EMPTY = "数据为空";
+ public static final String STOCK_LESS = "库存不足";
+}
diff --git a/common/service-util/src/main/java/com/atguigu/ssyx/common/context/BaseContext.java b/common/service-util/src/main/java/com/atguigu/ssyx/common/context/BaseContext.java
new file mode 100644
index 0000000..c6ffbfe
--- /dev/null
+++ b/common/service-util/src/main/java/com/atguigu/ssyx/common/context/BaseContext.java
@@ -0,0 +1,27 @@
+package com.atguigu.ssyx.common.context;
+
+
+public class BaseContext {
+ public static ThreadLocal threadLocal = new ThreadLocal<>();
+
+ /**
+ * 获取当前用户id
+ */
+ public static Long getUserId() {
+ return threadLocal.get();
+ }
+
+ /**
+ * 设置用户id
+ */
+ public static void setUserId(Long userId) {
+ threadLocal.set(userId);
+ }
+
+ /**
+ * 移出当前id
+ */
+ public static void remove() {
+ threadLocal.remove();
+ }
+}
diff --git a/common/service-util/src/main/java/com/atguigu/ssyx/common/exception/BunnyException.java b/common/service-util/src/main/java/com/atguigu/ssyx/common/exception/BunnyException.java
new file mode 100644
index 0000000..8c1d8f3
--- /dev/null
+++ b/common/service-util/src/main/java/com/atguigu/ssyx/common/exception/BunnyException.java
@@ -0,0 +1,33 @@
+package com.atguigu.ssyx.common.exception;
+
+import com.atguigu.ssyx.common.result.ResultCodeEnum;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+import lombok.extern.slf4j.Slf4j;
+
+@NoArgsConstructor
+@Getter
+@ToString
+@Slf4j
+public class BunnyException extends RuntimeException {
+ Integer code;// 状态码
+ String message;// 描述信息
+
+ public BunnyException(Integer code, String message) {
+ super(message);
+ this.code = code;
+ this.message = message;
+ }
+
+ public BunnyException(String message) {
+ super(message);
+ this.message = message;
+ }
+
+ public BunnyException(ResultCodeEnum codeEnum) {
+ super(codeEnum.getMessage());
+ this.code = codeEnum.getCode();
+ this.message = codeEnum.getMessage();
+ }
+}
diff --git a/common/service-util/src/main/java/com/atguigu/ssyx/common/exception/GlobalExceptionHandler.java b/common/service-util/src/main/java/com/atguigu/ssyx/common/exception/GlobalExceptionHandler.java
new file mode 100644
index 0000000..b689063
--- /dev/null
+++ b/common/service-util/src/main/java/com/atguigu/ssyx/common/exception/GlobalExceptionHandler.java
@@ -0,0 +1,81 @@
+package com.atguigu.ssyx.common.exception;
+
+
+import com.atguigu.ssyx.common.constant.MessageConstant;
+import com.atguigu.ssyx.common.result.Result;
+import com.atguigu.ssyx.common.result.ResultCodeEnum;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+
+import java.nio.file.AccessDeniedException;
+import java.sql.SQLIntegrityConstraintViolationException;
+
+@RestControllerAdvice
+@Slf4j
+public class GlobalExceptionHandler {
+ // 自定义异常信息
+ @ExceptionHandler(BunnyException.class)
+ @ResponseBody
+ public Result