Просмотр исходного кода

feat(admin): 优化发展历程查询接口并添加招聘信息查询功能

- 在 AboutDevelopmentHistoryController 中添加按年份升序查询发展历程的功能
- 新增 WebSiteController、WebSiteService 和 WebSiteServiceImpl 用于招聘信息查询
- 更新 NewsUpdates 和 SmartEmployment 模型,添加新字段并调整类型
- 从 MyBatis 切换到 MyBatis-Plus,并配置相关插件
- 更新数据库驱动和 Swagger 版本
nahida 8 месяцев назад
Родитель
Сommit
43c3784adf

+ 1 - 1
pom.xml

@@ -19,7 +19,7 @@
         <java.version>1.8</java.version>
         <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
         <spring-boot.version>2.5.15</spring-boot.version>
-        <mybatis-plus.version>3.4.3</mybatis-plus.version>
+        <mybatis-plus.version>3.5.6</mybatis-plus.version>
         <org.projectlombok.version>1.18.20</org.projectlombok.version>
         <druid.version>1.2.23</druid.version>
         <bitwalker.version>1.21</bitwalker.version>

+ 21 - 10
zksy-admin/pom.xml

@@ -25,22 +25,33 @@
         </dependency>
 
         <!-- swagger3-->
-        <dependency>
-            <groupId>io.springfox</groupId>
-            <artifactId>springfox-boot-starter</artifactId>
-        </dependency>
+<!--        <dependency>-->
+<!--            <groupId>io.springfox</groupId>-->
+<!--            <artifactId>springfox-boot-starter</artifactId>-->
+<!--        </dependency>-->
+
+<!--        &lt;!&ndash; 防止进入swagger页面报类型转换错误,排除3.0.0中的引用,手动增加1.6.2版本 &ndash;&gt;-->
+<!--        <dependency>-->
+<!--            <groupId>io.swagger</groupId>-->
+<!--            <artifactId>swagger-models</artifactId>-->
+<!--            <version>1.6.2</version>-->
+<!--        </dependency>-->
 
-        <!-- 防止进入swagger页面报类型转换错误,排除3.0.0中的引用,手动增加1.6.2版本 -->
         <dependency>
-            <groupId>io.swagger</groupId>
-            <artifactId>swagger-models</artifactId>
-            <version>1.6.2</version>
+            <groupId>com.github.xiaoymin</groupId>
+            <artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
         </dependency>
 
          <!-- Mysql驱动包 -->
+<!--        <dependency>-->
+<!--            <groupId>mysql</groupId>-->
+<!--            <artifactId>mysql-connector-java</artifactId>-->
+<!--        </dependency>-->
+
         <dependency>
-            <groupId>mysql</groupId>
-            <artifactId>mysql-connector-java</artifactId>
+            <groupId>com.mysql</groupId>
+            <artifactId>mysql-connector-j</artifactId>
+            <version>8.0.33</version>
         </dependency>
 
         <!-- 核心模块-->

+ 2 - 1
zksy-admin/src/main/java/com/zksy/web/controller/base/AboutDevelopmentHistoryController.java

@@ -1,5 +1,6 @@
 package com.zksy.web.controller.base;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zksy.base.domain.AboutDevelopmentHistory;
 import com.zksy.base.service.AboutDevelopmentHistoryService;
@@ -32,7 +33,7 @@ public class AboutDevelopmentHistoryController {
     public AjaxResult findByPage(@ApiParam(value = "页码", required = true)long pageNum,
                                  @ApiParam(value = "页数", required = true)long pageSize){
         Page<AboutDevelopmentHistory> page = new Page<>(pageNum, pageSize);
-        return AjaxResult.success(service.page(page));
+        return AjaxResult.success(service.page(page,new LambdaQueryWrapper<AboutDevelopmentHistory>().orderByAsc(AboutDevelopmentHistory::getYear)));
     }
     @GetMapping("/getAboutDevelopmentHistoryList")
     @ApiOperation(value = "发展历程查询")

+ 2 - 0
zksy-admin/src/main/java/com/zksy/web/controller/base/SmartEmploymentController.java

@@ -3,6 +3,7 @@ package com.zksy.web.controller.base;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zksy.base.domain.SmartEmployment;
 import com.zksy.base.service.SmartEmploymentService;
+import com.zksy.common.annotation.Anonymous;
 import com.zksy.common.core.domain.AjaxResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -34,6 +35,7 @@ public class SmartEmploymentController {
         Page<SmartEmployment> page = new Page<>(pageNum, pageSize);
         return AjaxResult.success(service.page(page));
     }
+
     @GetMapping("/getSmartEmploymentList")
     @ApiOperation(value = "招聘查询")
     public AjaxResult getSmartEmploymentList(){

+ 29 - 0
zksy-admin/src/main/java/com/zksy/web/controller/base/WebSiteController.java

@@ -0,0 +1,29 @@
+package com.zksy.web.controller.base;
+
+import com.zksy.base.domain.request.PageRequest;
+import com.zksy.base.service.WebSiteService;
+import com.zksy.common.annotation.Anonymous;
+import com.zksy.common.core.domain.AjaxResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/webSite")
+@Api(tags = "外部接口",description = "外部接口desc")
+public class WebSiteController {
+
+    @Autowired
+    private WebSiteService webSiteService;
+
+    @PostMapping("/getRecruitmentInfoByPage")
+    @ApiOperation("获取招聘信息")
+    @Anonymous
+    public AjaxResult getRecruitmentInfoByPage(
+            @RequestBody PageRequest pageRequest
+    ) {
+        return AjaxResult.success(webSiteService.getRecruitmentInfoByPage(pageRequest.getPageNum(), pageRequest.getPageSize()));
+    }
+
+}

+ 2 - 2
zksy-admin/src/main/java/com/zksy/web/core/config/SwaggerConfig.java

@@ -48,7 +48,7 @@ public class SwaggerConfig
     @Bean
     public Docket createRestApi()
     {
-        return new Docket(DocumentationType.OAS_30)
+        return new Docket(DocumentationType.SWAGGER_2)
                 // 是否启用Swagger
                 .enable(enabled)
                 // 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息)
@@ -87,7 +87,7 @@ public class SwaggerConfig
         securityContexts.add(
                 SecurityContext.builder()
                         .securityReferences(defaultAuth())
-                        .operationSelector(o -> o.requestMappingPattern().matches("/.*"))
+//                        .operationSelector(o -> o.requestMappingPattern().matches("/.*"))
                         .build());
         return securityContexts;
     }

+ 6 - 1
zksy-admin/src/main/resources/application.yml

@@ -98,7 +98,7 @@ token:
   expireTime: 30
 
 # MyBatis配置
-mybatis:
+mybatis-plus:
   # 搜索指定包别名
   typeAliasesPackage: com.zksy.**.domain
   # 配置mapper的扫描,找到所有的mapper.xml映射文件
@@ -134,3 +134,8 @@ xss:
   excludes: /system/notice
   # 匹配链接
   urlPatterns: /system/*,/monitor/*,/tool/*
+knife4j:
+  enable: true
+  production: false
+  basic:
+    enable: false

+ 20 - 23
zksy-admin/src/main/resources/banner.txt

@@ -1,24 +1,21 @@
-Application Version: ${zksy.version}
+Application Version: ${ruoyi.version}
 Spring Boot Version: ${spring-boot.version}
-////////////////////////////////////////////////////////////////////
-//                          _ooOoo_                               //
-//                         o8888888o                              //
-//                         88" . "88                              //
-//                         (| ^_^ |)                              //
-//                         O\  =  /O                              //
-//                      ____/`---'\____                           //
-//                    .'  \\|     |//  `.                         //
-//                   /  \\|||  :  |||//  \                        //
-//                  /  _||||| -:- |||||-  \                       //
-//                  |   | \\\  -  /// |   |                       //
-//                  | \_|  ''\---/''  |   |                       //
-//                  \  .-\__  `-`  ___/-. /                       //
-//                ___`. .'  /--.--\  `. . ___                     //
-//              ."" '<  `.___\_<|>_/___.'  >'"".                  //
-//            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 //
-//            \  \ `-.   \_ __\ /__ _/   .-` /  /                 //
-//      ========`-.____`-.___\_____/___.-`____.-'========         //
-//                           `=---='                              //
-//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //
-//             佛祖保佑       永不宕机      永无BUG               //
-////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////
+//     #     #          #                #########           #          //
+//     #     #          #                #       #           #          //
+//     #  #  #          #        #       #########           #          //
+//     #  #  #  #       ###########      #       #           #     #    //
+//   # ## ########      #                #########      #############   //
+//   # # #   #          #                  #   #             #     #    //
+//   # # #   #          #        #     #############         #     #    //
+//  #  ##    #          ###########        #   #             #     #    //
+//     #     # #                 #    ###############        #     #    //
+//     #  #######                #         #   #             #     #    //
+//     #     #                #  #        #  #  #            #     #    //
+//     #     #       ########### #      ## # # # ####       #      #    //
+//     #     #                   #    ##    ###    #        #      #    //
+//     #     #   #               #        #  #  #          #   #   #    //
+//     ############           # #        #   #   #         #    # #     //
+//     #                       #            ##          ###      #      //
+//                                                                      //
+//////////////////////////////////////////////////////////////////////////

+ 0 - 132
zksy-framework/src/main/java/com/zksy/framework/config/MyBatisConfig.java

@@ -1,132 +0,0 @@
-package com.zksy.framework.config;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import javax.sql.DataSource;
-import org.apache.ibatis.io.VFS;
-import org.apache.ibatis.session.SqlSessionFactory;
-import org.mybatis.spring.SqlSessionFactoryBean;
-import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.core.env.Environment;
-import org.springframework.core.io.DefaultResourceLoader;
-import org.springframework.core.io.Resource;
-import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
-import org.springframework.core.io.support.ResourcePatternResolver;
-import org.springframework.core.type.classreading.CachingMetadataReaderFactory;
-import org.springframework.core.type.classreading.MetadataReader;
-import org.springframework.core.type.classreading.MetadataReaderFactory;
-import org.springframework.util.ClassUtils;
-import com.zksy.common.utils.StringUtils;
-
-/**
- * Mybatis支持*匹配扫描包
- * 
- * @author zksy
- */
-@Configuration
-public class MyBatisConfig
-{
-    @Autowired
-    private Environment env;
-
-    static final String DEFAULT_RESOURCE_PATTERN = "**/*.class";
-
-    public static String setTypeAliasesPackage(String typeAliasesPackage)
-    {
-        ResourcePatternResolver resolver = (ResourcePatternResolver) new PathMatchingResourcePatternResolver();
-        MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resolver);
-        List<String> allResult = new ArrayList<String>();
-        try
-        {
-            for (String aliasesPackage : typeAliasesPackage.split(","))
-            {
-                List<String> result = new ArrayList<String>();
-                aliasesPackage = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX
-                        + ClassUtils.convertClassNameToResourcePath(aliasesPackage.trim()) + "/" + DEFAULT_RESOURCE_PATTERN;
-                Resource[] resources = resolver.getResources(aliasesPackage);
-                if (resources != null && resources.length > 0)
-                {
-                    MetadataReader metadataReader = null;
-                    for (Resource resource : resources)
-                    {
-                        if (resource.isReadable())
-                        {
-                            metadataReader = metadataReaderFactory.getMetadataReader(resource);
-                            try
-                            {
-                                result.add(Class.forName(metadataReader.getClassMetadata().getClassName()).getPackage().getName());
-                            }
-                            catch (ClassNotFoundException e)
-                            {
-                                e.printStackTrace();
-                            }
-                        }
-                    }
-                }
-                if (result.size() > 0)
-                {
-                    HashSet<String> hashResult = new HashSet<String>(result);
-                    allResult.addAll(hashResult);
-                }
-            }
-            if (allResult.size() > 0)
-            {
-                typeAliasesPackage = String.join(",", (String[]) allResult.toArray(new String[0]));
-            }
-            else
-            {
-                throw new RuntimeException("mybatis typeAliasesPackage 路径扫描错误,参数typeAliasesPackage:" + typeAliasesPackage + "未找到任何包");
-            }
-        }
-        catch (IOException e)
-        {
-            e.printStackTrace();
-        }
-        return typeAliasesPackage;
-    }
-
-    public Resource[] resolveMapperLocations(String[] mapperLocations)
-    {
-        ResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver();
-        List<Resource> resources = new ArrayList<Resource>();
-        if (mapperLocations != null)
-        {
-            for (String mapperLocation : mapperLocations)
-            {
-                try
-                {
-                    Resource[] mappers = resourceResolver.getResources(mapperLocation);
-                    resources.addAll(Arrays.asList(mappers));
-                }
-                catch (IOException e)
-                {
-                    // ignore
-                }
-            }
-        }
-        return resources.toArray(new Resource[resources.size()]);
-    }
-
-    @Bean
-    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception
-    {
-        String typeAliasesPackage = env.getProperty("mybatis.typeAliasesPackage");
-        String mapperLocations = env.getProperty("mybatis.mapperLocations");
-        String configLocation = env.getProperty("mybatis.configLocation");
-        typeAliasesPackage = setTypeAliasesPackage(typeAliasesPackage);
-        VFS.addImplClass(SpringBootVFS.class);
-
-        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
-        sessionFactory.setDataSource(dataSource);
-        sessionFactory.setTypeAliasesPackage(typeAliasesPackage);
-        sessionFactory.setMapperLocations(resolveMapperLocations(StringUtils.split(mapperLocations, ",")));
-        sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));
-        return sessionFactory.getObject();
-    }
-}

+ 57 - 0
zksy-framework/src/main/java/com/zksy/framework/config/MybatisPlusConfig.java

@@ -0,0 +1,57 @@
+package com.zksy.framework.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.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+@EnableTransactionManagement(proxyTargetClass = true)
+@Configuration
+public class MybatisPlusConfig
+{
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor()
+    {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+        // 分页插件
+        interceptor.addInnerInterceptor(paginationInnerInterceptor());
+        // 乐观锁插件
+        interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor());
+        // 阻断插件
+        interceptor.addInnerInterceptor(blockAttackInnerInterceptor());
+        return interceptor;
+    }
+
+    /**
+     * 分页插件,自动识别数据库类型 https://baomidou.com/guide/interceptor-pagination.html
+     */
+    public PaginationInnerInterceptor paginationInnerInterceptor()
+    {
+        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
+        // 设置数据库类型为mysql
+        paginationInnerInterceptor.setDbType(DbType.MYSQL);
+        // 设置最大单页限制数量,默认 500 条,-1 不受限制
+        paginationInnerInterceptor.setMaxLimit(-1L);
+        return paginationInnerInterceptor;
+    }
+
+    /**
+     * 乐观锁插件 https://baomidou.com/guide/interceptor-optimistic-locker.html
+     */
+    public OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor()
+    {
+        return new OptimisticLockerInnerInterceptor();
+    }
+
+    /**
+     * 如果是对全表的删除或更新操作,就会终止该操作 https://baomidou.com/guide/interceptor-block-attack.html
+     */
+    public BlockAttackInnerInterceptor blockAttackInnerInterceptor()
+    {
+        return new BlockAttackInnerInterceptor();
+    }
+}

+ 6 - 0
zksy-system/src/main/java/com/zksy/base/domain/NewsUpdates.java

@@ -63,6 +63,12 @@ public class NewsUpdates implements Serializable {
     @TableField(value = "update_time")
     private LocalDateTime updateTime;
 
+    /**
+     * 是否为特别新闻
+     */
+    @TableField(value = "is_special")
+    private Boolean isSpecial;
+
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 }

+ 1 - 1
zksy-system/src/main/java/com/zksy/base/domain/SmartEmployment.java

@@ -19,7 +19,7 @@ public class SmartEmployment implements Serializable {
      * 主键
      */
     @TableId(value = "id", type = IdType.ASSIGN_UUID)
-    private Long id;
+    private String id;
 
     /**
      * 招聘岗位

+ 13 - 0
zksy-system/src/main/java/com/zksy/base/domain/request/PageRequest.java

@@ -0,0 +1,13 @@
+package com.zksy.base.domain.request;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@AllArgsConstructor
+@NoArgsConstructor
+@Data
+public class PageRequest {
+    private int pageNum;
+    private int pageSize;
+}

+ 12 - 0
zksy-system/src/main/java/com/zksy/base/service/WebSiteService.java

@@ -0,0 +1,12 @@
+package com.zksy.base.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zksy.base.domain.SmartEmployment;
+
+import java.util.List;
+
+public interface WebSiteService {
+
+    Page<SmartEmployment> getRecruitmentInfoByPage(Integer pageNum, Integer pageSize);
+
+}

+ 20 - 0
zksy-system/src/main/java/com/zksy/base/service/impl/WebSiteServiceImpl.java

@@ -0,0 +1,20 @@
+package com.zksy.base.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zksy.base.domain.SmartEmployment;
+import com.zksy.base.mapper.SmartEmploymentMapper;
+import com.zksy.base.service.WebSiteService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class WebSiteServiceImpl implements WebSiteService {
+    @Autowired
+    private SmartEmploymentMapper smartEmploymentMapper;
+    @Override
+    public Page<SmartEmployment> getRecruitmentInfoByPage(Integer pageNum, Integer pageSize) {
+        Page<SmartEmployment> page = new Page<>(pageNum, pageSize);
+        return smartEmploymentMapper.selectPage(page, Wrappers.emptyWrapper());
+    }
+}

+ 2 - 1
zksy-system/src/main/resources/mapper/base/NewsUpdatesMapper.xml

@@ -9,6 +9,7 @@
             <result property="newsName" column="news_name" jdbcType="VARCHAR"/>
             <result property="newsDetails" column="news_details" jdbcType="VARCHAR"/>
             <result property="newsUrl" column="news_url" jdbcType="VARCHAR"/>
+            <result property="isSpecial" column="is_special" jdbcType="BOOLEAN"/>
             <result property="createBy" column="create_by" jdbcType="VARCHAR"/>
             <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
             <result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
@@ -17,7 +18,7 @@
 
     <sql id="Base_Column_List">
         id,news_name,news_details,
-        news_url,create_by,create_time,
+        news_url,is_special,create_by,create_time,
         update_by,update_time
     </sql>
 </mapper>

+ 1 - 1
zksy-system/src/main/resources/mapper/base/SmartEmploymentMapper.xml

@@ -5,7 +5,7 @@
 <mapper namespace="com.zksy.base.mapper.SmartEmploymentMapper">
 
     <resultMap id="BaseResultMap" type="com.zksy.base.domain.SmartEmployment">
-            <id property="id" column="id" jdbcType="BIGINT"/>
+            <id property="id" column="id" jdbcType="VARCHAR"/>
             <result property="jobOpenings" column="job_openings" jdbcType="VARCHAR"/>
             <result property="keyTerms" column="key_terms" jdbcType="VARCHAR"/>
             <result property="jobRequirements" column="job_requirements" jdbcType="VARCHAR"/>