Sfoglia il codice sorgente

部门权限求改

溪鸭夏 2 anni fa
parent
commit
51e5c1c898

+ 183 - 189
.idea/workspace.xml

@@ -2,8 +2,13 @@
 <project version="4">
   <component name="ChangeListManager">
     <list default="true" id="981dbcd1-a700-4015-8567-2ccff8e76f0a" name="Default Changelist" comment="">
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/api/SmartUserControllerAPI.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/api/SmartUserControllerAPI.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/controller/SmartDepartmentController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/controller/SmartDepartmentController.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/java/com/template/controller/SmartUserController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/controller/SmartUserController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/model/request/updateSmartUserRequest.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/model/request/updateSmartUserRequest.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/services/SmartAuthorityService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/services/SmartAuthorityService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/services/SmartUserService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/services/SmartUserService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/services/impl/SmartUserServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/services/impl/SmartUserServiceImpl.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/mybatis_plus-0.0.1-SNAPSHOT.jar.original" beforeDir="false" afterPath="$PROJECT_DIR$/target/mybatis_plus-0.0.1-SNAPSHOT.jar.original" afterDir="false" />
     </list>
     <ignored path="$PROJECT_DIR$/classes/" />
     <ignored path="$PROJECT_DIR$/target/" />
@@ -22,38 +27,22 @@
       <file pinned="false" current-in-tab="true">
         <entry file="file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartUserController.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="269">
-              <caret line="1532" column="48" selection-start-line="1532" selection-start-column="48" selection-end-line="1532" selection-end-column="48" />
+            <state relative-caret-position="256">
+              <caret line="3042" column="39" lean-forward="true" selection-start-line="3042" selection-start-column="39" selection-end-line="3042" selection-end-column="39" />
               <folding>
                 <element signature="imports" expanded="true" />
+                <element signature="e#19688#23774#0" />
+                <element signature="e#23780#25249#0" />
               </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/request/updateSmartUserRequest.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="609">
-              <caret line="75" column="28" selection-start-line="75" selection-start-column="19" selection-end-line="75" selection-end-column="28" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/src/main/java/com/template/api/SmartUserControllerAPI.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="62">
-              <caret line="70" column="46" selection-start-line="70" selection-start-column="26" selection-end-line="70" selection-end-column="46" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/SmartUserService.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="1235">
-              <caret line="71" column="8" selection-start-line="71" selection-start-column="8" selection-end-line="71" selection-end-column="8" />
+            <state relative-caret-position="430">
+              <caret line="102" column="133" selection-start-line="102" selection-start-column="133" selection-end-line="102" selection-end-column="133" />
             </state>
           </provider>
         </entry>
@@ -62,16 +51,7 @@
         <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/impl/SmartUserServiceImpl.java">
           <provider selected="true" editor-type-id="text-editor">
             <state relative-caret-position="269">
-              <caret line="191" column="44" selection-start-line="191" selection-start-column="27" selection-end-line="191" selection-end-column="44" />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/enumModel/eSeewoUserType.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="207">
-              <caret line="9" column="26" selection-start-line="9" selection-start-column="12" selection-end-line="9" selection-end-column="26" />
+              <caret line="58" column="108" selection-start-line="58" selection-start-column="95" selection-end-line="58" selection-end-column="108" />
             </state>
           </provider>
         </entry>
@@ -80,25 +60,6 @@
   </component>
   <component name="FindInProjectRecents">
     <findStrings>
-      <find>queryPageSmartUser</find>
-      <find>students</find>
-      <find>deleteSmartUserById</find>
-      <find>downloadUpdateUserExcel</find>
-      <find>importExcelUpdateUsers</find>
-      <find>新增希沃</find>
-      <find>photo</find>
-      <find>photoUrl</find>
-      <find>UserPhoto</find>
-      <find>sing</find>
-      <find>getAffiliateList</find>
-      <find>JSON</find>
-      <find>JSON.</find>
-      <find>.FAST</find>
-      <find>入参</find>
-      <find>ThirdSavePhotoBatchQueryBuilder</find>
-      <find>insertSmartUserPhoto</find>
-      <find>希沃</find>
-      <find>student</find>
       <find>result.getResponseBody().getResult()</find>
       <find>result.getResponseBody().getResult()</find>
       <find>100</find>
@@ -110,6 +71,25 @@
       <find>readXls</find>
       <find>CommonResult.fail</find>
       <find>update</find>
+      <find>insertSmartUserPhoto</find>
+      <find>grades</find>
+      <find>student</find>
+      <find>eFileType.Xlsx.getValue()</find>
+      <find>useBs</find>
+      <find>updateSmartUserById</find>
+      <find>bsUpdateStudent</find>
+      <find>queryDepartmentTree</find>
+      <find>根据子级</find>
+      <find>hasTex</find>
+      <find>.split(&quot;,&quot;)</find>
+      <find>newViewAthors</find>
+      <find>QueryDepartmentTreeRecords</find>
+      <find>userhead</find>
+      <find>user</find>
+      <find>auth</find>
+      <find>querySmartUserPages</find>
+      <find>page</find>
+      <find>childDepartmentIds</find>
     </findStrings>
     <replaceStrings>
       <replace />
@@ -140,15 +120,18 @@
         <option value="$PROJECT_DIR$/src/main/java/com/template/model/request/insertSmartUserRequest.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/template/services/SmartDepartmentService.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/template/services/impl/SmartDepartmentServiceImpl.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/template/controller/SmartDepartmentController.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/template/model/vo/seewoBatchStudentVo.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/template/model/seewo/PhotoServiceSavePhotosRequest.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/template/controller/ScheduleController.java" />
         <option value="$PROJECT_DIR$/src/main/resources/application-prod.yml" />
-        <option value="$PROJECT_DIR$/src/main/java/com/template/api/SmartUserControllerAPI.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/template/model/enumModel/eSeewoUserType.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/template/model/request/updateSmartUserRequest.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/template/services/SmartUserService.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/template/services/impl/SmartUserServiceImpl.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/template/controller/SmartDepartmentController.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/template/services/SmartAuthorityService.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/template/controller/SmartUserController.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/template/api/SmartUserControllerAPI.java" />
       </list>
     </option>
   </component>
@@ -180,9 +163,8 @@
   <component name="MavenRunner">
     <option name="skipTests" value="true" />
   </component>
-  <component name="ProjectFrameBounds" extendedState="6">
-    <option name="x" value="-8" />
-    <option name="y" value="-8" />
+  <component name="ProjectFrameBounds" extendedState="1">
+    <option name="x" value="-7" />
     <option name="width" value="974" />
     <option name="height" value="1039" />
   </component>
@@ -379,12 +361,12 @@
       <option name="number" value="Default" />
       <option name="presentableId" value="Default" />
       <updated>1712903307839</updated>
-      <workItem from="1712903309092" duration="76946000" />
+      <workItem from="1712903309092" duration="91150000" />
     </task>
     <servers />
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="76946000" />
+    <option name="totallyTimeSpent" value="91150000" />
   </component>
   <component name="ToolWindowManager">
     <frame x="-8" y="-8" width="1936" height="1048" extended-state="6" />
@@ -397,7 +379,7 @@
       <window_info id="Favorites" side_tool="true" />
       <window_info id="Designer" />
       <window_info id="Web" side_tool="true" />
-      <window_info content_ui="combo" id="Project" order="0" weight="0.15085287" />
+      <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.122068234" />
       <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
       <window_info anchor="bottom" id="Spring" weight="0.32932165" />
       <window_info anchor="bottom" id="Event Log" side_tool="true" />
@@ -411,12 +393,12 @@
       <window_info anchor="bottom" id="JRebel Console" side_tool="true" />
       <window_info anchor="bottom" id="Message" order="0" />
       <window_info anchor="bottom" id="Find" order="1" weight="0.32932165" />
-      <window_info anchor="bottom" id="Run" order="2" weight="0.45185995" />
-      <window_info anchor="bottom" id="Debug" order="3" weight="0.6291028" />
+      <window_info anchor="bottom" id="Run" order="2" weight="0.45076588" />
+      <window_info anchor="bottom" id="Debug" order="3" weight="0.30306345" />
       <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
       <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
       <window_info anchor="bottom" id="TODO" order="6" />
-      <window_info anchor="right" id="Maven" weight="0.9671773" />
+      <window_info anchor="right" id="Maven" weight="0.84463894" />
       <window_info anchor="right" id="Palette" />
       <window_info anchor="right" id="Capture Analysis" />
       <window_info anchor="right" id="Database" />
@@ -425,7 +407,7 @@
       <window_info anchor="right" id="JRebel Setup Guide" side_tool="true" />
       <window_info anchor="right" id="Bean Validation" />
       <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
-      <window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
+      <window_info anchor="right" id="Ant Build" order="1" weight="0.24945295" />
       <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
     </layout>
   </component>
@@ -436,112 +418,73 @@
     <breakpoint-manager>
       <breakpoints>
         <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/src/main/java/com/template/common/utils/AesUtils.java</url>
-          <line>57</line>
+          <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartUserController.java</url>
+          <line>1385</line>
+          <properties />
+          <option name="timeStamp" value="14" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartDepartmentController.java</url>
+          <line>83</line>
           <properties />
-          <option name="timeStamp" value="9" />
+          <option name="timeStamp" value="58" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/src/main/java/com/template/common/utils/AesUtils.java</url>
-          <line>102</line>
+          <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartUserController.java</url>
+          <line>2815</line>
           <properties />
-          <option name="timeStamp" value="10" />
+          <option name="timeStamp" value="66" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/src/main/java/com/template/common/utils/AesUtils.java</url>
-          <line>138</line>
+          <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/ScheduleController.java</url>
+          <line>115</line>
           <properties />
-          <option name="timeStamp" value="11" />
+          <option name="timeStamp" value="88" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/src/main/java/com/template/common/utils/AesUtils.java</url>
-          <line>153</line>
+          <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/ScheduleController.java</url>
+          <line>120</line>
           <properties />
-          <option name="timeStamp" value="12" />
+          <option name="timeStamp" value="89" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
           <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartUserController.java</url>
-          <line>1240</line>
+          <line>2775</line>
           <properties />
-          <option name="timeStamp" value="14" />
+          <option name="timeStamp" value="103" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartDepartmentController.java</url>
-          <line>81</line>
+          <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartUserController.java</url>
+          <line>2778</line>
           <properties />
-          <option name="timeStamp" value="58" />
+          <option name="timeStamp" value="104" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
           <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartUserController.java</url>
-          <line>2689</line>
+          <line>2770</line>
           <properties />
-          <option name="timeStamp" value="66" />
+          <option name="timeStamp" value="105" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/ScheduleController.java</url>
-          <line>115</line>
+          <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartDepartmentController.java</url>
+          <line>314</line>
           <properties />
-          <option name="timeStamp" value="88" />
+          <option name="timeStamp" value="113" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/ScheduleController.java</url>
-          <line>120</line>
+          <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartDepartmentController.java</url>
+          <line>303</line>
           <properties />
-          <option name="timeStamp" value="89" />
+          <option name="timeStamp" value="117" />
         </line-breakpoint>
       </breakpoints>
     </breakpoint-manager>
   </component>
+  <component name="antWorkspaceConfiguration">
+    <option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
+    <option name="FILTER_TARGETS" value="false" />
+  </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/common/utils/AesUtils.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="307">
-          <caret line="158" selection-start-line="158" selection-end-line="158" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartMenuController.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-326">
-          <caret line="29" column="13" selection-start-line="29" selection-start-column="13" selection-end-line="29" selection-end-column="13" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/enumModel/eExamType.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="194">
-          <caret line="39" column="12" selection-start-line="39" selection-start-column="12" selection-end-line="39" selection-end-column="12" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="jar://C:/Program Files/Java/jdk1.8.0_181/src.zip!/java/time/Year.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="194">
-          <caret line="134" column="19" selection-start-line="134" selection-start-column="19" selection-end-line="134" selection-end-column="19" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/common/utils/ClassYear.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="253">
-          <caret line="24" column="18" selection-start-line="24" selection-start-column="18" selection-end-line="24" selection-end-column="18" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/impl/SmartGradeServiceImpl.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="169">
-          <caret line="37" column="42" selection-start-line="37" selection-start-column="28" selection-end-line="37" selection-end-column="42" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/api/SmartDepartmentControllerAPI.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="285">
-          <caret line="42" column="95" lean-forward="true" selection-start-line="42" selection-start-column="95" selection-end-line="42" selection-end-column="95" />
-        </state>
-      </provider>
-    </entry>
     <entry file="jar://C:/Program Files/Java/jdk1.8.0_181/src.zip!/java/lang/String.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="295">
@@ -598,13 +541,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/pojo/SmartUser.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="295">
-          <caret line="84" column="19" selection-start-line="84" selection-start-column="19" selection-end-line="84" selection-end-column="19" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/impl/SmartDepartmentServiceImpl.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="151">
@@ -650,13 +586,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartDepartmentController.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="412">
-          <caret line="82" column="21" selection-start-line="82" selection-start-column="21" selection-end-line="82" selection-end-column="21" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/seewo/StudentServiceBatchSaveClassStudentsResult.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="310">
@@ -714,16 +643,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/resources/application.yml">
-      <provider selected="true" editor-type-id="text-editor" />
-    </entry>
-    <entry file="jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.3.1/spring-core-5.3.1-sources.jar!/org/springframework/cglib/proxy/MethodProxy.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="108">
-          <caret line="216" column="21" lean-forward="true" selection-start-line="216" selection-start-column="21" selection-end-line="216" selection-end-column="21" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/template/common/utils/TimeExchange.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="222">
@@ -772,13 +691,6 @@
         <state relative-caret-position="-1794" />
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/resources/application-prod.yml">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="585">
-          <caret line="90" column="11" selection-start-line="90" selection-start-column="11" selection-end-line="90" selection-end-column="11" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/template/controller/ScheduleController.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="134">
@@ -818,56 +730,138 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/impl/SmartUserServiceImpl.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/vo/XwBodyVo.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="269">
-          <caret line="191" column="44" selection-start-line="191" selection-start-column="27" selection-end-line="191" selection-end-column="44" />
+        <state relative-caret-position="253">
+          <caret line="11" column="13" selection-start-line="11" selection-start-column="13" selection-end-line="11" selection-end-column="13" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="jar://$MAVEN_REPOSITORY$/open/platform/platform/1.0/platform-1.0.jar!/com/seewo/open/sdk/OpenApiResult.class">
+      <provider selected="true" editor-type-id="text-editor">
+        <state>
+          <folding>
+            <element signature="e#0#3845#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/pojo/SmartUser.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="287">
+          <caret line="63" column="19" selection-start-line="63" selection-start-column="19" selection-end-line="63" selection-end-column="19" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/request/updateSmartUserRequest.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="609">
+          <caret line="75" column="28" selection-start-line="75" selection-start-column="19" selection-end-line="75" selection-end-column="28" />
         </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/SmartUserService.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1235">
-          <caret line="71" column="8" selection-start-line="71" selection-start-column="8" selection-end-line="71" selection-end-column="8" />
+        <state relative-caret-position="670">
+          <caret line="96" column="64" selection-start-line="96" selection-start-column="64" selection-end-line="96" selection-end-column="64" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/api/SmartUserControllerAPI.java">
+    <entry file="file://$PROJECT_DIR$/src/main/resources/application.yml">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/resources/application-prod.yml">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="62">
-          <caret line="70" column="46" selection-start-line="70" selection-start-column="26" selection-end-line="70" selection-end-column="46" />
+        <state relative-caret-position="209">
+          <caret line="15" column="205" selection-start-line="15" selection-start-column="181" selection-end-line="15" selection-end-column="205" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/vo/XwBodyVo.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/common/utils/AesUtils.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="253">
-          <caret line="11" column="13" selection-start-line="11" selection-start-column="13" selection-end-line="11" selection-end-column="13" />
+        <state relative-caret-position="146">
+          <caret line="140" selection-start-line="140" selection-end-line="140" />
         </state>
       </provider>
     </entry>
-    <entry file="jar://$MAVEN_REPOSITORY$/open/platform/platform/1.0/platform-1.0.jar!/com/seewo/open/sdk/OpenApiResult.class">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/core/JwtAuthenticationInterceptor.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state>
-          <folding>
-            <element signature="e#0#3845#0" expanded="true" />
-          </folding>
+        <state relative-caret-position="202">
+          <caret line="75" column="32" selection-start-line="75" selection-start-column="13" selection-end-line="75" selection-end-column="32" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/request/updateSmartUserRequest.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartIdentityController.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="363">
+          <caret line="129" column="36" selection-start-line="129" selection-start-column="36" selection-end-line="129" selection-end-column="36" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.3.1/spring-core-5.3.1-sources.jar!/org/springframework/cglib/proxy/MethodProxy.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="200">
+          <caret line="220" selection-start-line="220" selection-end-line="220" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.3.1/spring-aop-5.3.1-sources.jar!/org/springframework/aop/framework/CglibAopProxy.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="61">
+          <caret line="745" column="17" selection-start-line="745" selection-start-column="17" selection-end-line="745" selection-end-column="17" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/api/SmartDepartmentControllerAPI.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="609">
-          <caret line="75" column="28" selection-start-line="75" selection-start-column="19" selection-end-line="75" selection-end-column="28" />
+          <caret line="42" column="93" selection-start-line="42" selection-start-column="50" selection-end-line="42" selection-end-column="93" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartUserController.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/SmartAuthorityService.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="529">
+          <caret line="29" column="4" selection-start-line="29" selection-start-column="4" selection-end-line="29" selection-end-column="4" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartDepartmentController.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="315">
+          <caret line="266" column="42" selection-start-line="261" selection-start-column="8" selection-end-line="273" selection-end-column="9" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/impl/SmartUserServiceImpl.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="269">
-          <caret line="1532" column="48" selection-start-line="1532" selection-start-column="48" selection-end-line="1532" selection-end-column="48" />
+          <caret line="58" column="108" selection-start-line="58" selection-start-column="95" selection-end-line="58" selection-end-column="108" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="jar://C:/Program Files/Java/jdk1.8.0_181/src.zip!/java/util/stream/Stream.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="295">
+          <caret line="1073" column="32" selection-start-line="1073" selection-start-column="32" selection-end-line="1073" selection-end-column="32" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/api/SmartUserControllerAPI.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="430">
+          <caret line="102" column="133" selection-start-line="102" selection-start-column="133" selection-end-line="102" selection-end-column="133" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartUserController.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="256">
+          <caret line="3042" column="39" lean-forward="true" selection-start-line="3042" selection-start-column="39" selection-end-line="3042" selection-end-column="39" />
           <folding>
             <element signature="imports" expanded="true" />
+            <element signature="e#19688#23774#0" />
+            <element signature="e#23780#25249#0" />
           </folding>
         </state>
       </provider>

+ 12 - 2
src/main/java/com/template/api/SmartUserControllerAPI.java

@@ -39,6 +39,16 @@ public interface SmartUserControllerAPI {
     CommonResult changeDepartment(@Validated @RequestBody changeDepartmentRequest cdr, BindingResult bindingResult);
 
     /**
+     * 导入用户的百胜编号
+     *
+     * @param excelFile excel文件
+     * @return
+     */
+    @PostMapping(value = "importExcelUserBsno")
+    @ApiOperation(value = "导入用户的百胜编号", notes = "导入用户的百胜编号", httpMethod = "POST")
+    CommonResult importExcelUserBsno(@RequestParam("file") MultipartFile excelFile) throws IOException;
+
+    /**
      * 批量导入用户信息
      *
      * @param excelFile excel文件
@@ -83,14 +93,14 @@ public interface SmartUserControllerAPI {
 
     @GetMapping(value = "/queryPageSmartUser")
     @ApiOperation(value = "用户分页数据", notes = "用户分页数据", httpMethod = "GET")
-    CommonResult queryPageSmartUser(@RequestParam int currentPage, @RequestParam int pageCount, Integer departmentId, String name);
+    CommonResult queryPageSmartUser(@RequestParam int currentPage, @RequestParam int pageCount, Integer departmentId, String name, @RequestHeader("user_head") String userhead);
 
     /**
      * 导出用户数据
      */
     @GetMapping(value = "smartUserExport")
     @ApiOperation(value = "导出用户数据", notes = "导出用户数据", httpMethod = "GET")
-    void smartUserExport(HttpServletResponse response, Integer departmentId, String name);
+    void smartUserExport(HttpServletResponse response, Integer departmentId, String name, @RequestHeader("user_head") String userhead);
 
     @PostMapping(value = "/deleteSmartUserByIdOld")
     @ApiOperation(value = "根据ID删除指定用户", notes = "根据ID删除指定用户", httpMethod = "POST")

+ 58 - 13
src/main/java/com/template/controller/SmartDepartmentController.java

@@ -22,6 +22,7 @@ import com.template.services.SmartAuthorityService;
 import com.template.services.SmartDepartmentService;
 import com.template.services.SmartUserService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
 import org.springframework.validation.BindingResult;
 
 import org.springframework.web.bind.annotation.RestController;
@@ -33,6 +34,7 @@ import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 import static com.template.common.utils.AesTestOne.decrypt;
@@ -81,7 +83,7 @@ public class SmartDepartmentController implements SmartDepartmentControllerAPI {
         //百胜不允许部门名称重复
         int exist = smartDepartmentService.existDataByName(smartDepartment.getName());
         if (exist > 0) {
-            return CommonResult.fail("同级部门中,"+smartDepartment.getName() + "部门名称数据已存在,请勿重复添加!");
+            return CommonResult.fail("同级部门中," + smartDepartment.getName() + "部门名称数据已存在,请勿重复添加!");
         }
 
         SmartDepartment sd = new SmartDepartment();
@@ -253,37 +255,68 @@ public class SmartDepartmentController implements SmartDepartmentControllerAPI {
             return CommonResult.fail("当前用户权限不足,无法查看对应部门数据");
         }
 
-        if(authorities.size() <= 0){
+        if (authorities.size() <= 0) {
             return CommonResult.fail("当前用户权限不足,无法查看对应部门数据");
         }
 
         List<String> viewAuthors = new ArrayList<>();//部门查看权限
         List<String> manageAuthors = new ArrayList<>();//部门管理权限
         for (SmartAuthority author : authorities) {
-            List<String> views = Arrays.asList(author.getDepartmentView().split(","));
+            List<String> views = StringUtils.hasText(author.getDepartmentView().trim()) ? Arrays.asList(author.getDepartmentView().trim().split(",")) : new ArrayList<>();
             if (views != null && views.size() > 0) {
                 viewAuthors.addAll(views);
             }
 
-            List<String> manages = Arrays.asList(author.getDepartmentManage().split(","));
+            List<String> manages = StringUtils.hasText(author.getDepartmentManage().trim()) ? Arrays.asList(author.getDepartmentManage().trim().split(",")) : new ArrayList<>();
             if (manages != null && manages.size() > 0) {
                 manageAuthors.addAll(manages);
             }
         }
 
-        viewAuthors = (viewAuthors != null && viewAuthors.size() > 0) ? viewAuthors.stream().distinct().collect(Collectors.toList()) : viewAuthors;
-        manageAuthors = (manageAuthors != null && manageAuthors.size() > 0) ? manageAuthors.stream().distinct().collect(Collectors.toList()) : manageAuthors;
+        List<SmartDepartment> result = smartDepartmentService.getSmartsByName(name);
+        //region 往上查找上一级
+        List<String> newViewAthors = new ArrayList<>();
+        List<String> newManageAthors = new ArrayList<>();
+        if (!viewAuthors.contains("1")) {
+            //region
+            for (String view : viewAuthors) {
+                Optional<SmartDepartment> department = result.stream().filter(e -> e.getId().equals(Integer.valueOf(view))).findFirst();
+                if (department != null && department.isPresent()) {
+                    newViewAthors.add(String.valueOf(department.get().getParentId()));
+                    newViewAthors.addAll(queryAllParentId(department.get().getParentId(), result));
+                }
+            }
+            //endregion
+        }
+        newViewAthors.addAll(viewAuthors);
+
+        if (!manageAuthors.contains("1")) {
+            //region
+            for (String view : manageAuthors) {
+                Optional<SmartDepartment> department = result.stream().filter(e -> e.getId().equals(Integer.valueOf(view))).findFirst();
+                if (department != null && department.isPresent()) {
+                    newManageAthors.add(String.valueOf(department.get().getParentId()));
+                    newManageAthors.addAll(queryAllParentId(department.get().getParentId(), result));
+                }
+            }
+            //endregion
+        }
+        newManageAthors.addAll(manageAuthors);
+        //endregion
+
+        newViewAthors = (newViewAthors != null && newViewAthors.size() > 0) ? newViewAthors.stream().distinct().collect(Collectors.toList()) : newViewAthors;
+        newManageAthors = (newManageAthors != null && newManageAthors.size() > 0) ? newManageAthors.stream().distinct().collect(Collectors.toList()) : newManageAthors;
         //endregion
 
-        List<SmartDepartment> result = smartDepartmentService.getSmartsByName(name);
 
         List<SmartDepartment> zeroResult = result.stream().filter(e -> e.getParentId().intValue() == 0).collect(Collectors.toList());
         List<DepartmentTreeVo> departments = new ArrayList<>();
         if (ObjectUtils.isEmpty(name)) {
             for (SmartDepartment data : zeroResult) {
 
-                long existViewData = viewAuthors == null ? 0 : viewAuthors.stream().filter(e -> e.equals(data.getId().toString())).count();
-                long existManageData = manageAuthors == null ? 0 : manageAuthors.stream().filter(e -> e.equals(data.getId().toString())).count();
+
+                long existViewData = newViewAthors == null ? 0 : newViewAthors.stream().filter(e -> e.equals(data.getId().toString())).count();
+                long existManageData = newManageAthors == null ? 0 : newManageAthors.stream().filter(e -> e.equals(data.getId().toString())).count();
                 if (existViewData <= 0 && existManageData <= 0 && data.getParentId().intValue() != 0) {
                     continue;
                 }
@@ -295,14 +328,14 @@ public class SmartDepartmentController implements SmartDepartmentControllerAPI {
                         .isManage(existManageData > 0 ? 1 : 0)
                         .build();
 
-                List<DepartmentTreeVo> departmentTrees = QueryDepartmentTreeRecords(newData.getId(), result, viewAuthors, manageAuthors);
+                List<DepartmentTreeVo> departmentTrees = QueryDepartmentTreeRecords(newData.getId(), result, newViewAthors, newManageAthors);
                 newData.setChildren(departmentTrees);
                 departments.add(newData);
             }
         } else {
             for (SmartDepartment data : result) {
-                long existViewData = viewAuthors == null ? 0 : viewAuthors.stream().filter(e -> e.equals(data.getId().toString())).count();
-                long existManageData = manageAuthors == null ? 0 : manageAuthors.stream().filter(e -> e.equals(data.getId().toString())).count();
+                long existViewData = newViewAthors == null ? 0 : newViewAthors.stream().filter(e -> e.equals(data.getId().toString())).count();
+                long existManageData = newManageAthors == null ? 0 : newManageAthors.stream().filter(e -> e.equals(data.getId().toString())).count();
                 if (existViewData <= 0 && existManageData <= 0) {
                     continue;
                 }
@@ -321,7 +354,20 @@ public class SmartDepartmentController implements SmartDepartmentControllerAPI {
     }
 
 
+    private List<String> queryAllParentId(Integer parentId, List<SmartDepartment> lists) {
+        List<String> newIds = new ArrayList<>();
+
+        Optional<SmartDepartment> department = lists.stream().filter(e -> e.getId().equals(parentId)).findFirst();
+        if (department != null && department.isPresent()) {
+            if(department.get().getParentId().intValue() != 0){
+                newIds.add(String.valueOf(department.get().getParentId()));
+            }
 
+            List<String> queryList = queryAllParentId(department.get().getParentId(), lists);
+            newIds.addAll(queryList);
+        }
+        return newIds;
+    }
 
     /**
      * 根据父级ID获取树形数据
@@ -413,7 +459,6 @@ public class SmartDepartmentController implements SmartDepartmentControllerAPI {
     }
 
 
-
     /**
      * 根据父级ID获取树形数据
      *

+ 360 - 145
src/main/java/com/template/controller/SmartUserController.java

@@ -3,6 +3,7 @@ package com.template.controller;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -50,6 +51,7 @@ import java.time.LocalDate;
 import java.time.Year;
 import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 import java.util.zip.ZipInputStream;
 
 import static com.template.common.utils.AesTestOne.decrypt;
@@ -97,6 +99,9 @@ public class SmartUserController implements SmartUserControllerAPI {
     @Autowired
     private SmartTimeGroupService smartTimeGroupService;
 
+    @Autowired
+    private SmartAuthorityService smartAuthorityService;
+
     @Override
     @DESRespondSecret(validated = true)
     public CommonResult logoffAccount(useridsRequest ur, BindingResult bindingResult) {
@@ -147,12 +152,152 @@ public class SmartUserController implements SmartUserControllerAPI {
     }
 
     @Override
+    public CommonResult importExcelUserBsno(MultipartFile excelFile) throws IOException {
+        //先解析excel如果excel不满足格式就提示错误信息 避免提前占用带宽上传头像
+        if (excelFile.isEmpty() || excelFile.getSize() == 0) {
+            return CommonResult.fail("压缩包中的excel文件不能为空");
+        }
+
+        List<SmartUser> result = new ArrayList<>();
+        String ContentType = excelFile.getContentType();
+        InputStream inputStream = excelFile.getInputStream();
+        if (ContentType.equals(eFileType.Xlsx.getValue())) {
+            CommonResult<List<SmartUser>> resultData = readBsXlsx(inputStream);
+            if (!resultData.isSuccess()) {
+                return resultData;
+            }
+            result = resultData.getData();
+            if (result == null) {
+                return CommonResult.fail("文档内容为空,导入失败");
+            }
+        } else {
+            return CommonResult.fail("用户导入只支持Xlsx");
+        }
+
+        List<String> gradeIds = result.stream().map(SmartUser::getGrade).distinct().collect(Collectors.toList());
+        if (gradeIds != null && gradeIds.size() > 0) {
+            List<SmartUser> users = smartUserService.queryStudentsByGrade(gradeIds);
+            for (SmartUser user : users) {
+                Optional<SmartUser> resultData = result.stream().filter(e -> e.getCardNo().equals(user.getCardNo()) && e.getName().equals(user.getName())).findFirst();
+                if (resultData != null && resultData.isPresent()) {
+                    user.setBsStudentNo(resultData.get().getBsStudentNo());
+                }
+            }
+
+            if (users != null && users.size() > 0) {
+                boolean insertData = smartUserService.updateUserBatchById(users);
+                if (!insertData) {
+                    return CommonResult.fail("导入失败");
+                }
+            }
+        }
+
+        return CommonResult.ok("导入成功");
+    }
+
+    /**
+     * Xlsx文件读取方法ss
+     *
+     * @param inputStream 文件流
+     * @return
+     * @throws IOException
+     */
+    private CommonResult<List<SmartUser>> readBsXlsx(InputStream inputStream) throws IOException {
+        List<SmartUser> users = new ArrayList<>();
+        List<String> idCards = new ArrayList<>();
+        List<String> cardNos = new ArrayList<>();
+        XSSFWorkbook sheets = new XSSFWorkbook(inputStream);
+
+        List<SmartGrade> grades = smartGradeService.list(null); //年级
+        //读取第一张sheet
+        XSSFSheet sheetAt = sheets.getSheetAt(0);
+
+        DataFormatter dataFormatter = new DataFormatter();
+        try {
+            for (int rowNum = 0; rowNum < sheetAt.getLastRowNum() + 1; rowNum++) {
+                XSSFRow row = sheetAt.getRow(rowNum);
+
+                if (row != null) {
+                    //使用了getStringCellValue()方法来获取值,POI会判断单元格的类型,如果非字符串类型就会抛出上面的异常。
+                    //所以先使用setCellType()方法先将该单元格的类型设置为STRING
+                    //然后poi会根据字符串读取它
+                    //标题 校验
+                    if (rowNum == 0) {
+                        String schoolClass = dataFormatter.formatCellValue(row.getCell(0));//年级
+                        if (!schoolClass.equals("年级")) {
+                            return CommonResult.fail("导入数据第一列为年级");
+                        }
+                        String cardNo = dataFormatter.formatCellValue(row.getCell(3));//学号
+                        if (!cardNo.equals("学号")) {
+                            return CommonResult.fail("导入数据第四列为学号");
+                        }
+                        String name = dataFormatter.formatCellValue(row.getCell(4));//姓名
+                        if (!name.equals("姓名")) {
+                            return CommonResult.fail("导入数据第五列为姓名");
+                        }
+                        String sex = dataFormatter.formatCellValue(row.getCell(5));//学生编码
+                        if (!sex.equals("学生编码")) {
+                            return CommonResult.fail("导入数据第六列为学生编码");
+                        }
+                    } else {
+                        SmartUser user = new SmartUser();
+                        String name = dataFormatter.formatCellValue(row.getCell(4));
+                        if (ObjectUtils.isEmpty(name)) {
+                            return CommonResult.fail("第" + (rowNum + 2) + "条数据的姓名不能为空");
+                        }
+
+                        String schoolGrade = dataFormatter.formatCellValue(row.getCell(0));//年级
+                        if (ObjectUtils.isEmpty(schoolGrade)) {
+                            return CommonResult.fail(name + "的年级不能为空");
+                        }
+
+                        String cardNo = dataFormatter.formatCellValue(row.getCell(3));//学号
+                        if (ObjectUtils.isEmpty(cardNo)) {
+                            return CommonResult.fail(name + "的学号不能为空");
+                        }
+
+                        //学号重复判断
+                        if (!ObjectUtils.isEmpty(cardNo)) {
+                            cardNos.add(cardNo);
+                        }
+                        if (cardNos.stream().distinct().count() != cardNos.size()) {
+                            return CommonResult.fail("导入的Excel中," + name + "的学号:" + cardNo + "存在重复数据");
+                        }
+
+                        String studentNo = dataFormatter.formatCellValue(row.getCell(5));//学生编码
+                        if (ObjectUtils.isEmpty(studentNo)) {
+                            return CommonResult.fail(name + "的学生编码不能为空");
+                        }
+
+                        Optional<SmartGrade> oGrade = grades.stream().filter(e -> e.getName().equals(schoolGrade)).findFirst();
+                        if (oGrade != null && oGrade.isPresent()) {
+                            Integer gradeId = oGrade.get().getId();
+                            user.setGrade(String.valueOf(gradeId));
+                        } else {
+                            return CommonResult.fail(name + "的年级数据无效,导入失败");
+                        }
+                        user.setName(name);
+                        user.setBsStudentNo(studentNo);
+                        user.setCardNo(cardNo);
+                        users.add(user);
+                    }
+                }
+            }
+        } catch (Exception e) {
+            return CommonResult.fail("请按模板格式导入数据");
+        }
+
+        return CommonResult.ok(users);
+    }
+
+
+    @Override
     @DESRespondSecret(validated = true)
     public CommonResult importExcelUsers(MultipartFile excelFile, String headImage) throws Exception {
         List<SmartUser> result = new ArrayList<>();
 
         int useXw = 1;
-        int useBs = 0;
+        int useBs = 1;
 
         //先解析excel如果excel不满足格式就提示错误信息 避免提前占用带宽上传头像
         if (excelFile.isEmpty() || excelFile.getSize() == 0) {
@@ -1292,7 +1437,7 @@ public class SmartUserController implements SmartUserControllerAPI {
             return CommonResult.fail(st);
         }
 
-        int useBs = 0;
+        int useBs = 1;
         int useXw = 1;
 
         //重复性判断
@@ -1537,7 +1682,7 @@ public class SmartUserController implements SmartUserControllerAPI {
         //endregion
 
         int useXw = 1;
-        int useBs = 0;
+        int useBs = 1;
 
         //更新的同时将百胜用户信息同步过去或者同步过来?
         SmartUser su = smartUserService.getSmartById(usur.getId());
@@ -1686,19 +1831,22 @@ public class SmartUserController implements SmartUserControllerAPI {
                 return CommonResult.fail("学生班级不能为空");
             }
             //endregion
-
+            //获取班级Uid
+            SmartClass classData = smartClassService.getSmartClassById(su.getSchoolClass());
+            if (classData == null) {
+                return CommonResult.fail("班级数据无效,更新失败");
+            }
+            //获取年级Uid
+            SmartGrade gradeData = smartGradeService.querySmartGradeById(Integer.valueOf(su.getGrade()));
+            if (gradeData == null) {
+                return CommonResult.fail("年级数据无效,新增失败");
+            }
             if (!changeIdentity) {
                 //region 更新希沃学生信息
                 if (useXw == 1) {
                     CommonResult updateStudent = SeewoUpdateStudent(seewoClient, su);
                     if (!updateStudent.isSuccess()) {
                         if (updateStudent.getMessage().equals("学生不存在")) {
-                            //获取班级Uid
-                            SmartClass classData = smartClassService.getSmartClassById(su.getSchoolClass());
-                            if (classData == null) {
-                                return CommonResult.fail("班级数据无效,更新失败");
-                            }
-
                             CommonResult<String> insertStudent = SeewoInsertStudent(seewoClient, su.getName(), su.getCardNo(), su.getSexId(), su.getPhone(), classData.getClassUid());
                             if (!insertStudent.isSuccess()) {
                                 return CommonResult.fail(insertStudent.getMessage());
@@ -1720,11 +1868,6 @@ public class SmartUserController implements SmartUserControllerAPI {
                 }
                 //endregion
 
-                SmartGrade gradeData = smartGradeService.querySmartGradeById(Integer.valueOf(usur.getGrade()));
-                if (gradeData == null) {
-                    return CommonResult.fail("年级数据无效,更新失败");
-                }
-
                 //region 更新百胜学生信息
                 if (useBs == 1) {
                     /**
@@ -1735,11 +1878,6 @@ public class SmartUserController implements SmartUserControllerAPI {
                     CommonResult updateBsStudent = bsUpdateStudent(su, startTime, endTime);
                     if (!updateBsStudent.isSuccess()) {
                         if (updateBsStudent.getMessage().equals("人员不存在或已删除")) {
-                            //获取班级Uid
-                            SmartClass classData = smartClassService.getSmartClassById(usur.getSchoolClass());
-                            if (classData == null) {
-                                return CommonResult.fail("班级数据无效,更新失败");
-                            }
                             //region 百胜新增学生信息
                             CommonResult<String> insertBsStudent = bsInsertStudent(usur.getName(), usur.getCardNo(), usur.getSexId(), usur.getHeadImage(), usur.getTimeGroupId(), classData.getBsClassNo(), startTime, endTime);
                             if (!insertBsStudent.isSuccess()) {
@@ -1754,18 +1892,6 @@ public class SmartUserController implements SmartUserControllerAPI {
                 }
                 //endregion
             } else {
-
-                //获取班级Uid
-                SmartClass classData = smartClassService.getSmartClassById(su.getSchoolClass());
-                if (classData == null) {
-                    return CommonResult.fail("班级数据无效,新增失败");
-                }
-                //获取班级Uid
-                SmartGrade gradeData = smartGradeService.querySmartGradeById(Integer.valueOf(su.getGrade()));
-                if (gradeData == null) {
-                    return CommonResult.fail("年级数据无效,新增失败");
-                }
-
                 //region 希沃新增学生信息
                 if (useXw == 1) {
                     CommonResult<String> insertStudent = SeewoInsertStudent(seewoClient, su.getName(), su.getCardNo(), su.getSexId(), su.getPhone(), classData.getClassUid());
@@ -2879,7 +3005,45 @@ public class SmartUserController implements SmartUserControllerAPI {
      */
     @Override
     @DESRespondSecret(validated = true)
-    public CommonResult queryPageSmartUser(int currentPage, int pageCount, Integer departmentId, String name) {
+    public CommonResult queryPageSmartUser(int currentPage, int pageCount, Integer departmentId, String name, String userhead) {
+        //region 角色判断
+        String userID = AesUtils.decrypt(userhead);
+        SmartUser operateData = smartUserService.getSmartById(Integer.valueOf(userID));
+        if (operateData == null) {
+            return CommonResult.fail("用户信息不合法,无法查看");
+        }
+
+        QueryWrapper<SmartAuthority> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("user_id", operateData.getId());
+        List<SmartAuthority> authorities = smartAuthorityService.getAuthorByKey(queryWrapper);
+        if (authorities == null) {
+            return CommonResult.fail("当前用户权限不足,无法查看对应部门数据");
+        }
+
+        if (authorities.size() <= 0) {
+            return CommonResult.fail("当前用户权限不足,无法查看对应部门数据");
+        }
+
+        List<String> viewAuthors = new ArrayList<>();//部门查看权限
+        List<String> manageAuthors = new ArrayList<>();//部门管理权限
+        for (SmartAuthority author : authorities) {
+            List<String> views = org.springframework.util.StringUtils.hasText(author.getDepartmentView().trim()) ? Arrays.asList(author.getDepartmentView().trim().split(",")) : new ArrayList<>();
+            if (views != null && views.size() > 0) {
+                viewAuthors.addAll(views);
+            }
+
+            List<String> manages = org.springframework.util.StringUtils.hasText(author.getDepartmentManage().trim()) ? Arrays.asList(author.getDepartmentManage().trim().split(",")) : new ArrayList<>();
+            if (manages != null && manages.size() > 0) {
+                manageAuthors.addAll(manages);
+            }
+        }
+
+        List<String> AllAuths = new ArrayList<>();
+        AllAuths.addAll(viewAuthors);
+        AllAuths.addAll(manageAuthors);
+        AllAuths = AllAuths.stream().distinct().collect(Collectors.toList());
+        //endregion
+
         //获取该部门下的所有子级部门ID
         List<Integer> childDepartmentIds = new ArrayList<>();
         List<SmartDepartment> departments = smartDepartmentService.list(null);
@@ -2890,7 +3054,14 @@ public class SmartUserController implements SmartUserControllerAPI {
             childDepartmentIds = null;
         }
 
-        PageUtils<UserVo> result = smartUserService.querySmartUserPages(currentPage, pageCount, childDepartmentIds, name);
+        List<Integer> authDepartments = new ArrayList<>();
+        for (Integer child : childDepartmentIds) {
+            if (AllAuths.contains(String.valueOf(child))) {
+                authDepartments.add(child);
+            }
+        }
+
+        PageUtils<UserVo> result = smartUserService.querySmartUserPages(currentPage, pageCount, authDepartments, name);
 
         if (result != null && result.getList() != null) {
             List<Integer> studentIds = new ArrayList<>();
@@ -2949,129 +3120,174 @@ public class SmartUserController implements SmartUserControllerAPI {
 
     @Override
     @DESRespondSecret(validated = false)
-    public void smartUserExport(HttpServletResponse response, Integer departmentId, String name) {
-        //获取该部门下的所有子级部门ID
-        List<Integer> childDepartmentIds = new ArrayList<>();
-        List<SmartDepartment> departments = smartDepartmentService.list(null);
-        childDepartmentIds.add(departmentId);
-        QueryDepartmentTreeRecords(departmentId, departments, childDepartmentIds);
-
-        List<SmartUser> users = smartUserService.querySmartUsers(childDepartmentIds, name);
-
-        List<String> affiliates = new ArrayList<>();
-        List<String> affiliateStr = users.stream().map(SmartUser::getAffiliate).collect(Collectors.toList());
-        for (String datas : affiliateStr) {
-            String[] dataArray = datas.split(",");
-            for (int i = 0; i < dataArray.length; i++) {
-                affiliates.add(dataArray[i]);
-            }
-        }
-        List<SmartUser> affiliateDatas = smartUserService.getSmartUserIds(affiliates);
-
-        List<Integer> dutieIds = users != null && users.size() > 0 ? users.stream().map(SmartUser::getDuties).collect(Collectors.toList()) : null;
-        //职务数据
-        List<SmartDuties> duties = dutieIds != null && dutieIds.size() > 0 ? smartDutiesService.queryDutiesByIds(dutieIds) : null;
-        //年级
-        List<SmartGrade> grades = smartGradeService.list(null);
-        //班级
-        List<SmartClass> classes = smartClassService.list(null);
-        //导出
-        Workbook workbook = new XSSFWorkbook();
-        Sheet sheet = workbook.createSheet("用户信息管理");
-        Row headerRow = sheet.createRow(0);
-        headerRow.createCell(0).setCellValue("序号");
-        headerRow.createCell(1).setCellValue("学号");
-        headerRow.createCell(2).setCellValue("姓名");
-        headerRow.createCell(3).setCellValue("身份");
-        headerRow.createCell(4).setCellValue("身份证号");
-        headerRow.createCell(5).setCellValue("性别");
-        headerRow.createCell(6).setCellValue("部门");
-        headerRow.createCell(7).setCellValue("人脸");
-        headerRow.createCell(8).setCellValue("年级");
-        headerRow.createCell(9).setCellValue("学院");
-        headerRow.createCell(10).setCellValue("专业");
-        headerRow.createCell(11).setCellValue("班级");
-        headerRow.createCell(12).setCellValue("校区");
-        headerRow.createCell(13).setCellValue("宿舍号");
-        headerRow.createCell(14).setCellValue("手机号");
-        headerRow.createCell(15).setCellValue("关联人");
-        headerRow.createCell(16).setCellValue("职称");
-        headerRow.createCell(17).setCellValue("家庭住址");
-        headerRow.createCell(18).setCellValue("民族");
-        headerRow.createCell(19).setCellValue("生源地");
-        headerRow.createCell(20).setCellValue("毕业学校");
-        headerRow.createCell(21).setCellValue("职务");
-
-        for (int i = 0; i < users.size(); i++) {
-            SmartUser user = users.get(i);
-
-            Row dataRow = sheet.createRow(i + 1);
-            dataRow.createCell(0).setCellValue(i + 1);//序号
-            dataRow.createCell(1).setCellValue(user.getCardNo());//学号
-            dataRow.createCell(2).setCellValue(user.getName());//姓名
-            dataRow.createCell(3).setCellValue(eIdentityStatu.stringOf(user.getIdentityId()));//身份
-            dataRow.createCell(4).setCellValue(user.getIdCard());//身份证号
-            dataRow.createCell(5).setCellValue(eSexStatu.stringOf(user.getSexId()));//性别
-            //获取父级部门ID
-            Optional<SmartDepartment> department = departments.stream().filter(e -> e.getId().equals(user.getDepartmentId())).findFirst();
-            if (department != null && department.isPresent()) {
-                dataRow.createCell(6).setCellValue(QueryParentDepartments(department.get().getParentId(), departments, null));//部门
-            }
+    public void smartUserExport(HttpServletResponse response, Integer departmentId, String name,String userhead) {
+        //region 角色判断
+        String userID = AesUtils.decrypt(userhead);
+        SmartUser operateData = smartUserService.getSmartById(Integer.valueOf(userID));
+        if (operateData != null) {
+
+
+            QueryWrapper<SmartAuthority> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("user_id", operateData.getId());
+            List<SmartAuthority> authorities = smartAuthorityService.getAuthorByKey(queryWrapper);
+            if (authorities != null && authorities.size() > 0) {
+
+                List<String> viewAuthors = new ArrayList<>();//部门查看权限
+                List<String> manageAuthors = new ArrayList<>();//部门管理权限
+                for (SmartAuthority author : authorities) {
+                    List<String> views = org.springframework.util.StringUtils.hasText(author.getDepartmentView().trim()) ? Arrays.asList(author.getDepartmentView().trim().split(",")) : new ArrayList<>();
+                    if (views != null && views.size() > 0) {
+                        viewAuthors.addAll(views);
+                    }
 
-            dataRow.createCell(7).setCellValue(user.getHeadImage() == null ? "" : user.getHeadImage());//人脸
+                    List<String> manages = org.springframework.util.StringUtils.hasText(author.getDepartmentManage().trim()) ? Arrays.asList(author.getDepartmentManage().trim().split(",")) : new ArrayList<>();
+                    if (manages != null && manages.size() > 0) {
+                        manageAuthors.addAll(manages);
+                    }
+                }
 
-            String grade = "";
-            Optional<SmartGrade> gradeData = grades == null ? null : grades.stream().filter(e -> e.getId().toString().equals(user.getGrade())).findFirst();
-            if (gradeData != null && gradeData.isPresent()) {
-                grade = gradeData.get().getName();
-            }
-            dataRow.createCell(8).setCellValue(grade);//年级
-            dataRow.createCell(9).setCellValue(user.getCollege() == null ? "" : user.getCollege());//学院
-            dataRow.createCell(10).setCellValue(user.getSpeciality() == null ? "" : user.getSpeciality());//专业
+                List<String> AllAuths = new ArrayList<>();
+                AllAuths.addAll(viewAuthors);
+                AllAuths.addAll(manageAuthors);
+                AllAuths = AllAuths.stream().distinct().collect(Collectors.toList());
+                //endregion
 
-            String classStr = "";
-            Optional<SmartClass> classData = classes == null ? null : classes.stream().filter(e -> e.getId().equals(user.getSchoolClass())).findFirst();
-            if (classData != null && classData.isPresent()) {
-                classStr = classData.get().getName();
-            }
-            dataRow.createCell(11).setCellValue(classStr);//班级
+                //获取该部门下的所有子级部门ID
+                List<Integer> childDepartmentIds = new ArrayList<>();
+                List<SmartDepartment> departments = smartDepartmentService.list(null);
+                childDepartmentIds.add(departmentId);
+                QueryDepartmentTreeRecords(departmentId, departments, childDepartmentIds);
 
-            dataRow.createCell(12).setCellValue(user.getCampus() == null ? "" : user.getCampus());//校区
-            dataRow.createCell(13).setCellValue(user.getDormitoryNumber() == null ? "" : user.getDormitoryNumber());//宿舍号
-            dataRow.createCell(14).setCellValue(user.getPhone() == null ? "" : user.getPhone());//手机号
+                if (departmentId == null) {
+                    childDepartmentIds = null;
+                }
 
-            List<String> affiliateCellStrs = new ArrayList<>();
-            if (user.getAffiliate() != null && affiliateDatas != null) {
-                String[] affArrayStr = user.getAffiliate().split(",");
-                for (int j = 0; j < affArrayStr.length; j++) {
-                    String affArrayIndex = affArrayStr[j];
-                    Optional<SmartUser> affUser = affiliateDatas.stream().filter(e -> e.getId().toString().equals(affArrayIndex)).findFirst();
-                    if (affUser != null && affUser.isPresent()) {
-                        affiliateCellStrs.add(affUser.get().getName());
+                List<Integer> authDepartments = new ArrayList<>();
+                for (Integer child : childDepartmentIds) {
+                    if (AllAuths.contains(String.valueOf(child))) {
+                        authDepartments.add(child);
                     }
+                }
 
+                List<SmartUser> users = smartUserService.querySmartUsers(authDepartments, name);
+
+                List<String> affiliates = new ArrayList<>();
+                List<String> affiliateStr = users.stream().map(SmartUser::getAffiliate).collect(Collectors.toList());
+                for (String datas : affiliateStr) {
+                    String[] dataArray = datas.split(",");
+                    for (int i = 0; i < dataArray.length; i++) {
+                        affiliates.add(dataArray[i]);
+                    }
                 }
-            }
+                List<SmartUser> affiliateDatas = smartUserService.getSmartUserIds(affiliates);
+
+                List<Integer> dutieIds = users != null && users.size() > 0 ? users.stream().map(SmartUser::getDuties).collect(Collectors.toList()) : null;
+                //职务数据
+                List<SmartDuties> duties = dutieIds != null && dutieIds.size() > 0 ? smartDutiesService.queryDutiesByIds(dutieIds) : null;
+                //年级
+                List<SmartGrade> grades = smartGradeService.list(null);
+                //班级
+                List<SmartClass> classes = smartClassService.list(null);
+                //导出
+                Workbook workbook = new XSSFWorkbook();
+                Sheet sheet = workbook.createSheet("用户信息管理");
+                Row headerRow = sheet.createRow(0);
+                headerRow.createCell(0).setCellValue("序号");
+                headerRow.createCell(1).setCellValue("学号");
+                headerRow.createCell(2).setCellValue("姓名");
+                headerRow.createCell(3).setCellValue("身份");
+                headerRow.createCell(4).setCellValue("身份证号");
+                headerRow.createCell(5).setCellValue("性别");
+                headerRow.createCell(6).setCellValue("部门");
+                headerRow.createCell(7).setCellValue("人脸");
+                headerRow.createCell(8).setCellValue("年级");
+                headerRow.createCell(9).setCellValue("学院");
+                headerRow.createCell(10).setCellValue("专业");
+                headerRow.createCell(11).setCellValue("班级");
+                headerRow.createCell(12).setCellValue("校区");
+                headerRow.createCell(13).setCellValue("宿舍号");
+                headerRow.createCell(14).setCellValue("手机号");
+                headerRow.createCell(15).setCellValue("关联人");
+                headerRow.createCell(16).setCellValue("职称");
+                headerRow.createCell(17).setCellValue("家庭住址");
+                headerRow.createCell(18).setCellValue("民族");
+                headerRow.createCell(19).setCellValue("生源地");
+                headerRow.createCell(20).setCellValue("毕业学校");
+                headerRow.createCell(21).setCellValue("职务");
+
+                for (int i = 0; i < users.size(); i++) {
+                    SmartUser user = users.get(i);
+
+                    Row dataRow = sheet.createRow(i + 1);
+                    dataRow.createCell(0).setCellValue(i + 1);//序号
+                    dataRow.createCell(1).setCellValue(user.getCardNo());//学号
+                    dataRow.createCell(2).setCellValue(user.getName());//姓名
+                    dataRow.createCell(3).setCellValue(eIdentityStatu.stringOf(user.getIdentityId()));//身份
+                    dataRow.createCell(4).setCellValue(user.getIdCard());//身份证号
+                    dataRow.createCell(5).setCellValue(eSexStatu.stringOf(user.getSexId()));//性别
+                    //获取父级部门ID
+                    Optional<SmartDepartment> department = departments.stream().filter(e -> e.getId().equals(user.getDepartmentId())).findFirst();
+                    if (department != null && department.isPresent()) {
+                        dataRow.createCell(6).setCellValue(QueryParentDepartments(department.get().getParentId(), departments, null));//部门
+                    }
 
-            dataRow.createCell(15).setCellValue(StringUtils.join(affiliateCellStrs, ","));//关联人
+                    dataRow.createCell(7).setCellValue(user.getHeadImage() == null ? "" : user.getHeadImage());//人脸
 
-            dataRow.createCell(16).setCellValue(user.getTitle() == null ? "" : user.getTitle());//职称
-            dataRow.createCell(17).setCellValue(user.getAddress() == null ? "" : user.getAddress());//家庭住址
-            dataRow.createCell(18).setCellValue(user.getNation() == null ? "" : user.getNation());//民族
-            dataRow.createCell(19).setCellValue(user.getOfStudent() == null ? "" : user.getOfStudent());//生源地
-            dataRow.createCell(20).setCellValue(user.getGraduate() == null ? "" : user.getGraduate());//毕业学校
-            String dutieStr = "";
-            if (duties != null && duties.size() > 0 && user.getDuties() != null) {
-                Optional<SmartDuties> oduty = duties.stream().filter(e -> e.getId().equals(user.getDuties())).findFirst();
-                if (oduty != null && oduty.isPresent()) {
-                    dutieStr = oduty.get().getName();
+                    String grade = "";
+                    Optional<SmartGrade> gradeData = grades == null ? null : grades.stream().filter(e -> e.getId().toString().equals(user.getGrade())).findFirst();
+                    if (gradeData != null && gradeData.isPresent()) {
+                        grade = gradeData.get().getName();
+                    }
+                    dataRow.createCell(8).setCellValue(grade);//年级
+                    dataRow.createCell(9).setCellValue(user.getCollege() == null ? "" : user.getCollege());//学院
+                    dataRow.createCell(10).setCellValue(user.getSpeciality() == null ? "" : user.getSpeciality());//专业
+
+                    String classStr = "";
+                    Optional<SmartClass> classData = classes == null ? null : classes.stream().filter(e -> e.getId().equals(user.getSchoolClass())).findFirst();
+                    if (classData != null && classData.isPresent()) {
+                        classStr = classData.get().getName();
+                    }
+                    dataRow.createCell(11).setCellValue(classStr);//班级
+
+                    dataRow.createCell(12).setCellValue(user.getCampus() == null ? "" : user.getCampus());//校区
+                    dataRow.createCell(13).setCellValue(user.getDormitoryNumber() == null ? "" : user.getDormitoryNumber());//宿舍号
+                    dataRow.createCell(14).setCellValue(user.getPhone() == null ? "" : user.getPhone());//手机号
+
+                    List<String> affiliateCellStrs = new ArrayList<>();
+                    if (user.getAffiliate() != null && affiliateDatas != null) {
+                        String[] affArrayStr = user.getAffiliate().split(",");
+                        for (int j = 0; j < affArrayStr.length; j++) {
+                            String affArrayIndex = affArrayStr[j];
+                            Optional<SmartUser> affUser = affiliateDatas.stream().filter(e -> e.getId().toString().equals(affArrayIndex)).findFirst();
+                            if (affUser != null && affUser.isPresent()) {
+                                affiliateCellStrs.add(affUser.get().getName());
+                            }
+
+                        }
+                    }
+
+                    dataRow.createCell(15).setCellValue(StringUtils.join(affiliateCellStrs, ","));//关联人
+
+                    dataRow.createCell(16).setCellValue(user.getTitle() == null ? "" : user.getTitle());//职称
+                    dataRow.createCell(17).setCellValue(user.getAddress() == null ? "" : user.getAddress());//家庭住址
+                    dataRow.createCell(18).setCellValue(user.getNation() == null ? "" : user.getNation());//民族
+                    dataRow.createCell(19).setCellValue(user.getOfStudent() == null ? "" : user.getOfStudent());//生源地
+                    dataRow.createCell(20).setCellValue(user.getGraduate() == null ? "" : user.getGraduate());//毕业学校
+                    String dutieStr = "";
+                    if (duties != null && duties.size() > 0 && user.getDuties() != null) {
+                        Optional<SmartDuties> oduty = duties.stream().filter(e -> e.getId().equals(user.getDuties())).findFirst();
+                        if (oduty != null && oduty.isPresent()) {
+                            dutieStr = oduty.get().getName();
+                        }
+                    }
+                    dataRow.createCell(21).setCellValue(dutieStr);//职务
                 }
+
+                // 将工作簿写入文件
+                ExcelUtils.excelDownload(workbook, "用户信息.xlsx", response);
             }
-            dataRow.createCell(21).setCellValue(dutieStr);//职务
         }
 
-        // 将工作簿写入文件
-        ExcelUtils.excelDownload(workbook, "用户信息.xlsx", response);
     }
 
     /**
@@ -3081,8 +3297,7 @@ public class SmartUserController implements SmartUserControllerAPI {
      * @param lists    数据集合
      * @return
      */
-    private List<DepartmentTreeVo> QueryDepartmentTreeRecords(Integer
-                                                                      parentID, List<SmartDepartment> lists, List<Integer> departmentIds) {
+    private List<DepartmentTreeVo> QueryDepartmentTreeRecords(Integer parentID, List<SmartDepartment> lists, List<Integer> departmentIds) {
         List<DepartmentTreeVo> newTrees = new ArrayList<>();
 
         List<SmartDepartment> datas = lists.stream().filter(e -> e.getParentId().equals(parentID)).collect(Collectors.toList());

+ 1 - 1
src/main/java/com/template/services/SmartAuthorityService.java

@@ -27,6 +27,6 @@ public interface SmartAuthorityService extends IService<SmartAuthority> {
 
     SmartAuthority getSmartById(int id);
 
-    public List<SmartAuthority> getAuthorByKey(QueryWrapper<SmartAuthority> queryWrapper);
+    List<SmartAuthority> getAuthorByKey(QueryWrapper<SmartAuthority> queryWrapper);
 
 }

+ 2 - 0
src/main/java/com/template/services/SmartUserService.java

@@ -93,4 +93,6 @@ public interface SmartUserService extends IService<SmartUser> {
     PageUtils<UserDeleteVo> queryUserDeletePage(int currentPage, int pageCount);
 
     SmartStudentVo querySmartStudentById(Integer userId);
+
+    List<SmartUser> queryStudentsByGrade(List<String> gradeIds);
 }

+ 9 - 0
src/main/java/com/template/services/impl/SmartUserServiceImpl.java

@@ -273,4 +273,13 @@ public class SmartUserServiceImpl extends ServiceImpl<SmartUserMapper, SmartUser
         SmartStudentVo result = smartUserMapper.querySmartStudentById(userId);
         return result;
     }
+
+    @Override
+    public List<SmartUser> queryStudentsByGrade(List<String> gradeIds) {
+        QueryWrapper<SmartUser> queryWrapper = new QueryWrapper();
+        queryWrapper.eq("identity_id", eIdentityStatu.Student.getValue());
+        queryWrapper.in(gradeIds != null && gradeIds.size() > 0,"grade", gradeIds);
+        List<SmartUser> result = smartUserMapper.selectList(queryWrapper);
+        return result;
+    }
 }

BIN
target/mybatis_plus-0.0.1-SNAPSHOT.jar.original