Crazy 8 months ago
parent
commit
72ce30c254

+ 3 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/dept/DeptListReqVO.java

@@ -13,4 +13,7 @@ public class DeptListReqVO {
     @Schema(description = "展示状态,参见 CommonStatusEnum 枚举类", example = "1")
     private Integer status;
 
+    @Schema(description = "负责人id")
+    private Long leaderUserId;
+
 }

+ 1 - 2
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/dept/DeptRespVO.java

@@ -50,8 +50,7 @@ public class DeptRespVO {
     @Schema(description = "成果图片列表")
     private List<String> userAchievements;
 
-
-    @Schema(description = "用户")
+    @Schema(description = "负责人信息")
     private AdminUserDO user;
 
 }

+ 1 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserProfileController.java

@@ -62,6 +62,7 @@ public class UserProfileController {
         // 获得用户基本信息
         AdminUserDO user = userService.getUser(getLoginUserId());
         Long supervisorId =user.getSupervisorId();
+        //获取用户导师的信息
         if (supervisorId!=null){
             AdminUserDO supervisorUser = userService.getUser(supervisorId);
             String supervisor = supervisorUser.getNickname();

+ 3 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/profile/UserProfileRespVO.java

@@ -96,4 +96,7 @@ public class UserProfileRespVO {
     @Schema(description = "导师名称")
     private String supervisor;
 
+    @Schema(description = "照片url")
+    private String photoUrl;
+
 }

+ 52 - 39
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/studentAttendance/StudentAttendanceMapper.java

@@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
+import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.studentAttendance.StudentAttendanceDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
@@ -19,6 +20,7 @@ import java.time.LocalDateTime;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
+import java.util.Set;
 
 /**
  * 学生考勤记录 Mapper
@@ -29,57 +31,71 @@ import java.util.List;
 public interface StudentAttendanceMapper extends BaseMapperX<StudentAttendanceDO> {
 
     //根据登录人员不同显示全部考勤记录
-    default PageResult<StudentAttendanceDO> selectPage(StudentAttendancePageReqVO reqVO) {
+    default PageResult<StudentAttendanceDO> selectPage(StudentAttendancePageReqVO reqVO, Set<Long> roleIds,Long loginId) {
         Long dept_id = SecurityFrameworkUtils.getLoginUserDeptId();
-        Long loginId =SecurityFrameworkUtils.getLoginUserId();
-        List<Long> roleIds =selectUserRoleId(loginId);
         // 创建查询包装器
-        LambdaQueryWrapperX<StudentAttendanceDO> queryWrapper = new LambdaQueryWrapperX<>();
+        MPJLambdaWrapperX<StudentAttendanceDO> queryWrapper = new MPJLambdaWrapperX<>();
 
         // 添加查询条件
-        queryWrapper.eqIfPresent(StudentAttendanceDO::getStudentId, reqVO.getStudentId())
-                .likeIfPresent(StudentAttendanceDO::getStudentName, reqVO.getStudentName())
-                .eqIfPresent(StudentAttendanceDO::getDeptId, reqVO.getDeptId())
-                .betweenIfPresent(StudentAttendanceDO::getDate, reqVO.getDate())
-                .eqIfPresent(StudentAttendanceDO::getClockInStatus, reqVO.getClockInStatus())
-                .betweenIfPresent(StudentAttendanceDO::getCreateTime, reqVO.getCreateTime())
-                .eqIfPresent(StudentAttendanceDO::getRemark, reqVO.getRemark())
+        queryWrapper.selectAll(StudentAttendanceDO.class)
+                .selectAs(DeptDO::getName, StudentAttendanceDO::getDeptName)
+                .leftJoin(DeptDO.class, DeptDO::getId, AdminUserDO::getDeptId)
+                .eqIfExists(StudentAttendanceDO::getStudentId, reqVO.getStudentId())
+                .likeIfExists(StudentAttendanceDO::getStudentName, reqVO.getStudentName())
+                .eqIfExists(StudentAttendanceDO::getDeptId, reqVO.getDeptId())
+                .eqIfExists(StudentAttendanceDO::getClockInStatus, reqVO.getClockInStatus())
+//                .betweenIfPresent(StudentAttendanceDO::getCreateTime, reqVO.getCreateTime())
+                .eqIfExists(StudentAttendanceDO::getRemark, reqVO.getRemark())
                 .orderByDesc(StudentAttendanceDO::getClockInTime);
+        //替代查询时间
+        if (reqVO.getCreateTime() != null && reqVO.getCreateTime().length > 0){
+            queryWrapper.apply("DATE(" + "clock_in_time" + ") BETWEEN {0} AND {1}", reqVO.getCreateTime()[0], reqVO.getCreateTime()[1]);
+        }
+        if (roleIds != null && !roleIds.isEmpty()) {
+            if (roleIds.contains(113L)) {//是教师 只出现在老师工作间下面的学生考勤情况
+                queryWrapper.eqIfPresent(StudentAttendanceDO::getDeptId, dept_id);
 
-        if (roleIds.contains(113L)){//是教师 只出现在老师工作间下面的学生考勤情况
-            queryWrapper.eqIfPresent(StudentAttendanceDO::getDeptId,dept_id);
-        }else if (roleIds.contains(112L)){//是学生,只显示自己的
-            queryWrapper.eqIfPresent(StudentAttendanceDO::getStudentId, loginId);
+            } else if (roleIds.contains(112L)) {//是学生,只显示自己的
+                queryWrapper.eqIfPresent(StudentAttendanceDO::getStudentId, loginId);
+            }
         }
         return selectPage(reqVO, queryWrapper);
     }
 
     //异常考勤记录
-    default PageResult<StudentAttendanceDO> selectErrorPage(StudentAttendancePageReqVO reqVO) {
+    default PageResult<StudentAttendanceDO> selectErrorPage(StudentAttendancePageReqVO reqVO, Set<Long> roleIds,Long loginId) {
         Long dept_id = SecurityFrameworkUtils.getLoginUserDeptId();
-        Long loginId =SecurityFrameworkUtils.getLoginUserId();
-        List<Long> roleIds =selectUserRoleId(loginId);
-        LambdaQueryWrapperX<StudentAttendanceDO> queryWrapperX =new LambdaQueryWrapperX<>();
-
-        queryWrapperX.likeIfPresent(StudentAttendanceDO::getStudentName, reqVO.getStudentName())
-                .betweenIfPresent(StudentAttendanceDO::getDate, reqVO.getDate())
-                .betweenIfPresent(StudentAttendanceDO::getCreateTime, reqVO.getCreateTime())
-                .eqIfPresent(StudentAttendanceDO::getClockInStatus, reqVO.getClockInStatus())
+
+        MPJLambdaWrapperX<StudentAttendanceDO> queryWrapperX =new MPJLambdaWrapperX<>();
+
+        queryWrapperX
+                .selectAll(StudentAttendanceDO.class)
+                .selectAs(DeptDO::getName, StudentAttendanceDO::getDeptName)
+                .leftJoin(DeptDO.class, DeptDO::getId, AdminUserDO::getDeptId)
+                .likeIfExists(StudentAttendanceDO::getStudentName, reqVO.getStudentName())
+                .eqIfExists(StudentAttendanceDO::getDeptId, reqVO.getDeptId())
+//                .betweenIfPresent(StudentAttendanceDO::getCreateTime, reqVO.getCreateTime())
+                .eqIfExists(StudentAttendanceDO::getClockInStatus, reqVO.getClockInStatus())
                 //1未打卡,2警告
                 .in(StudentAttendanceDO::getClockInStatus, Arrays.asList(1, 2));
 
-        if (roleIds.contains(113L)){//如果是导师,只看工作间下面的
-            queryWrapperX.eqIfPresent(StudentAttendanceDO::getDeptId,dept_id)
-                            .orderByDesc(StudentAttendanceDO::getClockInTime);
-        }else if (roleIds.contains(112L)){//是学生,只看自己的(先显示状态的)
-            queryWrapperX.eqIfPresent(StudentAttendanceDO::getStudentId, loginId)
-                    .and(wrapper -> wrapper
-                    .eq(StudentAttendanceDO::getClockInStatus, 1)
-                    .or()
-                    .eq(StudentAttendanceDO::getClockInStatus, 2)
-            )
-                    .orderByAsc(StudentAttendanceDO::getClockInStatus) // 先按状态排序
-                    .orderByDesc(StudentAttendanceDO::getClockInTime); // 再按时间排序;
+        if (reqVO.getCreateTime() != null && reqVO.getCreateTime().length > 0){
+            queryWrapperX.apply("DATE(" + "clock_in_time" + ") BETWEEN {0} AND {1}", reqVO.getCreateTime()[0], reqVO.getCreateTime()[1]);
+        }
+        if (roleIds != null && !roleIds.isEmpty()) {
+            if (roleIds.contains(113L)) {//如果是导师,只看工作间下面的
+                queryWrapperX.eqIfPresent(StudentAttendanceDO::getDeptId, dept_id)
+                        .orderByDesc(StudentAttendanceDO::getClockInTime);
+            } else if (roleIds.contains(112L)) {//是学生,只看自己的(先显示状态的)
+                queryWrapperX.eqIfPresent(StudentAttendanceDO::getStudentId, loginId)
+                        .and(wrapper -> wrapper
+                                .eq(StudentAttendanceDO::getClockInStatus, 1)
+                                .or()
+                                .eq(StudentAttendanceDO::getClockInStatus, 2)
+                        )
+                        .orderByAsc(StudentAttendanceDO::getClockInStatus) // 先按状态排序
+                        .orderByDesc(StudentAttendanceDO::getClockInTime); // 再按时间排序;
+            }
         }
 
          return selectPage(reqVO,queryWrapperX);
@@ -116,7 +132,4 @@ public interface StudentAttendanceMapper extends BaseMapperX<StudentAttendanceDO
             "WHERE date = #{clockDate}")
     List<StudentAttendanceDO> getStudentsAttendanceDay(@Param("clockDate") LocalDate clockDate);
 
-    //找登录用户的权限
-    @Select("SELECT role_id FROM system_user_role WHERE user_id = #{userId}")
-    List<Long> selectUserRoleId(Long userId);
 }

+ 6 - 13
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java

@@ -20,10 +20,7 @@ import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
 import javax.annotation.Resource;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 
 @Mapper
 public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
@@ -67,10 +64,8 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
     }
 
     // 会根据登录 查所有学生
-    default PageResult<AdminUserDO> selectPage1(UserPageReqVO reqVO, Collection<Long> deptIds) {
-        // 查询用户数据
-        Long loginId =SecurityFrameworkUtils.getLoginUserId();
-        List<Long> roleId = selectUserRoleId(loginId);
+    default PageResult<AdminUserDO> selectPage1(UserPageReqVO reqVO, Collection<Long> deptIds,Set<Long>roleIds,Long loginId) {
+
         LambdaQueryWrapperX<AdminUserDO> queryWrapperX =new LambdaQueryWrapperX<AdminUserDO>();
         queryWrapperX.likeIfPresent(AdminUserDO::getUsername, reqVO.getUsername())
                 .likeIfPresent(AdminUserDO::getMobile, reqVO.getMobile())
@@ -80,7 +75,7 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
                 .inSql(AdminUserDO::getId, "SELECT id FROM system_users WHERE user_type IN (1,2)")
                 .orderByDesc(AdminUserDO::getId);
 
-        if (roleId.contains(113L)){//如果是教师,只找导师是登录的
+        if (roleIds.contains(113L)){//如果是教师,只找导师是登录的
             queryWrapperX.eqIfPresent(AdminUserDO::getSupervisorId,loginId);
         }
         PageResult<AdminUserDO> result = selectPage(reqVO,queryWrapperX);
@@ -134,9 +129,7 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
     }
 
     // lsq  根据登录人员查所有毕业学生
-    default PageResult<AdminUserDO> selectGraduateStudentPage(UserPageReqVO reqVO, Collection<Long> deptIds) {
-        Long loginId =SecurityFrameworkUtils.getLoginUserId();
-        List<Long> roleId = selectUserRoleId(loginId);
+    default PageResult<AdminUserDO> selectGraduateStudentPage(UserPageReqVO reqVO, Collection<Long> deptIds, Set<Long> roleIds,Long loginId) {
         LambdaQueryWrapperX<AdminUserDO> queryWrapper = new LambdaQueryWrapperX<AdminUserDO>()
                 // 找毕业生: 1. 本校, 2. 毕业生, 3. 老师
                 .eqIfPresent(AdminUserDO::getUserType, "2")
@@ -147,7 +140,7 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
                 .eqIfPresent(AdminUserDO::getGrade, reqVO.getGrade())
                 .likeIfPresent(AdminUserDO::getNickname, reqVO.getNickname())
                 .orderByDesc(AdminUserDO::getId);
-        if (roleId.contains(113L)){//如果是教师
+        if (roleIds.contains(113L)){//如果是教师
             queryWrapper.eqIfPresent(AdminUserDO::getSupervisorId,loginId);
         }
         return selectPage(reqVO,queryWrapper);

+ 11 - 3
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/studentAttendance/StudentAttendanceServiceImpl.java

@@ -1,5 +1,7 @@
 package cn.iocoder.yudao.module.system.service.studentAttendance;
 
+import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
+import cn.iocoder.yudao.module.system.service.permission.PermissionService;
 import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import org.springframework.validation.annotation.Validated;
@@ -30,6 +32,8 @@ public class StudentAttendanceServiceImpl implements StudentAttendanceService {
 
     @Resource
     private StudentAttendanceMapper studentAttendanceMapper;
+    @Resource
+    private PermissionService permissionService;
 
     @Override
     public Integer createStudentAttendance(StudentAttendanceSaveReqVO createReqVO) {
@@ -68,16 +72,20 @@ public class StudentAttendanceServiceImpl implements StudentAttendanceService {
         return studentAttendanceMapper.selectById(id);
     }
 
-    @Override//导师
+    @Override//
     public PageResult<StudentAttendanceDO> getStudentAttendancePage(StudentAttendancePageReqVO pageReqVO) {
-        return studentAttendanceMapper.selectPage(pageReqVO);
+        Long loginId = SecurityFrameworkUtils.getLoginUserId();
+        Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginId);
+        return studentAttendanceMapper.selectPage(pageReqVO,roleIds,loginId);
     }
 
 
 
     @Override
     public PageResult<StudentAttendanceDO> getStudentAttendanceErrorPage(StudentAttendancePageReqVO pageReqVO) {
-        return studentAttendanceMapper.selectErrorPage(pageReqVO);
+        Long loginId = SecurityFrameworkUtils.getLoginUserId();
+        Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginId);
+        return studentAttendanceMapper.selectErrorPage(pageReqVO,roleIds,loginId);
     }
 
 

+ 9 - 8
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java

@@ -11,6 +11,7 @@ import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils;
 import cn.iocoder.yudao.framework.datapermission.core.util.DataPermissionUtils;
+import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.infra.api.config.ConfigApi;
 import cn.iocoder.yudao.module.infra.api.file.FileApi;
 import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO;
@@ -263,7 +264,9 @@ public class AdminUserServiceImpl implements AdminUserService {
     //lsq 学生
     @Override
     public PageResult<AdminUserDO> getUserPage1(UserPageReqVO reqVO) {
-        return userMapper.selectPage1(reqVO, getDeptCondition(reqVO.getDeptId()));
+        Long loginId = SecurityFrameworkUtils.getLoginUserId();
+        Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginId);
+        return userMapper.selectPage1(reqVO, getDeptCondition(reqVO.getDeptId()),roleIds,loginId);
     }
     //lsq 老师
     @Override
@@ -286,16 +289,14 @@ public class AdminUserServiceImpl implements AdminUserService {
     public List<AdminUserDO> getDeptUser() {
         return userMapper.selectDeptUser();
     }
-    //找毕业生(学院)
+    //找毕业生(根据登录人员权限)
     @Override
     public PageResult<AdminUserDO>getGraduateStudentPage(UserPageReqVO reqVO) {
-        return userMapper.selectGraduateStudentPage(reqVO, getDeptCondition(reqVO.getDeptId()));
+        Long loginId = SecurityFrameworkUtils.getLoginUserId();
+        Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginId);
+        return userMapper.selectGraduateStudentPage(reqVO, getDeptCondition(reqVO.getDeptId()),roleIds,loginId);
     }
-//    //找毕业生(老师)
-//    @Override
-//    public PageResult<AdminUserDO>getGraduateStudentTPage(UserPageReqVO reqVO) {
-//        return userMapper.selectGraduateStudentTPage(reqVO, getDeptCondition(reqVO.getDeptId()));
-//    }
+
     //查询所有导师
     @Override
     public List<AdminUserDO> getSupervisor() {