caozixuan преди 2 години
родител
ревизия
1e053f5a3a

+ 37 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/excel/TeacherTeamDto.java

@@ -0,0 +1,37 @@
+package com.qmth.distributed.print.business.bean.dto.excel;
+
+import com.qmth.teachcloud.common.annotation.ExcelNote;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * @Description: 教师团队导入模板
+ * @Author: CaoZixuan
+ * @Date: 2023-03-16
+ */
+public class TeacherTeamDto implements Serializable {
+    @ExcelNote(value = "姓名")
+    @NotNull
+    private String name;
+
+    @ExcelNote(value = "工号")
+    @NotNull
+    private String code;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+}

+ 52 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/TeacherTeamParam.java

@@ -0,0 +1,52 @@
+package com.qmth.distributed.print.business.bean.params;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.hibernate.validator.constraints.Length;
+import org.hibernate.validator.constraints.Range;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description: 教师团队参数
+ * @Author: CaoZixuan
+ * @Date: 2023-03-16
+ */
+public class TeacherTeamParam {
+    @ApiModelProperty("姓名")
+    @NotNull(message = "请填写姓名")
+    @Length(message = "请填写姓名")
+    private String teacherName;
+
+    @ApiModelProperty("工号")
+    @NotNull(message = "请填写工号")
+    @Length(message = "请填写工号")
+    private String teacherCode;
+
+    @ApiModelProperty("基础课程id")
+    @NotNull(message = "请选择课程")
+    private Long basicCourseId;
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getTeacherCode() {
+        return teacherCode;
+    }
+
+    public void setTeacherCode(String teacherCode) {
+        this.teacherCode = teacherCode;
+    }
+
+    public Long getBasicCourseId() {
+        return basicCourseId;
+    }
+
+    public void setBasicCourseId(Long basicCourseId) {
+        this.basicCourseId = basicCourseId;
+    }
+}

+ 5 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TeachStudent.java

@@ -32,7 +32,7 @@ public class TeachStudent extends BaseEntity implements Serializable {
 
     @ApiModelProperty(value = "教学课程id(冗余)")
     @JsonSerialize(using = ToStringSerializer.class)
-    private Long teachCourseId;
+    private Long basicCourseId;
 
     @ApiModelProperty(value = "用户id(冗余)")
     @JsonSerialize(using = ToStringSerializer.class)
@@ -62,12 +62,12 @@ public class TeachStudent extends BaseEntity implements Serializable {
         this.teachClazzId = teachClazzId;
     }
 
-    public Long getTeachCourseId() {
-        return teachCourseId;
+    public Long getBasicCourseId() {
+        return basicCourseId;
     }
 
-    public void setTeachCourseId(Long teachCourseId) {
-        this.teachCourseId = teachCourseId;
+    public void setBasicCourseId(Long basicCourseId) {
+        this.basicCourseId = basicCourseId;
     }
 
     public Long getUserId() {

+ 27 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TeachCourseService.java

@@ -3,6 +3,7 @@ package com.qmth.distributed.print.business.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.distributed.print.business.bean.params.TeachCourseParams;
+import com.qmth.distributed.print.business.bean.params.TeacherTeamParam;
 import com.qmth.distributed.print.business.bean.result.DictionaryResult;
 import com.qmth.distributed.print.business.bean.result.TeachCourseResult;
 import com.qmth.distributed.print.business.entity.TeachCourse;
@@ -70,4 +71,30 @@ public interface TeachCourseService extends IService<TeachCourse> {
      * @param idList 教学课程idList
      */
     void deleteTeachCourseBatch(List<Long> idList);
+
+    /**
+     * 自动创建教师团队
+     *
+     * @param teacherTeamParam 教师团队参数
+     * @param requestUser      请求的用户
+     */
+    void manualCreateTeacher(TeacherTeamParam teacherTeamParam, SysUser requestUser) throws IllegalAccessException;
+
+    /**
+     * 教师库添加教师团队
+     *
+     * @param basicCourseId 基础课程id
+     * @param userIdList    选择的用户(教师)id集合
+     * @param requestUser   请求的用户
+     */
+    void selectCreateTeacher(Long basicCourseId, List<Long> userIdList, SysUser requestUser);
+
+    /**
+     * 导入教师团队
+     *
+     * @param file          文件
+     * @param basicCourseId 基础课程id
+     * @param requestUser   请求的用户
+     */
+    void importTeacherTeam(MultipartFile file, Long basicCourseId, SysUser requestUser) throws IOException, NoSuchFieldException, IllegalAccessException;
 }

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -1983,7 +1983,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                 TeachCourse teachCourse = teachCourseService.getOne(new QueryWrapper<TeachCourse>().lambda().eq(TeachCourse::getSchoolId, schoolId).eq(TeachCourse::getBasicCourseId, basicCourseId));
                 if (Objects.nonNull(teachCourse)) {
                     // 教学班对象
-                    List<TeachStudent> teachStudentDatasource = teachStudentService.list(new QueryWrapper<TeachStudent>().lambda().eq(TeachStudent::getSchoolId, schoolId).eq(TeachStudent::getUserId, userId).eq(TeachStudent::getTeachCourseId, teachCourse.getId()));
+                    List<TeachStudent> teachStudentDatasource = teachStudentService.list(new QueryWrapper<TeachStudent>().lambda().eq(TeachStudent::getSchoolId, schoolId).eq(TeachStudent::getUserId, userId).eq(TeachStudent::getBasicCourseId, teachCourse.getBasicCourseId()));
 
                     // 教学班id集合
                     List<Long> teachClazzIdList = teachStudentDatasource.stream().map(TeachStudent::getTeachClazzId).distinct().collect(Collectors.toList());

+ 140 - 16
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TeachCourseServiceImpl.java

@@ -7,8 +7,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Lists;
 import com.qmth.distributed.print.business.bean.dto.excel.TeachCourseDto;
-import com.qmth.distributed.print.business.bean.dto.excel.TeachStudentImportDto;
+import com.qmth.distributed.print.business.bean.dto.excel.TeacherTeamDto;
 import com.qmth.distributed.print.business.bean.params.TeachCourseParams;
+import com.qmth.distributed.print.business.bean.params.TeacherTeamParam;
 import com.qmth.distributed.print.business.bean.result.DictionaryResult;
 import com.qmth.distributed.print.business.bean.result.TeachCourseResult;
 import com.qmth.distributed.print.business.entity.TeachClazz;
@@ -18,12 +19,17 @@ import com.qmth.distributed.print.business.service.TeachClazzService;
 import com.qmth.distributed.print.business.service.TeachCourseService;
 import com.qmth.teachcloud.common.base.BaseEntity;
 import com.qmth.teachcloud.common.bean.params.BasicCourseParams;
+import com.qmth.teachcloud.common.bean.params.UserSaveParams;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicCourse;
+import com.qmth.teachcloud.common.entity.SysRole;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.RoleTypeEnum;
 import com.qmth.teachcloud.common.service.BasicCourseService;
 import com.qmth.teachcloud.common.service.SysOrgService;
+import com.qmth.teachcloud.common.service.SysRoleService;
+import com.qmth.teachcloud.common.service.SysUserService;
 import com.qmth.teachcloud.common.util.ExcelUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import org.apache.commons.collections4.CollectionUtils;
@@ -55,6 +61,10 @@ public class TeachCourseServiceImpl extends ServiceImpl<TeachCourseMapper, Teach
     private SysOrgService sysOrgService;
     @Resource
     private TeachClazzService teachClazzService;
+    @Resource
+    private SysUserService sysUserService;
+    @Resource
+    private SysRoleService sysRoleService;
 
     @Override
     public IPage<TeachCourseResult> teachCoursePage(String courseName, int pageNumber, int pageSize, Long userId) {
@@ -103,18 +113,6 @@ public class TeachCourseServiceImpl extends ServiceImpl<TeachCourseMapper, Teach
             basicCourseParams.setTeachingRoomId(requestUser.getOrgId());
             basicCourseId = basicCourseService.saveBasicCourse(basicCourseParams, requestUser);
         }
-
-        // 唯一性检验
-        TeachCourse checkUnique = this.getOne(new QueryWrapper<TeachCourse>()
-                .lambda()
-                .eq(TeachCourse::getSchoolId, schoolId)
-                .eq(TeachCourse::getBasicCourseId, basicCourseId)
-                .eq(TeachCourse::getUserId, userId));
-        if (Objects.nonNull(checkUnique)) {
-            throw ExceptionResultEnum.ERROR.exception("用户【" + requestUser.getRealName() + "】已存在课程编号为【"
-                    + basicCourse.getCode() + "】课程名称为【" + basicCourse.getName() + "】的教学课程");
-        }
-
         TeachCourse teachCourse = new TeachCourse();
         teachCourse.setSchoolId(schoolId);
         teachCourse.setBasicCourseId(basicCourseId);
@@ -187,7 +185,7 @@ public class TeachCourseServiceImpl extends ServiceImpl<TeachCourseMapper, Teach
                         TeachCourseParams teachCourseParams = new TeachCourseParams();
                         teachCourseParams.setCourseCode(courseCode);
                         teachCourseParams.setCourseName(courseName);
-                        this.manualCreate(teachCourseParams,requestUser);
+                        this.manualCreate(teachCourseParams, requestUser);
                     }
                 }
             }
@@ -218,11 +216,11 @@ public class TeachCourseServiceImpl extends ServiceImpl<TeachCourseMapper, Teach
     @Override
     public void deleteTeachCourseBatch(List<Long> idList) {
         List<Long> basicCourseIdList = this.listByIds(idList).stream().map(TeachCourse::getBasicCourseId).distinct().collect(Collectors.toList());
-        if (CollectionUtils.isNotEmpty(basicCourseIdList)){
+        if (CollectionUtils.isNotEmpty(basicCourseIdList)) {
             List<TeachClazz> teachClazzList = teachClazzService.list(new QueryWrapper<TeachClazz>()
                     .lambda()
                     .in(TeachClazz::getBasicCourseId, basicCourseIdList));
-            if (CollectionUtils.isNotEmpty(teachClazzList)){
+            if (CollectionUtils.isNotEmpty(teachClazzList)) {
                 // 教学课程下有教学班不能删除
                 String msg = "";
                 List<Long> existCourseIdList = teachClazzList.stream().map(TeachClazz::getBasicCourseId).distinct().collect(Collectors.toList());
@@ -235,4 +233,130 @@ public class TeachCourseServiceImpl extends ServiceImpl<TeachCourseMapper, Teach
             this.removeByIds(idList);
         }
     }
+
+    @Transactional
+    @Override
+    public void manualCreateTeacher(TeacherTeamParam teacherTeamParam, SysUser requestUser) throws IllegalAccessException {
+        String name = teacherTeamParam.getTeacherName();
+        String code = teacherTeamParam.getTeacherCode();
+        Long basicCourseId = teacherTeamParam.getBasicCourseId();
+        Long requestUserId = requestUser.getId();
+        Long schoolId = requestUser.getSchoolId();
+        Long teacherId;
+
+        SysUser dbUser = sysUserService.getOne(new QueryWrapper<SysUser>().lambda()
+                .eq(SysUser::getSchoolId, schoolId)
+                .eq(SysUser::getCode, code));
+        if (Objects.nonNull(dbUser)) {
+            if (!name.equals(dbUser.getRealName())) {
+                // 用户名称不一致
+                throw ExceptionResultEnum.ERROR.exception("工号为【" + code + "】的教师用户名称错误");
+            } else {
+                teacherId = dbUser.getId();
+                // 判断在该教师团队下已经存在该教师
+                if (this.count(new QueryWrapper<TeachCourse>()
+                        .lambda()
+                        .eq(TeachCourse::getSchoolId, schoolId)
+                        .eq(TeachCourse::getBasicCourseId, basicCourseId)
+                        .eq(TeachCourse::getUserId, teacherId)) > 0) {
+                    throw ExceptionResultEnum.ERROR.exception("教师【" + name + "】已经在教师团队中");
+                }
+            }
+        } else {
+            // 不存在用户,直接创建一个学校老师用户
+            SysRole schoolTeacher = sysRoleService.getOne(new QueryWrapper<SysRole>()
+                    .lambda()
+                    .eq(SysRole::getType, RoleTypeEnum.SCHOOL_TEACHER));
+            if (Objects.isNull(schoolTeacher)) {
+                throw ExceptionResultEnum.ERROR.exception("缺少学校教师角色");
+            }
+            // 创建用户
+            UserSaveParams userSaveParams = new UserSaveParams();
+            userSaveParams.setSchoolId(schoolId);
+            userSaveParams.setLoginName(code);
+            userSaveParams.setRealName(code);
+            userSaveParams.setPassword(SystemConstant.DEFAULT_PASSWORD);
+            userSaveParams.setOrgId(requestUser.getOrgId());
+            userSaveParams.setEnable(true);
+            userSaveParams.setRoleIds(new Long[]{schoolTeacher.getId()});
+            teacherId = sysUserService.saveUser(userSaveParams);
+        }
+        // 添加教师团队
+        TeachCourse teachCourse = new TeachCourse();
+        teachCourse.setSchoolId(schoolId);
+        teachCourse.setBasicCourseId(basicCourseId);
+        teachCourse.setUserId(teacherId);
+        teachCourse.setEnable(true);
+        teachCourse.insertInfo(requestUserId);
+        this.save(teachCourse);
+    }
+
+    @Transactional
+    @Override
+    public void selectCreateTeacher(Long basicCourseId, List<Long> userIdList, SysUser requestUser) {
+        Long schoolId = requestUser.getSchoolId();
+        Long requestUserId = requestUser.getId();
+        if (CollectionUtils.isNotEmpty(userIdList)) {
+            // 过滤userIdList
+            userIdList = sysUserService.listByIds(userIdList).stream()
+                    .filter(SysUser::getEnable)
+                    .map(BaseEntity::getId)
+                    .distinct()
+                    .collect(Collectors.toList());
+
+            if (CollectionUtils.isNotEmpty(userIdList)) {
+                List<Long> alreadyCreated = this.list(new QueryWrapper<TeachCourse>().lambda()
+                                .in(TeachCourse::getUserId, userIdList)
+                                .eq(TeachCourse::getBasicCourseId, basicCourseId))
+                        .stream()
+                        .map(TeachCourse::getUserId)
+                        .distinct()
+                        .collect(Collectors.toList());
+
+                // 去掉已经在该课程教师团队的老师
+                userIdList.removeAll(alreadyCreated);
+
+                // 创建教学课程
+                List<TeachCourse> teachCourseList = userIdList.stream().flatMap(e -> {
+                    TeachCourse teachCourse = new TeachCourse();
+                    teachCourse.setSchoolId(schoolId);
+                    teachCourse.setBasicCourseId(basicCourseId);
+                    teachCourse.setUserId(e);
+                    teachCourse.setEnable(true);
+                    teachCourse.insertInfo(requestUserId);
+                    return Stream.of(teachCourse);
+                }).collect(Collectors.toList());
+
+                // 新增课程
+                this.saveBatch(teachCourseList);
+            }
+        }
+    }
+
+    @Transactional
+    @Override
+    public void importTeacherTeam(MultipartFile file, Long basicCourseId, SysUser requestUser) throws IOException, NoSuchFieldException, IllegalAccessException {
+        List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(file.getInputStream(), Lists.newArrayList(TeacherTeamDto.class), (finalExcelList, finalColumnNameList, finalExcelErrorList) -> {
+            if (finalExcelErrorList.size() > 0) {
+                throw ExceptionResultEnum.ERROR.exception(JSONObject.toJSONString(finalExcelErrorList));
+            }
+            return finalExcelList;
+        });
+
+        if (Objects.nonNull(finalList) && finalList.size() > 0) {
+            for (int i = 0; i < finalList.size(); i++) {
+                LinkedMultiValueMap<Integer, Object> map = finalList.get(i);
+                List<Object> teacherTeamImportList = map.get(i);
+                for (int y = 0; y < Objects.requireNonNull(teacherTeamImportList).size(); y++) {
+                    if (teacherTeamImportList.get(y) instanceof TeacherTeamDto) {
+                        TeacherTeamDto teacherTeamDto = (TeacherTeamDto) teacherTeamImportList.get(y);
+                        TeacherTeamParam teacherTeamParam = new TeacherTeamParam();
+                        teacherTeamParam.setTeacherCode(teacherTeamDto.getCode());
+                        teacherTeamParam.setTeacherName(teacherTeamDto.getName());
+                        this.manualCreateTeacher(teacherTeamParam, requestUser);
+                    }
+                }
+            }
+        }
+    }
 }

+ 3 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TeachStudentServiceImpl.java

@@ -20,6 +20,7 @@ import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.service.BasicStudentService;
 import com.qmth.teachcloud.common.util.ExcelUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.LinkedMultiValueMap;
@@ -156,11 +157,8 @@ public class TeachStudentServiceImpl extends ServiceImpl<TeachStudentMapper, Tea
         }
 
         List<TeachStudent> teachStudentList = new ArrayList<>();
-        if (basicStudentList != null && basicStudentList.size() > 0) {
+        if (CollectionUtils.isNotEmpty(basicStudentList)) {
             for (BasicStudent basicStudent : basicStudentList) {
-//                if (!SystemConstant.longNotNull(basicStudent.getCampusId())){
-//                    throw ExceptionResultEnum.ERROR.exception("学号为【" + basicStudent.getStudentCode() + "】,名称为【" + basicStudent.getStudentName() + "】的学生缺失'校区信息',请联系管理员创建");
-//                }
                 Long basicStudentId = basicStudent.getId();
                 // 批量新增重复的课程跳过
                 if (this.checkTeachStudentRepeat(basicStudentId, teachClazzId, schoolId)) {
@@ -171,7 +169,7 @@ public class TeachStudentServiceImpl extends ServiceImpl<TeachStudentMapper, Tea
                 teachStudent.setSchoolId(basicStudent.getSchoolId());
                 teachStudent.setStudentId(basicStudent.getId());
                 teachStudent.setTeachClazzId(teachClazzId);
-                teachStudent.setTeachCourseId(teachClazz.getBasicCourseId());
+                teachStudent.setBasicCourseId(teachClazz.getBasicCourseId());
                 teachStudent.setUserId(teachClazz.getUserId());
                 teachStudent.insertInfo(requestUser.getId());
                 teachStudentList.add(teachStudent);

+ 3 - 1
distributed-print-business/src/main/resources/db/3.2.3更新脚本-增量.sql

@@ -1145,4 +1145,6 @@ ALTER TABLE `teach_clazz`
     CHANGE COLUMN `teach_course_id` `basic_course_id` BIGINT NOT NULL COMMENT '基础课程主键' ,
     DROP INDEX `teach_clazz_unique` ,
     ADD UNIQUE INDEX `teach_clazz_unique` (`school_id` ASC, `basic_course_id` ASC, `teach_clazz_name` ASC) INVISIBLE;
-;
+;
+ALTER TABLE `teach_student`
+    CHANGE COLUMN `teach_course_id` `basic_course_id` BIGINT NOT NULL COMMENT '基础课程id(冗余)' ;

+ 9 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/BasicCourseController.java

@@ -146,5 +146,14 @@ public class BasicCourseController {
                        HttpServletResponse response) throws Exception {
         basicCourseService.exportData(response, SystemConstant.convertIdToLong(belongOrgId), courseName, SystemConstant.convertIdToLong(startCreateTime), SystemConstant.convertIdToLong(endCreateTime));
     }
+
+    @ApiOperation(value = "课程管理-查询")
+    @RequestMapping(value = "/list_by_org", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
+    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.SEARCH)
+    public Result findBasicCourseListByOrg(@ApiParam(value = "所属机构id") @RequestParam(required = false) String belongOrgId) {
+        // TODO: 2023/3/16 根据机构查课程 
+        return null;
+    }
 }
 

+ 37 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/TeachCourseController.java

@@ -2,6 +2,7 @@ package com.qmth.distributed.print.api;
 
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.distributed.print.business.bean.params.TeachCourseParams;
+import com.qmth.distributed.print.business.bean.params.TeacherTeamParam;
 import com.qmth.distributed.print.business.bean.result.EditResult;
 import com.qmth.distributed.print.business.service.TeachCourseService;
 import com.qmth.teachcloud.common.annotation.OperationLogDetail;
@@ -102,4 +103,39 @@ public class TeachCourseController {
         teachCourseService.deleteTeachCourseBatch(idList);
         return ResultUtil.ok();
     }
-}
+
+    @ApiOperation(value = "教师团队-手动添加教师")
+    @RequestMapping(value = "/manual_create_teacher", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "创建成功", response = EditResult.class)})
+    @OperationLogDetail(detail = "手动添加教师,参数[{{teacherTeamParam}}]", customizedOperationType = CustomizedOperationTypeEnum.ADD)
+    public Result manualCreateTeacher(@Valid @RequestBody TeacherTeamParam teacherTeamParam, BindingResult bindingResult) throws IllegalAccessException {
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        if (bindingResult.hasErrors()) {
+            return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
+        }
+        teachCourseService.manualCreateTeacher(teacherTeamParam, requestUser);
+        return ResultUtil.ok();
+    }
+
+    @ApiOperation(value = "教师团队-用户表选择教师")
+    @RequestMapping(value = "/select_create_teacher", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "创建成功", response = EditResult.class)})
+    @OperationLogDetail(detail = "从教师库选择并加入教师团队,参数[{{basicCourseIdList}}]", customizedOperationType = CustomizedOperationTypeEnum.ADD)
+    public Result selectCreate(@ApiParam(value = "基础课程id", required = true) @RequestParam Long basicCourseId,
+                               @ApiParam(value = "教师id集合", required = true) @RequestParam List<Long> userIdList) {
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        teachCourseService.selectCreateTeacher(basicCourseId, userIdList, requestUser);
+        return ResultUtil.ok();
+    }
+
+    @ApiOperation(value = "教师团队-批量导入教师")
+    @RequestMapping(value = "/import_teacher", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "创建成功", response = EditResult.class)})
+    @OperationLogDetail(detail = "教学课程批量导入", customizedOperationType = CustomizedOperationTypeEnum.ADD)
+    public Result importTeacherTeam(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file,
+                                    @ApiParam(value = "基础课程", required = true) @RequestParam Long basicCourseId) throws IOException, NoSuchFieldException, IllegalAccessException {
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        teachCourseService.importTeacherTeam(file, basicCourseId, requestUser);
+        return ResultUtil.ok();
+    }
+}