diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java index cbe8d841..4775b74c 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java @@ -693,6 +693,16 @@ public class CasesApi extends ApiBaseController { } + /** + * 不同专业月热度榜查询所需时间检索数据 + */ + @GetMapping("/queryAllTimePopularityOfMajor") + public JsonResponse>> queryAllTimePopularityOfMajor() { + Map> time = casesService.queryAllTimePopularityOfMajor(); + return success(time); + } + + /** * 查询推荐案例榜单 * @return diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRank.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRank.java index dd677c0c..51baf8dc 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRank.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRank.java @@ -4,6 +4,7 @@ import com.xboe.core.SysConstant; import com.xboe.core.orm.BaseEntity; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; import javax.persistence.Column; import javax.persistence.Entity; @@ -16,6 +17,7 @@ import java.time.LocalDateTime; * @TableName boe_cases_rank */ @Data +@NoArgsConstructor @Entity @EqualsAndHashCode(callSuper = false) @Table(name = SysConstant.TABLE_PRE+"cases_rank") @@ -52,6 +54,8 @@ public class CasesRank extends BaseEntity { @Transient private String majorName; - - + public CasesRank(Long majorId, LocalDateTime riseRankTime) { + this.majorId = majorId; + this.riseRankTime = riseRankTime; + } } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesService.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesService.java index 26b64c55..aebdf2c7 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesService.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesService.java @@ -15,6 +15,7 @@ import javax.servlet.http.HttpServletRequest; import javax.transaction.Transactional; import java.time.LocalDateTime; import java.util.List; +import java.util.Map; public interface ICasesService{ /** @@ -137,5 +138,7 @@ public interface ICasesService{ PageList queryFavoriteCaseOfIndex(Integer pageIndex, Integer pageSize, String accountId); PageList browsingHistory(Integer pageIndex, Integer pageSize, String accountId, HttpServletRequest request); + + Map> queryAllTimePopularityOfMajor(); } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java index 7a0d304a..846d152d 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java @@ -487,7 +487,7 @@ public class CasesServiceImpl implements ICasesService { if (CollUtil.isNotEmpty(viewsRankRecords)) { // 拼接生成浏览量排行榜的标签 List viewRankTags = viewsRankRecords.stream().map(casesRank -> { - String pattern = casesRank.getRiseRankTime().getMonthValue() < 10 ? "yyyy年M月" : "yyyy年MM月"; + String pattern = casesRank.getRiseRankTime().getMonthValue() < 10 ? "yy年M月" : "yy年MM月"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern); String time = casesRank.getRiseRankTime().format(formatter); @@ -508,7 +508,7 @@ public class CasesServiceImpl implements ICasesService { // 拼接生成年度最佳标签 if (e.getExcellent()!=null && e.getExcellent()) { - e.setExcellentTag(e.getExcellentTime().format(DateTimeFormatter.ofPattern("yyyy年"))+"度最佳"); + e.setExcellentTag(e.getExcellentTime().format(DateTimeFormatter.ofPattern("yy年"))+"度最佳"); } List authorTags = new ArrayList<>(); @@ -1164,7 +1164,7 @@ public class CasesServiceImpl implements ICasesService { @Transactional(rollbackFor = Exception.class) public void refreshViewsRankOfMajor(){ // LocalDateTime riseRankTime = LocalDateTime.now().withDayOfMonth(1).minusDays(1).toLocalDate().atTime(23, 59, 59); // 上月最后一天的结束时间 - LocalDateTime riseRankTime = LocalDateTime.now().minusMonths(2).minusDays(1).toLocalDate().atTime(23, 59, 59); // 上月最后一天的结束时间 + LocalDateTime riseRankTime = LocalDateTime.now().minusMonths(1).minusDays(1).toLocalDate().atTime(23, 59, 59); // 上月最后一天的结束时间 int count = casesRankDao.sqlCount("SELECT count(1) FROM boe_cases_rank WHERE deleted=0 AND rise_rank_time = ?1", riseRankTime); if (count > 0){ return; @@ -1174,7 +1174,7 @@ public class CasesServiceImpl implements ICasesService { String sql = "SELECT bc.id,bcmt.major_id,bc.views - COALESCE(bc.last_month_views, 0) AS increment\n" + "FROM boe_cases bc\n" + - "JOIN boe_cases_major_type bcmt ON bcmt.case_id = bc.id and bc.deleted=0 and file_path is not null and file_path!=''"; + "JOIN boe_cases_major_type bcmt ON bcmt.case_id = bc.id and bc.deleted=0 and file_path is not null and file_path!='' and bc.views - COALESCE(bc.last_month_views, 0)!=0"; List caseListOfObject = casesDao.sqlFindList(sql); // 转为casesRank @@ -1487,4 +1487,22 @@ public class CasesServiceImpl implements ICasesService { return pageList; } + @Override + public Map> queryAllTimePopularityOfMajor() { + QueryBuilder builder = QueryBuilder.from(CasesRank.class); + builder.addField("new CasesRank(majorId,riseRankTime)"); + builder.addFilter(FieldFilters.eq("deleted",false)); + builder.addGroupBy("majorId"); + builder.addGroupBy("riseRankTime"); + List list = casesRankDao.findList(builder.builder()); + // 定义日期时间的格式 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yy-MM"); + + + Map> collect = list.stream().collect(Collectors.groupingBy + (CasesRank::getMajorId, Collectors.mapping(casesRank -> casesRank.getRiseRankTime().format(formatter), Collectors.toList()))); + + return collect; + } + }