From 60ab8f33ca60a0b8316e82a34ada4efb600a6251 Mon Sep 17 00:00:00 2001 From: lqy <3431632001@qq,com> Date: Tue, 25 Feb 2025 22:55:31 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=E9=87=8D=E6=9E=84adm?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../forum/controller/ForumHotController.java | 15 ++++++++ .../controller/ForumNoticeController.java | 10 +++--- .../com/skyeye/eve/forum/entity/ForumHot.java | 6 +++- .../eve/forum/service/ForumHotService.java | 2 ++ .../service/impl/ForumHotServiceImpl.java | 36 +++++++++++++++++++ .../service/impl/ForumNoticeServiceImpl.java | 4 +-- 6 files changed, 65 insertions(+), 8 deletions(-) diff --git a/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/controller/ForumHotController.java b/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/controller/ForumHotController.java index 31cf1ef0..697fff19 100644 --- a/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/controller/ForumHotController.java +++ b/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/controller/ForumHotController.java @@ -40,4 +40,19 @@ public class ForumHotController { public void queryHotForumList(InputObject inputObject, OutputObject outputObject) { forumHotService.queryHotForumList(inputObject, outputObject); } + + /** + * 获取热门标签 + * + * @param inputObject 入参以及用户信息等获取对象 + * @param outputObject 出参以及提示信息的返回值对象 + */ + @ApiOperation(id = "queryHotTagList", value = "获取热门标签", method = "POST", allUse = "2") + @ApiImplicitParams(classBean = CommonPageInfo.class) + @RequestMapping("/post/ForumHotController/queryHotTagList") + public void queryHotTagList(InputObject inputObject, OutputObject outputObject) { + forumHotService.queryHotTagList(inputObject, outputObject); + } + + // TODO 获取热门标签 的定时任务 } diff --git a/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/controller/ForumNoticeController.java b/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/controller/ForumNoticeController.java index 1a6f7520..2a961bae 100644 --- a/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/controller/ForumNoticeController.java +++ b/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/controller/ForumNoticeController.java @@ -2,6 +2,7 @@ package com.skyeye.eve.forum.controller; import com.skyeye.annotation.api.Api; +import com.skyeye.annotation.api.ApiImplicitParam; import com.skyeye.annotation.api.ApiImplicitParams; import com.skyeye.annotation.api.ApiOperation; import com.skyeye.common.entity.search.CommonPageInfo; @@ -46,10 +47,11 @@ public class ForumNoticeController { * @param inputObject 入参以及用户信息等获取对象 * @param outputObject 出参以及提示信息的返回值对象 */ - @ApiOperation(id = "deleteNoticeById", value = "根据通知id删除通知", method = "DELETE", allUse = "2") - @ApiImplicitParams(classBean = CommonPageInfo.class) - @RequestMapping("/post/ForumNoticeController/deleteNoticeById") - public void deleteNoticeById(InputObject inputObject, OutputObject outputObject) { + @ApiOperation(id = "deleteForumNoticeById", value = "根据通知id删除通知", method = "DELETE", allUse = "2") + @ApiImplicitParams( + @ApiImplicitParam(id = "id", name = "id",value = "主键id", required = "required")) + @RequestMapping("/post/ForumNoticeController/deleteForumNoticeById") + public void deleteForumNoticeById(InputObject inputObject, OutputObject outputObject) { forumNoticeService.deleteById(inputObject, outputObject); } diff --git a/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/entity/ForumHot.java b/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/entity/ForumHot.java index d2414363..bcc71532 100644 --- a/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/entity/ForumHot.java +++ b/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/entity/ForumHot.java @@ -18,7 +18,7 @@ import lombok.Data; @Data @TableName("forum_hot") -@ApiModel("热门帖子实体类") +@ApiModel("热门帖子和标签实体类") public class ForumHot extends OperatorUserInfo { @TableId("id") @@ -29,6 +29,10 @@ public class ForumHot extends OperatorUserInfo { @ApiModelProperty(value = "帖子id") private String forumId; + @TableField("tag_id") + @ApiModelProperty(value = "标签id") + private String tagId; + @TableField("update_time") @ApiModelProperty(value = "更新时间") private String updateTime; diff --git a/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/service/ForumHotService.java b/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/service/ForumHotService.java index 541ea502..5d69db11 100644 --- a/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/service/ForumHotService.java +++ b/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/service/ForumHotService.java @@ -18,4 +18,6 @@ public interface ForumHotService extends SkyeyeBusinessService { void queryHotForumList(InputObject inputObject, OutputObject outputObject); void editHotForumMation(); + + void queryHotTagList(InputObject inputObject, OutputObject outputObject); } diff --git a/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/service/impl/ForumHotServiceImpl.java b/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/service/impl/ForumHotServiceImpl.java index 3556d488..19ea1ca7 100644 --- a/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/service/impl/ForumHotServiceImpl.java +++ b/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/service/impl/ForumHotServiceImpl.java @@ -1,6 +1,7 @@ package com.skyeye.eve.forum.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.skyeye.annotation.service.SkyeyeService; import com.skyeye.base.business.service.impl.SkyeyeBusinessServiceImpl; @@ -114,6 +115,41 @@ public class ForumHotServiceImpl extends SkyeyeBusinessServiceImpl queryWrapper = new QueryWrapper<>(); + + queryWrapper.eq(MybatisPlusUtil.toColumns(ForumContent::getState),CommonNumConstants.NUM_ONE) + .select(MybatisPlusUtil.toColumns(ForumContent::getTagId)); + List list = forumContentService.list(queryWrapper); + List tagIds = new ArrayList<>(); + for(ForumContent content:list){ + String[] tagId = content.getTagId().split(","); + for (int i = 0; i < tagId.length; i++) { + if(StrUtil.isNotEmpty(tagId[i])){ + tagIds.add(tagId[i]); + } + } + } + // 分组统计 + Map collect = tagIds.stream().collect( + Collectors.groupingBy(e -> e, Collectors.counting()) + ); + // 排序 + List> collectSort = collect.entrySet() + .stream().sorted(Map.Entry.comparingByValue()).collect(Collectors.toList()); + List tagIdList = new ArrayList<>(); + for (Map.Entry entry : collectSort) { + tagIdList.add(entry.getKey()); + } + // 取前10 + if(tagIdList.size()>10){ + tagIdList = tagIdList.subList(0, 10); + } + outputObject.setBeans(tagIdList); + outputObject.settotal(tagIdList.size()); + } + public String getBeforeOrFutureDay(int num) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Calendar c = Calendar.getInstance(); diff --git a/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/service/impl/ForumNoticeServiceImpl.java b/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/service/impl/ForumNoticeServiceImpl.java index 5ece1761..cdf8fd12 100644 --- a/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/service/impl/ForumNoticeServiceImpl.java +++ b/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/service/impl/ForumNoticeServiceImpl.java @@ -48,11 +48,9 @@ public class ForumNoticeServiceImpl extends SkyeyeBusinessServiceImpl queryWrapper = new QueryWrapper<>(); queryWrapper.eq(MybatisPlusUtil.toColumns(ForumNotice::getState), ReadEnum.NO_READ.getKey()); - queryWrapper.eq(MybatisPlusUtil.toColumns(ForumNotice::getCreateId), userId); + queryWrapper.eq(MybatisPlusUtil.toColumns(ForumNotice::getReceiveId), userId); queryWrapper.orderByDesc(MybatisPlusUtil.toColumns(ForumNotice::getCreateTime)); List bean = list(queryWrapper); - iAuthUserService.setName(bean, "createId", "createName"); - iAuthUserService.setName(bean, "updateId", "updateName"); for (ForumNotice forumNotice : bean) { ForumContent forumContent = forumContentService.selectById(forumNotice.getForumId()); forumNotice.setForumContentMation(forumContent); From d701048fb38f8840e1704d89fd429c1a8b113836 Mon Sep 17 00:00:00 2001 From: lqy <3431632001@qq,com> Date: Wed, 26 Feb 2025 10:14:58 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=E9=87=8D=E6=9E=84adm=E2=80=94?= =?UTF-8?q?=E2=80=94=E8=8E=B7=E5=8F=96=E7=83=AD=E9=97=A8=E6=A0=87=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eve/forum/service/ForumHotService.java | 2 + .../service/impl/ForumHotServiceImpl.java | 52 ++++++++++++++++--- .../java/com/skyeye/xxljob/HotForumTag.java | 18 +++++++ 3 files changed, 65 insertions(+), 7 deletions(-) create mode 100644 skyeye-adm/adm-pro/src/main/java/com/skyeye/xxljob/HotForumTag.java diff --git a/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/service/ForumHotService.java b/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/service/ForumHotService.java index 5d69db11..466f0ce0 100644 --- a/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/service/ForumHotService.java +++ b/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/service/ForumHotService.java @@ -20,4 +20,6 @@ public interface ForumHotService extends SkyeyeBusinessService { void editHotForumMation(); void queryHotTagList(InputObject inputObject, OutputObject outputObject); + + void queryHotForumTagList(); } diff --git a/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/service/impl/ForumHotServiceImpl.java b/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/service/impl/ForumHotServiceImpl.java index 19ea1ca7..4d70c359 100644 --- a/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/service/impl/ForumHotServiceImpl.java +++ b/skyeye-adm/adm-pro/src/main/java/com/skyeye/eve/forum/service/impl/ForumHotServiceImpl.java @@ -21,6 +21,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -117,13 +120,37 @@ public class ForumHotServiceImpl extends SkyeyeBusinessServiceImpl queryWrapper = new QueryWrapper<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + // 获取前一个月的日期范围yyyy-MM-dd + LocalDate today = LocalDate.now(); + LocalDate beforeMonth = today.minusMonths(1); + String start = beforeMonth.format(DateTimeFormatter.ISO_DATE); + String end = today.format(DateTimeFormatter.ISO_DATE); + + queryWrapper.between(MybatisPlusUtil.toColumns(ForumHot::getUpdateTime), start, end) + .select(MybatisPlusUtil.toColumns(ForumHot::getTagId)) + .orderByDesc(MybatisPlusUtil.toColumns(ForumHot::getUpdateTime)); + List forumHots = list(queryWrapper); + outputObject.setBeans(forumHots); + outputObject.settotal(forumHots.size()); + } + + /** + * 获取热门标签 + * */ + @Override + public void queryHotForumTagList() { + String beforeDay = getBeforeOrFutureDay(-29); + String today = DateUtil.getTimeAndToString(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(MybatisPlusUtil.toColumns(ForumContent::getState), CommonNumConstants.NUM_ONE) + .between(MybatisPlusUtil.toColumns(ForumContent::getCreateTime), beforeDay, today) + .select(MybatisPlusUtil.toColumns(ForumContent::getTagId)) + .orderByDesc(MybatisPlusUtil.toColumns(ForumContent::getCreateTime)); + List forumContents = forumContentService.list(queryWrapper); - queryWrapper.eq(MybatisPlusUtil.toColumns(ForumContent::getState),CommonNumConstants.NUM_ONE) - .select(MybatisPlusUtil.toColumns(ForumContent::getTagId)); - List list = forumContentService.list(queryWrapper); List tagIds = new ArrayList<>(); - for(ForumContent content:list){ + for(ForumContent content:forumContents){ String[] tagId = content.getTagId().split(","); for (int i = 0; i < tagId.length; i++) { if(StrUtil.isNotEmpty(tagId[i])){ @@ -146,8 +173,19 @@ public class ForumHotServiceImpl extends SkyeyeBusinessServiceImpl10){ tagIdList = tagIdList.subList(0, 10); } - outputObject.setBeans(tagIdList); - outputObject.settotal(tagIdList.size()); + // 保存到ForumHot + List forumHots = new ArrayList<>(); + for (String tagId : tagIdList) { + ForumHot forumHot = new ForumHot(); + forumHot.setTagId(tagId); + // 当前时间yyyy-mm-dd + LocalDateTime now = LocalDateTime.now(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + String formattedDate = now.format(formatter); + forumHot.setUpdateTime(formattedDate); + forumHots.add(forumHot); + } + createEntity(forumHots,null); } public String getBeforeOrFutureDay(int num) { diff --git a/skyeye-adm/adm-pro/src/main/java/com/skyeye/xxljob/HotForumTag.java b/skyeye-adm/adm-pro/src/main/java/com/skyeye/xxljob/HotForumTag.java new file mode 100644 index 00000000..c1f68b57 --- /dev/null +++ b/skyeye-adm/adm-pro/src/main/java/com/skyeye/xxljob/HotForumTag.java @@ -0,0 +1,18 @@ +package com.skyeye.xxljob; + +import com.skyeye.eve.forum.service.ForumHotService; +import com.xxl.job.core.handler.annotation.XxlJob; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class HotForumTag { + + @Autowired + private ForumHotService forumHotService; + + @XxlJob("queryHotForumTagList") + public void queryHotForumTagList() { + forumHotService.queryHotForumTagList(); + } +}