Crazy il y a 5 mois
Parent
commit
79d92c7753
17 fichiers modifiés avec 598 ajouts et 10 suppressions
  1. 2 0
      yudao-module-md/pom.xml
  2. 1 0
      yudao-module-md/yudao-module-md-api/pom.xml
  3. 16 0
      yudao-module-md/yudao-module-md-biz/pom.xml
  4. 89 0
      yudao-module-md/yudao-module-md-biz/src/main/java/Acs/UserManage.java
  5. 1 0
      yudao-module-md/yudao-module-md-biz/src/main/java/Commom/ConfigFileUtil.java
  6. 24 5
      yudao-module-md/yudao-module-md-biz/src/main/java/cn/iocoder/yudao/module/md/controller/admin/AcsController.java
  7. 8 3
      yudao-module-md/yudao-module-md-biz/src/main/java/cn/iocoder/yudao/module/md/service/AcsService.java
  8. 4 0
      yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java
  9. 176 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java
  10. 29 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserPageReqVO.java
  11. 41 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/user/AdminUserDO.java
  12. 8 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/DeptMapper.java
  13. 120 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java
  14. 2 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptService.java
  15. 5 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java
  16. 18 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java
  17. 54 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java

+ 2 - 0
yudao-module-md/pom.xml

@@ -46,5 +46,7 @@
         <artifactId>examples</artifactId>
         <version>1.0.0</version>
     </dependency>
+        <!-- JNA JSON 依赖 -->
+
     </dependencies>
 </project>

+ 1 - 0
yudao-module-md/yudao-module-md-api/pom.xml

@@ -22,6 +22,7 @@
             <groupId>cn.iocoder.boot</groupId>
             <artifactId>yudao-common</artifactId>
         </dependency>
+
     </dependencies>
     <properties>
         <maven.compiler.source>8</maven.compiler.source>

+ 16 - 0
yudao-module-md/yudao-module-md-biz/pom.xml

@@ -61,6 +61,22 @@
             <artifactId>gson</artifactId>
         </dependency>
 
+
+        <dependency>
+            <groupId>com.sun.jna.json</groupId>
+            <artifactId>json</artifactId>
+            <version>1.0</version>
+            <scope>system</scope>
+            <systemPath>${basedir}/lib/json.jar</systemPath>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.jna.examples</groupId>
+            <artifactId>jna</artifactId>
+            <version>1.0</version>
+            <scope>system</scope>
+            <systemPath>${basedir}/lib/examples.jar</systemPath>
+        </dependency>
+
         <!-- Test 测试相关 -->
 <!--        <dependency>-->
 <!--            <groupId>cn.iocoder.boot</groupId>-->

+ 89 - 0
yudao-module-md/yudao-module-md-biz/src/main/java/Acs/UserManage.java

@@ -13,6 +13,8 @@ import java.util.Map;
 import java.util.UUID;
 import cn.iocoder.yudao.module.md.service.*;
 
+import static Commom.ConfigFileUtil.replace;
+
 /**
  * 功能:人脸下发、查询、删除、人员计划模板配置
  */
@@ -189,6 +191,93 @@ public class UserManage {
         return new String(ptrOutuff.byValue).trim();
     }
 
+    //lsq
+    public static String getUserInfo(int lUserID , String employeeNo ) throws JSONException {
+        HCNetSDK.BYTE_ARRAY ptrByteArray = new HCNetSDK.BYTE_ARRAY(1024);    //数组
+        String strInBuffer = "POST /ISAPI/AccessControl/UserInfo/Search?format=json";
+        System.arraycopy(strInBuffer.getBytes(), 0, ptrByteArray.byValue, 0, strInBuffer.length());//字符串拷贝到数组中
+        ptrByteArray.write();
+
+        int lHandler = AcsService.hCNetSDK.NET_DVR_StartRemoteConfig(lUserID, HCNetSDK.NET_DVR_JSON_CONFIG, ptrByteArray.getPointer(), strInBuffer.length(), null, null);
+        HCNetSDK.BYTE_ARRAY ptrOutuff;
+        if (lHandler < 0) {
+            System.out.println("SearchUserInfo NET_DVR_StartRemoteConfig 失败,错误码为" + AcsService.hCNetSDK.NET_DVR_GetLastError());
+            return null;
+        } else {
+
+            Map<String, Object> parameter = new HashMap<>();
+            parameter.put("searchID", UUID.randomUUID()); // 查询id
+            parameter.put("maxResults", 30); // 最大查询数量
+
+            // 构造UserInfo对象
+            Map<String, String> userInfoParams = new HashMap<>();
+            userInfoParams.put("employeeNo", employeeNo);
+
+            // 将UserInfo对象包装在parameter中
+            parameter.put("UserInfo", userInfoParams);
+            System.out.println("查询条件"+parameter);
+
+            String template = "{\n" +
+                    "  \"UserInfoSearchCond\": {\n" +
+                    "    \"searchID\": \"${searchID}\",\n" +
+                    "    \"searchResultPosition\": 0,\n" +
+                    "    \"maxResults\": ${maxResults},\n" +
+                    "    \"UserInfo\": {\n" +
+                    "      \"employeeNo\": \"${UserInfo.employeeNo}\"\n" +
+                    "    }\n" +
+                    "  }\n" +
+                    "}";
+
+            // 生成请求体
+            String requestJson = replace(template, parameter);
+            System.out.println("生成的请求体:"+requestJson);
+
+            HCNetSDK.BYTE_ARRAY ptrInbuff = new HCNetSDK.BYTE_ARRAY(requestJson.length());
+            System.arraycopy(requestJson.getBytes(), 0, ptrInbuff.byValue, 0, requestJson.length());
+            ptrInbuff.write();
+
+            ptrOutuff = new HCNetSDK.BYTE_ARRAY(10 * 1024);
+
+            IntByReference pInt = new IntByReference(0);
+
+            while (true) {
+                int dwState = AcsService.hCNetSDK.NET_DVR_SendWithRecvRemoteConfig(lHandler, ptrInbuff.getPointer(),requestJson.length(), ptrOutuff.getPointer(), 20 * 1024, pInt);
+                if (dwState == -1) {
+                    System.out.println("NET_DVR_SendWithRecvRemoteConfig接口调用失败,错误码:" + AcsService.hCNetSDK.NET_DVR_GetLastError());
+                    break;
+                } else if (dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_NEED_WAIT) {
+                    System.out.println("配置等待");
+                    try {
+                        Thread.sleep(10);
+                    } catch (InterruptedException e) {
+                        e.printStackTrace();
+                    }
+                    continue;
+                } else if (dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_FAILED) {
+                    System.out.println("查询人员失败");
+                    break;
+                } else if (dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_EXCEPTION) {
+                    System.out.println("查询人员异常");
+                    break;
+                } else if (dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_SUCCESS) {
+                    ptrOutuff.read();
+                    System.out.println("查询人员成功, json:" + new String(ptrOutuff.byValue).trim());
+                    break;
+                } else if (dwState == HCNetSDK.NET_SDK_CONFIG_STATUS_FINISH) {
+                    System.out.println("获取人员完成");
+                    break;
+                }
+            }
+
+            if (!AcsService.hCNetSDK.NET_DVR_StopRemoteConfig(lHandler)) {
+                System.out.println("NET_DVR_StopRemoteConfig接口调用失败,错误码:" + AcsService.hCNetSDK.NET_DVR_GetLastError());
+            } else {
+                System.out.println("NET_DVR_StopRemoteConfig接口成功");
+            }
+        }
+        return new String(ptrOutuff.byValue).trim();
+    }
+
     /**
      * 删除人员信息
      *

+ 1 - 0
yudao-module-md/yudao-module-md-biz/src/main/java/Commom/ConfigFileUtil.java

@@ -59,6 +59,7 @@ public class ConfigFileUtil {
         return replace(source, parameter, "${", "}", false);
     }
 
+
     /**
      * 替换
      *

+ 24 - 5
yudao-module-md/yudao-module-md-biz/src/main/java/cn/iocoder/yudao/module/md/controller/admin/AcsController.java

@@ -31,19 +31,24 @@ public class AcsController {
     private AcsService acsService;
 
 
+    //批量添加用户和人脸
+    @PostMapping("/batchAddUsersAndFaces")
+    @Operation(summary = "批量添加用户和人脸")
+    public CommonResult<String> batchAddUsersAndFaces() throws JSONException {
 
-    /**
+            return null;
+}
+
+
+
+/**
      * 添加用户
      */
     @PostMapping("/addUser")
     @Operation(summary = "添加用户")
     public  CommonResult<String> addUser(@RequestParam String userId,String name) throws JSONException, UnsupportedEncodingException, InterruptedException {
-
         String result = acsService.addUser(userId,name);
-
-
         return success(result);
-
     }
 
 
@@ -62,6 +67,20 @@ public class AcsController {
 
     }
 
+    //lsq
+    @GetMapping("/getUser")
+    @Operation(summary = "查询单个用户信息")
+    public CommonResult<Object> getUser(@RequestParam String employeeNo) throws JSONException {
+        if (employeeNo != null) {
+            String result = acsService.getUser(employeeNo);
+            Gson gson = new Gson();
+            Object results = gson.fromJson(result, Object.class);
+            return success(result);
+        }else {
+            return null;
+        }
+    }
+
     /**
      * 删除用户
      */

+ 8 - 3
yudao-module-md/yudao-module-md-biz/src/main/java/cn/iocoder/yudao/module/md/service/AcsService.java

@@ -14,7 +14,7 @@ import java.io.UnsupportedEncodingException;
 @Service
 public class AcsService {
 
-    private static final String DEVICE_IP = "172.16.58.80";
+    private static final String DEVICE_IP = "172.16.58.105";
     private static final short DEVICE_PORT = 8000;
     private static final String DEVICE_USERNAME = "admin";
     private static final String DEVICE_PASSWORD = "ydm@2024";
@@ -144,11 +144,10 @@ public class AcsService {
     /**
      * 添加用户
      *
-     * @param userId 用户ID
+     * @param userId 用户ID =employeeNo
      */
     public String addUser(String userId,String name) throws JSONException, UnsupportedEncodingException, InterruptedException {
 
-
         return UserManage.addUserInfo(lUserID, userId,name);
     }
 
@@ -167,6 +166,12 @@ public class AcsService {
             return UserManage.searchUserInfo(lUserID);
 
     }
+//lsq查单个人的用户信息
+    public String getUser(String employeeNo) throws JSONException {
+
+        return UserManage.getUserInfo(lUserID,employeeNo);
+
+    }
 
     /**
      * 删除用户

+ 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, "学生考勤记录不存在");
 }

+ 176 - 1
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);
+    }
+
+
+}

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

@@ -35,4 +35,33 @@ public class UserPageReqVO extends PageParam {
     @Schema(description = "部门编号,同时筛选子部门", example = "1024")
     private Long deptId;
 
+    //新加的查询条件
+
+    /**
+     * 新加的个人信息列
+     */
+    @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;
+
+    @Schema(description = "用户昵称")
+    private String nickname;
+
+    private String supervisor;
+
+
 }

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

@@ -93,4 +93,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 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 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 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 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();
+   }
+
 }

+ 18 - 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);
 
+
     /**
      * 获得指定状态的用户们
      *
@@ -202,3 +218,5 @@ public interface AdminUserService {
     boolean isPasswordMatch(String rawPassword, String encodedPassword);
 
 }
+
+

+ 54 - 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;
@@ -249,11 +250,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);
@@ -327,7 +376,7 @@ public class AdminUserServiceImpl implements AdminUserService {
     }
 
     private AdminUserDO validateUserForCreateOrUpdate(Long id, String username, String mobile, String email,
-                                               Long deptId, Set<Long> postIds) {
+                                                      Long deptId, Set<Long> postIds) {
         // 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确
         return DataPermissionUtils.executeIgnore(() -> {
             // 校验用户存在
@@ -492,6 +541,9 @@ public class AdminUserServiceImpl implements AdminUserService {
         return passwordEncoder.matches(rawPassword, encodedPassword);
     }
 
+//    毕业生
+
+
     /**
      * 对密码进行加密
      *
@@ -503,3 +555,4 @@ public class AdminUserServiceImpl implements AdminUserService {
     }
 
 }
+