From d9b4f4a73145916bb3aee32152f233cad13623c2 Mon Sep 17 00:00:00 2001 From: MDSMO Date: Wed, 20 Aug 2025 09:03:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=BF=E8=88=8D=E7=AE=A1=E7=90=86=E5=AD=A6?= =?UTF-8?q?=E7=94=9F=E6=89=93=E5=8D=A1=E6=A8=A1=E5=9D=97=EF=BC=8C=E5=AF=B9?= =?UTF-8?q?=E5=AD=A6=E5=8A=A1=E5=92=8C=E8=BE=85=E5=AF=BC=E5=91=98=E8=A7=92?= =?UTF-8?q?=E8=89=B2=E6=9F=A5=E7=9C=8B=E5=AD=A6=E7=94=9F=E6=89=93=E5=8D=A1?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E5=81=9A=E4=BA=86=E6=95=B0=E6=8D=AE=E7=AD=9B?= =?UTF-8?q?=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/srs/dormitory/domain/DmsStuDaily.java | 6 ++ .../mapper/dormitory/DmsStuDailyMapper.xml | 15 +++- .../dormitory/DmsStuDailyController.java | 74 +++++++++++++++++++ 3 files changed, 91 insertions(+), 4 deletions(-) diff --git a/dms-dormitory/src/main/java/com/srs/dormitory/domain/DmsStuDaily.java b/dms-dormitory/src/main/java/com/srs/dormitory/domain/DmsStuDaily.java index fc97612..cce5fb7 100644 --- a/dms-dormitory/src/main/java/com/srs/dormitory/domain/DmsStuDaily.java +++ b/dms-dormitory/src/main/java/com/srs/dormitory/domain/DmsStuDaily.java @@ -116,7 +116,13 @@ public class DmsStuDaily{ @TableField(exist = false) private String teacherName; + @TableField(exist = false) + private String teacherNo; + @TableField(exist = false) private String idCard; + @TableField(exist = false) + private String roleType; + } diff --git a/dms-dormitory/src/main/resources/mapper/dormitory/DmsStuDailyMapper.xml b/dms-dormitory/src/main/resources/mapper/dormitory/DmsStuDailyMapper.xml index 3bef976..d7a8a77 100644 --- a/dms-dormitory/src/main/resources/mapper/dormitory/DmsStuDailyMapper.xml +++ b/dms-dormitory/src/main/resources/mapper/dormitory/DmsStuDailyMapper.xml @@ -93,9 +93,16 @@ and b.major_id = #{majorId} and b.class_id = #{classId} and b.grade_id = #{gradeId} - and b.stu_name like concat('%',#{stuName},'%') - and b.teacher_name like concat('%',#{teacherName},'%') - and AES_DECRYPT(UNHEX(b.id_card),'zhxg') = #{idCard} + + and b.stu_name like concat('%',#{stuName},'%') + + and b.teacher_name like concat('%',#{teacherName},'%') + + and b.t_no = #{teacherNo} + + and b.dept_name = #{deptName} + + and AES_DECRYPT(UNHEX(b.id_card),'zhxg') = #{idCard} order by a.id desc @@ -212,7 +219,7 @@ END ELSE '' END - ) AS `log` + ) AS `log` FROM rt_stu_leave_operation_records AS a LEFT JOIN rt_stu_leave_application AS b ON a.leave_application_id = b.leave_application_id LEFT JOIN view_stu_info AS c ON b.stu_no = c.stu_no diff --git a/srs-admin/src/main/java/com/srs/web/controller/dormitory/DmsStuDailyController.java b/srs-admin/src/main/java/com/srs/web/controller/dormitory/DmsStuDailyController.java index 1a500df..a12b389 100644 --- a/srs-admin/src/main/java/com/srs/web/controller/dormitory/DmsStuDailyController.java +++ b/srs-admin/src/main/java/com/srs/web/controller/dormitory/DmsStuDailyController.java @@ -2,6 +2,7 @@ package com.srs.web.controller.dormitory; import java.util.List; import java.util.Map; +import java.util.HashMap; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -21,6 +22,9 @@ import com.srs.common.utils.poi.ExcelUtil; import com.srs.common.enums.BusinessType; import com.srs.common.annotation.Log; import com.srs.common.core.page.TableDataInfo; +import com.srs.common.utils.SecurityUtils; +import com.srs.common.core.domain.entity.SysUser; +import com.srs.system.service.ISysUserService; /** * 学生宿舍打卡Controller @@ -35,6 +39,9 @@ public class DmsStuDailyController extends BaseController { @Autowired private IDmsStuDailyService dmsStuDailyService; + @Autowired + private ISysUserService userService; + @GetMapping("/countDeptCard") public AjaxResult countDeptCard(){ List> list = dmsStuDailyService.countDeptCard(); @@ -75,11 +82,78 @@ public class DmsStuDailyController extends BaseController { @ApiOperation("查询学生宿舍打卡列表") public TableDataInfo listView(DmsStuDaily param) { + + // 获取当前用户信息 + String username = getUsername(); + SysUser currentUser = userService.selectUserByUserName(username); + + // 根据用户角色设置数据过滤条件 + if (currentUser != null) { + // 获取用户角色组 + String roleGroup = userService.selectUserRoleGroup(username); + + // 检查是否同时拥有学务干事和辅导员角色 + boolean isDeptRole = roleGroup.contains("学务干事") || roleGroup.contains("学务办初审"); + boolean isTeacherRole = roleGroup.contains("辅导员"); + + // 根据前端传递的roleType参数进行过滤 + if (isDeptRole && isTeacherRole) { + // 同时拥有两个角色,根据roleType参数决定查看哪种数据 + if ("teacher".equals(param.getRoleType())) { + // 查看个人班级数据 + param.setTeacherNo(username); + } else { + // 默认查看学院数据 + if (currentUser.getDept() != null) { + param.setDeptName(currentUser.getDept().getDeptName()); + } + } + } else if (isDeptRole) { + // 只有学务干事角色,查看学院数据 + if (currentUser.getDept() != null) { + param.setDeptName(currentUser.getDept().getDeptName()); + } + } else if (isTeacherRole) { + // 只有辅导员角色,查看个人班级数据 + param.setTeacherNo(username); + } + // 超级管理员可以查看所有数据,不设置过滤条件 + } + startPage(); List list = dmsStuDailyService.listView(param); return getDataTable(list); } + /** + * 主要用于前端不同角色的切换返回不同的数据 + */ + @GetMapping("/checkRoles") + @ApiOperation("检查用户角色信息") + public AjaxResult checkUserRoles() { + String username = getUsername(); + String roleGroup = userService.selectUserRoleGroup(username); + SysUser currentUser = userService.selectUserByUserName(username); + + boolean isDeptRole = roleGroup.contains("学务干事"); + boolean isTeacherRole = roleGroup.contains("辅导员"); + boolean hasMultipleRoles = isDeptRole && isTeacherRole; + + Map roleInfo = new HashMap<>(); + roleInfo.put("hasMultipleRoles", hasMultipleRoles); + roleInfo.put("defaultRole", "dept"); // 默认显示学院数据 + roleInfo.put("isAdmin", SecurityUtils.isAdmin(SecurityUtils.getUserId())); + roleInfo.put("isXuewu", roleGroup.contains("学务干事")); + roleInfo.put("isFudaoyuan", roleGroup.contains("辅导员")); + + // 添加用户部门信息 + if (currentUser != null && currentUser.getDept() != null) { + roleInfo.put("userDeptName", currentUser.getDept().getDeptName()); + } + + return AjaxResult.success(roleInfo); + } + @ApiOperation("学生打卡") @PostMapping("/doCard")