MovieServiceImpl.java 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. package com.example.cinema.blImpl;
  2. import com.example.cinema.bl.MovieService;
  3. import com.example.cinema.data.AccountMapper;
  4. import com.example.cinema.data.MovieLikeMapper;
  5. import com.example.cinema.data.MovieMapper;
  6. import com.example.cinema.data.ScheduleMapper;
  7. import com.example.cinema.vo.MovieBatchOffForm;
  8. import com.example.cinema.vo.MovieForm;
  9. import com.example.cinema.vo.ResponseVO;
  10. import com.example.cinema.vo.ScheduleItem;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.stereotype.Service;
  13. import javax.swing.plaf.synth.SynthScrollBarUI;
  14. import java.text.SimpleDateFormat;
  15. import java.util.ArrayList;
  16. import java.util.Arrays;
  17. import java.util.Date;
  18. import java.util.List;
  19. /**
  20. * @author fjj
  21. * @date 2019/3/12 6:43 PM
  22. */
  23. @Service
  24. public class MovieServiceImpl implements MovieService {
  25. private static final String ALREADY_LIKE_ERROR_MESSAGE = "用户已标记该电影为想看";
  26. private static final String UNLIKE_ERROR_MESSAGE = "用户未标记该电影为想看";
  27. private static final String USER_NOT_EXIST_ERROR_MESSAGE = "用户不存在";
  28. private static final String MOVIE_NOT_EXIST_ERROR_MESSAGE = "电影不存在";
  29. private static final String SCHEDULE_ERROR_MESSAGE = "有电影后续仍有排片或已有观众购票且未使用";
  30. @Autowired
  31. private MovieMapper movieMapper;
  32. @Autowired
  33. private MovieLikeMapper movieLikeMapper;
  34. @Autowired
  35. private AccountMapper accountMapper;
  36. @Autowired
  37. private ScheduleMapper scheduleMapper;
  38. @Override
  39. public ResponseVO addMovie(MovieForm addMovieForm) {
  40. try {
  41. movieMapper.insertOneMovie(addMovieForm);
  42. return ResponseVO.buildSuccess();
  43. } catch (Exception e) {
  44. e.printStackTrace();
  45. return ResponseVO.buildFailure("失败");
  46. }
  47. }
  48. @Override
  49. public ResponseVO searchOneMovieByIdAndUserId(int id, int userId) {
  50. try {
  51. return ResponseVO.buildSuccess(movieMapper.selectMovieByIdAndUserId(id, userId));
  52. } catch (Exception e) {
  53. e.printStackTrace();
  54. return ResponseVO.buildFailure("失败");
  55. }
  56. }
  57. @Override
  58. public ResponseVO searchAllMovie() {
  59. try {
  60. return ResponseVO.buildSuccess(movieMapper.selectAllMovie());
  61. } catch (Exception e) {
  62. e.printStackTrace();
  63. return ResponseVO.buildFailure("失败");
  64. }
  65. }
  66. @Override
  67. public ResponseVO searchOtherMoviesExcludeOff() {
  68. try {
  69. return ResponseVO.buildSuccess(movieMapper.selectOtherMoviesExcludeOff());
  70. } catch (Exception e) {
  71. e.printStackTrace();
  72. return ResponseVO.buildFailure("失败");
  73. }
  74. }
  75. @Override
  76. public ResponseVO likeMovie(int userId, int movieId) {
  77. //todo: user 判空
  78. if (userLikeTheMovie(userId, movieId)) {
  79. return ResponseVO.buildFailure(ALREADY_LIKE_ERROR_MESSAGE);
  80. } else if (movieMapper.selectMovieById(movieId) == null) {
  81. return ResponseVO.buildFailure(MOVIE_NOT_EXIST_ERROR_MESSAGE);
  82. }
  83. try {
  84. return ResponseVO.buildSuccess(movieLikeMapper.insertOneLike(movieId, userId));
  85. } catch (Exception e) {
  86. e.printStackTrace();
  87. return ResponseVO.buildFailure("失败");
  88. }
  89. }
  90. @Override
  91. public ResponseVO unLikeMovie(int userId, int movieId) {
  92. if (!userLikeTheMovie(userId, movieId)) {
  93. return ResponseVO.buildFailure(UNLIKE_ERROR_MESSAGE);
  94. } else if (movieMapper.selectMovieById(movieId) == null) {
  95. return ResponseVO.buildFailure(MOVIE_NOT_EXIST_ERROR_MESSAGE);
  96. }
  97. try {
  98. return ResponseVO.buildSuccess(movieLikeMapper.deleteOneLike(movieId, userId));
  99. } catch (Exception e) {
  100. e.printStackTrace();
  101. return ResponseVO.buildFailure("失败");
  102. }
  103. }
  104. @Override
  105. public ResponseVO getCountOfLikes(int movieId) {
  106. try {
  107. return ResponseVO.buildSuccess(movieLikeMapper.selectLikeNums(movieId));
  108. } catch (Exception e) {
  109. e.printStackTrace();
  110. return ResponseVO.buildFailure("失败");
  111. }
  112. }
  113. @Override
  114. public ResponseVO getMovieByKeyword(String keyword) {
  115. if (keyword==null||keyword.equals(""))
  116. return ResponseVO.buildSuccess(movieMapper.selectAllMovie());
  117. return ResponseVO.buildSuccess(movieMapper.selectMovieByKeyword(keyword));
  118. }
  119. @Override
  120. public ResponseVO getLikeNumsGroupByDate(int movieId) {
  121. try {
  122. return ResponseVO.buildSuccess(movieLikeMapper.getDateLikeNum(movieId));
  123. } catch (Exception e) {
  124. e.printStackTrace();
  125. return ResponseVO.buildFailure("失败");
  126. }
  127. }
  128. @Override
  129. public ResponseVO pullOfBatchOfMovie(MovieBatchOffForm movieBatchOffForm) {
  130. try {
  131. List<Integer> movieIdList = movieBatchOffForm.getMovieIdList();
  132. ResponseVO responseVO = preCheck(movieIdList);
  133. if(!responseVO.getSuccess()){
  134. return responseVO;
  135. }
  136. movieMapper.updateMovieStatusBatch(movieIdList);
  137. return ResponseVO.buildSuccess();
  138. } catch (Exception e) {
  139. e.printStackTrace();
  140. return ResponseVO.buildFailure("失败");
  141. }
  142. }
  143. @Override
  144. public ResponseVO updateMovie(MovieForm updateMovieForm) {
  145. try {
  146. ResponseVO responseVO = preCheck(Arrays.asList(updateMovieForm.getId()));
  147. if(!responseVO.getSuccess()){
  148. return responseVO;
  149. }
  150. movieMapper.updateMovie(updateMovieForm);
  151. return ResponseVO.buildSuccess();
  152. }catch (Exception e) {
  153. e.printStackTrace();
  154. return ResponseVO.buildFailure("失败");
  155. }
  156. }
  157. /**
  158. * 下架和修改电影的前置检查
  159. * @param movieIdList
  160. * @return
  161. */
  162. public ResponseVO preCheck(List<Integer> movieIdList){
  163. Date thisTime = new Date();
  164. List<ScheduleItem> scheduleItems = scheduleMapper.selectScheduleByMovieIdList(movieIdList);
  165. // 检查是否有电影后续有排片及是否有观众购票未使用
  166. for(ScheduleItem s : scheduleItems){
  167. if(s.getEndTime().after(thisTime)){
  168. return ResponseVO.buildFailure(SCHEDULE_ERROR_MESSAGE);
  169. }
  170. }
  171. return ResponseVO.buildSuccess();
  172. }
  173. private boolean userLikeTheMovie(int userId, int movieId) {
  174. return movieLikeMapper.selectLikeMovie(movieId, userId) == 0 ? false : true;
  175. }
  176. }