瀏覽代碼

1. remove logic class direct call multiplied data mappers
2. solve the cyclic dependency

kenny67nju 7 年之前
父節點
當前提交
025e6a117a

+ 1 - 1
src/main/java/com/example/cinema/bl/management/MovieService.java

@@ -17,7 +17,7 @@ public interface MovieService {
     ResponseVO addMovie(MovieForm addMovieForm);
 
     /**
-     * 根据id搜索电影
+     * 根据id userid 搜索电影
      * @param id
      * @param userId
      * @return

+ 12 - 1
src/main/java/com/example/cinema/blImpl/management/HallServiceImpl.java

@@ -1,6 +1,7 @@
 package com.example.cinema.blImpl.management;
 
 import com.example.cinema.bl.management.HallService;
+import com.example.cinema.blImpl.management.schedule.HallServiceForSchedule;
 import com.example.cinema.data.management.HallMapper;
 import com.example.cinema.vo.ResponseVO;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -11,7 +12,7 @@ import org.springframework.stereotype.Service;
  * @date 2019/4/12 2:01 PM
  */
 @Service
-public class HallServiceImpl implements HallService {
+public class HallServiceImpl implements HallService, HallServiceForSchedule {
     @Autowired
     private HallMapper hallMapper;
     @Override
@@ -23,4 +24,14 @@ public class HallServiceImpl implements HallService {
             return ResponseVO.buildFailure("失败");
         }
     }
+
+    @Override
+    public ResponseVO selectHallById() {
+        try {
+            return ResponseVO.buildSuccess(hallMapper.selectHallById());
+        } catch (Exception e) {
+            e.printStackTrace();
+            return ResponseVO.buildFailure("失败");
+        }
+    }
 }

+ 19 - 7
src/main/java/com/example/cinema/blImpl/management/MovieServiceImpl.java

@@ -1,11 +1,12 @@
 package com.example.cinema.blImpl.management;
 
 import com.example.cinema.bl.management.MovieService;
-import com.example.cinema.data.user.AccountMapper;
+import com.example.cinema.bl.management.ScheduleService;
+import com.example.cinema.blImpl.management.schedule.MovieServiceForSchedule;
+import com.example.cinema.blImpl.management.schedule.ScheduleServiceForMovie;
 import com.example.cinema.data.statistics.MovieLikeMapper;
 import com.example.cinema.data.management.MovieMapper;
 
-import com.example.cinema.data.management.ScheduleMapper;
 import com.example.cinema.vo.MovieBatchOffForm;
 import com.example.cinema.vo.MovieForm;
 import com.example.cinema.vo.ResponseVO;
@@ -22,7 +23,7 @@ import java.util.List;
  * @date 2019/3/12 6:43 PM
  */
 @Service
-public class MovieServiceImpl implements MovieService {
+public class MovieServiceImpl implements MovieService, MovieServiceForSchedule {
 
     private static final String ALREADY_LIKE_ERROR_MESSAGE = "用户已标记该电影为想看";
     private static final String UNLIKE_ERROR_MESSAGE = "用户未标记该电影为想看";
@@ -34,10 +35,10 @@ public class MovieServiceImpl implements MovieService {
     private MovieMapper movieMapper;
     @Autowired
     private MovieLikeMapper movieLikeMapper;
+
+
     @Autowired
-    private AccountMapper accountMapper;
-    @Autowired
-    private ScheduleMapper scheduleMapper;
+    private ScheduleServiceForMovie scheduleService;
 
     @Override
     public ResponseVO addMovie(MovieForm addMovieForm) {
@@ -50,6 +51,17 @@ public class MovieServiceImpl implements MovieService {
         }
     }
 
+    @Override
+    public ResponseVO searchOneMovieById(int id) {
+        try {
+            return ResponseVO.buildSuccess(movieMapper.selectMovieById(id));
+        } catch (Exception e) {
+            e.printStackTrace();
+            return ResponseVO.buildFailure("失败");
+        }
+
+    }
+
     @Override
     public ResponseVO searchOneMovieByIdAndUserId(int id, int userId) {
         try {
@@ -180,7 +192,7 @@ public class MovieServiceImpl implements MovieService {
      */
     public ResponseVO preCheck(List<Integer> movieIdList){
         Date thisTime = new Date();
-        List<ScheduleItem> scheduleItems = scheduleMapper.selectScheduleByMovieIdList(movieIdList);
+        List<ScheduleItem> scheduleItems = scheduleService.selectScheduleByMovieIdList(movieIdList);
 
         // 检查是否有电影后续有排片及是否有观众购票未使用
         for(ScheduleItem s : scheduleItems){

+ 7 - 0
src/main/java/com/example/cinema/blImpl/management/schedule/HallServiceForSchedule.java

@@ -0,0 +1,7 @@
+package com.example.cinema.blImpl.management.schedule;
+
+import com.example.cinema.vo.ResponseVO;
+
+public interface HallServiceForSchedule {
+    ResponseVO selectHallById(int hallId);
+}

+ 13 - 0
src/main/java/com/example/cinema/blImpl/management/schedule/MovieServiceForSchedule.java

@@ -0,0 +1,13 @@
+package com.example.cinema.blImpl.management.schedule;
+
+import com.example.cinema.vo.ResponseVO;
+
+public interface MovieServiceForSchedule {
+    /**
+     * 根据id搜索电影
+     * @param id
+     * @return
+     */
+
+    ResponseVO searchOneMovieById(int id);
+}

+ 17 - 0
src/main/java/com/example/cinema/blImpl/management/schedule/ScheduleServiceForMovie.java

@@ -0,0 +1,17 @@
+package com.example.cinema.blImpl.management.schedule;
+
+import com.example.cinema.vo.ScheduleItem;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
+import java.util.List;
+
+public interface ScheduleServiceForMovie {
+    /**
+     * 查询所有涉及到movieIdList中电影的排片信息
+     * @param movieIdList
+     * @return
+     */
+    List<ScheduleItem> selectScheduleByMovieIdList(List<Integer> movieIdList);
+
+}

+ 11 - 8
src/main/java/com/example/cinema/blImpl/management/ScheduleServiceImpl.java → src/main/java/com/example/cinema/blImpl/management/schedule/ScheduleServiceImpl.java

@@ -1,8 +1,6 @@
-package com.example.cinema.blImpl.management;
+package com.example.cinema.blImpl.management.schedule;
 
 import com.example.cinema.bl.management.ScheduleService;
-import com.example.cinema.data.management.HallMapper;
-import com.example.cinema.data.management.MovieMapper;
 import com.example.cinema.data.management.ScheduleMapper;
 import com.example.cinema.vo.*;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -17,7 +15,7 @@ import java.util.*;
  * @date 2019/4/11 4:14 PM
  */
 @Service
-public class ScheduleServiceImpl implements ScheduleService {
+public class ScheduleServiceImpl implements ScheduleService, ScheduleServiceForMovie {
     private static final String TIME_CONFLICT_ERROR_MESSAGE = "时间段冲突";
     private static final String CROSS_DAYS_ERROR_MESSAGE = "起止时间不能跨天";
     private static final String DATE_INTERVAL_LESS_THAN_LENGTH_ERROR_MESSAGE = "起止时间段不能少于电影时长或结束时间不能早于开始时间";
@@ -33,9 +31,9 @@ public class ScheduleServiceImpl implements ScheduleService {
     @Autowired
     private ScheduleMapper scheduleMapper;
     @Autowired
-    private MovieMapper movieMapper;
+    private MovieServiceForSchedule movieService;
     @Autowired
-    private HallMapper hallMapper;
+    private HallServiceForSchedule hallService;
 
     @Override
     public ResponseVO addSchedule(ScheduleForm scheduleForm) {
@@ -219,12 +217,12 @@ public class ScheduleServiceImpl implements ScheduleService {
             }
 
             //检查影厅是否存在
-            if(hallMapper.selectHallById(scheduleForm.getHallId()) == null){
+            if(hallService.selectHallById(scheduleForm.getHallId()) == null){
                 return ResponseVO.buildFailure(HALL_NOT_EXIST_ERROR_MESSAGE);
             }
 
             // 检查电影是否存在
-            MovieVO movieVO = movieMapper.selectMovieById(scheduleForm.getMovieId());
+            MovieVO movieVO = movieService.searchOneMovieById(scheduleForm.getMovieId());
             if(movieVO == null){
                 return ResponseVO.buildFailure(MOVIE_NOT_EXIST_ERROR_MESSAGE);
             }
@@ -290,4 +288,9 @@ public class ScheduleServiceImpl implements ScheduleService {
         }
         return scheduleVOList;
     }
+
+    @Override
+    public List<ScheduleItem> selectScheduleByMovieIdList( List<Integer> movieIdList){
+        return scheduleMapper.selectScheduleByMovieIdList(movieIdList);
+    }
 }