Browse Source

0426 拆分novel

Qing 1 year ago
parent
commit
57e1db744b

+ 27 - 0
novel-cloud-demo/novel-book-demo/pom.xml

@@ -0,0 +1,27 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sf</groupId>
+        <artifactId>novel-cloud-demo</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>novel-book-demo</artifactId>
+    <packaging>jar</packaging>
+
+    <name>novel-book-demo</name>
+    <url>http://maven.apache.org</url>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.sf</groupId>
+            <artifactId>novel-core-demo</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+</project>

+ 12 - 0
novel-cloud-demo/novel-book-demo/src/main/java/com/sf/BookApplication.java

@@ -0,0 +1,12 @@
+package com.sf;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class BookApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(BookApplication.class, args);
+    }
+}

+ 8 - 0
novel-cloud-demo/novel-book-demo/src/main/java/com/sf/TestController.java

@@ -0,0 +1,8 @@
+package com.sf;
+
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class TestController {
+
+}

+ 7 - 0
novel-cloud-demo/novel-book-demo/src/main/resources/application.yml

@@ -0,0 +1,7 @@
+server:
+  port: 18080
+
+spring:
+  profiles:
+    # 嵌入core模块中的application-common.yml的配置
+    include: common

+ 6 - 0
novel-cloud-demo/novel-book-demo/src/main/resources/bootstrap.yml

@@ -0,0 +1,6 @@
+spring:
+  application:
+    name: novel-book-demo
+  profiles:
+    # 嵌入 bootstrap-common.yml
+    include: common

+ 98 - 0
novel-cloud-demo/novel-core-demo/pom.xml

@@ -0,0 +1,98 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sf</groupId>
+        <artifactId>novel-cloud-demo</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>novel-core-demo</artifactId>
+    <packaging>jar</packaging>
+
+    <name>novel-core-demo</name>
+    <url>http://maven.apache.org</url>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-bootstrap</artifactId>
+        </dependency>
+
+<!--        <dependency>-->
+<!--            <groupId>com.alibaba.cloud</groupId>-->
+<!--            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>-->
+<!--        </dependency>-->
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <!--            <scope>test</scope>-->
+        </dependency>
+
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springdoc</groupId>
+            <artifactId>springdoc-openapi-starter-webmvc-api</artifactId>
+            <version>2.0.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springdoc</groupId>
+            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
+            <version>2.0.2</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.mybatis.spring.boot</groupId>
+            <artifactId>mybatis-spring-boot-starter</artifactId>
+            <version>3.0.3</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.mysql</groupId>
+            <artifactId>mysql-connector-j</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.5.4</version>
+        </dependency>
+    </dependencies>
+</project>

+ 152 - 0
novel-cloud-demo/novel-core-demo/src/main/java/com/sf/ErrorCodeEnum.java

@@ -0,0 +1,152 @@
+package com.sf;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 错误码枚举类。
+ * <p>
+ * 错误码为字符串类型,共 5 位,分成两个部分:错误产生来源+四位数字编号。 错误产生来源分为 A/B/C, A 表示错误来源于用户,比如参数错误,用户安装版本过低,用户支付 超时等问题; B
+ * 表示错误来源于当前系统,往往是业务逻辑出错,或程序健壮性差等问题; C 表示错误来源 于第三方服务,比如 CDN 服务出错,消息投递超时等问题;四位数字编号从 0001 到 9999,大类之间的
+ * 步长间距预留 100。
+ * <p>
+ * 错误码分为一级宏观错误码、二级宏观错误码、三级宏观错误码。 在无法更加具体确定的错误场景中,可以直接使用一级宏观错误码。
+ *
+ * @author xiongxiaoyang
+ * @date 2022/5/11
+ */
+@Getter
+@AllArgsConstructor
+public enum ErrorCodeEnum {
+
+    /**
+     * 正确执行后的返回
+     */
+    OK("00000", "一切 ok"),
+
+    /**
+     * 一级宏观错误码,用户端错误
+     */
+    USER_ERROR("A0001", "用户端错误"),
+
+    /**
+     * 二级宏观错误码,用户注册错误
+     */
+    USER_REGISTER_ERROR("A0100", "用户注册错误"),
+
+    /**
+     * 用户未同意隐私协议
+     */
+    USER_NO_AGREE_PRIVATE_ERROR("A0101", "用户未同意隐私协议"),
+
+    /**
+     * 注册国家或地区受限
+     */
+    USER_REGISTER_AREA_LIMIT_ERROR("A0102", "注册国家或地区受限"),
+
+    /**
+     * 用户验证码错误
+     */
+    USER_VERIFY_CODE_ERROR("A0240", "用户验证码错误"),
+
+    /**
+     * 用户名已存在
+     */
+    USER_NAME_EXIST("A0111", "用户名已存在"),
+
+    /**
+     * 用户账号不存在
+     */
+    USER_ACCOUNT_NOT_EXIST("A0201", "用户账号不存在"),
+
+    /**
+     * 用户密码错误
+     */
+    USER_PASSWORD_ERROR("A0210", "用户密码错误"),
+
+    /**
+     * 二级宏观错误码,用户请求参数错误
+     */
+    USER_REQUEST_PARAM_ERROR("A0400", "用户请求参数错误"),
+
+    /**
+     * 用户登录已过期
+     */
+    USER_LOGIN_EXPIRED("A0230", "用户登录已过期"),
+
+    /**
+     * 访问未授权
+     */
+    USER_UN_AUTH("A0301", "访问未授权"),
+
+    /**
+     * 用户请求服务异常
+     */
+    USER_REQ_EXCEPTION("A0500", "用户请求服务异常"),
+
+    /**
+     * 请求超出限制
+     */
+    USER_REQ_MANY("A0501", "请求超出限制"),
+
+    /**
+     * 用户评论异常
+     */
+    USER_COMMENT("A2000", "用户评论异常"),
+
+    /**
+     * 用户评论异常
+     */
+    USER_COMMENTED("A2001", "用户已发表评论"),
+
+    /**
+     * 作家发布异常
+     */
+    AUTHOR_PUBLISH("A3000", "作家发布异常"),
+
+    /**
+     * 小说名已存在
+     */
+    AUTHOR_BOOK_NAME_EXIST("A3001", "小说名已存在"),
+
+    /**
+     * 用户上传文件异常
+     */
+    USER_UPLOAD_FILE_ERROR("A0700", "用户上传文件异常"),
+
+    /**
+     * 用户上传文件类型不匹配
+     */
+    USER_UPLOAD_FILE_TYPE_NOT_MATCH("A0701", "用户上传文件类型不匹配"),
+
+    /**
+     * 一级宏观错误码,系统执行出错
+     */
+    SYSTEM_ERROR("B0001", "系统执行出错"),
+
+    /**
+     * 二级宏观错误码,系统执行超时
+     */
+    SYSTEM_TIMEOUT_ERROR("B0100", "系统执行超时"),
+
+    /**
+     * 一级宏观错误码,调用第三方服务出错
+     */
+    THIRD_SERVICE_ERROR("C0001", "调用第三方服务出错"),
+
+    /**
+     * 一级宏观错误码,中间件服务出错
+     */
+    MIDDLEWARE_SERVICE_ERROR("C0100", "中间件服务出错");
+
+    /**
+     * 错误码
+     */
+    private final String code;
+
+    /**
+     * 中文描述
+     */
+    private final String message;
+
+}

+ 86 - 0
novel-cloud-demo/novel-core-demo/src/main/java/com/sf/RestResp.java

@@ -0,0 +1,86 @@
+package com.sf;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+
+import java.util.Objects;
+
+/**
+ * Http Rest 响应工具及数据格式封装
+ *
+ * @author xiongxiaoyang
+ * @date 2022/5/11
+ */
+@Getter
+public class RestResp<T> {
+
+    /**
+     * 响应码
+     */
+    @Schema(description = "错误码,00000-没有错误")
+    private String code;
+
+    /**
+     * 响应消息
+     */
+    @Schema(description = "响应消息")
+    private String message;
+
+    /**
+     * 响应数据
+     */
+    @Schema(description = "响应数据")
+    private T data;
+
+    private RestResp() {
+        this.code = ErrorCodeEnum.OK.getCode();
+        this.message = ErrorCodeEnum.OK.getMessage();
+    }
+
+    private RestResp(ErrorCodeEnum errorCode) {
+        this.code = errorCode.getCode();
+        this.message = errorCode.getMessage();
+    }
+
+    private RestResp(T data) {
+        this();
+        this.data = data;
+    }
+
+    /**
+     * 业务处理成功,无数据返回
+     */
+    public static RestResp<Void> ok() {
+        return new RestResp<>();
+    }
+
+    /**
+     * 业务处理成功,有数据返回
+     */
+    public static <T> RestResp<T> ok(T data) {
+        return new RestResp<>(data);
+    }
+
+    /**
+     * 业务处理失败
+     */
+    public static RestResp<Void> fail(ErrorCodeEnum errorCode) {
+        return new RestResp<>(errorCode);
+    }
+
+
+    /**
+     * 系统错误
+     */
+    public static RestResp<Void> error() {
+        return new RestResp<>(ErrorCodeEnum.SYSTEM_ERROR);
+    }
+
+    /**
+     * 判断是否成功
+     */
+    public boolean isOk() {
+        return Objects.equals(this.code, ErrorCodeEnum.OK.getCode());
+    }
+
+}

+ 7 - 0
novel-cloud-demo/novel-core-demo/src/main/resources/application-common.yml

@@ -0,0 +1,7 @@
+spring:
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 127.0.0.1:8848
+        username: nacos
+        password: nacos

+ 11 - 0
novel-cloud-demo/novel-core-demo/src/main/resources/bootstrap-common.yml

@@ -0,0 +1,11 @@
+spring:
+  cloud:
+    nacos:
+      config:
+        server-addr: 127.0.0.1:8848
+        username: nacos
+        password: nacos
+        file-extension: yml
+        extension-configs[0]:
+          data‐id: novel-mysql.yml
+          refresh: true

+ 38 - 0
novel-cloud-demo/novel-core-demo/src/test/java/com/sf/AppTest.java

@@ -0,0 +1,38 @@
+package com.sf;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Unit test for simple App.
+ */
+public class AppTest 
+    extends TestCase
+{
+    /**
+     * Create the test case
+     *
+     * @param testName name of the test case
+     */
+    public AppTest( String testName )
+    {
+        super( testName );
+    }
+
+    /**
+     * @return the suite of tests being tested
+     */
+    public static Test suite()
+    {
+        return new TestSuite( AppTest.class );
+    }
+
+    /**
+     * Rigourous Test :-)
+     */
+    public void testApp()
+    {
+        assertTrue( true );
+    }
+}

+ 27 - 0
novel-cloud-demo/novel-home-demo/pom.xml

@@ -0,0 +1,27 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sf</groupId>
+        <artifactId>novel-cloud-demo</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>novel-home-demo</artifactId>
+    <packaging>jar</packaging>
+
+    <name>novel-home-demo</name>
+    <url>http://maven.apache.org</url>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.sf</groupId>
+            <artifactId>novel-core-demo</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+</project>

+ 12 - 0
novel-cloud-demo/novel-home-demo/src/main/java/com/sf/HomeApplication.java

@@ -0,0 +1,12 @@
+package com.sf;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class HomeApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(HomeApplication.class, args);
+    }
+}

+ 7 - 0
novel-cloud-demo/novel-home-demo/src/main/resources/application.yml

@@ -0,0 +1,7 @@
+spring:
+  profiles:
+    # 嵌入core模块中的application-common.yml的配置
+    include: common
+
+server:
+  port: 19090

+ 6 - 0
novel-cloud-demo/novel-home-demo/src/main/resources/bootstrap.yml

@@ -0,0 +1,6 @@
+spring:
+  application:
+    name: novel-home-demo
+  profiles:
+    # 嵌入 bootstrap-common.yml
+    include: common