Bläddra i källkod

Merge branch 'cuidi' of wuheng/eas-system into master

wuheng 1 år sedan
förälder
incheckning
62d804f98e
50 ändrade filer med 345 tillägg och 63 borttagningar
  1. 1 1
      common/pom.xml
  2. 3 0
      common/src/main/java/com/koobietech/eas/common/pojo/JwtUserDto.java
  3. 3 2
      controller/pom.xml
  4. 84 0
      controller/src/main/java/com/koobietech/eas/config/CaptchaConfig.java
  5. 0 6
      controller/src/main/java/com/koobietech/eas/controller/LoginController.java
  6. 45 0
      controller/src/main/java/com/koobietech/eas/controller/StudentLoginController.java
  7. 1 1
      controller/src/main/resources/application-local.yaml
  8. 0 17
      controller/src/main/resources/application.yaml
  9. 0 0
      controller/src/main/resources/images/jigsaw/original/bg1.png
  10. 0 0
      controller/src/main/resources/images/jigsaw/original/bg10.png
  11. 0 0
      controller/src/main/resources/images/jigsaw/original/bg11.png
  12. 0 0
      controller/src/main/resources/images/jigsaw/original/bg12.png
  13. 0 0
      controller/src/main/resources/images/jigsaw/original/bg13.png
  14. 0 0
      controller/src/main/resources/images/jigsaw/original/bg14.png
  15. 0 0
      controller/src/main/resources/images/jigsaw/original/bg15.png
  16. 0 0
      controller/src/main/resources/images/jigsaw/original/bg16.png
  17. 0 0
      controller/src/main/resources/images/jigsaw/original/bg17.png
  18. 0 0
      controller/src/main/resources/images/jigsaw/original/bg18.png
  19. 0 0
      controller/src/main/resources/images/jigsaw/original/bg19.png
  20. 0 0
      controller/src/main/resources/images/jigsaw/original/bg2.png
  21. 0 0
      controller/src/main/resources/images/jigsaw/original/bg20.png
  22. 0 0
      controller/src/main/resources/images/jigsaw/original/bg3.png
  23. 0 0
      controller/src/main/resources/images/jigsaw/original/bg4.png
  24. 0 0
      controller/src/main/resources/images/jigsaw/original/bg5.png
  25. 0 0
      controller/src/main/resources/images/jigsaw/original/bg6.png
  26. 0 0
      controller/src/main/resources/images/jigsaw/original/bg7.png
  27. 0 0
      controller/src/main/resources/images/jigsaw/original/bg8.png
  28. 0 0
      controller/src/main/resources/images/jigsaw/original/bg9.png
  29. BIN
      controller/src/main/resources/images/jigsaw/slidingBlock/1.png
  30. BIN
      controller/src/main/resources/images/jigsaw/slidingBlock/10.png
  31. BIN
      controller/src/main/resources/images/jigsaw/slidingBlock/11.png
  32. BIN
      controller/src/main/resources/images/jigsaw/slidingBlock/12.png
  33. BIN
      controller/src/main/resources/images/jigsaw/slidingBlock/2.png
  34. BIN
      controller/src/main/resources/images/jigsaw/slidingBlock/3.png
  35. BIN
      controller/src/main/resources/images/jigsaw/slidingBlock/4.png
  36. BIN
      controller/src/main/resources/images/jigsaw/slidingBlock/5.png
  37. BIN
      controller/src/main/resources/images/jigsaw/slidingBlock/6.png
  38. BIN
      controller/src/main/resources/images/jigsaw/slidingBlock/7.png
  39. BIN
      controller/src/main/resources/images/jigsaw/slidingBlock/8.png
  40. BIN
      controller/src/main/resources/images/jigsaw/slidingBlock/9.png
  41. 1 1
      dao/pom.xml
  42. 4 0
      dao/src/main/java/com/koobietech/eas/dao/mapper/AdminLoginMapper.java
  43. 3 0
      dao/src/main/java/com/koobietech/eas/dao/pojo/AdminPojo.java
  44. 57 23
      dao/src/main/resources/com/koobietech/eas/dao/mapper/AdminLoginMapper.xml
  45. 10 9
      pom.xml
  46. 3 2
      service/pom.xml
  47. 14 0
      service/src/main/java/com/koobietech/eas/service/StudentLoginService.java
  48. 1 1
      service/src/main/java/com/koobietech/eas/service/impl/AdminLoginServiceImpl.java
  49. 3 0
      service/src/main/java/com/koobietech/eas/service/impl/LoginRedisServiceImpl.java
  50. 112 0
      service/src/main/java/com/koobietech/eas/service/impl/StudentLoginServiceImpl.java

+ 1 - 1
common/pom.xml

@@ -16,7 +16,7 @@
     <dependencies>
         <dependency>
             <groupId>cn.afterturn</groupId>
-            <artifactId>easypoi-spring-boot-starter</artifactId>
+            <artifactId>easypoi-base</artifactId>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>

+ 3 - 0
common/src/main/java/com/koobietech/eas/common/pojo/JwtUserDto.java

@@ -2,6 +2,9 @@ package com.koobietech.eas.common.pojo;
 
 import lombok.Data;
 
+/**
+ * @author lc
+ */
 @Data
 public class JwtUserDto {
     String username;

+ 3 - 2
controller/pom.xml

@@ -20,11 +20,12 @@
         </dependency>
         <dependency>
             <groupId>com.anji-plus</groupId>
-            <artifactId>spring-boot-starter-captcha</artifactId>
+            <artifactId>captcha</artifactId>
         </dependency>
         <dependency>
             <groupId>cn.afterturn</groupId>
-            <artifactId>easypoi-spring-boot-starter</artifactId>
+            <artifactId>easypoi-base</artifactId>
+            <version>4.3.0</version>
         </dependency>
         <dependency>
             <groupId>com.github.xiaoymin</groupId>

+ 84 - 0
controller/src/main/java/com/koobietech/eas/config/CaptchaConfig.java

@@ -0,0 +1,84 @@
+package com.koobietech.eas.config;
+
+import com.anji.captcha.model.common.Const;
+import com.anji.captcha.service.CaptchaCacheService;
+import com.anji.captcha.service.CaptchaService;
+import com.anji.captcha.service.impl.CaptchaServiceFactory;
+import com.anji.captcha.util.ImageUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.DependsOn;
+import org.springframework.core.io.Resource;
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+import org.springframework.core.io.support.ResourcePatternResolver;
+import org.springframework.util.Base64Utils;
+import org.springframework.util.FileCopyUtils;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+/**
+ * @author lc
+ */
+@Configuration
+public class CaptchaConfig {
+
+    @Bean(name = "AjCaptchaCacheService")
+    public CaptchaCacheService captchaCacheService() {
+        return CaptchaServiceFactory.getCache("local");
+    }
+
+    @Bean
+    @DependsOn("AjCaptchaCacheService")
+    public CaptchaService captchaService() {
+        Properties config = new Properties();
+        config.put(Const.CAPTCHA_CACHETYPE, "local");
+        config.put(Const.CAPTCHA_WATER_MARK, "爱扣钉");
+        config.put(Const.CAPTCHA_FONT_TYPE, "宋体");
+        config.put(Const.CAPTCHA_TYPE, "default");
+        config.put(Const.CAPTCHA_INTERFERENCE_OPTIONS, "0");
+        config.put(Const.ORIGINAL_PATH_JIGSAW, "classpath:images/jigsaw");
+        config.put(Const.ORIGINAL_PATH_PIC_CLICK, "classpath:images/pic-click");
+        config.put(Const.CAPTCHA_SLIP_OFFSET, "5");
+        config.put(Const.CAPTCHA_AES_STATUS, "true");
+        config.put(Const.CAPTCHA_WATER_FONT, "宋体");
+        config.put(Const.CAPTCHA_CACAHE_MAX_NUMBER, "1000");
+        config.put(Const.CAPTCHA_TIMING_CLEAR_SECOND, "180");
+        if ((StringUtils.isNotBlank(config.getProperty(Const.ORIGINAL_PATH_JIGSAW))
+                && config.getProperty(Const.ORIGINAL_PATH_JIGSAW).startsWith("classpath:"))
+                || (StringUtils.isNotBlank(config.getProperty(Const.ORIGINAL_PATH_PIC_CLICK))
+                && config.getProperty(Const.ORIGINAL_PATH_PIC_CLICK).startsWith("classpath:"))) {
+            config.put(Const.CAPTCHA_INIT_ORIGINAL, "true");
+            initializeBaseMap(config.getProperty(Const.ORIGINAL_PATH_JIGSAW),
+                    config.getProperty(Const.ORIGINAL_PATH_PIC_CLICK));
+        }
+        CaptchaService s = CaptchaServiceFactory.getInstance(config);
+        return s;
+    }
+
+    private static void initializeBaseMap(String jigsaw, String picClick) {
+        ImageUtils.cacheBootImage(getResourcesImagesFile(jigsaw + "/original/*.png"),
+                getResourcesImagesFile(jigsaw + "/slidingBlock/*.png"),
+                getResourcesImagesFile(picClick + "/*.png"));
+    }
+
+    public static Map<String, String> getResourcesImagesFile(String path) {
+        Map<String, String> imgMap = new HashMap<>();
+        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
+        try {
+            Resource[] resources = resolver.getResources(path);
+            for (Resource resource : resources) {
+                byte[] bytes = FileCopyUtils.copyToByteArray(resource.getInputStream());
+                String string = Base64Utils.encodeToString(bytes);
+                String filename = resource.getFilename();
+                imgMap.put(filename, string);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return imgMap;
+    }
+
+}

+ 0 - 6
controller/src/main/java/com/koobietech/eas/controller/LoginController.java

@@ -1,6 +0,0 @@
-package com.koobietech.eas.controller;
-
-public class LoginController {
-
-
-}

+ 45 - 0
controller/src/main/java/com/koobietech/eas/controller/StudentLoginController.java

@@ -0,0 +1,45 @@
+package com.koobietech.eas.controller;
+
+import com.anji.captcha.model.common.ResponseModel;
+import com.anji.captcha.model.vo.CaptchaVO;
+import com.anji.captcha.service.CaptchaService;
+import com.koobietech.eas.common.exception.EasException;
+import com.koobietech.eas.common.result.JsonResult;
+import com.koobietech.eas.dao.dto.LoginToken;
+import com.koobietech.eas.dao.pojo.AdminPojo;
+import com.koobietech.eas.service.StudentLoginService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+/**
+ * @author lc
+ */
+@RestController
+@Tag(name = "学生登陆模块")
+public class StudentLoginController {
+
+    @Resource
+    CaptchaService captchaService;
+
+    @Resource
+    StudentLoginService studentLoginService;
+
+    @PostMapping("/studentLogin")
+    @Operation(summary = "学生登陆", description = "用户名和密码为请求载荷,若登录成功,返回两个token")
+    public JsonResult studentLogin(@RequestBody AdminPojo adminPojo) {
+
+        CaptchaVO captchaVO = new CaptchaVO();
+        captchaVO.setCaptchaVerification(adminPojo.getCaptchaVerification());
+
+        ResponseModel response = captchaService.verification(captchaVO);
+        if (!response.isSuccess()) {
+            throw new EasException(response.getRepMsg(), Integer.parseInt(response.getRepCode()));
+        }
+
+        LoginToken ret = studentLoginService.studentLogin(adminPojo);
+        return JsonResult.data(ret);
+    }
+}

+ 1 - 1
controller/src/main/resources/application-local.yaml

@@ -4,7 +4,7 @@ spring:
   datasource:
     url: jdbc:mysql://127.0.0.1:3306/eas?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=true&tinyInt1isBit=false
     username: root
-    password: 123456
+    password: 1234
     driver-class-name: com.mysql.cj.jdbc.Driver
   redis:
     host: localhost

+ 0 - 17
controller/src/main/resources/application.yaml

@@ -34,22 +34,5 @@ eas:
   jwt-secret-key: 123456
   jwt-expires-date: 2
   password-sign-key: eas-key-password
-aj:
-  captcha:
-    cache-type: local
-    type: default
-    water-mark: "\u7231\u6263\u9489"
-    slip-offset: 5
-    aes-status: true
-    interference-options: 2
-    font-style: 1
-    font-size: 25
-    history-data-clear-enable: false
-    req-frequency-limit-enable: false
-    req-get-lock-limit: 5
-    req-get-lock-seconds: 360
-    req-get-minute-limit: 30
-    req-check-minute-limit: 60
-    req-verify-minute-limit: 60
 project:
   path: ${user.home}/archivesFiles

+ 0 - 0
controller/src/main/resources/images/jigsaw/bg1.png → controller/src/main/resources/images/jigsaw/original/bg1.png


+ 0 - 0
controller/src/main/resources/images/jigsaw/bg10.png → controller/src/main/resources/images/jigsaw/original/bg10.png


+ 0 - 0
controller/src/main/resources/images/jigsaw/bg11.png → controller/src/main/resources/images/jigsaw/original/bg11.png


+ 0 - 0
controller/src/main/resources/images/jigsaw/bg12.png → controller/src/main/resources/images/jigsaw/original/bg12.png


+ 0 - 0
controller/src/main/resources/images/jigsaw/bg13.png → controller/src/main/resources/images/jigsaw/original/bg13.png


+ 0 - 0
controller/src/main/resources/images/jigsaw/bg14.png → controller/src/main/resources/images/jigsaw/original/bg14.png


+ 0 - 0
controller/src/main/resources/images/jigsaw/bg15.png → controller/src/main/resources/images/jigsaw/original/bg15.png


+ 0 - 0
controller/src/main/resources/images/jigsaw/bg16.png → controller/src/main/resources/images/jigsaw/original/bg16.png


+ 0 - 0
controller/src/main/resources/images/jigsaw/bg17.png → controller/src/main/resources/images/jigsaw/original/bg17.png


+ 0 - 0
controller/src/main/resources/images/jigsaw/bg18.png → controller/src/main/resources/images/jigsaw/original/bg18.png


+ 0 - 0
controller/src/main/resources/images/jigsaw/bg19.png → controller/src/main/resources/images/jigsaw/original/bg19.png


+ 0 - 0
controller/src/main/resources/images/jigsaw/bg2.png → controller/src/main/resources/images/jigsaw/original/bg2.png


+ 0 - 0
controller/src/main/resources/images/jigsaw/bg20.png → controller/src/main/resources/images/jigsaw/original/bg20.png


+ 0 - 0
controller/src/main/resources/images/jigsaw/bg3.png → controller/src/main/resources/images/jigsaw/original/bg3.png


+ 0 - 0
controller/src/main/resources/images/jigsaw/bg4.png → controller/src/main/resources/images/jigsaw/original/bg4.png


+ 0 - 0
controller/src/main/resources/images/jigsaw/bg5.png → controller/src/main/resources/images/jigsaw/original/bg5.png


+ 0 - 0
controller/src/main/resources/images/jigsaw/bg6.png → controller/src/main/resources/images/jigsaw/original/bg6.png


+ 0 - 0
controller/src/main/resources/images/jigsaw/bg7.png → controller/src/main/resources/images/jigsaw/original/bg7.png


+ 0 - 0
controller/src/main/resources/images/jigsaw/bg8.png → controller/src/main/resources/images/jigsaw/original/bg8.png


+ 0 - 0
controller/src/main/resources/images/jigsaw/bg9.png → controller/src/main/resources/images/jigsaw/original/bg9.png


BIN
controller/src/main/resources/images/jigsaw/slidingBlock/1.png


BIN
controller/src/main/resources/images/jigsaw/slidingBlock/10.png


BIN
controller/src/main/resources/images/jigsaw/slidingBlock/11.png


BIN
controller/src/main/resources/images/jigsaw/slidingBlock/12.png


BIN
controller/src/main/resources/images/jigsaw/slidingBlock/2.png


BIN
controller/src/main/resources/images/jigsaw/slidingBlock/3.png


BIN
controller/src/main/resources/images/jigsaw/slidingBlock/4.png


BIN
controller/src/main/resources/images/jigsaw/slidingBlock/5.png


BIN
controller/src/main/resources/images/jigsaw/slidingBlock/6.png


BIN
controller/src/main/resources/images/jigsaw/slidingBlock/7.png


BIN
controller/src/main/resources/images/jigsaw/slidingBlock/8.png


BIN
controller/src/main/resources/images/jigsaw/slidingBlock/9.png


+ 1 - 1
dao/pom.xml

@@ -10,7 +10,7 @@
     <dependencies>
         <dependency>
             <groupId>cn.afterturn</groupId>
-            <artifactId>easypoi-wps</artifactId>
+            <artifactId>easypoi-annotation</artifactId>
         </dependency>
         <dependency>
             <groupId>com.github.xiaoymin</groupId>

+ 4 - 0
dao/src/main/java/com/koobietech/eas/dao/mapper/AdminLoginMapper.java

@@ -16,6 +16,10 @@ public interface AdminLoginMapper {
 
     UserDetail getUserDetailById(Long adminId);
 
+    List<Permission> getStudentPermissionsById(Long adminId);
 
+    List<Department> getStudentDepartmentsById(Long adminId);
+
+    UserDetail getStudentDetailById(Long adminId);
 
 }

+ 3 - 0
dao/src/main/java/com/koobietech/eas/dao/pojo/AdminPojo.java

@@ -2,6 +2,9 @@ package com.koobietech.eas.dao.pojo;
 
 import lombok.Data;
 
+/**
+ * @author lc
+ */
 @Data
 public class AdminPojo {
     private String username;

+ 57 - 23
dao/src/main/resources/com/koobietech/eas/dao/mapper/AdminLoginMapper.xml

@@ -33,31 +33,37 @@
         <result column="email" property="email"/>
     </resultMap>
 
+    <resultMap id="permissionResult" type="com.koobietech.eas.dao.login.pojo.Permission">
+        <!-- 映射查询结果到实体类属性 -->
+        <id column="id" property="id"/>
+        <result column="name" property="name"/>
+        <result column="is_active" property="isActive"/>
+        <result column="create_time" property="createTime"/>
+        <result column="modify_time" property="modifyTime"/>
+        <result column="create_uid" property="createUid"/>
+        <result column="description" property="description"/>
+    </resultMap>
 
+    <resultMap id="departmentResult" type="com.koobietech.eas.dao.login.pojo.Department">
+        <!-- 映射查询结果到实体类属性 -->
+        <id column="id" property="id"/>
+        <result column="depname" property="depname"/>
+        <result column="address" property="address"/>
+        <result column="phone" property="phone"/>
+        <result column="email" property="email"/>
+        <result column="manager" property="manager"/>
+        <result column="create_time" property="createTime"/>
+        <result column="modify_time" property="modifyTime"/>
+        <result column="create_uid" property="createUid"/>
+    </resultMap>
 
-
-<!--    <resultMap id="userDetailResultMap" type="UserDetail">-->
-<!--        &lt;!&ndash; 映射查询结果到实体类属性 &ndash;&gt;-->
-<!--        <result column="id" property="id" />-->
-<!--        <result column="username" property="username" />-->
-<!--        <result column="phone" property="phone" />-->
-<!--        <result column="email" property="email" />-->
-<!--        <collection property="departments" ofType="Department">-->
-<!--            <id column="dep_id" property="id" />-->
-<!--            <result column="depname" property="depname" />-->
-<!--            &lt;!&ndash; 其他部门属性的映射 &ndash;&gt;-->
-<!--        </collection>-->
-<!--        <collection property="permissions" ofType="Permission">-->
-<!--            <id column="per_id" property="id" />-->
-<!--            <result column="name" property="name" />-->
-<!--            &lt;!&ndash; 其他权限属性的映射 &ndash;&gt;-->
-<!--        </collection>-->
-<!--    </resultMap>-->
-
-
-
-
-
+    <resultMap id="studentDetailResult" type="com.koobietech.eas.dao.login.pojo.UserDetail">
+        <!-- 映射查询结果到实体类属性 -->
+        <result column="id" property="id"/>
+        <result column="student_name" property="username"/>
+        <result column="phone" property="phone"/>
+        <result column="email" property="email"/>
+    </resultMap>
 
     <select id="getUserPermissionsById" resultMap="permissionResultMap">
         SELECT p.id, p.name, p.is_active, p.create_time, p.modify_time, p.create_uid, p.description
@@ -81,4 +87,32 @@
         WHERE id = #{adminId}
     </select>
 
+    <select id="getStudentDetailById" resultMap="studentDetailResult">
+        SELECT
+            id,
+            student_name,
+            phone,
+            email
+        FROM
+            eas_sys_student
+        WHERE
+            id = #{adminId}
+    </select>
+
+    <select id="getStudentPermissionsById" resultMap="permissionResult">
+        SELECT p.id, p.name, p.is_active, p.create_time, p.modify_time, p.create_uid, p.description
+        FROM eas_sys_student s
+                 JOIN eas_sys_pes_relation pr ON s.id = pr.department_id
+                 JOIN eas_sys_permission p ON pr.permission_id = p.id
+        WHERE s.id = #{adminId};
+    </select>
+
+    <select id="getStudentDepartmentsById" resultMap="departmentResult">
+        SELECT DISTINCT d.id, d.depname, d.address, d.phone, d.email, d.manager, d.create_time, d.modify_time, d.create_uid
+        FROM eas_sys_student s
+                 JOIN eas_sys_pes_relation pr ON s.id = pr.department_id
+                 JOIN eas_sys_department d ON pr.department_id = d.id
+        WHERE s.id = #{adminId}
+    </select>
+
 </mapper>

+ 10 - 9
pom.xml

@@ -35,6 +35,7 @@
         <knife4j.version>4.1.0</knife4j.version>
         <easypoi.version>4.4.0</easypoi.version>
         <pagehelper.starter.version>1.3.1</pagehelper.starter.version>
+        <pagehelper.version>5.2.1</pagehelper.version>
         <maven.compiler.plugin.version>3.8.1</maven.compiler.plugin.version>
         <captcha.version>1.3.0</captcha.version>
         <xerces.version>2.9.1</xerces.version>
@@ -52,19 +53,19 @@
                 <artifactId>xercesImpl</artifactId>
                 <version>${xerces.version}</version>
             </dependency>
-            <dependency>
-                <groupId>cn.afterturn</groupId>
-                <artifactId>easypoi-wps</artifactId>
-                <version>${easypoi.version}</version>
-            </dependency>
             <dependency>
                 <groupId>com.anji-plus</groupId>
-                <artifactId>spring-boot-starter-captcha</artifactId>
+                <artifactId>captcha</artifactId>
                 <version>${captcha.version}</version>
             </dependency>
             <dependency>
                 <groupId>cn.afterturn</groupId>
-                <artifactId>easypoi-spring-boot-starter</artifactId>
+                <artifactId>easypoi-base</artifactId>
+                <version>${easypoi.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>cn.afterturn</groupId>
+                <artifactId>easypoi-annotation</artifactId>
                 <version>${easypoi.version}</version>
             </dependency>
             <dependency>
@@ -74,8 +75,8 @@
             </dependency>
             <dependency>
                 <groupId>com.github.pagehelper</groupId>
-                <artifactId>pagehelper-spring-boot-starter</artifactId>
-                <version>${pagehelper.starter.version}</version>
+                <artifactId>pagehelper</artifactId>
+                <version>${pagehelper.version}</version>
             </dependency>
             <dependency>
                 <groupId>com.github.xiaoymin</groupId>

+ 3 - 2
service/pom.xml

@@ -14,11 +14,12 @@
         </dependency>
         <dependency>
             <groupId>cn.afterturn</groupId>
-            <artifactId>easypoi-spring-boot-starter</artifactId>
+            <artifactId>easypoi-base</artifactId>
+            <version>4.3.0</version>
         </dependency>
         <dependency>
             <groupId>com.github.pagehelper</groupId>
-            <artifactId>pagehelper-spring-boot-starter</artifactId>
+            <artifactId>pagehelper</artifactId>
         </dependency>
         <dependency>
             <groupId>org.springframework</groupId>

+ 14 - 0
service/src/main/java/com/koobietech/eas/service/StudentLoginService.java

@@ -0,0 +1,14 @@
+package com.koobietech.eas.service;
+
+import com.anji.captcha.model.common.ResponseModel;
+import com.koobietech.eas.common.result.JsonResult;
+import com.koobietech.eas.dao.dto.LoginToken;
+import com.koobietech.eas.dao.pojo.AdminPojo;
+
+
+/**
+ * @author lc
+ */
+public interface StudentLoginService {
+    LoginToken studentLogin(AdminPojo adminPojo);
+}

+ 1 - 1
service/src/main/java/com/koobietech/eas/service/impl/AdminLoginServiceImpl.java

@@ -7,7 +7,6 @@ import com.koobietech.eas.common.pojo.JwtUserDto;
 import com.koobietech.eas.common.result.JsonResult;
 import com.koobietech.eas.common.utils.JwtManager;
 import com.koobietech.eas.common.utils.PasswordManager;
-import com.koobietech.eas.dao.pojo.AdminPojo;
 import com.koobietech.eas.dao.login.pojo.UserDetail;
 import com.koobietech.eas.dao.dto.LoginToken;
 import com.koobietech.eas.dao.mapper.AdminLoginMapper;
@@ -16,6 +15,7 @@ import com.koobietech.eas.mbg.model.EasSysUserinfo;
 import com.koobietech.eas.mbg.model.EasSysUserinfoExample;
 import com.koobietech.eas.service.AdminLoginService;
 import com.koobietech.eas.service.LoginRedisService;
+import com.koobietech.eas.dao.pojo.AdminPojo;
 import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.stereotype.Service;
 

+ 3 - 0
service/src/main/java/com/koobietech/eas/service/impl/LoginRedisServiceImpl.java

@@ -9,6 +9,9 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 
+/**
+ * @author lc
+ */
 @Service
 public class LoginRedisServiceImpl implements LoginRedisService {
 

+ 112 - 0
service/src/main/java/com/koobietech/eas/service/impl/StudentLoginServiceImpl.java

@@ -0,0 +1,112 @@
+package com.koobietech.eas.service.impl;
+
+import com.koobietech.eas.common.exception.EasException;
+import com.koobietech.eas.common.pojo.JwtUserDto;
+import com.koobietech.eas.common.utils.JwtManager;
+import com.koobietech.eas.common.utils.PasswordManager;
+import com.koobietech.eas.dao.constant.UserType;
+import com.koobietech.eas.dao.dto.LoginToken;
+import com.koobietech.eas.dao.login.pojo.UserDetail;
+import com.koobietech.eas.dao.mapper.AdminLoginMapper;
+import com.koobietech.eas.dao.pojo.AdminPojo;
+import com.koobietech.eas.mbg.mapper.EasSysStudentMapper;
+import com.koobietech.eas.mbg.model.EasSysStudent;
+import com.koobietech.eas.mbg.model.EasSysStudentExample;
+import com.koobietech.eas.service.LoginRedisService;
+import com.koobietech.eas.service.StudentLoginService;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Optional;
+
+@Service
+public class StudentLoginServiceImpl implements StudentLoginService {
+
+
+    @Resource
+    EasSysStudentMapper easSysStudentMapper;
+
+    @Resource
+    PasswordManager passwordManager;
+
+    @Resource
+    PasswordEncoder passwordEncoder;
+
+    @Resource
+    AdminLoginMapper adminLoginMapper;
+
+    @Resource
+    LoginRedisService studentLoginRedisService;
+
+    @Resource
+    JwtManager jwtManager;
+
+    // token过期时间 单位:s
+    private final Integer token_expires = 24 * 60 * 60;
+
+    private final Integer refreshToken_expires = 48 * 60 * 60;
+
+    @Override
+    public LoginToken studentLogin(AdminPojo adminPojo) {
+        if (adminPojo.getUsername() == null || adminPojo.getPasswd() == null
+                || adminPojo.getUsername().equals("") || adminPojo.getPasswd().equals("")) {
+            throw new EasException("用户不存在", 412);
+        }
+        EasSysStudent easSysStudent = findStudentByUsername(adminPojo.getUsername(), adminPojo.getPasswd());
+
+        Long adminId = easSysStudent.getId();
+
+        //先调用自定义sql查询detail类中的数据 最后把这个类封装到redis里面
+        UserDetail userDetail = adminLoginMapper.getStudentDetailById(adminId);
+        userDetail.setDepartments(adminLoginMapper.getStudentDepartmentsById(adminId));
+        userDetail.setPermissions(adminLoginMapper.getStudentPermissionsById(adminId));
+
+        userDetail.setUserType(UserType.MEMBER);
+        // 生成token
+        JwtUserDto jwtUserDto = new JwtUserDto(userDetail.getUsername(), userDetail.getId(), UserType.MEMBER);
+
+        String token = jwtManager.createJwt(jwtUserDto, token_expires);
+
+        String refreshToken = jwtManager.createJwt(jwtUserDto, refreshToken_expires);
+
+        // 生成redis key
+        String jwtTokenKey = studentLoginRedisService.createJwtTokenKey(jwtUserDto);
+
+        String jwtRefreshTokenKey = studentLoginRedisService.createJwtRefreshTokenKey(jwtUserDto);
+
+        // 将token存入redis
+        studentLoginRedisService.loginSaveCache(jwtTokenKey, userDetail, token_expires);
+
+        studentLoginRedisService.loginSaveCache(jwtRefreshTokenKey, userDetail, refreshToken_expires);
+
+        // 登录成功
+        return new LoginToken(token, refreshToken);
+    }
+
+    private EasSysStudent findStudentByUsername(String username, String password) {
+        EasSysStudentExample easSysStudentExample = new EasSysStudentExample();
+        easSysStudentExample.createCriteria().andStudentNameEqualTo(username);
+        List<EasSysStudent> studentList = easSysStudentMapper.selectByExample(easSysStudentExample);
+        Optional<EasSysStudent> optionalStudent = studentList.stream().findFirst();
+
+        if (optionalStudent.isEmpty()) {
+            throw new EasException("用户不存在", 9902);
+        }
+        if (studentList.size() > 1) {
+            throw new EasException("用户数据异常", 9902);
+        }
+        EasSysStudent easSysStudent = optionalStudent.get();
+        // 验证密码 这个方法里面有解密 如果解密失败会抛出异常
+        validatePassword(password, easSysStudent.getPasswd());
+        return easSysStudent;
+    }
+
+    private void validatePassword(String inputPassword, String encryptedPassword) {
+        String decryptedPassword = passwordManager.decryptPassword(inputPassword);
+        if (!passwordEncoder.matches(decryptedPassword, encryptedPassword)) {
+            throw new EasException("密码不正确", 9901);
+        }
+    }
+}