26 Commits fd6a0c13e0 ... 1999ebf9f0

Tác giả SHA1 Thông báo Ngày
  cuidi 1999ebf9f0 用户信息 1 năm trước cách đây
  wuheng b24c49fa17 Merge branch 'wheng' of wuheng/eas-system into master 1 năm trước cách đây
  wuheng 321790ca8d 屏蔽鉴权 1 năm trước cách đây
  wuheng 5515fc776d 屏蔽鉴权 1 năm trước cách đây
  wuheng 082dde9184 Merge branch 'wheng' of wuheng/eas-system into master 1 năm trước cách đây
  wuheng 334ecd1bcd bug 1 năm trước cách đây
  wuheng ae0826449d Merge branch 'wheng' of wuheng/eas-system into master 1 năm trước cách đây
  wuheng 0e36db4cbc merge code execel 1 năm trước cách đây
  wuheng 8f787d4f68 Merge branch 'superb' of wuheng/eas-system into master 1 năm trước cách đây
  wuheng 7453c5c2a3 处理遗产该信息 1 năm trước cách đây
  wuheng c20c5eb410 Merge branch 'superb' of wuheng/eas-system into master 1 năm trước cách đây
  wuheng c96fa97788 解决循环依赖 1 năm trước cách đây
  wuheng d20aa5320f Merge branch 'superb' of wuheng/eas-system into master 1 năm trước cách đây
  wuheng 272c53a9be merge code 1 năm trước cách đây
  wuheng 4f11eecff7 Merge branch 'Yolo' of wuheng/eas-system into master 1 năm trước cách đây
  wuheng 09f4300500 Merge branch 'master' into Yolo 1 năm trước cách đây
  wuheng 79de547131 merge code 1 năm trước cách đây
  wuheng e3baa6fa80 还原配置 1 năm trước cách đây
  wuheng 51b9a39a12 execel 1 năm trước cách đây
  superb 6398648a58 merge code 1 năm trước cách đây
  常忠宇 1bd1811825 subject 1 năm trước cách đây
  superb 71c6eb17a9 login 1 năm trước cách đây
  常忠宇 6391a45097 category 1 năm trước cách đây
  常忠宇 b9303a3838 Merge branch 'Yolo' of http://39.105.160.25:10880/wuheng/eas-system into Yolo 1 năm trước cách đây
  常忠宇 8e5fbd3cf6 category 1 năm trước cách đây
  wuheng f88e809f62 更新 'Jenkinsfile' 1 năm trước cách đây
38 tập tin đã thay đổi với 1195 bổ sung26 xóa
  1. 6 0
      common/src/main/java/com/koobietech/eas/common/constant/Disabled.java
  2. 11 0
      common/src/main/java/com/koobietech/eas/common/pojo/JwtUserDto.java
  3. 18 1
      common/src/main/java/com/koobietech/eas/common/utils/JwtManager.java
  4. 2 0
      common/src/main/java/com/koobietech/eas/common/utils/PasswordManager.java
  5. 4 0
      controller/pom.xml
  6. 1 1
      controller/src/main/java/com/koobietech/eas/ControllerApplication.java
  7. 28 0
      controller/src/main/java/com/koobietech/eas/controller/AdminLoginController.java
  8. 115 0
      controller/src/main/java/com/koobietech/eas/controller/EasEduCategoryController.java
  9. 114 0
      controller/src/main/java/com/koobietech/eas/controller/EasEduSubjectsController.java
  10. 2 0
      controller/src/main/java/com/koobietech/eas/controller/EasUserController.java
  11. 60 0
      controller/src/main/java/com/koobietech/eas/controller/EasUserInfoController.java
  12. 6 0
      controller/src/main/java/com/koobietech/eas/controller/LoginController.java
  13. 3 4
      controller/src/main/resources/application-local.yaml
  14. 43 17
      controller/src/test/java/com/koobietech/eas/controller/ControllerApplicationTests.java
  15. 10 0
      dao/src/main/java/com/koobietech/eas/dao/Pojo/AdminPojo.java
  16. 17 0
      dao/src/main/java/com/koobietech/eas/dao/adminLoginPojo/Department.java
  17. 15 0
      dao/src/main/java/com/koobietech/eas/dao/adminLoginPojo/Permission.java
  18. 16 0
      dao/src/main/java/com/koobietech/eas/dao/adminLoginPojo/UserDetail.java
  19. 13 0
      dao/src/main/java/com/koobietech/eas/dao/dto/LoginToken.java
  20. 18 0
      dao/src/main/java/com/koobietech/eas/dao/mapper/AdminLoginMapper.java
  21. 84 0
      dao/src/main/resources/com/koobietech/eas/dao/mapper/AdminLoginMapper.xml
  22. 0 0
      git
  23. 11 0
      pom.xml
  24. 6 1
      security/pom.xml
  25. 7 0
      security/src/main/java/com/koobietech/eas/security/config/SecurityConfig.java
  26. 58 0
      security/src/main/java/com/koobietech/eas/security/filter/EasSecurityFilter.java
  27. 5 0
      service/pom.xml
  28. 9 0
      service/src/main/java/com/koobietech/eas/service/AdminLoginService.java
  29. 23 0
      service/src/main/java/com/koobietech/eas/service/EasEduCategoryService.java
  30. 21 0
      service/src/main/java/com/koobietech/eas/service/EasEduSubjectsService.java
  31. 2 2
      service/src/main/java/com/koobietech/eas/service/EasPermissionService.java
  32. 15 0
      service/src/main/java/com/koobietech/eas/service/EasUserInfoService.java
  33. 17 0
      service/src/main/java/com/koobietech/eas/service/LoginRedisService.java
  34. 114 0
      service/src/main/java/com/koobietech/eas/service/impl/AdminLoginServiceImpl.java
  35. 81 0
      service/src/main/java/com/koobietech/eas/service/impl/EasEduCategoryServiceImpl.java
  36. 86 0
      service/src/main/java/com/koobietech/eas/service/impl/EasEduSubjectsServiceImpl.java
  37. 103 0
      service/src/main/java/com/koobietech/eas/service/impl/EasUserInfoServiceImpl.java
  38. 51 0
      service/src/main/java/com/koobietech/eas/service/impl/LoginRedisServiceImpl.java

+ 6 - 0
common/src/main/java/com/koobietech/eas/common/constant/Disabled.java

@@ -0,0 +1,6 @@
+package com.koobietech.eas.common.constant;
+
+public enum Disabled {
+        N,
+        Y
+}

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

@@ -1,5 +1,6 @@
 package com.koobietech.eas.common.pojo;
 
+import com.koobietech.eas.common.constant.UserType;
 import lombok.Data;
 
 @Data
@@ -7,4 +8,14 @@ public class JwtUserDto {
     String username;
     Long id;
     Enum type;
+
+    public JwtUserDto(String username, Long id, Enum type) {
+        this.username = username;
+        this.id = id;
+        this.type = type;
+    }
+
+    public JwtUserDto() {
+
+    }
 }

+ 18 - 1
common/src/main/java/com/koobietech/eas/common/utils/JwtManager.java

@@ -39,6 +39,23 @@ public class JwtManager {
         return sign;
     }
 
+    /**
+     * 创建 token
+     * @param userDto
+     * @return
+     */
+    public String createJwt(JwtUserDto userDto, Integer expires){
+        Calendar calendar = Calendar.getInstance();
+        calendar.add(calendar.DATE, expires);
+        String sign = JWT.create()
+                .withClaim("user", userDto.getUsername())
+                .withClaim("id", userDto.getId())
+                .withClaim("type", userDto.getType().toString())
+                .withExpiresAt( calendar.getTime() )
+                .sign(Algorithm.HMAC256(SECRET));
+        return sign;
+    }
+
     /**
      * 解密 Token
      * @param token
@@ -53,7 +70,7 @@ public class JwtManager {
             jwtUserDto.setUsername(verify.getClaim("user").asString());
             jwtUserDto.setType(UserType.valueOf(verify.getClaim("type").asString()));
         } catch ( JWTVerificationException e){
-            throw new EasException("token 不正确!");
+            //throw new EasException("token 不正确!");
         }
         return jwtUserDto;
     }

+ 2 - 0
common/src/main/java/com/koobietech/eas/common/utils/PasswordManager.java

@@ -4,10 +4,12 @@ import cn.hutool.crypto.SecureUtil;
 import cn.hutool.crypto.symmetric.AES;
 import com.koobietech.eas.common.exception.EasException;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
 
 
 import java.nio.charset.StandardCharsets;
 
+@Component
 public class PasswordManager {
 
 

+ 4 - 0
controller/pom.xml

@@ -14,6 +14,10 @@
     </parent>
 
     <dependencies>
+        <dependency>
+            <groupId>cn.afterturn</groupId>
+            <artifactId>easypoi-spring-boot-starter</artifactId>
+        </dependency>
         <dependency>
             <groupId>com.github.xiaoymin</groupId>
             <artifactId>knife4j-openapi3-spring-boot-starter</artifactId>

+ 1 - 1
controller/src/main/java/com/koobietech/eas/ControllerApplication.java

@@ -7,7 +7,7 @@ import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.FilterType;
 
 @SpringBootApplication
-@MapperScan(basePackages = {"com.koobietech.eas.mbg.mapper"})
+@MapperScan(basePackages = {"com.koobietech.eas.mbg.mapper","com.koobietech.eas.dao.mapper"})
 @ComponentScan(basePackages = {"com.koobietech.eas"}, excludeFilters = {
         @ComponentScan.Filter(type = FilterType.REGEX, pattern  = {
                 "com.koobietech.eas.mbg.+"

+ 28 - 0
controller/src/main/java/com/koobietech/eas/controller/AdminLoginController.java

@@ -0,0 +1,28 @@
+package com.koobietech.eas.controller;
+
+
+import com.koobietech.eas.common.result.JsonResult;
+import com.koobietech.eas.dao.Pojo.AdminPojo;
+import com.koobietech.eas.dao.dto.LoginToken;
+import com.koobietech.eas.service.AdminLoginService;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+@RestController
+public class AdminLoginController {
+    @Resource
+    private AdminLoginService adminLoginService;
+
+    @RequestMapping("/adminLogin")
+    public JsonResult adminLogin(@RequestBody AdminPojo adminPojo){
+
+        LoginToken result = adminLoginService.adminLogin(adminPojo);
+
+        return JsonResult.data(result);
+    }
+
+
+}

+ 115 - 0
controller/src/main/java/com/koobietech/eas/controller/EasEduCategoryController.java

@@ -0,0 +1,115 @@
+package com.koobietech.eas.controller;
+
+import com.github.pagehelper.PageHelper;
+import com.koobietech.eas.common.constant.Disabled;
+import com.koobietech.eas.common.result.JsonPageResult;
+import com.koobietech.eas.common.result.JsonResult;
+import com.koobietech.eas.common.result.PageData;
+import com.koobietech.eas.mbg.model.EasEduCategory;
+import com.koobietech.eas.service.EasEduCategoryService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Date;
+import java.util.List;
+
+@RestController
+@Tag(name = "课程分类控制器")
+public class EasEduCategoryController {
+
+    @Resource
+    EasEduCategoryService easEduCategoryService;
+
+    /**
+     * 添加类别
+     * @param easEduCategory
+     * @return
+     */
+    @PostMapping(value = "/addEasEduCategory")
+    @Operation(summary = "添加课程类别" , description = "用于添加课程类别")
+    public JsonResult addEasEduCategory(@RequestBody EasEduCategory easEduCategory ){
+        int add = easEduCategoryService.addEasEduCategory( easEduCategory );
+        System.out.println( add );
+        return JsonResult.ok("添加成功");
+    }
+
+    /**
+     * 更新
+     * @param easEduCategory
+     * @return
+     */
+    @PostMapping(value = "/updateEasEduCategory")
+    @Operation(summary = "课程类别更新" , description = "用于课程类别更新")
+    public JsonResult updateEasEduCategory(@RequestBody EasEduCategory easEduCategory){
+        int i = easEduCategoryService.updateEasEduCategory( easEduCategory );
+        if (i > 0){
+            return JsonResult.ok();
+        }else {
+            return JsonResult.fail();
+        }
+    }
+
+    /**
+     * 根据 Id 删除
+     * @param id
+     * @return
+     */
+    @DeleteMapping(value = "/deleteById/{id}")
+    @Operation(summary = "根据Id删除课程类别" , description = "用于根据Id删除课程类别")
+    public JsonResult deleteById(@PathVariable Integer id){
+        int i = easEduCategoryService.deleteById(id);
+        if (i > 0){
+            return JsonResult.ok();
+        }else {
+            return JsonResult.fail();
+        }
+    }
+
+    /**
+     * id 查询
+     * @param id
+     * @return
+     */
+    @GetMapping(value = "/selectById")
+    @Operation(summary = "根据Id查询对应课程类别" , description = "用于根据Id查询课程类别")
+    public JsonResult selectById(Integer id){
+        EasEduCategory easEduCategory = easEduCategoryService.selectById(id);
+        System.out.println(
+                Disabled.valueOf(easEduCategory.getDisabled())
+        );
+        return JsonResult.data( easEduCategory );
+    }
+
+    /**
+     * 查询全部课程
+     * @return
+     */
+    @GetMapping(value = "/selectAll")
+    @Operation(summary = "查询全部课程类别" , description = "用于查询全部课程类别")
+    public JsonResult selectAll(){
+        List<EasEduCategory> easEduCategories = easEduCategoryService.selectAll();
+        return JsonResult.data( easEduCategories );
+    }
+
+    /**
+     * 通过条件查询课程
+     * @param easEduCategory
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    @PostMapping(value = "/selectByCondition")
+    @Operation(summary = "根据条件进行查询课程类别", description = "用于根据条件查询课程类别")
+    public JsonPageResult selectByCondition(@RequestBody EasEduCategory easEduCategory,
+                                            @RequestParam Integer pageNum, @RequestParam Integer pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        PageData pageData = easEduCategoryService.selectByCondition(easEduCategory);
+        return JsonPageResult.data( pageData );
+    }
+}

+ 114 - 0
controller/src/main/java/com/koobietech/eas/controller/EasEduSubjectsController.java

@@ -0,0 +1,114 @@
+package com.koobietech.eas.controller;
+
+
+import com.github.pagehelper.PageHelper;
+import com.koobietech.eas.common.constant.Disabled;
+import com.koobietech.eas.common.result.JsonPageResult;
+import com.koobietech.eas.common.result.JsonResult;
+import com.koobietech.eas.common.result.PageData;
+import com.koobietech.eas.mbg.model.EasEduCategory;
+import com.koobietech.eas.mbg.model.EasEduSubjects;
+import com.koobietech.eas.service.EasEduSubjectsService;
+import io.swagger.v3.core.util.Json;
+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;
+import java.util.List;
+
+@RestController
+@Tag(name = "课程控制器")
+@RequestMapping("/subject")
+public class EasEduSubjectsController {
+
+    @Resource
+    EasEduSubjectsService easEduSubjectsService;
+
+    /**
+     * 添加课程
+     * @param easEduSubjects
+     * @return
+     */
+    @PostMapping(value = "/addSubject")
+    @Operation(summary = "添加课程" , description = "用于添加课程")
+    public JsonResult addSubject( @RequestBody EasEduSubjects easEduSubjects){
+        int addSubject = easEduSubjectsService.addSubject(easEduSubjects);
+        System.out.println(addSubject);
+        return JsonResult.ok("添加成功!");
+    }
+
+    /**
+     * 修改课程
+     * @param easEduSubjects
+     * @return
+     */
+    @PostMapping(value = "/updateSubjects")
+    @Operation(summary = "修改课程" , description = "用于修改课程")
+    public JsonResult updateSubjects( @RequestBody EasEduSubjects easEduSubjects){
+        int update_i = easEduSubjectsService.updateSubjects(easEduSubjects);
+        if (update_i > 0){
+            return JsonResult.ok();
+        }else {
+            return JsonResult.fail();
+        }
+    }
+
+    /**
+     * 删除课程
+     * @param id
+     * @return
+     */
+    @DeleteMapping(value = "/deleteSubjects/{id}")
+    @Operation(summary = "删除课程",description = "用于删除课程")
+    public JsonResult deleteSubjects(@PathVariable Integer id){
+        int delete_i = easEduSubjectsService.deleteSubjects(id);
+        if (delete_i > 0){
+            return JsonResult.ok();
+        }else {
+            return JsonResult.fail();
+        }
+    }
+
+    /**
+     * 根据 id 进行查询
+     * @param id
+     * @return
+     */
+    @GetMapping(value = "/selectById")
+    @Operation(summary = "id查询课程" ,description = "根据id查询课程")
+    public JsonResult selectById(Integer id){
+        EasEduSubjects easEduSubjects = easEduSubjectsService.selectById(id);
+        System.out.println(
+                Disabled.valueOf(easEduSubjects.getDisabled())
+        );
+        return JsonResult.data( easEduSubjects );
+    }
+
+    /**
+     * 查询所有课程及其信息
+     * @return
+     */
+    @GetMapping(value = "/selectAll")
+    @Operation(summary = "查询所有课程",description = "用于查询所有课程")
+    public JsonResult selectAll(){
+        List<EasEduSubjects> easEduSubjects = easEduSubjectsService.selectAll();
+        return JsonResult.data( easEduSubjects );
+    }
+
+    /**
+     * 通过条件查询课程
+     * @param easEduSubjects
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    @PostMapping(value = "/selectByCondition")
+    @Operation(summary = "根据条件进行查询课程", description = "用于根据条件查询课程")
+    public JsonPageResult selectByCondition(@RequestBody EasEduSubjects easEduSubjects,
+                                            @RequestParam Integer pageNum, @RequestParam Integer pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        PageData pageData = easEduSubjectsService.selectByCondition(easEduSubjects);
+        return JsonPageResult.data( pageData );
+    }
+}

+ 2 - 0
controller/src/main/java/com/koobietech/eas/controller/EasUserController.java

@@ -25,4 +25,6 @@ public class EasUserController {
         return demoService.test( easEduSubjects );
     }
 
+
+
 }

+ 60 - 0
controller/src/main/java/com/koobietech/eas/controller/EasUserInfoController.java

@@ -0,0 +1,60 @@
+package com.koobietech.eas.controller;
+
+import com.github.pagehelper.PageHelper;
+import com.koobietech.eas.common.result.JsonResult;
+import com.koobietech.eas.common.result.PageData;
+import com.koobietech.eas.mbg.model.EasSysUserinfo;
+import com.koobietech.eas.service.EasUserInfoService;
+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;
+
+@RestController
+@Tag(name = "用户信息模块")
+@RequestMapping("/userinfo")
+public class EasUserInfoController {
+
+    @Resource
+    EasUserInfoService easUserInfoService;
+
+    @PostMapping("/add")
+    @Operation(summary = "添加用户信息", description = "录入基本用户信息")
+    public JsonResult add(@RequestBody EasSysUserinfo userinfo) {
+        Boolean ret = easUserInfoService.add(userinfo);
+        if (ret) {
+            return JsonResult.ok();
+        }
+        return JsonResult.fail();
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除用户信息",description = "删除用户信息表数据根据ID")
+    public JsonResult delete(@RequestParam Long id) {
+        Boolean ret = easUserInfoService.delete(id);
+        if (ret) {
+            return JsonResult.ok();
+        }
+        return JsonResult.fail();
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新用户信息",description = "更新用户信息表信息")
+    public JsonResult update(@RequestBody EasSysUserinfo userinfo) {
+        Boolean ret = easUserInfoService.update(userinfo);
+        if (ret) {
+            return JsonResult.ok();
+        }
+        return JsonResult.fail();
+    }
+
+    @PostMapping("/query")
+    @Operation(summary = "查询用户信息",description = "查询用户信息表信息")
+    public JsonResult query(@RequestBody(required = false) EasSysUserinfo userinfo,
+                            @RequestParam Integer pageNum, @RequestParam Integer pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        PageData ret = easUserInfoService.query(userinfo);
+        return JsonResult.data(ret);
+    }
+}

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

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

+ 3 - 4
controller/src/main/resources/application-local.yaml

@@ -1,10 +1,10 @@
 server:
-  port: 8081
+  port: 8080
 spring:
   datasource:
-    url: jdbc:mysql://127.0.0.1:3306/eas?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=true&tinyInt1isBit=false
+    url: jdbc:mysql://127.0.0.1:13306/eas?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=true&tinyInt1isBit=false
     username: root
-    password: 1234
+    password: 0JZBdtlYoiOepddh
     driver-class-name: com.mysql.cj.jdbc.Driver
   redis:
     host: localhost
@@ -28,4 +28,3 @@ knife4j:
 logging:
   level:
     com.koobietech.eas.*: TRACE
-

+ 43 - 17
controller/src/test/java/com/koobietech/eas/controller/ControllerApplicationTests.java

@@ -1,38 +1,64 @@
 package com.koobietech.eas.controller;
 
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.entity.ExportParams;
+import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
+import cn.afterturn.easypoi.handler.inter.IWriter;
 import com.koobietech.eas.common.constant.UserType;
 import com.koobietech.eas.common.pojo.JwtUserDto;
 import com.koobietech.eas.common.service.RedisService;
 import com.koobietech.eas.common.utils.JwtManager;
 import com.koobietech.eas.common.utils.PasswordManager;
+import com.koobietech.eas.mbg.model.EasSysLogs;
+import org.apache.poi.ss.usermodel.Workbook;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.test.context.SpringBootTest;
 
 import javax.annotation.Resource;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.*;
 
 
 @SpringBootTest
 class ControllerApplicationTests {
 
-    @Resource
-    RedisService redisService;
-
-    @Resource
-    JwtManager jwtManager;
-
     @Test
-    void contextLoads() {
-
-        JwtUserDto jwtUserDto = new JwtUserDto();
-
-        jwtUserDto.setType(UserType.TEACHER);
-        jwtUserDto.setId(12L);
-        jwtUserDto.setUsername("李四");
-
-        String jwt = jwtManager.createJwt(jwtUserDto);
-        redisService.set("jwttoken", jwt);
-
+    void contextLoads() throws IOException {
+//        List<Map> list = new ArrayList<>();
+//        Workbook workbook = null;
+//        ExportParams params = new ExportParams("大数据测试", "测试");
+//
+//        List<ExcelExportEntity> entity = new ArrayList<ExcelExportEntity>();
+//        entity.add(new ExcelExportEntity("ID", "id"));
+//        entity.add(new ExcelExportEntity("级别", "level"));
+//        entity.add(new ExcelExportEntity("日志", "logger"));
+//        entity.add(new ExcelExportEntity("消息", "message"));
+//        entity.add(new ExcelExportEntity("时间", "timestamp"));
+//        entity.add(new ExcelExportEntity("异常", "exception"));
+//
+//        Map<String, Object> map = new HashMap<>();
+//        for (int i = 0; i < 10000; i++) {
+//            map.put("id", i);
+//            map.put("level", "ERROR");
+//            map.put("logger", "发生错误" + i);
+//            map.put("message", "这里是消息");
+//            map.put("timestamp", new Date());
+//            map.put("exception", "异常信息");
+//            list.add(map);
+//        }
+//        workbook = ExcelExportUtil.exportExcel(params, entity, list);
+//        list.clear();
+//        File savefile = new File("C:/Users/lc/Desktop");
+//        if (!savefile.exists()) {
+//            savefile.mkdirs();
+//        }
+//        FileOutputStream fos = new FileOutputStream("C:/Users/lc/Desktop/bigDataExport.xlsx");
+//        workbook.write(fos);
+//        fos.close();
 
 
     }

+ 10 - 0
dao/src/main/java/com/koobietech/eas/dao/Pojo/AdminPojo.java

@@ -0,0 +1,10 @@
+package com.koobietech.eas.dao.Pojo;
+
+import lombok.Data;
+
+@Data
+public class AdminPojo {
+    private String username;
+    private String passwd;
+
+}

+ 17 - 0
dao/src/main/java/com/koobietech/eas/dao/adminLoginPojo/Department.java

@@ -0,0 +1,17 @@
+package com.koobietech.eas.dao.adminLoginPojo;
+
+import lombok.Data;
+import java.util.Date;
+
+@Data
+public class Department {
+    private Long id;
+    private String depname;
+    private String address;
+    private String phone;
+    private String email;
+    private String manager;
+    private Date createTime;
+    private Date modifyTime;
+    private Integer createUid;
+}

+ 15 - 0
dao/src/main/java/com/koobietech/eas/dao/adminLoginPojo/Permission.java

@@ -0,0 +1,15 @@
+package com.koobietech.eas.dao.adminLoginPojo;
+
+import lombok.Data;
+import java.util.Date;
+
+@Data
+public class Permission {
+    private Integer id;
+    private String name;
+    private Byte isActive;
+    private Date createTime;
+    private Date modifyTime;
+    private Integer createUid;
+    private String description;
+}

+ 16 - 0
dao/src/main/java/com/koobietech/eas/dao/adminLoginPojo/UserDetail.java

@@ -0,0 +1,16 @@
+package com.koobietech.eas.dao.adminLoginPojo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class UserDetail {
+    private Long id;
+    private String username;
+    private String phone;
+    private String email;
+    private List<Permission> permissions;
+    private List<Department> departments;
+
+}

+ 13 - 0
dao/src/main/java/com/koobietech/eas/dao/dto/LoginToken.java

@@ -0,0 +1,13 @@
+package com.koobietech.eas.dao.dto;
+
+import lombok.Data;
+
+@Data
+public class LoginToken {
+    String token;
+    String refreshToken;
+    public LoginToken(String token, String refreshToken) {
+        this.token = token;
+        this.refreshToken = refreshToken;
+    }
+}

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

@@ -0,0 +1,18 @@
+package com.koobietech.eas.dao.mapper;
+
+import com.koobietech.eas.dao.adminLoginPojo.Department;
+import com.koobietech.eas.dao.adminLoginPojo.Permission;
+import com.koobietech.eas.dao.adminLoginPojo.UserDetail;
+
+import java.util.List;
+
+public interface AdminLoginMapper {
+    List<Permission> getUserPermissionsById(Long adminId);
+
+    List<Department> getUserDepartmentsById(Long adminId);
+
+    UserDetail getUserDetailById(Long adminId);
+
+
+
+}

+ 84 - 0
dao/src/main/resources/com/koobietech/eas/dao/mapper/AdminLoginMapper.xml

@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.koobietech.eas.dao.mapper.AdminLoginMapper">
+    <resultMap id="permissionResultMap" type="com.koobietech.eas.dao.adminLoginPojo.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="departmentResultMap" type="com.koobietech.eas.dao.adminLoginPojo.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="com.koobietech.eas.dao.adminLoginPojo.UserDetail">
+        <!-- 映射查询结果到实体类属性 -->
+        <result column="id" property="id"/>
+        <result column="username" property="username"/>
+        <result column="phone" property="phone"/>
+        <result column="email" property="email"/>
+    </resultMap>
+
+
+
+
+<!--    <resultMap id="userDetailResultMap" type="com.koobietech.eas.dao.adminLoginPojo.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="com.koobietech.eas.dao.adminLoginPojo.Department">-->
+<!--            <id column="dep_id" property="id" />-->
+<!--            <result column="depname" property="depname" />-->
+<!--            &lt;!&ndash; 其他部门属性的映射 &ndash;&gt;-->
+<!--        </collection>-->
+<!--        <collection property="permissions" ofType="com.koobietech.eas.dao.adminLoginPojo.Permission">-->
+<!--            <id column="per_id" property="id" />-->
+<!--            <result column="name" property="name" />-->
+<!--            &lt;!&ndash; 其他权限属性的映射 &ndash;&gt;-->
+<!--        </collection>-->
+<!--    </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
+        FROM eas_sys_userinfo u
+                 JOIN eas_sys_pes_relation pr ON u.id = pr.department_id
+                 JOIN eas_sys_permission p ON pr.permission_id = p.id
+        WHERE u.id = #{adminId};
+    </select>
+
+    <select id="getUserDepartmentsById" resultMap="departmentResultMap">
+        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_userinfo u
+                 JOIN eas_sys_pes_relation pr ON u.id = pr.department_id
+                 JOIN eas_sys_department d ON pr.department_id = d.id
+        WHERE u.id = #{adminId}
+    </select>
+
+    <select id="getUserDetailById" resultMap="userDetailResultMap">
+        SELECT id, username, phone, email
+        FROM eas_sys_userinfo
+        WHERE id = #{adminId}
+    </select>
+
+</mapper>

+ 0 - 0
git


+ 11 - 0
pom.xml

@@ -33,11 +33,22 @@
         <javax.servlet-api.version>4.0.1</javax.servlet-api.version>
         <spring-data-redis.version>2.7.3</spring-data-redis.version>
         <knife4j.version>4.1.0</knife4j.version>
+        <easypoi.version>4.3.0</easypoi.version>
         <pagehelper.starter.version>1.3.1</pagehelper.starter.version>
         <maven.compiler.plugin.version>3.8.1</maven.compiler.plugin.version>
     </properties>
     <dependencyManagement>
         <dependencies>
+            <dependency>
+                <groupId>cn.afterturn</groupId>
+                <artifactId>easypoi-spring-boot-starter</artifactId>
+                <version>${easypoi.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-starter-security</artifactId>
+                <version>${spring-boot.version}</version>
+            </dependency>
             <dependency>
                 <groupId>com.github.pagehelper</groupId>
                 <artifactId>pagehelper-spring-boot-starter</artifactId>

+ 6 - 1
security/pom.xml

@@ -25,7 +25,12 @@
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-security</artifactId>
-            <version>${spring-boot.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.koobietech.eas</groupId>
+            <artifactId>service</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+            <scope>compile</scope>
         </dependency>
     </dependencies>
 

+ 7 - 0
security/src/main/java/com/koobietech/eas/security/config/SecurityConfig.java

@@ -7,6 +7,8 @@ import org.springframework.security.config.annotation.web.builders.HttpSecurity;
 import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
 import org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer;
 import org.springframework.security.config.http.SessionCreationPolicy;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.security.web.SecurityFilterChain;
 import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
 
@@ -43,4 +45,9 @@ public class SecurityConfig {
 
         return and.build();
     }
+
+    @Bean
+    public PasswordEncoder passwordEncoder() {
+        return new BCryptPasswordEncoder();
+    }
 }

+ 58 - 0
security/src/main/java/com/koobietech/eas/security/filter/EasSecurityFilter.java

@@ -1,9 +1,23 @@
 package com.koobietech.eas.security.filter;
 
+import com.koobietech.eas.common.pojo.JwtUserDto;
+import com.koobietech.eas.common.utils.JwtManager;
+import com.koobietech.eas.dao.adminLoginPojo.Permission;
+import com.koobietech.eas.dao.adminLoginPojo.UserDetail;
+import com.koobietech.eas.service.LoginRedisService;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
+import org.springframework.security.core.context.SecurityContext;
+import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
 import org.springframework.web.filter.OncePerRequestFilter;
 
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import javax.annotation.Resource;
 import javax.servlet.FilterChain;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
@@ -12,9 +26,53 @@ import javax.servlet.http.HttpServletResponse;
 @Component
 public class EasSecurityFilter extends OncePerRequestFilter {
 
+    @Resource
+    private LoginRedisService loginRedisService;
+
+    @Resource
+    JwtManager jwtManager;
 
     @Override
     protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
+
+        //从请求里面拿到token
+        String token = request.getHeader("Authorization");
+        //判断token是否存在
+        if (StringUtils.hasText(token) && false) {
+            //解析token成JwtUserDto
+            JwtUserDto jwtUserDto = jwtManager.decodeJwt(token);
+            //判断token是否有效
+            UserDetail userDetail = loginRedisService.checkToken(jwtUserDto);
+
+            // 获取当前的 SecurityContext 对象,用于保存当前用户的安全上下文信息
+            SecurityContext context = SecurityContextHolder.getContext();
+
+            if (Objects.nonNull(userDetail)) {
+                // 如果获取到了有效的用户对象
+
+                // 获取用户的权限列表
+                List<Permission> permission = userDetail.getPermissions();
+
+                // 创建一个 ArrayList 集合,用于存储用户权限对应的 SimpleGrantedAuthority 权限对象
+                ArrayList<SimpleGrantedAuthority> objects = new ArrayList<>();
+
+                // 遍历用户的权限列表
+                for (Permission adminPermission: permission) {
+                    // 创建一个 SimpleGrantedAuthority 权限对象,并添加到集合中
+                    SimpleGrantedAuthority authority = new SimpleGrantedAuthority(adminPermission.getDescription());
+                    objects.add(authority);
+                }
+
+                // 使用用户的用户名、空凭证参数和权限对象集合创建一个 UsernamePasswordAuthenticationToken 身份验证令牌
+                UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(userDetail.getUsername(), null, objects);
+
+                // 将身份验证令牌设置到当前的 SecurityContext 中
+                context.setAuthentication(authenticationToken);
+            }
+        }
+
         filterChain.doFilter(request, response);
     }
+
+
 }

+ 5 - 0
service/pom.xml

@@ -36,6 +36,11 @@
             <groupId>com.koobietech.eas</groupId>
             <artifactId>common</artifactId>
             <version>0.0.1-SNAPSHOT</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-security</artifactId>
         </dependency>
     </dependencies>
 

+ 9 - 0
service/src/main/java/com/koobietech/eas/service/AdminLoginService.java

@@ -0,0 +1,9 @@
+package com.koobietech.eas.service;
+
+import com.koobietech.eas.common.result.JsonResult;
+import com.koobietech.eas.dao.Pojo.AdminPojo;
+import com.koobietech.eas.dao.dto.LoginToken;
+
+public interface AdminLoginService {
+    LoginToken adminLogin(AdminPojo adminPojo);
+}

+ 23 - 0
service/src/main/java/com/koobietech/eas/service/EasEduCategoryService.java

@@ -0,0 +1,23 @@
+package com.koobietech.eas.service;
+
+import com.koobietech.eas.common.result.PageData;
+import com.koobietech.eas.mbg.model.EasEduCategory;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+public interface EasEduCategoryService {
+
+    int addEasEduCategory( EasEduCategory easEduCategory );
+
+    int updateEasEduCategory( EasEduCategory easEduCategory );
+
+    int deleteById(int id);
+
+    EasEduCategory selectById( Integer id );
+
+    List<EasEduCategory> selectAll();
+
+    PageData selectByCondition(EasEduCategory easEduCategory );
+
+}

+ 21 - 0
service/src/main/java/com/koobietech/eas/service/EasEduSubjectsService.java

@@ -0,0 +1,21 @@
+package com.koobietech.eas.service;
+
+import com.koobietech.eas.common.result.PageData;
+import com.koobietech.eas.mbg.model.EasEduSubjects;
+
+import java.util.List;
+
+public interface EasEduSubjectsService {
+
+    int addSubject(EasEduSubjects easEduSubjects);
+
+    int updateSubjects(EasEduSubjects easEduSubjects);
+
+    int deleteSubjects( int id );
+
+    EasEduSubjects selectById( Integer id );
+
+    List<EasEduSubjects> selectAll();
+
+    PageData selectByCondition(EasEduSubjects easEduSubjects);
+}

+ 2 - 2
service/src/main/java/com/koobietech/eas/service/EasPermissionService.java

@@ -5,8 +5,8 @@ import com.koobietech.eas.mbg.model.EasSysPermission;
 
 public interface EasPermissionService {
 
-    Boolean update(EasSysPermission record);
-    Boolean add(EasSysPermission record);
+    Boolean update(EasSysPermission permisson);
+    Boolean add(EasSysPermission permisson);
     Boolean delete(Integer id);
     PageData query(EasSysPermission permission);
 }

+ 15 - 0
service/src/main/java/com/koobietech/eas/service/EasUserInfoService.java

@@ -0,0 +1,15 @@
+package com.koobietech.eas.service;
+
+import com.koobietech.eas.common.result.PageData;
+import com.koobietech.eas.mbg.model.EasSysUserinfo;
+
+public interface EasUserInfoService {
+
+    Boolean add(EasSysUserinfo userinfo);
+
+    Boolean delete(Long id);
+
+    Boolean update(EasSysUserinfo userinfo);
+
+    PageData query(EasSysUserinfo userinfo);
+}

+ 17 - 0
service/src/main/java/com/koobietech/eas/service/LoginRedisService.java

@@ -0,0 +1,17 @@
+package com.koobietech.eas.service;
+
+import com.koobietech.eas.common.pojo.JwtUserDto;
+import com.koobietech.eas.dao.adminLoginPojo.UserDetail;
+
+
+public interface LoginRedisService {
+    UserDetail checkToken(JwtUserDto jwtUserDto);
+
+    UserDetail checkRefreshToken(JwtUserDto jwtUserDto);
+
+    void loginSaveCache(String redisTokenKey, UserDetail userDetailInRedis, Integer token_expires);
+
+    String createJwtTokenKey(JwtUserDto jwtUserDto);
+
+    String createJwtRefreshTokenKey(JwtUserDto jwtUserDto);
+}

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

@@ -0,0 +1,114 @@
+package com.koobietech.eas.service.impl;
+
+import com.koobietech.eas.common.constant.UserType;
+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.Pojo.AdminPojo;
+import com.koobietech.eas.dao.adminLoginPojo.UserDetail;
+import com.koobietech.eas.dao.dto.LoginToken;
+import com.koobietech.eas.dao.mapper.AdminLoginMapper;
+import com.koobietech.eas.mbg.mapper.EasSysUserinfoMapper;
+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 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 AdminLoginServiceImpl implements AdminLoginService {
+
+    @Resource
+    private PasswordEncoder passwordEncoder;
+    @Resource
+    private PasswordManager passwordManager;
+    @Resource
+    private AdminLoginMapper adminLoginMapper;
+    @Resource
+    private EasSysUserinfoMapper easSysUserinfoMapper;
+    @Resource
+    private LoginRedisService loginRedisService;
+    @Resource
+    private JwtManager jwtManager;
+
+    @Override
+    public LoginToken adminLogin(AdminPojo adminPojo) {
+        if (adminPojo.getUsername() == null || adminPojo.getPasswd() == null || adminPojo.getUsername().isEmpty() || adminPojo.getPasswd().isEmpty()) {
+            throw new EasException("用户不存在", 509);
+        }
+
+        EasSysUserinfo easSysUserinfo = findAdminByUsername(adminPojo.getUsername(), adminPojo.getPasswd());
+
+        // 接收到对象,根据这个信息去查询数据库,然后自定义sql查用户信息,存在redis里面当做token
+        System.out.println(easSysUserinfo);
+        //先获取id,进行枚举判断
+        Long id = easSysUserinfo.getId();
+        //先调用自定义sql查询detail类中的数据 最后把这个类封装到redis里面
+        UserDetail userDetailInRedis = adminLoginMapper.getUserDetailById(id);
+        System.out.println("接收前" + userDetailInRedis);
+        userDetailInRedis.setDepartments(adminLoginMapper.getUserDepartmentsById(id));
+        userDetailInRedis.setPermissions(adminLoginMapper.getUserPermissionsById(id));
+        System.out.println("接收后" + userDetailInRedis);
+
+        // 先调用自定义sql查询用户详细信息、部门信息和权限信息
+        UserType userType = UserType.TEACHER;
+        if (userDetailInRedis.getUsername().equals("admin")) {
+            userType = UserType.ADMIN;
+        }
+
+        // token过期时间
+        Integer token_expires = 30;
+        Integer refreshToken_expires = 60;
+
+        // 生成token
+        JwtUserDto jwtUserDto = new JwtUserDto(userDetailInRedis.getUsername(), userDetailInRedis.getId(), userType);
+        String token = jwtManager.createJwt(jwtUserDto, token_expires);
+        String refreshToken = jwtManager.createJwt(jwtUserDto, refreshToken_expires);
+
+        // 生成redis key
+        String redisTokenKey = loginRedisService.createJwtTokenKey(jwtUserDto);
+        String redisRefreshTokenKey = loginRedisService.createJwtRefreshTokenKey(jwtUserDto);
+
+        // 将token存入redis
+        loginRedisService.loginSaveCache(redisTokenKey, userDetailInRedis, token_expires);
+        loginRedisService.loginSaveCache(redisRefreshTokenKey, userDetailInRedis, refreshToken_expires);
+
+        // 登录成功
+        return new LoginToken(token, refreshToken);
+    }
+
+    private EasSysUserinfo findAdminByUsername(String username, String password)  {
+        EasSysUserinfoExample easSysUserinfoExample = new EasSysUserinfoExample();
+        easSysUserinfoExample.createCriteria().andUsernameEqualTo(username);
+        List<EasSysUserinfo> adminList = easSysUserinfoMapper.selectByExample(easSysUserinfoExample);
+
+        // 使用Optional简化判断
+        Optional<EasSysUserinfo> optionalAdmin = adminList.stream().findFirst();
+
+        if (optionalAdmin.isEmpty()) {
+            throw new EasException("用户不存在", 9902);
+        }
+        if (adminList.size() > 1) {
+            throw new EasException("用户数据异常", 9902);
+        }
+
+        EasSysUserinfo easSysUserinfo = optionalAdmin.get();
+        validatePassword(password, easSysUserinfo.getPasswd());
+
+        return easSysUserinfo;
+    }
+
+    private void validatePassword(String inputPassword, String encryptedPassword){
+        String decryptedPassword = passwordManager.decryptPassword(inputPassword);
+        System.out.println("前端解密来的decryptedPassword: " + decryptedPassword);
+        System.out.println("数据库查到的密码easSysUserinfo.getPasswd(): " + encryptedPassword);
+        if (!passwordEncoder.matches(decryptedPassword, encryptedPassword)) {
+            throw new EasException("密码不正确", 9901);
+        }
+    }
+}

+ 81 - 0
service/src/main/java/com/koobietech/eas/service/impl/EasEduCategoryServiceImpl.java

@@ -0,0 +1,81 @@
+package com.koobietech.eas.service.impl;
+
+import com.koobietech.eas.common.result.PageData;
+import com.koobietech.eas.mbg.mapper.EasEduCategoryMapper;
+import com.koobietech.eas.mbg.model.EasEduCategory;
+import com.koobietech.eas.mbg.model.EasEduCategoryExample;
+import com.koobietech.eas.service.EasEduCategoryService;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import java.util.Objects;
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+@Service
+public class EasEduCategoryServiceImpl implements EasEduCategoryService {
+
+    @Resource
+    EasEduCategoryMapper easEduCategoryMapper;
+
+    @Override
+    public int addEasEduCategory(EasEduCategory easEduCategory) {
+        easEduCategory.setCreateTime(new Date());
+        easEduCategory.setModifyTime(new Date());
+       return  easEduCategoryMapper.insert(easEduCategory);
+    }
+
+    @Override
+    public int updateEasEduCategory(EasEduCategory easEduCategory) {
+        return easEduCategoryMapper.updateByPrimaryKey( easEduCategory );
+    }
+
+    @Override
+    public int deleteById(int id) {
+        return easEduCategoryMapper.deleteByPrimaryKey( id );
+    }
+
+    @Override
+    public EasEduCategory selectById(Integer id) {
+        System.out.println( "ID:" + id );
+        return easEduCategoryMapper.selectByPrimaryKey( id );
+    }
+
+    @Override
+    public List<EasEduCategory> selectAll() {
+        return easEduCategoryMapper.selectByExample(null);
+    }
+
+    @Override
+    public PageData selectByCondition(EasEduCategory easEduCategory) {
+        EasEduCategoryExample easEduCategoryExample = new EasEduCategoryExample();
+        EasEduCategoryExample.Criteria criteria = easEduCategoryExample.createCriteria();
+        if ( Objects.nonNull(easEduCategory) ) {
+            if (Objects.nonNull(easEduCategory.getId())) {
+                criteria.andIdEqualTo(easEduCategory.getId());
+            }
+            if (StringUtils.hasText(easEduCategory.getName())) {
+                criteria.andNameLike("%" + easEduCategory.getName() + "%");
+            }
+            if (StringUtils.hasText(easEduCategory.getDescription())) {
+                criteria.andDescriptionLike("%" + easEduCategory.getDescription() + "%");
+            }
+            if (Objects.nonNull(easEduCategory.getCreateTime())) {
+                criteria.andCreateTimeGreaterThan(easEduCategory.getCreateTime());
+            }
+            if (Objects.nonNull(easEduCategory.getModifyTime())) {
+                criteria.andCreateTimeGreaterThan(easEduCategory.getModifyTime());
+            }
+            if (Objects.nonNull(easEduCategory.getCreateUid())) {
+                criteria.andCreateUidEqualTo(easEduCategory.getCreateUid());
+            }
+            if (StringUtils.hasText(easEduCategory.getDisabled())) {
+                criteria.andDisabledEqualTo(easEduCategory.getDisabled());
+            }
+        }
+        List<EasEduCategory> easEduCategories = easEduCategoryMapper.selectByExample(easEduCategoryExample);
+        long l = easEduCategoryMapper.countByExample(easEduCategoryExample);
+        return PageData.init( easEduCategories, l );
+    }
+}

+ 86 - 0
service/src/main/java/com/koobietech/eas/service/impl/EasEduSubjectsServiceImpl.java

@@ -0,0 +1,86 @@
+package com.koobietech.eas.service.impl;
+import com.koobietech.eas.common.result.PageData;
+import com.koobietech.eas.mbg.mapper.EasEduSubjectsMapper;
+import com.koobietech.eas.mbg.model.EasEduCategoryExample;
+import com.koobietech.eas.mbg.model.EasEduSubjects;
+import com.koobietech.eas.mbg.model.EasEduSubjectsExample;
+import com.koobietech.eas.service.EasEduSubjectsService;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import javax.annotation.Resource;
+import javax.xml.crypto.Data;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+@Service
+public class EasEduSubjectsServiceImpl implements EasEduSubjectsService {
+
+    @Resource
+    EasEduSubjectsMapper easEduSubjectsMapper;
+
+
+    @Override
+    public int addSubject(EasEduSubjects easEduSubjects) {
+        easEduSubjects.setCreateTime(new Date());
+        easEduSubjects.setModifyTime(new Date());
+        return easEduSubjectsMapper.insert(easEduSubjects);
+    }
+
+    @Override
+    public int updateSubjects(EasEduSubjects easEduSubjects) {
+        return easEduSubjectsMapper.updateByPrimaryKey(easEduSubjects);
+    }
+
+    @Override
+    public int deleteSubjects(int id) {
+        return easEduSubjectsMapper.deleteByPrimaryKey( id );
+    }
+
+    @Override
+    public EasEduSubjects selectById(Integer id) {
+        System.out.println("Id" + id);
+        return easEduSubjectsMapper.selectByPrimaryKey(id);
+    }
+
+    @Override
+    public List<EasEduSubjects> selectAll() {
+        return easEduSubjectsMapper.selectByExample(null);
+    }
+
+    @Override
+    public PageData selectByCondition(EasEduSubjects easEduSubjects) {
+        EasEduSubjectsExample easEduSubjectsExample = new EasEduSubjectsExample();
+        EasEduSubjectsExample.Criteria criteria = easEduSubjectsExample.createCriteria();
+        if ( Objects.nonNull(easEduSubjects) ) {
+            if (Objects.nonNull(easEduSubjects.getId())) {
+                criteria.andIdEqualTo(easEduSubjects.getId());
+            }
+            if (StringUtils.hasText(easEduSubjects.getName())) {
+                criteria.andNameLike("%" + easEduSubjects.getName() + "%");
+            }
+//            if (StringUtils.hasText(easEduSubjects.getDescription())) {
+//                criteria.andDescriptionLike("%" + easEduSubjects.getDescription() + "%");
+//            }
+            if (Objects.nonNull(easEduSubjects.getCategoryId())){
+                criteria.andCategoryIdEqualTo(easEduSubjects.getCategoryId());
+            }
+            if (Objects.nonNull(easEduSubjects.getCreateTime())) {
+                criteria.andCreateTimeGreaterThan(easEduSubjects.getCreateTime());
+            }
+            if (Objects.nonNull(easEduSubjects.getModifyTime())) {
+                criteria.andCreateTimeGreaterThan(easEduSubjects.getModifyTime());
+            }
+            if (Objects.nonNull(easEduSubjects.getCreateUid())) {
+                criteria.andCreateUidEqualTo(easEduSubjects.getCreateUid());
+            }
+            if (StringUtils.hasText(easEduSubjects.getDisabled())) {
+                criteria.andDisabledEqualTo(easEduSubjects.getDisabled());
+            }
+        }
+        List<EasEduSubjects> easEduSubjects1 = easEduSubjectsMapper.selectByExample(easEduSubjectsExample);
+        long l = easEduSubjectsMapper.countByExample(easEduSubjectsExample);
+        return PageData.init(easEduSubjects1,l);
+    }
+}

+ 103 - 0
service/src/main/java/com/koobietech/eas/service/impl/EasUserInfoServiceImpl.java

@@ -0,0 +1,103 @@
+package com.koobietech.eas.service.impl;
+
+import com.koobietech.eas.common.result.PageData;
+import com.koobietech.eas.mbg.mapper.EasSysUserinfoMapper;
+import com.koobietech.eas.mbg.model.EasSysUserinfo;
+import com.koobietech.eas.mbg.model.EasSysUserinfoExample;
+import com.koobietech.eas.service.EasUserInfoService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+@Service
+public class EasUserInfoServiceImpl implements EasUserInfoService {
+
+    @Resource
+    EasSysUserinfoMapper easSysUserinfoMapper;
+
+    final String userInfoName = "admin";
+    @Override
+    public Boolean add(EasSysUserinfo userinfo) {
+        //给用户信息设置默认密码
+        userinfo.setPasswd("123456");
+        userinfo.setCreateTime(new Date());
+        userinfo.setModifyTime(new Date());
+        return easSysUserinfoMapper.insert(userinfo) == 1;
+    }
+
+    public EasSysUserinfo getUserById(Long id){
+        return easSysUserinfoMapper.selectByPrimaryKey(id);
+    }
+
+    @Override
+    public Boolean delete(Long id) {
+        //判断是否为admin用户信息,admin用户信息禁止删除
+        EasSysUserinfo userinfo = getUserById(id);
+        if ( userinfo.getUsername().equals(userInfoName) ) {
+            return false;
+        }
+        return easSysUserinfoMapper.deleteByPrimaryKey(id) == 1;
+    }
+
+    @Override
+    public Boolean update(EasSysUserinfo userinfo) {
+        //判断是否为admin用户信息,admin用户信息中的Username禁止修改
+        EasSysUserinfo user = getUserById(userinfo.getId());
+        if ( user.getUsername().equals(userInfoName) ) {
+            userinfo.setUsername( user.getUsername() );
+        }
+        userinfo.setModifyTime(new Date());
+        return easSysUserinfoMapper.updateByPrimaryKey(userinfo) == 1;
+    }
+
+    @Override
+    public PageData query(EasSysUserinfo userinfo) {
+
+        EasSysUserinfoExample easSysUserinfoExample = new EasSysUserinfoExample();
+        EasSysUserinfoExample.Criteria criteria = easSysUserinfoExample.createCriteria();
+        if(Objects.nonNull(userinfo)) {
+            if(Objects.nonNull(userinfo.getId())){
+                criteria.andIdEqualTo(userinfo.getId());
+            }
+
+            if(Objects.nonNull(userinfo.getPhone())){
+                criteria.andPhoneEqualTo(userinfo.getPhone());
+            }
+
+            if(Objects.nonNull(userinfo.getPasswd())){
+                criteria.andPasswdEqualTo(userinfo.getPasswd());
+            }
+
+            if(Objects.nonNull(userinfo.getEmail())){
+                criteria.andEmailEqualTo(userinfo.getEmail());
+            }
+
+            if(Objects.nonNull(userinfo.getRelname())){
+                criteria.andRelnameEqualTo(userinfo.getRelname());
+            }
+
+            if(Objects.nonNull(userinfo.getUsername())){
+                criteria.andUsernameEqualTo(userinfo.getUsername());
+            }
+
+            if(Objects.nonNull(userinfo.getAddress())){
+                criteria.andAddressEqualTo(userinfo.getAddress());
+            }
+
+            if(Objects.nonNull(userinfo.getCreateTime())){
+                criteria.andCreateTimeEqualTo(userinfo.getCreateTime());
+            }
+
+        }
+        List<EasSysUserinfo> easSysUserinfos = easSysUserinfoMapper.selectByExample(easSysUserinfoExample);
+        long l = easSysUserinfoMapper.countByExample(easSysUserinfoExample);
+        PageData ret = new PageData();
+        ret.setData(easSysUserinfos);
+        ret.setTotal(l);
+        return ret;
+    }
+}

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

@@ -0,0 +1,51 @@
+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.service.RedisService;
+import com.koobietech.eas.dao.adminLoginPojo.UserDetail;
+import com.koobietech.eas.service.LoginRedisService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class LoginRedisServiceImpl implements LoginRedisService {
+
+    @Autowired
+    RedisService redisService;
+
+
+    @Override
+    public UserDetail checkToken(JwtUserDto jwtUserDto) {
+        String jwtKey = createJwtTokenKey(jwtUserDto);
+        //判断redis里面是否有这个key
+        if (!redisService.hasKey(jwtKey)) {
+            throw new EasException("token已过期");
+        }
+        return (UserDetail) redisService.get(jwtKey);
+    }
+
+    @Override
+    public UserDetail checkRefreshToken(JwtUserDto jwtUserDto) {
+        String jwtKey = createJwtTokenKey(jwtUserDto);
+
+        return (UserDetail) redisService.get(jwtKey);
+    }
+
+    @Override
+    public void loginSaveCache(String redisTokenKey, UserDetail userDetailInRedis, Integer token_expires) {
+        redisService.set(redisTokenKey, userDetailInRedis, token_expires);
+    }
+
+    @Override
+    public String createJwtTokenKey(JwtUserDto jwtUserDto) {
+        //根据jwtUserDto 生成jwtKey,格式为:eas_token_{id}_{username}_{type}
+        return "eas_token_" + jwtUserDto.getId() + "_" + jwtUserDto.getUsername() + "_" + jwtUserDto.getType();
+    }
+
+    @Override
+    public String createJwtRefreshTokenKey(JwtUserDto jwtUserDto) {
+        //根据jwtUserDto 生成jwtKey,格式为:eas_refresh_{id}_{username}_{type}
+        return "eas_refresh_" + jwtUserDto.getId() + "_" + jwtUserDto.getUsername() + "_" + jwtUserDto.getType();
+    }
+}