diff --git a/my-project-backend/src/main/java/com/example/entity/dto/Topic.java b/my-project-backend/src/main/java/com/example/entity/dto/Topic.java index 9bca9df..b42aa4d 100644 --- a/my-project-backend/src/main/java/com/example/entity/dto/Topic.java +++ b/my-project-backend/src/main/java/com/example/entity/dto/Topic.java @@ -14,7 +14,9 @@ public class Topic { Integer id; String title; String content; - Integer uid; Integer type; Date time; + Integer uid; + String username; + String avatar; } diff --git a/my-project-backend/src/main/java/com/example/entity/vo/response/TopicPreviewVO.java b/my-project-backend/src/main/java/com/example/entity/vo/response/TopicPreviewVO.java index 68fe4e2..b911482 100644 --- a/my-project-backend/src/main/java/com/example/entity/vo/response/TopicPreviewVO.java +++ b/my-project-backend/src/main/java/com/example/entity/vo/response/TopicPreviewVO.java @@ -13,4 +13,7 @@ public class TopicPreviewVO { String text; List images; Date time; + int uid; + String username; + String avatar; } diff --git a/my-project-backend/src/main/java/com/example/mapper/TopicMapper.java b/my-project-backend/src/main/java/com/example/mapper/TopicMapper.java index 66c860c..3e0fea2 100644 --- a/my-project-backend/src/main/java/com/example/mapper/TopicMapper.java +++ b/my-project-backend/src/main/java/com/example/mapper/TopicMapper.java @@ -3,7 +3,22 @@ package com.example.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.example.entity.dto.Topic; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; @Mapper public interface TopicMapper extends BaseMapper { + @Select(""" + select * from db_topic left join db_account on uid = db_account.id + order by `time` desc limit ${page}, 10 + """) + List topicList(int page); + + @Select(""" + select * from db_topic left join db_account on uid = db_account.id + where type = #{type} + order by `time` desc limit ${page}, 10 + """) + List topicListByType(int page, int type); } diff --git a/my-project-backend/src/main/java/com/example/service/impl/TopicServiceImpl.java b/my-project-backend/src/main/java/com/example/service/impl/TopicServiceImpl.java index 98b1f16..a1917dc 100644 --- a/my-project-backend/src/main/java/com/example/service/impl/TopicServiceImpl.java +++ b/my-project-backend/src/main/java/com/example/service/impl/TopicServiceImpl.java @@ -2,8 +2,6 @@ package com.example.service.impl; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.example.entity.dto.Topic; import com.example.entity.dto.TopicType; @@ -63,12 +61,11 @@ public class TopicServiceImpl extends ServiceImpl implements List list = cacheUtils.takeListFromCache(key, TopicPreviewVO.class); if(list != null) return list; //无缓存从数据库读取 - Page page = Page.of(pageNumber, 10); + List topics; if(type == 0) - this.baseMapper.selectPage(page, Wrappers.query().orderByDesc("time")); + topics = baseMapper.topicList(pageNumber); else - this.baseMapper.selectPage(page, Wrappers.query().eq("type", type).orderByDesc("time")); - List topics = page.getRecords(); + topics = baseMapper.topicListByType(pageNumber, type); if(topics.isEmpty()) return null; list = topics.stream().map(this::resolveToPreview).toList(); cacheUtils.saveListToCache(key, list, 20); //进缓存 diff --git a/my-project-frontend/src/views/forum/TopicList.vue b/my-project-frontend/src/views/forum/TopicList.vue index e7eeb2c..5454939 100644 --- a/my-project-frontend/src/views/forum/TopicList.vue +++ b/my-project-frontend/src/views/forum/TopicList.vue @@ -7,6 +7,7 @@ import {get} from "@/net"; import {ElMessage} from "element-plus"; import TopicEditor from "@/components/TopicEditor.vue"; import {useStore} from "@/store"; +import axios from "axios"; const store = useStore() @@ -67,10 +68,10 @@ navigator.geolocation.getCurrentPosition(position => {
- +
-
我是名字
+
{{item.username}}
{{new Date(item.time).toLocaleString()}}
@@ -79,7 +80,7 @@ navigator.geolocation.getCurrentPosition(position => {
{{ store.findTypeById(item.type)?.name }} @@ -87,8 +88,8 @@ navigator.geolocation.getCurrentPosition(position => { {{ item.title }}
{{ item.text }}
-
- +
+
@@ -155,21 +156,23 @@ navigator.geolocation.getCurrentPosition(position => { .topic-card { margin-top: 10px; transition: scale .3s; + padding: 20px; &:hover { - scale: 1.02; + scale: 1.01; cursor: pointer; } .topic-image{ width: 100%; height: 100%; + max-height: 120px; border-radius: 5px; } .topic-type { display: inline-block; - border: solid 1px grey; + border: solid 0.5px grey; border-radius: 5px; font-size: 12px; padding: 0 5px;