StatisticsServiceImpl.java 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package com.example.cinema.blImpl.statistics;
  2. import com.example.cinema.bl.statistics.StatisticsService;
  3. import com.example.cinema.data.statistics.StatisticsMapper;
  4. import com.example.cinema.vo.AudiencePrice;
  5. import com.example.cinema.vo.AudiencePriceVO;
  6. import com.example.cinema.vo.MovieScheduleTimeVO;
  7. import com.example.cinema.vo.ResponseVO;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.stereotype.Service;
  10. import java.text.ParseException;
  11. import java.text.SimpleDateFormat;
  12. import java.util.ArrayList;
  13. import java.util.Calendar;
  14. import java.util.Date;
  15. import java.util.List;
  16. /**
  17. * @author fjj
  18. * @date 2019/4/16 1:34 PM
  19. */
  20. @Service
  21. public class StatisticsServiceImpl implements StatisticsService {
  22. @Autowired
  23. private StatisticsMapper statisticsMapper;
  24. @Override
  25. public ResponseVO getScheduleRateByDate(Date date) {
  26. try{
  27. Date requireDate = date;
  28. if(requireDate == null){
  29. requireDate = new Date();
  30. }
  31. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
  32. requireDate = simpleDateFormat.parse(simpleDateFormat.format(requireDate));
  33. Date nextDate = getNumDayAfterDate(requireDate, 1);
  34. List<MovieScheduleTimeVO> movieScheduleTimeVOList = statisticsMapper.selectMovieScheduleTimes(requireDate, nextDate);
  35. return ResponseVO.buildSuccess(movieScheduleTimeVOList);
  36. }catch (Exception e){
  37. e.printStackTrace();
  38. return ResponseVO.buildFailure("失败");
  39. }
  40. }
  41. @Override
  42. public ResponseVO getTotalBoxOffice() {
  43. try {
  44. return ResponseVO.buildSuccess(statisticsMapper.selectMovieTotalBoxOffice());
  45. }catch (Exception e){
  46. e.printStackTrace();
  47. return ResponseVO.buildFailure("失败");
  48. }
  49. }
  50. @Override
  51. public ResponseVO getAudiencePriceSevenDays() {
  52. try {
  53. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
  54. Date today = simpleDateFormat.parse(simpleDateFormat.format(new Date()));
  55. Date startDate = getNumDayAfterDate(today, -6);
  56. List<AudiencePriceVO> audiencePriceVOList = new ArrayList<>();
  57. for(int i = 0; i < 7; i++){
  58. AudiencePriceVO audiencePriceVO = new AudiencePriceVO();
  59. Date date = getNumDayAfterDate(startDate, i);
  60. audiencePriceVO.setDate(date);
  61. List<AudiencePrice> audiencePriceList = statisticsMapper.selectAudiencePrice(date, getNumDayAfterDate(date, 1));
  62. double totalPrice = audiencePriceList.stream().mapToDouble(item -> item.getTotalPrice()).sum();
  63. audiencePriceVO.setPrice(Double.parseDouble(String.format("%.2f", audiencePriceList.size() == 0 ? 0 : totalPrice / audiencePriceList.size())));
  64. audiencePriceVOList.add(audiencePriceVO);
  65. }
  66. return ResponseVO.buildSuccess(audiencePriceVOList);
  67. }catch (Exception e){
  68. e.printStackTrace();
  69. return ResponseVO.buildFailure("失败");
  70. }
  71. }
  72. @Override
  73. public ResponseVO getMoviePlacingRateByDate(Date date) {
  74. //要求见接口说明
  75. return null;
  76. }
  77. @Override
  78. public ResponseVO getPopularMovies(int days, int movieNum) {
  79. //要求见接口说明
  80. return null;
  81. }
  82. /**
  83. * 获得num天后的日期
  84. * @param oldDate
  85. * @param num
  86. * @return
  87. */
  88. Date getNumDayAfterDate(Date oldDate, int num){
  89. Calendar calendarTime = Calendar.getInstance();
  90. calendarTime.setTime(oldDate);
  91. calendarTime.add(Calendar.DAY_OF_YEAR, num);
  92. return calendarTime.getTime();
  93. }
  94. }