소스 검색

10.10日,

Crazy 6 달 전
부모
커밋
db9480afa1
19개의 변경된 파일630개의 추가작업 그리고 6개의 파일을 삭제
  1. 4 0
      yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java
  2. 19 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/DeptController.java
  3. 4 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/dept/DeptRespVO.java
  4. 175 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java
  5. 7 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserProfileController.java
  6. 21 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/profile/UserProfileRespVO.java
  7. 7 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserPageReqVO.java
  8. 35 5
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserRespVO.java
  9. 10 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserSaveReqVO.java
  10. 61 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/graduateStudentImportExcelVO.java
  11. 36 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/userAchievement/vo/SelfAchievementSaveReqVO.java
  12. 8 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/dept/DeptDO.java
  13. 40 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/user/AdminUserDO.java
  14. 8 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/DeptMapper.java
  15. 120 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java
  16. 2 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptService.java
  17. 5 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java
  18. 16 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java
  19. 52 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java

+ 4 - 0
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java

@@ -162,4 +162,8 @@ public interface ErrorCodeConstants {
     // ========== 站内信发送 1-002-028-000 ==========
     ErrorCode NOTIFY_SEND_TEMPLATE_PARAM_MISS = new ErrorCode(1_002_028_000, "模板参数({})缺失");
 
+    // ========== 成果 TODO 补充编号 ==========
+    ErrorCode USER_ACHIEVEMENT_NOT_EXISTS = new ErrorCode(1_002_029_000, "成果不存在");
+    // ========== 学生考勤记录 TODO 补充编号 ==========
+    ErrorCode STUDENT_ATTENDANCE_NOT_EXISTS = new ErrorCode(1_002_030_000, "学生考勤记录不存在");
 }

+ 19 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/DeptController.java

@@ -8,7 +8,9 @@ import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptRespVO;
 import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSaveReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSimpleRespVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
 import cn.iocoder.yudao.module.system.service.dept.DeptService;
+import cn.iocoder.yudao.module.system.service.user.AdminUserService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -30,6 +32,8 @@ public class DeptController {
 
     @Resource
     private DeptService deptService;
+    @Resource
+    private AdminUserService  adminUserService;
 
     @PostMapping("create")
     @Operation(summary = "创建部门")
@@ -78,6 +82,21 @@ public class DeptController {
     @PreAuthorize("@ss.hasPermission('system:dept:query')")
     public CommonResult<DeptRespVO> getDept(@RequestParam("id") Long id) {
         DeptDO dept = deptService.getDept(id);
+        //新加的负责人用户信息
+          AdminUserDO user  =adminUserService.getUser(dept.getLeaderUserId());
+          dept.setUser(user);
+          System.out.println(dept);
+      return success(BeanUtils.toBean(dept, DeptRespVO.class));
+    }
+
+    @GetMapping("/GetUserDept")
+    @Operation(summary = "获得登录人员工作间信息")
+    public CommonResult<DeptRespVO> getUserDept() {
+        DeptDO dept = deptService.getUserDept();
+        //新加的负责人用户信息
+        AdminUserDO user  =adminUserService.getUser(dept.getLeaderUserId());
+        dept.setUser(user);
+        System.out.println(dept);
         return success(BeanUtils.toBean(dept, DeptRespVO.class));
     }
 

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

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept;
 
+import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -36,4 +37,7 @@ public class DeptRespVO {
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式")
     private LocalDateTime createTime;
 
+//    新加的
+    @Schema(description = "负责人的用户信息")
+    private AdminUserDO user;
 }

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

@@ -30,6 +30,7 @@ import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
 import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@@ -53,6 +54,13 @@ public class UserController {
         Long id = userService.createUser(reqVO);
         return success(id);
     }
+    @PostMapping("/create_teacher")
+    @Operation(summary = "新增教师")
+    @PreAuthorize("@ss.hasPermission('system:teacher:create')")
+    public CommonResult<Long> createStudent(@Valid @RequestBody UserSaveReqVO reqVO) {
+        Long id = userService.createUser(reqVO);
+        return success(id);
+    }
 
     @PutMapping("update")
     @Operation(summary = "修改用户")
@@ -102,6 +110,143 @@ public class UserController {
         return success(new PageResult<>(UserConvert.INSTANCE.convertList(pageResult.getList(), deptMap),
                 pageResult.getTotal()));
     }
+    //lsq
+    @GetMapping("/page0")
+    @Operation(summary = "获得老师分页列表")
+    @PreAuthorize("@ss.hasPermission('system:user:teacherList')")
+    public CommonResult<PageResult<UserRespVO>> getUserPage0(@Valid UserPageReqVO pageReqVO) {
+        // 获得用户分页列表
+        PageResult<AdminUserDO> pageResult = userService.getUserPage0(pageReqVO);
+        if (CollUtil.isEmpty(pageResult.getList())) {
+            return success(new PageResult<>(pageResult.getTotal()));
+        }
+        // 拼接数据
+        Map<Long, DeptDO> deptMap = deptService.getDeptMap(
+                convertList(pageResult.getList(), AdminUserDO::getDeptId));
+        return success(new PageResult<>(UserConvert.INSTANCE.convertList(pageResult.getList(), deptMap),
+                pageResult.getTotal()));
+    }
+
+    //lsq
+    @GetMapping("/page1")
+    @Operation(summary = "获得学生分页列表")
+    @PreAuthorize("@ss.hasPermission('system:user:studentList')")
+    public CommonResult<PageResult<UserRespVO>> getUserPage1(@Valid UserPageReqVO pageReqVO) {
+        // 获得用户分页列表
+        PageResult<AdminUserDO> pageResult = userService.getUserPage1(pageReqVO);
+        if (CollUtil.isEmpty(pageResult.getList())) {
+            return success(new PageResult<>(pageResult.getTotal()));
+        }
+        // 拼接数据
+        Map<Long, DeptDO> deptMap = deptService.getDeptMap(
+                convertList(pageResult.getList(), AdminUserDO::getDeptId));
+        return success(new PageResult<>(UserConvert.INSTANCE.convertList(pageResult.getList(), deptMap),
+                pageResult.getTotal()));
+    }
+    //lsq
+    @GetMapping("/DeptTeacherPage")
+    @Operation(summary = "获得工作间教师分页列表")
+    @PreAuthorize("@ss.hasPermission('system:workroom:teacherList')")
+    public CommonResult<PageResult<UserRespVO>> getDeptTeacherPage(@Valid UserPageReqVO pageReqVO) {
+        // 获得用户分页列表
+        PageResult<AdminUserDO> pageResult = userService.getDeptTeacherPage(pageReqVO);
+        if (CollUtil.isEmpty(pageResult.getList())) {
+            return success(new PageResult<>(pageResult.getTotal()));
+        }
+        // 拼接数据
+        Map<Long, DeptDO> deptMap = deptService.getDeptMap(
+                convertList(pageResult.getList(), AdminUserDO::getDeptId));
+        return success(new PageResult<>(UserConvert.INSTANCE.convertList(pageResult.getList(), deptMap),
+                pageResult.getTotal()));
+    }
+
+    //lsq
+    @GetMapping("/DeptStudentPage")
+    @Operation(summary = "获得工作间学生分页列表")
+    @PreAuthorize("@ss.hasPermission('system:workroom:studentlist')")
+    public CommonResult<PageResult<UserRespVO>> getDeptStudentPage(@Valid UserPageReqVO pageReqVO) {
+        // 获得用户分页列表
+        PageResult<AdminUserDO> pageResult = userService.getDeptStudentPage(pageReqVO);
+        if (CollUtil.isEmpty(pageResult.getList())) {
+            return success(new PageResult<>(pageResult.getTotal()));
+        }
+        // 拼接数据
+        Map<Long, DeptDO> deptMap = deptService.getDeptMap(
+                convertList(pageResult.getList(), AdminUserDO::getDeptId));
+        return success(new PageResult<>(UserConvert.INSTANCE.convertList(pageResult.getList(), deptMap),
+                pageResult.getTotal()));
+    }
+
+    //lsq
+    @GetMapping("/DeptUser")
+    @Operation(summary = "获得工作间人员")
+    public CommonResult<List<AdminUserDO>> getDeptUser() {
+        // 获得用户分页列表
+        List<AdminUserDO> deptUser = userService.getDeptUser();
+        return success(deptUser);
+    }
+    @GetMapping("/supervisor")
+    @Operation(summary = "获得所有导师")
+    public CommonResult<List<AdminUserDO>> getSupervisor() {
+        List<AdminUserDO> deptUser = userService.getSupervisor();
+        return success(deptUser);
+    }
+
+    //lsq学院
+    @GetMapping("/graduateStudentPage")
+    @Operation(summary = "学院获得毕业生分页列表")
+    @PreAuthorize("@ss.hasPermission('system:user:graduateStudentList')")
+    public CommonResult<PageResult<UserRespVO>> getGraduateStudentPage(@Valid UserPageReqVO pageReqVO) {
+        // 获得用户分页列表
+        PageResult<AdminUserDO> pageResult = userService.getGraduateStudentPage(pageReqVO);
+
+        // 循环处理每个毕业生
+        for (AdminUserDO student : pageResult.getList()) {
+            // 根据 supervisorId 查询导师信息
+            if (student.getSupervisorId()!=null) {
+                AdminUserDO supervisorUser = userService.getUser(student.getSupervisorId());
+                String supervisor = supervisorUser.getNickname();
+                String mobile =supervisorUser.getMobile();
+                // 赋值给 对应 字段
+                student.setSupervisor(supervisor);
+                student.setSupervisorMobile(mobile);
+            }
+        }
+        if (CollUtil.isEmpty(pageResult.getList())) {
+            return success(new PageResult<>(pageResult.getTotal()));
+        }
+        // 拼接数据
+        Map<Long, DeptDO> deptMap = deptService.getDeptMap(
+                convertList(pageResult.getList(), AdminUserDO::getDeptId));
+        return success(new PageResult<>(UserConvert.INSTANCE.convertList(pageResult.getList(), deptMap),
+                pageResult.getTotal()));
+    }
+
+    //lsq导师
+    @GetMapping("/graduateStudentTPage")
+    @Operation(summary = "导师获得毕业生分页列表")
+    @PreAuthorize("@ss.hasPermission('system:user:graduateStudentTList')")
+    public CommonResult<PageResult<UserRespVO>> getGraduateStudentTPage(@Valid UserPageReqVO pageReqVO) {
+        PageResult<AdminUserDO> pageResult = userService.getGraduateStudentTPage(pageReqVO);
+        for (AdminUserDO student : pageResult.getList()) {
+            if (student.getSupervisorId()!=null) {
+                AdminUserDO supervisorUser = userService.getUser(student.getSupervisorId());
+                String supervisor = supervisorUser.getNickname();
+                String mobile =supervisorUser.getMobile();
+
+                student.setSupervisor(supervisor);
+                student.setSupervisorMobile(mobile);
+            }
+        }
+        if (CollUtil.isEmpty(pageResult.getList())) {
+            return success(new PageResult<>(pageResult.getTotal()));
+        }
+        // 拼接数据
+        Map<Long, DeptDO> deptMap = deptService.getDeptMap(
+                convertList(pageResult.getList(), AdminUserDO::getDeptId));
+        return success(new PageResult<>(UserConvert.INSTANCE.convertList(pageResult.getList(), deptMap),
+                pageResult.getTotal()));
+    }
 
     @GetMapping({"/list-all-simple", "/simple-list"})
     @Operation(summary = "获取用户精简信息列表", description = "只包含被开启的用户,主要用于前端的下拉选项")
@@ -119,6 +264,12 @@ public class UserController {
     @PreAuthorize("@ss.hasPermission('system:user:query')")
     public CommonResult<UserRespVO> getUser(@RequestParam("id") Long id) {
         AdminUserDO user = userService.getUser(id);
+        //毕业生专属
+        if (user.getSupervisorId()!=null && Objects.equals(user.getUserType(), "2")) {
+            AdminUserDO supervisorUser = userService.getUser(user.getSupervisorId());
+            String supervisor = supervisorUser.getNickname();
+            user.setSupervisor(supervisor);
+        }
         if (user == null) {
             return success(null);
         }
@@ -169,4 +320,28 @@ public class UserController {
         return success(userService.importUserList(list, updateSupport));
     }
 
+
+
+    //毕业生
+    @GetMapping("/get-import-GraduateStudentTemplate")
+    @Operation(summary = "获得导入用户模板")
+    public void importGraduateStudentTemplate(HttpServletResponse response) throws IOException {
+        // 手动创建导出 demo
+        List<graduateStudentImportExcelVO> list = Arrays.asList(
+                graduateStudentImportExcelVO.builder().username("zhang").email("yunai@iocoder.cn").mobile("15601691300")
+                        .nickname("张三").sex(SexEnum.MALE.getSex()).grade("2020").major("遥感科学与技术")
+                                .userNumber("33333333").email("").mobile("").workPlace("").supervisor("").supervisorMobile("")
+                        .build(),
+
+
+                graduateStudentImportExcelVO.builder().username("").email("yunai@iocoder.cn").mobile("15601691300")
+                        .nickname("李四").sex(SexEnum.MALE.getSex()).grade("2020").major("遥感科学与技术")
+                        .userNumber("33333333").email("").mobile("").workPlace("").supervisor("").supervisorMobile("")
+                        .build()
+        );
+        // 输出
+        ExcelUtils.write(response, "用户导入模板.xls", "用户列表", graduateStudentImportExcelVO.class, list);
+    }
+
+
 }

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

@@ -61,6 +61,13 @@ public class UserProfileController {
     public CommonResult<UserProfileRespVO> getUserProfile() {
         // 获得用户基本信息
         AdminUserDO user = userService.getUser(getLoginUserId());
+        Long supervisorId =user.getSupervisorId();
+        if (supervisorId!=null){
+            AdminUserDO supervisorUser = userService.getUser(supervisorId);
+            String supervisor = supervisorUser.getNickname();
+            user.setSupervisor(supervisor);
+            System.out.println("学生基本信息"+user);
+        }
         // 获得用户角色
         List<RoleDO> userRoles = roleService.getRoleListFromCache(permissionService.getUserRoleIdListByUserId(user.getId()));
         // 获得部门信息

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

@@ -71,5 +71,26 @@ public class UserProfileRespVO {
         private String openid;
 
     }
+    /**
+     * 新加的个人信息列
+     */
+    @Schema(description = "1本科生,2毕业生,3导师", example = "1")
+    private String userType;
+
+    @Schema(description = "专业名称")
+    private String major;
+
+    @Schema(description = "专硕(学硕)名称", example = "2")
+    private String masterType;
+
+    @Schema(description = "导师id", example = "21284")
+    private Long supervisorId;
+
+    @Schema(description = "学号")
+    private String userNumber;
+
+    @Schema(description = "年级")
+    private String grade;
 
+    private String supervisor;
 }

+ 7 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserPageReqVO.java

@@ -34,5 +34,12 @@ public class UserPageReqVO extends PageParam {
 
     @Schema(description = "部门编号,同时筛选子部门", example = "1024")
     private Long deptId;
+    //新加的查询条件
+    @Schema(description = "年级")
+    private String grade;
+
+    @Schema(description = "用户昵称")
+    private String nickname;
+
 
 }

+ 35 - 5
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserRespVO.java

@@ -11,6 +11,7 @@ import lombok.Data;
 import java.time.LocalDateTime;
 import java.util.Set;
 
+//返回
 @Schema(description = "管理后台 - 用户信息 Response VO")
 @Data
 @ExcelIgnoreUnannotated
@@ -27,19 +28,29 @@ public class UserRespVO{
     @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
     @ExcelProperty("用户昵称")
     private String nickname;
+    //+
+    @Schema(description = "年级")
+    @ExcelProperty("年级")
+    private String grade;
 
     @Schema(description = "备注", example = "我是一个用户")
     private String remark;
 
     @Schema(description = "部门ID", example = "我是一个用户")
     private Long deptId;
+
     @Schema(description = "部门名称", example = "IT 部")
-    @ExcelProperty("部门名称")
     private String deptName;
 
     @Schema(description = "岗位编号数组", example = "1")
     private Set<Long> postIds;
 
+    @Schema(description = "用户性别,参见 SexEnum 枚举类", example = "1")
+    @ExcelProperty(value = "用户性别", converter = DictConvert.class)
+    @DictFormat(DictTypeConstants.USER_SEX)
+    private Integer sex;
+
+
     @Schema(description = "用户邮箱", example = "yudao@iocoder.cn")
     @ExcelProperty("用户邮箱")
     private String email;
@@ -47,11 +58,19 @@ public class UserRespVO{
     @Schema(description = "手机号码", example = "15601691300")
     @ExcelProperty("手机号码")
     private String mobile;
+    //+
+    @Schema(description = "导师名称")
+    @ExcelProperty("导师名称")
+    private String supervisor;
+    //+
+    @Schema(description = "导师电话")
+    @ExcelProperty("导师电话")
+    private String supervisorMobile;
+    //+
+    @Schema(description = "工作地点")
+    @ExcelProperty("工作地点")
+    private String workPlace;
 
-    @Schema(description = "用户性别,参见 SexEnum 枚举类", example = "1")
-    @ExcelProperty(value = "用户性别", converter = DictConvert.class)
-    @DictFormat(DictTypeConstants.USER_SEX)
-    private Integer sex;
 
     @Schema(description = "用户头像", example = "https://www.iocoder.cn/xxx.png")
     private String avatar;
@@ -72,4 +91,15 @@ public class UserRespVO{
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式")
     private LocalDateTime createTime;
 
+    /*
+    * 新加的值
+    * */
+    @Schema(description = "1本科生,2毕业生,3导师", example = "1")
+    private String userType;
+
+
+
+
+
+
 }

+ 10 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserSaveReqVO.java

@@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.common.validation.Mobile;
 import cn.iocoder.yudao.module.system.framework.operatelog.core.DeptParseFunction;
 import cn.iocoder.yudao.module.system.framework.operatelog.core.PostParseFunction;
 import cn.iocoder.yudao.module.system.framework.operatelog.core.SexParseFunction;
+import com.alibaba.excel.annotation.ExcelProperty;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.mzt.logapi.starter.annotation.DiffLogField;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -76,5 +77,14 @@ public class UserSaveReqVO {
         return id != null // 修改时,不需要传递
                 || (ObjectUtil.isAllNotEmpty(password)); // 新增时,必须都传递 password
     }
+    //新加修改传来的值
+    @Schema(description = "1本科生,2毕业生,3导师", example = "1")
+    private String userType;
+
+    @Schema(description = "导师id")
+    private Long supervisorId;
+
+    @Schema(description = "工作地点")
+    private String workPlace;
 
 }

+ 61 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/graduateStudentImportExcelVO.java

@@ -0,0 +1,61 @@
+package cn.iocoder.yudao.module.system.controller.admin.user.vo.user;
+
+import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
+import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
+import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+/**
+ * 用户 Excel 导入 VO
+ */
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@Accessors(chain = false) // 设置 chain = false,避免用户导入有问题
+public class graduateStudentImportExcelVO {
+
+    @ExcelProperty("登录名称")
+    private String username;
+
+    @ExcelProperty("用户名称")
+    private String nickname;
+
+    @ExcelProperty(value = "用户性别", converter = DictConvert.class)
+    @DictFormat(DictTypeConstants.USER_SEX)
+    private Integer sex;
+
+    @ExcelProperty("年级")
+    private String grade;
+
+    @ExcelProperty("专业名称")
+    private String major;
+
+    @ExcelProperty("学号")
+    private String userNumber;
+
+    @ExcelProperty("用户邮箱")
+    private String email;
+
+    @ExcelProperty("手机号码")
+    private String mobile;
+
+    @ExcelProperty("工作地点")
+    private String workPlace;
+
+    @ExcelProperty("导师名称")
+    private String supervisor;
+
+    @ExcelProperty("导师电话")
+    private String supervisorMobile;
+
+    //导入毕业生直接添加身份
+
+
+}

+ 36 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/userAchievement/vo/SelfAchievementSaveReqVO.java

@@ -0,0 +1,36 @@
+package cn.iocoder.yudao.module.system.controller.admin.userAchievement.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+@Schema(description = "管理后台 - 成果新增/修改 Request VO")
+@Data
+public class SelfAchievementSaveReqVO {
+
+    @Schema(description = "自增id", requiredMode = Schema.RequiredMode.REQUIRED, example = "7131")
+    private Integer id;
+
+    @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "25783")
+    private Long userId;
+
+    @Schema(description = "成果名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
+    @NotEmpty(message = "成果名称不能为空")
+    private String achievementName;
+
+    @Schema(description = "1论文,2专利,3著作", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @NotEmpty(message = "成果类型不能为空")
+    private String achievementType;
+
+    @Schema(description = "用户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
+    private String userName;
+
+    @Schema(description = "照片详情url")
+    private String detail;
+
+    @Schema(description = "工作间id")
+    private Long dept_id;
+
+}

+ 8 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/dept/DeptDO.java

@@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
 import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
@@ -63,4 +64,11 @@ public class DeptDO extends TenantBaseDO {
      */
     private Integer status;
 
+    //》新加的
+    /**
+     * 负责人用户信息
+     */
+    @TableField(exist = false)
+    private AdminUserDO user;
+
 }

+ 40 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/user/AdminUserDO.java

@@ -92,5 +92,45 @@ public class AdminUserDO extends TenantBaseDO {
      * 最后登录时间
      */
     private LocalDateTime loginDate;
+    //新加的
+    /**
+     * 用户类型
+     */
+    private String userType;
+    /**
+     * 专业名称
+     */
+    private String major;
+    /**
+     * 专硕名称
+     */
+    private String masterType;
+    /**
+     * 导师id
+     */
+    private Long supervisorId;
+
+    /**
+     * 学号
+     */
+    private String userNumber;
+    /**
+     * 年级
+     */
+    private String grade;
+    /**
+     * 工作地点
+     */
+    private String workPlace;
+
+    /**
+     * 导师名称
+     */
+    @TableField(exist = false)
+    private String supervisor;
+
+    @TableField(exist = false)
+    private String supervisorMobile;
+
 
 }

+ 8 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/DeptMapper.java

@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.dal.mysql.dept;
 
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
 import org.apache.ibatis.annotations.Mapper;
@@ -17,6 +18,13 @@ public interface DeptMapper extends BaseMapperX<DeptDO> {
                 .likeIfPresent(DeptDO::getName, reqVO.getName())
                 .eqIfPresent(DeptDO::getStatus, reqVO.getStatus()));
     }
+    //获取登录人员工作间的信息
+    default DeptDO selectLoginDept() {
+        Long deptId = SecurityFrameworkUtils.getLoginUserDeptId();
+        return selectOne(new LambdaQueryWrapperX<DeptDO>()
+                .inSql(DeptDO::getId, String.valueOf(deptId))
+        );
+    }
 
     default DeptDO selectByParentIdAndName(Long parentId, String name) {
         return selectOne(DeptDO::getParentId, parentId, DeptDO::getName, name);

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

@@ -3,12 +3,20 @@ package cn.iocoder.yudao.module.system.dal.mysql.user;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.security.core.LoginUser;
+import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
+import cn.iocoder.yudao.module.system.service.user.AdminUserService;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import org.apache.catalina.User;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 
 import java.util.Collection;
 import java.util.List;
+import java.util.Map;
 
 @Mapper
 public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
@@ -25,6 +33,7 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
         return selectOne(AdminUserDO::getMobile, mobile);
     }
 
+    //查询所有人
     default PageResult<AdminUserDO> selectPage(UserPageReqVO reqVO, Collection<Long> deptIds) {
         return selectPage(reqVO, new LambdaQueryWrapperX<AdminUserDO>()
                 .likeIfPresent(AdminUserDO::getUsername, reqVO.getUsername())
@@ -34,6 +43,117 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
                 .inIfPresent(AdminUserDO::getDeptId, deptIds)
                 .orderByDesc(AdminUserDO::getId));
     }
+// 查所有老师管理查询   参数1. reqVo模糊查询  2.过滤部门及子部门
+    default PageResult<AdminUserDO> selectPage0(UserPageReqVO reqVO, Collection<Long> deptIds) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<AdminUserDO>()
+                .likeIfPresent(AdminUserDO::getUsername, reqVO.getUsername())
+                .likeIfPresent(AdminUserDO::getMobile, reqVO.getMobile())
+                .eqIfPresent(AdminUserDO::getStatus, reqVO.getStatus())
+                .betweenIfPresent(AdminUserDO::getCreateTime, reqVO.getCreateTime())
+                .inIfPresent(AdminUserDO::getDeptId, deptIds)
+                // 添加子查询条件,查找有教师权限的人
+                .inSql(AdminUserDO::getId,
+                        "SELECT user_id FROM system_users WHERE user_type = 3")
+                .orderByDesc(AdminUserDO::getId));
+    }
+
+        // lsq  查所有学生
+    default PageResult<AdminUserDO> selectPage1(UserPageReqVO reqVO, Collection<Long> deptIds) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<AdminUserDO>()
+                .likeIfPresent(AdminUserDO::getUsername, reqVO.getUsername())
+                .likeIfPresent(AdminUserDO::getMobile, reqVO.getMobile())
+                .eqIfPresent(AdminUserDO::getStatus, reqVO.getStatus())
+                .betweenIfPresent(AdminUserDO::getCreateTime, reqVO.getCreateTime())
+                .inIfPresent(AdminUserDO::getDeptId, deptIds)
+                // 添加子查询条件,查找有教师权限的人
+                .inSql(AdminUserDO::getId,
+                        "SELECT user_id FROM system_users WHERE user_type IN (1,2)")
+                .orderByDesc(AdminUserDO::getId));
+    }
+
+    // lsq  查工作间下的老师 3老师
+    default PageResult<AdminUserDO> selectDeptTeacherPage(UserPageReqVO reqVO, Collection<Long> deptIds) {
+                Long loginID = SecurityFrameworkUtils.getLoginUserId(); //
+               System.out.println(loginID);
+        return selectPage(reqVO, new LambdaQueryWrapperX<AdminUserDO>()
+                .likeIfPresent(AdminUserDO::getUsername, reqVO.getUsername())
+                .likeIfPresent(AdminUserDO::getMobile, reqVO.getMobile())
+                .eqIfPresent(AdminUserDO::getStatus, reqVO.getStatus())
+                .betweenIfPresent(AdminUserDO::getCreateTime, reqVO.getCreateTime())
+                .inIfPresent(AdminUserDO::getDeptId, deptIds)
+                // 添加子查询条件,查找有教师权限的人
+                .inSql(AdminUserDO::getId,
+                        "SELECT user_id FROM system_users WHERE user_type = 3")
+                // 查到当前登录老师的工作间并且属于这个工作间的所有老师
+                .inSql(AdminUserDO::getDeptId, String.format("SELECT dept_id FROM system_users WHERE id = %d", loginID))
+                .orderByDesc(AdminUserDO::getId));
+    }
+
+    // lsq  查工作间下的学生 1在校生,2毕业生
+    default PageResult<AdminUserDO> selectDeptStudentPage(UserPageReqVO reqVO, Collection<Long> deptIds) {
+        Long loginID = SecurityFrameworkUtils.getLoginUserId(); //
+        System.out.println(loginID);
+        return selectPage(reqVO, new LambdaQueryWrapperX<AdminUserDO>()
+                .likeIfPresent(AdminUserDO::getUsername, reqVO.getUsername())
+                .likeIfPresent(AdminUserDO::getMobile, reqVO.getMobile())
+                .eqIfPresent(AdminUserDO::getStatus, reqVO.getStatus())
+                .betweenIfPresent(AdminUserDO::getCreateTime, reqVO.getCreateTime())
+                .inIfPresent(AdminUserDO::getDeptId, deptIds)
+                .inSql(AdminUserDO::getId,
+                        "SELECT user_id FROM system_users WHERE user_type IN (1,2)")
+                .inSql(AdminUserDO::getDeptId, String.format("SELECT dept_id FROM system_users WHERE id = %d", loginID))
+                .orderByDesc(AdminUserDO::getId));
+    }
+
+    // lsq  查所有毕业学生
+    default PageResult<AdminUserDO> selectGraduateStudentPage(UserPageReqVO reqVO, Collection<Long> deptIds) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<AdminUserDO>()
+                //找毕业生1.本校,2毕业,3老师
+                .eqIfPresent(AdminUserDO::getUserType,"2")
+                //.likeIfPresent(AdminUserDO::getUsername, reqVO.getUsername())
+                .likeIfPresent(AdminUserDO::getMobile, reqVO.getMobile())
+                .eqIfPresent(AdminUserDO::getStatus, reqVO.getStatus())
+                .betweenIfPresent(AdminUserDO::getCreateTime, reqVO.getCreateTime())
+                .inIfPresent(AdminUserDO::getDeptId, deptIds)
+                //新加的查询条件
+                .eqIfPresent(AdminUserDO::getGrade, reqVO.getGrade())
+                .likeIfPresent(AdminUserDO::getNickname, reqVO.getNickname())//
+                .orderByDesc(AdminUserDO::getId));
+    }
+
+    // lsq  查所有毕业学生
+    default PageResult<AdminUserDO> selectGraduateStudentTPage(UserPageReqVO reqVO, Collection<Long> deptIds) {
+        Long loginId =SecurityFrameworkUtils.getLoginUserId();
+        return selectPage(reqVO, new LambdaQueryWrapperX<AdminUserDO>()
+                //找毕业生1.本校,2毕业,3老师
+                .eqIfPresent(AdminUserDO::getUserType,"2")
+                //找到登录的导师
+                .eqIfPresent(AdminUserDO::getSupervisorId,loginId)
+                .likeIfPresent(AdminUserDO::getMobile, reqVO.getMobile())
+                .eqIfPresent(AdminUserDO::getStatus, reqVO.getStatus())
+                .betweenIfPresent(AdminUserDO::getCreateTime, reqVO.getCreateTime())
+                .inIfPresent(AdminUserDO::getDeptId, deptIds)
+                .eqIfPresent(AdminUserDO::getGrade, reqVO.getGrade())
+                .likeIfPresent(AdminUserDO::getNickname, reqVO.getNickname())//
+                .orderByDesc(AdminUserDO::getId));
+    }
+
+    //上面是分页
+    // lsq  查所有导师列表
+    default List<AdminUserDO> selectSupervisor() {
+        LambdaQueryWrapperX<AdminUserDO> queryWrapper = (LambdaQueryWrapperX<AdminUserDO>) new LambdaQueryWrapperX<AdminUserDO>()
+                .eqIfPresent(AdminUserDO::getUserType,3);
+        return selectList(queryWrapper);
+    }
+
+    // lsq  查工作间下的用户列表
+    default List<AdminUserDO> selectDeptUser() {
+        Long loginID = SecurityFrameworkUtils.getLoginUserId();
+        LambdaQueryWrapperX<AdminUserDO> queryWrapper = (LambdaQueryWrapperX<AdminUserDO>) new LambdaQueryWrapperX<AdminUserDO>()
+                .inSql(AdminUserDO::getDeptId, String.format("SELECT dept_id FROM system_users WHERE id = %d", loginID));
+        return selectList(queryWrapper);
+    }
+
 
     default List<AdminUserDO> selectListByNickname(String nickname) {
         return selectList(new LambdaQueryWrapperX<AdminUserDO>().like(AdminUserDO::getNickname, nickname));

+ 2 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptService.java

@@ -99,4 +99,6 @@ public interface DeptService {
      */
     void validateDeptList(Collection<Long> ids);
 
+    DeptDO getUserDept();
+
 }

+ 5 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java

@@ -215,4 +215,9 @@ public class DeptServiceImpl implements DeptService {
         });
     }
 
+    //新加的
+   public DeptDO getUserDept(){
+        return deptMapper.selectLoginDept();
+   }
+
 }

+ 16 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java

@@ -112,6 +112,21 @@ public interface AdminUserService {
      * @return 分页列表
      */
     PageResult<AdminUserDO> getUserPage(UserPageReqVO reqVO);
+    //lsq 0老师 1学生
+    PageResult<AdminUserDO> getUserPage1(UserPageReqVO reqVO);
+    PageResult<AdminUserDO> getUserPage0(UserPageReqVO reqVO);
+    //查工作间下的老师
+    PageResult<AdminUserDO> getDeptTeacherPage(UserPageReqVO reqVO);
+    //查工作间下的学生
+    PageResult<AdminUserDO> getDeptStudentPage(UserPageReqVO reqVO);
+    //查工作间下的所有人
+    List<AdminUserDO> getDeptUser();
+    //查毕业生(学院)
+    PageResult<AdminUserDO> getGraduateStudentPage(UserPageReqVO reqVO);
+    //查毕业生(导师)
+    PageResult<AdminUserDO> getGraduateStudentTPage(UserPageReqVO reqVO);
+    //查所有导师
+    List<AdminUserDO> getSupervisor();
 
     /**
      * 通过用户 ID 查询用户
@@ -184,6 +199,7 @@ public interface AdminUserService {
      */
     UserImportRespVO importUserList(List<UserImportExcelVO> importUsers, boolean isUpdateSupport);
 
+
     /**
      * 获得指定状态的用户们
      *

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

@@ -33,6 +33,7 @@ import com.mzt.logapi.context.LogRecordContext;
 import com.mzt.logapi.service.impl.DiffParseFunction;
 import com.mzt.logapi.starter.annotation.LogRecord;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.stereotype.Service;
@@ -109,7 +110,6 @@ public class AdminUserServiceImpl implements AdminUserService {
             userPostMapper.insertBatch(convertList(user.getPostIds(),
                     postId -> new UserPostDO().setUserId(user.getId()).setPostId(postId)));
         }
-
         // 3. 记录操作日志上下文
         LogRecordContext.putVariable("user", user);
         return user.getId();
@@ -249,11 +249,59 @@ public class AdminUserServiceImpl implements AdminUserService {
         return userMapper.selectByMobile(mobile);
     }
 
+
+
     @Override
     public PageResult<AdminUserDO> getUserPage(UserPageReqVO reqVO) {
         return userMapper.selectPage(reqVO, getDeptCondition(reqVO.getDeptId()));
     }
 
+//<>
+    //lsq 学生
+    @Override
+    public PageResult<AdminUserDO> getUserPage1(UserPageReqVO reqVO) {
+        return userMapper.selectPage1(reqVO, getDeptCondition(reqVO.getDeptId()));
+    }
+    //lsq 老师
+    @Override
+    public PageResult<AdminUserDO> getUserPage0(UserPageReqVO reqVO) {
+        return userMapper.selectPage0(reqVO, getDeptCondition(reqVO.getDeptId()));
+    }
+
+    //查询工作间下的老师
+    @Override
+    public PageResult<AdminUserDO> getDeptTeacherPage(UserPageReqVO reqVO) {
+        return userMapper.selectDeptTeacherPage(reqVO, getDeptCondition(reqVO.getDeptId()));
+    }
+    //查询工作间下的学生
+    @Override
+    public PageResult<AdminUserDO> getDeptStudentPage(UserPageReqVO reqVO) {
+        return userMapper.selectDeptStudentPage(reqVO, getDeptCondition(reqVO.getDeptId()));
+    }
+    //查询工作间下的人员
+    @Override
+    public List<AdminUserDO> getDeptUser() {
+        return userMapper.selectDeptUser();
+    }
+    //找毕业生(学院)
+    @Override
+    public PageResult<AdminUserDO>getGraduateStudentPage(UserPageReqVO reqVO) {
+        return userMapper.selectGraduateStudentPage(reqVO, getDeptCondition(reqVO.getDeptId()));
+    }
+    //找毕业生(老师)
+    @Override
+    public PageResult<AdminUserDO>getGraduateStudentTPage(UserPageReqVO reqVO) {
+        return userMapper.selectGraduateStudentTPage(reqVO, getDeptCondition(reqVO.getDeptId()));
+    }
+    //查询所有导师
+    @Override
+    public List<AdminUserDO> getSupervisor() {
+        return userMapper.selectSupervisor();
+    }
+
+    //<>
+
+
     @Override
     public AdminUserDO getUser(Long id) {
         return userMapper.selectById(id);
@@ -492,6 +540,9 @@ public class AdminUserServiceImpl implements AdminUserService {
         return passwordEncoder.matches(rawPassword, encodedPassword);
     }
 
+//    毕业生
+
+
     /**
      * 对密码进行加密
      *