Parcourir la source

短信发送和异常拦截

夏文涛 il y a 3 ans
Parent
commit
0a084aad05

+ 13 - 0
.idea/libraries/Maven__com_github_qcloudsms_qcloudsms_1_0_6.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.github.qcloudsms:qcloudsms:1.0.6">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/github/qcloudsms/qcloudsms/1.0.6/qcloudsms-1.0.6.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/github/qcloudsms/qcloudsms/1.0.6/qcloudsms-1.0.6-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/github/qcloudsms/qcloudsms/1.0.6/qcloudsms-1.0.6-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__org_apache_httpcomponents_httpmime_4_5_13.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.apache.httpcomponents:httpmime:4.5.13">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpmime/4.5.13/httpmime-4.5.13.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpmime/4.5.13/httpmime-4.5.13-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpmime/4.5.13/httpmime-4.5.13-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
.idea/libraries/Maven__org_json_json_20170516.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: org.json:json:20170516">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/json/json/20170516/json-20170516.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/org/json/json/20170516/json-20170516-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/json/json/20170516/json-20170516-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 6 - 0
.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="Git" />
+  </component>
+</project>

+ 313 - 179
.idea/workspace.xml

@@ -1,7 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
 <project version="4">
   <component name="ChangeListManager">
   <component name="ChangeListManager">
-    <list default="true" id="3ff4794b-6964-480b-bcb6-ead103f7d762" name="Default Changelist" comment="" />
+    <list default="true" id="3ff4794b-6964-480b-bcb6-ead103f7d762" name="Default Changelist" comment="">
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/video/config/smsConfig.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/common/exception/EmsException.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/common/exception/EmsExceptionHandler.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/common/exception/MyCustomException.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/common/result/ResponseStatusEnum.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/common/utils/smsUtil.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/pom.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/video/model/utils/CommonResult.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/video/model/utils/CommonResult.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/resources/application-dev.yml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/application-dev.yml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/resources/application-prod.yml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/application-prod.yml" afterDir="false" />
+    </list>
     <ignored path="$PROJECT_DIR$/classes/" />
     <ignored path="$PROJECT_DIR$/classes/" />
     <ignored path="$PROJECT_DIR$/target/" />
     <ignored path="$PROJECT_DIR$/target/" />
     <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
     <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
@@ -16,37 +27,49 @@
   <component name="FileEditorManager">
   <component name="FileEditorManager">
     <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
     <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
       <file pinned="false" current-in-tab="false">
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/video/AutoCode.java">
+        <entry file="file://$PROJECT_DIR$/src/main/resources/application.yml">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="-27">
+              <caret line="12" column="172" selection-start-line="12" selection-start-column="49" selection-end-line="12" selection-end-column="172" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/src/main/java/common/utils/smsUtil.java">
           <provider selected="true" editor-type-id="text-editor">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="1173">
-              <caret line="63" column="17" selection-start-line="63" selection-start-column="17" selection-end-line="63" selection-end-column="17" />
+            <state relative-caret-position="235">
+              <caret line="25" column="7" selection-start-line="25" selection-start-column="7" selection-end-line="25" selection-end-column="7" />
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
             </state>
             </state>
           </provider>
           </provider>
         </entry>
         </entry>
       </file>
       </file>
       <file pinned="false" current-in-tab="false">
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/resources/application.yml">
+        <entry file="file://$PROJECT_DIR$/src/main/java/common/exception/EmsException.java">
           <provider selected="true" editor-type-id="text-editor">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="276">
-              <caret line="12" column="172" selection-start-line="12" selection-start-column="49" selection-end-line="12" selection-end-column="172" />
+            <state relative-caret-position="230">
+              <caret line="10" column="29" selection-start-line="10" selection-start-column="18" selection-end-line="10" selection-end-column="35" />
             </state>
             </state>
           </provider>
           </provider>
         </entry>
         </entry>
       </file>
       </file>
       <file pinned="false" current-in-tab="false">
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/video/mapper/SystemMenuMapper.java">
+        <entry file="file://$PROJECT_DIR$/src/main/java/common/exception/MyCustomException.java">
           <provider selected="true" editor-type-id="text-editor">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="437">
-              <caret line="24" column="11" selection-start-line="24" selection-start-column="11" selection-end-line="24" selection-end-column="11" />
+            <state relative-caret-position="207">
+              <caret line="9" column="13" selection-start-line="9" selection-start-column="13" selection-end-line="9" selection-end-column="13" />
             </state>
             </state>
           </provider>
           </provider>
         </entry>
         </entry>
       </file>
       </file>
-      <file pinned="false" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/video/controller/PlaybackRecordController.java">
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/main/java/common/exception/EmsExceptionHandler.java">
           <provider selected="true" editor-type-id="text-editor">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="-2887">
-              <caret line="122" column="80" selection-start-line="122" selection-start-column="80" selection-end-line="122" selection-end-column="80" />
+            <state relative-caret-position="169">
+              <caret line="160" column="50" selection-start-line="160" selection-start-column="50" selection-end-line="160" selection-end-column="50" />
               <folding>
               <folding>
                 <element signature="imports" expanded="true" />
                 <element signature="imports" expanded="true" />
               </folding>
               </folding>
@@ -55,49 +78,75 @@
         </entry>
         </entry>
       </file>
       </file>
       <file pinned="false" current-in-tab="false">
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/video/annotation/PassToken.java">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/video/model/utils/CommonResult.java">
           <provider selected="true" editor-type-id="text-editor">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="506">
-              <caret line="25" column="18" selection-start-line="25" selection-start-column="18" selection-end-line="25" selection-end-column="18" />
+            <state relative-caret-position="1275">
+              <caret line="76" column="31" selection-start-line="76" selection-start-column="31" selection-end-line="76" selection-end-column="31" />
+              <folding>
+                <element signature="imports" expanded="true" />
+                <element signature="e#411#412#0" expanded="true" />
+                <element signature="e#449#450#0" expanded="true" />
+                <element signature="e#518#519#0" expanded="true" />
+                <element signature="e#568#569#0" expanded="true" />
+                <element signature="e#609#610#0" expanded="true" />
+                <element signature="e#650#651#0" expanded="true" />
+                <element signature="e#714#715#0" expanded="true" />
+                <element signature="e#765#766#0" expanded="true" />
+                <element signature="e#1413#1414#0" expanded="true" />
+                <element signature="e#1468#1469#0" expanded="true" />
+                <element signature="e#1617#1618#0" expanded="true" />
+                <element signature="e#1688#1689#0" expanded="true" />
+                <element signature="e#2084#2085#0" expanded="true" />
+                <element signature="e#2158#2159#0" expanded="true" />
+                <element signature="e#2287#2288#0" expanded="true" />
+                <element signature="e#2329#2330#0" expanded="true" />
+              </folding>
             </state>
             </state>
           </provider>
           </provider>
         </entry>
         </entry>
       </file>
       </file>
       <file pinned="false" current-in-tab="false">
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/video/annotation/UserLoginCheck.java">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/video/config/smsConfig.java">
           <provider selected="true" editor-type-id="text-editor">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="253">
-              <caret line="12" column="18" selection-start-line="12" selection-start-column="18" selection-end-line="12" selection-end-column="18" />
+            <state relative-caret-position="483">
+              <caret line="21" column="19" selection-start-line="21" selection-start-column="19" selection-end-line="21" selection-end-column="19" />
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
             </state>
             </state>
           </provider>
           </provider>
         </entry>
         </entry>
       </file>
       </file>
       <file pinned="false" current-in-tab="false">
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/java/com/video/aop/LoginCheckAspect.java">
+        <entry file="file://$PROJECT_DIR$/src/main/java/common/result/ResponseStatusEnum.java">
           <provider selected="true" editor-type-id="text-editor">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="299">
-              <caret line="21" column="13" selection-start-line="21" selection-start-column="13" selection-end-line="21" selection-end-column="13" />
+            <state relative-caret-position="253">
+              <caret line="11" column="4" selection-start-line="11" selection-start-column="4" selection-end-line="11" selection-end-column="4" />
               <folding>
               <folding>
-                <element signature="imports" expanded="true" />
+                <element signature="e#1581#1582#0" expanded="true" />
+                <element signature="e#1610#1611#0" expanded="true" />
               </folding>
               </folding>
             </state>
             </state>
           </provider>
           </provider>
         </entry>
         </entry>
       </file>
       </file>
       <file pinned="false" current-in-tab="false">
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/resources/application-dev.yml">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/video/annotation/UserLoginCheck.java">
           <provider selected="true" editor-type-id="text-editor">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="966">
-              <caret line="42" column="31" selection-start-line="42" selection-start-column="31" selection-end-line="42" selection-end-column="31" />
+            <state relative-caret-position="253">
+              <caret line="12" column="18" selection-start-line="12" selection-start-column="18" selection-end-line="12" selection-end-column="18" />
             </state>
             </state>
           </provider>
           </provider>
         </entry>
         </entry>
       </file>
       </file>
       <file pinned="false" current-in-tab="false">
       <file pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/main/resources/application-prod.yml">
+        <entry file="file://$PROJECT_DIR$/src/main/java/com/video/aop/LoginCheckAspect.java">
           <provider selected="true" editor-type-id="text-editor">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="736">
-              <caret line="32" column="24" selection-start-line="32" selection-start-column="24" selection-end-line="32" selection-end-column="24" />
+            <state relative-caret-position="299">
+              <caret line="21" column="13" selection-start-line="21" selection-start-column="13" selection-end-line="21" selection-end-column="13" />
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
             </state>
             </state>
           </provider>
           </provider>
         </entry>
         </entry>
@@ -115,13 +164,6 @@
   </component>
   </component>
   <component name="FindInProjectRecents">
   <component name="FindInProjectRecents">
     <findStrings>
     <findStrings>
-      <find>spring-boot-starter-parent</find>
-      <find>狂</find>
-      <find>kuang</find>
-      <find>selectList</find>
-      <find>rangeHeader</find>
-      <find>InsertPlaybackRecord</find>
-      <find>down</find>
       <find>swagger</find>
       <find>swagger</find>
       <find>deleteById</find>
       <find>deleteById</find>
       <find>delete</find>
       <find>delete</find>
@@ -145,19 +187,21 @@
       <find>querySystemMenuAll</find>
       <find>querySystemMenuAll</find>
       <find>tests</find>
       <find>tests</find>
       <find>json</find>
       <find>json</find>
+      <find>params</find>
+      <find>properties</find>
+      <find>SmsSingleSenderResult</find>
+      <find>sendWithParam</find>
+      <find>status</find>
+      <find>FAILED</find>
+      <find>getErrors</find>
     </findStrings>
     </findStrings>
   </component>
   </component>
+  <component name="Git.Settings">
+    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
+  </component>
   <component name="IdeDocumentHistory">
   <component name="IdeDocumentHistory">
     <option name="CHANGED_PATHS">
     <option name="CHANGED_PATHS">
       <list>
       <list>
-        <option value="$PROJECT_DIR$/src/main/java/com/video/AutoCode.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/video/services/VideoCategoryService.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/video/mapper/VideoShareMapper.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/video/services/PlaybackRecordService.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/video/services/SystemAuthorityService.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/video/services/SystemRoleService.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/video/services/SystemUserService.java" />
-        <option value="$PROJECT_DIR$/src/main/java/com/video/services/VideoPlayService.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/video/services/VideoService.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/video/services/VideoService.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/video/services/VideoShareService.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/video/services/VideoShareService.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/video/mapper/SystemAuthorityMapper.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/video/mapper/SystemAuthorityMapper.java" />
@@ -185,7 +229,6 @@
         <option value="$PROJECT_DIR$/src/main/java/com/video/model/pojo/resultData.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/video/model/pojo/resultData.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/video/services/annotation/UserLoginCheck.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/video/services/annotation/UserLoginCheck.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/video/core/JwtAuthenticationInterceptor.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/video/core/JwtAuthenticationInterceptor.java" />
-        <option value="$PROJECT_DIR$/pom.xml" />
         <option value="$PROJECT_DIR$/src/main/java/com/video/api/PlaybackRecordControllerAPI.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/video/api/PlaybackRecordControllerAPI.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/video/aop/LoginCheckAspect.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/video/aop/LoginCheckAspect.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/video/handler/MyMetaObjectHandler.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/video/handler/MyMetaObjectHandler.java" />
@@ -197,10 +240,19 @@
         <option value="$PROJECT_DIR$/src/main/java/com/video/services/impl/SystemMenuServiceImpl.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/video/services/impl/SystemMenuServiceImpl.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/video/api/SystemMenuControllerAPI.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/video/api/SystemMenuControllerAPI.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/video/controller/SystemMenuController.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/video/controller/SystemMenuController.java" />
-        <option value="$PROJECT_DIR$/src/main/resources/application-dev.yml" />
-        <option value="$PROJECT_DIR$/src/main/resources/application-prod.yml" />
         <option value="$PROJECT_DIR$/src/main/resources/application.yml" />
         <option value="$PROJECT_DIR$/src/main/resources/application.yml" />
         <option value="$PROJECT_DIR$/src/main/java/com/video/controller/PlaybackRecordController.java" />
         <option value="$PROJECT_DIR$/src/main/java/com/video/controller/PlaybackRecordController.java" />
+        <option value="$PROJECT_DIR$/pom.xml" />
+        <option value="$PROJECT_DIR$/src/main/resources/application-dev.yml" />
+        <option value="$PROJECT_DIR$/src/main/resources/application-prod.yml" />
+        <option value="$PROJECT_DIR$/src/main/java/com/video/config/smsConfig.java" />
+        <option value="$PROJECT_DIR$/src/main/java/common/smsUtil.java" />
+        <option value="$PROJECT_DIR$/src/main/java/common/exception/EmsException.java" />
+        <option value="$PROJECT_DIR$/src/main/java/common/exception/MyCustomException.java" />
+        <option value="$PROJECT_DIR$/src/main/java/common/result/ResponseStatusEnum.java" />
+        <option value="$PROJECT_DIR$/src/main/java/com/video/model/utils/CommonResult.java" />
+        <option value="$PROJECT_DIR$/src/main/java/common/exception/EmsExceptionHandler.java" />
+        <option value="$PROJECT_DIR$/src/main/java/common/utils/smsUtil.java" />
       </list>
       </list>
     </option>
     </option>
   </component>
   </component>
@@ -244,35 +296,34 @@
       <foldersAlwaysOnTop value="true" />
       <foldersAlwaysOnTop value="true" />
     </navigator>
     </navigator>
     <panes>
     <panes>
-      <pane id="PackagesPane" />
       <pane id="ProjectPane">
       <pane id="ProjectPane">
         <subPane>
         <subPane>
           <expand>
           <expand>
             <path>
             <path>
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
-              <item name="视频分享" type="462c0819:PsiDirectoryNode" />
+              <item name="videoShare" type="462c0819:PsiDirectoryNode" />
             </path>
             </path>
             <path>
             <path>
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
-              <item name="视频分享" type="462c0819:PsiDirectoryNode" />
+              <item name="videoShare" type="462c0819:PsiDirectoryNode" />
               <item name="src" type="462c0819:PsiDirectoryNode" />
               <item name="src" type="462c0819:PsiDirectoryNode" />
             </path>
             </path>
             <path>
             <path>
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
-              <item name="视频分享" type="462c0819:PsiDirectoryNode" />
+              <item name="videoShare" type="462c0819:PsiDirectoryNode" />
               <item name="src" type="462c0819:PsiDirectoryNode" />
               <item name="src" type="462c0819:PsiDirectoryNode" />
               <item name="main" type="462c0819:PsiDirectoryNode" />
               <item name="main" type="462c0819:PsiDirectoryNode" />
             </path>
             </path>
             <path>
             <path>
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
-              <item name="视频分享" type="462c0819:PsiDirectoryNode" />
+              <item name="videoShare" type="462c0819:PsiDirectoryNode" />
               <item name="src" type="462c0819:PsiDirectoryNode" />
               <item name="src" type="462c0819:PsiDirectoryNode" />
               <item name="main" type="462c0819:PsiDirectoryNode" />
               <item name="main" type="462c0819:PsiDirectoryNode" />
               <item name="java" type="462c0819:PsiDirectoryNode" />
               <item name="java" type="462c0819:PsiDirectoryNode" />
             </path>
             </path>
             <path>
             <path>
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
-              <item name="视频分享" type="462c0819:PsiDirectoryNode" />
+              <item name="videoShare" type="462c0819:PsiDirectoryNode" />
               <item name="src" type="462c0819:PsiDirectoryNode" />
               <item name="src" type="462c0819:PsiDirectoryNode" />
               <item name="main" type="462c0819:PsiDirectoryNode" />
               <item name="main" type="462c0819:PsiDirectoryNode" />
               <item name="java" type="462c0819:PsiDirectoryNode" />
               <item name="java" type="462c0819:PsiDirectoryNode" />
@@ -280,7 +331,25 @@
             </path>
             </path>
             <path>
             <path>
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
-              <item name="视频分享" type="462c0819:PsiDirectoryNode" />
+              <item name="videoShare" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+              <item name="main" type="462c0819:PsiDirectoryNode" />
+              <item name="java" type="462c0819:PsiDirectoryNode" />
+              <item name="video" type="462c0819:PsiDirectoryNode" />
+              <item name="annotation" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
+              <item name="videoShare" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+              <item name="main" type="462c0819:PsiDirectoryNode" />
+              <item name="java" type="462c0819:PsiDirectoryNode" />
+              <item name="video" type="462c0819:PsiDirectoryNode" />
+              <item name="aop" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
+              <item name="videoShare" type="462c0819:PsiDirectoryNode" />
               <item name="src" type="462c0819:PsiDirectoryNode" />
               <item name="src" type="462c0819:PsiDirectoryNode" />
               <item name="main" type="462c0819:PsiDirectoryNode" />
               <item name="main" type="462c0819:PsiDirectoryNode" />
               <item name="java" type="462c0819:PsiDirectoryNode" />
               <item name="java" type="462c0819:PsiDirectoryNode" />
@@ -289,7 +358,16 @@
             </path>
             </path>
             <path>
             <path>
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
-              <item name="视频分享" type="462c0819:PsiDirectoryNode" />
+              <item name="videoShare" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+              <item name="main" type="462c0819:PsiDirectoryNode" />
+              <item name="java" type="462c0819:PsiDirectoryNode" />
+              <item name="video" type="462c0819:PsiDirectoryNode" />
+              <item name="config" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
+              <item name="videoShare" type="462c0819:PsiDirectoryNode" />
               <item name="src" type="462c0819:PsiDirectoryNode" />
               <item name="src" type="462c0819:PsiDirectoryNode" />
               <item name="main" type="462c0819:PsiDirectoryNode" />
               <item name="main" type="462c0819:PsiDirectoryNode" />
               <item name="java" type="462c0819:PsiDirectoryNode" />
               <item name="java" type="462c0819:PsiDirectoryNode" />
@@ -298,76 +376,97 @@
             </path>
             </path>
             <path>
             <path>
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
-              <item name="视频分享" type="462c0819:PsiDirectoryNode" />
+              <item name="videoShare" type="462c0819:PsiDirectoryNode" />
               <item name="src" type="462c0819:PsiDirectoryNode" />
               <item name="src" type="462c0819:PsiDirectoryNode" />
               <item name="main" type="462c0819:PsiDirectoryNode" />
               <item name="main" type="462c0819:PsiDirectoryNode" />
               <item name="java" type="462c0819:PsiDirectoryNode" />
               <item name="java" type="462c0819:PsiDirectoryNode" />
               <item name="video" type="462c0819:PsiDirectoryNode" />
               <item name="video" type="462c0819:PsiDirectoryNode" />
-              <item name="mapper" type="462c0819:PsiDirectoryNode" />
+              <item name="core" type="462c0819:PsiDirectoryNode" />
             </path>
             </path>
             <path>
             <path>
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
-              <item name="视频分享" type="462c0819:PsiDirectoryNode" />
+              <item name="videoShare" type="462c0819:PsiDirectoryNode" />
               <item name="src" type="462c0819:PsiDirectoryNode" />
               <item name="src" type="462c0819:PsiDirectoryNode" />
               <item name="main" type="462c0819:PsiDirectoryNode" />
               <item name="main" type="462c0819:PsiDirectoryNode" />
               <item name="java" type="462c0819:PsiDirectoryNode" />
               <item name="java" type="462c0819:PsiDirectoryNode" />
               <item name="video" type="462c0819:PsiDirectoryNode" />
               <item name="video" type="462c0819:PsiDirectoryNode" />
-              <item name="model" type="462c0819:PsiDirectoryNode" />
+              <item name="handle" type="462c0819:PsiDirectoryNode" />
             </path>
             </path>
             <path>
             <path>
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
-              <item name="视频分享" type="462c0819:PsiDirectoryNode" />
+              <item name="videoShare" type="462c0819:PsiDirectoryNode" />
               <item name="src" type="462c0819:PsiDirectoryNode" />
               <item name="src" type="462c0819:PsiDirectoryNode" />
               <item name="main" type="462c0819:PsiDirectoryNode" />
               <item name="main" type="462c0819:PsiDirectoryNode" />
               <item name="java" type="462c0819:PsiDirectoryNode" />
               <item name="java" type="462c0819:PsiDirectoryNode" />
               <item name="video" type="462c0819:PsiDirectoryNode" />
               <item name="video" type="462c0819:PsiDirectoryNode" />
-              <item name="model" type="462c0819:PsiDirectoryNode" />
-              <item name="pojo" type="462c0819:PsiDirectoryNode" />
+              <item name="handler" type="462c0819:PsiDirectoryNode" />
             </path>
             </path>
             <path>
             <path>
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
-              <item name="视频分享" type="462c0819:PsiDirectoryNode" />
+              <item name="videoShare" type="462c0819:PsiDirectoryNode" />
               <item name="src" type="462c0819:PsiDirectoryNode" />
               <item name="src" type="462c0819:PsiDirectoryNode" />
               <item name="main" type="462c0819:PsiDirectoryNode" />
               <item name="main" type="462c0819:PsiDirectoryNode" />
               <item name="java" type="462c0819:PsiDirectoryNode" />
               <item name="java" type="462c0819:PsiDirectoryNode" />
               <item name="video" type="462c0819:PsiDirectoryNode" />
               <item name="video" type="462c0819:PsiDirectoryNode" />
               <item name="model" type="462c0819:PsiDirectoryNode" />
               <item name="model" type="462c0819:PsiDirectoryNode" />
-              <item name="vo" type="462c0819:PsiDirectoryNode" />
             </path>
             </path>
             <path>
             <path>
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
-              <item name="视频分享" type="462c0819:PsiDirectoryNode" />
+              <item name="videoShare" type="462c0819:PsiDirectoryNode" />
               <item name="src" type="462c0819:PsiDirectoryNode" />
               <item name="src" type="462c0819:PsiDirectoryNode" />
               <item name="main" type="462c0819:PsiDirectoryNode" />
               <item name="main" type="462c0819:PsiDirectoryNode" />
               <item name="java" type="462c0819:PsiDirectoryNode" />
               <item name="java" type="462c0819:PsiDirectoryNode" />
               <item name="video" type="462c0819:PsiDirectoryNode" />
               <item name="video" type="462c0819:PsiDirectoryNode" />
-              <item name="services" type="462c0819:PsiDirectoryNode" />
+              <item name="model" type="462c0819:PsiDirectoryNode" />
+              <item name="utils" type="462c0819:PsiDirectoryNode" />
             </path>
             </path>
             <path>
             <path>
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
-              <item name="视频分享" type="462c0819:PsiDirectoryNode" />
+              <item name="videoShare" type="462c0819:PsiDirectoryNode" />
               <item name="src" type="462c0819:PsiDirectoryNode" />
               <item name="src" type="462c0819:PsiDirectoryNode" />
               <item name="main" type="462c0819:PsiDirectoryNode" />
               <item name="main" type="462c0819:PsiDirectoryNode" />
               <item name="java" type="462c0819:PsiDirectoryNode" />
               <item name="java" type="462c0819:PsiDirectoryNode" />
-              <item name="video" type="462c0819:PsiDirectoryNode" />
-              <item name="services" type="462c0819:PsiDirectoryNode" />
-              <item name="impl" type="462c0819:PsiDirectoryNode" />
+              <item name="common" type="462c0819:PsiDirectoryNode" />
             </path>
             </path>
             <path>
             <path>
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
-              <item name="视频分享" type="462c0819:PsiDirectoryNode" />
+              <item name="videoShare" type="462c0819:PsiDirectoryNode" />
               <item name="src" type="462c0819:PsiDirectoryNode" />
               <item name="src" type="462c0819:PsiDirectoryNode" />
               <item name="main" type="462c0819:PsiDirectoryNode" />
               <item name="main" type="462c0819:PsiDirectoryNode" />
-              <item name="resources" type="462c0819:PsiDirectoryNode" />
+              <item name="java" type="462c0819:PsiDirectoryNode" />
+              <item name="common" type="462c0819:PsiDirectoryNode" />
+              <item name="exception" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
+              <item name="videoShare" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+              <item name="main" type="462c0819:PsiDirectoryNode" />
+              <item name="java" type="462c0819:PsiDirectoryNode" />
+              <item name="common" type="462c0819:PsiDirectoryNode" />
+              <item name="result" type="462c0819:PsiDirectoryNode" />
             </path>
             </path>
             <path>
             <path>
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
               <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
-              <item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
+              <item name="videoShare" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+              <item name="main" type="462c0819:PsiDirectoryNode" />
+              <item name="java" type="462c0819:PsiDirectoryNode" />
+              <item name="common" type="462c0819:PsiDirectoryNode" />
+              <item name="utils" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="mybatis_plus" type="b2602c69:ProjectViewProjectNode" />
+              <item name="videoShare" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+              <item name="main" type="462c0819:PsiDirectoryNode" />
+              <item name="resources" type="462c0819:PsiDirectoryNode" />
             </path>
             </path>
           </expand>
           </expand>
           <select />
           <select />
         </subPane>
         </subPane>
       </pane>
       </pane>
+      <pane id="PackagesPane" />
       <pane id="Scope" />
       <pane id="Scope" />
     </panes>
     </panes>
   </component>
   </component>
@@ -378,7 +477,7 @@
     <property name="RequestMappingsPanelWidth1" value="75" />
     <property name="RequestMappingsPanelWidth1" value="75" />
     <property name="WebServerToolWindowFactoryState" value="false" />
     <property name="WebServerToolWindowFactoryState" value="false" />
     <property name="aspect.path.notification.shown" value="true" />
     <property name="aspect.path.notification.shown" value="true" />
-    <property name="last_opened_file_path" value="$PROJECT_DIR$" />
+    <property name="last_opened_file_path" value="$PROJECT_DIR$/src/main/java/common/result" />
     <property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
     <property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
     <property name="nodejs_npm_path_reset_for_default_project" value="true" />
     <property name="nodejs_npm_path_reset_for_default_project" value="true" />
     <property name="project.structure.last.edited" value="Modules" />
     <property name="project.structure.last.edited" value="Modules" />
@@ -391,9 +490,11 @@
     <selection>jr</selection>
     <selection>jr</selection>
   </component>
   </component>
   <component name="RecentsManager">
   <component name="RecentsManager">
-    <key name="MoveFile.RECENT_KEYS">
-      <recent name="D:\Bingo\Desktop\工作内容\视频系统\视频分享\src\main\resources\mapper\video" />
-      <recent name="D:\Bingo\Desktop\工作内容\视频系统\视频分享\src\test\java\com\videos" />
+    <key name="CopyFile.RECENT_KEYS">
+      <recent name="D:\Bingo\Desktop\工作内容\视频系统\videoShare\src\main\java\common\result" />
+      <recent name="D:\Bingo\Desktop\工作内容\视频系统\videoShare\src\main\java\common\exception" />
+      <recent name="D:\Bingo\Desktop\视频分享\src\main\resources" />
+      <recent name="D:\Bingo\Desktop\视频分享\src\main\java\com\video\services\core" />
     </key>
     </key>
     <key name="CopyClassDialog.RECENTS_KEY">
     <key name="CopyClassDialog.RECENTS_KEY">
       <recent name="com.video.model.vo" />
       <recent name="com.video.model.vo" />
@@ -402,9 +503,9 @@
       <recent name="com.video.services.core" />
       <recent name="com.video.services.core" />
       <recent name="com.video.config" />
       <recent name="com.video.config" />
     </key>
     </key>
-    <key name="CopyFile.RECENT_KEYS">
-      <recent name="D:\Bingo\Desktop\视频分享\src\main\resources" />
-      <recent name="D:\Bingo\Desktop\视频分享\src\main\java\com\video\services\core" />
+    <key name="MoveFile.RECENT_KEYS">
+      <recent name="D:\Bingo\Desktop\工作内容\视频系统\视频分享\src\main\resources\mapper\video" />
+      <recent name="D:\Bingo\Desktop\工作内容\视频系统\视频分享\src\test\java\com\videos" />
     </key>
     </key>
   </component>
   </component>
   <component name="RunDashboard">
   <component name="RunDashboard">
@@ -479,11 +580,12 @@
       <workItem from="1681866277958" duration="34000" />
       <workItem from="1681866277958" duration="34000" />
       <workItem from="1681868475095" duration="5291000" />
       <workItem from="1681868475095" duration="5291000" />
       <workItem from="1681888841732" duration="1218000" />
       <workItem from="1681888841732" duration="1218000" />
+      <workItem from="1681950116855" duration="4166000" />
     </task>
     </task>
     <servers />
     <servers />
   </component>
   </component>
   <component name="TimeTrackingManager">
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="106992000" />
+    <option name="totallyTimeSpent" value="111158000" />
   </component>
   </component>
   <component name="TodoView" selected-index="2">
   <component name="TodoView" selected-index="2">
     <todo-panel id="selected-file">
     <todo-panel id="selected-file">
@@ -506,7 +608,7 @@
       <window_info id="UI Designer" order="5" />
       <window_info id="UI Designer" order="5" />
       <window_info id="Favorites" order="6" side_tool="true" />
       <window_info id="Favorites" order="6" side_tool="true" />
       <window_info id="Web" order="7" side_tool="true" />
       <window_info id="Web" order="7" side_tool="true" />
-      <window_info content_ui="combo" id="Project" order="8" visible="true" weight="0.17324094" />
+      <window_info active="true" content_ui="combo" id="Project" order="8" visible="true" weight="0.18017058" />
       <window_info anchor="bottom" id="Message" order="0" />
       <window_info anchor="bottom" id="Message" order="0" />
       <window_info anchor="bottom" id="Find" order="1" weight="0.32459018" />
       <window_info anchor="bottom" id="Find" order="1" weight="0.32459018" />
       <window_info anchor="bottom" id="Run" order="2" weight="0.64153004" />
       <window_info anchor="bottom" id="Run" order="2" weight="0.64153004" />
@@ -523,7 +625,7 @@
       <window_info anchor="bottom" id="Version Control" order="13" />
       <window_info anchor="bottom" id="Version Control" order="13" />
       <window_info anchor="bottom" id="JRebel Executor" order="14" />
       <window_info anchor="bottom" id="JRebel Executor" order="14" />
       <window_info anchor="bottom" id="JRebel Console" order="15" side_tool="true" />
       <window_info anchor="bottom" id="JRebel Console" order="15" side_tool="true" />
-      <window_info anchor="bottom" id="Messages" order="16" weight="0.32119206" />
+      <window_info anchor="bottom" id="Messages" order="16" visible="true" weight="0.31728664" />
       <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
       <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
       <window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
       <window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
       <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
       <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
@@ -562,76 +664,6 @@
     <option name="FILTER_TARGETS" value="false" />
     <option name="FILTER_TARGETS" value="false" />
   </component>
   </component>
   <component name="editorHistoryManager">
   <component name="editorHistoryManager">
-    <entry file="jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.3.1/spring-aop-5.3.1.jar!/org/springframework/aop/aspectj/AspectJAroundAdvice.class">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="575">
-          <caret line="41" selection-start-line="41" selection-end-line="41" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.3.1/spring-aop-5.3.1.jar!/org/springframework/aop/framework/ReflectiveMethodInvocation.class">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="210">
-          <caret line="75" selection-start-line="75" selection-end-line="75" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.3.1/spring-aop-5.3.1.jar!/org/springframework/aop/aspectj/AbstractAspectJAdvice.class">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="446">
-          <caret line="425" selection-start-line="425" selection-end-line="425" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="jar://$MAVEN_REPOSITORY$/org/springframework/spring-aop/5.3.1/spring-aop-5.3.1.jar!/org/springframework/aop/framework/CglibAopProxy.class">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="207">
-          <caret line="444" selection-start-line="444" selection-end-line="444" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="jar://$MAVEN_REPOSITORY$/org/springframework/spring-core/5.3.1/spring-core-5.3.1.jar!/org/springframework/cglib/proxy/MethodProxy.class">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="207">
-          <caret line="102" selection-start-line="102" selection-end-line="102" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/video/model/vo/SystemMenuTreeVo.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="264">
-          <caret line="22" column="13" selection-start-line="22" selection-start-column="13" selection-end-line="22" selection-end-column="13" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/video/model/pojo/resultData.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="345">
-          <caret line="22" column="13" selection-start-line="22" selection-start-column="13" selection-end-line="22" selection-end-column="13" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/video/model/pojo/SystemAuthority.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1046">
-          <caret line="66" column="25" lean-forward="true" selection-start-line="52" selection-start-column="4" selection-end-line="66" selection-end-column="25" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-annotation/3.0.5/mybatis-plus-annotation-3.0.5.jar!/com/baomidou/mybatisplus/annotation/TableLogic.class">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="207">
-          <caret line="16" column="18" selection-start-line="16" selection-start-column="18" selection-end-line="16" selection-end-column="18" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/video/services/SystemAuthorityService.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="276">
-          <caret line="13" column="17" selection-start-line="13" selection-start-column="17" selection-end-line="13" selection-end-column="17" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/resources/mapper/video/VideoMapper.xml">
     <entry file="file://$PROJECT_DIR$/src/main/resources/mapper/video/VideoMapper.xml">
       <provider selected="true" editor-type-id="text-editor" />
       <provider selected="true" editor-type-id="text-editor" />
     </entry>
     </entry>
@@ -743,13 +775,6 @@
       </provider>
       </provider>
     </entry>
     </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/video/config/RedisTemplateConfiguration.java" />
     <entry file="file://$PROJECT_DIR$/src/main/java/com/video/config/RedisTemplateConfiguration.java" />
-    <entry file="file://$PROJECT_DIR$/pom.xml">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="189">
-          <caret line="49" column="24" selection-start-line="49" selection-start-column="24" selection-end-line="49" selection-end-column="49" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main/java/com/video/MybatisPlusApplication.java">
     <entry file="file://$PROJECT_DIR$/src/main/java/com/video/MybatisPlusApplication.java">
       <provider selected="true" editor-type-id="text-editor">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="115">
         <state relative-caret-position="115">
@@ -843,17 +868,34 @@
         </state>
         </state>
       </provider>
       </provider>
     </entry>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/resources/application.yml">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/video/mapper/SystemMenuMapper.java">
       <provider selected="true" editor-type-id="text-editor">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="276">
-          <caret line="12" column="172" selection-start-line="12" selection-start-column="49" selection-end-line="12" selection-end-column="172" />
+        <state relative-caret-position="437">
+          <caret line="24" column="11" selection-start-line="24" selection-start-column="11" selection-end-line="24" selection-end-column="11" />
         </state>
         </state>
       </provider>
       </provider>
     </entry>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/video/mapper/SystemMenuMapper.java">
+    <entry file="file://$PROJECT_DIR$/src/main/resources/application-prod.yml">
       <provider selected="true" editor-type-id="text-editor">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="437">
-          <caret line="24" column="11" selection-start-line="24" selection-start-column="11" selection-end-line="24" selection-end-column="11" />
+        <state relative-caret-position="723">
+          <caret line="50" column="11" selection-start-line="50" selection-start-column="11" selection-end-line="50" selection-end-column="11" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/pom.xml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="427">
+          <caret line="23" column="51" lean-forward="true" selection-start-line="23" selection-start-column="51" selection-end-line="23" selection-end-column="51" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/video/controller/PlaybackRecordController.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="851">
+          <caret line="122" column="80" selection-start-line="122" selection-start-column="80" selection-end-line="122" selection-end-column="80" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
         </state>
         </state>
       </provider>
       </provider>
     </entry>
     </entry>
@@ -864,10 +906,24 @@
         </state>
         </state>
       </provider>
       </provider>
     </entry>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/video/annotation/UserLoginCheck.java">
+    <entry file="jar://$MAVEN_REPOSITORY$/com/github/qcloudsms/qcloudsms/1.0.6/qcloudsms-1.0.6.jar!/com/github/qcloudsms/SmsSingleSenderResult.class">
       <provider selected="true" editor-type-id="text-editor">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="253">
-          <caret line="12" column="18" selection-start-line="12" selection-start-column="18" selection-end-line="12" selection-end-column="18" />
+        <state relative-caret-position="135">
+          <caret line="11" column="34" selection-start-line="11" selection-start-column="13" selection-end-line="11" selection-end-column="34" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/resources/application.yml">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-27">
+          <caret line="12" column="172" selection-start-line="12" selection-start-column="49" selection-end-line="12" selection-end-column="172" />
+        </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="736">
+          <caret line="50" column="2" selection-start-line="50" selection-start-column="2" selection-end-line="50" selection-end-column="11" />
         </state>
         </state>
       </provider>
       </provider>
     </entry>
     </entry>
@@ -881,24 +937,102 @@
         </state>
         </state>
       </provider>
       </provider>
     </entry>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/resources/application-dev.yml">
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/video/annotation/UserLoginCheck.java">
       <provider selected="true" editor-type-id="text-editor">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="966">
-          <caret line="42" column="31" selection-start-line="42" selection-start-column="31" selection-end-line="42" selection-end-column="31" />
+        <state relative-caret-position="253">
+          <caret line="12" column="18" selection-start-line="12" selection-start-column="18" selection-end-line="12" selection-end-column="18" />
         </state>
         </state>
       </provider>
       </provider>
     </entry>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/resources/application-prod.yml">
+    <entry file="jar://$MAVEN_REPOSITORY$/com/github/qcloudsms/qcloudsms/1.0.6/qcloudsms-1.0.6.jar!/com/github/qcloudsms/SmsSingleSender.class">
       <provider selected="true" editor-type-id="text-editor">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="736">
-          <caret line="32" column="24" selection-start-line="32" selection-start-column="24" selection-end-line="32" selection-end-column="24" />
+        <state relative-caret-position="782">
+          <caret line="61" column="80" selection-start-line="61" selection-start-column="80" selection-end-line="61" selection-end-column="80" />
         </state>
         </state>
       </provider>
       </provider>
     </entry>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/main/java/com/video/controller/PlaybackRecordController.java">
+    <entry file="file://$PROJECT_DIR$/src/main/java/common/exception/EmsException.java">
       <provider selected="true" editor-type-id="text-editor">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-2887">
-          <caret line="122" column="80" selection-start-line="122" selection-start-column="80" selection-end-line="122" selection-end-column="80" />
+        <state relative-caret-position="230">
+          <caret line="10" column="29" selection-start-line="10" selection-start-column="18" selection-end-line="10" selection-end-column="35" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/video/model/utils/BaseResult.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="586">
+          <caret line="28" column="19" selection-start-line="28" selection-start-column="19" selection-end-line="28" selection-end-column="19" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/common/exception/MyCustomException.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="207">
+          <caret line="9" column="13" selection-start-line="9" selection-start-column="13" selection-end-line="9" selection-end-column="13" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/video/model/utils/CommonResult.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1275">
+          <caret line="76" column="31" selection-start-line="76" selection-start-column="31" selection-end-line="76" selection-end-column="31" />
+          <folding>
+            <element signature="imports" expanded="true" />
+            <element signature="e#411#412#0" expanded="true" />
+            <element signature="e#449#450#0" expanded="true" />
+            <element signature="e#518#519#0" expanded="true" />
+            <element signature="e#568#569#0" expanded="true" />
+            <element signature="e#609#610#0" expanded="true" />
+            <element signature="e#650#651#0" expanded="true" />
+            <element signature="e#714#715#0" expanded="true" />
+            <element signature="e#765#766#0" expanded="true" />
+            <element signature="e#1413#1414#0" expanded="true" />
+            <element signature="e#1468#1469#0" expanded="true" />
+            <element signature="e#1617#1618#0" expanded="true" />
+            <element signature="e#1688#1689#0" expanded="true" />
+            <element signature="e#2084#2085#0" expanded="true" />
+            <element signature="e#2158#2159#0" expanded="true" />
+            <element signature="e#2287#2288#0" expanded="true" />
+            <element signature="e#2329#2330#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/common/exception/EmsExceptionHandler.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="169">
+          <caret line="160" column="50" selection-start-line="160" selection-start-column="50" selection-end-line="160" selection-end-column="50" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/com/video/config/smsConfig.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="483">
+          <caret line="21" column="19" selection-start-line="21" selection-start-column="19" selection-end-line="21" selection-end-column="19" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/common/result/ResponseStatusEnum.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="253">
+          <caret line="11" column="4" selection-start-line="11" selection-start-column="4" selection-end-line="11" selection-end-column="4" />
+          <folding>
+            <element signature="e#1581#1582#0" expanded="true" />
+            <element signature="e#1610#1611#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main/java/common/utils/smsUtil.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="235">
+          <caret line="25" column="7" selection-start-line="25" selection-start-column="7" selection-end-line="25" selection-end-column="7" />
           <folding>
           <folding>
             <element signature="imports" expanded="true" />
             <element signature="imports" expanded="true" />
           </folding>
           </folding>

+ 6 - 0
pom.xml

@@ -16,10 +16,16 @@
 
 
     <properties>
     <properties>
         <java.version>1.8</java.version>
         <java.version>1.8</java.version>
+        <tencent.qcloudsms.version>1.0.6</tencent.qcloudsms.version>
     </properties>
     </properties>
 
 
     <dependencies>
     <dependencies>
         <dependency>
         <dependency>
+            <groupId>com.github.qcloudsms</groupId>
+            <artifactId>qcloudsms</artifactId>
+            <version>${tencent.qcloudsms.version}</version>
+        </dependency>
+        <dependency>
             <groupId>org.springframework.boot</groupId>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-aop</artifactId>
             <artifactId>spring-boot-starter-aop</artifactId>
         </dependency>
         </dependency>

+ 4 - 1
share_video.iml

@@ -27,6 +27,10 @@
     </content>
     </content>
     <orderEntry type="inheritedJdk" />
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
     <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="Maven: com.github.qcloudsms:qcloudsms:1.0.6" level="project" />
+    <orderEntry type="library" name="Maven: org.json:json:20170516" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.5.13" level="project" />
+    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.15" level="project" />
     <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.4.0" level="project" />
     <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.4.0" level="project" />
     <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.4.0" level="project" />
     <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.4.0" level="project" />
     <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.4.0" level="project" />
     <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.4.0" level="project" />
@@ -42,7 +46,6 @@
     <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.6" level="project" />
     <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.6" level="project" />
     <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.10" level="project" />
     <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.10" level="project" />
     <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.13" level="project" />
     <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.13" level="project" />
-    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.15" level="project" />
     <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.7" level="project" />
     <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.7" level="project" />
     <orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.22" level="project" />
     <orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.22" level="project" />
     <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.16" level="project" />
     <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.16" level="project" />

+ 27 - 0
src/main/java/com/video/config/smsConfig.java

@@ -0,0 +1,27 @@
+package com.video.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/4/20 星期四 8:29
+ * @Description: com.video.config
+ * @Version: 1.0
+ */
+@Configuration
+@ConfigurationProperties(prefix = "tencentcloud")
+@Data
+public class smsConfig {
+    //腾讯云上的appId
+    private Integer appID;
+    //腾讯云上的appKey
+    private String appKey;
+    //短信模板
+    private Integer templateId;
+    //签名内容
+    private String smsSign;
+    //验证码有效时长
+    private Integer smsMin;
+}

+ 41 - 0
src/main/java/com/video/model/utils/CommonResult.java

@@ -1,6 +1,9 @@
 package com.video.model.utils;
 package com.video.model.utils;
 
 
+import common.result.ResponseStatusEnum;
+
 import java.io.Serializable;
 import java.io.Serializable;
+import java.util.Map;
 
 
 /**
 /**
  * @Author: codingliang
  * @Author: codingliang
@@ -28,6 +31,8 @@ public class CommonResult<T> extends BaseResult implements Serializable {
         return baseCreate(code, msg, false);
         return baseCreate(code, msg, false);
     }
     }
 
 
+    public CommonResult(){}
+
     private static <T> CommonResult<T> baseCreate(String code, String msg, boolean success) {
     private static <T> CommonResult<T> baseCreate(String code, String msg, boolean success) {
         CommonResult result = new CommonResult();
         CommonResult result = new CommonResult();
         result.setCode(code);
         result.setCode(code);
@@ -36,6 +41,42 @@ public class CommonResult<T> extends BaseResult implements Serializable {
         return result;
         return result;
     }
     }
 
 
+    public CommonResult(T data) {
+        this.setCode(Integer.toString(ResponseStatusEnum.SUCCESS.status()));
+        this.setMessage(ResponseStatusEnum.SUCCESS.msg());
+        this.setSuccess(ResponseStatusEnum.SUCCESS.success());
+        this.setData(data);
+    }
+
+    public static CommonResult exception(ResponseStatusEnum responseStatus) {
+        return new CommonResult(responseStatus);
+    }
+
+    /**
+     * 错误返回,map中包含了多条错误信息,可以用于表单验证,把错误统一的全部返回出去
+     * @param map
+     * @return
+     */
+    public static CommonResult errorMap(Map map) {
+        return new CommonResult(ResponseStatusEnum.FAILED, map);
+    }
+
+    public CommonResult(ResponseStatusEnum responseStatus, T data) {
+        this.setCode(Integer.toString(responseStatus.status()));
+        this.setMessage(responseStatus.msg());
+        this.setSuccess(responseStatus.success());
+        this.setData(data);
+    }
+
+    /**
+     * 错误返回,直接返回错误的消息
+     * @param msg
+     * @return
+     */
+    public static CommonResult errorMsg(String msg) {
+        return new CommonResult(ResponseStatusEnum.FAILED, msg);
+    }
+
     public CommonResult<T> setResult(T data) {
     public CommonResult<T> setResult(T data) {
         this.setData(data);
         this.setData(data);
         return this;
         return this;

+ 14 - 0
src/main/java/common/exception/EmsException.java

@@ -0,0 +1,14 @@
+package common.exception;
+
+import common.result.ResponseStatusEnum;
+
+/**
+ * 处理异常,统一封装
+ */
+public class EmsException {
+
+    public static void display(ResponseStatusEnum responseStatusEnum) {
+        throw new MyCustomException(responseStatusEnum);
+    }
+
+}

+ 183 - 0
src/main/java/common/exception/EmsExceptionHandler.java

@@ -0,0 +1,183 @@
+package common.exception;
+
+import com.fasterxml.jackson.core.JsonParseException;
+import com.video.model.utils.CommonResult;
+import common.result.ResponseStatusEnum;
+import org.mybatis.spring.MyBatisSystemException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.dao.DataAccessResourceFailureException;
+import org.springframework.http.converter.HttpMessageNotReadableException;
+import org.springframework.mail.MailSendException;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.web.HttpRequestMethodNotSupportedException;
+import org.springframework.web.bind.MethodArgumentNotValidException;
+import org.springframework.web.bind.MissingServletRequestParameterException;
+import org.springframework.web.bind.WebDataBinder;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.InitBinder;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.fasterxml.jackson.databind.exc.InvalidFormatException;
+import org.springframework.web.context.request.WebRequest;
+import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException;
+
+import java.util.*;
+
+/**
+ * 统一异常拦截处理
+ * 可以针对异常的类型进行捕获,然后返回json信息到前端
+ */
+@ControllerAdvice
+public class EmsExceptionHandler {
+
+    //org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported
+    final static Logger logger=LoggerFactory.getLogger(EmsExceptionHandler.class);
+
+    @ExceptionHandler(Exception.class)
+    @ResponseBody
+    public CommonResult exception(Exception e) {
+        e.printStackTrace();
+        //String error=e.getFieldError().getDefaultMessage();
+        logger.error("错误信息",e.fillInStackTrace());
+        return CommonResult.fail().exception(ResponseStatusEnum.SYSTEM_ERROR);
+    }
+
+    //mysql连接超时
+    @ExceptionHandler(MyBatisSystemException.class)
+    @ResponseBody
+    public CommonResult exception(MyBatisSystemException e) {
+        e.printStackTrace();
+        //String error=e.getFieldError().getDefaultMessage();
+        logger.error("错误信息",e.fillInStackTrace());
+        return CommonResult.exception(ResponseStatusEnum.SYSTEM_MYSQL_TIMEOUT_ERROR);
+    }
+
+//    //mysql连接超时
+//    @ExceptionHandler(MySQLNonTransientConnectionException.class)
+//    @ResponseBody
+//    public GraceJSONResult exception(MySQLNonTransientConnectionException e) {
+//        e.printStackTrace();
+//        //String error=e.getFieldError().getDefaultMessage();
+//        logger.error("错误信息",e.fillInStackTrace());
+//        return GraceJSONResult.exception(ResponseStatusEnum.SYSTEM_MYSQL_TIMEOUT_ERROR);
+//    }
+
+    //请求方式错误
+    @ExceptionHandler(HttpRequestMethodNotSupportedException.class)
+    @ResponseBody
+    public CommonResult httpRequestMethodNotSupportedException(HttpRequestMethodNotSupportedException e) {
+        e.printStackTrace();
+        logger.error("错误信息",e.fillInStackTrace());
+        //String error=e.getFieldError().getDefaultMessage();
+        return CommonResult.exception(ResponseStatusEnum.SYSTEM_REQUEST_METHOD_ERROR);
+    }
+
+    //传参空异常
+    @ExceptionHandler(MissingServletRequestParameterException.class)
+    @ResponseBody
+    public CommonResult missingServletRequestParameterException(MissingServletRequestParameterException e) {
+        String name=  e.getParameterName();
+        logger.error("错误信息",e.fillInStackTrace());
+
+        //String error=e.getFieldError().getDefaultMessage();
+        return CommonResult.errorMsg(name+"不能为空");
+    }
+
+    @ExceptionHandler(MyCustomException.class)
+    @ResponseBody
+    public CommonResult returnMyException(MyCustomException e) {
+        e.printStackTrace();
+        logger.error("错误信息",e.fillInStackTrace());
+        return CommonResult.exception(e.getResponseStatusEnum());
+    }
+
+    /**
+     * 传入JSON数据格式错误
+     * @param e
+     * @return
+     */
+    @ExceptionHandler(JsonParseException.class)
+    @ResponseBody
+    public CommonResult returnMyException(JsonParseException e) {
+        logger.error("错误信息",e.fillInStackTrace());
+        e.printStackTrace();
+        return CommonResult.exception(ResponseStatusEnum.SEND_PARAMS);
+    }
+
+
+    /**
+     * 传入JSON数据格式转换错误
+     * @param e
+     * @return
+     */
+    @ExceptionHandler(HttpMessageNotReadableException.class)
+    @ResponseBody
+    public CommonResult httpMessageNotReadableException(HttpMessageNotReadableException e) {
+        logger.error("错误信息",e.fillInStackTrace());
+        e.printStackTrace();//
+        if(e.getCause() instanceof  InvalidFormatException){
+            InvalidFormatException e1=   (InvalidFormatException)e.getCause();
+            Object erro1= e1.getValue();
+            Object erro2=e1.getTargetType().getSimpleName();
+            System.out.print(erro1);
+            System.out.print(erro2);
+        }
+
+        String error=e.getMessage();
+        return CommonResult.exception(ResponseStatusEnum.SEND_PARAMS_TYPE);
+    }
+
+
+
+
+
+
+
+    /**
+     * 参数验证错误
+     * @param e
+     * @return
+     */
+    @ExceptionHandler(MethodArgumentNotValidException.class)
+    @ResponseBody
+    public CommonResult returnException(MethodArgumentNotValidException e) {
+        logger.error("错误信息",e.fillInStackTrace());
+        BindingResult result = e.getBindingResult();
+        Map<String, String> map = getErrors(result);
+        return CommonResult.errorMap(map);
+    }
+
+    /**
+     * 参数验证错误
+     * @param e
+     * @return
+     */
+    @ExceptionHandler(MethodArgumentTypeMismatchException.class)
+    @ResponseBody
+    public CommonResult returnException(MethodArgumentTypeMismatchException e) {
+        logger.error("错误信息",e.fillInStackTrace());
+        String value=e.getValue().toString();
+        String paraType=e.getRequiredType().getName().toString();
+
+        return CommonResult.errorMsg(e.getName()+"数据格式转换错误");
+    }
+
+
+    public Map<String, String> getErrors(BindingResult result) {
+        Map<String, String> map = new HashMap<>();
+        List<FieldError> errorList = result.getFieldErrors();
+        for (FieldError error : errorList) {
+            // 发送验证错误的时候所对应的某个属性
+            String field = error.getField();
+            // 验证的错误消息
+            String msg = error.getDefaultMessage();
+            map.put(field, msg);
+        }
+        return map;
+    }
+
+
+}

+ 29 - 0
src/main/java/common/exception/MyCustomException.java

@@ -0,0 +1,29 @@
+package common.exception;
+
+import common.result.ResponseStatusEnum;
+
+/**
+ * 自定义异常
+ * 目的:统一处理异常信息
+ *      便于解耦,service与controller错误的解耦,不会被service返回的类型而限制
+ */
+public class MyCustomException extends RuntimeException {
+
+    private ResponseStatusEnum responseStatusEnum;
+
+    public MyCustomException(ResponseStatusEnum responseStatusEnum) {
+        super("异常状态码为:" + responseStatusEnum.status()
+                + ";具体异常信息为:" + responseStatusEnum.msg());
+        this.responseStatusEnum = responseStatusEnum;
+    }
+
+    public ResponseStatusEnum getResponseStatusEnum() {
+        return responseStatusEnum;
+    }
+
+    public void setResponseStatusEnum(ResponseStatusEnum responseStatusEnum) {
+        this.responseStatusEnum = responseStatusEnum;
+    }
+
+
+}

+ 57 - 0
src/main/java/common/result/ResponseStatusEnum.java

@@ -0,0 +1,57 @@
+package common.result;
+
+/**
+ * 响应结果枚举,用于提供给GraceJSONResult返回给前端的
+ * 本枚举类中包含了很多的不同的状态码供使用,可以自定义
+ * 便于更优雅的对状态码进行管理,一目了然
+ */
+public enum ResponseStatusEnum {
+
+    EXISTS(999,false,"已存在"),
+    SUCCESS(200, true, "操作成功!"),
+    FAILED(500, false, "操作失败!"),
+    UN_SERVICES_ERROR(600,false,"操作失败,请联系管理员"),
+    SEND_PARAMS(501,false,"传入参数数据结构错误"),
+    SEND_PARAMS_TYPE(5101,false,"传入参数数据数据类型错误"),
+
+    // 自定义系统级别异常 54x
+    SYSTEM_ERROR(540, false, "系统错误,错误未知!"),
+    SYSTEM_INDEX_OUT_OF_BOUNDS(541, false, "系统错误,数组越界!"),
+    SYSTEM_ARITHMETIC_BY_ZERO(542, false, "系统错误,无法除零!"),
+    SYSTEM_NULL_POINTER(543, false, "系统错误,空指针!"),
+    SYSTEM_NUMBER_FORMAT(544, false, "系统错误,数字转换异常!"),
+    SYSTEM_PARSE(545, false, "系统错误,解析异常!"),
+    SYSTEM_IO(546, false, "系统错误,IO输入输出异常!"),
+    SYSTEM_FILE_NOT_FOUND(547, false, "系统错误,文件未找到!"),
+    SYSTEM_CLASS_CAST(548, false, "系统错误,类型强制转换错误!"),
+    SYSTEM_PARSER_ERROR(549, false, "系统错误,解析出错!"),
+    SYSTEM_DATE_PARSER_ERROR(550, false, "系统错误,日期解析出错!"),
+    SYSTEM_ERROR_GLOBAL(550, false, "系统繁忙,请稍后再试!"),
+    SYSTEM_ERROR_ZUUL(560, false, "请求系统过于繁忙,请稍后再试!"),
+    SYSTEM_REQUEST_METHOD_ERROR(562, false, "请求类型错误"),
+    SYSTEM_MYSQL_TIMEOUT_ERROR(563, false, "Mysql连接超时"),
+    SYSTEM_MONGO_TIMEOUT_ERROR(564, false, "Mongo连接超时");
+
+    // 响应业务状态
+    private Integer status;
+    // 调用是否成功
+    private Boolean success;
+    // 响应消息,可以为成功或者失败的消息
+    private String msg;
+
+    ResponseStatusEnum(Integer status, Boolean success, String msg) {
+        this.status = status;
+        this.success = success;
+        this.msg = msg;
+    }
+
+    public Integer status() {
+        return status;
+    }
+    public Boolean success() {
+        return success;
+    }
+    public String msg() {
+        return msg;
+    }
+}

+ 33 - 0
src/main/java/common/utils/smsUtil.java

@@ -0,0 +1,33 @@
+package common.utils;
+
+import com.github.qcloudsms.SmsSingleSender;
+import com.github.qcloudsms.SmsSingleSenderResult;
+import com.github.qcloudsms.httpclient.HTTPException;
+import com.video.config.smsConfig;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.io.IOException;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/4/20 星期四 8:26
+ * @Description: common
+ * @Version: 1.0
+ */
+public class smsUtil {
+    @Autowired
+    private static smsConfig smsConfig;
+
+    /**
+     * 发送单条短信验证码
+     * @param smmCode 短信验证码
+     * @param phoneNumber 手机号
+     * @return
+     */
+    public static void sendSingleMessage(String smmCode, String phoneNumber) throws HTTPException, IOException {
+        String[] params = {smmCode,Integer.toString(smsConfig.getSmsMin())};
+        SmsSingleSender ssender = new SmsSingleSender(smsConfig.getAppID(), smsConfig.getAppKey());
+        SmsSingleSenderResult result = ssender.sendWithParam("86", phoneNumber, smsConfig.getTemplateId(), params, smsConfig.getSmsSign(), "", "");
+        System.out.println(result);
+    };
+}

+ 8 - 0
src/main/resources/application-dev.yml

@@ -41,3 +41,11 @@ mybatis-plus:
     db-config:
     db-config:
       logic-delete-value: 1
       logic-delete-value: 1
       logic-not-delete-value: 0
       logic-not-delete-value: 0
+
+#腾讯云
+tencentcloud:
+  appID: 123456
+  appKey: abcd
+  templateId: "123456789"
+  smsSign: 123456
+  smsMin: 2

+ 8 - 0
src/main/resources/application-prod.yml

@@ -41,3 +41,11 @@ mybatis-plus:
     db-config:
     db-config:
       logic-delete-value: 1
       logic-delete-value: 1
       logic-not-delete-value: 0
       logic-not-delete-value: 0
+
+#腾讯云
+tencentcloud:
+  appID: 123456
+  appKey: abcd
+  templateId: "123456789"
+  smsSign: 123456
+  smsMin: 2

+ 37 - 0
target/classes/META-INF/spring-configuration-metadata.json

@@ -0,0 +1,37 @@
+{
+  "groups": [
+    {
+      "name": "tencentcloud",
+      "type": "com.video.config.smsConfig",
+      "sourceType": "com.video.config.smsConfig"
+    }
+  ],
+  "properties": [
+    {
+      "name": "tencentcloud.app-i-d",
+      "type": "java.lang.Integer",
+      "sourceType": "com.video.config.smsConfig"
+    },
+    {
+      "name": "tencentcloud.app-key",
+      "type": "java.lang.String",
+      "sourceType": "com.video.config.smsConfig"
+    },
+    {
+      "name": "tencentcloud.sms-min",
+      "type": "java.lang.Integer",
+      "sourceType": "com.video.config.smsConfig"
+    },
+    {
+      "name": "tencentcloud.sms-sign",
+      "type": "java.lang.String",
+      "sourceType": "com.video.config.smsConfig"
+    },
+    {
+      "name": "tencentcloud.template-id",
+      "type": "java.lang.Integer",
+      "sourceType": "com.video.config.smsConfig"
+    }
+  ],
+  "hints": []
+}

+ 8 - 0
target/classes/application-dev.yml

@@ -41,3 +41,11 @@ mybatis-plus:
     db-config:
     db-config:
       logic-delete-value: 1
       logic-delete-value: 1
       logic-not-delete-value: 0
       logic-not-delete-value: 0
+
+#腾讯云
+tencentcloud:
+  appID: 123456
+  appKey: abcd
+  templateId: "123456789"
+  smsSign: 123456
+  smsMin: 2

+ 8 - 0
target/classes/application-prod.yml

@@ -41,3 +41,11 @@ mybatis-plus:
     db-config:
     db-config:
       logic-delete-value: 1
       logic-delete-value: 1
       logic-not-delete-value: 0
       logic-not-delete-value: 0
+
+#腾讯云
+tencentcloud:
+  appID: 123456
+  appKey: abcd
+  templateId: "123456789"
+  smsSign: 123456
+  smsMin: 2

BIN
target/classes/com/video/config/smsConfig.class


BIN
target/classes/com/video/model/utils/CommonResult.class


BIN
target/classes/common/exception/EmsException.class


BIN
target/classes/common/exception/EmsExceptionHandler.class


BIN
target/classes/common/exception/MyCustomException.class


BIN
target/classes/common/result/ResponseStatusEnum.class


BIN
target/classes/common/utils/smsUtil.class