Selaa lähdekoodia

Merge branch 'master' of http://39.105.160.25:10880/wuheng/eas-system into cuidi

cuidi 1 vuosi sitten
vanhempi
commit
7b27385e28

+ 1 - 1
common/src/main/java/com/koobietech/eas/common/config/RedisConfig.java

@@ -10,7 +10,7 @@ import org.springframework.data.redis.serializer.RedisSerializer;
 @Configuration
 public class RedisConfig {
 
-    @Bean("CommonRedisTemplate")
+    @Bean
     @SuppressWarnings("all")
     public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){
         RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();

+ 1 - 2
common/src/main/java/com/koobietech/eas/common/service/impl/RedisServiceImpl.java

@@ -19,8 +19,7 @@ import java.util.concurrent.TimeUnit;
 @Service
 public class RedisServiceImpl implements RedisService {
 
-    @Autowired
-    @Qualifier("CommonRedisTemplate")
+    @Resource
     private RedisTemplate<String, Object> redisTemplate;
 
     @Override

+ 15 - 4
controller/src/main/java/com/koobietech/eas/controller/AdminLoginController.java

@@ -1,22 +1,26 @@
 package com.koobietech.eas.controller;
 
 
+import com.koobietech.eas.common.pojo.JwtUserDto;
 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 io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 
+@Tag(name = "登陆模块")
 @RestController
 public class AdminLoginController {
     @Resource
     private AdminLoginService adminLoginService;
 
-    @RequestMapping("/adminLogin")
+
+    @PostMapping("/adminLogin")
+    @Operation(summary = "管理员登录",  description = "用户名和密码为请求载荷,若登录成功,返回两token")
     public JsonResult adminLogin(@RequestBody AdminPojo adminPojo){
 
         LoginToken result = adminLoginService.adminLogin(adminPojo);
@@ -24,5 +28,12 @@ public class AdminLoginController {
         return JsonResult.data(result);
     }
 
+    @PostMapping("/refreshToken")
+    @Operation(summary = "刷新token",  description = "当token过期,在请求头中携带refresh token,若刷新成功,返回新的token和refresh token")
+    public JsonResult refreshToken(@RequestHeader("Authorization") String refreshToken) {
+        // 返回新的token和refresh token
+        return JsonResult.data(adminLoginService.refreshToken(refreshToken));
+    }
+
 
 }

+ 114 - 0
controller/src/main/java/com/koobietech/eas/controller/EasEduClassController.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.EasEduClass;
+import com.koobietech.eas.mbg.model.EasEduSubjects;
+import com.koobietech.eas.service.EasEduClassService;
+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.management.ValueExp;
+import java.util.List;
+
+@RestController
+@Tag(name = "班级控制器")
+public class EasEduClassController {
+
+    @Resource
+    EasEduClassService easEduClassService;
+
+    /**
+     * 添加班级类
+     * @param easEduClass
+     * @return
+     */
+    @PostMapping("/addClass")
+    @Operation(summary = "增加班级类" , description = "用于增加班级类")
+    public JsonResult addClass(@RequestBody  EasEduClass easEduClass){
+
+        int add_i = easEduClassService.addClass(easEduClass);
+        return JsonResult.ok("班级类添加成功");
+    }
+
+    /**
+     * 修改班级类信息
+     * @param easEduClass
+     * @return
+     */
+    @PutMapping(value = "/updateClass")
+    @Operation(summary = "更新班级类",description = "用于修改班级类信息")
+    public JsonResult updateClass(@RequestBody EasEduClass easEduClass){
+        int update_i = easEduClassService.updateClass(easEduClass);
+        if (update_i > 0){
+            return JsonResult.ok("修改成功!");
+        }else {
+            return JsonResult.fail("修改失败");
+        }
+    }
+
+    /**
+     * 删除班级类
+     * @param id
+     * @return
+     */
+    @DeleteMapping(value = "/deleteClass/{id}")
+    @Operation(summary = "删除班级类",description = "用于根据 id 删除班级类")
+    public JsonResult deleteClass(@PathVariable Long id ){
+        int delete_i = easEduClassService.deleteClass(id);
+        if (delete_i > 0){
+            return JsonResult.ok();
+        }else {
+            return JsonResult.fail();
+        }
+    }
+
+    /**
+     * 通过 id 查询班级类
+     * @param id
+     * @return
+     */
+    @GetMapping(value = "/selectId")
+    @Operation(summary = "id 查询班级类" , description = "通过id查询班级类")
+    public JsonResult selectId( Long id ){
+        EasEduClass easEduClass = easEduClassService.selectId(id);
+        System.out.println(
+                Disabled.valueOf(easEduClass.getDisabled())
+        );
+        return JsonResult.data(easEduClass);
+    }
+
+    /**
+     * 查询所有的班级类
+     * @return
+     */
+    @GetMapping(value = "/selectTotal")
+    @Operation(summary = "查询所有的班级类",description = "用于查询所有的班级类")
+    public JsonResult selectTotal(){
+        List<EasEduClass> easEduClasses = easEduClassService.selectTotal();
+        return JsonResult.data(easEduClasses);
+    }
+
+    /**
+     * 通过条件查询班级类
+     * @param easEduClass
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    @PostMapping(value = "/selectCondition")
+    @Operation(summary = "根据条件进行查询班级类", description = "用于根据条件查询班级类")
+    public JsonPageResult selectCondition(@RequestBody EasEduClass easEduClass,
+                                            @RequestParam Integer pageNum, @RequestParam Integer pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        PageData data = easEduClassService.selectCondition(easEduClass);
+        return JsonPageResult.data(data);
+    }
+}

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

@@ -21,7 +21,6 @@ public class EasUserController {
     @PostMapping("/test")
     @Operation(summary = "控制器测试用例" , description = "用于演示Swagger配置注解")
     public List<EasSysStudent> test(@RequestBody EasEduSubjects easEduSubjects){
-
         return demoService.test( easEduSubjects );
     }
 

+ 1 - 3
security/src/main/java/com/koobietech/eas/security/filter/EasSecurityFilter.java

@@ -57,7 +57,7 @@ public class EasSecurityFilter extends OncePerRequestFilter {
                 ArrayList<SimpleGrantedAuthority> objects = new ArrayList<>();
 
                 // 遍历用户的权限列表
-                for (Permission adminPermission: permission) {
+                for (Permission adminPermission : permission) {
                     // 创建一个 SimpleGrantedAuthority 权限对象,并添加到集合中
                     SimpleGrantedAuthority authority = new SimpleGrantedAuthority(adminPermission.getDescription());
                     objects.add(authority);
@@ -70,9 +70,7 @@ public class EasSecurityFilter extends OncePerRequestFilter {
                 context.setAuthentication(authenticationToken);
             }
         }
-
         filterChain.doFilter(request, response);
     }
 
-
 }

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

@@ -2,8 +2,13 @@ package com.koobietech.eas.service;
 
 import com.koobietech.eas.common.result.JsonResult;
 import com.koobietech.eas.dao.Pojo.AdminPojo;
+import com.koobietech.eas.dao.adminLoginPojo.UserDetail;
 import com.koobietech.eas.dao.dto.LoginToken;
 
 public interface AdminLoginService {
     LoginToken adminLogin(AdminPojo adminPojo);
+
+    LoginToken refreshToken(String refreshToken);
+
+
 }

+ 23 - 0
service/src/main/java/com/koobietech/eas/service/EasEduClassService.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 com.koobietech.eas.mbg.model.EasEduClass;
+
+import java.util.List;
+
+public interface EasEduClassService {
+
+    int addClass(EasEduClass easEduClass);
+
+    int updateClass(EasEduClass easEduClass);
+
+    int deleteClass( Long id );
+
+    EasEduClass selectId( Long id );
+
+    List<EasEduClass> selectTotal();
+
+    PageData selectCondition(EasEduClass easEduClass );
+
+}

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

@@ -7,11 +7,13 @@ 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);
 
+    UserDetail loginGetCache(String newRedisTokenKey);
+
     String createJwtTokenKey(JwtUserDto jwtUserDto);
 
     String createJwtRefreshTokenKey(JwtUserDto jwtUserDto);
+
+    Boolean loginDeleteCache(String newRedisRefreshTokenKey);
 }

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

@@ -16,6 +16,7 @@ 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;
@@ -36,10 +37,14 @@ public class AdminLoginServiceImpl implements AdminLoginService {
     @Resource
     private JwtManager jwtManager;
 
+    // token过期时间 单位:s
+    private final Integer token_expires = 30;
+    private final Integer refreshToken_expires = 60;
+
     @Override
     public LoginToken adminLogin(AdminPojo adminPojo) {
         if (adminPojo.getUsername() == null || adminPojo.getPasswd() == null || adminPojo.getUsername().isEmpty() || adminPojo.getPasswd().isEmpty()) {
-            throw new EasException("用户不存在", 509);
+            throw new EasException("用户不存在", 412);
         }
 
         EasSysUserinfo easSysUserinfo = findAdminByUsername(adminPojo.getUsername(), adminPojo.getPasswd());
@@ -55,33 +60,58 @@ public class AdminLoginServiceImpl implements AdminLoginService {
         userDetailInRedis.setPermissions(adminLoginMapper.getUserPermissionsById(id));
         System.out.println("接收后" + userDetailInRedis);
 
-        // 先调用自定义sql查询用户详细信息、部门信息和权限信息
-        UserType userType = UserType.TEACHER;
-        if (userDetailInRedis.getUsername().equals("admin")) {
-            userType = UserType.ADMIN;
-        }
+            // 先调用自定义sql查询用户详细信息、部门信息 和 权限信息
+            UserType userType = UserType.TEACHER;
+            if (userDetailInRedis.getUsername().equals("admin")) {
+                userType = UserType.ADMIN;
+            }
+
+            // 生成token
+            JwtUserDto jwtUserDto = new JwtUserDto(userDetailInRedis.getUsername(), userDetailInRedis.getId(), userType);
+            String token = jwtManager.createJwt(jwtUserDto, token_expires);
+            String refreshToken = jwtManager.createJwt(jwtUserDto, refreshToken_expires);
 
-        // token过期时间
-        Integer token_expires = 30;
-        Integer refreshToken_expires = 60;
+            // 生成redis key
+            String redisTokenKey = loginRedisService.createJwtTokenKey(jwtUserDto);
+            String redisRefreshTokenKey = loginRedisService.createJwtRefreshTokenKey(jwtUserDto);
 
-        // 生成token
-        JwtUserDto jwtUserDto = new JwtUserDto(userDetailInRedis.getUsername(), userDetailInRedis.getId(), userType);
-        String token = jwtManager.createJwt(jwtUserDto, token_expires);
-        String refreshToken = jwtManager.createJwt(jwtUserDto, refreshToken_expires);
+            // 将token存入redis
+            loginRedisService.loginSaveCache(redisTokenKey, userDetailInRedis, token_expires);
+            loginRedisService.loginSaveCache(redisRefreshTokenKey, userDetailInRedis, refreshToken_expires);
 
-        // 生成redis key
-        String redisTokenKey = loginRedisService.createJwtTokenKey(jwtUserDto);
-        String redisRefreshTokenKey = loginRedisService.createJwtRefreshTokenKey(jwtUserDto);
+            // 登录成功
+            return new LoginToken(token, refreshToken);
+    }
+
+    @Override
+    public LoginToken refreshToken(String refreshToken) {
+        // 解析refresh token
+        JwtUserDto jwtUserDto = jwtManager.decodeJwt(refreshToken);
 
-        // 将token存入redis
-        loginRedisService.loginSaveCache(redisTokenKey, userDetailInRedis, token_expires);
-        loginRedisService.loginSaveCache(redisRefreshTokenKey, userDetailInRedis, refreshToken_expires);
+        //生成新的 刷新k值 (refresh_token)
+        String newRedisRefreshTokenKey = loginRedisService.createJwtRefreshTokenKey(jwtUserDto);
 
-        // 登录成功
-        return new LoginToken(token, refreshToken);
+        //查询redis里面有没有这个k值
+        UserDetail userDetailInRedis = loginRedisService.loginGetCache(newRedisRefreshTokenKey);
+        if (userDetailInRedis == null) {
+            throw new EasException("refresh token已过期", 412);
+        }
+        //如果不为空 那UserDetail里面就封装了用户的信息 生成新的token和refresh token
+        String newToken = jwtManager.createJwt(jwtUserDto, token_expires);
+        String newRefreshToken = jwtManager.createJwt(jwtUserDto, refreshToken_expires);
+
+        //生成新的k值 (token)
+        String newRedisTokenKey = loginRedisService.createJwtTokenKey(jwtUserDto);
+
+        // 更新Redis中的token和refresh token
+        loginRedisService.loginSaveCache(newRedisTokenKey, userDetailInRedis, token_expires);
+        loginRedisService.loginSaveCache(newRedisRefreshTokenKey, userDetailInRedis, refreshToken_expires);
+        return new LoginToken(newToken, newRefreshToken);
     }
 
+
+
+
     private EasSysUserinfo findAdminByUsername(String username, String password)  {
         EasSysUserinfoExample easSysUserinfoExample = new EasSysUserinfoExample();
         easSysUserinfoExample.createCriteria().andUsernameEqualTo(username);
@@ -98,11 +128,14 @@ public class AdminLoginServiceImpl implements AdminLoginService {
         }
 
         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);

+ 125 - 0
service/src/main/java/com/koobietech/eas/service/impl/EasEduClassServiceImpl.java

@@ -0,0 +1,125 @@
+package com.koobietech.eas.service.impl;
+
+import com.koobietech.eas.common.result.PageData;
+import com.koobietech.eas.mbg.mapper.EasEduClassMapper;
+import com.koobietech.eas.mbg.model.EasEduCategory;
+import com.koobietech.eas.mbg.model.EasEduCategoryExample;
+import com.koobietech.eas.mbg.model.EasEduClass;
+import com.koobietech.eas.mbg.model.EasEduClassExample;
+import com.koobietech.eas.service.EasEduClassService;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import javax.annotation.Resource;
+import javax.imageio.metadata.IIOMetadataFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+@Service
+public class EasEduClassServiceImpl implements EasEduClassService {
+
+    @Resource
+    EasEduClassMapper easEduClassMapper;
+    @Override
+    public int addClass(EasEduClass easEduClass) {
+        easEduClass.setCreateTime(new Date());
+        easEduClass.setModifyTime(new Date());
+        return easEduClassMapper.insert(easEduClass);
+    }
+
+    @Override
+    public int updateClass(EasEduClass easEduClass) {
+        return easEduClassMapper.updateByPrimaryKey( easEduClass );
+    }
+
+    @Override
+    public int deleteClass(Long id) {
+        return  easEduClassMapper.deleteByPrimaryKey( id );
+    }
+
+    @Override
+    public EasEduClass selectId(Long id) {
+        System.out.println("Id" + id);
+        return easEduClassMapper.selectByPrimaryKey(id);
+    }
+
+    @Override
+    public List<EasEduClass> selectTotal() {
+        return easEduClassMapper.selectByExample(null);
+    }
+
+    @Override
+    public PageData selectCondition(EasEduClass easEduClass) {
+        EasEduClassExample easEduClassExample = new EasEduClassExample();
+        EasEduClassExample.Criteria criteria = easEduClassExample.createCriteria();
+        if ( Objects.nonNull(easEduClass) ) {
+            if (Objects.nonNull(easEduClass.getId())) {
+                criteria.andIdEqualTo(easEduClass.getId());
+            }
+            if (StringUtils.hasText(easEduClass.getName())) {
+                criteria.andNameLike("%" + easEduClass.getName() + "%");
+            }
+            if (Objects.nonNull(easEduClass.getManageId()) && easEduClass.getManageId() > 0){
+                criteria.andManageIdEqualTo(easEduClass.getManageId());
+            }
+            if (Objects.nonNull(easEduClass.getAssistantId()) && easEduClass.getAssistantId() > 0){
+                criteria.andAssistantIdEqualTo(easEduClass.getAssistantId());
+            }
+            if (Objects.nonNull(easEduClass.getCreateTime())) {
+                criteria.andCreateTimeGreaterThan(easEduClass.getCreateTime());
+            }
+            if (Objects.nonNull(easEduClass.getModifyTime())) {
+                criteria.andCreateTimeGreaterThan(easEduClass.getModifyTime());
+            }
+            if (Objects.nonNull(easEduClass.getCreateUid()) && easEduClass.getCreateUid() > 0) {
+                criteria.andCreateUidEqualTo(easEduClass.getCreateUid());
+            }
+            if (StringUtils.hasText(easEduClass.getDisabled())) {
+                criteria.andDisabledEqualTo(easEduClass.getDisabled());
+            }
+        }
+        List<EasEduClass> easEduClasses = easEduClassMapper.selectByExample(easEduClassExample);
+        long l = easEduClassMapper.countByExample(easEduClassExample);
+        return PageData.init(easEduClasses,l);
+    }
+
+//    @Override
+//    public PageData selectCondition(EasEduClass easEduClass) {
+//        EasEduClassExample easEduClassExample = new EasEduClassExample();
+//        EasEduClassExample.Criteria criteria = easEduClassExample.createCriteria();
+//        if (Objects.nonNull(easEduClass)){
+//            if (Objects.nonNull(easEduClass.getId())){
+//                criteria.andIdEqualTo(easEduClass.getId());
+//            }
+//            if (StringUtils.hasText((easEduClass.getName()))){
+//                criteria.andNameLike("%" + easEduClass.getName() + "%");
+//            }
+//            if (Objects.nonNull(easEduClass.getManageId())){
+//                criteria.andManageIdEqualTo(easEduClass.getManageId());
+//            }
+//            if (Objects.nonNull(easEduClass.getAssistantId())){
+//                criteria.andManageIdEqualTo(easEduClass.getManageId());
+//            }
+//            if (Objects.nonNull(easEduClass.getCreateTime())){
+//                criteria.andCreateTimeGreaterThan(easEduClass.getCreateTime());
+//            }
+//            if (Objects.nonNull(easEduClass.getModifyTime())){
+//                criteria.andModifyTimeGreaterThan(easEduClass.getModifyTime());
+//            }
+//            if (Objects.nonNull(easEduClass.getCreateUid())){
+//                criteria.andCreateUidEqualTo(easEduClass.getCreateUid());
+//            }
+//            if (StringUtils.hasText(easEduClass.getDisabled())){
+//                criteria.andDisabledEqualTo(easEduClass.getDisabled());
+//            }
+//        }
+//        List<EasEduClass> easEduClasses = easEduClassMapper.selectByExample(easEduClassExample);
+//        long l = easEduClassMapper.countByExample(easEduClassExample);
+//        PageData ret = new PageData();
+//        ret.setData(easEduClasses);
+//        ret.setTotal(l);
+//        return ret;
+//    }
+
+}

+ 20 - 8
service/src/main/java/com/koobietech/eas/service/impl/LoginRedisServiceImpl.java

@@ -6,13 +6,16 @@ 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.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+
 @Service
 public class LoginRedisServiceImpl implements LoginRedisService {
 
-    @Autowired
-    RedisService redisService;
+    @Resource
+    private RedisService redisService;
 
 
     @Override
@@ -26,15 +29,19 @@ public class LoginRedisServiceImpl implements LoginRedisService {
     }
 
     @Override
-    public UserDetail checkRefreshToken(JwtUserDto jwtUserDto) {
-        String jwtKey = createJwtTokenKey(jwtUserDto);
-
-        return (UserDetail) redisService.get(jwtKey);
+    public void loginSaveCache(String redisTokenKey, UserDetail userDetailInRedis, Integer token_expires) {
+        redisService.set(redisTokenKey, userDetailInRedis, token_expires);
     }
 
+
     @Override
-    public void loginSaveCache(String redisTokenKey, UserDetail userDetailInRedis, Integer token_expires) {
-        redisService.set(redisTokenKey, userDetailInRedis, token_expires);
+    public UserDetail loginGetCache(String newRedisTokenKey) {
+        //看看redis里面有没有这个key
+        if (redisService.hasKey(newRedisTokenKey)) {
+            //有的话,就从redis里面取出来
+            return (UserDetail) redisService.get(newRedisTokenKey);
+        }
+        return null;
     }
 
     @Override
@@ -48,4 +55,9 @@ public class LoginRedisServiceImpl implements LoginRedisService {
         //根据jwtUserDto 生成jwtKey,格式为:eas_refresh_{id}_{username}_{type}
         return "eas_refresh_" + jwtUserDto.getId() + "_" + jwtUserDto.getUsername() + "_" + jwtUserDto.getType();
     }
+
+    @Override
+    public Boolean loginDeleteCache(String newRedisRefreshTokenKey) {
+        return redisService.del(newRedisRefreshTokenKey);
+    }
 }