jacksenma пре 7 година
родитељ
комит
6bb4cdb834

+ 7 - 0
src/main/java/com/example/cinema/bl/ScheduleService.java

@@ -61,4 +61,11 @@ public interface ScheduleService {
      * @return
      */
     ResponseVO getScheduleView();
+
+    /**
+     * 观众看到的排片信息
+     * @param movieId
+     * @return
+     */
+    ResponseVO searchAudienceSchedule(int movieId);
 }

+ 49 - 17
src/main/java/com/example/cinema/blImpl/ScheduleServiceImpl.java

@@ -91,6 +91,33 @@ public class ScheduleServiceImpl implements ScheduleService {
         }
     }
 
+    @Override
+    public ResponseVO searchAudienceSchedule(int movieId) {
+        try{
+            //根据view中设置的排片可见限制
+            int days = scheduleMapper.selectView();
+            List<ScheduleItem> scheduleItems = scheduleMapper.selectScheduleByMovieId(movieId);
+
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+            Date today = simpleDateFormat.parse(simpleDateFormat.format(new Date()));
+            Date endDate = getNumDayAfterDate(today, days);
+
+            List<ScheduleItem> result = new ArrayList<>();
+            for(ScheduleItem s : scheduleItems){
+                if(s.getEndTime().before(endDate) && s.getEndTime().after(today)){
+                    result.add(s);
+                }
+            }
+
+            int interval = (int)((result.get(result.size() - 1).getEndTime().getTime() - result.get(0).getEndTime().getTime()) / (1000 * 3600 * 24)) + 1;
+            return ResponseVO.buildSuccess(getScheduleVOList(interval, today, result));
+
+        }catch (Exception e){
+            e.printStackTrace();
+            return ResponseVO.buildFailure("失败");
+        }
+    }
+
     @Override
     public ResponseVO searchScheduleSevenDays(int hallId, Date startDate) {
         try {
@@ -101,23 +128,8 @@ public class ScheduleServiceImpl implements ScheduleService {
 
             // 按照日期整理ScheduleItem
             List<ScheduleItem> scheduleItemList = scheduleMapper.selectSchedule(hallId, startDate, endDate);
-            List<ScheduleVO> scheduleVOList = new ArrayList<>();
-
-            for(int i = 0; i < 7; i++){
-                Date date = getNumDayAfterDate(startDate, i);
-                ScheduleVO scheduleVO = new ScheduleVO();
-                scheduleVO.setDate(date);
-                List<ScheduleItem> scheduleItems = new ArrayList<>();
-                for(ScheduleItem scheduleItem : scheduleItemList){
-                    Date startTime = simpleDateFormat.parse(simpleDateFormat.format(scheduleItem.getStartTime()));
-                    if(date.equals(startTime)){
-                        scheduleItems.add(scheduleItem);
-                    }
-                }
-                scheduleVO.setScheduleItemList(scheduleItems);
-                scheduleVOList.add(scheduleVO);
-            }
-            return ResponseVO.buildSuccess(scheduleVOList);
+
+            return ResponseVO.buildSuccess(getScheduleVOList(7, startDate, scheduleItemList));
         } catch (ParseException e) {
             e.printStackTrace();
             return ResponseVO.buildFailure("失败");
@@ -250,4 +262,24 @@ public class ScheduleServiceImpl implements ScheduleService {
 
         return false;
     }
+
+    List<ScheduleVO> getScheduleVOList(int interval,Date startDate, List<ScheduleItem> scheduleItemList ) throws ParseException {
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        List<ScheduleVO> scheduleVOList = new ArrayList<>();
+        for(int i = 0; i < interval; i++){
+            Date date = getNumDayAfterDate(startDate, i);
+            ScheduleVO scheduleVO = new ScheduleVO();
+            scheduleVO.setDate(date);
+            List<ScheduleItem> scheduleItems = new ArrayList<>();
+            for(ScheduleItem scheduleItem : scheduleItemList){
+                Date startTime = simpleDateFormat.parse(simpleDateFormat.format(scheduleItem.getStartTime()));
+                if(date.equals(startTime)){
+                    scheduleItems.add(scheduleItem);
+                }
+            }
+            scheduleVO.setScheduleItemList(scheduleItems);
+            scheduleVOList.add(scheduleVO);
+        }
+        return scheduleVOList;
+    }
 }

+ 7 - 1
src/main/java/com/example/cinema/controller/ScheduleController.java

@@ -35,13 +35,19 @@ public class ScheduleController {
         return scheduleService.searchScheduleSevenDays(hallId, startDate);
     }
 
+    @RequestMapping(value = "/schedule/search/audience", method = RequestMethod.GET)
+    public ResponseVO searchAudienceSchedule(@RequestParam int movieId){
+        //这里传递startDate参数时,前端传的是用/分隔的时间,例如startDate=2019/04/12
+        return scheduleService.searchAudienceSchedule(movieId);
+    }
+
     @RequestMapping(value = "/schedule/view/set", method = RequestMethod.POST)
     public ResponseVO setScheduleView(@RequestBody  ScheduleViewForm scheduleViewForm){
         return scheduleService.setScheduleView(scheduleViewForm);
     }
 
     @RequestMapping(value = "/schedule/view", method = RequestMethod.GET)
-    public ResponseVO setScheduleView(){
+    public ResponseVO getScheduleView(){
         return scheduleService.getScheduleView();
     }
 

+ 8 - 0
src/main/java/com/example/cinema/data/ScheduleMapper.java

@@ -103,4 +103,12 @@ public interface ScheduleMapper {
      * @return
      */
     List<ScheduleItem> selectScheduleByMovieIdList(List<Integer> movieIdList);
+
+    /**
+     * 查询movieId的所有排片信息
+     * @param movieId
+     * @return
+     */
+    List<ScheduleItem> selectScheduleByMovieId(@Param("movieId") int movieId);
+
 }

+ 9 - 0
src/main/java/com/example/cinema/data/ScheduleMapper.xml

@@ -79,6 +79,15 @@
             where s.movie_id = m.movie_id and s.hall_id = h.hall_id
     </select>
 
+    <select id="selectScheduleByMovieId" resultMap="ScheduleItem">
+        select * from
+          (select * from schedule where movie_id = #{movieId}) s,
+          (select name as movie_name, id as movie_id from movie) m,
+          (select name as hall_name, id as hall_id from hall) h
+            where s.movie_id = m.movie_id and s.hall_id = h.hall_id
+            order by end_time asc
+    </select>
+
     <resultMap id="ScheduleItem" type="com.example.cinema.vo.ScheduleItem">
         <id column="id" property="id"></id>
         <result column="hall_id" property="hallId"></result>

+ 7 - 0
src/test/java/com/example/cinema/bl/ScheduleServiceImplTest.java

@@ -8,6 +8,7 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -35,4 +36,10 @@ public class ScheduleServiceImplTest {
 //        scheduleBatchDeleteForm.setScheduleIdList(Arrays.asList(20,21,31,26,27,28,29,30));
 //        scheduleService.deleteBatchOfSchedule(scheduleBatchDeleteForm);
 //    }
+
+//    @Test
+//    public void searchAudienceSchedule(){
+//        Date date = new Date();
+//        scheduleService.searchAudienceSchedule(10,date);
+//    }
 }