Quellcode durchsuchen

Merge remote-tracking branch 'origin/master'

soft5566 vor 2 Jahren
Ursprung
Commit
458e49c9de
31 geänderte Dateien mit 1102 neuen und 603 gelöschten Zeilen
  1. 162 134
      .idea/workspace.xml
  2. 4 0
      src/main/java/com/template/api/SmartEvaluateStudentControllerAPI.java
  3. 3 1
      src/main/java/com/template/api/SmartFaceDiscernControllerAPI.java
  4. 6 4
      src/main/java/com/template/api/SmartWarningControllerAPI.java
  5. 5 0
      src/main/java/com/template/api/WechatScanLoginControllerAPI.java
  6. 12 7
      src/main/java/com/template/common/utils/SendSms.java
  7. 6 6
      src/main/java/com/template/config/smsConfig.java
  8. 3 0
      src/main/java/com/template/controller/SmartAttendanceController.java
  9. 24 3
      src/main/java/com/template/controller/SmartEvaluateStudentController.java
  10. 52 7
      src/main/java/com/template/controller/SmartUserController.java
  11. 73 21
      src/main/java/com/template/controller/SmartWarningController.java
  12. 513 361
      src/main/java/com/template/controller/WechatScanLoginController.java
  13. 2 1
      src/main/java/com/template/mapper/SmartFaceDiscernMapper.java
  14. 3 2
      src/main/java/com/template/mapper/SmartUserMapper.java
  15. 10 0
      src/main/java/com/template/model/dto/WarningDeletePushDto.java
  16. 19 0
      src/main/java/com/template/model/dto/WarningUserDto.java
  17. 18 0
      src/main/java/com/template/model/phoneBook/BookUser.java
  18. 19 0
      src/main/java/com/template/model/phoneBook/ClassBook.java
  19. 19 0
      src/main/java/com/template/model/phoneBook/GradeBook.java
  20. 51 0
      src/main/java/com/template/model/pojo/SmartDataTaskErr.java
  21. 6 3
      src/main/java/com/template/services/SmartUserService.java
  22. 8 8
      src/main/java/com/template/services/impl/SmartFaceDiscernServiceImpl.java
  23. 14 4
      src/main/java/com/template/services/impl/SmartUserServiceImpl.java
  24. 5 5
      src/main/resources/application-dev.yml
  25. 5 5
      src/main/resources/application-prod.yml
  26. 5 5
      src/main/resources/application.yml
  27. 24 14
      src/main/resources/mapper/template/SmartUserMapper.xml
  28. 17 12
      target/classes/mapper/template/SmartUserMapper.xml
  29. 7 0
      target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  30. 7 0
      target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
  31. BIN
      target/mybatis_plus-0.0.1-SNAPSHOT.jar.original

+ 162 - 134
.idea/workspace.xml

@@ -4,13 +4,8 @@
     <option name="autoReloadType" value="SELECTIVE" />
   </component>
   <component name="ChangeListManager">
-    <list default="true" id="cb7b6a84-9179-4588-9374-31a70f785e65" name="Default Changelist" comment="">
-      <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/template/SmartIdentityMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/template/SmartIdentityMapper.xml" 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>
+    <list default="true" id="cb7b6a84-9179-4588-9374-31a70f785e65" name="Default Changelist" comment="" />
     <ignored path="$PROJECT_DIR$/target/" />
-    <ignored path="$PROJECT_DIR$/classes/" />
-    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
     <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
@@ -36,19 +31,56 @@
   <component name="FileEditorManager">
     <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartApplyController.java">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/common/utils/AesTestOne.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="286">
+              <caret line="66" column="26" selection-start-line="66" selection-start-column="26" selection-end-line="66" selection-end-column="26" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/controller/WechatScanLoginController.java">
           <provider selected="true" editor-type-id="text-editor">
             <state relative-caret-position="299">
-              <caret line="134" column="84" selection-start-line="134" selection-start-column="61" selection-end-line="134" selection-end-column="84" />
+              <caret line="104" column="44" selection-start-line="104" selection-start-column="44" selection-end-line="104" selection-end-column="44" />
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/src/main/resources/mapper/template/SmartIdentityMapper.xml">
+        <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="98">
+              <caret line="1508" column="39" selection-start-line="1508" selection-start-column="39" selection-end-line="1508" selection-end-column="39" />
+              <folding>
+                <element signature="method#importZipUsers#0;class#SmartUserController#0" />
+                <element signature="e#47329#47346#0" />
+                <element signature="method#smartUserExport#0;class#SmartUserController#0" />
+                <element signature="method#QueryDepartmentTreeRecords#0;class#SmartUserController#0" />
+                <element signature="method#QueryParentDepartments#0;class#SmartUserController#0" />
+                <element signature="method#deleteSmartUserById#0;class#SmartUserController#0" />
+                <element signature="method#downloadUserExcel#0;class#SmartUserController#0" />
+                <element signature="method#queryStudents#0;class#SmartUserController#0" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/resources/application-dev.yml">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="368">
+              <caret line="70" column="27" selection-start-line="70" selection-start-column="27" selection-end-line="70" selection-end-column="27" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/api/SmartAttendanceControllerAPI.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="141">
-              <caret line="11" column="45" selection-start-line="11" selection-start-column="45" selection-end-line="11" selection-end-column="45" />
+            <state relative-caret-position="279">
+              <caret line="38" column="43" selection-start-line="38" selection-start-column="26" selection-end-line="38" selection-end-column="43" />
             </state>
           </provider>
         </entry>
@@ -64,14 +96,6 @@
   </component>
   <component name="FindInProjectRecents">
     <findStrings>
-      <find>tree</find>
-      <find>父级</find>
-      <find>warningDepartmentTree</find>
-      <find>QueryDepartmentTreeRecords</find>
-      <find>&quot;/&quot;</find>
-      <find>smartVisitorPageByUserId</find>
-      <find>like</find>
-      <find>queryVisitorPage</find>
       <find>appointmentPageRecord</find>
       <find>insertSmartScore</find>
       <find>SYSTEM_ERROR</find>
@@ -94,6 +118,14 @@
       <find>queryAppletApplys</find>
       <find>applys</find>
       <find>deleteSmartApplyById</find>
+      <find>personalL</find>
+      <find>querySmartIdentityDatas</find>
+      <find>queryLeaveRecords</find>
+      <find>queryInfoData</find>
+      <find>classData</find>
+      <find>WechatUserVo</find>
+      <find>Jsonobject</find>
+      <find>sonobject</find>
     </findStrings>
     <replaceStrings>
       <replace>班级</replace>
@@ -117,7 +149,6 @@
   <component name="IdeDocumentHistory">
     <option name="CHANGED_PATHS">
       <list>
-        <option value="$PROJECT_DIR$/src/main/java/com/template/model/vo/QrcodeImageVo.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/template/controller/SmartQrcodeController.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/template/model/pojo/SmartUser.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/template/model/vo/IdentityApplyVo.java" />
@@ -156,26 +187,30 @@
         <option value="$PROJECT_DIR$/src/main/java/com/template/services/SmartIdentityService.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/template/controller/SmartApplyController.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/template/common/utils/JWTUtil.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/template/controller/WechatScanLoginController.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/template/controller/LoginController.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/template/core/JwtAuthenticationInterceptor.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/template/api/SmartUserControllerAPI.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/model/request/bindStudentRequest.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/template/controller/SmartUserController.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/template/model/vo/ApplysVo.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/template/services/impl/SmartApplyServiceImpl.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/template/controller/SmartIdentityController.java" />
         <option value="$PROJECT_DIR$/src/main/resources/mapper/template/SmartIdentityMapper.xml" />
+        <option value="$PROJECT_DIR$/src/main/java/com/template/controller/WechatScanLoginController.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/template/controller/SmartUserController.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/template/controller/SmartAttendanceController.java" />
       </list>
     </option>
   </component>
+  <component name="MarkdownSettingsMigration">
+    <option name="stateVersion" value="1" />
+  </component>
   <component name="MavenImportPreferences">
     <option name="generalSettings">
       <MavenGeneralSettings>
-        <option name="mavenHome" value="D:/Software/Develop/Maven/apache-maven-3.3.9" />
-        <option name="userSettingsFile" value="D:\Software\Develop\Maven\apache-maven-3.3.9\conf\settings.xml" />
+        <option name="mavenHome" value="D:/soft/maven/apache-maven-3.8.6" />
+        <option name="userSettingsFile" value="D:\soft\maven\apache-maven-3.8.6\conf\settings.xml" />
       </MavenGeneralSettings>
     </option>
   </component>
@@ -198,9 +233,10 @@
   <component name="MavenRunner">
     <option name="skipTests" value="true" />
   </component>
-  <component name="ProjectFrameBounds">
-    <option name="x" value="-7" />
-    <option name="width" value="958" />
+  <component name="ProjectFrameBounds" extendedState="7">
+    <option name="x" value="-8" />
+    <option name="y" value="-8" />
+    <option name="width" value="974" />
     <option name="height" value="1039" />
   </component>
   <component name="ProjectId" id="2b6sxhjtfk5YsWPguK3OYQgIn3k" />
@@ -394,19 +430,15 @@
     <property name="RequestMappingsPanelOrder1" value="1" />
     <property name="RequestMappingsPanelWidth0" value="75" />
     <property name="RequestMappingsPanelWidth1" value="75" />
-    <property name="WebServerToolWindowFactoryState" value="false" />
-    <property name="aspect.path.notification.shown" value="true" />
-    <property name="last_opened_file_path" value="$PROJECT_DIR$/../../民宿/mhotel" />
-    <property name="settings.editor.selected.configurable" value="MavenSettings" />
   </component>
   <component name="RebelAgentSelection">
     <selection>jr</selection>
   </component>
   <component name="RecentsManager">
-    <key name="MoveFile.RECENT_KEYS">
-      <recent name="E:\company\backend_code\src\main\resources\mapper\template" />
-      <recent name="E:\company\backend_code\src\main\resources\mapper" />
-      <recent name="D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\resources\mapper\template" />
+    <key name="CopyFile.RECENT_KEYS">
+      <recent name="E:\company\backend_code\src\main\java\com\template\common\utils" />
+      <recent name="D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\seewo" />
+      <recent name="D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo" />
     </key>
     <key name="CopyClassDialog.RECENTS_KEY">
       <recent name="com.template.model.request" />
@@ -415,10 +447,10 @@
       <recent name="com.template.api" />
       <recent name="com.template.config" />
     </key>
-    <key name="CopyFile.RECENT_KEYS">
-      <recent name="E:\company\backend_code\src\main\java\com\template\common\utils" />
-      <recent name="D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\seewo" />
-      <recent name="D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo" />
+    <key name="MoveFile.RECENT_KEYS">
+      <recent name="E:\company\backend_code\src\main\resources\mapper\template" />
+      <recent name="E:\company\backend_code\src\main\resources\mapper" />
+      <recent name="D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\resources\mapper\template" />
     </key>
   </component>
   <component name="RunDashboard">
@@ -547,15 +579,17 @@
       <workItem from="1705388695984" duration="51258000" />
       <workItem from="1705885614332" duration="695000" />
       <workItem from="1705886328968" duration="31068000" />
-      <workItem from="1705992981607" duration="21980000" />
+      <workItem from="1705992981607" duration="28562000" />
+      <workItem from="1705992981607" duration="24464000" />
+      <workItem from="1706163623253" duration="58000" />
     </task>
     <servers />
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="468006000" />
+    <option name="totallyTimeSpent" value="475402000" />
   </component>
   <component name="ToolWindowManager">
-    <frame x="-8" y="-8" width="1936" height="1048" extended-state="6" />
+    <frame x="-8" y="-8" width="1936" height="1048" extended-state="7" />
     <editor active="true" />
     <layout>
       <window_info id="JRebel" order="0" side_tool="true" />
@@ -566,11 +600,11 @@
       <window_info id="Designer" order="5" />
       <window_info id="Web" order="6" side_tool="true" />
       <window_info id="Structure" order="7" side_tool="true" weight="0.25" />
-      <window_info active="true" content_ui="combo" id="Project" order="8" visible="true" weight="0.123667374" />
+      <window_info content_ui="combo" id="Project" order="8" visible="true" weight="0.06076759" />
       <window_info anchor="bottom" id="Message" order="0" />
       <window_info anchor="bottom" id="Find" order="1" />
-      <window_info anchor="bottom" id="Run" order="2" visible="true" weight="0.30196938" />
-      <window_info anchor="bottom" id="Debug" order="3" weight="0.18599562" />
+      <window_info anchor="bottom" id="Run" order="2" visible="true" weight="0.297593" />
+      <window_info anchor="bottom" id="Debug" order="3" weight="0.27352297" />
       <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" />
@@ -584,7 +618,7 @@
       <window_info anchor="bottom" id="Version Control" order="14" />
       <window_info anchor="bottom" id="JRebel Executor" order="15" />
       <window_info anchor="bottom" id="JRebel Console" order="16" side_tool="true" />
-      <window_info anchor="right" id="Maven" order="0" weight="0.83964366" />
+      <window_info anchor="right" id="Maven" order="0" weight="0.84245074" />
       <window_info anchor="right" id="Palette" order="1" />
       <window_info anchor="right" id="Capture Analysis" order="2" />
       <window_info anchor="right" id="Database" order="3" weight="0.32942432" />
@@ -637,7 +671,7 @@
     </layout-to-restore>
   </component>
   <component name="TypeScriptGeneratedFilesManager">
-    <option name="version" value="1" />
+    <option name="version" value="3" />
   </component>
   <component name="Vcs.Log.Tabs.Properties">
     <option name="TAB_STATES">
@@ -676,7 +710,7 @@
       <breakpoints>
         <line-breakpoint enabled="true" type="java-line">
           <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/WechatScanLoginController.java</url>
-          <line>54</line>
+          <line>56</line>
           <properties />
           <option name="timeStamp" value="57" />
         </line-breakpoint>
@@ -705,14 +739,8 @@
           <option name="timeStamp" value="99" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/src/main/java/com/template/common/utils/AesTestOne.java</url>
-          <line>71</line>
-          <properties />
-          <option name="timeStamp" value="100" />
-        </line-breakpoint>
-        <line-breakpoint enabled="true" type="java-line">
           <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartUserController.java</url>
-          <line>1797</line>
+          <line>1836</line>
           <properties />
           <option name="timeStamp" value="113" />
         </line-breakpoint>
@@ -722,6 +750,12 @@
           <properties />
           <option name="timeStamp" value="114" />
         </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartUserController.java</url>
+          <line>1179</line>
+          <properties />
+          <option name="timeStamp" value="115" />
+        </line-breakpoint>
       </breakpoints>
     </breakpoint-manager>
   </component>
@@ -730,51 +764,6 @@
     <option name="FILTER_TARGETS" value="false" />
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/enumModel/eExamineStatu.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="230">
-          <caret line="10" column="4" selection-start-line="10" selection-start-column="4" selection-end-line="10" selection-end-column="4" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/common/result/ResponseStatusEnum.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="437">
-          <caret line="19" column="16" selection-start-line="19" selection-start-column="4" selection-end-line="19" selection-end-column="16" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/common/utils/Md5Utils.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="92">
-          <caret line="4" column="28" selection-start-line="4" selection-start-column="28" selection-end-line="4" selection-end-column="28" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/common/utils/ExcelUtil3.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="115">
-          <caret line="5" column="32" selection-start-line="5" selection-start-column="32" selection-end-line="5" selection-end-column="32" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/common/utils/WarningEntity.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="161">
-          <caret line="8" column="5" selection-start-line="8" selection-start-column="5" selection-end-line="8" selection-end-column="5" />
-          <folding>
-            <element signature="imports" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/pom.xml">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="4209">
-          <caret line="183" column="28" selection-start-line="183" selection-start-column="28" selection-end-line="183" selection-end-column="28" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/vo/BsReservationVo.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="437">
@@ -965,13 +954,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/controller/WechatScanLoginController.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="306">
-          <caret line="426" column="59" selection-start-line="426" selection-start-column="59" selection-end-line="426" selection-end-column="59" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/template/controller/LoginController.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="300">
@@ -1042,33 +1024,6 @@
         </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="58">
-          <caret line="1846" column="45" selection-start-line="1846" selection-start-column="45" selection-end-line="1846" selection-end-column="45" />
-          <folding>
-            <element signature="method#importZipUsers#0;class#SmartUserController#0" />
-            <element signature="e#44515#49821#1" />
-            <element signature="e#49920#49944#0" />
-            <element signature="e#50206#50223#0" />
-            <element signature="e#52774#55331#1" />
-            <element signature="e#55345#55362#0" />
-            <element signature="method#updateSmartUserById#0;class#SmartUserController#0" />
-            <element signature="e#63181#67302#1" />
-            <element signature="e#67400#67417#0" />
-            <element signature="method#queryPageSmartUser#0;class#SmartUserController#0" />
-            <element signature="method#smartUserExport#0;class#SmartUserController#0" />
-            <element signature="method#QueryDepartmentTreeRecords#0;class#SmartUserController#0" />
-            <element signature="method#QueryParentDepartments#0;class#SmartUserController#0" />
-            <element signature="method#deleteSmartUserById#0;class#SmartUserController#0" />
-            <element signature="method#queryAffiliateUserById#0;class#SmartUserController#0" />
-            <element signature="method#downloadUserExcel#0;class#SmartUserController#0" />
-            <element signature="method#queryStudents#0;class#SmartUserController#0" />
-            <element signature="method#queryInfoData#0;class#SmartUserController#0" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/vo/ApplysVo.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="920">
@@ -1111,6 +1066,79 @@
         </state>
       </provider>
     </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/api/SmartApplyControllerAPI.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="200">
+          <caret line="24" column="17" selection-start-line="24" selection-start-column="17" selection-end-line="24" selection-end-column="17" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/api/SmartAttendanceControllerAPI.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="279">
+          <caret line="38" column="43" selection-start-line="38" selection-start-column="26" selection-end-line="38" selection-end-column="43" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/resources/application-dev.yml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="368">
+          <caret line="70" column="27" selection-start-line="70" selection-start-column="27" selection-end-line="70" selection-end-column="27" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartAttendanceController.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="286">
+          <caret line="56" column="120" selection-start-line="56" selection-start-column="120" selection-end-line="56" selection-end-column="120" />
+          <caret line="57" column="106" lean-forward="true" selection-start-line="57" selection-start-column="106" selection-end-line="57" selection-end-column="106" />
+          <caret line="58" column="40" lean-forward="true" selection-start-line="58" selection-start-column="40" selection-end-line="58" selection-end-column="40" />
+          <caret line="59" column="120" selection-start-line="59" selection-start-column="120" selection-end-line="59" selection-end-column="120" />
+          <caret line="60" column="25" lean-forward="true" selection-start-line="60" selection-start-column="25" selection-end-line="60" selection-end-column="25" />
+          <caret line="61" column="42" lean-forward="true" selection-start-line="61" selection-start-column="42" selection-end-line="61" selection-end-column="42" />
+          <caret line="62" column="15" lean-forward="true" selection-start-line="62" selection-start-column="15" selection-end-line="62" selection-end-column="15" />
+          <caret line="63" column="120" selection-start-line="63" selection-start-column="120" selection-end-line="63" selection-end-column="120" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/common/utils/AesTestOne.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="286">
+          <caret line="66" column="26" selection-start-line="66" selection-start-column="26" selection-end-line="66" selection-end-column="26" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/controller/WechatScanLoginController.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="299">
+          <caret line="104" column="44" selection-start-line="104" selection-start-column="44" selection-end-line="104" selection-end-column="44" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/.idea/workspace.xml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-8661">
+          <caret line="740" column="49" selection-start-line="740" selection-start-column="49" selection-end-line="740" selection-end-column="49" />
+        </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="98">
+          <caret line="1508" column="39" selection-start-line="1508" selection-start-column="39" selection-end-line="1508" selection-end-column="39" />
+          <folding>
+            <element signature="method#importZipUsers#0;class#SmartUserController#0" />
+            <element signature="e#47329#47346#0" />
+            <element signature="method#smartUserExport#0;class#SmartUserController#0" />
+            <element signature="method#QueryDepartmentTreeRecords#0;class#SmartUserController#0" />
+            <element signature="method#QueryParentDepartments#0;class#SmartUserController#0" />
+            <element signature="method#deleteSmartUserById#0;class#SmartUserController#0" />
+            <element signature="method#downloadUserExcel#0;class#SmartUserController#0" />
+            <element signature="method#queryStudents#0;class#SmartUserController#0" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
   </component>
   <component name="masterDetails">
     <states>

+ 4 - 0
src/main/java/com/template/api/SmartEvaluateStudentControllerAPI.java

@@ -37,4 +37,8 @@ public interface SmartEvaluateStudentControllerAPI {
     @ApiOperation(value = "学生评分", httpMethod = "POST")
     public CommonResult evaluateScore(@Validated @RequestBody JSONObject jsonObject);
 
+    @RequestMapping(value = "/queryDetailScore")
+    @ApiOperation(value = "查看学生评分详情", httpMethod = "POST")
+    public CommonResult queryDetailScore(Integer id);
+
 }

+ 3 - 1
src/main/java/com/template/api/SmartFaceDiscernControllerAPI.java

@@ -1,6 +1,7 @@
 package com.template.api;
 
 import com.template.model.result.CommonResult;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -8,7 +9,8 @@ import org.springframework.web.bind.annotation.RequestParam;
 @RequestMapping("/api/smartFaceDiscern")
 public interface SmartFaceDiscernControllerAPI {
 
-        @GetMapping(value = "/track")
+    @GetMapping(value = "/track")
+    @ApiOperation(value = "学生轨迹", notes = "学生轨迹", httpMethod = "GET")
     CommonResult track(@RequestParam Integer id, @RequestParam int dateTime);
 
 }

+ 6 - 4
src/main/java/com/template/api/SmartWarningControllerAPI.java

@@ -2,6 +2,7 @@ package com.template.api;
 
 import com.baomidou.mybatisplus.extension.api.R;
 import com.template.model.dto.OperationWarningDto;
+import com.template.model.dto.WarningDeletePushDto;
 import com.template.model.dto.WarningSavePushDto;
 import com.template.model.pojo.SmartWarning;
 import com.template.model.result.CommonResult;
@@ -12,6 +13,7 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 
 /**
  * @Author: binguo
@@ -60,7 +62,7 @@ public interface SmartWarningControllerAPI {
 
     @GetMapping(value = "/warningUserList")
     @ApiOperation(value = "预警推送用户分页", notes = "预警推送用户分页", httpMethod = "GET")
-    CommonResult warningUserList(@RequestParam int currentPage, @RequestParam int pageCount,Integer departmentId,String name);
+    CommonResult warningUserList(@RequestParam int currentPage, @RequestParam int pageCount,String name);
 
     @GetMapping(value = "/warningPushList")
     @ApiOperation(value = "可推送用户展示", notes = "预警推送用户分页", httpMethod = "GET")
@@ -70,9 +72,9 @@ public interface SmartWarningControllerAPI {
     @ApiOperation(value = "添加预警可推送用户", notes = "添加预警可推送用户", httpMethod = "POST")
     CommonResult warningSavePush(@RequestBody WarningSavePushDto warningSavePushDto);
 
-    @GetMapping(value = "/warningDeletePush")
-    @ApiOperation(value = "删除预警可推送用户", notes = "删除预警可推送用户", httpMethod = "GET")
-    CommonResult warningDeletePush(Integer id);
+    @PostMapping(value = "/warningDeletePush")
+    @ApiOperation(value = "删除预警可推送用户", notes = "删除预警可推送用户", httpMethod = "POST")
+    CommonResult warningDeletePush(@RequestBody WarningDeletePushDto warningDeletePushDto);
 
 
 }

+ 5 - 0
src/main/java/com/template/api/WechatScanLoginControllerAPI.java

@@ -88,4 +88,9 @@ public interface WechatScanLoginControllerAPI {
     @RequestMapping(value = "/vertifyMessage")
     @ResponseBody
     public CommonResult vertifyMessage(String phone,String code, String wxcode);
+
+    @RequestMapping(value = "/queryPhoneBook")
+    @ResponseBody
+    public CommonResult queryPhoneBook(@RequestParam Integer id);
+    
 }

+ 12 - 7
src/main/java/com/template/common/utils/SendSms.java

@@ -27,21 +27,26 @@ public class SendSms {
 
 
     //腾讯云上的签名
-    private static String secretID="AKIDDPo13qZCZqtgJsGQL7AyYu1wc7QVMyLl";
+//    private static String secretID="AKIDDPo13qZCZqtgJsGQL7AyYu1wc7QVMyLl";
+    private static String secretID="AKIDCPVZdcWIxgHpy5FYxVyPiqkZGrhdXUBg";
+
     //腾讯云上的密钥
+//    private static String secretKey="JPGrELFySiv0pOrKOPEwSnulOq9IPPDr";
+    private static String secretKey="NkyCN3cz97qKaeXLvHOGxOcdS8f184pL";
 
-    private static String secretKey="JPGrELFySiv0pOrKOPEwSnulOq9IPPDr";
     //短信应用id
+//    private static String sdkAppid="1400813506";
+    private static String sdkAppid="1400885930";
 
-    private static String sdkAppid="1400813506";
     //短信签名内容
+//    private static String signName="华仁享学教育";
+    private static String signName="江西省创海科技有限公司";
 
-    private static String signName="华仁享学教育";
     //模板Id
+//    private static String templateId="1770016";
+    private static String templateId="2060673";
 
-    private static String templateId="1770016";
     //验证码有效时长
-
     private static String smsMin="1";
 
 
@@ -169,7 +174,7 @@ public class SendSms {
         //这里定义一个存储电话号码的数组
 
         String tels="+8615779633758"; // 手机号前面记得带上国家区域编码
-        String test = sendSms("18679823739","123456");
+        String test = sendSms("+8615779633758","123456");
 
     }
 

+ 6 - 6
src/main/java/com/template/config/smsConfig.java

@@ -15,22 +15,22 @@ import org.springframework.stereotype.Component;
 @ConfigurationProperties(prefix = "tencentcloud")
 @Data
 public class smsConfig {
-    //腾讯云上的签名
 
+    //腾讯云上的签名  AKIDCPVZdcWIxgHpy5FYxVyPiqkZGrhdXUBg
     private String secretID;
-    //腾讯云上的密钥
 
+    //腾讯云上的密钥   NkyCN3cz97qKaeXLvHOGxOcdS8f184pL
     private String secretKey;
-    //短信应用id
 
+    //短信应用id  1400885930
     private String sdkAppid;
-    //短信签名内容
 
+    //短信签名内容  	江西省创海科技有限公司
     private String signName;
-    //模板Id
 
+    //模板Id   2060673
     private String templateId;
-    //验证码有效时长
 
+    //验证码有效时长
     private String smsMin;
 }

+ 3 - 0
src/main/java/com/template/controller/SmartAttendanceController.java

@@ -79,6 +79,9 @@ public class SmartAttendanceController implements SmartAttendanceControllerAPI {
         PersonalLeaveListSchoolPeriodRecordsResult result = seewoClient.invoke(request);
         System.out.println("出参:" +result);
 
+        //新增请假数据
+
+
         return CommonResult.ok("操作成功");
     }
 }

+ 24 - 3
src/main/java/com/template/controller/SmartEvaluateStudentController.java

@@ -221,7 +221,7 @@ public class SmartEvaluateStudentController implements SmartEvaluateStudentContr
                 double min = Double.parseDouble(range[0]);
                 double max = Double.parseDouble(range[1]);
                 if (smartEvaluateSdetail.getScoreNum()>=min && smartEvaluateSdetail.getScoreNum()<=max){
-                    scoreLevel = rule.get(i).getLevel();
+                    scoreLevel = rule.get(j).getLevel();
                     break;
                 }
             }
@@ -234,7 +234,7 @@ public class SmartEvaluateStudentController implements SmartEvaluateStudentContr
             }
         }
         student.setScoreComment(smartEvaluateSdetailList.getScoreComment());
-        student.setScoreNum(total);
+        student.setScoreNum(total/scoreList.size());
         String scoreLevel = "";
         QueryWrapper<SmartSubjectRule> queryWrapper2 = new QueryWrapper<>();
         queryWrapper2.eq("deleted", 0);
@@ -244,7 +244,7 @@ public class SmartEvaluateStudentController implements SmartEvaluateStudentContr
             String[] range = rule.get(i).getScoreRange().split("-");
             double min = Double.parseDouble(range[0]);
             double max = Double.parseDouble(range[1]);
-            if (total>=min && total<=max){
+            if (student.getScoreNum()>=min && student.getScoreNum()<=max){
                 scoreLevel = rule.get(i).getLevel();
                 break;
             }
@@ -253,4 +253,25 @@ public class SmartEvaluateStudentController implements SmartEvaluateStudentContr
         smartEvaluateStudentService.updateSmartEvaluateStudent(student);
         return CommonResult.ok();
     }
+
+    @PassToken
+    public CommonResult queryDetailScore(Integer id){
+        if (id==null){
+            return CommonResult.fail("请传入id");
+        }
+        SmartEvaluateStudent smartEvaluateStudent = smartEvaluateStudentService.getSmartEvaluateStudentById(id);
+        if (smartEvaluateStudent==null){
+            return CommonResult.fail("未查询到相关信息");
+        }
+        QueryWrapper<SmartEvaluateSdetail> queryWrapper1 = new QueryWrapper<>();
+        queryWrapper1.eq("deleted", 0);
+        queryWrapper1.eq("term", smartEvaluateStudent.getTerm());
+        queryWrapper1.eq("card_no", smartEvaluateStudent.getCardNo());
+        List<SmartEvaluateSdetail> list = smartEvaluateSdetailService.getSmartEvaluateSdetailByKey(queryWrapper1);
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("id", smartEvaluateStudent.getId());
+        jsonObject.put("scoreComment",smartEvaluateStudent.getScoreComment());
+        jsonObject.put("scoreList", list);
+        return CommonResult.ok(jsonObject);
+    }
 }

+ 52 - 7
src/main/java/com/template/controller/SmartUserController.java

@@ -13,10 +13,7 @@ import com.template.common.utils.*;
 import com.template.config.ControlConfig;
 import com.template.config.SeewoConfig;
 import com.template.model.enumModel.*;
-import com.template.model.pojo.SmartClass;
-import com.template.model.pojo.SmartDepartment;
-import com.template.model.pojo.SmartGrade;
-import com.template.model.pojo.SmartUser;
+import com.template.model.pojo.*;
 import com.template.model.request.*;
 import com.template.model.result.CommonResult;
 import com.template.model.result.PageUtils;
@@ -85,6 +82,9 @@ public class SmartUserController implements SmartUserControllerAPI {
     @Autowired
     private SmartDepartmentService smartDepartmentService;
 
+    @Autowired
+    private SmartIdentityService smartIdentityService;
+
     @Override
     public CommonResult logoffAccount(useridsRequest ur, BindingResult bindingResult) {
         if (bindingResult.hasErrors()) {
@@ -1345,9 +1345,48 @@ public class SmartUserController implements SmartUserControllerAPI {
             //返回的结果中 code为1表示成功
             String bsResult = RequestUtils.httpPost(url, jsonobject.toJSONString());
 
-            if (!bsResult.contains("更新成功")) {
-                return CommonResult.fail("百胜学生信息更新失败");
+            if(bsResult.contains("人员不存在或已删除")){
+                //获取班级Uid
+                SmartClass classData = smartClassService.getSmartClassById(usur.getSchoolClass());
+                if (classData == null) {
+                    return CommonResult.fail("班级数据无效,新增失败");
+                }
+
+                //region 百胜新增学生信息
+                String insertUrl = controlConfig.getUrl() + "student/create";
+
+                JSONObject insertJsonobject = new JSONObject();
+                insertJsonobject.put("appid", appId);
+                String insertStr = "{\"student_name\":\"" + usur.getName() + "\",\"classtab_no\":\"" + classData.getBsClassNo() + "\",\"student_number\":\"" + usur.getCardNo() + "\",\"student_sex\":\"" + usur.getSexId() + "\",\"student_photo\":\"" + imageUtils.getBase64Url(usur.getHeadImage()) + "\",\"student_tgno\":\"" + eTimeGroup.stringOf(usur.getTimeGroupId()) + "\"}";
+                String insertAesStr = URLEncoder.encode(AesTestOne.encrypt(insertStr, controlConfig.getAppSecret()), "UTF-8");
+                insertJsonobject.put("data", insertAesStr);
+                insertJsonobject.put("schoolno", schoolno);
+                insertJsonobject.put("timestamp", timestamp);
+
+                String insertMd5Str = "appid=" + appId + "&data={\"student_name\":\"" + usur.getName() + "\",\"classtab_no\":\"" + classData.getBsClassNo() + "\",\"student_number\":\"" + usur.getCardNo() + "\",\"student_sex\":\"" + usur.getSexId() + "\",\"student_photo\":\"" + imageUtils.getBase64Url(usur.getHeadImage()) + "\",\"student_tgno\":\"" + eTimeGroup.stringOf(usur.getTimeGroupId()) + "\"}" + "&schoolno=" + schoolno + "&timestamp=" + timestamp + "&key=" + appSecret;
+                String insertSign = CommonUtil.MD5(insertMd5Str);
+                //sign签名
+                insertJsonobject.put("sign", insertSign);
+
+                //返回的结果中 code为1表示成功
+                String insertBsResult = RequestUtils.httpPost(insertUrl, insertJsonobject.toJSONString());
+
+                if (insertBsResult.contains("添加成功")) {
+                    ObjectMapper objectMapper = new ObjectMapper();
+                    BsStudentVo grade = objectMapper.readValue(insertBsResult, BsStudentVo.class);
+
+                    // URL解码
+                    String decodedUrl = URLDecoder.decode(grade.getData(), "UTF-8");
+
+                    BsStudentNoVo studentNo = objectMapper.readValue(decrypt(decodedUrl, controlConfig.getAppSecret()), BsStudentNoVo.class);
+                    su.setBsStudentNo(studentNo.getStudent_no());
+                }
+                //endregion
+                if (!insertBsResult.contains("更新成功")) {
+                    return CommonResult.fail("百胜学生信息更新失败");
+                }
             }
+
             //endregion
 
         } else if (usur.getIdentityId().intValue() == eIdentityStatu.Teacher.getValue()) {//教师
@@ -1473,8 +1512,14 @@ public class SmartUserController implements SmartUserControllerAPI {
             List<SmartUser> students = smartUserService.getSmartUserByIds(studentIds);
             List<SmartClass> classs = smartClassService.list(null);
 
+            List<SmartIdentity> idnetitys = smartIdentityService.list(null);
+
             for (UserVo data : result.getList()) {
-                data.setIdentity(eIdentityStatu.stringOf(data.getIdentityId()));
+                Optional<SmartIdentity> identityData = idnetitys.stream().filter(e -> e.getId().equals(data.getIdentityId())).findFirst();
+                if(identityData != null && identityData.isPresent()){
+                    data.setIdentity(identityData.get().getName());
+                }
+
                 data.setSex(eSexStatu.stringOf(data.getSexId()));
                 Optional<SmartDepartment> departmentData = departments == null ? null : departments.stream().filter(e -> e.getId().equals(data.getDepartmentId())).findFirst();
                 if (departmentData != null && departmentData.isPresent()) {

+ 73 - 21
src/main/java/com/template/controller/SmartWarningController.java

@@ -2,6 +2,7 @@ package com.template.controller;
 
 
 import cn.hutool.poi.excel.ExcelUtil;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -10,7 +11,9 @@ import com.template.api.SmartWarningControllerAPI;
 import com.template.common.result.ResponseStatusEnum;
 import com.template.common.utils.*;
 import com.template.model.dto.OperationWarningDto;
+import com.template.model.dto.WarningDeletePushDto;
 import com.template.model.dto.WarningSavePushDto;
+import com.template.model.dto.WarningUserDto;
 import com.template.model.pojo.SmartDepartment;
 import com.template.model.pojo.SmartUser;
 import com.template.model.pojo.SmartWarning;
@@ -23,6 +26,7 @@ import com.template.services.SmartUserService;
 import com.template.services.SmartWarningService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 import org.springframework.web.bind.annotation.RequestParam;
@@ -239,24 +243,24 @@ public class SmartWarningController implements SmartWarningControllerAPI {
     }
 
     @Override
-    public CommonResult warningUserList(int currentPage, int pageCount, Integer departmentId, String name) {
+    public CommonResult warningUserList(int currentPage, int pageCount, String name) {
         //获取该部门下的所有子级部门ID
-        List<Integer> childDepartmentIds = new ArrayList<>();
-        List<SmartDepartment> departments = smartDepartmentService.list(null);
-        childDepartmentIds.add(departmentId);
-        QueryDepartmentTreeRecords(departmentId, departments, childDepartmentIds);
-
-        if (departmentId == null) {
-            childDepartmentIds = null;
-        }
+//        List<Integer> childDepartmentIds = new ArrayList<>();
+//        List<SmartDepartment> departments = smartDepartmentService.list(null);
+//        childDepartmentIds.add(departmentId);
+//        QueryDepartmentTreeRecords(departmentId, departments, childDepartmentIds);
+//
+//        if (departmentId == null) {
+//            childDepartmentIds = null;
+//        }
 
-        PageUtils<UserVo> result = smartUserService.warningUserList(currentPage, pageCount, childDepartmentIds, name);
+        PageUtils<WarningUserDto> result = smartUserService.warningUserList(currentPage, pageCount, name);
         return CommonResult.ok(result);
     }
 
     @Override
     public CommonResult warningPushList() {
-        List<SmartUser> names = smartUserService.warningPushList();
+        List<WarningUserDto> names = smartUserService.warningPushList();
 
         return CommonResult.ok(names);
     }
@@ -269,35 +273,83 @@ public class SmartWarningController implements SmartWarningControllerAPI {
             return CommonResult.fail(ResponseStatusEnum.PARAM_ERROR);
         }
 
-        List<SmartUser> smartUsers = smartUserService.getSmartUserByIds(ids);
+        //        获取所有可推送的人
+        LambdaQueryWrapper<SmartUser> wrapper=new LambdaQueryWrapper<>();
+        wrapper.eq(SmartUser::getIsCancel, 0)
+                .eq(SmartUser::getIsPush,1);
+        List<SmartUser> list = smartUserService.list(wrapper);
+
+//        需要删除的
+        ArrayList<Integer> pushDeleteIds = new ArrayList<>();
+//        不用修改的
+        ArrayList<Integer> pushIds = new ArrayList<>();
+        for (SmartUser smartUser : list) {
+            Integer id = smartUser.getId();
+            if (!ids.contains(id)) {
+                pushDeleteIds.add(id);
+            }else {
+                pushIds.add(id);
+            }
+        }
+//      获取需要添加的人
+        ArrayList<Integer> savePushIds = new ArrayList<>();
+        for (Integer id : ids) {
+            if (!pushIds.contains(id)) {
+                savePushIds.add(id);
+            }
+        }
+
+//        添加
+        List<SmartUser> smartUsers = smartUserService.getSmartUserByIds(savePushIds);
 
         for (SmartUser smartUser : smartUsers) {
             String gzhOpenId = smartUser.getGzhOpenId();
             if (ObjectUtils.isEmpty(gzhOpenId)) {
-                return CommonResult.fail(smartUser.getName()+ "未关联公众号");
+                return CommonResult.fail(smartUser.getName() + "未关联公众号");
             }
             smartUser.setIsPush(1);
             smartUserService.updateSmartUser(smartUser);
         }
 
+//        删除
+        List<SmartUser> smartUsersDelete = smartUserService.getSmartUserByIds(pushDeleteIds);
+        ArrayList<SmartUser> smartUsersUpdate = new ArrayList<>();
+        for (SmartUser smartUser : smartUsersDelete) {
+            smartUser.setIsPush(0);
+            smartUsersUpdate.add(smartUser);
+        }
+        smartUserService.updateBatchById(smartUsersUpdate);
+
         return CommonResult.ok();
     }
 
     @Override
-    public CommonResult warningDeletePush(Integer id) {
+    public CommonResult warningDeletePush(WarningDeletePushDto warningDeletePushDto) {
+        List<Integer> ids = warningDeletePushDto.getIds();
 
-        if (ObjectUtils.isEmpty(id)) {
+        if (ObjectUtils.isEmpty(ids) && ids.size() == 0) {
             return CommonResult.fail();
         }
 
-        SmartUser smartById = smartUserService.getSmartById(id);
 
-        if (ObjectUtils.isEmpty(smartById)) {
-            return CommonResult.fail();
+        List<SmartUser> smartUserList = smartUserService.getSmartUserList(ids);
+
+        if (ObjectUtils.isEmpty(smartUserList)&&smartUserList.size()==0 ) {
+            return CommonResult.fail("无该用户");
         }
-        smartById.setIsPush(0);
-        int result = smartUserService.updateSmartUser(smartById);
-        return result > 0 ? CommonResult.ok("删除成功") : CommonResult.fail("删除失败");
+        ArrayList<SmartUser> smartUsers = new ArrayList<>();
+
+        for (SmartUser smartUser : smartUserList) {
+            smartUser.setIsPush(0);
+            smartUsers.add(smartUser);
+        }
+
+
+        boolean b = smartUserService.updateBatchById(smartUsers);
+        if (b) {
+            return CommonResult.ok("删除成功");
+        }
+        return CommonResult.fail("删除失败");
     }
 
 

+ 513 - 361
src/main/java/com/template/controller/WechatScanLoginController.java

@@ -12,15 +12,19 @@ import com.template.api.WechatScanLoginControllerAPI;
 import com.template.common.constanst.Constanst;
 import com.template.common.result.ResponseStatusEnum;
 import com.template.common.utils.*;
+import com.template.model.enumModel.eIdentityStatu;
 import com.template.model.evaluate.student.SmartEvaluateStudent;
 import com.template.model.evaluate.student.SmartSubjectManage;
-import com.template.model.pojo.SmartAuthority;
-import com.template.model.pojo.SmartUser;
-import com.template.model.pojo.SmsCode;
+import com.template.model.phoneBook.BookUser;
+import com.template.model.phoneBook.ClassBook;
+import com.template.model.phoneBook.GradeBook;
+import com.template.model.pojo.*;
 import com.template.model.result.CommonResult;
 import com.template.model.result.PageUtils;
 import com.template.model.tongji.*;
+import com.template.model.vo.AffiliateParentVo;
 import com.template.model.vo.LoginVO;
+import com.template.model.vo.WechatUserVo;
 import com.template.model.weixin.AccessToken;
 import com.template.model.weixin.HttpParame;
 import com.template.model.weixin.WechatUserUnionID;
@@ -38,10 +42,8 @@ import java.io.UnsupportedEncodingException;
 import java.math.BigDecimal;
 import java.net.URLEncoder;
 import java.text.ParseException;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * Title: WechatScanLoginController
@@ -53,382 +55,532 @@ import java.util.Map;
 @Controller
 public class WechatScanLoginController implements WechatScanLoginControllerAPI {
 
-	@Autowired
-	private WechatScanLoginService wechatScanLoginService;
-	@Autowired
-	public SmartUserService smartUserService;
-	@Autowired
-	public SmartAuthorityService smartAuthorityService;
-	@Autowired
-	public SmartAuthorGroupService smartAuthorGroupService;
-	@Autowired
-	public SmsCodeService smsCodeService;
-
-	/**
-	 * Title: list
-	 * Description: 重定向到微信扫码登录二维码页面
-	 * 此处显示要微信要扫描的二维码
-	 *
-	 * @param model
-	 * @return
-	 * @throws UnsupportedEncodingException
-	 */
-	@Override
-	@PassToken
-	public String login(Model model) throws UnsupportedEncodingException {
-		Map<String, String> wechatLoginUrl = wechatScanLoginService.wechatLoginUrl();
-		String url = wechatLoginUrl.get("url");
-		System.out.println(url);
-		return "redirect:" + url;
-	}
+    @Autowired
+    private WechatScanLoginService wechatScanLoginService;
+    @Autowired
+    public SmartUserService smartUserService;
+    @Autowired
+    public SmartAuthorityService smartAuthorityService;
+    @Autowired
+    public SmartAuthorGroupService smartAuthorGroupService;
+    @Autowired
+    public SmartDepartmentService smartDepartmentService;
+    @Autowired
+    public SmsCodeService smsCodeService;
+    @Autowired
+    public SmartGradeService smartGradeService;
+    @Autowired
+    public SmartClassService smartClassService;
 
-	/**
-	 * Title: callback
-	 * Description: 回调地址处理
-	 *
-	 * @param code
-	 * @param state
-	 * @return
-	 * @return
-	 */
-	@Override
-	@PassToken
-	public String callback(String code, String state) throws UnsupportedEncodingException {
-		System.out.println(code+"====="+state);
-		if (code != null && state != null) {
-			// 验证state为了用于防止跨站请求伪造攻击
-			String decrypt = AesUtil.decrypt(AesUtil.parseHexStr2Byte(state), AesUtil.PASSWORD_SECRET_KEY, 16);
-			if (!decrypt.equals(Constanst.PWD_MD5 + DateUtils.getYYYYMMdd())) {
-				return "redirect:"+HttpParame.FRONT_URI+"/#/login?message=" + URLEncoder.encode("请勿非法进入", "UTF-8");
-			}
-			AccessToken access = wechatScanLoginService.getAccessToken(code);
-			System.out.println("access:"+access);
-			if (access != null) {
-				String openid = access.getOpenid();
-				System.out.println("openid: "+openid);
-				SmartUser user = wechatScanLoginService.selectByOpenid(openid);
-				if (user==null) {		/*不存在*/
-					return "redirect:"+HttpParame.FRONT_URI+"/#/login?message=" + URLEncoder.encode("请绑定信息", "UTF-8");
-				} else {
-					String token = JWTUtil.getToken(user, null);
-					QueryWrapper<SmartAuthority> queryWrapper1 = new QueryWrapper<>();
-					queryWrapper1.eq("deleted", 0);
-					queryWrapper1.eq("user_id", user.getId());
-					List<SmartAuthority> query = smartAuthorityService.getAuthorByKey(queryWrapper1);
-					if (query.size()>0){
-						return "redirect:"+HttpParame.FRONT_URI+"/#/wanzai/home?token=" + token;
-					} else {
-						return "redirect:"+HttpParame.FRONT_URI+"/#/login?message=" + URLEncoder.encode("无登录权限", "UTF-8");
-					}
-				}
-			}
-		}
-		return null;
-	}
+    /**
+     * Title: list
+     * Description: 重定向到微信扫码登录二维码页面
+     * 此处显示要微信要扫描的二维码
+     *
+     * @param model
+     * @return
+     * @throws UnsupportedEncodingException
+     */
+    @Override
+    @PassToken
+    public String login(Model model) throws UnsupportedEncodingException {
+        Map<String, String> wechatLoginUrl = wechatScanLoginService.wechatLoginUrl();
+        String url = wechatLoginUrl.get("url");
+        System.out.println(url);
+        return "redirect:" + url;
+    }
 
-	/**
-	 * Title: bindingUserMac2
-	 * Description: 跳转到绑定用户系统帐号页面
-	 * @return
-	 */
-	@Override
-	@PassToken
-	public String bindUserMac(String phone,String messageCode) throws UnsupportedEncodingException {
-		if (StringUtils.isBlank(phone) || StringUtils.isBlank(messageCode)){
-			return "redirect:"+HttpParame.FRONT_URI+"/#/login?message=" + URLEncoder.encode("请输入信息", "UTF-8");
-		}
-		Map<String, String> wechatLoginUrl = wechatScanLoginService.wechatBindUrl(phone,messageCode);
-		String url = wechatLoginUrl.get("url");
-		System.out.println(url);
-		return "redirect:" + url;
-	}
+    /**
+     * Title: callback
+     * Description: 回调地址处理
+     *
+     * @param code
+     * @param state
+     * @return
+     */
+    @Override
+    @PassToken
+    public String callback(String code, String state) throws UnsupportedEncodingException {
+        System.out.println(code + "=====" + state);
+        if (code != null && state != null) {
+            // 验证state为了用于防止跨站请求伪造攻击
+            String decrypt = AesUtil.decrypt(AesUtil.parseHexStr2Byte(state), AesUtil.PASSWORD_SECRET_KEY, 16);
+            if (!decrypt.equals(Constanst.PWD_MD5 + DateUtils.getYYYYMMdd())) {
+                return "redirect:" + HttpParame.FRONT_URI + "/#/login?message=" + URLEncoder.encode("请勿非法进入", "UTF-8");
+            }
+            AccessToken access = wechatScanLoginService.getAccessToken(code);
+            System.out.println("access:" + access);
+            if (access != null) {
+                String openid = access.getOpenid();
+                System.out.println("openid: " + openid);
+                SmartUser user = wechatScanLoginService.selectByOpenid(openid);
+                if (user == null) {        /*不存在*/
+                    return "redirect:" + HttpParame.FRONT_URI + "/#/login?message=" + URLEncoder.encode("请绑定信息", "UTF-8");
+                } else {
+                    String token = JWTUtil.getToken(user, null);
+                    QueryWrapper<SmartAuthority> queryWrapper1 = new QueryWrapper<>();
+                    queryWrapper1.eq("deleted", 0);
+                    queryWrapper1.eq("user_id", user.getId());
+                    List<SmartAuthority> query = smartAuthorityService.getAuthorByKey(queryWrapper1);
+                    if (query.size() > 0) {
+                        return "redirect:" + HttpParame.FRONT_URI + "/#/wanzai/home?token=" + token;
+                    } else {
+                        return "redirect:" + HttpParame.FRONT_URI + "/#/login?message=" + URLEncoder.encode("无登录权限", "UTF-8");
+                    }
+                }
+            }
+        }
+        return null;
+    }
 
-	@Override
-	@PassToken
-	public String bindcallback(String code, String state, String phone,String messageCode) throws UnsupportedEncodingException {
-		System.out.println(code+"==="+state+"=="+messageCode);
-		if (code != null && state != null) {
-			// 验证state为了用于防止跨站请求伪造攻击
-			String decrypt = AesUtil.decrypt(AesUtil.parseHexStr2Byte(state), AesUtil.PASSWORD_SECRET_KEY, 16);
-			if (!decrypt.equals(Constanst.PWD_MD5 + DateUtils.getYYYYMMdd())) {
-				return "redirect:"+HttpParame.FRONT_URI+"/#/login?message=" + URLEncoder.encode("请勿非法进入", "UTF-8");
-			}
-			AccessToken access = wechatScanLoginService.getAccessToken(code);
-			if (access != null) {
-				String openid = access.getOpenid();
-				QueryWrapper<SmsCode> queryWrapper1 = new QueryWrapper<>();
-				queryWrapper1.eq("deleted", 0);
-				queryWrapper1.eq("is_verify",0);
-				queryWrapper1.eq("phone_number",phone);
-				queryWrapper1.eq("code",messageCode);
-				queryWrapper1.ge("expiration_time", new Date());
-				List<SmsCode> listc = smsCodeService.getSmsCodeByKey(queryWrapper1);
-				if (listc.isEmpty()){
-					return "redirect:"+HttpParame.FRONT_URI+"/#/login?message=" + URLEncoder.encode("验证码已失效", "UTF-8");
-				}
-				QueryWrapper<SmartUser> queryWrapper2 = new QueryWrapper<>();
-				queryWrapper2.eq("deleted", 0);
-				queryWrapper2.eq("phone", phone);
-				List<SmartUser> userc = smartUserService.list(queryWrapper2);
-				if (userc.isEmpty()){
-					return "redirect:"+HttpParame.FRONT_URI+"/#/login?message=" + URLEncoder.encode("用户不存在", "UTF-8");
-				}
-				userc.get(0).setOpenId(openid);
-				int m = wechatScanLoginService.updateSmartUser(userc.get(0));
-				if (m>0){
-					String token = JWTUtil.getToken(userc.get(0),null);
-					QueryWrapper<SmartAuthority> queryWrapper3 = new QueryWrapper<>();
-					queryWrapper3.eq("deleted", 0);
-					queryWrapper3.eq("user_id", userc.get(0).getId());
-					List<SmartAuthority> query = smartAuthorityService.getAuthorByKey(queryWrapper3);
-					if (query.size()>0){
-						return "redirect:"+HttpParame.FRONT_URI+"/#/wanzai/home?token=" + token;
-					} else {
-						return "redirect:"+HttpParame.FRONT_URI+"/#/login?message=" + URLEncoder.encode("无登录权限", "UTF-8");
-					}
-				}
-			}
-		}
-		return "redirect:"+HttpParame.FRONT_URI+"/#/login?message=" + URLEncoder.encode("系统异常", "UTF-8");
-	}
+    /**
+     * Title: bindingUserMac2
+     * Description: 跳转到绑定用户系统帐号页面
+     *
+     * @return
+     */
+    @Override
+    @PassToken
+    public String bindUserMac(String phone, String messageCode) throws UnsupportedEncodingException {
+        if (StringUtils.isBlank(phone) || StringUtils.isBlank(messageCode)) {
+            return "redirect:" + HttpParame.FRONT_URI + "/#/login?message=" + URLEncoder.encode("请输入信息", "UTF-8");
+        }
+        Map<String, String> wechatLoginUrl = wechatScanLoginService.wechatBindUrl(phone, messageCode);
+        String url = wechatLoginUrl.get("url");
+        System.out.println(url);
+        return "redirect:" + url;
+    }
 
-	@Override
-	@PassToken
-    public String insertMonthMeter(String month){
-		if (month==null){
-			month=TimeExchange2.getMonth();
-		}
-		wechatScanLoginService.insertMonthMeter(month);
-		return "插入完毕";
-	}
+    @Override
+    @PassToken
+    public String bindcallback(String code, String state, String phone, String messageCode) throws UnsupportedEncodingException {
+        System.out.println(code + "===" + state + "==" + messageCode);
+        if (code != null && state != null) {
+            // 验证state为了用于防止跨站请求伪造攻击
+            String decrypt = AesUtil.decrypt(AesUtil.parseHexStr2Byte(state), AesUtil.PASSWORD_SECRET_KEY, 16);
+            if (!decrypt.equals(Constanst.PWD_MD5 + DateUtils.getYYYYMMdd())) {
+                return "redirect:" + HttpParame.FRONT_URI + "/#/login?message=" + URLEncoder.encode("请勿非法进入", "UTF-8");
+            }
+            AccessToken access = wechatScanLoginService.getAccessToken(code);
+            if (access != null) {
+                String openid = access.getOpenid();
+                QueryWrapper<SmsCode> queryWrapper1 = new QueryWrapper<>();
+                queryWrapper1.eq("deleted", 0);
+                queryWrapper1.eq("is_verify", 0);
+                queryWrapper1.eq("phone_number", phone);
+                queryWrapper1.eq("code", messageCode);
+                queryWrapper1.ge("expiration_time", new Date());
+                List<SmsCode> listc = smsCodeService.getSmsCodeByKey(queryWrapper1);
+                if (listc.isEmpty()) {
+                    return "redirect:" + HttpParame.FRONT_URI + "/#/login?message=" + URLEncoder.encode("验证码已失效", "UTF-8");
+                }
+                QueryWrapper<SmartUser> queryWrapper2 = new QueryWrapper<>();
+                queryWrapper2.eq("deleted", 0);
+                queryWrapper2.eq("phone", phone);
+                List<SmartUser> userc = smartUserService.list(queryWrapper2);
+                if (userc.isEmpty()) {
+                    return "redirect:" + HttpParame.FRONT_URI + "/#/login?message=" + URLEncoder.encode("用户不存在", "UTF-8");
+                }
+                userc.get(0).setOpenId(openid);
+                int m = wechatScanLoginService.updateSmartUser(userc.get(0));
+                if (m > 0) {
+                    String token = JWTUtil.getToken(userc.get(0), null);
+                    QueryWrapper<SmartAuthority> queryWrapper3 = new QueryWrapper<>();
+                    queryWrapper3.eq("deleted", 0);
+                    queryWrapper3.eq("user_id", userc.get(0).getId());
+                    List<SmartAuthority> query = smartAuthorityService.getAuthorByKey(queryWrapper3);
+                    if (query.size() > 0) {
+                        return "redirect:" + HttpParame.FRONT_URI + "/#/wanzai/home?token=" + token;
+                    } else {
+                        return "redirect:" + HttpParame.FRONT_URI + "/#/login?message=" + URLEncoder.encode("无登录权限", "UTF-8");
+                    }
+                }
+            }
+        }
+        return "redirect:" + HttpParame.FRONT_URI + "/#/login?message=" + URLEncoder.encode("系统异常", "UTF-8");
+    }
 
-	@Override
-	@PassToken
-	public String insertDayMeter(String day){
-		if (day==null){
-			day=TimeExchange2.getDateStr();
-		}
-		wechatScanLoginService.insertDayMeter(day);
-		return "插入完毕";
-	}
+    @Override
+    @PassToken
+    public String insertMonthMeter(String month) {
+        if (month == null) {
+            month = TimeExchange2.getMonth();
+        }
+        wechatScanLoginService.insertMonthMeter(month);
+        return "插入完毕";
+    }
 
-	/**
-	 * Description: 用户类别统计
-	 */
-	@Override
-	@PassToken
-	public CommonResult getUserIdTj(){
-		List<Tj> list = wechatScanLoginService.getUserIdTj();
-		return CommonResult.ok(list);
-	}
+    @Override
+    @PassToken
+    public String insertDayMeter(String day) {
+        if (day == null) {
+            day = TimeExchange2.getDateStr();
+        }
+        wechatScanLoginService.insertDayMeter(day);
+        return "插入完毕";
+    }
 
-	/**
-	 * Description: 用户总数
-	 */
-	@Override
-	@PassToken
-	public CommonResult getUserIdTjt(){
-		All list = wechatScanLoginService.getUserIdTjt();
-		return CommonResult.ok(list);
-	}
+    /**
+     * Description: 用户类别统计
+     */
+    @Override
+    @PassToken
+    public CommonResult getUserIdTj() {
+        List<Tj> list = wechatScanLoginService.getUserIdTj();
+        return CommonResult.ok(list);
+    }
 
-	/**
-	 * Description: 水表总计
-	 */
-	@Override
-	@PassToken
-	public CommonResult getWaterTj(){
-		DAll list = wechatScanLoginService.getWaterTj();
-		return CommonResult.ok(list);
-	}
+    /**
+     * Description: 用户总数
+     */
+    @Override
+    @PassToken
+    public CommonResult getUserIdTjt() {
+        All list = wechatScanLoginService.getUserIdTjt();
+        return CommonResult.ok(list);
+    }
 
-	/**
-	 * Description: 电表总计
-	 */
-	@Override
-	@PassToken
-	public CommonResult getElcTj(){
-		DAll list = wechatScanLoginService.getElcTj();
-		return CommonResult.ok(list);
-	}
+    /**
+     * Description: 水表总计
+     */
+    @Override
+    @PassToken
+    public CommonResult getWaterTj() {
+        DAll list = wechatScanLoginService.getWaterTj();
+        return CommonResult.ok(list);
+    }
 
-	/**
-	 * Description: 每月水费查询
-	 */
-	@Override
-	@PassToken
-	public CommonResult getMonWater() throws ParseException {
-		List<MonthMeterDetail> list = wechatScanLoginService.getMonWater();
-		return CommonResult.ok(list);
-	}
+    /**
+     * Description: 电表总计
+     */
+    @Override
+    @PassToken
+    public CommonResult getElcTj() {
+        DAll list = wechatScanLoginService.getElcTj();
+        return CommonResult.ok(list);
+    }
 
-	/**
-	 * Description: 每月电费查询
-	 */
-	@Override
-	@PassToken
-	public CommonResult getMonElc() throws ParseException {
-		List<MonthMeterDetail> list = wechatScanLoginService.getMonElc();
-		return CommonResult.ok(list);
-	}
+    /**
+     * Description: 每月水费查询
+     */
+    @Override
+    @PassToken
+    public CommonResult getMonWater() throws ParseException {
+        List<MonthMeterDetail> list = wechatScanLoginService.getMonWater();
+        return CommonResult.ok(list);
+    }
 
-	/**
-	 * Description: 区域能耗统计
-	 */
-	@Override
-	@PassToken
-	public CommonResult getMeterMonthPage(@RequestBody MeterMonthData meterMonthData,int currentPage, int pageCount) {
-		PageHelper.startPage(currentPage, pageCount);
-		PageInfo<MeterMonthData> list = wechatScanLoginService.getMeterMonthPage(meterMonthData);
-		return CommonResult.ok(list);
-	}
+    /**
+     * Description: 每月电费查询
+     */
+    @Override
+    @PassToken
+    public CommonResult getMonElc() throws ParseException {
+        List<MonthMeterDetail> list = wechatScanLoginService.getMonElc();
+        return CommonResult.ok(list);
+    }
 
-	/**
-	 * Description: 实时抄表
-	 */
-	@Override
-	@PassToken
-	public CommonResult getMeterDayPage(@RequestBody MeterMonthData meterMonthData, int currentPage, int pageCount) {
-		PageHelper.startPage(currentPage, pageCount);
-		PageInfo<MeterMonthData> list = wechatScanLoginService.getMeterDayPage(meterMonthData);
-		return CommonResult.ok(list);
-	}
+    /**
+     * Description: 区域能耗统计
+     */
+    @Override
+    @PassToken
+    public CommonResult getMeterMonthPage(@RequestBody MeterMonthData meterMonthData, int currentPage, int pageCount) {
+        PageHelper.startPage(currentPage, pageCount);
+        PageInfo<MeterMonthData> list = wechatScanLoginService.getMeterMonthPage(meterMonthData);
+        return CommonResult.ok(list);
+    }
 
-	/**
-	 * Description: 查轨迹
-	 */
-	@Override
-	@PassToken
-	public CommonResult getPosition() {
-		List<List<BigDecimal>> ld = RandomTrackAlgorithm.getPosition();
-		return CommonResult.ok(ld);
-	}
+    /**
+     * Description: 实时抄表
+     */
+    @Override
+    @PassToken
+    public CommonResult getMeterDayPage(@RequestBody MeterMonthData meterMonthData, int currentPage, int pageCount) {
+        PageHelper.startPage(currentPage, pageCount);
+        PageInfo<MeterMonthData> list = wechatScanLoginService.getMeterDayPage(meterMonthData);
+        return CommonResult.ok(list);
+    }
+
+    /**
+     * Description: 查轨迹
+     */
+    @Override
+    @PassToken
+    public CommonResult getPosition() {
+        List<List<BigDecimal>> ld = RandomTrackAlgorithm.getPosition();
+        return CommonResult.ok(ld);
+    }
+
+    @Override
+    @PassToken
+    public CommonResult vertify(String code) {
+        if (StringUtils.isBlank(code)) {
+            return CommonResult.fail("请传入code");
+        }
+        String url = "https://api.weixin.qq.com/sns/jscode2session?" +
+                "appid=" + PropertiesUtil.getValue(HttpParame.APPIDX) +
+                "&secret=" + PropertiesUtil.getValue(HttpParame.SECRETX) +
+                "&js_code=" + code +
+                "&grant_type=authorization_code";
+
+        String json = HttpClientUtils.getInstance().sendHttpGet(url);
+        Gson gson = new Gson();
+        HashMap<String, String> userMap = gson.fromJson(json.toString(), new TypeToken<HashMap<String, String>>() {
+        }.getType());
+        String openid = "";
+        try {
+            openid = userMap.get("openid").toString();
+        } catch (Exception e) {
+            return CommonResult.fail("code异常");
+        }
+        QueryWrapper<SmartUser> queryWrapper1 = new QueryWrapper<>();
+        queryWrapper1.eq("deleted", 0);
+        queryWrapper1.eq("is_cancel", 0);
+        queryWrapper1.eq("x_open_id", openid);
+        List<SmartUser> user = smartUserService.list(queryWrapper1);
+        if (user.isEmpty()) {
+            return CommonResult.fail("请绑定后再进入");
+        }
+        //部门数据集合
+        List<SmartDepartment> departments = smartDepartmentService.list(null);
+
+        long expired = 1000 * 60 * 60 * 24 * 365;
+        String token = JWTUtil.getToken(user.get(0), expired);
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("token", token);
+        List<WechatUserVo> userDatas = new ArrayList<>();
+        for (SmartUser su : user) {
+            WechatUserVo userData = new WechatUserVo();
+            userData.setId(su.getId());
+            userData.setCardNo(su.getCardNo());
+            userData.setTimeGroupId(su.getTimeGroupId());
+            userData.setName(su.getName());
+            userData.setIdentityId(su.getIdentityId());
+            userData.setIdCard(su.getIdCard());
+            userData.setSexId(su.getSexId());
+            userData.setDepartmentId(su.getDepartmentId());
+
+            Optional<SmartDepartment> department = departments.stream().filter(e -> e.getId().equals(su.getDepartmentId())).findFirst();
+            if (department != null && department.isPresent()) {
+                String departmentName = QueryParentDepartments(department.get().getParentId(), departments, null);
+                userData.setDepartmentName(departmentName == null ? "" : departmentName + "/" + department.get().getName());
+            }
+
+            userData.setHeadImage(su.getHeadImage());
+            userData.setGrade(su.getGrade());
+            userData.setCollege(su.getCollege());
+            userData.setSpeciality(su.getSpeciality());
+            userData.setSchoolClass(su.getSchoolClass());
+            userData.setCampus(su.getCampus());
+            userData.setDormitoryNumber(su.getDormitoryNumber());
+            userData.setPhone(su.getPhone());
+            userData.setAffiliate(su.getAffiliate());
+            //查找关联人
+            if (su.getIdentityId().intValue() == eIdentityStatu.Student.getValue()) {//学生
+                List<AffiliateParentVo> parents = smartUserService.queryAffiliateParents(su.getId());
+                if (parents != null && parents.size() > 0) {
+                    String affiliateStr = StringUtils.join(parents.stream().map(AffiliateParentVo::getName).collect(Collectors.toList()), ",");
+                    userData.setAffiliateName(affiliateStr);
+                }
+            } else if (su.getIdentityId().intValue() == eIdentityStatu.Parent.getValue()) {//家长
+                if (su.getAffiliate() != null) {
+                    List<String> affiliates = Arrays.asList(su.getAffiliate().split(","));
+                    List<SmartUser> childs = smartUserService.getSmartUserIds(affiliates);
+                    String affiliateStr = StringUtils.join(childs.stream().map(SmartUser::getName).collect(Collectors.toList()), ",");
+                    userData.setAffiliateName(affiliateStr);
+                }
+            }
+            //关联人名称用逗号隔开
+
+            userData.setTitle(su.getTitle());
+            userData.setAddress(su.getAddress());
+            userData.setNation(su.getNation());
+            userData.setOfStudent(su.getOfStudent());
+            userData.setGraduate(su.getGraduate());
+            userData.setDuties(su.getDuties());
+            userData.setIsPush(su.getIsPush());
+            userData.setIsCancel(su.getIsCancel());
+            userData.setOpenId(su.getOpenId());
+            userData.setXOpenId(su.getXOpenId());
+            userData.setGzhOpenId(su.getGzhOpenId());
+            userData.setXwStudentUid(su.getXwStudentUid());
+            userData.setBsStudentNo(su.getBsStudentNo());
+            userData.setXwTeacherCode(su.getXwTeacherCode());
+            userData.setBsStaffCode(su.getBsStaffCode());
+            userDatas.add(userData);
+        }
+
+        jsonObject.put("user", userDatas);
+        jsonObject.put("userhead", AesUtils.encrypt(String.valueOf(user.get(0).getId())));
+
+        return CommonResult.ok(jsonObject.toString());
+    }
+
+    /**
+     * 根据父级ID获取父级数据
+     *
+     * @param parentID 子级ID
+     * @param lists    数据集合
+     * @return
+     */
+    private static String QueryParentDepartments(Integer parentID, List<SmartDepartment> lists, String departmentStr) {
+        Optional<SmartDepartment> data = lists.stream().filter(e -> e.getId().equals(parentID)).findFirst();
+
+        if (data != null && data.isPresent()) {
+            departmentStr = departmentStr == null ? data.get().getName() : data.get().getName() + "/" + departmentStr;
+            departmentStr = QueryParentDepartments(data.get().getParentId(), lists, departmentStr);
+        }
+
+        return departmentStr;
+    }
 
-	@Override
+    @Override
+    @PassToken
+    public CommonResult sendMessage(String phone) {
+        QueryWrapper<SmartUser> queryWrapper1 = new QueryWrapper<>();
+        queryWrapper1.eq("deleted", 0);
+        queryWrapper1.eq("phone", phone);
+        queryWrapper1.eq("is_cancel", 0);
+        List<SmartUser> list = smartUserService.list(queryWrapper1);
+        if (list.isEmpty()) {
+            return CommonResult.fail("该手机无权限登录");
+        }
+        QueryWrapper<SmsCode> queryWrapper2 = new QueryWrapper<>();
+        queryWrapper2.eq("deleted", 0);
+        queryWrapper2.eq("is_verify", 0);
+        queryWrapper2.eq("phone_number", phone);
+        queryWrapper2.ge("expiration_time", new Date());
+        List<SmsCode> listc = smsCodeService.getSmsCodeByKey(queryWrapper2);
+        if (!listc.isEmpty()) {
+            return CommonResult.fail("操作频繁,请稍后再试");
+        }
+        String code = GetVertifyCode.getRandomNumCode(6);
+        SmsCode smsCode = new SmsCode();
+        smsCode.setId(UUIDUtil.generateID());
+        smsCode.setPhoneNumber(phone);
+        smsCode.setCode(code);
+        long time = new Date().getTime() + 300000L;
+        smsCode.setExpirationTime(new Date(time));
+        smsCode.setIsVerify("0");
+        smsCode.setDeleted(0);
+        int m = smsCodeService.insertSmsCode(smsCode);
+        if (m > 0) {
+            String message = SendSms.sendSms(phone, code);
+            if (message.contains("success")) {
+                return CommonResult.ok("发送成功");
+            }
+        }
+        return CommonResult.fail("操作失败");
+    }
+
+    @Override
+    @PassToken
+    public CommonResult vertifyMessage(String phone, String code, String wxcode) {
+        QueryWrapper<SmsCode> queryWrapper1 = new QueryWrapper<>();
+        queryWrapper1.eq("deleted", 0);
+        queryWrapper1.eq("is_verify", 0);
+        queryWrapper1.eq("phone_number", phone);
+        queryWrapper1.eq("code", code);
+        queryWrapper1.ge("expiration_time", new Date());
+        List<SmsCode> listc = smsCodeService.getSmsCodeByKey(queryWrapper1);
+        if (listc.isEmpty()) {
+            return CommonResult.ok("验证码已失效");
+        }
+        if (StringUtils.isBlank(wxcode)) {
+            return CommonResult.fail("请传入wxcode");
+        }
+        String url = "https://api.weixin.qq.com/sns/jscode2session?" +
+                "appid=" + PropertiesUtil.getValue(HttpParame.APPIDX) +
+                "&secret=" + PropertiesUtil.getValue(HttpParame.SECRETX) +
+                "&js_code=" + wxcode +
+                "&grant_type=authorization_code";
+
+        String json = HttpClientUtils.getInstance().sendHttpGet(url);
+        System.out.println(json);
+        Gson gson = new Gson();
+        HashMap<String, String> userMap = gson.fromJson(json.toString(), new TypeToken<HashMap<String, String>>() {
+        }.getType());
+        String openid = "";
+        try {
+            openid = userMap.get("openid").toString();
+        } catch (Exception e) {
+            return CommonResult.fail("wxcode异常");
+        }
+        QueryWrapper<SmartUser> queryWrapper2 = new QueryWrapper<>();
+        queryWrapper2.eq("deleted", 0);
+        queryWrapper2.eq("phone", phone);
+        List<SmartUser> user = smartUserService.list(queryWrapper2);
+        if (user.isEmpty()) {
+            return CommonResult.fail("该用户不存在");
+        }
+        user.get(0).setXOpenId(openid);
+        smartUserService.updateSmartUser(user.get(0));
+        long expired = 1000 * 60 * 60 * 24 * 365;
+        String token = JWTUtil.getToken(user.get(0), expired);
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("token", token);
+        jsonObject.put("user", user.get(0));
+        jsonObject.put("userhead", AesUtils.encrypt(String.valueOf(user.get(0).getId())));
+        return CommonResult.ok(jsonObject);
+    }
+
+    @Override
 	@PassToken
-	public CommonResult vertify(String code){
-		if (StringUtils.isBlank(code)){
-			return CommonResult.fail("请传入code");
+	public CommonResult queryPhoneBook(Integer id){
+		if (id==null){
+			return CommonResult.fail("请传入id");
 		}
-		String url = "https://api.weixin.qq.com/sns/jscode2session?" +
-				"appid=" + PropertiesUtil.getValue(HttpParame.APPIDX) +
-				"&secret=" + PropertiesUtil.getValue(HttpParame.SECRETX) +
-				"&js_code=" + code +
-				"&grant_type=authorization_code";
-
-		String json = HttpClientUtils.getInstance().sendHttpGet(url);
-		Gson gson = new Gson();
-		HashMap<String, String> userMap = gson.fromJson(json.toString(), new TypeToken<HashMap<String, String>>() {}.getType());
-		String openid = "";
-		try {
-			openid = userMap.get("openid").toString();
-		} catch (Exception e) {
-			return CommonResult.fail("code异常");
+		SmartUser user = smartUserService.getSmartById(id);
+		if (user==null){
+			return CommonResult.fail("未查到用户信息");
 		}
-		QueryWrapper<SmartUser> queryWrapper1 = new QueryWrapper<>();
-		queryWrapper1.eq("deleted", 0);
-		queryWrapper1.eq("is_cancel",0);
-		queryWrapper1.eq("x_open_id", openid);
-		List<SmartUser> user = smartUserService.list(queryWrapper1);
-		if (user.isEmpty()){
-			return CommonResult.fail("请绑定后再进入");
+		if (user.getId()<3){
+			return CommonResult.fail("无权限查询");
 		}
-		long expired = 1000 * 60 * 60 * 24 * 365;
-		String token = JWTUtil.getToken(user.get(0), expired);
-		JSONObject jsonObject = new JSONObject();
-		jsonObject.put("token", token);
-		jsonObject.put("user", user);
-		jsonObject.put("userhead", AesUtils.encrypt(String.valueOf(user.get(0).getId())));
-
-		return CommonResult.ok(jsonObject.toString());
-	}
-
-	@Override
-	@PassToken
-	public CommonResult sendMessage(String phone){
-		QueryWrapper<SmartUser> queryWrapper1 = new QueryWrapper<>();
+		QueryWrapper<SmartGrade> queryWrapper1 = new QueryWrapper<>();
 		queryWrapper1.eq("deleted", 0);
-		queryWrapper1.eq("phone",phone);
-		queryWrapper1.eq("is_cancel",0);
-		List<SmartUser> list = smartUserService.list(queryWrapper1);
-		if (list.isEmpty()){
-			return CommonResult.fail("该手机无权限登录");
-		}
-		QueryWrapper<SmsCode> queryWrapper2 = new QueryWrapper<>();
-		queryWrapper2.eq("deleted", 0);
-		queryWrapper2.eq("is_verify",0);
-		queryWrapper2.eq("phone_number",phone);
-		queryWrapper2.ge("expiration_time", new Date());
-		List<SmsCode> listc = smsCodeService.getSmsCodeByKey(queryWrapper2);
-		if (!listc.isEmpty()){
-			return CommonResult.fail("操作频繁,请稍后再试");
-		}
-		String code = GetVertifyCode.getRandomNumCode(6);
-		SmsCode smsCode = new SmsCode();
-		smsCode.setId(UUIDUtil.generateID());
-		smsCode.setPhoneNumber(phone);
-		smsCode.setCode(code);
-		long time = new Date().getTime() + 300000L;
-		smsCode.setExpirationTime(new Date(time));
-		smsCode.setIsVerify("0");
-		smsCode.setDeleted(0);
-		int m = smsCodeService.insertSmsCode(smsCode);
-		if (m>0){
-			String message = SendSms.sendSms(phone, code);
-			if (message.contains("success")){
-				return CommonResult.ok("发送成功");
+        List<SmartGrade> grades = smartGradeService.list(queryWrapper1);
+		List<GradeBook> gradeBookList = new ArrayList<>();
+		for (int i = 0; i < grades.size(); i++) {
+			GradeBook gradeBook = new GradeBook();
+			gradeBook.setGradeName(grades.get(i).getName());
+			QueryWrapper<SmartClass> queryWrapper2 = new QueryWrapper<>();
+			queryWrapper2.eq("deleted", 0);
+			queryWrapper2.eq("grade_id", grades.get(i).getId());
+			List<SmartClass> classes = smartClassService.list(queryWrapper2);
+			List<ClassBook> classBookList = new ArrayList<>();
+			for (int j = 0; j < classes.size(); j++) {
+				ClassBook classBook = new ClassBook();
+				classBook.setClassName(classes.get(j).getName());
+				QueryWrapper<SmartUser> queryWrapper3 = new QueryWrapper<>();
+				queryWrapper3.eq("deleted", 0);
+				queryWrapper3.eq("is_cancel", 0);
+				queryWrapper3.eq("school_class", classes.get(j).getId());
+				queryWrapper3.eq("identity_id", 2);
+				List<SmartUser> users = smartUserService.list(queryWrapper3);
+				List<BookUser> bookUserList = new ArrayList<>();
+				for (int k = 0; k < users.size(); k++) {
+					if (Objects.equals(users.get(k).getSchoolClass(), user.getSchoolClass())){
+						String ob = JSONObject.toJSONString(users.get(k));
+						BookUser bookUser = JSONObject.parseObject(ob, BookUser.class);;
+						QueryWrapper<SmartUser> queryWrapper4 = new QueryWrapper<>();
+						queryWrapper4.eq("deleted", 0);
+						queryWrapper4.eq("is_cancel", 0);
+						queryWrapper4.eq("affiliate", users.get(k).getId());
+						queryWrapper4.eq("identity_id", 1);
+						List<SmartUser> usersPrarent = smartUserService.list(queryWrapper4);
+						bookUser.setUserParents(usersPrarent);
+						bookUserList.add(bookUser);
+					}
+				}
+				classBook.setBookUserList(bookUserList);
+				classBookList.add(classBook);
 			}
+			gradeBook.setClassBookList(classBookList);
+			gradeBookList.add(gradeBook);
 		}
-		return CommonResult.fail("操作失败");
+		return CommonResult.ok(gradeBookList);
 	}
 
-	@Override
-	@PassToken
-	public CommonResult vertifyMessage(String phone,String code, String wxcode){
-		QueryWrapper<SmsCode> queryWrapper1 = new QueryWrapper<>();
-		queryWrapper1.eq("deleted", 0);
-		queryWrapper1.eq("is_verify",0);
-		queryWrapper1.eq("phone_number",phone);
-		queryWrapper1.eq("code",code);
-		queryWrapper1.ge("expiration_time", new Date());
-		List<SmsCode> listc = smsCodeService.getSmsCodeByKey(queryWrapper1);
-		if (listc.isEmpty()){
-			return CommonResult.ok("验证码已失效");
-		}
-		if (StringUtils.isBlank(wxcode)){
-			return CommonResult.fail("请传入wxcode");
-		}
-		String url = "https://api.weixin.qq.com/sns/jscode2session?" +
-				"appid=" + PropertiesUtil.getValue(HttpParame.APPIDX) +
-				"&secret=" + PropertiesUtil.getValue(HttpParame.SECRETX) +
-				"&js_code=" + wxcode +
-				"&grant_type=authorization_code";
-
-		String json = HttpClientUtils.getInstance().sendHttpGet(url);
-		System.out.println(json);
-		Gson gson = new Gson();
-		HashMap<String, String> userMap = gson.fromJson(json.toString(), new TypeToken<HashMap<String, String>>() {}.getType());
-		String openid = "";
-		try {
-			openid = userMap.get("openid").toString();
-		} catch (Exception e) {
-			return CommonResult.fail("wxcode异常");
-		}
-		QueryWrapper<SmartUser> queryWrapper2 = new QueryWrapper<>();
-		queryWrapper2.eq("deleted", 0);
-		queryWrapper2.eq("phone", phone);
-		List<SmartUser> user = smartUserService.list(queryWrapper2);
-		if (user.isEmpty()){
-			return CommonResult.fail("该用户不存在");
-		}
-		user.get(0).setXOpenId(openid);
-		smartUserService.updateSmartUser(user.get(0));
-		long expired = 1000 * 60 * 60 * 24 * 365;
-		String token = JWTUtil.getToken(user.get(0),expired);
-		JSONObject jsonObject = new JSONObject();
-		jsonObject.put("token", token);
-		jsonObject.put("user", user.get(0));
-		jsonObject.put("userhead", AesUtils.encrypt(String.valueOf(user.get(0).getId())));
-		return CommonResult.ok(jsonObject);
-	}
 }

+ 2 - 1
src/main/java/com/template/mapper/SmartFaceDiscernMapper.java

@@ -3,6 +3,7 @@ package com.template.mapper;
 import com.template.model.pojo.SmartFaceDiscern;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
 
 /**
  * <p>
@@ -12,7 +13,7 @@ import org.apache.ibatis.annotations.Mapper;
  * @author ceshi
  * @since 2024-01-18
  */
-@Mapper
+@Repository
 public interface SmartFaceDiscernMapper extends BaseMapper<SmartFaceDiscern> {
 
 }

+ 3 - 2
src/main/java/com/template/mapper/SmartUserMapper.java

@@ -1,6 +1,7 @@
 package com.template.mapper;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.template.model.dto.WarningUserDto;
 import com.template.model.pojo.SmartUser;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -31,9 +32,9 @@ public interface SmartUserMapper extends BaseMapper<SmartUser> {
 
     IPage<GradeVo> querySmartSecordPage(IPage<GradeVo> page, @Param("name") String name);
 
-    IPage<UserVo> warningUserList(Page<UserVo> page,@Param("departmentIds") List<Integer> departmentIds,@Param("name") String name);
+    IPage<WarningUserDto> warningUserList(Page<UserVo> page, @Param("name") String name);
 
-    List<SmartUser> warningPushList();
+    List<WarningUserDto> warningPushList();
 
     List<AffiliateParentVo> queryAffiliateParents(@Param("userId") Integer userId);
 

+ 10 - 0
src/main/java/com/template/model/dto/WarningDeletePushDto.java

@@ -0,0 +1,10 @@
+package com.template.model.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class WarningDeletePushDto {
+    private List<Integer> ids;
+}

+ 19 - 0
src/main/java/com/template/model/dto/WarningUserDto.java

@@ -0,0 +1,19 @@
+package com.template.model.dto;
+
+import lombok.Data;
+
+@Data
+public class WarningUserDto {
+
+    private Integer id;
+
+    private String cardNo;
+
+    private String name;
+
+    private String departmentName;
+
+
+
+
+}

+ 18 - 0
src/main/java/com/template/model/phoneBook/BookUser.java

@@ -0,0 +1,18 @@
+package com.template.model.phoneBook;
+
+import com.template.model.pojo.SmartUser;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="classBook对象", description="")
+public class BookUser extends SmartUser {
+    
+    public List<SmartUser> userParents;
+}

+ 19 - 0
src/main/java/com/template/model/phoneBook/ClassBook.java

@@ -0,0 +1,19 @@
+package com.template.model.phoneBook;
+
+import com.template.model.pojo.SmartUser;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="classBook对象", description="")
+public class ClassBook {
+
+    public String className;
+    public List<BookUser> bookUserList;
+}

+ 19 - 0
src/main/java/com/template/model/phoneBook/GradeBook.java

@@ -0,0 +1,19 @@
+package com.template.model.phoneBook;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="gradeBook对象", description="")
+public class GradeBook {
+
+    public String gradeName;
+    public List<ClassBook> classBookList;
+
+}

+ 51 - 0
src/main/java/com/template/model/pojo/SmartDataTaskErr.java

@@ -0,0 +1,51 @@
+package com.template.model.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 数据源操作日志
+ * </p>
+ *
+ * @author ceshi
+ * @since 2023-12-05
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="SmartDataTaskErr对象", description="数据源任务错误管理")
+public class SmartDataTaskErr implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键id")
+    @TableId(value = "e_id", type = IdType.AUTO)
+    private Integer eId;
+
+    @ApiModelProperty(value = "出错的任务id")
+    private Integer eTaskId;
+
+    @ApiModelProperty(value = "错误文本")
+    private String eMsg;
+
+    @ApiModelProperty(value = "发生错误次数")
+    private Integer eNum;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value = "发生错误时间")
+    private String eDateTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value = "创建时间")
+    private Date eCreateTime;
+}

+ 6 - 3
src/main/java/com/template/services/SmartUserService.java

@@ -1,5 +1,6 @@
 package com.template.services;
 
+import com.template.model.dto.WarningUserDto;
 import com.template.model.pojo.SmartUser;
 import com.template.model.pojo.SmartUser;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -38,7 +39,7 @@ public interface SmartUserService extends IService<SmartUser> {
 
     int deleteSmartUserByIds(List<Integer> ids);
 
-    SmartUser getSmartById(int id);
+    List<SmartUser> getSmartUserList(List<Integer> ids);
 
     List<AffiliateUserVo> queryAffiliateUserById(@Param("id") Integer id);
 
@@ -51,9 +52,9 @@ public interface SmartUserService extends IService<SmartUser> {
     List<SmartUser> queryStudentDatas();
 	List<SmartUser> queryStudentBySchoolClass(Integer schoolClass);
 
-    PageUtils<UserVo> warningUserList(int currentPage, int pageCount, List<Integer> departmentIds, String name);
+    PageUtils<WarningUserDto> warningUserList(int currentPage, int pageCount, String name);
 
-    List<SmartUser> warningPushList();
+    List<WarningUserDto> warningPushList();
 
     List<AffiliateParentVo> queryAffiliateParents(Integer userId);
 
@@ -65,4 +66,6 @@ public interface SmartUserService extends IService<SmartUser> {
      * @return
      */
     SmartUser queryUserInfo(String name,String cardNo,String idCard);
+
+    SmartUser getSmartById(Integer id);
 }

+ 8 - 8
src/main/java/com/template/services/impl/SmartFaceDiscernServiceImpl.java

@@ -52,7 +52,7 @@ public class SmartFaceDiscernServiceImpl extends ServiceImpl<SmartFaceDiscernMap
     private Integer size = 20;
 
 //    @Scheduled(cron = "0 0/30 * * * ? ")
-    public void baiS()  {
+    public void baiS() {
         try {
             getFaceDiscern(page, size);
         } catch (Exception e) {
@@ -82,12 +82,13 @@ public class SmartFaceDiscernServiceImpl extends ServiceImpl<SmartFaceDiscernMap
         LocalDateTime endTime = now.withHour(23).withMinute(59).withSecond(59);
 //        开始时间
         data.put("record_begintime", stateTime.format(dateTimeFormatter1));
+//        data.put("record_begintime", "2024-01-22 00:00:00");
 //        结束时间
         data.put("record_endtime", endTime.format(dateTimeFormatter1));
-
+//        data.put("record_endtime", "2024-01-22 23:59:59");
 
         String dataString = data.toJSONString();
-        System.out.println(dataString);
+
 //        加密
         String aesStr = URLEncoder.encode(AesTestOne.encrypt(dataString, appSecret), "UTF-8");
 
@@ -159,14 +160,13 @@ public class SmartFaceDiscernServiceImpl extends ServiceImpl<SmartFaceDiscernMap
 //                    判断是否已经添加
                     LambdaQueryWrapper<SmartFaceDiscern> wrapperFD = new LambdaQueryWrapper<>();
                     wrapperFD.eq(SmartFaceDiscern::getDateTime, recordAddtime)
-                            .eq(SmartFaceDiscern::getId, smartUser.getId());
+                            .eq(SmartFaceDiscern::getUserId, smartUser.getId());
                     SmartFaceDiscern one = this.getOne(wrapperFD);
 
                     if (ObjectUtils.isEmpty(one)) {
                         this.save(smartFaceDiscern);
                     }
 
-
                 }
 
             }
@@ -177,9 +177,9 @@ public class SmartFaceDiscernServiceImpl extends ServiceImpl<SmartFaceDiscernMap
     @Override
     public List<SmartFaceDiscern> track(String stateTime, String endTime, Integer id) {
 
-        LambdaQueryWrapper<SmartFaceDiscern> wrapper=new LambdaQueryWrapper<>();
-        wrapper.between(SmartFaceDiscern::getDateTime,stateTime,endTime)
-                .eq(SmartFaceDiscern::getUserId,id)
+        LambdaQueryWrapper<SmartFaceDiscern> wrapper = new LambdaQueryWrapper<>();
+        wrapper.between(SmartFaceDiscern::getDateTime, stateTime, endTime)
+                .eq(SmartFaceDiscern::getUserId, id)
                 .orderByDesc(SmartFaceDiscern::getDateTime);
 
         List<SmartFaceDiscern> list = this.list(wrapper);

+ 14 - 4
src/main/java/com/template/services/impl/SmartUserServiceImpl.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.template.mapper.SmartUserMapper;
+import com.template.model.dto.WarningUserDto;
 import com.template.model.enumModel.eIdentityStatu;
 import com.template.model.pojo.SmartUser;
 import com.template.model.result.PageUtils;
@@ -144,7 +145,7 @@ public class SmartUserServiceImpl extends ServiceImpl<SmartUserMapper, SmartUser
     }
 
     @Override
-    public SmartUser getSmartById(int id) {
+    public SmartUser getSmartById(Integer id) {
         QueryWrapper<SmartUser> queryWrapper = new QueryWrapper();
         queryWrapper.eq("is_cancel", 0);
         queryWrapper.eq("id", id);
@@ -168,16 +169,16 @@ public class SmartUserServiceImpl extends ServiceImpl<SmartUserMapper, SmartUser
     }
 
     @Override
-    public PageUtils<UserVo> warningUserList(int currentPage, int pageCount, List<Integer> departmentIds, String name) {
+    public PageUtils<WarningUserDto> warningUserList(int currentPage, int pageCount, String name) {
         Page<UserVo> page = new Page<>();
         page.setCurrent(currentPage);
         page.setSize(pageCount);
-        IPage<UserVo> result = smartUserMapper.warningUserList(page, departmentIds, name);
+        IPage<WarningUserDto> result = smartUserMapper.warningUserList(page, name);
         return new PageUtils(result);
     }
 
     @Override
-    public List<SmartUser> warningPushList() {
+    public List<WarningUserDto> warningPushList() {
         return smartUserMapper.warningPushList();
     }
 
@@ -197,4 +198,13 @@ public class SmartUserServiceImpl extends ServiceImpl<SmartUserMapper, SmartUser
         return result;
     }
 
+    @Override
+    public List<SmartUser> getSmartUserList(List<Integer> ids) {
+        QueryWrapper<SmartUser> queryWrapper = new QueryWrapper();
+        queryWrapper.eq("is_cancel", 0);
+        queryWrapper.in("id", ids);
+        List<SmartUser> result = smartUserMapper.selectList(queryWrapper);
+        return result;
+    }
+
 }

+ 5 - 5
src/main/resources/application-dev.yml

@@ -75,11 +75,11 @@ accesscontrol:
 
 #腾讯云
 tencentcloud:
-  secretID: AKIDDPo13qZCZqtgJsGQL7AyYu1wc7QVMyLl  #签名
-  secretKey: JPGrELFySiv0pOrKOPEwSnulOq9IPPDr     #密钥
-  sdkAppId: 1400813506   #短信应用ID
-  signName: 华仁享学教育   #短信签名内容
-  templateId: 1770016  #模板 ID
+  secretID: AKIDCPVZdcWIxgHpy5FYxVyPiqkZGrhdXUBg  #签名
+  secretKey: NkyCN3cz97qKaeXLvHOGxOcdS8f184pL     #密钥
+  sdkAppId: 1400885930  #短信应用ID
+  signName: 江西省创海科技有限公司   #短信签名内容
+  templateId: 2060673  #模板 ID
   smsMin: 1
 
 #是否开启定时

+ 5 - 5
src/main/resources/application-prod.yml

@@ -48,11 +48,11 @@ mybatis-plus:
 
 #腾讯云
 tencentcloud:
-  secretID: AKIDDPo13qZCZqtgJsGQL7AyYu1wc7QVMyLl  #签名
-  secretKey: JPGrELFySiv0pOrKOPEwSnulOq9IPPDr     #密钥
-  sdkAppId: 1400813506   #短信应用ID
-  signName: 华仁享学教育   #短信签名内容
-  templateId: 1770016  #模板 ID
+  secretID: AKIDCPVZdcWIxgHpy5FYxVyPiqkZGrhdXUBg  #签名
+  secretKey: NkyCN3cz97qKaeXLvHOGxOcdS8f184pL     #密钥
+  sdkAppId: 1400885930  #短信应用ID
+  signName: 江西省创海科技有限公司   #短信签名内容
+  templateId: 2060673  #模板 ID
   smsMin: 1
 
 # 项目公钥私钥

+ 5 - 5
src/main/resources/application.yml

@@ -45,11 +45,11 @@ mybatis-plus:
       logic-not-delete-value: 0
 #腾讯云
 tencentcloud:
-  secretID: AKIDDPo13qZCZqtgJsGQL7AyYu1wc7QVMyLl  #签名
-  secretKey: JPGrELFySiv0pOrKOPEwSnulOq9IPPDr     #密钥
-  sdkAppId: 1400813506   #短信应用ID
-  signName: 华仁享学教育   #短信签名内容
-  templateId: 1770016  #模板 ID
+  secretID: AKIDCPVZdcWIxgHpy5FYxVyPiqkZGrhdXUBg  #签名
+  secretKey: NkyCN3cz97qKaeXLvHOGxOcdS8f184pL     #密钥
+  sdkAppId: 1400885930  #短信应用ID
+  signName: 江西省创海科技有限公司   #短信签名内容
+  templateId: 2060673  #模板 ID
   smsMin: 1
 
 # 项目公钥私钥

+ 24 - 14
src/main/resources/mapper/template/SmartUserMapper.xml

@@ -117,22 +117,31 @@
         </if>
     </select>
 
-    <select id="warningUserList" resultType="com.template.model.vo.UserVo">
-        select *
-        from smart_user
-        where deleted = 0 and is_cancel = 0
-        <if test="departmentIds != null and departmentIds.size() > 0">
-            and department_id in
-            <foreach collection="departmentIds" item="departmentId" index="index" open="(" close=")" separator=",">
-                ${departmentId}
-            </foreach>
-        </if>
+    <select id="warningUserList" resultType="com.template.model.dto.WarningUserDto">
+        SELECT
+        su.id AS id,
+        su.`name` AS `name`,
+        su.card_no AS cardNo,
+        sd.`name` AS departmentName
+        FROM
+        `smart_user` su
+        LEFT JOIN smart_department sd ON sd.id = su.department_id and sd.deleted=0
+        where su.deleted = 0 and su.is_cancel = 0
         <if test="name != null and name != ''">
-            and name like '%' #{name} '%'
+            and su.`name` like '%' #{name} '%'
         </if>
     </select>
-    <select id="warningPushList" resultType="com.template.model.pojo.SmartUser">
-        SELECT * FROM `smart_user` WHERE is_push=1 and is_cancel=0 and deleted = 0
+
+    <select id="warningPushList" resultType="com.template.model.dto.WarningUserDto">
+        SELECT su.id      AS id,
+               su.`name`  AS `name`,
+               su.card_no AS cardNo,
+               sd.`name`  AS departmentName
+        FROM `smart_user` su
+                 LEFT JOIN smart_department sd ON sd.id = su.department_id and sd.deleted = 0
+        WHERE su.is_push = 1
+          and su.is_cancel = 0
+          and su.deleted = 0
     </select>
 
 
@@ -141,7 +150,8 @@
         <result property="name" column="name"/>
     </resultMap>
 
-    <select id="queryAffiliateParents" resultType="com.template.model.vo.AffiliateParentVo" resultMap="affiliateParentMap">
+    <select id="queryAffiliateParents" resultType="com.template.model.vo.AffiliateParentVo"
+            resultMap="affiliateParentMap">
         SELECT id,name FROM `smart_user`
         where deleted = 0 and is_cancel=0
         <if test="userId != null and userId != ''">

+ 17 - 12
target/classes/mapper/template/SmartUserMapper.xml

@@ -117,22 +117,27 @@
         </if>
     </select>
 
-    <select id="warningUserList" resultType="com.template.model.vo.UserVo">
-        select *
-        from smart_user
-        where deleted = 0 and is_cancel = 0
-        <if test="departmentIds != null and departmentIds.size() > 0">
-            and department_id in
-            <foreach collection="departmentIds" item="departmentId" index="index" open="(" close=")" separator=",">
-                ${departmentId}
-            </foreach>
-        </if>
+    <select id="warningUserList" resultType="com.template.model.dto.WarningUserDto">
+        SELECT
+        su.id AS id,
+        su.`name` AS `name`,
+        su.card_no AS cardNo,
+        sd.`name` AS departmentName
+        FROM
+        `smart_user` su
+        LEFT JOIN smart_department sd ON sd.id = su.department_id and sd.deleted=0
+        where su.deleted = 0 and su.is_cancel = 0
         <if test="name != null and name != ''">
-            and name like '%' #{name} '%'
+            and su.`name` like '%' #{name} '%'
         </if>
     </select>
+
     <select id="warningPushList" resultType="com.template.model.pojo.SmartUser">
-        SELECT * FROM `smart_user` WHERE is_push=1 and is_cancel=0 and deleted = 0
+        SELECT *
+        FROM `smart_user`
+        WHERE is_push = 1
+          and is_cancel = 0
+          and deleted = 0
     </select>
 
 

+ 7 - 0
target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst

@@ -35,6 +35,7 @@ com\template\model\seewo\OrganizationNodeServiceInitSchoolClassesResult.class
 com\template\model\seewo\OrganizationNodeServiceInitSchoolClassesParam$RequestBody.class
 com\template\config\ScheduleConfig.class
 com\template\common\utils\ExcelUtil3.class
+com\template\model\phoneBook\BookUser.class
 com\template\model\seewo\OrgClassOpenSeewoUcOpenV1ClassFullParam$JSONRequestBody.class
 com\template\MybatisPlusApplication.class
 com\template\model\seewo\ParentServiceBatchSaveOrUpdateParentsParam$StudentParentsItem$StudentParentsItemBuilder.class
@@ -307,6 +308,7 @@ com\template\model\pojo\SmartDataSource.class
 com\template\config\MySecurity.class
 com\template\controller\SmartAuthorGroupController.class
 com\template\services\impl\SmartScreenshotRecordServiceImpl.class
+com\template\model\phoneBook\GradeBook.class
 com\template\common\utils\GetCameraPreviewURL.class
 com\template\controller\SmartAttendanceController.class
 com\template\model\seewo\StudentServiceBatchSaveClassStudentsParam$StudentInfo.class
@@ -334,6 +336,7 @@ com\template\model\seewo\AttendanceRuleListSchoolAttendRuleParam$RequestBody.cla
 com\template\mapper\SmartFreezeRecordMapper.class
 com\template\model\vo\BaseImageVo.class
 com\template\model\seewo\PersonalLeaveListSchoolPeriodRecordsParam$PersonalLeaveListSchoolPeriodRecordsParamBuilder.class
+com\template\model\dto\WarningUserDto.class
 com\template\model\seewo\StudentServiceBatchSaveClassStudentsParam$Boolean$BooleanBuilder.class
 com\template\controller\LoginController.class
 com\template\model\request\insertSmartUserRequest.class
@@ -354,6 +357,7 @@ com\template\services\impl\SmartUploadServiceImpl.class
 com\template\common\utils\HttpClientUtils.class
 com\template\controller\WechatScanLoginController.class
 com\template\services\impl\SmartAuthorityServiceImpl.class
+com\template\model\phoneBook\ClassBook.class
 com\template\common\result\Code.class
 com\template\api\SmartIdentityControllerAPI.class
 com\template\common\utils\Base64Util.class
@@ -433,6 +437,7 @@ com\template\model\enumModel\eExamType.class
 com\template\model\seewo\StudentLeaveStudentLeaveRequestHandlerResult$StudentLeaveRecordResult.class
 com\template\model\pojo\SmsCode.class
 com\template\model\seewo\PersonalLeaveListSchoolPeriodRecordsParam.class
+com\template\model\pojo\SmartDataTaskLog.class
 com\template\mapper\SmartScreenshotRecordMapper.class
 com\template\controller\UploadController.class
 com\template\model\seewo\AttendanceServiceListAttendClassRecordsResult$ResponseBody.class
@@ -579,6 +584,7 @@ com\template\model\enumModel\eDutiesType.class
 com\template\model\pojo\SmartBuildMeter.class
 com\template\common\utils\AesUtil.class
 com\template\api\SmartGradeControllerAPI.class
+com\template\model\dto\WarningDeletePushDto.class
 com\template\common\utils\UUIDUtil.class
 com\template\mapper\SystemMenuMapper.class
 com\template\model\enumModel\eFileType.class
@@ -610,4 +616,5 @@ com\template\model\seewo\TeacherServiceBatchSetClassMastersParam$TeacherServiceB
 com\template\model\seewo\HomeSchoolServiceSendNoteToKidParam$HomeSchoolServiceSendNoteToKidParamBuilder.class
 com\template\model\vo\BsStaffNoVo.class
 com\template\services\impl\SmartFreezeRecordServiceImpl.class
+com\template\model\pojo\SmartDataTaskDebug.class
 com\template\model\vo\BsStudentVo.class

+ 7 - 0
target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

@@ -55,6 +55,7 @@ D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\templa
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\UploadControllerAPI.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\HttpUtils.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\SmartDataTask.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\SmartDataTaskDebug.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\SmartIdentityControllerAPI.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\request\insertScreenshotRequest.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\SmartWarningControllerAPI.java
@@ -131,6 +132,7 @@ D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\templa
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\FileUtils.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\weixin\HttpParame.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\seewo\StudentServiceBatchSaveClassStudentsResult.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\dto\WarningUserDto.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SmartWarningService.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\tongji\All.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\vo\TimeGroupVo.java
@@ -147,6 +149,7 @@ D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\templa
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\HttpsClient.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\request\updateIdentityRequest.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\tongji\MonthMeterDetail.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\phoneBook\BookUser.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\handler\MyMetaObjectHandler.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\enumModel\eLogOff.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SmartUserService.java
@@ -289,6 +292,7 @@ D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\templa
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\enumModel\eIdentityStatu.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\GetCameraPreviewURL.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\SmartDataClassController.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\phoneBook\ClassBook.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\impl\SmartDutiesServiceImpl.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\SmartQrcodeControllerAPI.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\mapper\RepairAdminMapper.java
@@ -329,6 +333,7 @@ D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\templa
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\enumModel\eFreezeRecord.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\vo\TurnOnDeviceVo.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\evaluate\teacher\SimpleScore.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\dto\WarningDeletePushDto.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\impl\SmartSubjectManageServiceImpl.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\vo\SystemMenuTreeVo.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\seewo\HomeSchoolServiceSendNoteToKidParam.java
@@ -354,6 +359,7 @@ D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\templa
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\mapper\SmartUserMapper.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SmartDutiesService.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\result\Code.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\phoneBook\GradeBook.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\SmartScreenshotRecordController.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\enumModel\ePunish.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\impl\SmartBuildServiceImpl.java
@@ -395,6 +401,7 @@ D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\templa
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\ExcelUtil3.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\evaluate\student\SmartEvaluateSdetailList.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\EncryptionUtil.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\SmartDataTaskLog.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\request\loginRequest.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\result\CommonResult.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\exception\EmsExceptionHandler.java

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