瀏覽代碼

新增排片信息合法性校验

jacksenma 7 年之前
父節點
當前提交
35a02ab985

+ 11 - 0
.idea/dataSources/56491842-8c26-426b-a604-02dce7d52d03.xml

@@ -1013,16 +1013,21 @@
     <column id="255" parent="238" name="length">
       <Position>9</Position>
       <DataType>int(11)|0s</DataType>
+      <NotNull>1</NotNull>
       <ColumnKind>normal</ColumnKind>
     </column>
     <column id="256" parent="238" name="start_date">
       <Position>10</Position>
       <DataType>timestamp|0s</DataType>
+      <NotNull>1</NotNull>
+      <DefaultExpression>CURRENT_TIMESTAMP</DefaultExpression>
       <ColumnKind>normal</ColumnKind>
+      <OnUpdate>CURRENT_TIMESTAMP</OnUpdate>
     </column>
     <column id="257" parent="238" name="name">
       <Position>11</Position>
       <DataType>varchar(255)|0s</DataType>
+      <NotNull>1</NotNull>
       <ColumnKind>normal</ColumnKind>
     </column>
     <column id="258" parent="238" name="description">
@@ -1075,26 +1080,32 @@ user_id</ColNames>
     <column id="266" parent="240" name="hall_id">
       <Position>2</Position>
       <DataType>int(11)|0s</DataType>
+      <NotNull>1</NotNull>
       <ColumnKind>normal</ColumnKind>
     </column>
     <column id="267" parent="240" name="movie_id">
       <Position>3</Position>
       <DataType>int(11)|0s</DataType>
+      <NotNull>1</NotNull>
       <ColumnKind>normal</ColumnKind>
     </column>
     <column id="268" parent="240" name="start_time">
       <Position>4</Position>
       <DataType>timestamp|0s</DataType>
+      <NotNull>1</NotNull>
       <ColumnKind>normal</ColumnKind>
+      <OnUpdate>CURRENT_TIMESTAMP</OnUpdate>
     </column>
     <column id="269" parent="240" name="end_time">
       <Position>5</Position>
       <DataType>timestamp|0s</DataType>
+      <NotNull>1</NotNull>
       <ColumnKind>normal</ColumnKind>
     </column>
     <column id="270" parent="240" name="fare">
       <Position>6</Position>
       <DataType>double|0s</DataType>
+      <NotNull>1</NotNull>
       <ColumnKind>normal</ColumnKind>
     </column>
     <key id="271" parent="240" name="PRIMARY">

+ 228 - 181
.idea/workspace.xml

@@ -2,16 +2,17 @@
 <project version="4">
   <component name="ChangeListManager">
     <list default="true" id="6ab6cf33-62bd-48c1-935e-834777603958" name="Default Changelist" comment="">
+      <change beforePath="$PROJECT_DIR$/.idea/dataSources/56491842-8c26-426b-a604-02dce7d52d03.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dataSources/56491842-8c26-426b-a604-02dce7d52d03.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/java/com/example/cinema/bl/ScheduleService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/example/cinema/bl/ScheduleService.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/java/com/example/cinema/bl/ScheduleServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/example/cinema/bl/ScheduleServiceImpl.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/java/com/example/cinema/controller/ScheduleController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/example/cinema/controller/ScheduleController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/example/cinema/data/HallMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/example/cinema/data/HallMapper.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/example/cinema/data/HallMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/example/cinema/data/HallMapper.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/java/com/example/cinema/data/ScheduleMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/example/cinema/data/ScheduleMapper.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/example/cinema/data/ScheduleMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/example/cinema/data/ScheduleMapper.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/example/cinema/vo/ScheduleSearchForm.java" beforeDir="false" />
       <change beforePath="$PROJECT_DIR$/src/test/java/com/example/cinema/bl/ScheduleServiceImplTest.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/test/java/com/example/cinema/bl/ScheduleServiceImplTest.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/com/example/cinema/bl/ScheduleService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/example/cinema/bl/ScheduleService.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/com/example/cinema/bl/ScheduleServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/example/cinema/bl/ScheduleServiceImpl.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/com/example/cinema/controller/ScheduleController.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/example/cinema/controller/ScheduleController.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/com/example/cinema/data/ScheduleMapper.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/example/cinema/data/ScheduleMapper.class" afterDir="false" />
     </list>
     <ignored path="$PROJECT_DIR$/target/" />
     <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
@@ -59,53 +60,54 @@
         <counts>
           <entry key="project.closed" value="3" />
           <entry key="project.open.time.1" value="1" />
+          <entry key="project.open.time.11" value="1" />
           <entry key="project.open.time.13" value="1" />
           <entry key="project.open.time.8" value="1" />
-          <entry key="project.opened" value="3" />
+          <entry key="project.opened" value="4" />
         </counts>
       </usages-collector>
       <usages-collector id="statistics.file.extensions.open">
         <counts>
           <entry key="gitignore" value="1" />
           <entry key="hall" value="2" />
-          <entry key="java" value="116" />
-          <entry key="movie" value="5" />
+          <entry key="java" value="130" />
+          <entry key="movie" value="8" />
           <entry key="movie_like" value="1" />
-          <entry key="schedule" value="8" />
-          <entry key="sql" value="7" />
+          <entry key="schedule" value="10" />
+          <entry key="sql" value="9" />
           <entry key="user" value="2" />
-          <entry key="xml" value="16" />
+          <entry key="xml" value="19" />
           <entry key="yml" value="5" />
         </counts>
       </usages-collector>
       <usages-collector id="statistics.file.types.open">
         <counts>
-          <entry key="Database Element" value="18" />
-          <entry key="JAVA" value="116" />
+          <entry key="Database Element" value="23" />
+          <entry key="JAVA" value="130" />
           <entry key="PLAIN_TEXT" value="1" />
-          <entry key="Scratch" value="7" />
-          <entry key="XML" value="16" />
+          <entry key="Scratch" value="9" />
+          <entry key="XML" value="19" />
           <entry key="YAML" value="5" />
         </counts>
       </usages-collector>
       <usages-collector id="statistics.file.extensions.edit">
         <counts>
-          <entry key="cell" value="98" />
+          <entry key="cell" value="110" />
           <entry key="gitignore" value="6" />
-          <entry key="java" value="2447" />
-          <entry key="sql" value="492" />
+          <entry key="java" value="3542" />
+          <entry key="sql" value="614" />
           <entry key="txt" value="6" />
-          <entry key="xml" value="319" />
+          <entry key="xml" value="481" />
           <entry key="yml" value="34" />
         </counts>
       </usages-collector>
       <usages-collector id="statistics.file.types.edit">
         <counts>
-          <entry key="JAVA" value="2447" />
+          <entry key="JAVA" value="3542" />
           <entry key="PLAIN_TEXT" value="12" />
-          <entry key="SQL" value="23" />
-          <entry key="Scratch" value="590" />
-          <entry key="XML" value="296" />
+          <entry key="SQL" value="45" />
+          <entry key="Scratch" value="724" />
+          <entry key="XML" value="436" />
           <entry key="YAML" value="34" />
         </counts>
       </usages-collector>
@@ -116,8 +118,8 @@
       <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/controller/ScheduleController.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="319">
-              <caret line="27" column="47" selection-start-line="27" selection-start-column="47" selection-end-line="27" selection-end-column="47" />
+            <state relative-caret-position="315">
+              <caret line="21" column="38" selection-start-line="21" selection-start-column="38" selection-end-line="21" selection-end-column="38" />
               <folding>
                 <element signature="imports" expanded="true" />
               </folding>
@@ -128,8 +130,8 @@
       <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/bl/ScheduleService.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="316">
-              <caret line="26" column="15" selection-start-line="26" selection-start-column="15" selection-end-line="26" selection-end-column="15" />
+            <state relative-caret-position="255">
+              <caret line="17" column="15" selection-start-line="17" selection-start-column="15" selection-end-line="17" selection-end-column="15" />
               <folding>
                 <element signature="imports" expanded="true" />
               </folding>
@@ -140,70 +142,102 @@
       <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/bl/ScheduleServiceImpl.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="313">
-              <caret line="41" column="83" lean-forward="true" selection-start-line="41" selection-start-column="83" selection-end-line="41" selection-end-column="83" />
+            <state relative-caret-position="291">
+              <caret line="23" column="106" selection-start-line="23" selection-start-column="106" selection-end-line="23" selection-end-column="106" />
               <folding>
                 <element signature="imports" expanded="true" />
+                <element signature="method#searchScheduleSevenDays#0;class#ScheduleServiceImpl#0" />
               </folding>
             </state>
           </provider>
         </entry>
       </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="das://56491842-8c26-426b-a604-02dce7d52d03/schema/cinema/table/movie">
+          <provider selected="true" editor-type-id="com.intellij.database.editor.DatabaseTableFileEditorProvider">
+            <state>
+              <filtering enabled="true" />
+            </state>
+          </provider>
+        </entry>
+      </file>
       <file pinned="false" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/src/test/java/com/example/cinema/bl/ScheduleServiceImplTest.java">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/data/ScheduleMapper.xml">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="315">
-              <caret line="32" column="1" lean-forward="true" selection-start-line="32" selection-start-column="1" selection-end-line="32" selection-end-column="1" />
+            <state relative-caret-position="231">
+              <caret line="17" column="101" selection-start-line="17" selection-start-column="101" selection-end-line="17" selection-end-column="101" />
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/data/ScheduleMapper.java">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/vo/ScheduleVO.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="254">
-              <caret line="25" column="13" selection-start-line="25" selection-start-column="13" selection-end-line="25" selection-end-column="13" />
+            <state relative-caret-position="240">
+              <caret line="20" lean-forward="true" selection-start-line="20" selection-end-line="20" />
+              <folding>
+                <element signature="imports" expanded="true" />
+                <element signature="e#406#407#0" expanded="true" />
+                <element signature="e#445#446#0" expanded="true" />
+                <element signature="e#521#522#0" expanded="true" />
+                <element signature="e#577#578#0" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/data/ScheduleMapper.xml">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/vo/ScheduleItem.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="225">
-              <caret line="15" column="13" lean-forward="true" selection-start-line="15" selection-start-column="13" selection-end-line="15" selection-end-column="13" />
+            <state relative-caret-position="9">
+              <caret line="8" column="13" selection-start-line="8" selection-start-column="13" selection-end-line="8" selection-end-column="13" />
+              <folding>
+                <element signature="e#1027#1028#0" expanded="true" />
+                <element signature="e#1057#1058#0" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/vo/ScheduleSearchForm.java">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/vo/ScheduleForm.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="154">
-              <caret line="12" column="26" selection-start-line="12" selection-start-column="20" selection-end-line="12" selection-end-column="26" />
+            <state relative-caret-position="72">
+              <caret line="8" column="25" selection-start-line="8" selection-start-column="13" selection-end-line="8" selection-end-column="25" />
               <folding>
-                <element signature="e#372#373#0" expanded="true" />
-                <element signature="e#401#402#0" expanded="true" />
-                <element signature="e#446#447#0" expanded="true" />
+                <element signature="e#453#454#0" expanded="true" />
                 <element signature="e#482#483#0" expanded="true" />
-                <element signature="e#516#517#0" expanded="true" />
-                <element signature="e#548#549#0" expanded="true" />
-                <element signature="e#596#597#0" expanded="true" />
-                <element signature="e#638#639#0" expanded="true" />
-                <element signature="e#670#671#0" expanded="true" />
-                <element signature="e#700#701#0" expanded="true" />
-                <element signature="e#744#745#0" expanded="true" />
-                <element signature="e#782#783#0" expanded="true" />
+                <element signature="e#527#528#0" expanded="true" />
+                <element signature="e#563#564#0" expanded="true" />
+                <element signature="e#598#599#0" expanded="true" />
+                <element signature="e#628#629#0" expanded="true" />
+                <element signature="e#675#676#0" expanded="true" />
+                <element signature="e#713#714#0" expanded="true" />
+                <element signature="e#747#748#0" expanded="true" />
+                <element signature="e#779#780#0" expanded="true" />
+                <element signature="e#827#828#0" expanded="true" />
+                <element signature="e#869#870#0" expanded="true" />
+                <element signature="e#901#902#0" expanded="true" />
+                <element signature="e#931#932#0" expanded="true" />
+                <element signature="e#975#976#0" expanded="true" />
+                <element signature="e#1013#1014#0" expanded="true" />
+                <element signature="e#1044#1045#0" expanded="true" />
+                <element signature="e#1071#1072#0" expanded="true" />
+                <element signature="e#1111#1112#0" expanded="true" />
+                <element signature="e#1143#1144#0" expanded="true" />
               </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/controller/MovieController.java">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/data/ScheduleMapper.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="-264">
-              <caret line="8" column="7" selection-start-line="8" selection-start-column="7" selection-end-line="8" selection-end-column="7" />
+            <state relative-caret-position="346">
+              <caret line="40" column="60" selection-start-line="40" selection-start-column="23" selection-end-line="40" selection-end-column="60" />
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
@@ -249,9 +283,7 @@
         <option value="$PROJECT_DIR$/src/main/java/com/example/cinema/bl/AccountServiceImpl.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/example/cinema/data/AccountMapper.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/example/cinema/vo/HallVO.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/example/cinema/data/HallMapper.xml" />
         <option value="$PROJECT_DIR$/src/main/java/com/example/cinema/po/Schedule.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/example/cinema/data/HallMapper.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/example/cinema/bl/MovieServiceImpl.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/example/cinema/interceptor/SessionInterceptor.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/example/cinema/bl/HallService.java" />
@@ -264,13 +296,15 @@
         <option value="$PROJECT_DIR$/src/main/java/com/example/cinema/vo/ScheduleSearchForm.java" />
         <option value="$PROJECT_DIR$/.gitignore" />
         <option value="$PROJECT_DIR$/src/main/resources/application.yml" />
-        <option value="$APPLICATION_CONFIG_DIR$/consoles/db/56491842-8c26-426b-a604-02dce7d52d03/console.sql" />
-        <option value="$PROJECT_DIR$/src/main/java/com/example/cinema/data/ScheduleMapper.xml" />
-        <option value="$PROJECT_DIR$/src/main/java/com/example/cinema/controller/ScheduleController.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/example/cinema/bl/ScheduleService.java" />
+        <option value="$PROJECT_DIR$/src/test/java/com/example/cinema/bl/ScheduleServiceImplTest.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/example/cinema/controller/ScheduleController.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/example/cinema/data/HallMapper.xml" />
+        <option value="$PROJECT_DIR$/src/main/java/com/example/cinema/data/HallMapper.java" />
+        <option value="$APPLICATION_CONFIG_DIR$/consoles/db/56491842-8c26-426b-a604-02dce7d52d03/console.sql" />
         <option value="$PROJECT_DIR$/src/main/java/com/example/cinema/data/ScheduleMapper.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/example/cinema/bl/ScheduleServiceImpl.java" />
-        <option value="$PROJECT_DIR$/src/test/java/com/example/cinema/bl/ScheduleServiceImplTest.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/example/cinema/data/ScheduleMapper.xml" />
       </list>
     </option>
   </component>
@@ -300,6 +334,7 @@
       <foldersAlwaysOnTop value="true" />
     </navigator>
     <panes>
+      <pane id="Scope" />
       <pane id="PackagesPane">
         <subPane>
           <expand>
@@ -311,7 +346,6 @@
           <select />
         </subPane>
       </pane>
-      <pane id="Scope" />
       <pane id="ProjectPane">
         <subPane>
           <expand>
@@ -352,7 +386,7 @@
               <item name="main" type="462c0819:PsiDirectoryNode" />
               <item name="java" type="462c0819:PsiDirectoryNode" />
               <item name="cinema" type="462c0819:PsiDirectoryNode" />
-              <item name="controller" type="462c0819:PsiDirectoryNode" />
+              <item name="bl" type="462c0819:PsiDirectoryNode" />
             </path>
             <path>
               <item name="cinema" type="b2602c69:ProjectViewProjectNode" />
@@ -361,7 +395,7 @@
               <item name="main" type="462c0819:PsiDirectoryNode" />
               <item name="java" type="462c0819:PsiDirectoryNode" />
               <item name="cinema" type="462c0819:PsiDirectoryNode" />
-              <item name="data" type="462c0819:PsiDirectoryNode" />
+              <item name="controller" type="462c0819:PsiDirectoryNode" />
             </path>
             <path>
               <item name="cinema" type="b2602c69:ProjectViewProjectNode" />
@@ -395,7 +429,7 @@
     <property name="RequestMappingsPanelWidth1" value="75" />
     <property name="WebServerToolWindowFactoryState" value="false" />
     <property name="aspect.path.notification.shown" value="true" />
-    <property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1555085589727" />
+    <property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1555090720074" />
     <property name="com.intellij.testIntegration.createTest.CreateTestDialog.defaultLibrary" value="JUnit4" />
     <property name="com.intellij.testIntegration.createTest.CreateTestDialog.defaultLibrarySuperClass.JUnit4" value="" />
     <property name="database.console.LAST_STATE" value="false" />
@@ -497,6 +531,7 @@
       <workItem from="1554967154163" duration="4136000" />
       <workItem from="1555049499640" duration="7967000" />
       <workItem from="1555075438175" duration="2603000" />
+      <workItem from="1555085752711" duration="4527000" />
     </task>
     <servers />
   </component>
@@ -533,7 +568,7 @@
     </history-entry>
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="24805000" />
+    <option name="totallyTimeSpent" value="29332000" />
   </component>
   <component name="TodoView">
     <todo-panel id="selected-file">
@@ -546,6 +581,7 @@
   </component>
   <component name="ToolWindowManager">
     <frame x="0" y="0" width="1280" height="800" extended-state="0" />
+    <editor active="true" />
     <layout>
       <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.21728595" />
       <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
@@ -558,7 +594,7 @@
       <window_info anchor="bottom" id="Problems" order="0" />
       <window_info anchor="bottom" id="Message" order="1" />
       <window_info anchor="bottom" id="Find" order="2" />
-      <window_info anchor="bottom" id="Run" order="3" weight="0.32054794" />
+      <window_info anchor="bottom" id="Run" order="3" visible="true" weight="0.32054794" />
       <window_info anchor="bottom" id="Debug" order="4" weight="0.4" />
       <window_info anchor="bottom" id="Cvs" order="5" weight="0.25" />
       <window_info anchor="bottom" id="Inspection" order="6" weight="0.4" />
@@ -671,9 +707,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/data/HallMapper.xml">
-      <provider selected="true" editor-type-id="text-editor" />
-    </entry>
     <entry file="jar://$USER_HOME$/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/src.zip!/java/util/Calendar.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="461">
@@ -681,48 +714,9 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/data/MovieMapper.xml">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="309">
-          <caret line="32" column="62" lean-forward="true" selection-start-line="28" selection-start-column="8" selection-end-line="32" selection-end-column="62" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/data/MovieMapper.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="135">
-          <caret line="14" column="17" selection-start-line="14" selection-start-column="17" selection-end-line="14" selection-end-column="17" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/vo/ScheduleVO.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="300">
-          <caret line="20" lean-forward="true" selection-start-line="20" selection-end-line="20" />
-          <folding>
-            <element signature="imports" expanded="true" />
-            <element signature="e#250#251#0" expanded="true" />
-            <element signature="e#277#278#0" expanded="true" />
-            <element signature="e#315#316#0" expanded="true" />
-            <element signature="e#347#348#0" expanded="true" />
-            <element signature="e#406#407#0" expanded="true" />
-            <element signature="e#445#446#0" expanded="true" />
-            <element signature="e#521#522#0" expanded="true" />
-            <element signature="e#577#578#0" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/.idea/dataSources.local.xml">
       <provider selected="true" editor-type-id="text-editor" />
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/bl/MovieServiceImpl.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="425">
-          <caret line="52" column="69" selection-start-line="52" selection-start-column="55" selection-end-line="52" selection-end-column="69" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/vo/MovieVO.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="120">
@@ -746,24 +740,76 @@
     <entry file="file://$PROJECT_DIR$/src/main/resources/application.yml">
       <provider selected="true" editor-type-id="text-editor" />
     </entry>
-    <entry file="das://56491842-8c26-426b-a604-02dce7d52d03/schema/cinema/table/movie">
-      <provider selected="true" editor-type-id="com.intellij.database.editor.DatabaseTableFileEditorProvider">
-        <state>
-          <filtering enabled="true" />
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/controller/MovieController.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="60">
+          <caret line="8" column="7" selection-start-line="8" selection-start-column="7" selection-end-line="8" selection-end-column="7" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/vo/ScheduleItem.java">
+    <entry file="file://$PROJECT_DIR$/src/test/java/com/example/cinema/bl/ScheduleServiceImplTest.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-6">
-          <caret line="8" column="13" selection-start-line="8" selection-start-column="13" selection-end-line="8" selection-end-column="13" />
+        <state relative-caret-position="300">
+          <caret line="25" column="1" selection-start-line="25" selection-start-column="1" selection-end-line="25" selection-end-column="1" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/vo/ScheduleSearchForm.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="154">
+          <caret line="12" column="26" selection-start-line="12" selection-start-column="20" selection-end-line="12" selection-end-column="26" />
           <folding>
-            <element signature="e#1027#1028#0" expanded="true" />
-            <element signature="e#1057#1058#0" expanded="true" />
+            <element signature="e#372#373#0" expanded="true" />
+            <element signature="e#401#402#0" expanded="true" />
+            <element signature="e#446#447#0" expanded="true" />
+            <element signature="e#482#483#0" expanded="true" />
+            <element signature="e#516#517#0" expanded="true" />
+            <element signature="e#548#549#0" expanded="true" />
+            <element signature="e#596#597#0" expanded="true" />
+            <element signature="e#638#639#0" expanded="true" />
+            <element signature="e#670#671#0" expanded="true" />
+            <element signature="e#700#701#0" expanded="true" />
+            <element signature="e#744#745#0" expanded="true" />
+            <element signature="e#782#783#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/data/MovieMapper.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="135">
+          <caret line="27" column="12" selection-start-line="27" selection-start-column="12" selection-end-line="27" selection-end-column="12" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/data/HallMapper.xml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="90">
+          <caret line="6" column="30" selection-start-line="6" selection-start-column="16" selection-end-line="6" selection-end-column="30" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/data/MovieMapper.xml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="480">
+          <caret line="32" column="62" lean-forward="true" selection-start-line="28" selection-start-column="8" selection-end-line="32" selection-end-column="62" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/data/HallMapper.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="300">
+          <caret line="23" column="36" selection-start-line="23" selection-start-column="36" selection-end-line="23" selection-end-column="36" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/bl/MovieServiceImpl.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-431">
+          <caret line="20" column="46" lean-forward="true" selection-start-line="20" selection-end-line="21" />
+        </state>
+      </provider>
+    </entry>
     <entry file="das://56491842-8c26-426b-a604-02dce7d52d03/schema/cinema/table/schedule">
       <provider selected="true" editor-type-id="com.intellij.database.editor.DatabaseTableFileEditorProvider">
         <state>
@@ -773,116 +819,117 @@
     </entry>
     <entry file="file://$APPLICATION_CONFIG_DIR$/consoles/db/56491842-8c26-426b-a604-02dce7d52d03/console.sql">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="45">
-          <caret line="3" column="25" selection-start-line="3" selection-start-column="13" selection-end-line="3" selection-end-column="25" />
+        <state relative-caret-position="135">
+          <caret line="9" selection-start-line="9" selection-end-line="12" selection-end-column="74" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/vo/ScheduleForm.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/controller/ScheduleController.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-55">
-          <caret line="8" column="13" selection-start-line="8" selection-start-column="13" selection-end-line="8" selection-end-column="13" />
+        <state relative-caret-position="315">
+          <caret line="21" column="38" selection-start-line="21" selection-start-column="38" selection-end-line="21" selection-end-column="38" />
           <folding>
-            <element signature="e#453#454#0" expanded="true" />
-            <element signature="e#482#483#0" expanded="true" />
-            <element signature="e#527#528#0" expanded="true" />
-            <element signature="e#563#564#0" expanded="true" />
-            <element signature="e#598#599#0" expanded="true" />
-            <element signature="e#628#629#0" expanded="true" />
-            <element signature="e#675#676#0" expanded="true" />
-            <element signature="e#713#714#0" expanded="true" />
-            <element signature="e#747#748#0" expanded="true" />
-            <element signature="e#779#780#0" expanded="true" />
-            <element signature="e#827#828#0" expanded="true" />
-            <element signature="e#869#870#0" expanded="true" />
-            <element signature="e#901#902#0" expanded="true" />
-            <element signature="e#931#932#0" expanded="true" />
-            <element signature="e#975#976#0" expanded="true" />
-            <element signature="e#1013#1014#0" expanded="true" />
-            <element signature="e#1044#1045#0" expanded="true" />
-            <element signature="e#1071#1072#0" expanded="true" />
-            <element signature="e#1111#1112#0" expanded="true" />
-            <element signature="e#1143#1144#0" expanded="true" />
+            <element signature="imports" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/controller/MovieController.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/data/ScheduleMapper.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-264">
-          <caret line="8" column="7" selection-start-line="8" selection-start-column="7" selection-end-line="8" selection-end-column="7" />
+        <state relative-caret-position="346">
+          <caret line="40" column="60" selection-start-line="40" selection-start-column="23" selection-end-line="40" selection-end-column="60" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/vo/ScheduleSearchForm.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/bl/ScheduleService.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="154">
-          <caret line="12" column="26" selection-start-line="12" selection-start-column="20" selection-end-line="12" selection-end-column="26" />
+        <state relative-caret-position="255">
+          <caret line="17" column="15" selection-start-line="17" selection-start-column="15" selection-end-line="17" selection-end-column="15" />
           <folding>
-            <element signature="e#372#373#0" expanded="true" />
-            <element signature="e#401#402#0" expanded="true" />
-            <element signature="e#446#447#0" expanded="true" />
-            <element signature="e#482#483#0" expanded="true" />
-            <element signature="e#516#517#0" expanded="true" />
-            <element signature="e#548#549#0" expanded="true" />
-            <element signature="e#596#597#0" expanded="true" />
-            <element signature="e#638#639#0" expanded="true" />
-            <element signature="e#670#671#0" expanded="true" />
-            <element signature="e#700#701#0" expanded="true" />
-            <element signature="e#744#745#0" expanded="true" />
-            <element signature="e#782#783#0" expanded="true" />
+            <element signature="imports" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/data/ScheduleMapper.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/bl/ScheduleServiceImpl.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="254">
-          <caret line="25" column="13" selection-start-line="25" selection-start-column="13" selection-end-line="25" selection-end-column="13" />
+        <state relative-caret-position="291">
+          <caret line="23" column="106" selection-start-line="23" selection-start-column="106" selection-end-line="23" selection-end-column="106" />
+          <folding>
+            <element signature="imports" expanded="true" />
+            <element signature="method#searchScheduleSevenDays#0;class#ScheduleServiceImpl#0" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/data/ScheduleMapper.xml">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="225">
-          <caret line="15" column="13" lean-forward="true" selection-start-line="15" selection-start-column="13" selection-end-line="15" selection-end-column="13" />
+    <entry file="das://56491842-8c26-426b-a604-02dce7d52d03/schema/cinema/table/movie">
+      <provider selected="true" editor-type-id="com.intellij.database.editor.DatabaseTableFileEditorProvider">
+        <state>
+          <filtering enabled="true" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/controller/ScheduleController.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/vo/ScheduleVO.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="319">
-          <caret line="27" column="47" selection-start-line="27" selection-start-column="47" selection-end-line="27" selection-end-column="47" />
+        <state relative-caret-position="240">
+          <caret line="20" lean-forward="true" selection-start-line="20" selection-end-line="20" />
           <folding>
             <element signature="imports" expanded="true" />
+            <element signature="e#406#407#0" expanded="true" />
+            <element signature="e#445#446#0" expanded="true" />
+            <element signature="e#521#522#0" expanded="true" />
+            <element signature="e#577#578#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/bl/ScheduleService.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/vo/ScheduleItem.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="316">
-          <caret line="26" column="15" selection-start-line="26" selection-start-column="15" selection-end-line="26" selection-end-column="15" />
+        <state relative-caret-position="9">
+          <caret line="8" column="13" selection-start-line="8" selection-start-column="13" selection-end-line="8" selection-end-column="13" />
           <folding>
-            <element signature="imports" expanded="true" />
+            <element signature="e#1027#1028#0" expanded="true" />
+            <element signature="e#1057#1058#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/bl/ScheduleServiceImpl.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/vo/ScheduleForm.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="313">
-          <caret line="41" column="83" lean-forward="true" selection-start-line="41" selection-start-column="83" selection-end-line="41" selection-end-column="83" />
+        <state relative-caret-position="72">
+          <caret line="8" column="25" selection-start-line="8" selection-start-column="13" selection-end-line="8" selection-end-column="25" />
           <folding>
-            <element signature="imports" expanded="true" />
+            <element signature="e#453#454#0" expanded="true" />
+            <element signature="e#482#483#0" expanded="true" />
+            <element signature="e#527#528#0" expanded="true" />
+            <element signature="e#563#564#0" expanded="true" />
+            <element signature="e#598#599#0" expanded="true" />
+            <element signature="e#628#629#0" expanded="true" />
+            <element signature="e#675#676#0" expanded="true" />
+            <element signature="e#713#714#0" expanded="true" />
+            <element signature="e#747#748#0" expanded="true" />
+            <element signature="e#779#780#0" expanded="true" />
+            <element signature="e#827#828#0" expanded="true" />
+            <element signature="e#869#870#0" expanded="true" />
+            <element signature="e#901#902#0" expanded="true" />
+            <element signature="e#931#932#0" expanded="true" />
+            <element signature="e#975#976#0" expanded="true" />
+            <element signature="e#1013#1014#0" expanded="true" />
+            <element signature="e#1044#1045#0" expanded="true" />
+            <element signature="e#1071#1072#0" expanded="true" />
+            <element signature="e#1111#1112#0" expanded="true" />
+            <element signature="e#1143#1144#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/test/java/com/example/cinema/bl/ScheduleServiceImplTest.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/example/cinema/data/ScheduleMapper.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="315">
-          <caret line="32" column="1" lean-forward="true" selection-start-line="32" selection-start-column="1" selection-end-line="32" selection-end-column="1" />
+        <state relative-caret-position="231">
+          <caret line="17" column="101" selection-start-line="17" selection-start-column="101" selection-end-line="17" selection-end-column="101" />
         </state>
       </provider>
     </entry>

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

@@ -2,7 +2,6 @@ package com.example.cinema.bl;
 
 import com.example.cinema.vo.ResponseVO;
 import com.example.cinema.vo.ScheduleForm;
-import com.example.cinema.vo.ScheduleSearchForm;
 
 import java.util.Date;
 

+ 51 - 0
src/main/java/com/example/cinema/bl/ScheduleServiceImpl.java

@@ -1,5 +1,7 @@
 package com.example.cinema.bl;
 
+import com.example.cinema.data.HallMapper;
+import com.example.cinema.data.MovieMapper;
 import com.example.cinema.data.ScheduleMapper;
 import com.example.cinema.vo.*;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,14 +20,62 @@ import java.util.List;
 @Service
 public class ScheduleServiceImpl implements ScheduleService {
     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 = "起止时间段不能少于电影时长或结束时间不能早于开始时间";
+    private static final String BEFORE_START_DATE_ERROR_MESSAGE = "排片时间不能早于电影上映时间";
+    private static final String MOVIE_NOT_EXIST_ERROR_MESSAGE = "电影不存在";
+    private static final String HALL_NOT_EXIST_ERROR_MESSAGE = "影厅不存在";
+
 
     @Autowired
     private ScheduleMapper scheduleMapper;
+    @Autowired
+    private MovieMapper movieMapper;
+    @Autowired
+    private HallMapper hallMapper;
 
     @Override
     public ResponseVO addSchedule(ScheduleForm scheduleForm) {
         try {
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
 
+            // 处理排片跨天错误
+            if(!simpleDateFormat.format(scheduleForm.getStartTime()).equals(simpleDateFormat.format(scheduleForm.getEndTime()))){
+                return ResponseVO.buildFailure(CROSS_DAYS_ERROR_MESSAGE);
+            }
+
+            //检查影厅是否存在
+            if(hallMapper.selectHallById(scheduleForm.getHallId()) == null){
+                return ResponseVO.buildFailure(HALL_NOT_EXIST_ERROR_MESSAGE);
+            }
+
+            // 检查电影是否存在
+            MovieVO movieVO = movieMapper.selectMovieById(scheduleForm.getMovieId());
+            if(movieVO == null){
+                return ResponseVO.buildFailure(MOVIE_NOT_EXIST_ERROR_MESSAGE);
+            }
+
+            // 检查电影的上映时间是否和排片时间匹配
+            if(scheduleForm.getStartTime().before(movieVO.getStartDate())){
+                return ResponseVO.buildFailure(BEFORE_START_DATE_ERROR_MESSAGE);
+            }
+
+            // 校验排片时间段合法性
+            int minutes = movieVO.getLength();
+            Calendar calendarStartTime = Calendar.getInstance();
+            calendarStartTime.setTime(scheduleForm.getStartTime());
+            calendarStartTime.add(Calendar.MINUTE, minutes);
+            Date endTime = calendarStartTime.getTime();
+            if(scheduleForm.getEndTime().before(endTime)){
+                return ResponseVO.buildFailure(DATE_INTERVAL_LESS_THAN_LENGTH_ERROR_MESSAGE);
+            }
+
+            // 检查该排片时间段是否和其他排片信息冲突
+            if(0 != scheduleMapper.selectScheduleConflictByHallIdAndTime(scheduleForm.getHallId(), scheduleForm.getStartTime(), scheduleForm.getEndTime()).size()){
+                return ResponseVO.buildFailure(TIME_CONFLICT_ERROR_MESSAGE);
+            }
+
+            //插入排片信息
             scheduleMapper.insertOneSchedule(scheduleForm);
             return ResponseVO.buildSuccess();
         } catch (Exception e) {
@@ -72,4 +122,5 @@ public class ScheduleServiceImpl implements ScheduleService {
             return ResponseVO.buildFailure("失败");
         }
     }
+
 }

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

@@ -3,7 +3,6 @@ package com.example.cinema.controller;
 import com.example.cinema.bl.ScheduleService;
 import com.example.cinema.vo.ResponseVO;
 import com.example.cinema.vo.ScheduleForm;
-import com.example.cinema.vo.ScheduleSearchForm;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -25,6 +24,7 @@ public class ScheduleController {
 
     @RequestMapping(value = "/schedule/search", method = RequestMethod.GET)
     public ResponseVO searchSchedule(@RequestParam int hallId, @RequestParam Date startDate){
+        //这里传递startDate参数时,前端传的是用/分隔的时间,例如startDate=2019/04/12
         return scheduleService.searchScheduleSevenDays(hallId, startDate);
     }
 

+ 6 - 0
src/main/java/com/example/cinema/data/HallMapper.java

@@ -16,4 +16,10 @@ public interface HallMapper {
      * @return
      */
     List<HallVO> selectAllHall();
+
+    /**
+     * 根据id查询影厅
+     * @return
+     */
+    HallVO selectHallById(int hallId);
 }

+ 3 - 0
src/main/java/com/example/cinema/data/HallMapper.xml

@@ -4,6 +4,9 @@
     <select id="selectAllHall" resultMap="Hall">
         select * from hall
     </select>
+    <select id="selectHallById" resultMap="Hall">
+        select * from hall where id = #{hallId}
+    </select>
 
     <resultMap id="Hall" type="com.example.cinema.vo.HallVO">
     </resultMap>

+ 11 - 2
src/main/java/com/example/cinema/data/ScheduleMapper.java

@@ -2,7 +2,6 @@ package com.example.cinema.data;
 
 import com.example.cinema.vo.ScheduleForm;
 import com.example.cinema.vo.ScheduleItem;
-import com.example.cinema.vo.ScheduleSearchForm;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -23,11 +22,21 @@ public interface ScheduleMapper {
     int insertOneSchedule(ScheduleForm scheduleForm);
 
     /**
-     * 查询排片信息
+     * 查询从startDate开始到endDate为止的某hall的排片信息
      * @param hallId
      * @param startDate
      * @param endDate
      * @return
      */
     List<ScheduleItem> selectSchedule(@Param("hallId") int hallId, @Param("startDate") Date startDate, @Param("endDate") Date endDate);
+
+
+    /**
+     * 查询起止时间是否有冲突
+     * @param hallId
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    List<ScheduleItem> selectScheduleConflictByHallIdAndTime(@Param("hallId") int hallId, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
 }

+ 12 - 4
src/main/java/com/example/cinema/data/ScheduleMapper.xml

@@ -9,10 +9,18 @@
 
     <select id="selectSchedule" resultMap="ScheduleItem">
         select * from
-        (select * from schedule where hall_id = #{hallId} and start_time between #{startDate} and #{endDate}) 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
+          (select * from schedule where hall_id = #{hallId} and start_time between #{startDate} and #{endDate}) 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
+    </select>
+
+    <select id="selectScheduleConflictByHallIdAndTime" resultType="com.example.cinema.vo.ScheduleForm">
+      select * from schedule
+        where hall_id = #{hallId}
+          and (#{startTime} between start_time and end_time)
+          or (#{endTime} between start_time and end_time)
+          or (start_time between #{startTime} and #{endTime})
     </select>
 
     <resultMap id="ScheduleItem" type="com.example.cinema.vo.ScheduleItem">

+ 0 - 47
src/main/java/com/example/cinema/vo/ScheduleSearchForm.java

@@ -1,47 +0,0 @@
-package com.example.cinema.vo;
-
-import java.util.Date;
-
-/**
- * @author fjj
- * @date 2019/4/12 2:21 PM
- */
-public class ScheduleSearchForm {
-    /**
-     * 影厅id
-     */
-    private Integer hallId;
-    /**
-     * 查询排片计划的起始日期
-     */
-    private Date startDate;
-
-    /**
-     * 查询排片计划的结束日期(当前默认结束日期和起始时间相差7天)
-     */
-    private Date endDate;
-
-    public Integer getHallId() {
-        return hallId;
-    }
-
-    public void setHallId(Integer hallId) {
-        this.hallId = hallId;
-    }
-
-    public Date getStartDate() {
-        return startDate;
-    }
-
-    public void setStartDate(Date startDate) {
-        this.startDate = startDate;
-    }
-
-    public Date getEndDate() {
-        return endDate;
-    }
-
-    public void setEndDate(Date endDate) {
-        this.endDate = endDate;
-    }
-}

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

@@ -1,17 +1,10 @@
 package com.example.cinema.bl;
-import java.util.Date;
 
-import com.example.cinema.CinemaApplication;
-import com.example.cinema.vo.ScheduleSearchForm;
-import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
-import static org.junit.Assert.*;
-
 /**
  * @author fjj
  * @date 2019/4/12 3:21 PM

二進制
target/classes/com/example/cinema/bl/ScheduleServiceImpl.class


二進制
target/classes/com/example/cinema/controller/ScheduleController.class


二進制
target/classes/com/example/cinema/data/HallMapper.class


+ 3 - 0
target/classes/com/example/cinema/data/HallMapper.xml

@@ -4,6 +4,9 @@
     <select id="selectAllHall" resultMap="Hall">
         select * from hall
     </select>
+    <select id="selectHallById" resultMap="Hall">
+        select * from hall where id = #{hallId}
+    </select>
 
     <resultMap id="Hall" type="com.example.cinema.vo.HallVO">
     </resultMap>

二進制
target/classes/com/example/cinema/data/ScheduleMapper.class


+ 12 - 4
target/classes/com/example/cinema/data/ScheduleMapper.xml

@@ -9,10 +9,18 @@
 
     <select id="selectSchedule" resultMap="ScheduleItem">
         select * from
-        (select * from schedule where hall_id = #{hallId} and start_time between #{startDate} and #{endDate}) 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
+          (select * from schedule where hall_id = #{hallId} and start_time between #{startDate} and #{endDate}) 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
+    </select>
+
+    <select id="selectScheduleConflictByHallIdAndTime" resultType="com.example.cinema.vo.ScheduleForm">
+      select * from schedule
+        where hall_id = #{hallId}
+          and (#{startTime} between start_time and end_time)
+          or (#{endTime} between start_time and end_time)
+          or (start_time between #{startTime} and #{endTime})
     </select>
 
     <resultMap id="ScheduleItem" type="com.example.cinema.vo.ScheduleItem">