9832 字
约 32 分钟
56
日志文件配置路径
无标签

附录H 系统管理模块源码详解

模块概览(面向 0 基础读者):

  • 提供数据字典、通用配置等基础管理能力。
  • 暴露查询接口供后台管理及其它微服务复用。
  • 支持分页、缓存等扩展,便于快速扩展系统配置。

核心目录:

  • xuecheng-plus-system/xuecheng-plus-system-api/src/main/java/com/xuecheng/system/api (尚未找到,检查路径)
  • xuecheng-plus-system/xuecheng-plus-system-service/src/main/java/com/xuecheng/system/service
  • xuecheng-plus-system/xuecheng-plus-system-service/src/main/java/com/xuecheng/system/mapper
  • xuecheng-plus-system/xuecheng-plus-system-model/src/main/java/com/xuecheng/system/model
  • xuecheng-plus-system/xuecheng-plus-system-api/src/main/resources

文件:xuecheng-plus-system/api/com/xuecheng/system/config/GlobalCorsConfig.java

package com.xuecheng.system.config; // 声明类所在的包路径

import org.springframework.context.annotation.Bean; // 导入 Bean 类
import org.springframework.context.annotation.Configuration; // 导入 Configuration 类
import org.springframework.web.cors.CorsConfiguration; // 导入 CorsConfiguration 类
import org.springframework.web.cors.UrlBasedCorsConfigurationSource; // 导入 UrlBasedCorsConfigurationSource 类
import org.springframework.web.filter.CorsFilter; // 导入 CorsFilter 类

/** // 保留原作者写的块注释
 * @author Mr.M // 保留原作者写的块注释
 * @version 1.0 // 保留原作者写的块注释
 * @description TODO // 保留原作者写的块注释
 * @date 2023/2/12 11:27 // 保留原作者写的块注释
 */ // 保留原作者写的块注释
@Configuration // 使用注解 @Configuration
public class GlobalCorsConfig { // 定义 class GlobalCorsConfig

    @Bean // 使用注解 @Bean
    public CorsFilter corsFilter() { // 定义方法 corsFilter(...)

        CorsConfiguration config = new CorsConfiguration(); // 创建 CorsConfiguration 对象并赋值给 config
        //允许白名单域名进行跨域调用 // 保留原作者写的行内注释
        config.addAllowedOrigin("*"); // 执行语句
        //允许跨越发送cookie // 保留原作者写的行内注释
        config.setAllowCredentials(true); // 执行语句
        //放行全部原始头信息 // 保留原作者写的行内注释
        config.addAllowedHeader("*"); // 执行语句
        //允许所有请求方法跨域调用 // 保留原作者写的行内注释
        config.addAllowedMethod("*"); // 执行语句
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); // 创建 UrlBasedCorsConfigurationSource 对象并赋值给 source
        source.registerCorsConfiguration("/**", config); // 执行语句
        return new CorsFilter(source); // 返回 new CorsFilter(source)

    } // 代码块结束
} // 代码块结束

文件:xuecheng-plus-system/api/com/xuecheng/system/config/LocalDateTimeConfig.java

package com.xuecheng.system.config; // 声明类所在的包路径

import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; // 导入 LocalDateTimeDeserializer 类
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; // 导入 LocalDateTimeSerializer 类
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; // 导入 Jackson2ObjectMapperBuilderCustomizer 类
import org.springframework.context.annotation.Bean; // 导入 Bean 类
import org.springframework.context.annotation.Configuration; // 导入 Configuration 类

import java.time.LocalDateTime; // 导入 LocalDateTime 类
import java.time.format.DateTimeFormatter; // 导入 DateTimeFormatter 类

@Configuration // 使用注解 @Configuration
public class LocalDateTimeConfig { // 定义 class LocalDateTimeConfig

    /* // 保留原作者写的块注释
     * 序列化内容 // 保留原作者写的块注释
     *   LocalDateTime -> String // 保留原作者写的块注释
     * 服务端返回给客户端内容 // 保留原作者写的块注释
     * */ // 保留原作者写的块注释
    @Bean // 使用注解 @Bean
    public LocalDateTimeSerializer localDateTimeSerializer() { // 定义方法 localDateTimeSerializer(...)
        return new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // 返回 new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
    } // 代码块结束

    /* // 保留原作者写的块注释
     * 反序列化内容 // 保留原作者写的块注释
     *   String -> LocalDateTime // 保留原作者写的块注释
     * 客户端传入服务端数据 // 保留原作者写的块注释
     * */ // 保留原作者写的块注释
    @Bean // 使用注解 @Bean
    public LocalDateTimeDeserializer localDateTimeDeserializer() { // 定义方法 localDateTimeDeserializer(...)
        return new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // 返回 new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
    } // 代码块结束


    // 配置 // 保留原作者写的行内注释
    @Bean // 使用注解 @Bean
    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() { // 定义方法 jackson2ObjectMapperBuilderCustomizer(...)
        return builder -> { // 返回 builder -> {
            builder.serializerByType(LocalDateTime.class, localDateTimeSerializer()); // 执行语句
            builder.deserializerByType(LocalDateTime.class, localDateTimeDeserializer()); // 执行语句
        }; // 执行语句
    } // 代码块结束

} // 代码块结束

文件:xuecheng-plus-system/api/com/xuecheng/system/controller/DictionaryController.java

package com.xuecheng.system.controller; // 声明类所在的包路径

import com.xuecheng.system.model.po.Dictionary; // 导入 Dictionary 类
import com.xuecheng.system.service.DictionaryService; // 导入 DictionaryService 类
import lombok.extern.slf4j.Slf4j; // 导入 Slf4j 类
import org.springframework.beans.factory.annotation.Autowired; // 导入 Autowired 类
import org.springframework.web.bind.annotation.GetMapping; // 导入 GetMapping 类
import org.springframework.web.bind.annotation.PathVariable; // 导入 PathVariable 类
import org.springframework.web.bind.annotation.RestController; // 导入 RestController 类

import java.util.List; // 导入 List 类

/** // 保留原作者写的块注释
 * <p> // 保留原作者写的块注释
 * 数据字典 前端控制器 // 保留原作者写的块注释
 * </p> // 保留原作者写的块注释
 * // 保留原作者写的块注释
 * @author itcast // 保留原作者写的块注释
 */ // 保留原作者写的块注释
@Slf4j // 使用注解 @Slf4j
@RestController // 使用注解 @RestController
public class DictionaryController  { // 定义 class DictionaryController

    @Autowired // 使用注解 @Autowired
    private DictionaryService  dictionaryService; // 执行语句

    @GetMapping("/dictionary/all") // 使用注解 @GetMapping("/dictionary/all")
    public List<Dictionary> queryAll() { // 定义方法 queryAll(...)
        return dictionaryService.queryAll(); // 返回 dictionaryService.queryAll()
    } // 代码块结束

    @GetMapping("/dictionary/code/{code}") // 使用注解 @GetMapping("/dictionary/code/{code}")
    public Dictionary getByCode(@PathVariable String code) { // 定义方法 getByCode(...)
        return dictionaryService.getByCode(code); // 返回 dictionaryService.getByCode(code)
    } // 代码块结束
} // 代码块结束

文件:xuecheng-plus-system/api/com/xuecheng/system/SystemApplication.java

package com.xuecheng.system; // 声明类所在的包路径

import com.spring4all.swagger.EnableSwagger2Doc; // 导入 EnableSwagger2Doc 类
import org.springframework.boot.SpringApplication; // 导入 SpringApplication 类
import org.springframework.boot.autoconfigure.SpringBootApplication; // 导入 SpringBootApplication 类
import org.springframework.scheduling.annotation.EnableScheduling; // 导入 EnableScheduling 类

/** // 保留原作者写的块注释
 * <p> // 保留原作者写的块注释
 *     系统管理启动类 // 保留原作者写的块注释
 * </p> // 保留原作者写的块注释
 * // 保留原作者写的块注释
 * @Description: // 保留原作者写的块注释
 */ // 保留原作者写的块注释
@EnableScheduling // 使用注解 @EnableScheduling
@EnableSwagger2Doc // 使用注解 @EnableSwagger2Doc
@SpringBootApplication // 使用注解 @SpringBootApplication
public class SystemApplication { // 定义 class SystemApplication

    public static void main(String[] args) { // 定义方法 main(...)
        SpringApplication.run(SystemApplication.class,args); // 执行语句
    } // 代码块结束
} // 代码块结束

文件:xuecheng-plus-system/api/resources/bootstrap.yml

server:
  servlet:
    context-path: /system
  port: 63110
#微服务配置
spring:
  application:
    name: system-api
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://192.168.101.65:3306/xcplus_system?serverTimezone=UTC&userUnicode=true&useSSL=false&
    username: root
    password: mysql
  cloud:
    nacos:
      server-addr: 192.168.101.65:8848
      discovery:
        namespace: dev402
        group: xuecheng-plus-project
# 日志文件配置路径
logging:
  config: classpath:log4j2-dev.xml

# swagger 文档配置
swagger:
  title: "学成在线系统管理"
  description: "系统管理接口"
  base-package: com.xuecheng.system
  enabled: true
  version: 1.0.0

文件:xuecheng-plus-system/api/resources/log4j2-dev.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="180" packages="">
    <properties>
        <property name="logdir">logs</property>
        <property name="PATTERN">%date{YYYY-MM-dd HH:mm:ss,SSS} %level [%thread][%file:%line] - %msg%n%throwable</property>
    </properties>
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="${PATTERN}"/>
        </Console>

        <RollingFile name="ErrorAppender" fileName="${logdir}/error.log"
            filePattern="${logdir}/$${date:yyyy-MM-dd}/error.%d{yyyy-MM-dd-HH}.log" append="true">
            <PatternLayout pattern="${PATTERN}"/>
            <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true" />
            </Policies>
        </RollingFile>

        <RollingFile name="DebugAppender" fileName="${logdir}/info.log"
            filePattern="${logdir}/$${date:yyyy-MM-dd}/info.%d{yyyy-MM-dd-HH}.log" append="true">
            <PatternLayout pattern="${PATTERN}"/>
            <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true" />
            </Policies>
        </RollingFile>
        
        <!--异步appender-->
         <Async name="AsyncAppender" includeLocation="true">
            <AppenderRef ref="ErrorAppender"/>
            <AppenderRef ref="DebugAppender"/>
        </Async>
    </Appenders>
    
    <Loggers>
         <!--过滤掉spring和mybatis的一些无用的debug信息-->
        <logger name="org.springframework" level="INFO">
        </logger>
        <logger name="org.mybatis" level="INFO">
        </logger>
        <logger name="cn.itcast.wanxinp2p.consumer.mapper" level="DEBUG">
        </logger>

        <logger name="springfox" level="INFO">
        </logger>
		<logger name="org.apache.http" level="INFO">
        </logger>
        <logger name="com.netflix.discovery" level="INFO">
        </logger>
        
        <logger name="RocketmqCommon"  level="INFO" >
		</logger>
		
		<logger name="RocketmqRemoting" level="INFO"  >
		</logger>
		
		<logger name="RocketmqClient" level="WARN">
		</logger>

        <logger name="org.dromara.hmily" level="WARN">
        </logger>

        <logger name="org.dromara.hmily.lottery" level="WARN">
        </logger>

        <logger name="org.dromara.hmily.bonuspoint" level="WARN">
        </logger>
		
        <!--OFF   0-->
        <!--FATAL   100-->
        <!--ERROR   200-->
        <!--WARN   300-->
        <!--INFO   400-->
        <!--DEBUG   500-->
        <!--TRACE   600-->
        <!--ALL   Integer.MAX_VALUE-->
        <Root level="DEBUG" includeLocation="true">
            <AppenderRef ref="AsyncAppender"/>
            <AppenderRef ref="Console"/>
            <AppenderRef ref="DebugAppender"/>
        </Root>
    </Loggers>
</Configuration>

文件:xuecheng-plus-system/api_pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <artifactId>xuecheng-plus-system</artifactId>
        <groupId>com.xuecheng</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>xuecheng-plus-system-api</artifactId>
    <name>xuecheng-plus-system-api</name>
    <description>xuecheng-plus-system-api</description>

    <dependencies>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <dependency>
            <groupId>com.xuecheng</groupId>
            <artifactId>xuecheng-plus-system-model</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.xuecheng</groupId>
            <artifactId>xuecheng-plus-system-service</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

        <!--cloud的基础环境包-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-context</artifactId>
        </dependency>

        <!-- Spring Boot 的 Spring Web MVC 集成 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
        <!-- Spring Boot 对 LocalDateTime
          boot-starter-web自动引入
          -->
       <!-- <dependency>
            <groupId>com.fasterxml.jackson.module</groupId>
            <artifactId>jackson-module-parameter-names</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-jdk8</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-jsr310</artifactId>
        </dependency>-->

        <!--<dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>-->
        <!-- 排除 Spring Boot 依赖的日志包冲突 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- Spring Boot 集成 log4j2 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>

        <!-- Spring Boot 集成 swagger -->
        <dependency>
            <groupId>com.spring4all</groupId>
            <artifactId>swagger-spring-boot-starter</artifactId>
        </dependency>


    </dependencies>

    <build>
        <finalName>${project.artifactId}-${project.version}</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.2.2</version>
                <configuration>
                    <!--修改imageName节点的内容,改为私有仓库地址和端口,再加上镜像id和 TAG,我们要直接传到私服-->
                    <!--配置最后生成的镜像名,docker images里的,我们这边取项目名:版本-->
                    <!--<imageName>${project.artifactId}:${project.version}</imageName>-->
                    <imageName>192.168.101.65:5000/${project.artifactId}:${project.version}</imageName>
                    <!--也可以通过以下方式定义image的tag信息。 -->
                    <!-- <imageTags>
                         <imageTag>${project.version}</imageTag>
                         &lt;!&ndash;build 时强制覆盖 tag,配合 imageTags 使用&ndash;&gt;
                         <forceTags>true</forceTags>
                         &lt;!&ndash;build 完成后,push 指定 tag 的镜像,配合 imageTags 使用&ndash;&gt;
                         <pushImageTag>true</pushImageTag>
                     </imageTags>-->
                    <baseImage>java:8u20</baseImage>
                    <maintainer>docker_maven [email protected]</maintainer>
                    <workdir>/root</workdir>
                    <cmd>["java", "-version"]</cmd>
                    <!--来指明Dockerfile文件的所在目录,如果配置了dockerDirectory则忽略baseImage,maintainer等配置-->
                    <!--<dockerDirectory>./</dockerDirectory>-->
                    <!--2375是docker的远程端口,插件生成镜像时连接docker,这里需要指定docker远程端口-->
                    <dockerHost>http://192.168.101.65:2375</dockerHost>
                    <!--入口点,project.build.finalName就是project标签下的build标签下 的filename标签内容,testDocker-->
                    <!--相当于启动容器后,会自动执行java -jar ...-->
                    <entryPoint>["java", "-Dfile.encoding=utf-8","-jar", "/root/${project.build.finalName}.jar"]</entryPoint>
                    <!--是否推送到docker私有仓库,旧版本插件要配置maven的settings文件。 -->
                    <pushImage>true</pushImage>
                    <registryUrl>192.168.101.65:5000</registryUrl>  <!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
                    <resources>
                        <resource>
                            <targetPath>/root</targetPath>
                            <directory>${project.build.directory}</directory>
                            <!--把哪个文件上传到docker,相当于Dockerfile里的add app.jar /-->
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

文件:xuecheng-plus-system/model/com/xuecheng/system/model/po/Dictionary.java

package com.xuecheng.system.model.po; // 声明类所在的包路径

import com.baomidou.mybatisplus.annotation.IdType; // 导入 IdType 类
import com.baomidou.mybatisplus.annotation.TableId; // 导入 TableId 类
import com.baomidou.mybatisplus.annotation.TableName; // 导入 TableName 类
import lombok.Data; // 导入 Data 类

import java.io.Serializable; // 导入 Serializable 类

/** // 保留原作者写的块注释
 * <p> // 保留原作者写的块注释
 * 数据字典 // 保留原作者写的块注释
 * </p> // 保留原作者写的块注释
 * // 保留原作者写的块注释
 * @author itcast // 保留原作者写的块注释
 */ // 保留原作者写的块注释
@Data // 使用注解 @Data
@TableName("dictionary") // 使用注解 @TableName("dictionary")
public class Dictionary implements Serializable { // 定义 class Dictionary

    private static final long serialVersionUID = 1L; // 把 1L 赋值给 serialVersionUID

    /** // 保留原作者写的块注释
     * id标识 // 保留原作者写的块注释
     */ // 保留原作者写的块注释
    @TableId(value = "id", type = IdType.AUTO) // 使用注解 @TableId(value = "id", type = IdType.AUTO)
    private Long id; // 执行语句

    /** // 保留原作者写的块注释
     * 数据字典名称 // 保留原作者写的块注释
     */ // 保留原作者写的块注释
    private String name; // 执行语句

    /** // 保留原作者写的块注释
     * 数据字典代码 // 保留原作者写的块注释
     */ // 保留原作者写的块注释
    private String code; // 执行语句

    /** // 保留原作者写的块注释
     * 数据字典项--json格式 // 保留原作者写的块注释
            [{ // 代码逻辑
                  "sd_name": "低级", // 代码逻辑
                  "sd_id": "200001", // 代码逻辑
                  "sd_status": "1" // 代码逻辑
               }, { // 代码逻辑
                  "sd_name": "中级", // 代码逻辑
                  "sd_id": "200002", // 代码逻辑
                  "sd_status": "1" // 代码逻辑
               }, { // 代码逻辑
                  "sd_name": "高级", // 代码逻辑
                  "sd_id": "200003", // 代码逻辑
                  "sd_status": "1" // 代码逻辑
               }] // 代码逻辑
     */ // 保留原作者写的块注释
    private String itemValues; // 执行语句


} // 代码块结束

文件:xuecheng-plus-system/model_pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <artifactId>xuecheng-plus-system</artifactId>
        <groupId>com.xuecheng</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>xuecheng-plus-system-model</artifactId>
    <name>xuecheng-plus-system-model</name>
    <description>xuecheng-plus-system-model</description>

    <dependencies>
        <dependency>
            <groupId>com.xuecheng</groupId>
            <artifactId>xuecheng-plus-base</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <!--存在mybatisplus注解添加相关注解保证不报错-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-annotation</artifactId>
            <version>${mybatis-plus-boot-starter.version}</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-core</artifactId>
            <version>${mybatis-plus-boot-starter.version}</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

</project>

文件:xuecheng-plus-system/pom.xml

<?xml version="1.0" encoding="UTF-8"?> <!-- XML 声明 -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <!-- SQL 语句片段 -->
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- SQL 语句片段 -->
    <modelVersion>4.0.0</modelVersion> <!-- SQL 语句片段 -->
    <parent> <!-- SQL 语句片段 -->
        <artifactId>xuecheng-plus-parent</artifactId> <!-- SQL 语句片段 -->
        <groupId>com.xuecheng</groupId> <!-- SQL 语句片段 -->
        <version>0.0.1-SNAPSHOT</version> <!-- SQL 语句片段 -->
        <relativePath>../xuecheng-plus-parent</relativePath> <!-- SQL 语句片段 -->
    </parent> <!-- SQL 语句片段 -->
    <artifactId>xuecheng-plus-system</artifactId> <!-- SQL 语句片段 -->
    <name>xuecheng-plus-system</name> <!-- SQL 语句片段 -->
    <description>xuecheng-plus-system</description> <!-- SQL 语句片段 -->
    <packaging>pom</packaging> <!-- SQL 语句片段 -->

    <modules> <!-- SQL 语句片段 -->
        <module>xuecheng-plus-system-api</module> <!-- SQL 语句片段 -->
        <module>xuecheng-plus-system-service</module> <!-- SQL 语句片段 -->
        <module>xuecheng-plus-system-model</module> <!-- SQL 语句片段 -->
    </modules> <!-- SQL 语句片段 -->
</project> <!-- SQL 语句片段 -->

文件:xuecheng-plus-system/root_pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <artifactId>xuecheng-plus-parent</artifactId>
        <groupId>com.xuecheng</groupId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>../xuecheng-plus-parent</relativePath>
    </parent>
    <artifactId>xuecheng-plus-system</artifactId>
    <name>xuecheng-plus-system</name>
    <description>xuecheng-plus-system</description>
    <packaging>pom</packaging>

    <modules>
        <module>xuecheng-plus-system-api</module>
        <module>xuecheng-plus-system-service</module>
        <module>xuecheng-plus-system-model</module>
    </modules>
</project>

文件:xuecheng-plus-system/service/com/xuecheng/system/config/MybatisPlusConfig.java

package com.xuecheng.system.config; // 声明类所在的包路径

import com.baomidou.mybatisplus.annotation.DbType; // 导入 DbType 类
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; // 导入 MybatisPlusInterceptor 类
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; // 导入 PaginationInnerInterceptor 类
import org.mybatis.spring.annotation.MapperScan; // 导入 MapperScan 类
import org.springframework.context.annotation.Bean; // 导入 Bean 类
import org.springframework.context.annotation.Configuration; // 导入 Configuration 类

/** // 保留原作者写的块注释
 * <P> // 保留原作者写的块注释
 * 		Mybatis-Plus 配置 // 保留原作者写的块注释
 * </p> // 保留原作者写的块注释
 */ // 保留原作者写的块注释
@Configuration // 使用注解 @Configuration
@MapperScan("com.xuecheng.system.mapper") // 使用注解 @MapperScan("com.xuecheng.system.mapper")
public class MybatisPlusConfig { // 定义 class MybatisPlusConfig
	/** // 保留原作者写的块注释
	 * 新的分页插件 // 保留原作者写的块注释
	 * 需要设置 MybatisConfiguration#useDeprecatedExecutor = false // 保留原作者写的块注释
	 * 避免缓存出现问题(该属性会在旧插件移除后一同移除) // 保留原作者写的块注释
	 */ // 保留原作者写的块注释
	@Bean // 使用注解 @Bean
	public MybatisPlusInterceptor mybatisPlusInterceptor() { // 定义方法 mybatisPlusInterceptor(...)
		MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); // 创建 MybatisPlusInterceptor 对象并赋值给 interceptor
		interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 执行语句
		return interceptor; // 返回 interceptor
	} // 代码块结束


} // 代码块结束

文件:xuecheng-plus-system/service/com/xuecheng/system/mapper/DictionaryMapper.java

package com.xuecheng.system.mapper; // 声明类所在的包路径

import com.baomidou.mybatisplus.core.mapper.BaseMapper; // 导入 BaseMapper 类
import com.xuecheng.system.model.po.Dictionary; // 导入 Dictionary 类

/** // 保留原作者写的块注释
 * <p> // 保留原作者写的块注释
 * 数据字典 Mapper 接口 // 保留原作者写的块注释
 * </p> // 保留原作者写的块注释
 * // 保留原作者写的块注释
 * @author itcast // 保留原作者写的块注释
 */ // 保留原作者写的块注释
public interface DictionaryMapper extends BaseMapper<Dictionary> { // 定义 interface DictionaryMapper

} // 代码块结束

文件:xuecheng-plus-system/service/com/xuecheng/system/mapper/DictionaryMapper.xml

<?xml version="1.0" encoding="UTF-8"?> <!-- XML 声明 -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- SQL 语句片段 -->
<mapper namespace="com.xuecheng.system.mapper.DictionaryMapper"> <!-- MyBatis 映射文件的根标签 -->

    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.xuecheng.system.model.po.Dictionary"> <!-- 定义结果映射 -->
        <id column="id" property="id" /> <!-- 主键列的映射规则 -->
        <result column="name" property="name" /> <!-- 字段与属性的映射规则 -->
        <result column="code" property="code" /> <!-- 字段与属性的映射规则 -->
        <result column="item_values" property="itemValues" /> <!-- 字段与属性的映射规则 -->
    </resultMap> <!-- 结束 resultMap 区块 -->

    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List"> <!-- 声明可复用的 SQL 片段 -->
        id, name, code, item_values <!-- SQL 语句片段 -->
    </sql> <!-- 结束 SQL 片段 -->

</mapper> <!-- 结束 mapper 标签 -->

文件:xuecheng-plus-system/service/com/xuecheng/system/service/DictionaryService.java

package com.xuecheng.system.service; // 声明类所在的包路径

import com.baomidou.mybatisplus.extension.service.IService; // 导入 IService 类
import com.xuecheng.system.model.po.Dictionary; // 导入 Dictionary 类

import java.util.List; // 导入 List 类

/** // 保留原作者写的块注释
 * <p> // 保留原作者写的块注释
 * 数据字典 服务类 // 保留原作者写的块注释
 * </p> // 保留原作者写的块注释
 * // 保留原作者写的块注释
 * @author itcast // 保留原作者写的块注释
 * @since 2021-10-07 // 保留原作者写的块注释
 */ // 保留原作者写的块注释
public interface DictionaryService extends IService<Dictionary> { // 定义 interface DictionaryService

    /** // 保留原作者写的块注释
     * 查询所有数据字典内容 // 保留原作者写的块注释
     * @return // 保留原作者写的块注释
     */ // 保留原作者写的块注释
    List<Dictionary> queryAll(); // 执行语句

    /** // 保留原作者写的块注释
     * 根据code查询数据字典 // 保留原作者写的块注释
     * @param code -- String 数据字典Code // 保留原作者写的块注释
     * @return // 保留原作者写的块注释
     */ // 保留原作者写的块注释
    Dictionary getByCode(String code); // 执行语句
} // 代码块结束

文件:xuecheng-plus-system/service/com/xuecheng/system/service/impl/DictionaryServiceImpl.java

package com.xuecheng.system.service.impl; // 声明类所在的包路径

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; // 导入 LambdaQueryWrapper 类
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; // 导入 ServiceImpl 类
import com.xuecheng.system.mapper.DictionaryMapper; // 导入 DictionaryMapper 类
import com.xuecheng.system.model.po.Dictionary; // 导入 Dictionary 类
import com.xuecheng.system.service.DictionaryService; // 导入 DictionaryService 类
import lombok.extern.slf4j.Slf4j; // 导入 Slf4j 类
import org.springframework.stereotype.Service; // 导入 Service 类

import java.util.List; // 导入 List 类

/** // 保留原作者写的块注释
 * <p> // 保留原作者写的块注释
 * 数据字典 服务实现类 // 保留原作者写的块注释
 * </p> // 保留原作者写的块注释
 * // 保留原作者写的块注释
 * @author itcast // 保留原作者写的块注释
 */ // 保留原作者写的块注释
@Slf4j // 使用注解 @Slf4j
@Service // 使用注解 @Service
public class DictionaryServiceImpl extends ServiceImpl<DictionaryMapper, Dictionary> implements DictionaryService { // 定义 class DictionaryServiceImpl

    @Override // 使用注解 @Override
    public List<Dictionary> queryAll() { // 定义方法 queryAll(...)

        List<Dictionary> list = this.list(); // 把 this.list() 的返回值赋给 list


        return list; // 返回 list
    } // 代码块结束

    @Override // 使用注解 @Override
    public Dictionary getByCode(String code) { // 定义方法 getByCode(...)


        LambdaQueryWrapper<Dictionary> queryWrapper = new LambdaQueryWrapper<>(); // 创建 LambdaQueryWrapper<> 对象并赋值给 queryWrapper
        queryWrapper.eq(Dictionary::getCode, code); // 执行语句

        Dictionary dictionary = this.getOne(queryWrapper); // 把 this.getOne(queryWrapper) 赋值给 dictionary


        return dictionary; // 返回 dictionary
    } // 代码块结束
} // 代码块结束

文件:xuecheng-plus-system/service_pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <artifactId>xuecheng-plus-system</artifactId>
        <groupId>com.xuecheng</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>xuecheng-plus-system-service</artifactId>
    <name>xuecheng-plus-system-service</name>
    <description>xuecheng-plus-system-service</description>

    <dependencies>
        <dependency>
            <groupId>com.xuecheng</groupId>
            <artifactId>xuecheng-plus-system-model</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

        <!-- MySQL 驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <!-- mybatis plus的依赖 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
        </dependency>
        <!-- Spring Boot 集成 Junit -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- 排除 Spring Boot 依赖的日志包冲突 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- Spring Boot 集成 log4j2 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>


    </dependencies>

</project>

文件:xuecheng-plus-system/xuecheng-plus-system-api/pom.xml

<?xml version="1.0" encoding="UTF-8"?> <!-- XML 声明 -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <!-- SQL 语句片段 -->
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- SQL 语句片段 -->
    <modelVersion>4.0.0</modelVersion> <!-- SQL 语句片段 -->
    <parent> <!-- SQL 语句片段 -->
        <artifactId>xuecheng-plus-system</artifactId> <!-- SQL 语句片段 -->
        <groupId>com.xuecheng</groupId> <!-- SQL 语句片段 -->
        <version>0.0.1-SNAPSHOT</version> <!-- SQL 语句片段 -->
    </parent> <!-- SQL 语句片段 -->
    <artifactId>xuecheng-plus-system-api</artifactId> <!-- SQL 语句片段 -->
    <name>xuecheng-plus-system-api</name> <!-- SQL 语句片段 -->
    <description>xuecheng-plus-system-api</description> <!-- SQL 语句片段 -->

    <dependencies> <!-- SQL 语句片段 -->

        <dependency> <!-- SQL 语句片段 -->
            <groupId>com.alibaba.cloud</groupId> <!-- SQL 语句片段 -->
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <!-- SQL 语句片段 -->
        </dependency> <!-- SQL 语句片段 -->

        <dependency> <!-- SQL 语句片段 -->
            <groupId>com.xuecheng</groupId> <!-- SQL 语句片段 -->
            <artifactId>xuecheng-plus-system-model</artifactId> <!-- SQL 语句片段 -->
            <version>0.0.1-SNAPSHOT</version> <!-- SQL 语句片段 -->
        </dependency> <!-- SQL 语句片段 -->
        <dependency> <!-- SQL 语句片段 -->
            <groupId>com.xuecheng</groupId> <!-- SQL 语句片段 -->
            <artifactId>xuecheng-plus-system-service</artifactId> <!-- SQL 语句片段 -->
            <version>0.0.1-SNAPSHOT</version> <!-- SQL 语句片段 -->
        </dependency> <!-- SQL 语句片段 -->

        <!--cloud的基础环境包-->
        <dependency> <!-- SQL 语句片段 -->
            <groupId>org.springframework.cloud</groupId> <!-- SQL 语句片段 -->
            <artifactId>spring-cloud-context</artifactId> <!-- SQL 语句片段 -->
        </dependency> <!-- SQL 语句片段 -->

        <!-- Spring Boot 的 Spring Web MVC 集成 -->
        <dependency> <!-- SQL 语句片段 -->
            <groupId>org.springframework.boot</groupId> <!-- SQL 语句片段 -->
            <artifactId>spring-boot-starter-web</artifactId> <!-- SQL 语句片段 -->
        </dependency> <!-- SQL 语句片段 -->
        <dependency> <!-- SQL 语句片段 -->
            <groupId>org.springframework.boot</groupId> <!-- SQL 语句片段 -->
            <artifactId>spring-boot-starter-validation</artifactId> <!-- SQL 语句片段 -->
        </dependency> <!-- SQL 语句片段 -->
        <!-- Spring Boot 对 LocalDateTime
          boot-starter-web自动引入 <!-- SQL 语句片段 -->
          --> <!-- SQL 语句片段 -->
       <!-- <dependency>
            <groupId>com.fasterxml.jackson.module</groupId> <!-- SQL 语句片段 -->
            <artifactId>jackson-module-parameter-names</artifactId> <!-- SQL 语句片段 -->
        </dependency> <!-- SQL 语句片段 -->
        <dependency> <!-- SQL 语句片段 -->
            <groupId>com.fasterxml.jackson.datatype</groupId> <!-- SQL 语句片段 -->
            <artifactId>jackson-datatype-jdk8</artifactId> <!-- SQL 语句片段 -->
        </dependency> <!-- SQL 语句片段 -->
        <dependency> <!-- SQL 语句片段 -->
            <groupId>com.fasterxml.jackson.datatype</groupId> <!-- SQL 语句片段 -->
            <artifactId>jackson-datatype-jsr310</artifactId> <!-- SQL 语句片段 -->
        </dependency>--> <!-- SQL 语句片段 -->

        <!--<dependency>
            <groupId>org.apache.commons</groupId> <!-- SQL 语句片段 -->
            <artifactId>commons-pool2</artifactId> <!-- SQL 语句片段 -->
        </dependency>--> <!-- SQL 语句片段 -->
        <!-- 排除 Spring Boot 依赖的日志包冲突 -->
        <dependency> <!-- SQL 语句片段 -->
            <groupId>org.springframework.boot</groupId> <!-- SQL 语句片段 -->
            <artifactId>spring-boot-starter</artifactId> <!-- SQL 语句片段 -->
            <exclusions> <!-- SQL 语句片段 -->
                <exclusion> <!-- SQL 语句片段 -->
                    <groupId>org.springframework.boot</groupId> <!-- SQL 语句片段 -->
                    <artifactId>spring-boot-starter-logging</artifactId> <!-- SQL 语句片段 -->
                </exclusion> <!-- SQL 语句片段 -->
            </exclusions> <!-- SQL 语句片段 -->
        </dependency> <!-- SQL 语句片段 -->

        <!-- Spring Boot 集成 log4j2 -->
        <dependency> <!-- SQL 语句片段 -->
            <groupId>org.springframework.boot</groupId> <!-- SQL 语句片段 -->
            <artifactId>spring-boot-starter-log4j2</artifactId> <!-- SQL 语句片段 -->
        </dependency> <!-- SQL 语句片段 -->

        <!-- Spring Boot 集成 swagger -->
        <dependency> <!-- SQL 语句片段 -->
            <groupId>com.spring4all</groupId> <!-- SQL 语句片段 -->
            <artifactId>swagger-spring-boot-starter</artifactId> <!-- SQL 语句片段 -->
        </dependency> <!-- SQL 语句片段 -->


    </dependencies> <!-- SQL 语句片段 -->

    <build> <!-- SQL 语句片段 -->
        <finalName>${project.artifactId}-${project.version}</finalName> <!-- SQL 语句片段 -->
        <plugins> <!-- SQL 语句片段 -->
            <plugin> <!-- SQL 语句片段 -->
                <groupId>org.springframework.boot</groupId> <!-- SQL 语句片段 -->
                <artifactId>spring-boot-maven-plugin</artifactId> <!-- SQL 语句片段 -->
                <version>${spring-boot.version}</version> <!-- SQL 语句片段 -->
                <executions> <!-- SQL 语句片段 -->
                    <execution> <!-- SQL 语句片段 -->
                        <goals> <!-- SQL 语句片段 -->
                            <goal>repackage</goal> <!-- SQL 语句片段 -->
                        </goals> <!-- SQL 语句片段 -->
                    </execution> <!-- SQL 语句片段 -->
                </executions> <!-- SQL 语句片段 -->
            </plugin> <!-- SQL 语句片段 -->
            <plugin> <!-- SQL 语句片段 -->
                <groupId>com.spotify</groupId> <!-- SQL 语句片段 -->
                <artifactId>docker-maven-plugin</artifactId> <!-- SQL 语句片段 -->
                <version>1.2.2</version> <!-- SQL 语句片段 -->
                <configuration> <!-- SQL 语句片段 -->
                    <!--修改imageName节点的内容,改为私有仓库地址和端口,再加上镜像id和 TAG,我们要直接传到私服-->
                    <!--配置最后生成的镜像名,docker images里的,我们这边取项目名:版本-->
                    <!--<imageName>${project.artifactId}:${project.version}</imageName>-->
                    <imageName>192.168.101.65:5000/${project.artifactId}:${project.version}</imageName> <!-- SQL 语句片段 -->
                    <!--也可以通过以下方式定义image的tag信息。 -->
                    <!-- <imageTags>
                         <imageTag>${project.version}</imageTag> <!-- SQL 语句片段 -->
                         &lt;!&ndash;build 时强制覆盖 tag,配合 imageTags 使用&ndash;&gt; <!-- SQL 语句片段 -->
                         <forceTags>true</forceTags> <!-- SQL 语句片段 -->
                         &lt;!&ndash;build 完成后,push 指定 tag 的镜像,配合 imageTags 使用&ndash;&gt; <!-- SQL 语句片段 -->
                         <pushImageTag>true</pushImageTag> <!-- SQL 语句片段 -->
                     </imageTags>--> <!-- SQL 语句片段 -->
                    <baseImage>java:8u20</baseImage> <!-- SQL 语句片段 -->
                    <maintainer>docker_maven [email protected]</maintainer> <!-- SQL 语句片段 -->
                    <workdir>/root</workdir> <!-- SQL 语句片段 -->
                    <cmd>["java", "-version"]</cmd> <!-- SQL 语句片段 -->
                    <!--来指明Dockerfile文件的所在目录,如果配置了dockerDirectory则忽略baseImage,maintainer等配置-->
                    <!--<dockerDirectory>./</dockerDirectory>-->
                    <!--2375是docker的远程端口,插件生成镜像时连接docker,这里需要指定docker远程端口-->
                    <dockerHost>http://192.168.101.65:2375</dockerHost> <!-- SQL 语句片段 -->
                    <!--入口点,project.build.finalName就是project标签下的build标签下 的filename标签内容,testDocker-->
                    <!--相当于启动容器后,会自动执行java -jar ...-->
                    <entryPoint>["java", "-Dfile.encoding=utf-8","-jar", "/root/${project.build.finalName}.jar"]</entryPoint> <!-- SQL 语句片段 -->
                    <!--是否推送到docker私有仓库,旧版本插件要配置maven的settings文件。 -->
                    <pushImage>true</pushImage> <!-- SQL 语句片段 -->
                    <registryUrl>192.168.101.65:5000</registryUrl>  <!-- 这里是复制 jar 包到 docker 容器指定目录配置 --> <!-- SQL 语句片段 -->
                    <resources> <!-- SQL 语句片段 -->
                        <resource> <!-- SQL 语句片段 -->
                            <targetPath>/root</targetPath> <!-- SQL 语句片段 -->
                            <directory>${project.build.directory}</directory> <!-- SQL 语句片段 -->
                            <!--把哪个文件上传到docker,相当于Dockerfile里的add app.jar /-->
                            <include>${project.build.finalName}.jar</include> <!-- 引用公共 SQL 片段 -->
                        </resource> <!-- SQL 语句片段 -->
                    </resources> <!-- SQL 语句片段 -->
                </configuration> <!-- SQL 语句片段 -->
            </plugin> <!-- SQL 语句片段 -->
        </plugins> <!-- SQL 语句片段 -->
    </build> <!-- SQL 语句片段 -->

</project> <!-- SQL 语句片段 -->

文件:xuecheng-plus-system/xuecheng-plus-system-api/src/main/java/com/xuecheng/system/config/GlobalCorsConfig.java

package com.xuecheng.system.config; // 声明类所在的包路径

import org.springframework.context.annotation.Bean; // 导入 Bean 类
import org.springframework.context.annotation.Configuration; // 导入 Configuration 类
import org.springframework.web.cors.CorsConfiguration; // 导入 CorsConfiguration 类
import org.springframework.web.cors.UrlBasedCorsConfigurationSource; // 导入 UrlBasedCorsConfigurationSource 类
import org.springframework.web.filter.CorsFilter; // 导入 CorsFilter 类

/** // 保留原作者写的块注释
 * @author Mr.M // 保留原作者写的块注释
 * @version 1.0 // 保留原作者写的块注释
 * @description TODO // 保留原作者写的块注释
 * @date 2023/2/12 11:27 // 保留原作者写的块注释
 */ // 保留原作者写的块注释
@Configuration // 使用注解 @Configuration
public class GlobalCorsConfig { // 定义 class GlobalCorsConfig

    @Bean // 使用注解 @Bean
    public CorsFilter corsFilter() { // 定义方法 corsFilter(...)

        CorsConfiguration config = new CorsConfiguration(); // 创建 CorsConfiguration 对象并赋值给 config
        //允许白名单域名进行跨域调用 // 保留原作者写的行内注释
        config.addAllowedOrigin("*"); // 执行语句
        //允许跨越发送cookie // 保留原作者写的行内注释
        config.setAllowCredentials(true); // 执行语句
        //放行全部原始头信息 // 保留原作者写的行内注释
        config.addAllowedHeader("*"); // 执行语句
        //允许所有请求方法跨域调用 // 保留原作者写的行内注释
        config.addAllowedMethod("*"); // 执行语句
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); // 创建 UrlBasedCorsConfigurationSource 对象并赋值给 source
        source.registerCorsConfiguration("/**", config); // 执行语句
        return new CorsFilter(source); // 返回 new CorsFilter(source)

    } // 代码块结束
} // 代码块结束

文件:xuecheng-plus-system/xuecheng-plus-system-api/src/main/java/com/xuecheng/system/config/LocalDateTimeConfig.java

package com.xuecheng.system.config; // 声明类所在的包路径

import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; // 导入 LocalDateTimeDeserializer 类
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; // 导入 LocalDateTimeSerializer 类
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; // 导入 Jackson2ObjectMapperBuilderCustomizer 类
import org.springframework.context.annotation.Bean; // 导入 Bean 类
import org.springframework.context.annotation.Configuration; // 导入 Configuration 类

import java.time.LocalDateTime; // 导入 LocalDateTime 类
import java.time.format.DateTimeFormatter; // 导入 DateTimeFormatter 类

@Configuration // 使用注解 @Configuration
public class LocalDateTimeConfig { // 定义 class LocalDateTimeConfig

    /* // 保留原作者写的块注释
     * 序列化内容 // 保留原作者写的块注释
     *   LocalDateTime -> String // 保留原作者写的块注释
     * 服务端返回给客户端内容 // 保留原作者写的块注释
     * */ // 保留原作者写的块注释
    @Bean // 使用注解 @Bean
    public LocalDateTimeSerializer localDateTimeSerializer() { // 定义方法 localDateTimeSerializer(...)
        return new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // 返回 new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
    } // 代码块结束

    /* // 保留原作者写的块注释
     * 反序列化内容 // 保留原作者写的块注释
     *   String -> LocalDateTime // 保留原作者写的块注释
     * 客户端传入服务端数据 // 保留原作者写的块注释
     * */ // 保留原作者写的块注释
    @Bean // 使用注解 @Bean
    public LocalDateTimeDeserializer localDateTimeDeserializer() { // 定义方法 localDateTimeDeserializer(...)
        return new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // 返回 new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
    } // 代码块结束


    // 配置 // 保留原作者写的行内注释
    @Bean // 使用注解 @Bean
    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() { // 定义方法 jackson2ObjectMapperBuilderCustomizer(...)
        return builder -> { // 返回 builder -> {
            builder.serializerByType(LocalDateTime.class, localDateTimeSerializer()); // 执行语句
            builder.deserializerByType(LocalDateTime.class, localDateTimeDeserializer()); // 执行语句
        }; // 执行语句
    } // 代码块结束

} // 代码块结束

文件:xuecheng-plus-system/xuecheng-plus-system-api/src/main/java/com/xuecheng/system/controller/DictionaryController.java

package com.xuecheng.system.controller; // 声明类所在的包路径

import com.xuecheng.system.model.po.Dictionary; // 导入 Dictionary 类
import com.xuecheng.system.service.DictionaryService; // 导入 DictionaryService 类
import lombok.extern.slf4j.Slf4j; // 导入 Slf4j 类
import org.springframework.beans.factory.annotation.Autowired; // 导入 Autowired 类
import org.springframework.web.bind.annotation.GetMapping; // 导入 GetMapping 类
import org.springframework.web.bind.annotation.PathVariable; // 导入 PathVariable 类
import org.springframework.web.bind.annotation.RestController; // 导入 RestController 类

import java.util.List; // 导入 List 类

/** // 保留原作者写的块注释
 * <p> // 保留原作者写的块注释
 * 数据字典 前端控制器 // 保留原作者写的块注释
 * </p> // 保留原作者写的块注释
 * // 保留原作者写的块注释
 * @author itcast // 保留原作者写的块注释
 */ // 保留原作者写的块注释
@Slf4j // 使用注解 @Slf4j
@RestController // 使用注解 @RestController
public class DictionaryController  { // 定义 class DictionaryController

    @Autowired // 使用注解 @Autowired
    private DictionaryService  dictionaryService; // 执行语句

    @GetMapping("/dictionary/all") // 使用注解 @GetMapping("/dictionary/all")
    public List<Dictionary> queryAll() { // 定义方法 queryAll(...)
        return dictionaryService.queryAll(); // 返回 dictionaryService.queryAll()
    } // 代码块结束

    @GetMapping("/dictionary/code/{code}") // 使用注解 @GetMapping("/dictionary/code/{code}")
    public Dictionary getByCode(@PathVariable String code) { // 定义方法 getByCode(...)
        return dictionaryService.getByCode(code); // 返回 dictionaryService.getByCode(code)
    } // 代码块结束
} // 代码块结束

文件:xuecheng-plus-system/xuecheng-plus-system-api/src/main/java/com/xuecheng/system/SystemApplication.java

package com.xuecheng.system; // 声明类所在的包路径

import com.spring4all.swagger.EnableSwagger2Doc; // 导入 EnableSwagger2Doc 类
import org.springframework.boot.SpringApplication; // 导入 SpringApplication 类
import org.springframework.boot.autoconfigure.SpringBootApplication; // 导入 SpringBootApplication 类
import org.springframework.scheduling.annotation.EnableScheduling; // 导入 EnableScheduling 类

/** // 保留原作者写的块注释
 * <p> // 保留原作者写的块注释
 *     系统管理启动类 // 保留原作者写的块注释
 * </p> // 保留原作者写的块注释
 * // 保留原作者写的块注释
 * @Description: // 保留原作者写的块注释
 */ // 保留原作者写的块注释
@EnableScheduling // 使用注解 @EnableScheduling
@EnableSwagger2Doc // 使用注解 @EnableSwagger2Doc
@SpringBootApplication // 使用注解 @SpringBootApplication
public class SystemApplication { // 定义 class SystemApplication

    public static void main(String[] args) { // 定义方法 main(...)
        SpringApplication.run(SystemApplication.class,args); // 执行语句
    } // 代码块结束
} // 代码块结束

文件:xuecheng-plus-system/xuecheng-plus-system-api/src/main/resources/bootstrap.yml

server:
  servlet:
    context-path: /system
  port: 63110
#微服务配置
spring:
  application:
    name: system-api
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://192.168.101.65:3306/xcplus_system?serverTimezone=UTC&userUnicode=true&useSSL=false&
    username: root
    password: mysql
  cloud:
    nacos:
      server-addr: 192.168.101.65:8848
      discovery:
        namespace: dev402
        group: xuecheng-plus-project
# 日志文件配置路径
logging:
  config: classpath:log4j2-dev.xml

# swagger 文档配置
swagger:
  title: "学成在线系统管理"
  description: "系统管理接口"
  base-package: com.xuecheng.system
  enabled: true
  version: 1.0.0

文件:xuecheng-plus-system/xuecheng-plus-system-api/src/main/resources/log4j2-dev.xml

<?xml version="1.0" encoding="UTF-8"?> <!-- XML 声明 -->
<Configuration monitorInterval="180" packages=""> <!-- SQL 语句片段 -->
    <properties> <!-- SQL 语句片段 -->
        <property name="logdir">logs</property> <!-- SQL 语句片段 -->
        <property name="PATTERN">%date{YYYY-MM-dd HH:mm:ss,SSS} %level [%thread][%file:%line] - %msg%n%throwable</property> <!-- SQL 语句片段 -->
    </properties> <!-- SQL 语句片段 -->
    <Appenders> <!-- SQL 语句片段 -->
        <Console name="Console" target="SYSTEM_OUT"> <!-- SQL 语句片段 -->
            <PatternLayout pattern="${PATTERN}"/> <!-- SQL 语句片段 -->
        </Console> <!-- SQL 语句片段 -->

        <RollingFile name="ErrorAppender" fileName="${logdir}/error.log" <!-- SQL 语句片段 -->
            filePattern="${logdir}/$${date:yyyy-MM-dd}/error.%d{yyyy-MM-dd-HH}.log" append="true"> <!-- SQL 语句片段 -->
            <PatternLayout pattern="${PATTERN}"/> <!-- SQL 语句片段 -->
            <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/> <!-- SQL 语句片段 -->
            <Policies> <!-- SQL 语句片段 -->
                <TimeBasedTriggeringPolicy interval="1" modulate="true" /> <!-- SQL 语句片段 -->
            </Policies> <!-- SQL 语句片段 -->
        </RollingFile> <!-- SQL 语句片段 -->

        <RollingFile name="DebugAppender" fileName="${logdir}/info.log" <!-- SQL 语句片段 -->
            filePattern="${logdir}/$${date:yyyy-MM-dd}/info.%d{yyyy-MM-dd-HH}.log" append="true"> <!-- SQL 语句片段 -->
            <PatternLayout pattern="${PATTERN}"/> <!-- SQL 语句片段 -->
            <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/> <!-- SQL 语句片段 -->
            <Policies> <!-- SQL 语句片段 -->
                <TimeBasedTriggeringPolicy interval="1" modulate="true" /> <!-- SQL 语句片段 -->
            </Policies> <!-- SQL 语句片段 -->
        </RollingFile> <!-- SQL 语句片段 -->
        
        <!--异步appender-->
         <Async name="AsyncAppender" includeLocation="true"> <!-- SQL 语句片段 -->
            <AppenderRef ref="ErrorAppender"/> <!-- SQL 语句片段 -->
            <AppenderRef ref="DebugAppender"/> <!-- SQL 语句片段 -->
        </Async> <!-- SQL 语句片段 -->
    </Appenders> <!-- SQL 语句片段 -->
    
    <Loggers> <!-- SQL 语句片段 -->
         <!--过滤掉spring和mybatis的一些无用的debug信息-->
        <logger name="org.springframework" level="INFO"> <!-- SQL 语句片段 -->
        </logger> <!-- SQL 语句片段 -->
        <logger name="org.mybatis" level="INFO"> <!-- SQL 语句片段 -->
        </logger> <!-- SQL 语句片段 -->
        <logger name="cn.itcast.wanxinp2p.consumer.mapper" level="DEBUG"> <!-- SQL 语句片段 -->
        </logger> <!-- SQL 语句片段 -->

        <logger name="springfox" level="INFO"> <!-- SQL 语句片段 -->
        </logger> <!-- SQL 语句片段 -->
		<logger name="org.apache.http" level="INFO"> <!-- SQL 语句片段 -->
        </logger> <!-- SQL 语句片段 -->
        <logger name="com.netflix.discovery" level="INFO"> <!-- SQL 语句片段 -->
        </logger> <!-- SQL 语句片段 -->
        
        <logger name="RocketmqCommon"  level="INFO" > <!-- SQL 语句片段 -->
		</logger> <!-- SQL 语句片段 -->
		
		<logger name="RocketmqRemoting" level="INFO"  > <!-- SQL 语句片段 -->
		</logger> <!-- SQL 语句片段 -->
		
		<logger name="RocketmqClient" level="WARN"> <!-- SQL 语句片段 -->
		</logger> <!-- SQL 语句片段 -->

        <logger name="org.dromara.hmily" level="WARN"> <!-- SQL 语句片段 -->
        </logger> <!-- SQL 语句片段 -->

        <logger name="org.dromara.hmily.lottery" level="WARN"> <!-- SQL 语句片段 -->
        </logger> <!-- SQL 语句片段 -->

        <logger name="org.dromara.hmily.bonuspoint" level="WARN"> <!-- SQL 语句片段 -->
        </logger> <!-- SQL 语句片段 -->
		
        <!--OFF   0-->
        <!--FATAL   100-->
        <!--ERROR   200-->
        <!--WARN   300-->
        <!--INFO   400-->
        <!--DEBUG   500-->
        <!--TRACE   600-->
        <!--ALL   Integer.MAX_VALUE-->
        <Root level="DEBUG" includeLocation="true"> <!-- SQL 语句片段 -->
            <AppenderRef ref="AsyncAppender"/> <!-- SQL 语句片段 -->
            <AppenderRef ref="Console"/> <!-- SQL 语句片段 -->
            <AppenderRef ref="DebugAppender"/> <!-- SQL 语句片段 -->
        </Root> <!-- SQL 语句片段 -->
    </Loggers> <!-- SQL 语句片段 -->
</Configuration> <!-- SQL 语句片段 -->

文件:xuecheng-plus-system/xuecheng-plus-system-model/pom.xml

<?xml version="1.0" encoding="UTF-8"?> <!-- XML 声明 -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <!-- SQL 语句片段 -->
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- SQL 语句片段 -->
    <modelVersion>4.0.0</modelVersion> <!-- SQL 语句片段 -->
    <parent> <!-- SQL 语句片段 -->
        <artifactId>xuecheng-plus-system</artifactId> <!-- SQL 语句片段 -->
        <groupId>com.xuecheng</groupId> <!-- SQL 语句片段 -->
        <version>0.0.1-SNAPSHOT</version> <!-- SQL 语句片段 -->
    </parent> <!-- SQL 语句片段 -->
    <artifactId>xuecheng-plus-system-model</artifactId> <!-- SQL 语句片段 -->
    <name>xuecheng-plus-system-model</name> <!-- SQL 语句片段 -->
    <description>xuecheng-plus-system-model</description> <!-- SQL 语句片段 -->

    <dependencies> <!-- SQL 语句片段 -->
        <dependency> <!-- SQL 语句片段 -->
            <groupId>com.xuecheng</groupId> <!-- SQL 语句片段 -->
            <artifactId>xuecheng-plus-base</artifactId> <!-- SQL 语句片段 -->
            <version>0.0.1-SNAPSHOT</version> <!-- SQL 语句片段 -->
        </dependency> <!-- SQL 语句片段 -->
        <!--存在mybatisplus注解添加相关注解保证不报错-->
        <dependency> <!-- SQL 语句片段 -->
            <groupId>com.baomidou</groupId> <!-- SQL 语句片段 -->
            <artifactId>mybatis-plus-annotation</artifactId> <!-- SQL 语句片段 -->
            <version>${mybatis-plus-boot-starter.version}</version> <!-- SQL 语句片段 -->
        </dependency> <!-- SQL 语句片段 -->
        <dependency> <!-- SQL 语句片段 -->
            <groupId>com.baomidou</groupId> <!-- SQL 语句片段 -->
            <artifactId>mybatis-plus-core</artifactId> <!-- SQL 语句片段 -->
            <version>${mybatis-plus-boot-starter.version}</version> <!-- SQL 语句片段 -->
        </dependency> <!-- SQL 语句片段 -->
        <dependency> <!-- SQL 语句片段 -->
            <groupId>org.projectlombok</groupId> <!-- SQL 语句片段 -->
            <artifactId>lombok</artifactId> <!-- SQL 语句片段 -->
        </dependency> <!-- SQL 语句片段 -->
    </dependencies> <!-- SQL 语句片段 -->

</project> <!-- SQL 语句片段 -->

文件:xuecheng-plus-system/xuecheng-plus-system-model/src/main/java/com/xuecheng/system/model/po/Dictionary.java

package com.xuecheng.system.model.po; // 声明类所在的包路径

import com.baomidou.mybatisplus.annotation.IdType; // 导入 IdType 类
import com.baomidou.mybatisplus.annotation.TableId; // 导入 TableId 类
import com.baomidou.mybatisplus.annotation.TableName; // 导入 TableName 类
import lombok.Data; // 导入 Data 类

import java.io.Serializable; // 导入 Serializable 类

/** // 保留原作者写的块注释
 * <p> // 保留原作者写的块注释
 * 数据字典 // 保留原作者写的块注释
 * </p> // 保留原作者写的块注释
 * // 保留原作者写的块注释
 * @author itcast // 保留原作者写的块注释
 */ // 保留原作者写的块注释
@Data // 使用注解 @Data
@TableName("dictionary") // 使用注解 @TableName("dictionary")
public class Dictionary implements Serializable { // 定义 class Dictionary

    private static final long serialVersionUID = 1L; // 把 1L 赋值给 serialVersionUID

    /** // 保留原作者写的块注释
     * id标识 // 保留原作者写的块注释
     */ // 保留原作者写的块注释
    @TableId(value = "id", type = IdType.AUTO) // 使用注解 @TableId(value = "id", type = IdType.AUTO)
    private Long id; // 执行语句

    /** // 保留原作者写的块注释
     * 数据字典名称 // 保留原作者写的块注释
     */ // 保留原作者写的块注释
    private String name; // 执行语句

    /** // 保留原作者写的块注释
     * 数据字典代码 // 保留原作者写的块注释
     */ // 保留原作者写的块注释
    private String code; // 执行语句

    /** // 保留原作者写的块注释
     * 数据字典项--json格式 // 保留原作者写的块注释
            [{ // 代码逻辑
                  "sd_name": "低级", // 代码逻辑
                  "sd_id": "200001", // 代码逻辑
                  "sd_status": "1" // 代码逻辑
               }, { // 代码逻辑
                  "sd_name": "中级", // 代码逻辑
                  "sd_id": "200002", // 代码逻辑
                  "sd_status": "1" // 代码逻辑
               }, { // 代码逻辑
                  "sd_name": "高级", // 代码逻辑
                  "sd_id": "200003", // 代码逻辑
                  "sd_status": "1" // 代码逻辑
               }] // 代码逻辑
     */ // 保留原作者写的块注释
    private String itemValues; // 执行语句


} // 代码块结束

文件:xuecheng-plus-system/xuecheng-plus-system-service/pom.xml

<?xml version="1.0" encoding="UTF-8"?> <!-- XML 声明 -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <!-- SQL 语句片段 -->
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- SQL 语句片段 -->
    <modelVersion>4.0.0</modelVersion> <!-- SQL 语句片段 -->
    <parent> <!-- SQL 语句片段 -->
        <artifactId>xuecheng-plus-system</artifactId> <!-- SQL 语句片段 -->
        <groupId>com.xuecheng</groupId> <!-- SQL 语句片段 -->
        <version>0.0.1-SNAPSHOT</version> <!-- SQL 语句片段 -->
    </parent> <!-- SQL 语句片段 -->
    <artifactId>xuecheng-plus-system-service</artifactId> <!-- SQL 语句片段 -->
    <name>xuecheng-plus-system-service</name> <!-- SQL 语句片段 -->
    <description>xuecheng-plus-system-service</description> <!-- SQL 语句片段 -->

    <dependencies> <!-- SQL 语句片段 -->
        <dependency> <!-- SQL 语句片段 -->
            <groupId>com.xuecheng</groupId> <!-- SQL 语句片段 -->
            <artifactId>xuecheng-plus-system-model</artifactId> <!-- SQL 语句片段 -->
            <version>0.0.1-SNAPSHOT</version> <!-- SQL 语句片段 -->
        </dependency> <!-- SQL 语句片段 -->

        <!-- MySQL 驱动 -->
        <dependency> <!-- SQL 语句片段 -->
            <groupId>mysql</groupId> <!-- SQL 语句片段 -->
            <artifactId>mysql-connector-java</artifactId> <!-- SQL 语句片段 -->
            <scope>runtime</scope> <!-- SQL 语句片段 -->
        </dependency> <!-- SQL 语句片段 -->

        <!-- mybatis plus的依赖 -->
        <dependency> <!-- SQL 语句片段 -->
            <groupId>com.baomidou</groupId> <!-- SQL 语句片段 -->
            <artifactId>mybatis-plus-boot-starter</artifactId> <!-- SQL 语句片段 -->
        </dependency> <!-- SQL 语句片段 -->
        <!-- Spring Boot 集成 Junit -->
        <dependency> <!-- SQL 语句片段 -->
            <groupId>org.springframework.boot</groupId> <!-- SQL 语句片段 -->
            <artifactId>spring-boot-starter-test</artifactId> <!-- SQL 语句片段 -->
            <scope>test</scope> <!-- SQL 语句片段 -->
        </dependency> <!-- SQL 语句片段 -->
        <!-- 排除 Spring Boot 依赖的日志包冲突 -->
        <dependency> <!-- SQL 语句片段 -->
            <groupId>org.springframework.boot</groupId> <!-- SQL 语句片段 -->
            <artifactId>spring-boot-starter</artifactId> <!-- SQL 语句片段 -->
            <exclusions> <!-- SQL 语句片段 -->
                <exclusion> <!-- SQL 语句片段 -->
                    <groupId>org.springframework.boot</groupId> <!-- SQL 语句片段 -->
                    <artifactId>spring-boot-starter-logging</artifactId> <!-- SQL 语句片段 -->
                </exclusion> <!-- SQL 语句片段 -->
            </exclusions> <!-- SQL 语句片段 -->
        </dependency> <!-- SQL 语句片段 -->

        <!-- Spring Boot 集成 log4j2 -->
        <dependency> <!-- SQL 语句片段 -->
            <groupId>org.springframework.boot</groupId> <!-- SQL 语句片段 -->
            <artifactId>spring-boot-starter-log4j2</artifactId> <!-- SQL 语句片段 -->
        </dependency> <!-- SQL 语句片段 -->


    </dependencies> <!-- SQL 语句片段 -->

</project> <!-- SQL 语句片段 -->

文件:xuecheng-plus-system/xuecheng-plus-system-service/src/main/java/com/xuecheng/system/config/MybatisPlusConfig.java

package com.xuecheng.system.config; // 声明类所在的包路径

import com.baomidou.mybatisplus.annotation.DbType; // 导入 DbType 类
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; // 导入 MybatisPlusInterceptor 类
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; // 导入 PaginationInnerInterceptor 类
import org.mybatis.spring.annotation.MapperScan; // 导入 MapperScan 类
import org.springframework.context.annotation.Bean; // 导入 Bean 类
import org.springframework.context.annotation.Configuration; // 导入 Configuration 类

/** // 保留原作者写的块注释
 * <P> // 保留原作者写的块注释
 * 		Mybatis-Plus 配置 // 保留原作者写的块注释
 * </p> // 保留原作者写的块注释
 */ // 保留原作者写的块注释
@Configuration // 使用注解 @Configuration
@MapperScan("com.xuecheng.system.mapper") // 使用注解 @MapperScan("com.xuecheng.system.mapper")
public class MybatisPlusConfig { // 定义 class MybatisPlusConfig
	/** // 保留原作者写的块注释
	 * 新的分页插件 // 保留原作者写的块注释
	 * 需要设置 MybatisConfiguration#useDeprecatedExecutor = false // 保留原作者写的块注释
	 * 避免缓存出现问题(该属性会在旧插件移除后一同移除) // 保留原作者写的块注释
	 */ // 保留原作者写的块注释
	@Bean // 使用注解 @Bean
	public MybatisPlusInterceptor mybatisPlusInterceptor() { // 定义方法 mybatisPlusInterceptor(...)
		MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); // 创建 MybatisPlusInterceptor 对象并赋值给 interceptor
		interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 执行语句
		return interceptor; // 返回 interceptor
	} // 代码块结束


} // 代码块结束

文件:xuecheng-plus-system/xuecheng-plus-system-service/src/main/java/com/xuecheng/system/mapper/DictionaryMapper.java

package com.xuecheng.system.mapper; // 声明类所在的包路径

import com.baomidou.mybatisplus.core.mapper.BaseMapper; // 导入 BaseMapper 类
import com.xuecheng.system.model.po.Dictionary; // 导入 Dictionary 类

/** // 保留原作者写的块注释
 * <p> // 保留原作者写的块注释
 * 数据字典 Mapper 接口 // 保留原作者写的块注释
 * </p> // 保留原作者写的块注释
 * // 保留原作者写的块注释
 * @author itcast // 保留原作者写的块注释
 */ // 保留原作者写的块注释
public interface DictionaryMapper extends BaseMapper<Dictionary> { // 定义 interface DictionaryMapper

} // 代码块结束

文件:xuecheng-plus-system/xuecheng-plus-system-service/src/main/java/com/xuecheng/system/mapper/DictionaryMapper.xml

<?xml version="1.0" encoding="UTF-8"?> <!-- XML 声明 -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- SQL 语句片段 -->
<mapper namespace="com.xuecheng.system.mapper.DictionaryMapper"> <!-- MyBatis 映射文件的根标签 -->

    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.xuecheng.system.model.po.Dictionary"> <!-- 定义结果映射 -->
        <id column="id" property="id" /> <!-- 主键列的映射规则 -->
        <result column="name" property="name" /> <!-- 字段与属性的映射规则 -->
        <result column="code" property="code" /> <!-- 字段与属性的映射规则 -->
        <result column="item_values" property="itemValues" /> <!-- 字段与属性的映射规则 -->
    </resultMap> <!-- 结束 resultMap 区块 -->

    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List"> <!-- 声明可复用的 SQL 片段 -->
        id, name, code, item_values <!-- SQL 语句片段 -->
    </sql> <!-- 结束 SQL 片段 -->

</mapper> <!-- 结束 mapper 标签 -->

文件:xuecheng-plus-system/xuecheng-plus-system-service/src/main/java/com/xuecheng/system/service/DictionaryService.java

package com.xuecheng.system.service; // 声明类所在的包路径

import com.baomidou.mybatisplus.extension.service.IService; // 导入 IService 类
import com.xuecheng.system.model.po.Dictionary; // 导入 Dictionary 类

import java.util.List; // 导入 List 类

/** // 保留原作者写的块注释
 * <p> // 保留原作者写的块注释
 * 数据字典 服务类 // 保留原作者写的块注释
 * </p> // 保留原作者写的块注释
 * // 保留原作者写的块注释
 * @author itcast // 保留原作者写的块注释
 * @since 2021-10-07 // 保留原作者写的块注释
 */ // 保留原作者写的块注释
public interface DictionaryService extends IService<Dictionary> { // 定义 interface DictionaryService

    /** // 保留原作者写的块注释
     * 查询所有数据字典内容 // 保留原作者写的块注释
     * @return // 保留原作者写的块注释
     */ // 保留原作者写的块注释
    List<Dictionary> queryAll(); // 执行语句

    /** // 保留原作者写的块注释
     * 根据code查询数据字典 // 保留原作者写的块注释
     * @param code -- String 数据字典Code // 保留原作者写的块注释
     * @return // 保留原作者写的块注释
     */ // 保留原作者写的块注释
    Dictionary getByCode(String code); // 执行语句
} // 代码块结束

文件:xuecheng-plus-system/xuecheng-plus-system-service/src/main/java/com/xuecheng/system/service/impl/DictionaryServiceImpl.java

package com.xuecheng.system.service.impl; // 声明类所在的包路径

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; // 导入 LambdaQueryWrapper 类
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; // 导入 ServiceImpl 类
import com.xuecheng.system.mapper.DictionaryMapper; // 导入 DictionaryMapper 类
import com.xuecheng.system.model.po.Dictionary; // 导入 Dictionary 类
import com.xuecheng.system.service.DictionaryService; // 导入 DictionaryService 类
import lombok.extern.slf4j.Slf4j; // 导入 Slf4j 类
import org.springframework.stereotype.Service; // 导入 Service 类

import java.util.List; // 导入 List 类

/** // 保留原作者写的块注释
 * <p> // 保留原作者写的块注释
 * 数据字典 服务实现类 // 保留原作者写的块注释
 * </p> // 保留原作者写的块注释
 * // 保留原作者写的块注释
 * @author itcast // 保留原作者写的块注释
 */ // 保留原作者写的块注释
@Slf4j // 使用注解 @Slf4j
@Service // 使用注解 @Service
public class DictionaryServiceImpl extends ServiceImpl<DictionaryMapper, Dictionary> implements DictionaryService { // 定义 class DictionaryServiceImpl

    @Override // 使用注解 @Override
    public List<Dictionary> queryAll() { // 定义方法 queryAll(...)

        List<Dictionary> list = this.list(); // 把 this.list() 的返回值赋给 list


        return list; // 返回 list
    } // 代码块结束

    @Override // 使用注解 @Override
    public Dictionary getByCode(String code) { // 定义方法 getByCode(...)


        LambdaQueryWrapper<Dictionary> queryWrapper = new LambdaQueryWrapper<>(); // 创建 LambdaQueryWrapper<> 对象并赋值给 queryWrapper
        queryWrapper.eq(Dictionary::getCode, code); // 执行语句

        Dictionary dictionary = this.getOne(queryWrapper); // 把 this.getOne(queryWrapper) 赋值给 dictionary


        return dictionary; // 返回 dictionary
    } // 代码块结束
} // 代码块结束
日志文件配置路径
https://clxhxhhr.top/posts/4375/
作者
clxstart
发布于
2026-09-26
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。