夏文涛 преди 2 години
родител
ревизия
bf04f0841e

+ 177 - 155
.idea/workspace.xml

@@ -5,10 +5,11 @@
   </component>
   <component name="ChangeListManager">
     <list default="true" id="cb7b6a84-9179-4588-9374-31a70f785e65" name="Default Changelist" comment="">
-      <change afterPath="$PROJECT_DIR$/src/main/java/com/template/model/vo/WechatUserVo.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/controller/SmartIdentityController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/controller/SmartIdentityController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/controller/WechatScanLoginController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/controller/WechatScanLoginController.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/java/com/template/model/vo/UserVo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/model/vo/UserVo.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/resources/mapper/template/SmartUserMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/mapper/template/SmartUserMapper.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/template/model/vo/WechatUserVo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/template/model/vo/WechatUserVo.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" beforeDir="false" afterPath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" beforeDir="false" afterPath="$PROJECT_DIR$/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/target/mybatis_plus-0.0.1-SNAPSHOT.jar.original" beforeDir="false" afterPath="$PROJECT_DIR$/target/mybatis_plus-0.0.1-SNAPSHOT.jar.original" afterDir="false" />
     </list>
     <ignored path="$PROJECT_DIR$/target/" />
@@ -36,34 +37,63 @@
   <component name="DefaultGradleProjectSettings">
     <option name="isMigrated" value="true" />
   </component>
+  <component name="DockManager">
+    <window id="1">
+      <content type="file-editors">
+        <state>
+          <leaf>
+            <file pinned="false" current-in-tab="true">
+              <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/vo/WechatUserVo.java">
+                <provider selected="true" editor-type-id="text-editor">
+                  <state relative-caret-position="367">
+                    <caret line="118" column="12" selection-start-line="118" selection-start-column="12" selection-end-line="118" selection-end-column="12" />
+                  </state>
+                </provider>
+              </entry>
+            </file>
+          </leaf>
+        </state>
+      </content>
+    </window>
+  </component>
   <component name="FileEditorManager">
     <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
-      <file pinned="false" current-in-tab="false">
+      <file pinned="false" current-in-tab="true">
         <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="175">
-              <caret line="331" column="17" lean-forward="true" selection-start-line="331" selection-start-column="17" selection-end-line="331" selection-end-column="17" />
+            <state relative-caret-position="440">
+              <caret line="374" lean-forward="true" selection-start-line="374" selection-end-line="374" />
+              <folding>
+                <element signature="method#vertifyMessage#0;class#WechatScanLoginController#0" />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/pojo/SmartUser.java">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/enumModel/eIdentityStatu.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="-352">
-              <caret line="28" column="13" selection-start-line="28" selection-start-column="13" selection-end-line="28" selection-end-column="13" />
+            <state relative-caret-position="138">
+              <caret line="8" column="26" selection-start-line="8" selection-start-column="12" selection-end-line="8" selection-end-column="26" />
             </state>
           </provider>
         </entry>
       </file>
-      <file pinned="false" current-in-tab="true">
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/AutoCode.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="253">
+              <caret line="23" column="42" selection-start-line="23" selection-start-column="4" selection-end-line="23" selection-end-column="42" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/vo/UserVo.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="378">
-              <caret line="154" column="31" selection-start-line="154" selection-start-column="31" selection-end-line="154" selection-end-column="31" />
+            <state relative-caret-position="417">
+              <caret line="154" column="29" selection-start-line="154" selection-start-column="29" selection-end-line="154" selection-end-column="29" />
               <folding>
-                <element signature="e#1965#1966#0" expanded="true" />
-                <element signature="e#2024#2025#0" expanded="true" />
                 <element signature="e#2022#2023#0" expanded="true" />
                 <element signature="e#2072#2073#0" expanded="true" />
               </folding>
@@ -72,65 +102,58 @@
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/enumModel/eTimeGroup.java">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartDepartmentController.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="207">
-              <caret line="9" column="22" selection-start-line="9" selection-start-column="12" selection-end-line="9" selection-end-column="22" />
+            <state relative-caret-position="-4">
+              <caret line="251" column="9" selection-start-line="251" selection-start-column="9" selection-end-line="251" selection-end-column="9" />
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/vo/WechatUserVo.java">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/pojo/SmartDepartment.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="560">
-              <caret line="79" column="7" selection-start-line="79" selection-start-column="7" selection-end-line="79" selection-end-column="7" />
+            <state relative-caret-position="295">
+              <caret line="36" column="31" selection-start-line="36" selection-start-column="31" selection-end-line="36" selection-end-column="31" />
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartUserController.java">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/pojo/SmartAuthorGroup.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="450">
-              <caret line="1465" column="71" selection-start-line="1465" selection-start-column="52" selection-end-line="1465" selection-end-column="71" />
-              <folding>
-                <element signature="method#importZipUsers#0;class#SmartUserController#0" />
-                <element signature="method#readXlsx#0;class#SmartUserController#0" />
-                <element signature="method#readXls#0;class#SmartUserController#0" />
-              </folding>
+            <state relative-caret-position="295">
+              <caret line="36" column="31" selection-start-line="36" selection-start-column="31" selection-end-line="36" selection-end-column="31" />
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/impl/SmartUserServiceImpl.java">
+        <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="361">
-              <caret line="61" column="66" selection-start-line="61" selection-start-column="47" selection-end-line="61" selection-end-column="66" />
+            <state relative-caret-position="-433">
+              <caret line="1557" column="65" lean-forward="true" selection-start-line="1557" selection-start-column="65" selection-end-line="1557" selection-end-column="65" />
+              <folding>
+                <element signature="method#importZipUsers#0;class#SmartUserController#0" />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/resources/mapper/template/SystemUserMapper.xml">
-          <provider selected="true" editor-type-id="text-editor" />
-        </entry>
-      </file>
-      <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/resources/mapper/template/SmartUserMapper.xml">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/api/SmartWarningControllerAPI.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="131">
-              <caret line="20" column="44" lean-forward="true" selection-start-line="20" selection-start-column="44" selection-end-line="20" selection-end-column="44" />
+            <state relative-caret-position="269">
+              <caret line="56" column="47" selection-start-line="56" selection-start-column="26" selection-end-line="56" selection-end-column="47" />
             </state>
           </provider>
         </entry>
       </file>
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/template/common/utils/JWTUtil.java">
+        <entry file="file://$PROJECT_DIR$/src/main/resources/mapper/template/SmartUserMapper.xml">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="105">
-              <caret line="42" column="47" lean-forward="true" selection-start-line="42" selection-start-column="47" selection-end-line="42" selection-end-column="47" />
+            <state relative-caret-position="131">
+              <caret line="20" column="44" selection-start-line="20" selection-start-column="44" selection-end-line="20" selection-end-column="44" />
             </state>
           </provider>
         </entry>
@@ -146,13 +169,6 @@
   </component>
   <component name="FindInProjectRecents">
     <findStrings>
-      <find>attendance</find>
-      <find>getEndOfDay</find>
-      <find>openapi.szymzh.com/Api</find>
-      <find>importSmartScoreExcel</find>
-      <find>已预约</find>
-      <find>querySmartGradeByBaisheng</find>
-      <find>触发惩罚不能为空</find>
       <find>http://schoolopenapi.szymzh.com/openapi/</find>
       <find>objectMapper</find>
       <find>examineRecord</find>
@@ -172,10 +188,17 @@
       <find>applys</find>
       <find>queryIdentityApplyById</find>
       <find>vertify&quot;</find>
-      <find>vertify</find>
       <find>queryPageSmartUser</find>
-      <find>result</find>
       <find>querySmartUserPages</find>
+      <find>/&quot;</find>
+      <find>result</find>
+      <find>tree</find>
+      <find>父级</find>
+      <find>warningDepartmentTree</find>
+      <find>QueryDepartmentTreeRecords</find>
+      <find>&quot;/&quot;</find>
+      <find>QueryParentDepartments</find>
+      <find>vertify</find>
     </findStrings>
     <replaceStrings>
       <replace>班级</replace>
@@ -199,7 +222,6 @@
   <component name="IdeDocumentHistory">
     <option name="CHANGED_PATHS">
       <list>
-        <option value="$PROJECT_DIR$/src/main/java/com/template/controller/SmartDutiesController.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/template/api/SmartDutiesControllerAPI.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/template/model/seewo/TeacherServiceBatchSetClassMastersParam.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/template/model/enumModel/eDuties.java" />
@@ -247,9 +269,10 @@
         <option value="$PROJECT_DIR$/src/main/java/com/template/model/vo/ApplysVo.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/template/controller/SmartApplyController.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/template/controller/SmartIdentityController.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/template/model/vo/WechatUserVo.java" />
         <option value="$PROJECT_DIR$/src/main/resources/mapper/template/SmartUserMapper.xml" />
         <option value="$PROJECT_DIR$/src/main/java/com/template/model/vo/UserVo.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/template/model/vo/WechatUserVo.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/template/controller/WechatScanLoginController.java" />
       </list>
     </option>
   </component>
@@ -592,12 +615,12 @@
       <workItem from="1705547111998" duration="20000" />
       <workItem from="1705388695984" duration="51258000" />
       <workItem from="1705885614332" duration="695000" />
-      <workItem from="1705886328968" duration="10565000" />
+      <workItem from="1705886328968" duration="17335000" />
     </task>
     <servers />
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="425523000" />
+    <option name="totallyTimeSpent" value="432293000" />
   </component>
   <component name="ToolWindowManager">
     <frame x="-8" y="-8" width="1936" height="1048" extended-state="6" />
@@ -611,10 +634,10 @@
       <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.15831557" />
+      <window_info active="true" content_ui="combo" id="Project" order="8" visible="true" weight="0.17857143" />
       <window_info anchor="bottom" id="Message" order="0" />
       <window_info anchor="bottom" id="Find" order="1" />
-      <window_info anchor="bottom" id="Run" order="2" weight="0.309628" />
+      <window_info anchor="bottom" id="Run" order="2" weight="0.30634573" />
       <window_info anchor="bottom" id="Debug" order="3" weight="0.5160221" />
       <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
       <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
@@ -629,7 +652,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.6827133" />
+      <window_info anchor="right" id="Maven" order="0" weight="0.33208954" />
       <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.32962137" />
@@ -721,7 +744,7 @@
       <breakpoints>
         <line-breakpoint enabled="true" type="java-line">
           <url>file://$PROJECT_DIR$/src/main/java/com/template/controller/WechatScanLoginController.java</url>
-          <line>136</line>
+          <line>138</line>
           <properties />
           <option name="timeStamp" value="57" />
         </line-breakpoint>
@@ -769,55 +792,6 @@
     <option name="FILTER_TARGETS" value="false" />
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/impl/SystemUserServiceImpl.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="506">
-          <caret line="38" column="26" lean-forward="true" selection-start-line="38" selection-start-column="26" selection-end-line="38" selection-end-column="26" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/SmartUserService.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="677">
-          <caret line="55" column="45" selection-start-line="55" selection-start-column="20" selection-end-line="55" selection-end-column="45" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/impl/SmartAuthorGroupServiceImpl.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="253">
-          <caret line="11" column="46" selection-start-line="11" selection-start-column="46" selection-end-line="11" selection-end-column="46" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/test/java/com/template/MybatisPlusApplicationTests.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="295">
-          <caret line="31" column="26" selection-start-line="31" selection-start-column="26" selection-end-line="31" selection-end-column="26" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/SmartVisitorService.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="460">
-          <caret line="27" lean-forward="true" selection-start-line="27" selection-end-line="27" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/mapper/SmartVisitorMapper.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="414">
-          <caret line="25" column="180" selection-start-line="25" selection-start-column="87" selection-end-line="25" selection-end-column="180" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/SmartClassService.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="621">
-          <caret line="32" column="34" selection-start-line="32" selection-start-column="15" selection-end-line="32" selection-end-column="34" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/pojo/SmartVisitor.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="459">
@@ -903,13 +877,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/enumModel/eIdentityStatu.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="69">
-          <caret line="5" column="43" lean-forward="true" selection-start-line="5" selection-start-column="43" selection-end-line="5" selection-end-column="43" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/impl/SmartVisitorServiceImpl.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="311">
@@ -986,13 +953,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartWarningController.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="295">
-          <caret line="204" column="133" selection-start-line="204" selection-start-column="103" selection-end-line="204" selection-end-column="133" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/SmartApplyService.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="621">
@@ -1069,76 +1029,138 @@
     <entry file="file://$PROJECT_DIR$/src/main/java/com/template/common/utils/JWTUtil.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="105">
-          <caret line="42" column="47" lean-forward="true" selection-start-line="42" selection-start-column="47" selection-end-line="42" selection-end-column="47" />
+          <caret line="42" column="47" selection-start-line="42" selection-start-column="47" selection-end-line="42" selection-end-column="47" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/controller/WechatScanLoginController.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/impl/SmartUserServiceImpl.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="175">
-          <caret line="331" column="17" lean-forward="true" selection-start-line="331" selection-start-column="17" selection-end-line="331" selection-end-column="17" />
+        <state relative-caret-position="361">
+          <caret line="61" column="66" selection-start-line="61" selection-start-column="47" selection-end-line="61" selection-end-column="66" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/vo/WechatUserVo.java">
+    <entry file="file://$PROJECT_DIR$/src/main/resources/mapper/template/SystemUserMapper.xml">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/resources/mapper/template/SmartUserMapper.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="560">
-          <caret line="79" column="7" selection-start-line="79" selection-start-column="7" selection-end-line="79" selection-end-column="7" />
+        <state relative-caret-position="131">
+          <caret line="20" column="44" selection-start-line="20" selection-start-column="44" selection-end-line="20" selection-end-column="44" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/pojo/SmartUser.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/enumModel/eTimeGroup.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-352">
-          <caret line="28" column="13" selection-start-line="28" selection-start-column="13" selection-end-line="28" selection-end-column="13" />
+        <state relative-caret-position="424">
+          <caret line="62" column="25" selection-start-line="62" selection-start-column="25" selection-end-line="62" selection-end-column="25" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/api/SystemMenuControllerAPI.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="234">
+          <caret line="40" column="32" selection-start-line="40" selection-start-column="32" selection-end-line="40" selection-end-column="32" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/vo/UserVo.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="417">
+          <caret line="154" column="29" selection-start-line="154" selection-start-column="29" selection-end-line="154" selection-end-column="29" />
+          <folding>
+            <element signature="e#2022#2023#0" expanded="true" />
+            <element signature="e#2072#2073#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/pojo/SmartDepartment.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="295">
+          <caret line="36" column="31" selection-start-line="36" selection-start-column="31" selection-end-line="36" selection-end-column="31" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/pojo/SmartAuthorGroup.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="295">
+          <caret line="36" column="31" selection-start-line="36" selection-start-column="31" selection-end-line="36" selection-end-column="31" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartDepartmentController.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-4">
+          <caret line="251" column="9" selection-start-line="251" selection-start-column="9" selection-end-line="251" selection-end-column="9" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/api/SmartWarningControllerAPI.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="269">
+          <caret line="56" column="47" selection-start-line="56" selection-start-column="26" selection-end-line="56" selection-end-column="47" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/controller/SmartWarningController.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1925">
+          <caret line="201" column="45" selection-start-line="201" selection-start-column="24" selection-end-line="201" selection-end-column="45" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/impl/SmartUploadServiceImpl.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="562">
+          <caret line="143" column="35" selection-start-line="143" selection-start-column="35" selection-end-line="143" selection-end-column="35" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/AutoCode.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="253">
+          <caret line="23" column="42" selection-start-line="23" selection-start-column="4" selection-end-line="23" selection-end-column="42" />
         </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="450">
-          <caret line="1465" column="71" selection-start-line="1465" selection-start-column="52" selection-end-line="1465" selection-end-column="71" />
+        <state relative-caret-position="-433">
+          <caret line="1557" column="65" lean-forward="true" selection-start-line="1557" selection-start-column="65" selection-end-line="1557" selection-end-column="65" />
           <folding>
             <element signature="method#importZipUsers#0;class#SmartUserController#0" />
-            <element signature="method#readXlsx#0;class#SmartUserController#0" />
-            <element signature="method#readXls#0;class#SmartUserController#0" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/services/impl/SmartUserServiceImpl.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/vo/WechatUserVo.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="361">
-          <caret line="61" column="66" selection-start-line="61" selection-start-column="47" selection-end-line="61" selection-end-column="66" />
+        <state relative-caret-position="367">
+          <caret line="118" column="12" selection-start-line="118" selection-start-column="12" selection-end-line="118" selection-end-column="12" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/resources/mapper/template/SystemUserMapper.xml">
-      <provider selected="true" editor-type-id="text-editor" />
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/resources/mapper/template/SmartUserMapper.xml">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/pojo/SmartUser.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="131">
-          <caret line="20" column="44" lean-forward="true" selection-start-line="20" selection-start-column="44" selection-end-line="20" selection-end-column="44" />
+        <state relative-caret-position="295">
+          <caret line="46" column="20" selection-start-line="46" selection-start-column="20" selection-end-line="46" selection-end-column="20" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/enumModel/eTimeGroup.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/enumModel/eIdentityStatu.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="207">
-          <caret line="9" column="22" selection-start-line="9" selection-start-column="12" selection-end-line="9" selection-end-column="22" />
+        <state relative-caret-position="138">
+          <caret line="8" column="26" selection-start-line="8" selection-start-column="12" selection-end-line="8" selection-end-column="26" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/template/model/vo/UserVo.java">
+    <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="378">
-          <caret line="154" column="31" selection-start-line="154" selection-start-column="31" selection-end-line="154" selection-end-column="31" />
+        <state relative-caret-position="440">
+          <caret line="374" lean-forward="true" selection-start-line="374" selection-end-line="374" />
           <folding>
-            <element signature="e#1965#1966#0" expanded="true" />
-            <element signature="e#2024#2025#0" expanded="true" />
-            <element signature="e#2022#2023#0" expanded="true" />
-            <element signature="e#2072#2073#0" expanded="true" />
+            <element signature="method#vertifyMessage#0;class#WechatScanLoginController#0" />
           </folding>
         </state>
       </provider>

+ 460 - 378
src/main/java/com/template/controller/WechatScanLoginController.java

@@ -12,15 +12,18 @@ 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.SmartDepartment;
 import com.template.model.pojo.SmartUser;
 import com.template.model.pojo.SmsCode;
 import com.template.model.result.CommonResult;
 import com.template.model.result.PageUtils;
 import com.template.model.tongji.*;
 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,392 +41,471 @@ 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.*;
 
 /**
  * Title: WechatScanLoginController
  * Description: 微信扫码登录controller
- * 
+ *
  * @author fengyong
  * @date 2018年9月7日
  */
 @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;
-	}
-
-	/**
-	 * 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);
-					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: 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 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",code);
-				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));
-					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 insertMonthMeter(String month){
-		if (month==null){
-			month=TimeExchange2.getMonth();
-		}
-		wechatScanLoginService.insertMonthMeter(month);
-		return "插入完毕";
-	}
-
-	@Override
-	@PassToken
-	public String insertDayMeter(String day){
-		if (day==null){
-			day=TimeExchange2.getDateStr();
-		}
-		wechatScanLoginService.insertDayMeter(day);
-		return "插入完毕";
-	}
-
-	/**
-	 * Description: 用户类别统计
-	 */
-	@Override
-	@PassToken
-	public CommonResult getUserIdTj(){
-		List<Tj> list = wechatScanLoginService.getUserIdTj();
-		return CommonResult.ok(list);
-	}
-
-	/**
-	 * Description: 用户总数
-	 */
-	@Override
-	@PassToken
-	public CommonResult getUserIdTjt(){
-		All list = wechatScanLoginService.getUserIdTjt();
-		return CommonResult.ok(list);
-	}
-
-	/**
-	 * Description: 水表总计
-	 */
-	@Override
-	@PassToken
-	public CommonResult getWaterTj(){
-		DAll list = wechatScanLoginService.getWaterTj();
-		return CommonResult.ok(list);
-	}
-
-	/**
-	 * Description: 电表总计
-	 */
-	@Override
-	@PassToken
-	public CommonResult getElcTj(){
-		DAll list = wechatScanLoginService.getElcTj();
-		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 getMonElc() throws ParseException {
-		List<MonthMeterDetail> list = wechatScanLoginService.getMonElc();
-		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 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("请绑定后再进入");
-		}
-		String token = JWTUtil.getToken(user.get(0));
-		JSONObject jsonObject = new JSONObject();
-		jsonObject.put("token", token);
-		jsonObject.put("user", user);
-		return CommonResult.ok(jsonObject.toString());
-	}
-
-	@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() + 60000L;
-		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));
-		String token = JWTUtil.getToken(user.get(0));
-		JSONObject jsonObject = new JSONObject();
-		jsonObject.put("token", token);
-		jsonObject.put("user", user.get(0));
-		return CommonResult.ok(jsonObject);
-	}
+    @Autowired
+    private WechatScanLoginService wechatScanLoginService;
+    @Autowired
+    public SmartUserService smartUserService;
+    @Autowired
+    public SmartAuthorityService smartAuthorityService;
+    @Autowired
+    public SmartDepartmentService smartDepartmentService;
+    @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;
+    }
+
+    /**
+     * 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);
+                    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: 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 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", code);
+                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));
+                    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 insertMonthMeter(String month) {
+        if (month == null) {
+            month = TimeExchange2.getMonth();
+        }
+        wechatScanLoginService.insertMonthMeter(month);
+        return "插入完毕";
+    }
+
+    @Override
+    @PassToken
+    public String insertDayMeter(String day) {
+        if (day == null) {
+            day = TimeExchange2.getDateStr();
+        }
+        wechatScanLoginService.insertDayMeter(day);
+        return "插入完毕";
+    }
+
+    /**
+     * Description: 用户类别统计
+     */
+    @Override
+    @PassToken
+    public CommonResult getUserIdTj() {
+        List<Tj> list = wechatScanLoginService.getUserIdTj();
+        return CommonResult.ok(list);
+    }
+
+    /**
+     * Description: 用户总数
+     */
+    @Override
+    @PassToken
+    public CommonResult getUserIdTjt() {
+        All list = wechatScanLoginService.getUserIdTjt();
+        return CommonResult.ok(list);
+    }
+
+    /**
+     * Description: 水表总计
+     */
+    @Override
+    @PassToken
+    public CommonResult getWaterTj() {
+        DAll list = wechatScanLoginService.getWaterTj();
+        return CommonResult.ok(list);
+    }
+
+    /**
+     * Description: 电表总计
+     */
+    @Override
+    @PassToken
+    public CommonResult getElcTj() {
+        DAll list = wechatScanLoginService.getElcTj();
+        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 getMonElc() throws ParseException {
+        List<MonthMeterDetail> list = wechatScanLoginService.getMonElc();
+        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 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);
+
+        String token = JWTUtil.getToken(user.get(0));
+        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()){//学生
+
+            }else if(su.getIdentityId().intValue() == eIdentityStatu.Parent.getValue()){//家长
+
+            }
+            //关联人名称用逗号隔开
+
+            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);
+        return CommonResult.ok(jsonObject.toString());
+    }
+
+    /**
+     * 根据父级ID获取父级数据
+     *
+     * @param parentID 子级ID
+     * @param lists    数据集合
+     * @return
+     */
+    private 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;
+            QueryParentDepartments(data.get().getParentId(), lists, departmentStr);
+        }
+
+        return departmentStr;
+    }
+
+    @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() + 60000L;
+        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));
+        String token = JWTUtil.getToken(user.get(0));
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("token", token);
+        jsonObject.put("user", user.get(0));
+        return CommonResult.ok(jsonObject);
+    }
+
+
 }

+ 1 - 1
src/main/java/com/template/model/vo/UserVo.java

@@ -160,7 +160,7 @@ public class UserVo {
     private String timeGroupName;
 
     public String getTimeGroupName() {
-        return eTimeGroup.stringOfName(timeGroupId);
+        return timeGroupId == null ? timeGroupName : eTimeGroup.stringOfName(timeGroupId);
     }
 
     public void setTimeGroupName(String timeGroupName) {

+ 77 - 46
src/main/java/com/template/model/vo/WechatUserVo.java

@@ -21,7 +21,6 @@ import java.util.Date;
 @Data
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
-@ApiModel(value="SmartUser对象", description="")
 public class WechatUserVo implements Serializable {
     /**
      * 数据ID
@@ -68,7 +67,7 @@ public class WechatUserVo implements Serializable {
     /**
      * 部门
      */
-    private String departmentStr;
+    private String departmentName;
 
     /**
      * 人脸照片
@@ -80,92 +79,124 @@ public class WechatUserVo implements Serializable {
      */
     private String grade;
 
-    @ApiModelProperty(value = "学院")
+    /**
+     * 学院
+     */
     private String college;
 
-    @ApiModelProperty(value = "专业")
+    /**
+     * 专业
+     */
     private String speciality;
 
-    @ApiModelProperty(value = "班级")
+    /**
+     * 班级
+     */
     private Integer schoolClass;
 
-    @ApiModelProperty(value = "校区")
+    /**
+     * 校区
+     */
     private String campus;
 
-    @ApiModelProperty(value = "宿舍号")
+    /**
+     * 宿舍号
+     */
     private String dormitoryNumber;
 
-    @ApiModelProperty(value = "手机号")
+    /**
+     * 手机号
+     */
     private String phone;
 
-    @ApiModelProperty(value = "关联人 被关联用户的ID 多个用户用逗号隔开")
+    /**
+     * 关联人
+     * 被关联用户的ID 多个用户用逗号隔开
+     */
     private String affiliate;
 
-    @ApiModelProperty(value = "职称")
+    /**
+     * 关联人名称
+     */
+    private String affiliateName;
+
+    /**
+     * 职称
+     */
     private String title;
 
-    @ApiModelProperty(value = "家庭住址")
+    /**
+     * 家庭住址
+     */
     private String address;
 
-    @ApiModelProperty(value = "民族")
+    /**
+     * 民族
+     */
     private String nation;
 
-    @ApiModelProperty(value = "生源地")
+    /**
+     * 生源地
+     */
     private String ofStudent;
 
-    @ApiModelProperty(value = "毕业学校")
+    /**
+     * 毕业学校
+     */
     private String graduate;
 
-    @ApiModelProperty(value = "职务")
+    /**
+     * 职务
+     */
     private Integer duties;
 
-    @ApiModelProperty(value = "是否推送公众号信息  不推送:0 推送:1")
+    /**
+     * 是否推送公众号消息
+     * 不推送:0
+     * 推送:1
+     */
     private Integer isPush;
 
-    @ApiModelProperty(value = "是否注销  未注销:0  注销:1")
+    /**
+     * 是否注销
+     * 未注销:0
+     * 注销:1
+     */
     private Integer isCancel;
 
-    @ApiModelProperty(value = "微信openId")
+    /**
+     * 微信openId
+     */
     private String openId;
 
-    @ApiModelProperty(value = "小程序openId")
+    /**
+     * 小程序openId
+     */
     private String xOpenId;
 
-    @ApiModelProperty(value = "公众号openId")
+    /**
+     * 公众号openId
+     */
     private String gzhOpenId;
 
-    @ApiModelProperty(value = "希沃学生UID")
+    /**
+     * 希沃学生UID
+     */
     private String xwStudentUid;
 
-    @ApiModelProperty(value = "百胜学生编号")
+    /**
+     * 百胜学生编号
+     */
     private String bsStudentNo;
 
-    @ApiModelProperty(value = "希沃教师工号")
+    /**
+     * 希沃教师工号
+     */
     private String xwTeacherCode;
 
-    @ApiModelProperty(value = "百胜教师编号")
+    /**
+     * 百胜教师编号
+     */
     private String bsStaffCode;
 
-    @ApiModelProperty(value = "创建时间")
-    @TableField(fill = FieldFill.INSERT)
-    private Date createTime;
-
-    @ApiModelProperty(value = "更新时间")
-    @TableField(fill = FieldFill.INSERT_UPDATE)
-    private Date updateTime;
-
-    @ApiModelProperty(value = "创建人员")
-    @TableField(fill = FieldFill.INSERT)
-    private String createUser;
-
-    @ApiModelProperty(value = "更新人员")
-    @TableField(fill = FieldFill.INSERT_UPDATE)
-    private String updateUser;
-
-    @ApiModelProperty(value = "逻辑删除 未删除:0;删除:1")
-    @TableField(fill = FieldFill.INSERT)
-    @TableLogic
-    private Integer deleted;
-
-
 }

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

@@ -74,6 +74,7 @@ com\template\model\pojo\SmartGrade.class
 com\template\services\impl\SmartScreenshotServiceImpl.class
 com\template\annotation\PassToken.class
 com\template\model\request\turnOnTheDeviceRequest.class
+com\template\model\vo\WechatUserVo.class
 com\template\common\exception\EmsExceptionHandler.class
 com\template\mapper\SmartUserMapper.class
 com\template\api\SmartAuthorGroupControllerAPI.class

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

@@ -114,6 +114,7 @@ D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\templa
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\vo\BaseImageVo.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\CommonUtil.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\SmartBuildMeter.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\vo\WechatUserVo.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SmartBuildService.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\SmartMenuController.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\mapper\SmartFreezeRecordMapper.java

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