liu 3 năm trước cách đây
mục cha
commit
c672f3356c

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

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: io.jsonwebtoken:jjwt-api:0.10.7">
+    <CLASSES>
+      <root url="jar://D:/soft/maven-repository/io/jsonwebtoken/jjwt-api/0.10.7/jjwt-api-0.10.7.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://D:/soft/maven-repository/io/jsonwebtoken/jjwt-api/0.10.7/jjwt-api-0.10.7-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://D:/soft/maven-repository/io/jsonwebtoken/jjwt-api/0.10.7/jjwt-api-0.10.7-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

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

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: io.jsonwebtoken:jjwt-impl:0.10.7">
+    <CLASSES>
+      <root url="jar://D:/soft/maven-repository/io/jsonwebtoken/jjwt-impl/0.10.7/jjwt-impl-0.10.7.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://D:/soft/maven-repository/io/jsonwebtoken/jjwt-impl/0.10.7/jjwt-impl-0.10.7-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://D:/soft/maven-repository/io/jsonwebtoken/jjwt-impl/0.10.7/jjwt-impl-0.10.7-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

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

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: io.jsonwebtoken:jjwt-jackson:0.10.7">
+    <CLASSES>
+      <root url="jar://D:/soft/maven-repository/io/jsonwebtoken/jjwt-jackson/0.10.7/jjwt-jackson-0.10.7.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://D:/soft/maven-repository/io/jsonwebtoken/jjwt-jackson/0.10.7/jjwt-jackson-0.10.7-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://D:/soft/maven-repository/io/jsonwebtoken/jjwt-jackson/0.10.7/jjwt-jackson-0.10.7-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 4 - 4
.idea/libraries/Maven__org_assertj_assertj_core_3_18_1.xml

@@ -1,13 +1,13 @@
 <component name="libraryTable">
-  <library name="Maven: org.assertj:assertj-core:3.18.1">
+  <library name="Maven: org.assertj:assertj-core:3.16.1">
     <CLASSES>
-      <root url="jar://D:/soft/maven-repository/org/assertj/assertj-core/3.18.1/assertj-core-3.18.1.jar!/" />
+      <root url="jar://D:/soft/maven-repository/org/assertj/assertj-core/3.16.1/assertj-core-3.16.1.jar!/" />
     </CLASSES>
     <JAVADOC>
-      <root url="jar://D:/soft/maven-repository/org/assertj/assertj-core/3.18.1/assertj-core-3.18.1-javadoc.jar!/" />
+      <root url="jar://D:/soft/maven-repository/org/assertj/assertj-core/3.16.1/assertj-core-3.16.1-javadoc.jar!/" />
     </JAVADOC>
     <SOURCES>
-      <root url="jar://D:/soft/maven-repository/org/assertj/assertj-core/3.18.1/assertj-core-3.18.1-sources.jar!/" />
+      <root url="jar://D:/soft/maven-repository/org/assertj/assertj-core/3.16.1/assertj-core-3.16.1-sources.jar!/" />
     </SOURCES>
   </library>
 </component>

+ 40 - 56
.idea/workspace.xml

@@ -4,36 +4,29 @@
     <option name="autoReloadType" value="ALL" />
   </component>
   <component name="ChangeListManager">
-    <list default="true" id="3ff4794b-6964-480b-bcb6-ead103f7d762" name="Default Changelist" comment="判断手机号是否存在">
-      <change afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_generator_3_0_5.xml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/java/com/video/api/SmsCodeControllerAPI.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_3_5_2.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_3_0_5.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_annotation_3_5_2.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_annotation_3_0_5.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_boot_starter_3_5_2.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_boot_starter_3_0_5.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_core_3_5_2.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_core_3_0_5.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_extension_3_5_2.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_baomidou_mybatis_plus_extension_3_0_5.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__com_github_jsqlparser_jsqlparser_4_4.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__com_github_jsqlparser_jsqlparser_1_2.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_4_10.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_4_10.xml" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_mybatis_mybatis_3_5_10.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_mybatis_mybatis_3_4_6.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_mybatis_mybatis_spring_2_0_7.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_mybatis_mybatis_spring_1_3_2.xml" afterDir="false" />
+    <list default="true" id="3ff4794b-6964-480b-bcb6-ead103f7d762" name="Default Changelist" comment="xiu'g">
+      <change afterPath="$PROJECT_DIR$/.idea/libraries/Maven__io_jsonwebtoken_jjwt_api_0_10_7.xml" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/.idea/libraries/Maven__io_jsonwebtoken_jjwt_impl_0_10_7.xml" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/.idea/libraries/Maven__io_jsonwebtoken_jjwt_jackson_0_10_7.xml" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/video/model/vo/LoginVO.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/common/utils/CommonUtil.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/common/utils/JWTUtil.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/.idea/libraries/Maven__org_assertj_assertj_core_3_18_1.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/libraries/Maven__org_assertj_assertj_core_3_16_1.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/pom.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/share_video.iml" beforeDir="false" afterPath="$PROJECT_DIR$/share_video.iml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/video/AutoCode.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/video/AutoCode.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/video/MybatisPlusApplication.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/video/MybatisPlusApplication.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/com/video/controller/SendController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/video/controller/SendController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/video/api/LogInfoControllerAPI.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/video/api/LogInfoControllerAPI.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/video/config/MyBatisPlusConfig.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/video/config/MyBatisPlusConfig.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/video/controller/LogInfoController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/video/controller/LogInfoController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/video/model/pojo/SmsCode.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/video/model/pojo/SmsCode.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/video/services/SmsCodeService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/video/services/SmsCodeService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/video/services/impl/SmsCodeServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/video/services/impl/SmsCodeServiceImpl.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/main/java/com/video/services/impl/SystemUserServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/video/services/impl/SystemUserServiceImpl.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/common/exception/EmsExceptionHandler.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/common/exception/EmsExceptionHandler.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/common/result/ResponseStatusEnum.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/common/result/ResponseStatusEnum.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/main/java/common/utils/SendSms.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/common/utils/SendSms.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/com/video/AutoCode.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/video/AutoCode.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/com/video/model/pojo/SystemUser.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/video/model/pojo/SystemUser.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/com/video/model/utils/CommonResult.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/video/model/utils/CommonResult.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/com/video/services/SystemUserService.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/video/services/SystemUserService.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/video/config/MyBatisPlusConfig.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/video/config/MyBatisPlusConfig.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/video/controller/SendController.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/video/controller/SendController.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/com/video/model/pojo/SmsCode.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/video/model/pojo/SmsCode.class" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/target/classes/com/video/services/impl/SystemUserServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/com/video/services/impl/SystemUserServiceImpl.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/common/exception/EmsExceptionHandler.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/common/exception/EmsExceptionHandler.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/target/classes/common/result/ResponseStatusEnum.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/common/result/ResponseStatusEnum.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/target/classes/common/utils/SendSms.class" beforeDir="false" afterPath="$PROJECT_DIR$/target/classes/common/utils/SendSms.class" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -344,28 +337,29 @@
     <option name="showExcludedFiles" value="false" />
     <option name="showLibraryContents" value="true" />
   </component>
-  <component name="PropertiesComponent">{
-  &quot;keyToString&quot;: {
-    &quot;RequestMappingsPanelOrder0&quot;: &quot;0&quot;,
-    &quot;RequestMappingsPanelOrder1&quot;: &quot;1&quot;,
-    &quot;RequestMappingsPanelWidth0&quot;: &quot;75&quot;,
-    &quot;RequestMappingsPanelWidth1&quot;: &quot;75&quot;,
-    &quot;SHARE_PROJECT_CONFIGURATION_FILES&quot;: &quot;true&quot;,
-    &quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;,
-    &quot;last_opened_file_path&quot;: &quot;E:/company/video_share/Back-endDevelopmentFramework&quot;,
-    &quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
-    &quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
-    &quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
-    &quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
-    &quot;settings.editor.selected.configurable&quot;: &quot;MavenSettings&quot;,
-    &quot;spring.configuration.checksum&quot;: &quot;fbb35e4bc29b41202cd70f602b247f03&quot;
+  <component name="PropertiesComponent"><![CDATA[{
+  "keyToString": {
+    "RequestMappingsPanelOrder0": "0",
+    "RequestMappingsPanelOrder1": "1",
+    "RequestMappingsPanelWidth0": "75",
+    "RequestMappingsPanelWidth1": "75",
+    "SHARE_PROJECT_CONFIGURATION_FILES": "true",
+    "WebServerToolWindowFactoryState": "false",
+    "last_opened_file_path": "E:/company/video_share/Back-endDevelopmentFramework/src/main/java/com/video/model/utils",
+    "node.js.detected.package.eslint": "true",
+    "node.js.detected.package.tslint": "true",
+    "node.js.selected.package.eslint": "(autodetect)",
+    "node.js.selected.package.tslint": "(autodetect)",
+    "settings.editor.selected.configurable": "MavenSettings",
+    "spring.configuration.checksum": "fbb35e4bc29b41202cd70f602b247f03"
   }
-}</component>
+}]]></component>
   <component name="RebelAgentSelection">
     <selection>jr</selection>
   </component>
   <component name="RecentsManager">
     <key name="CopyFile.RECENT_KEYS">
+      <recent name="E:\company\video_share\Back-endDevelopmentFramework\src\main\java\com\video\model\utils" />
       <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" />
@@ -377,11 +371,11 @@
       <recent name="D:\Bingo\Desktop\工作内容\视频系统\视频分享\src\test\java\com\videos" />
     </key>
     <key name="CopyClassDialog.RECENTS_KEY">
-      <recent name="common.result" />
       <recent name="com.video.model.vo" />
+      <recent name="common.utils" />
+      <recent name="common.result" />
       <recent name="com.video.api" />
       <recent name="com.video.services.annotation" />
-      <recent name="com.video.services.core" />
     </key>
   </component>
   <component name="RunManager" selected="Spring Boot.MybatisPlusApplication">
@@ -574,24 +568,14 @@
           <option name="timeStamp" value="13" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/src/main/java/common/utils/SendSms.java</url>
-          <line>63</line>
-          <option name="timeStamp" value="16" />
-        </line-breakpoint>
-        <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/src/main/java/common/utils/SendSms.java</url>
-          <line>147</line>
-          <option name="timeStamp" value="18" />
-        </line-breakpoint>
-        <line-breakpoint enabled="true" type="java-line">
           <url>file://$PROJECT_DIR$/src/main/java/com/video/controller/SendController.java</url>
           <line>23</line>
           <option name="timeStamp" value="19" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/src/main/java/common/result/ResponseStatusEnum.java</url>
-          <line>56</line>
-          <option name="timeStamp" value="20" />
+          <url>file://$PROJECT_DIR$/src/main/java/com/video/services/impl/SystemUserServiceImpl.java</url>
+          <line>42</line>
+          <option name="timeStamp" value="27" />
         </line-breakpoint>
       </breakpoints>
     </breakpoint-manager>

+ 26 - 0
pom.xml

@@ -20,6 +20,32 @@
     </properties>
 
     <dependencies>
+
+        <!-- jwt -->
+        <dependency>
+            <groupId>io.jsonwebtoken</groupId>
+            <artifactId>jjwt-api</artifactId>
+            <version>0.10.7</version>
+        </dependency>
+        <dependency>
+            <groupId>io.jsonwebtoken</groupId>
+            <artifactId>jjwt-impl</artifactId>
+            <version>0.10.7</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.jsonwebtoken</groupId>
+            <artifactId>jjwt-jackson</artifactId>
+            <version>0.10.7</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.assertj</groupId>
+            <artifactId>assertj-core</artifactId>
+            <version>3.16.1</version>
+            <scope>compile</scope>
+        </dependency>
+
         <dependency>
             <groupId>com.github.qcloudsms</groupId>
             <artifactId>qcloudsms</artifactId>

+ 7 - 4
share_video.iml

@@ -27,6 +27,13 @@
     </content>
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt-api:0.10.7" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: io.jsonwebtoken:jjwt-impl:0.10.7" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: io.jsonwebtoken:jjwt-jackson:0.10.7" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.11.3" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.11.3" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.11.3" level="project" />
+    <orderEntry type="library" name="Maven: org.assertj:assertj-core:3.16.1" level="project" />
     <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" />
@@ -75,8 +82,6 @@
     <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.3.1" level="project" />
     <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.4.0" level="project" />
     <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.4.0" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.11.3" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.11.3" level="project" />
     <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.11.3" level="project" />
     <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.11.3" level="project" />
     <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.11.3" level="project" />
@@ -96,7 +101,6 @@
     <orderEntry type="library" scope="TEST" name="Maven: org.ow2.asm:asm:5.0.4" level="project" />
     <orderEntry type="library" scope="TEST" name="Maven: jakarta.xml.bind:jakarta.xml.bind-api:2.3.3" level="project" />
     <orderEntry type="library" scope="TEST" name="Maven: jakarta.activation:jakarta.activation-api:1.2.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:3.18.1" level="project" />
     <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest:2.2" level="project" />
     <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter:5.7.0" level="project" />
     <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-api:5.7.0" level="project" />
@@ -140,7 +144,6 @@
     <orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.9.2" level="project" />
     <orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.20" level="project" />
     <orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.20" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.11.3" level="project" />
     <orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.9.2" level="project" />
     <orderEntry type="library" name="Maven: io.springfox:springfox-core:2.9.2" level="project" />
     <orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.9.2" level="project" />

+ 1 - 0
src/main/java/com/video/api/LogInfoControllerAPI.java

@@ -4,4 +4,5 @@ import com.video.model.utils.CommonResult;
 
 public interface LogInfoControllerAPI {
     CommonResult verifyPhone(String phone);
+    CommonResult logInfo(String phone,String code);
 }

+ 1 - 1
src/main/java/com/video/config/MyBatisPlusConfig.java

@@ -44,7 +44,7 @@ public class MyBatisPlusConfig {
     @Profile({"dev","test"})// 设置 dev test 环境开启,保证我们的效率
     public PerformanceInterceptor performanceInterceptor() {
         PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
-        performanceInterceptor.setMaxTime(100); //ms 设置sql执行的最大时间,如果超过了则不执行
+        performanceInterceptor.setMaxTime(3000); //ms 设置sql执行的最大时间,如果超过了则不执行
         performanceInterceptor.setFormat(true);
         return performanceInterceptor;
     }

+ 16 - 0
src/main/java/com/video/controller/LogInfoController.java

@@ -5,8 +5,12 @@ import com.video.annotation.PassToken;
 import com.video.api.LogInfoControllerAPI;
 import com.video.model.pojo.SystemUser;
 import com.video.model.utils.CommonResult;
+import com.video.services.impl.SmsCodeServiceImpl;
 import com.video.services.impl.SystemUserServiceImpl;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -20,10 +24,22 @@ public class LogInfoController implements LogInfoControllerAPI {
     @Autowired
     SystemUserServiceImpl systemUserService;
 
+    @Autowired
+    SmsCodeServiceImpl smsCodeService;
+
     @Override
     @PassToken
     @PostMapping("/verify")
+    @ApiOperation(value = "验证手机号phone",httpMethod = "post")
     public CommonResult verifyPhone(@RequestBody String phone) {
         return systemUserService.verifyPhone(phone);
     }
+
+    @Override
+    @PassToken
+    @PostMapping("/logIn")
+    @ApiOperation(value = "短信验证",httpMethod = "post")
+    public CommonResult logInfo(String phone, String code) {
+        return smsCodeService.logIn(phone,code);
+    }
 }

+ 6 - 4
src/main/java/com/video/model/pojo/SmsCode.java

@@ -1,10 +1,8 @@
 package com.video.model.pojo;
 
-import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.*;
+
 import java.util.Date;
-import com.baomidou.mybatisplus.annotation.Version;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
 import java.io.Serializable;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -44,15 +42,19 @@ public class SmsCode implements Serializable {
     @ApiModelProperty(value = "是否验证 0 未验证 1 已验证")
     private String isVerify;
 
+    @TableField(fill = FieldFill.INSERT)
     @ApiModelProperty(value = "创建时间")
     private Date createTime;
 
+    @TableField(fill = FieldFill.INSERT_UPDATE)
     @ApiModelProperty(value = "更新时间")
     private Date updateTime;
 
+    @TableField(fill = FieldFill.INSERT)
     @ApiModelProperty(value = "创建人员")
     private Long createUser;
 
+    @TableField(fill = FieldFill.INSERT_UPDATE)
     @ApiModelProperty(value = "更新人员")
     private Long updateUser;
 

+ 35 - 0
src/main/java/com/video/model/vo/LoginVO.java

@@ -0,0 +1,35 @@
+package com.video.model.vo;
+
+import lombok.Builder;
+import lombok.Data;
+
+/**
+ * @Author: codingliang
+ * @Description: 登录用户vo
+ * @Date: 2022-08-04 9:58
+ * @Version: V1.0
+ **/
+@Builder
+@Data
+public class LoginVO {
+
+    /**
+     * 用户姓名
+     */
+    private String userName;
+
+    /**
+     * 手机号码
+     */
+    private String telPhone;
+
+    /**
+     * 用户token
+     */
+    private String token;
+    /**
+     * token过期时间
+     */
+    private long tokenTtl;
+
+}

+ 2 - 0
src/main/java/com/video/services/SmsCodeService.java

@@ -2,6 +2,7 @@ package com.video.services;
 
 import com.video.model.pojo.SmsCode;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.video.model.utils.CommonResult;
 
 /**
  * <p>
@@ -13,4 +14,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface SmsCodeService extends IService<SmsCode> {
 
+    CommonResult logIn(String phone, String code);
 }

+ 38 - 0
src/main/java/com/video/services/impl/SmsCodeServiceImpl.java

@@ -1,11 +1,22 @@
 package com.video.services.impl;
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.video.model.pojo.SmsCode;
 import com.video.mapper.SmsCodeMapper;
+import com.video.model.pojo.SystemUser;
+import com.video.model.utils.CommonResult;
+import com.video.model.vo.LoginVO;
 import com.video.services.SmsCodeService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.video.services.SystemUserService;
+import common.utils.JWTUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
+
 /**
  * <p>
  *  服务实现类
@@ -17,4 +28,31 @@ import org.springframework.stereotype.Service;
 @Service
 public class SmsCodeServiceImpl extends ServiceImpl<SmsCodeMapper, SmsCode> implements SmsCodeService {
 
+    @Autowired
+    SystemUserService systemUserService;
+
+    @Override
+    public CommonResult logIn(String phone, String code) {
+        if (ObjectUtils.isEmpty(phone)||ObjectUtils.isEmpty(code)) {
+            return CommonResult.fail("500","参数为空");
+        }
+        LambdaQueryWrapper<SmsCode> wrapper=new LambdaQueryWrapper<>();
+        wrapper.eq(SmsCode::getPhoneNumber,phone);
+        wrapper.lt(SmsCode::getExpirationTime,new Date());
+        wrapper.eq(SmsCode::getIsVerify,"0");
+        SmsCode one = this.getOne(wrapper);
+        String code1 = one.getCode();
+//            验证
+        if (!code1.equals(code)) {
+            return CommonResult.fail("500","验证码错误");
+        }
+        // 登录成功,生成token
+        LambdaQueryWrapper<SystemUser> wrapper2=new LambdaQueryWrapper<>();
+        wrapper2.eq(SystemUser::getPhoneNumber,phone);
+        SystemUser one1 = systemUserService.getOne(wrapper2);
+        String token = JWTUtil.geneJsonWebToken(one1);
+        LoginVO.LoginVOBuilder loginVOBuilder = LoginVO.builder().token(token).tokenTtl(JWTUtil.getExpired()).userName(one1.getAccountName()).telPhone(phone);
+
+        return CommonResult.ok(loginVOBuilder);
+    }
 }

+ 5 - 5
src/main/java/com/video/services/impl/SystemUserServiceImpl.java

@@ -15,6 +15,7 @@ import common.utils.ValidateCode;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import redis.clients.jedis.Jedis;
 
 import java.util.Date;
 
@@ -53,11 +54,9 @@ public class SystemUserServiceImpl extends ServiceImpl<SystemUserMapper, SystemU
 //        发送短信
         SendStatus[] ret = SendSms.sendSms(phone,code);
 //        获取code
-        String code1 = ret[0].getCode();
+//        String code1 = ret[0].getCode();
 //        判断短信是否发送成功
-        if (!"OK".equals(code)) {
-            return CommonResult.resultValue(ResponseStatusEnum.SYSTEM_SEND_PHONE_ERROR);
-        }else {
+
 //            发送成功后存储到短信表
             SmsCode smsCode = new SmsCode();
             smsCode.setPhoneNumber(phone);
@@ -65,8 +64,9 @@ public class SystemUserServiceImpl extends ServiceImpl<SystemUserMapper, SystemU
             long time = new Date().getTime() + 60000L;
             smsCode.setExpirationTime(new Date(time));
             smsCode.setIsVerify("0");
+            smsCode.setDeleted(0L);
             smsCodeService.save(smsCode);
-        }
+
         return CommonResult.ok();
     }
 }

+ 173 - 0
src/main/java/common/utils/CommonUtil.java

@@ -0,0 +1,173 @@
+package common.utils;
+
+import lombok.extern.slf4j.Slf4j;
+
+import javax.servlet.http.HttpServletRequest;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.security.MessageDigest;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.*;
+
+/**
+ * 公共工具类
+ **/
+@Slf4j
+public class CommonUtil {
+    /**
+     * 获取ip
+     *
+     * @param request
+     * @return
+     */
+    public static String getIpAddr(HttpServletRequest request) {
+        String ipAddress = null;
+        try {
+            ipAddress = request.getHeader("x-forwarded-for");
+            System.out.println("x-forwarded-for="+ipAddress);
+            if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
+                ipAddress = request.getHeader("Proxy-Client-IP");
+                System.out.println("Proxy-Client-IP="+ipAddress);
+            }
+            if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
+                ipAddress = request.getHeader("WL-Proxy-Client-IP");
+                System.out.println("WL-Proxy-Client-IP="+ipAddress);
+            }
+            if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
+                ipAddress = request.getRemoteAddr();
+                System.out.println("getRemoteAddr="+ipAddress);
+                if (ipAddress.equals("127.0.0.1")) {
+                    // 根据网卡取本机配置的IP
+                    InetAddress inet = null;
+                    try {
+                        inet = InetAddress.getLocalHost();
+                    } catch (UnknownHostException e) {
+                        e.printStackTrace();
+                    }
+                    ipAddress = inet.getHostAddress();
+                    System.out.println("getHostAddress="+ipAddress);
+                }
+            }
+            // 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
+            if (ipAddress != null && ipAddress.length() > 15) {
+                // "***.***.***.***".length()
+                // = 15
+                if (ipAddress.indexOf(",") > 0) {
+                    ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
+                }
+            }
+        } catch (Exception e) {
+            ipAddress = "";
+        }
+        return ipAddress;
+    }
+
+
+    /**
+     * 获取全部请求头
+     *
+     * @param request
+     * @return
+     */
+    public static Map<String, String> getAllRequestHeader(HttpServletRequest request) {
+        Enumeration<String> headerNames = request.getHeaderNames();
+        Map<String, String> map = new HashMap<>();
+        while (headerNames.hasMoreElements()) {
+            String key = headerNames.nextElement();
+            //根据名称获取请求头的值
+            String value = request.getHeader(key);
+            map.put(key, value);
+        }
+
+        return map;
+    }
+
+
+    /**
+     * MD5加密
+     *
+     * @param data
+     * @return
+     */
+    public static String MD5(String data) {
+        try {
+            MessageDigest md = MessageDigest.getInstance("MD5");
+            byte[] array = md.digest(data.getBytes("UTF-8"));
+            StringBuilder sb = new StringBuilder();
+            for (byte item : array) {
+                sb.append(Integer.toHexString((item & 0xFF) | 0x100).substring(1, 3));
+            }
+
+            return sb.toString().toUpperCase();
+        } catch (Exception exception) {
+        }
+        return null;
+    }
+
+
+    /**
+     * 获取验证码随机数
+     *
+     * @param length
+     * @return
+     */
+    public static String getRandomCode(int length) {
+        String sources = "0123456789";
+        Random random = new Random();
+        StringBuilder sb = new StringBuilder();
+        for (int j = 0; j < length; j++) {
+            sb.append(sources.charAt(random.nextInt(9)));
+        }
+        return sb.toString();
+    }
+
+    /**
+     * 获取当前时间戳
+     *
+     * @return
+     */
+    public static long getCurrentTimestamp() {
+        return System.currentTimeMillis();
+    }
+
+    /**
+     * 生成uuid
+     *
+     * @return
+     */
+    public static String generateUUID() {
+        return UUID.randomUUID().toString().replaceAll("-", "").substring(0, 32);
+    }
+
+    /**
+     * 获取随机长度的串
+     *
+     * @param length
+     * @return
+     */
+    private static final String ALL_CHAR_NUM = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+
+    public static String getStringNumRandom(int length) {
+        //生成随机数字和字母,
+        Random random = new Random();
+        StringBuilder saltString = new StringBuilder(length);
+        for (int i = 1; i <= length; ++i) {
+            saltString.append(ALL_CHAR_NUM.charAt(random.nextInt(ALL_CHAR_NUM.length())));
+        }
+        return saltString.toString();
+    }
+
+    /**
+     * LocalDate 拼接时间转成 LocalDateTime
+     * @param localDate
+     * @param timeStr HH:mm:ss
+     * @return
+     */
+    public static LocalDateTime localDateToTime(LocalDate localDate, String timeStr) {
+        LocalTime time = LocalTime.parse(timeStr);
+        return LocalDateTime.of(localDate.getYear(), localDate.getMonth(), localDate.getDayOfMonth(),
+                time.getHour(), time.getMinute(), time.getSecond());
+    }
+}

+ 92 - 0
src/main/java/common/utils/JWTUtil.java

@@ -0,0 +1,92 @@
+package common.utils;
+
+
+import com.video.model.pojo.SystemUser;
+import io.jsonwebtoken.Claims;
+import io.jsonwebtoken.Jwts;
+import io.jsonwebtoken.SignatureAlgorithm;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.Date;
+
+/**
+ * jwt 工具
+ **/
+@Slf4j
+public class JWTUtil {
+
+    /**
+     * 主题
+     */
+    private static final String SUBJECT = "chuanghai-ihotel";
+
+    /**
+     * 加密密钥
+     */
+    private static final String SECRET = "chuanghai.ihotel";
+
+    /**
+     * 令牌前缀
+     */
+    private static final String TOKEN_PREFIX = "ihotel";
+
+
+    /**
+     * token过期时间,7天
+     */
+    private static final long EXPIRED = 1000 * 60 * 60 * 24 * 7;
+
+    /**
+     * 获取过期时间
+     * @return
+     */
+    public static long getExpired() {
+        return EXPIRED;
+    }
+
+    /**
+     * 生成token
+     *
+     * @param loginUser
+     * @return
+     */
+    public static String geneJsonWebToken(SystemUser loginUser) {
+        if (loginUser == null) {
+            throw new NullPointerException("对象为空");
+        }
+
+        String adminIdStr = "";
+        if (loginUser.getId() != null) {
+            adminIdStr = loginUser.getId().toString();
+        }
+        String token = Jwts.builder().setSubject(SUBJECT)
+                //配置payload
+                .claim("phone", loginUser.getPhoneNumber())
+                .claim("role_id", loginUser.getRoleId())
+                .claim("admin_id", adminIdStr)
+                .setIssuedAt(new Date())
+                .setExpiration(new Date(CommonUtil.getCurrentTimestamp() + EXPIRED))
+                .signWith(SignatureAlgorithm.HS256, SECRET).compact();
+
+        token = TOKEN_PREFIX + token;
+        return token;
+    }
+
+    /**
+     * 解密jwt
+     * @param token
+     * @return
+     */
+    public static Claims checkJWT(String token) {
+        try {
+            final Claims claims = Jwts.parser().setSigningKey(SECRET).parseClaimsJws(token.replace(TOKEN_PREFIX, "")).getBody();
+            return claims;
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
+    public static void main(String[] args) {
+//        System.out.println(geneJsonWebToken(LoginUserDTO.builder().adminId(1L).cardNumber("123456").identityType("1").build()));
+    }
+}

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


BIN
target/classes/com/video/controller/SendController.class


BIN
target/classes/com/video/model/pojo/SmsCode.class


BIN
target/classes/com/video/services/impl/SystemUserServiceImpl.class


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