diff --git a/src/main/java/com/babybus/common/mapper/EvalRecordMapper.java b/src/main/java/com/babybus/common/mapper/EvalRecordMapper.java index 7c48bef0aae1ff13179a628802c3afeb1799dbe1..86664629ccee1218d597af1124db678c4025cf11 100644 --- a/src/main/java/com/babybus/common/mapper/EvalRecordMapper.java +++ b/src/main/java/com/babybus/common/mapper/EvalRecordMapper.java @@ -11,9 +11,11 @@ import java.util.List; @Repository public interface EvalRecordMapper { Integer insertEvalRecord(EvalRecord record); - EvalRecord getEvalRecord(Integer stuId, Integer judgeId); EvalRecord getEvalRecord(Integer stuId); void updateEvalRecord(EvalRecord evalRecord); List getEvalRecord(String type, Integer judgeId, String acYear); - EvalRecord getEvalByType(@Param("stuId") Integer stuId, @Param("type") String type); + Integer insertEvalRecordYU(EvalRecord record); + EvalRecord getEvalRecordYU(Integer stuId, Integer judgeId); + void updateEvalRecordYU(EvalRecord evalRecord); + EvalRecord getEvalByType(@Param("stuId") Integer stuId, @Param("matType") String matType); } diff --git a/src/main/java/com/babybus/wangdy55/component/XFilter.java b/src/main/java/com/babybus/wangdy55/component/XFilter.java index 3dc7f4d5ba21e5c93e6494294cf1fc4561999cb9..54531e0f49289b4c73bb0c7d09e686ac41ba61cf 100644 --- a/src/main/java/com/babybus/wangdy55/component/XFilter.java +++ b/src/main/java/com/babybus/wangdy55/component/XFilter.java @@ -3,6 +3,7 @@ package com.babybus.wangdy55.component; import com.babybus.wangdy55.mapper.NodeMapper; import com.babybus.yudingyi.util.JwtTokenUtil; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; import javax.servlet.*; import javax.servlet.annotation.WebFilter; @@ -10,6 +11,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +@Component @WebFilter(filterName = "xFilter", urlPatterns = "/api/**") public class XFilter implements Filter { @Autowired @@ -31,6 +33,7 @@ public class XFilter implements Filter { String accessToken = httpRequest.getHeader("Authorization"); if (accessToken == null) { httpResponse.sendError(HttpServletResponse.SC_UNAUTHORIZED, "用户未登录"); + System.out.println("用户未登录"); return; } // 若用户已经登录 @@ -38,6 +41,7 @@ public class XFilter implements Filter { // 若请求路径不存在 if (nodeMapper.getNode(path) == null) { httpResponse.sendError(HttpServletResponse.SC_NOT_FOUND, "找不到请求路径"); + System.out.println("找不到请求路径"); return; } // 若请求路径存在, 但是用户权限不足 @@ -45,6 +49,7 @@ public class XFilter implements Filter { System.out.println("用户权限不足"); // 发送权限不足的错误响应 httpResponse.sendError(HttpServletResponse.SC_FORBIDDEN, "用户权限不足"); + System.out.println("用户权限不足"); // 中断请求链,确保不再继续处理请求 return; } diff --git a/src/main/java/com/babybus/wangdy55/service/impl/NodeServiceImpl.java b/src/main/java/com/babybus/wangdy55/service/impl/NodeServiceImpl.java index 422f74c80248bf1f0cfaf5a77194a03ebd1a4541..9dc91dd6ecb68d2af496b523436033bef0e1075e 100644 --- a/src/main/java/com/babybus/wangdy55/service/impl/NodeServiceImpl.java +++ b/src/main/java/com/babybus/wangdy55/service/impl/NodeServiceImpl.java @@ -11,8 +11,6 @@ public class NodeServiceImpl implements NodeService { @Autowired NodeMapper mapper; - - public Boolean checkNode(String cardId, String path) throws Exception { Integer matched = mapper.getNode(path); if (matched == 0) { diff --git a/src/main/java/com/babybus/yudingyi/config/KaptchaConfig.java b/src/main/java/com/babybus/yudingyi/config/KaptchaConfig.java index 51b0bb4f96358e779a6e5c82ff00decd6d7bb062..6e9374193421157d3efb7d9f200219ffab1e4339 100644 --- a/src/main/java/com/babybus/yudingyi/config/KaptchaConfig.java +++ b/src/main/java/com/babybus/yudingyi/config/KaptchaConfig.java @@ -25,4 +25,4 @@ public class KaptchaConfig { return defaultKaptcha; } -} \ No newline at end of file +} diff --git a/src/main/java/com/babybus/yudingyi/controller/AuthController.java b/src/main/java/com/babybus/yudingyi/controller/AuthController.java index 37427230e273fcf11b9fafad1203fdf8fb97bcf8..e2d81ec6055d62c7f483c4243e9ed88fd1b12032 100644 --- a/src/main/java/com/babybus/yudingyi/controller/AuthController.java +++ b/src/main/java/com/babybus/yudingyi/controller/AuthController.java @@ -131,6 +131,7 @@ public class AuthController { // 将用户信息保存到数据库 studentMapper.insertStudent(student); userMapper.insertUser(new User(0, studentVO.getCardId(), studentVO.getPassword(), 1)); + userMapper.insertRU(student.getCardId(), student.getRoleId()); }catch (Exception e) { // 处理插入失败的情况 System.out.println(e.getMessage()); @@ -162,6 +163,7 @@ public class AuthController { // 将用户信息保存到数据库 facultyMapper.insertFaculty(faculty); userMapper.insertUser(new User(0, facultyVO.getCardId(), facultyVO.getPassword(), roleId)); + userMapper.insertRU(faculty.getCardId(), faculty.getRoleId()); }catch (Exception e) { // 处理插入失败的情况 System.out.println(e.toString()); @@ -169,5 +171,5 @@ public class AuthController { } return CommonResult.success(faculty, "User registered successfully"); } - } + diff --git a/src/main/java/com/babybus/yudingyi/controller/ExportController.java b/src/main/java/com/babybus/yudingyi/controller/ExportController.java index 1a63b076bc8359e805dc7a6e1c822f16136ff699..2194a408f0fccd5dcafdb85c3bf3083b7eda27a8 100644 --- a/src/main/java/com/babybus/yudingyi/controller/ExportController.java +++ b/src/main/java/com/babybus/yudingyi/controller/ExportController.java @@ -59,18 +59,6 @@ public class ExportController { List eval_results = exportService.exportTable(table_name); System.out.println(eval_results); -// // 保存文件到本地的路径和文件名 -// File outputFile = new File(fileName); -// FileOutputStream fos = new FileOutputStream(outputFile); -// -// -// // Write the Excel data to the file -// EasyExcel.write(fos, ExportEvalResult.class) -// .sheet(sheetName) -// .doWrite(eval_results); -// -// System.out.println("成功导出到本地" + fileName); - // Create the Excel file in memory ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); EasyExcel.write(outputStream, ExportEvalResult.class) diff --git a/src/main/java/com/babybus/yudingyi/controller/MyFilter.java b/src/main/java/com/babybus/yudingyi/controller/MyFilter.java index cb58575ecd2f6be4ae0740cad589b9953422f7a6..97e508e87ff8a9dd06194a51b77f4bd6f49fb270 100644 --- a/src/main/java/com/babybus/yudingyi/controller/MyFilter.java +++ b/src/main/java/com/babybus/yudingyi/controller/MyFilter.java @@ -1,5 +1,7 @@ package com.babybus.yudingyi.controller; +import com.babybus.yudingyi.mapper.UserMapper; +import com.babybus.yudingyi.model.User; import com.babybus.yudingyi.service.RedisService; import com.babybus.yudingyi.util.JwtTokenUtil; import org.springframework.beans.factory.annotation.Autowired; @@ -36,10 +38,10 @@ public class MyFilter implements Filter { } @Autowired - RedisService redisService; + JwtTokenUtil jwtTokenUtil; @Autowired - JwtTokenUtil jwtTokenUtil; + UserMapper userMapper; @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) @@ -50,6 +52,7 @@ public class MyFilter implements Filter { // 在此处执行过滤器逻辑 System.out.println("=====doFilter====="); + System.out.println(request.toString()); // 获取请求中的 Token String token = httpRequest.getHeader("Authorization"); System.out.println("获取token:" + token); @@ -64,6 +67,12 @@ public class MyFilter implements Filter { "/auth/facultyRegister", "/auth/captcha", "/favicon.ico", + "/menu", + "/export/view", + "/export/table", + "/api/upload", + "/api/download", +// "/research/check", }; //判断本次请求是否需要处理, 如果不需要处理,则直接放行 @@ -74,44 +83,47 @@ public class MyFilter implements Filter { return; } -// List roleList = userMapper.findRole(new BigInteger(user_id)); -// -// Set permissionCode = new HashSet<>(); -// -// for (BigInteger s : roleList) { -// permissionCode.add(userMapper.getPermissionInfo(s)); -// } -// -// List roles = new ArrayList<>(); -// for (BigInteger role : roleList) { -// roles.add(userMapper.getRoleName(role)); -// } -// -// Set permissions = new HashSet<>(); -// for (BigInteger code : permissionCode) { -// permissions.add(userMapper.getPermissions(code)); -// } -// -// // 根据用户角色进行权限判断 -// if (permissions.contains(node)) { -// // 用户具有读取权限,继续处理请求 -// chain.doFilter(httpRequest, httpResponse); -// } else { -// // 用户没有足够的权限,返回错误信息或者进行相应的拦截处理 -// httpResponse.setStatus(HttpServletResponse.SC_FORBIDDEN); -// httpResponse.getWriter().write("Insufficient permissions"); -// } + if(node.contains("/api/downloadFiles")){ + chain.doFilter(httpRequest, httpResponse); + return; + } + // 如果是OPTIONS请求并且不包含Authorization头,则跳过预检请求 + if (httpRequest.getMethod().equalsIgnoreCase("OPTIONS") && token == null) { + System.out.println("跳过预检请求"); + chain.doFilter(httpRequest, httpResponse); + return; + } + + // 继续处理其他请求 // 解析Authorization请求头中的JWT令牌 Bearer access_token String cardId = jwtTokenUtil.getUsernameFromToken(token); System.out.println("学工号:" + cardId); // 在此处执行 RBAC 权限判断逻辑 - if (redisService.isValidToken(cardId)) { + int count = userMapper.getRowCount(); + if(count == 0){ + System.out.println("user_path尚未初始化。进行初始化。"); + List cardIds = userMapper.getCardIds(); + System.out.println("所有card_id:" + cardIds); + for (String id : cardIds) { + System.out.println("cardId: " + id); + List paths = userMapper.initPath(id); + System.out.println("paths: " + paths); + if(paths.size() == 0){ + continue; + } + int num = userMapper.insertUP(id,paths); + System.out.println("插入" + num + "条记录。"); + } + } + User user = userMapper.getUserByCardId(cardId); + if (user != null) { // 根据 Token 获取用户信息,例如用户权限 System.out.println("用户合法"); - List permissionUrls = redisService.getListValues(cardId); + List permissionPaths = userMapper.findPath(cardId); + System.out.println("权限:" + permissionPaths); // 根据用户角色进行权限判断 - if (permissionUrls.contains(node)) { + if (permissionPaths.contains(node)) { System.out.println("用户具有读取权限,继续处理请求"); // 用户具有读取权限,继续处理请求 chain.doFilter(httpRequest, httpResponse); @@ -124,10 +136,8 @@ public class MyFilter implements Filter { }else { // Token 无效,返回错误信息或者进行相应的拦截处理 httpResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED); - httpResponse.getWriter().write("Invalid token"); + httpResponse.getWriter().write("Invalid token 用户未登录"); } -// //继续处理请求 -// chain.doFilter(httpRequest, httpResponse); } // 可以在init()和destroy()方法中进行一些初始化和清理操作 diff --git a/src/main/java/com/babybus/yudingyi/controller/PracticeController.java b/src/main/java/com/babybus/yudingyi/controller/PracticeController.java index 3adb5cff8c9c8590979c956756f53826c3b52fa2..6c9dad09f4681f0ac1242c0f7edbf42b82c8cf98 100644 --- a/src/main/java/com/babybus/yudingyi/controller/PracticeController.java +++ b/src/main/java/com/babybus/yudingyi/controller/PracticeController.java @@ -11,6 +11,7 @@ import com.babybus.yudingyi.model.Practice; import com.babybus.yudingyi.service.EvalRecordService; import com.babybus.yudingyi.service.PracticeService; import com.babybus.yudingyi.util.JwtTokenUtil; +import io.jsonwebtoken.ExpiredJwtException; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -91,7 +92,7 @@ public class PracticeController { Random random = new Random(); Faculty faculty = facultyList.get(random.nextInt(facultyList.size())); evalRecord = new EvalRecord(0, student.getId(), student.getCardId(), student.getName(), faculty.getId(), faculty.getCardId(), practice.getAcYear(), "社会实践", "待审核", 0, new Date(), "无评语"); - evalRecordService.insertEvalRecord(evalRecord); + evalRecordService.insertEvalRecordYU(evalRecord); } return CommonResult.success(practice, "请求成功!" + msg); @@ -167,18 +168,24 @@ public class PracticeController { msg = "共更新了" + practiceService.givePracticeScore(judge[0], judge[1]) + "条数据。"; System.out.println(msg); - EvalRecord evalRecord = evalRecordService.getEvalRecord(judge[0], faculty.getId()); + EvalRecord evalRecord = evalRecordService.getEvalRecordYU(judge[0], faculty.getId()); Student student = studentService.getStudentById(judge[0]); List practiceList = practiceService.getPracticeList(student.getId()); if(evalRecord == null){ evalRecord = new EvalRecord(0, judge[0], student.getCardId(), student.getName(), faculty.getId(), faculty.getCardId(), practiceList.get(0).acYear, "社会实践", "已通过", judge[1], new Date(), "无评语"); - evalRecordService.insertEvalRecord(evalRecord); + evalRecordService.insertEvalRecordYU(evalRecord); } else{ evalRecord = new EvalRecord(evalRecord.getId(), judge[0], student.getCardId(), student.getName(), faculty.getId(), faculty.getCardId(), practiceList.get(0).acYear, "社会实践", "已通过", judge[1], new Date(), "无评语"); - evalRecordService.updateEvalRecord(evalRecord); + evalRecordService.updateEvalRecordYU(evalRecord); } - } catch (Exception e){ + } +// catch (ExpiredJwtException EJ){ +// System.out.println("token过期:" + EJ.getMessage()); +// String refreshtoken = jwtTokenUtil.generateRefreshToken(card_id); +// return CommonResult.error(100, refreshtoken); +// } + catch (Exception e){ System.out.println("后端打分错误:" + e.getMessage()); return CommonResult.error(500, "后端打分错误"); } diff --git a/src/main/java/com/babybus/yudingyi/controller/ResearchController.java b/src/main/java/com/babybus/yudingyi/controller/ResearchController.java index eca9ec10989ceb962e0ebdf3235812140ea0f1f3..bfca3fe39f604870053a73511b09f76b35355f95 100644 --- a/src/main/java/com/babybus/yudingyi/controller/ResearchController.java +++ b/src/main/java/com/babybus/yudingyi/controller/ResearchController.java @@ -58,7 +58,7 @@ public class ResearchController { Random random = new Random(); Faculty faculty = facultyList.get(random.nextInt(facultyList.size())); evalRecord = new EvalRecord(0, student.getId(), student.getCardId(), student.getName(), faculty.getId(), faculty.getCardId(), research.getAcYear(), "科研成果", "待审核", 0, new Date(), "无评语"); - evalRecordService.insertEvalRecord(evalRecord); + evalRecordService.insertEvalRecordYU(evalRecord); } } catch (Exception e ){ @@ -114,15 +114,15 @@ public class ResearchController { System.out.println(Arrays.toString(judge)); msg = "共更新了" + researchService.giveResearchScore(judge[0], judge[1]) + "条数据。"; System.out.println(msg); - EvalRecord evalRecord = evalRecordService.getEvalRecord(judge[0], faculty.getId()); + EvalRecord evalRecord = evalRecordService.getEvalRecordYU(judge[0], faculty.getId()); Student student = studentService.getStudentById(judge[0]); List researchList = researchService.getResearchList(student.getId()); if(evalRecord == null){ evalRecord = new EvalRecord(0, judge[0], student.getCardId(), student.getName(), faculty.getId(), faculty.getCardId(), researchList.get(0).acYear, "科研成果", "已通过", judge[1], new Date(), "无评语"); - evalRecordService.insertEvalRecord(evalRecord); + evalRecordService.insertEvalRecordYU(evalRecord); } else{ evalRecord = new EvalRecord(evalRecord.getId(), judge[0], student.getCardId(), student.getName(), faculty.getId(), faculty.getCardId(), researchList.get(0).acYear, "科研成果", "已通过", judge[1], new Date(), "无评语"); - evalRecordService.updateEvalRecord(evalRecord); + evalRecordService.updateEvalRecordYU(evalRecord); } } catch (Exception e){ e.printStackTrace(); diff --git a/src/main/java/com/babybus/yudingyi/mapper/UserMapper.java b/src/main/java/com/babybus/yudingyi/mapper/UserMapper.java index 3a19682a574621e97eaeee6d15188fafeeb2b723..7ff9165536c4d992ee658a8d8ace025b24ea08bb 100644 --- a/src/main/java/com/babybus/yudingyi/mapper/UserMapper.java +++ b/src/main/java/com/babybus/yudingyi/mapper/UserMapper.java @@ -3,6 +3,7 @@ package com.babybus.yudingyi.mapper; import com.babybus.yudingyi.model.User; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import org.springframework.stereotype.Repository; import java.util.List; @@ -13,4 +14,10 @@ public interface UserMapper { Integer insertUser(User user); List getUserList(); User getUserByCardId(@Param("card_id") String card_id); + List initPath(@Param("cardId") String cardId); + Integer insertUP(@Param("cardId") String cardId, @Param("paths") List paths); + List findPath(@Param("cardId") String cardId); + int getRowCount(); + List getCardIds(); + void insertRU(@Param("cardId") String cardId, @Param("roleId") int roleId); } diff --git a/src/main/java/com/babybus/yudingyi/model/VO/Auth/FacultyVO.java b/src/main/java/com/babybus/yudingyi/model/VO/Auth/FacultyVO.java index b2137316f8bac57523789d1c04b380f4616cd902..78481489122ad4b729b045f54a7d1e0ce0ca971a 100644 --- a/src/main/java/com/babybus/yudingyi/model/VO/Auth/FacultyVO.java +++ b/src/main/java/com/babybus/yudingyi/model/VO/Auth/FacultyVO.java @@ -16,6 +16,5 @@ public class FacultyVO { private String email; private String depart; private String job; - // Getters and Setters } diff --git a/src/main/java/com/babybus/yudingyi/service/EvalRecordService.java b/src/main/java/com/babybus/yudingyi/service/EvalRecordService.java index 6e2773ca837948b721772bdd407e78ab3bd29056..9a7cc077e028ff9c1c45177c4ae39eb8208b6d48 100644 --- a/src/main/java/com/babybus/yudingyi/service/EvalRecordService.java +++ b/src/main/java/com/babybus/yudingyi/service/EvalRecordService.java @@ -12,19 +12,19 @@ public class EvalRecordService { this.evalRecordMapper = evalRecordMapper; } - public EvalRecord getEvalRecord(Integer stuId, Integer judgeId) { - return evalRecordMapper.getEvalRecord(stuId, judgeId); + public EvalRecord getEvalByType(Integer stuId, String matType) { + return evalRecordMapper.getEvalByType(stuId, matType); } - public EvalRecord getEvalByType(Integer stuId, String type) { - return evalRecordMapper.getEvalByType(stuId, type); + public EvalRecord getEvalRecordYU(Integer stuId, Integer judgeId) { + return evalRecordMapper.getEvalRecordYU(stuId, judgeId); } - public void updateEvalRecord(EvalRecord evalRecord) { - evalRecordMapper.updateEvalRecord(evalRecord); + public void updateEvalRecordYU(EvalRecord evalRecord) { + evalRecordMapper.updateEvalRecordYU(evalRecord); } - public void insertEvalRecord(EvalRecord evalRecord) { - evalRecordMapper.insertEvalRecord(evalRecord); + public void insertEvalRecordYU(EvalRecord evalRecord) { + evalRecordMapper.insertEvalRecordYU(evalRecord); } } diff --git a/src/main/java/com/babybus/yudingyi/service/UserService.java b/src/main/java/com/babybus/yudingyi/service/UserService.java index 959e8778fd0fcdc5b23c7db1154672a5d4a5f25c..4dc9f4421fb1d171e7c7cdc02231c98c1bfc1b27 100644 --- a/src/main/java/com/babybus/yudingyi/service/UserService.java +++ b/src/main/java/com/babybus/yudingyi/service/UserService.java @@ -12,11 +12,9 @@ import java.util.List; public class UserService { @Autowired UserMapper userMapper; - Integer insertUser(User user) { return userMapper.insertUser(user); } - List getUserList() { return userMapper.getUserList(); } diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 98c86312c7ed933f0d06bc076150abb27735480d..b9122beab6c577792aae2625bcc010376bb3e322 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -57,6 +57,7 @@ jwt: expiration: 6048000 file: - upload-path: /home/ubuntu/image - allowed-types: jpg,png +# upload-path: /home/ubuntu/image + upload-path: D:/storage/ + allowed-types: jpg,png,pdf,docx,txt max-size: 10485760 # 10MB \ No newline at end of file diff --git a/src/main/resources/common/mappers/EvalRecordMapper.xml b/src/main/resources/common/mappers/EvalRecordMapper.xml index 670aff34fb8cd64fd26dddde5bde03d1b5298e37..4b43128bac124b244b00847be5186942d93514ac 100644 --- a/src/main/resources/common/mappers/EvalRecordMapper.xml +++ b/src/main/resources/common/mappers/EvalRecordMapper.xml @@ -3,24 +3,33 @@ - + + + + + + + + + + + + + + + + - + + - SELECT LAST_INSERT_ID() @@ -48,4 +57,37 @@ WHERE id = #{id} + + + + + SELECT LAST_INSERT_ID() + + INSERT INTO eval_records (stu_id, stu_card_id, stu_name, judge_id, judge_card_id, ac_year, mat_type, eval_status, score, eval_time, remark) + VALUES (#{stuId}, #{stuCardId}, #{stuName}, #{judgeId}, #{judgeCardId}, #{acYear}, #{matType}, + #{evalStatus}, #{score}, #{evalTime}, #{remark}) + + + + + + + + UPDATE eval_records + SET stu_card_id = #{stuCardId}, judge_card_id = #{judgeCardId}, ac_year = #{acYear}, + mat_type = #{matType}, eval_status = #{evalStatus}, score = #{score}, + eval_time = #{evalTime}, remark = #{remark} + WHERE stu_id = #{stuId} AND judge_id = #{judgeId} + + \ No newline at end of file diff --git a/src/main/resources/yudingyi/mappers/UserMapper.xml b/src/main/resources/yudingyi/mappers/UserMapper.xml index 2ee46a84f0bd3571ebb7472532137b5cf2b3b8c0..1fa8ee726aeb8b609dabd380c74d93b7ea5416ba 100644 --- a/src/main/resources/yudingyi/mappers/UserMapper.xml +++ b/src/main/resources/yudingyi/mappers/UserMapper.xml @@ -27,4 +27,38 @@ SELECT * FROM users WHERE card_id = #{card_id} + + + + + + + + + + INSERT INTO user_path (card_id, path) + VALUES + + (#{cardId}, #{item}) + + + + + INSERT INTO role_user (role_id, card_id) + VALUES (#{roleId}, #{cardId}) + + \ No newline at end of file