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

feat:1.数据库表初始化;2.分页查询优化验证

shanshan 2 лет назад
Родитель
Сommit
214d898e0b

+ 5 - 0
src/main/java/cn/seecoder/fdroidrepository/DataObject/Enum/PostTypeEnum.java

@@ -10,4 +10,9 @@ public enum PostTypeEnum {
     PostTypeEnum(Integer value) {
         this.value = value;
     }
+
+    @Override
+    public String toString() {
+        return String.valueOf(value);
+    }
 }

+ 1 - 0
src/main/java/cn/seecoder/fdroidrepository/DataObject/PO/BugPO.java

@@ -12,6 +12,7 @@ import java.util.Date;
 public class BugPO {
     private Integer id;
     private Integer appId;
+    private String appName;
     private String version;
     private Integer userId;
     private String userName;

+ 2 - 1
src/main/java/cn/seecoder/fdroidrepository/DataObject/PO/PostPO.java

@@ -25,12 +25,13 @@ public class PostPO {
 
     private Boolean valid; // 表示某个Post是否有效/可见
 
-    private PostTypeEnum type;
+    private Integer type;
 
     // Article 特有属性
     private String topic;
 
     // Question 特有属性
+    private Integer answerCount;
 
     // Answer 特有属性
     private Integer questionId;

+ 1 - 0
src/main/java/cn/seecoder/fdroidrepository/DataObject/VO/BugVO.java

@@ -14,6 +14,7 @@ import java.util.Date;
 public class BugVO {
     private Integer id;
     private Integer appId;
+    private String appName;
     private String version;
     private Integer userId;
     private String userName;

+ 2 - 1
src/main/java/cn/seecoder/fdroidrepository/DataObject/VO/PostSearchVO.java

@@ -11,10 +11,11 @@ import lombok.NoArgsConstructor;
 public class PostSearchVO {
     private Integer id;
     private Integer authorId;
-    private PostTypeEnum type;
+    private Integer type;
     private Boolean valid;
     private Integer questionId;
     private Integer replyToId;
     private Integer appId;
     private Integer pageNum;
+    private Integer pageStart;
 }

+ 2 - 1
src/main/java/cn/seecoder/fdroidrepository/DataObject/VO/PostVO.java

@@ -24,12 +24,13 @@ public class PostVO {
 
     private Boolean valid; // 表示某个Post是否有效/可见
 
-    private PostTypeEnum type;
+    private Integer type;
 
     // Article 特有属性
     private String topic;
 
     // Question 特有属性
+    private Integer answerCount;
 
     // Answer 特有属性
     private Integer questionId;

+ 8 - 2
src/main/java/cn/seecoder/fdroidrepository/Service/ServiceImpl/PostServiceImpl.java

@@ -13,6 +13,8 @@ import cn.seecoder.fdroidrepository.Mapper.PostLogMapper;
 import cn.seecoder.fdroidrepository.Mapper.PostMapper;
 import cn.seecoder.fdroidrepository.Service.PostService;
 import lombok.RequiredArgsConstructor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
@@ -27,6 +29,7 @@ public class PostServiceImpl implements PostService {
     private final PostMapper postMapper;
     private final PostLogMapper postLogMapper;
     private final AppInfoMapper appInfoMapper;
+    private static final Logger logger = LoggerFactory.getLogger(PostServiceImpl.class);
 
     @Override
     public Response createPost(PostVO postVO) {
@@ -95,7 +98,7 @@ public class PostServiceImpl implements PostService {
             return Response.buildFailure(ResultCode.ILLEGAL_ARGUMENT.getCode(), ResultCode.ILLEGAL_ARGUMENT.getMessage());
         }
         List<PostPO> postPOList = postMapper.selectByAuthorId(userId);
-        Map<PostTypeEnum, List<PostVO>> result = postPOList.stream().map(PostVO::new).collect(Collectors.groupingBy(PostVO::getType));
+        Map<Integer, List<PostVO>> result = postPOList.stream().map(PostVO::new).collect(Collectors.groupingBy(PostVO::getType));
         return Response.buildSuccess(result);
     }
 
@@ -109,9 +112,12 @@ public class PostServiceImpl implements PostService {
 
     @Override
     public Response search(PostSearchVO postSearchVO) {
-        if (postSearchVO == null) {
+        if (postSearchVO == null || (postSearchVO.getPageNum() != null && postSearchVO.getPageNum() < 1)) {
             return Response.buildFailure(ResultCode.ILLEGAL_ARGUMENT.getCode(), ResultCode.ILLEGAL_ARGUMENT.getMessage());
         }
+        if (postSearchVO.getPageNum() != null) {
+            postSearchVO.setPageStart(postSearchVO.getPageNum() * 10 - 10);
+        }
         return Response.buildSuccess(postMapper.search(postSearchVO));
     }
 

+ 1 - 0
src/main/java/cn/seecoder/fdroidrepository/security/WebSecurityConfiguration.java

@@ -48,6 +48,7 @@ public class WebSecurityConfiguration {
                 // PostController
                 .antMatchers(POST, "/post/create").authenticated()
                 .antMatchers(POST, "/post/update").authenticated()
+                .antMatchers(POST, "/post/search").permitAll()
                 .antMatchers(GET, "/post/listByUser").authenticated()
                 .requestMatchers(CorsUtils::isPreFlightRequest).permitAll()
                 // 拒绝其他请求

+ 2 - 2
src/main/resources/application.yml

@@ -7,10 +7,10 @@ spring:
     init:
       mode: always
       continue-on-error: false
-      schema-locations: classpath:sql/table_init.sql
 server:
   port: 8080
 
 mybatis:
   configuration:
-    map-underscore-to-camel-case: true
+    map-underscore-to-camel-case: true
+  mapper-locations: classpath:/mapper/*.xml

+ 2 - 2
src/main/resources/mapper/PostMapper.xml

@@ -29,8 +29,8 @@
             <if test="replyToId != null">and reply_to_id = #{replyToId}</if>
             <if test="appId != null">and app_id = #{appId}</if>
         order by update_time desc
-        <if test="pageNum != null">
-            limit (#{pageNum} - 1) * 10,10
+        <if test="pageStart != null">
+            limit #{pageStart}, 10
         </if>
     </select>
 

+ 7 - 7
src/main/resources/mapper/UserMapper.xml

@@ -18,14 +18,14 @@
     </resultMap>
 
     <!-- 根据用户名查询用户 -->
-    <select id="findByUsername" resultMap="BaseResultMap">
-        SELECT * FROM users WHERE username = #{username}
-    </select>
+<!--    <select id="findByUsername" resultMap="BaseResultMap">-->
+<!--        SELECT * FROM users WHERE username = #{username}-->
+<!--    </select>-->
 
     <!-- 插入用户信息 -->
-    <insert id="save" parameterType="cn.seecoder.fdroidrepository.DataObject.User">
-        INSERT INTO users (username, password, email, full_name, date_of_birth, gender, phone_number, registration_date, is_active, role)
-        VALUES (#{username}, #{password}, #{email}, #{fullName}, #{dateOfBirth}, #{gender}, #{phoneNumber}, #{registrationDate}, #{active}, #{role})
-    </insert>
+<!--    <insert id="save" parameterType="cn.seecoder.fdroidrepository.DataObject.User">-->
+<!--        INSERT INTO users (username, password, email, full_name, date_of_birth, gender, phone_number, registration_date, is_active, role)-->
+<!--        VALUES (#{username}, #{password}, #{email}, #{fullName}, #{dateOfBirth}, #{gender}, #{phoneNumber}, #{registrationDate}, #{active}, #{role})-->
+<!--    </insert>-->
 
 </mapper>

+ 24 - 1
src/main/resources/sql/table_init.sql

@@ -46,11 +46,34 @@ create table if not exists fdroid.bug
 (
     id int auto_increment primary key,
     app_id int not null ,
+    app_name varchar(30) not null ,
     version varchar(20) not null ,
     user_id int not null ,
-    user_name int not null ,
+    user_name varchar(30) not null ,
     create_time timestamp default current_timestamp not null ,
     update_time timestamp,
     fixed boolean default false not null ,
     description text not null
+) charset = utf8;
+
+drop table if exists fdroid.post;
+create table if not exists fdroid.post
+(
+    id int auto_increment primary key ,
+    author_id int not null ,
+    author_name varchar(30) not null ,
+    title text not null ,
+    content text not null,
+    create_time timestamp default current_timestamp not null ,
+    update_time timestamp,
+    valid boolean default true not null ,
+    type int default 1 not null ,
+    topic varchar(20),
+    answer_count int,
+    question_id int,
+    question_name varchar(50),
+    reply_to_id int,
+    rate double,
+    app_id int,
+    app_name varchar(50)
 ) charset = utf8;