| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- package com.example.cinema.blImpl;
- import com.example.cinema.bl.MovieService;
- import com.example.cinema.data.AccountMapper;
- import com.example.cinema.data.MovieLikeMapper;
- import com.example.cinema.data.MovieMapper;
- import com.example.cinema.data.ScheduleMapper;
- import com.example.cinema.vo.MovieBatchOffForm;
- import com.example.cinema.vo.MovieForm;
- import com.example.cinema.vo.ResponseVO;
- import com.example.cinema.vo.ScheduleItem;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import javax.swing.plaf.synth.SynthScrollBarUI;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.Date;
- import java.util.List;
- /**
- * @author fjj
- * @date 2019/3/12 6:43 PM
- */
- @Service
- public class MovieServiceImpl implements MovieService {
- private static final String ALREADY_LIKE_ERROR_MESSAGE = "用户已标记该电影为想看";
- private static final String UNLIKE_ERROR_MESSAGE = "用户未标记该电影为想看";
- private static final String USER_NOT_EXIST_ERROR_MESSAGE = "用户不存在";
- private static final String MOVIE_NOT_EXIST_ERROR_MESSAGE = "电影不存在";
- private static final String SCHEDULE_ERROR_MESSAGE = "有电影后续仍有排片或已有观众购票且未使用";
- @Autowired
- private MovieMapper movieMapper;
- @Autowired
- private MovieLikeMapper movieLikeMapper;
- @Autowired
- private AccountMapper accountMapper;
- @Autowired
- private ScheduleMapper scheduleMapper;
- @Override
- public ResponseVO addMovie(MovieForm addMovieForm) {
- try {
- movieMapper.insertOneMovie(addMovieForm);
- return ResponseVO.buildSuccess();
- } catch (Exception e) {
- e.printStackTrace();
- return ResponseVO.buildFailure("失败");
- }
- }
- @Override
- public ResponseVO searchOneMovieByIdAndUserId(int id, int userId) {
- try {
- return ResponseVO.buildSuccess(movieMapper.selectMovieByIdAndUserId(id, userId));
- } catch (Exception e) {
- e.printStackTrace();
- return ResponseVO.buildFailure("失败");
- }
- }
- @Override
- public ResponseVO searchAllMovie() {
- try {
- return ResponseVO.buildSuccess(movieMapper.selectAllMovie());
- } catch (Exception e) {
- e.printStackTrace();
- return ResponseVO.buildFailure("失败");
- }
- }
- @Override
- public ResponseVO searchOtherMoviesExcludeOff() {
- try {
- return ResponseVO.buildSuccess(movieMapper.selectOtherMoviesExcludeOff());
- } catch (Exception e) {
- e.printStackTrace();
- return ResponseVO.buildFailure("失败");
- }
- }
- @Override
- public ResponseVO likeMovie(int userId, int movieId) {
- //todo: user 判空
- if (userLikeTheMovie(userId, movieId)) {
- return ResponseVO.buildFailure(ALREADY_LIKE_ERROR_MESSAGE);
- } else if (movieMapper.selectMovieById(movieId) == null) {
- return ResponseVO.buildFailure(MOVIE_NOT_EXIST_ERROR_MESSAGE);
- }
- try {
- return ResponseVO.buildSuccess(movieLikeMapper.insertOneLike(movieId, userId));
- } catch (Exception e) {
- e.printStackTrace();
- return ResponseVO.buildFailure("失败");
- }
- }
- @Override
- public ResponseVO unLikeMovie(int userId, int movieId) {
- if (!userLikeTheMovie(userId, movieId)) {
- return ResponseVO.buildFailure(UNLIKE_ERROR_MESSAGE);
- } else if (movieMapper.selectMovieById(movieId) == null) {
- return ResponseVO.buildFailure(MOVIE_NOT_EXIST_ERROR_MESSAGE);
- }
- try {
- return ResponseVO.buildSuccess(movieLikeMapper.deleteOneLike(movieId, userId));
- } catch (Exception e) {
- e.printStackTrace();
- return ResponseVO.buildFailure("失败");
- }
- }
- @Override
- public ResponseVO getCountOfLikes(int movieId) {
- try {
- return ResponseVO.buildSuccess(movieLikeMapper.selectLikeNums(movieId));
- } catch (Exception e) {
- e.printStackTrace();
- return ResponseVO.buildFailure("失败");
- }
- }
- @Override
- public ResponseVO getMovieByKeyword(String keyword) {
- if (keyword==null||keyword.equals(""))
- return ResponseVO.buildSuccess(movieMapper.selectAllMovie());
- return ResponseVO.buildSuccess(movieMapper.selectMovieByKeyword(keyword));
- }
- @Override
- public ResponseVO getLikeNumsGroupByDate(int movieId) {
- try {
- return ResponseVO.buildSuccess(movieLikeMapper.getDateLikeNum(movieId));
- } catch (Exception e) {
- e.printStackTrace();
- return ResponseVO.buildFailure("失败");
- }
- }
- @Override
- public ResponseVO pullOfBatchOfMovie(MovieBatchOffForm movieBatchOffForm) {
- try {
- List<Integer> movieIdList = movieBatchOffForm.getMovieIdList();
- ResponseVO responseVO = preCheck(movieIdList);
- if(!responseVO.getSuccess()){
- return responseVO;
- }
- movieMapper.updateMovieStatusBatch(movieIdList);
- return ResponseVO.buildSuccess();
- } catch (Exception e) {
- e.printStackTrace();
- return ResponseVO.buildFailure("失败");
- }
- }
- @Override
- public ResponseVO updateMovie(MovieForm updateMovieForm) {
- try {
- ResponseVO responseVO = preCheck(Arrays.asList(updateMovieForm.getId()));
- if(!responseVO.getSuccess()){
- return responseVO;
- }
- movieMapper.updateMovie(updateMovieForm);
- return ResponseVO.buildSuccess();
- }catch (Exception e) {
- e.printStackTrace();
- return ResponseVO.buildFailure("失败");
- }
- }
- /**
- * 下架和修改电影的前置检查
- * @param movieIdList
- * @return
- */
- public ResponseVO preCheck(List<Integer> movieIdList){
- Date thisTime = new Date();
- List<ScheduleItem> scheduleItems = scheduleMapper.selectScheduleByMovieIdList(movieIdList);
- // 检查是否有电影后续有排片及是否有观众购票未使用
- for(ScheduleItem s : scheduleItems){
- if(s.getEndTime().after(thisTime)){
- return ResponseVO.buildFailure(SCHEDULE_ERROR_MESSAGE);
- }
- }
- return ResponseVO.buildSuccess();
- }
- private boolean userLikeTheMovie(int userId, int movieId) {
- return movieLikeMapper.selectLikeMovie(movieId, userId) == 0 ? false : true;
- }
- }
|