AnalysisAlbumServiceImpl.java 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package com.redxun.knowledge.analysis.service;
  2. import com.redxun.knowledge.analysis.entity.vo.AlbumCategoryVo;
  3. import com.redxun.knowledge.analysis.entity.vo.AlbumDetailVisitsVo;
  4. import com.redxun.knowledge.analysis.mapper.AnalysisAlbumMapper;
  5. import com.redxun.knowledge.analysis.mapper.PvLogMapper;
  6. import com.redxun.knowledge.utils.DateUtils;
  7. import lombok.extern.slf4j.Slf4j;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.stereotype.Service;
  10. import java.math.BigDecimal;
  11. import java.util.ArrayList;
  12. import java.util.Calendar;
  13. import java.util.List;
  14. import java.util.Map;
  15. import java.util.stream.Collectors;
  16. /**
  17. * 文件名: AnalysisAlbumServiceImpl
  18. * 作者: zizg
  19. * 时间: 2023/3/21
  20. * 描述:
  21. * 修改人:
  22. * 修改时间:
  23. * 修改内容:
  24. */
  25. @Service
  26. @Slf4j
  27. public class AnalysisAlbumServiceImpl {
  28. @Autowired
  29. private PvLogMapper pvLogMapper;
  30. @Autowired
  31. private AnalysisAlbumMapper analysisAlbumMapper;
  32. /**
  33. * 专辑创建总量
  34. * @param type
  35. * @return
  36. */
  37. public Map<String, Object> albumAmount(String type) {
  38. return null;
  39. }
  40. /**
  41. * 专辑详情Top访问量(pv)统计
  42. * @param type
  43. * @return
  44. */
  45. public List<AlbumDetailVisitsVo> albumDetailVisits(String type, Integer tops) {
  46. List<AlbumDetailVisitsVo> result = new ArrayList<>();
  47. Calendar calendar = Calendar.getInstance();
  48. int year = calendar.get(Calendar.YEAR);
  49. if (("total").equals(type)){
  50. result = pvLogMapper.albumDetailVisits(null,null);
  51. } else if ("year".equals(type)){
  52. result = pvLogMapper.albumDetailVisits(DateUtils.format(DateUtils.getFirstOfYear(year)),
  53. DateUtils.format(DateUtils.getLastOfYear(year)));
  54. } else if ("month".equals(type)){
  55. int month = calendar.get(Calendar.MONTH);
  56. String firstOfMonth = DateUtils.getFirstOfMonth(year, month + 1, 15);
  57. String lastOfMonth = DateUtils.getLastOfMonth(year, month + 1, 15);
  58. result = pvLogMapper.albumDetailVisits(firstOfMonth,lastOfMonth);
  59. }
  60. //取tops10
  61. result = result.stream().limit(tops).collect(Collectors.toList());
  62. int countSum = result.stream().mapToInt(AlbumDetailVisitsVo::getValue).sum();
  63. //计算百分比
  64. if (countSum != 0){
  65. result.forEach(e -> {
  66. BigDecimal countbg = BigDecimal.valueOf(e.getValue() / (double) countSum);
  67. e.setPercentage(countbg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
  68. });
  69. }
  70. return result;
  71. }
  72. /**
  73. * 各一级分类专辑创建数量
  74. * @param type
  75. * @param sort
  76. * @return
  77. */
  78. public List<AlbumCategoryVo> level1AlbumHistogram(String type, String sort) {
  79. //获取全部一级分类id
  80. List<String> albumCategoryIdList = analysisAlbumMapper.selectCategory();
  81. return null;
  82. }
  83. }