zouxuan 5 miesięcy temu
rodzic
commit
b7c7d11950

+ 23 - 25
cooleshow-app/src/main/java/com/yonge/cooleshow/admin/controller/TeacherController.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.admin.controller;
 
+import cn.hutool.core.net.URLEncodeUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.admin.io.request.TeacherBindingUserVo;
@@ -7,25 +8,22 @@ import com.yonge.cooleshow.admin.io.request.teacher.TeacherVO;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.TeacherDto;
-import com.yonge.cooleshow.biz.dal.dto.VipSubmitReq;
 import com.yonge.cooleshow.biz.dal.dto.req.TeacherSubmitReq;
 import com.yonge.cooleshow.biz.dal.dto.search.TeacherSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.VipRecordSearch;
+import com.yonge.cooleshow.biz.dal.entity.FileImportInfo;
 import com.yonge.cooleshow.biz.dal.entity.TeacherStyleVideo;
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.queryInfo.TeacherBindingUserQueryInfo;
 import com.yonge.cooleshow.biz.dal.queryInfo.TeacherQueryInfo;
-import com.yonge.cooleshow.biz.dal.service.ImGroupService;
-import com.yonge.cooleshow.biz.dal.service.MemberPriceSettingsService;
-import com.yonge.cooleshow.biz.dal.service.TeacherService;
-import com.yonge.cooleshow.biz.dal.service.UserBindingTeacherService;
-import com.yonge.cooleshow.biz.dal.service.VipCardRecordService;
+import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.vo.MyFens;
 import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
 import com.yonge.cooleshow.biz.dal.vo.VipRecordVo;
 import com.yonge.cooleshow.biz.dal.vo.userBindingTeacher.UserBindingCourseWrapper;
 import com.yonge.cooleshow.biz.dal.vo.userBindingTeacher.UserBindingTeacherWrapper;
+import com.yonge.cooleshow.biz.dal.wrapper.FileImportInfoWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.teacher.TeacherWrapper;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
@@ -44,16 +42,9 @@ import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.util.CollectionUtils;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
@@ -73,21 +64,16 @@ public class TeacherController extends BaseController {
 
     @Resource
     private SysUserFeignService sysUserFeignService;
-    @Autowired
+    @Resource
     private TeacherService teacherService;
-
-    @Autowired
-    private MemberPriceSettingsService memberPriceSettingsService;
-
-
-    @Autowired
+    @Resource
     private VipCardRecordService vipCardRecordService;
-
-    @Autowired
+    @Resource
     private UserBindingTeacherService userBindingTeacherService;
-
-    @Autowired
+    @Resource
     private ImGroupService imGroupService;
+    @Resource
+    private ExcelAnalyseCoreService excelAnalyseCoreService;
 
     /**
      * 查询单条
@@ -167,6 +153,18 @@ public class TeacherController extends BaseController {
         return teacherService.submit(teacherSubmitReq);
     }
 
+    @PostMapping("/import")
+    @ApiOperation(value = "老师导入")
+    @PreAuthorize("@pcs.hasPermissions('teacher/import')")
+    public HttpResponseResult<FileImportInfo> importFile(@RequestBody FileImportInfoWrapper.FileImport wrapper) {
+
+        wrapper.setImportUrl(URLEncodeUtil.encode(wrapper.getImportUrl()));
+
+        // 读取数据
+        return HttpResponseResult.succeed(excelAnalyseCoreService.analyseReadExcelData(
+                JSON.parseObject(JSON.toJSONString(wrapper), FileImportInfoWrapper.FileImportInfo.class)));
+    }
+
     @PostMapping("/updateTenant")
     @ApiOperation(value = "新增或修改机构", notes = "传入teacher")
     @PreAuthorize("@pcs.hasPermissions('teacher/updateTenant')")

+ 3 - 1
cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/EImportType.java

@@ -11,7 +11,9 @@ import com.yonge.toolset.base.enums.BaseEnum;
  */
 public enum EImportType implements BaseEnum<String, EImportType> {
 
-    TENANT("机构收入")
+    TENANT("机构收入"),
+    TEACHER("老师导入"),
+    STUDENT("学生导入")
     ;
 
     @EnumValue

+ 179 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/execl/analysis/TeacherImportAnalysis.java

@@ -0,0 +1,179 @@
+package com.yonge.cooleshow.biz.dal.execl.analysis;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.enums.CellExtraTypeEnum;
+import com.alibaba.excel.metadata.Sheet;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.microsvc.toolkit.middleware.excel.analysis.AnalysisContext;
+import com.microsvc.toolkit.middleware.excel.analysis.DataAnalysis;
+import com.microsvc.toolkit.middleware.excel.util.DownloadManager;
+import com.yonge.cooleshow.biz.dal.execl.entity.TeacherImportWrapper;
+import com.yonge.cooleshow.biz.dal.execl.listener.TeacherImportListener;
+import com.yonge.cooleshow.biz.dal.service.EasyExcelService;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+
+import java.io.File;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+
+@Slf4j
+@Getter
+@Setter
+public class TeacherImportAnalysis extends DataAnalysis<TeacherImportAnalysis> {
+
+
+    private List<TeacherImportWrapper.TeacherImport> teacherImportWrappers;
+
+    // Excel解析服务
+    private EasyExcelService easyExcelService;
+
+    private final Map<String, TeacherImportWrapper.TeacherImport> recordMap = Maps.newHashMap();
+    private final Map<String, Long> subjectMap = Maps.newHashMap();
+    private final Map<String, Long> tenantMap = Maps.newHashMap();
+    public TeacherImportAnalysis(AnalysisContext context) {
+        super(context);
+    }
+
+    public static TeacherImportAnalysis build(EasyExcelService easyExcelService) {
+        TeacherImportAnalysis analysis = new TeacherImportAnalysis(AnalysisContext.builder().build());
+        analysis.setEasyExcelService(easyExcelService);
+        analysis.setTeacherImportWrappers(Lists.newArrayList());
+        return analysis;
+
+    }
+
+
+    /**
+     * 读取文件数据到内存
+     *
+     * @param path 本地文件地址
+     */
+    @Override
+    public void read(String path) {
+
+        File file = new File(path);
+        List<Sheet> sheets = EasyExcel.read(file).build().getSheets();
+        if (CollectionUtils.isNotEmpty(sheets)) {
+
+            sheets.forEach(item -> {
+                // 读取数据
+                EasyExcel.read(file, TeacherImportWrapper.TeacherImport.class, new TeacherImportListener(getTeacherImportWrappers(), item.getSheetName()))
+                        .extraRead(CellExtraTypeEnum.MERGE).sheet(item.getSheetName()).doRead();
+            });
+
+        }
+
+        // 删除本地缓存文件
+        DownloadManager.getInstance().deleteOnExit(path);
+    }
+
+    /**
+     * 校验数据合法
+     *
+     * @return Map<Integer, String>
+     */
+    @Override
+    public Map<Integer, String> verify() {
+
+        // 加载校验数据参数
+        if (Objects.nonNull(getTeacherImportWrappers())) {
+            loadVerifyParamData();
+        }
+
+        Map<Integer, String> verifyDataMap = Maps.newLinkedHashMap();
+
+        // 校验每条入库记录数据合法性
+        StringBuffer ret = new StringBuffer();
+        for (TeacherImportWrapper.TeacherImport item : getTeacherImportWrappers()) {
+
+            // 检测机构编号,金额,订单号,结算状态
+            if (StringUtils.isEmpty(item.getUsername())) {
+                ret.append("用户昵称不能为空;");
+            }
+            if (StringUtils.isEmpty(item.getRealName())) {
+                ret.append("真实姓名不能为空;");
+            }else {
+                if(!item.getRealName().matches("^[\\u4e00-\\u9fa5]{2,10}$")){
+                    ret.append("真实姓名格式不正确;");
+                }
+            }
+            if (StringUtils.isEmpty(item.getPhone())) {
+                ret.append("手机号不能为空;");
+            }else {
+                //手机号校验
+                if (!item.getPhone().matches("^1[3-9]\\d{9}$")) {
+                    ret.append("手机号格式不正确;");
+                }
+            }
+            if (StringUtils.isNotEmpty(item.getIdCardNo())) {
+                //身份证校验
+                if (!item.getIdCardNo().matches("(^\\d{6}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}(\\d|X|x)$)|(^\\d{6}\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}$)")) {
+                    ret.append("身份证格式不正确;");
+                }
+            }
+            if (StringUtils.isEmpty(item.getSubjectName())) {
+                ret.append("老师声部不能为空;");
+            }else {
+                if (!subjectMap.containsKey(item.getSubjectName())) {
+                    ret.append("声部无效:").append(item.getSubjectName());
+                }
+            }
+            if (item.getIsTestUser() == null) {
+                ret.append("是否测试用户不能为空;");
+            }
+            if (item.getSettlementFrom() == null) {
+                ret.append("结算方式不能为空;");
+            }
+            if (item.getCustomerService() == null) {
+                ret.append("是否客服不能为空;");
+            }
+            if (StringUtils.isNotEmpty(ret)) {
+                verifyDataMap.put(item.getRowIndex(), ret.toString());
+                ret = new StringBuffer(); // 重置数据状态
+            }
+        }
+
+        // 数据校验记录信息
+        getContext().total(getTeacherImportWrappers().size()).failure(verifyDataMap.size())
+                .setSuccess(getContext().getTotal() - getContext().getFailure());
+
+        return verifyDataMap;
+    }
+
+    /**
+     * 数据转换
+     */
+    @Override
+    public void convert() {
+
+    }
+
+    /**
+     * 加载校验数据参数
+     */
+    private void loadVerifyParamData() {
+        //校验数据
+        //获取所有手机号
+
+        subjectMap.putAll(easyExcelService.getSubjectMap());
+        tenantMap.putAll(easyExcelService.getTenantMap());
+    }
+
+
+    /**
+     * 数据对象
+     * @return RoomInfoAnalysis
+     */
+    @Override
+    public TeacherImportAnalysis get() {
+        return this;
+    }
+
+}

+ 136 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/execl/entity/TeacherImportWrapper.java

@@ -0,0 +1,136 @@
+package com.yonge.cooleshow.biz.dal.execl.entity;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.enums.CellDataTypeEnum;
+import com.alibaba.excel.metadata.CellData;
+import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.property.ExcelContentProperty;
+import com.yonge.cooleshow.common.enums.ESettlementFrom;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+
+@Data
+public class TeacherImportWrapper {
+
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class TeacherImport{
+        @ExcelProperty(value = "老师昵称")
+        private String username;
+
+        @ExcelProperty(value = "手机号")
+        private String phone;
+
+        @ExcelProperty(value = "真实姓名")
+        private String realName;
+
+        @ExcelProperty(value = "身份证号")
+        private String idCardNo;
+
+        @ExcelProperty(value = "专业技能")
+        private String subjectName;
+
+        @ExcelIgnore
+        private String subjectId;
+
+        @ExcelProperty(value = "是否测试用户", converter = BooleanConvert.class)
+        private Boolean isTestUser;
+
+        @ExcelProperty("所属机构")
+        private Long tenantName;
+
+        @ExcelIgnore
+        private Long tenantId;
+
+        @ExcelProperty(value = "结算方式", converter = SettlementFromConvert.class)
+        private ESettlementFrom settlementFrom;
+
+        @ExcelProperty(value = "是否客服", converter = BooleanConvert.class)
+        private Boolean customerService;
+
+        @ExcelIgnore
+        private Integer rowIndex;
+        @ExcelIgnore
+        private String sheetName;
+
+
+        public TeacherImport rowIndex(Integer rowIndex) {
+            this.rowIndex = rowIndex;
+            return this;
+        }
+
+        public TeacherImport sheetName(String sheetName) {
+            this.sheetName = sheetName;
+            return this;
+        }
+
+    }
+
+    public static class BooleanConvert implements Converter<Boolean> {
+
+        @Override
+        public Class<Boolean> supportJavaTypeKey() {
+            return Boolean.class;
+        }
+
+        @Override
+        public CellDataTypeEnum supportExcelTypeKey() {
+            return CellDataTypeEnum.STRING;
+        }
+
+        @Override
+        public Boolean convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+            String stringValue = cellData.getStringValue();
+            if (StringUtils.isNotEmpty(stringValue)) {
+                return "是".equals(stringValue) || "1".equals(stringValue);
+            }
+            return null;
+        }
+
+        @Override
+        public CellData convertToExcelData(Boolean aBoolean, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+            return null;
+        }
+    }
+
+
+    public static class SettlementFromConvert implements Converter<ESettlementFrom> {
+
+        @Override
+        public Class<ESettlementFrom> supportJavaTypeKey() {
+            return ESettlementFrom.class;
+        }
+
+        @Override
+        public CellDataTypeEnum supportExcelTypeKey() {
+            return CellDataTypeEnum.STRING;
+        }
+
+        @Override
+        public ESettlementFrom convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+            String stringValue = cellData.getStringValue();
+            if (StringUtils.isNotEmpty(stringValue)) {
+                if ("不结算".equals(stringValue)) {
+                    return ESettlementFrom.NO;
+                } else if ("结算给老师".equals(stringValue)) {
+                    return ESettlementFrom.TEACHER;
+                } else if ("结算给机构".equals(stringValue)) {
+                    return ESettlementFrom.TENANT;
+                }
+            }
+            return null;
+        }
+
+        @Override
+        public CellData<ESettlementFrom> convertToExcelData(ESettlementFrom o, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+            return null;
+        }
+    }
+}

+ 92 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/execl/listener/TeacherImportListener.java

@@ -0,0 +1,92 @@
+package com.yonge.cooleshow.biz.dal.execl.listener;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.enums.RowTypeEnum;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.alibaba.excel.metadata.CellExtra;
+import com.google.common.collect.Lists;
+import com.yonge.cooleshow.biz.dal.execl.entity.TeacherImportWrapper;
+import lombok.Getter;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.List;
+import java.util.Optional;
+
+/**
+ * 课件信息读取监听器
+ * Created by Eric.Shang on 2020/7/1.
+ */
+@Slf4j
+@Getter
+public class TeacherImportListener extends AnalysisEventListener<TeacherImportWrapper.TeacherImport> {
+
+    // 课件信息
+    private final List<TeacherImportWrapper.TeacherImport> importList;
+    // sheet名称
+    private final String sheetName;
+    // 合并标识
+    private Boolean mergeFlag;
+
+    public TeacherImportListener(List<TeacherImportWrapper.TeacherImport> examinations, String sheetName) {
+        // 单元测试数据
+        this.importList = Optional.ofNullable(examinations).orElse(Lists.newArrayList());
+        // sheet名称
+        this.sheetName = sheetName;
+    }
+
+    /**
+     * 读取每行数据触发
+     * @param  examination 数据内容
+     * @param analysisContext AnalysisContext
+     */
+    @Override
+    public void invoke(TeacherImportWrapper.TeacherImport examination, AnalysisContext analysisContext) {
+        // 忽略空行读取
+        //analysisContext.readWorkbookHolder().setIgnoreEmptyRow(false);
+        // 读取数据
+        getImportList().add(examination.rowIndex(getImportList().size() + 2).sheetName(getSheetName()));
+    }
+
+    /**
+     * 空行数据判定
+     * @param context AnalysisContext
+     * @return boolean
+     */
+    @Override
+    public boolean hasNext(AnalysisContext context) {
+        // 忽略空行判定
+        if (RowTypeEnum.EMPTY.equals(context.readRowHolder().getRowType())){
+            doAfterAllAnalysed(context);
+            return false;
+        }
+
+        return super.hasNext(context);
+    }
+
+    /**
+     * 数据解板读完触发
+     * @param analysisContext AnalysisContext
+     */
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+        // 这里也要保存数据,确保最后遗留的数据也存储到数据库
+    }
+
+    /**
+     * 额外信息(批注、超链接、合并单元格信息读取)
+     * @param extra CellExtra
+     * @param context AnalysisContext
+     */
+    @Override
+    public void extra(CellExtra extra, AnalysisContext context) {
+        switch (extra.getType()) {
+            case MERGE:
+                mergeFlag = false;
+                break;
+            case COMMENT:
+            case HYPERLINK:
+            default:
+                break;
+        }
+    }
+}

+ 8 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/EasyExcelService.java

@@ -4,6 +4,7 @@ import com.yonge.cooleshow.biz.dal.entity.TenantAccountRecord;
 
 import java.util.Collection;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Created by Eric.Shang on 2023/4/25.
@@ -18,4 +19,11 @@ public interface EasyExcelService {
      * @return
      */
     List<TenantAccountRecord> getRecordById(List<String> ids);
+
+    //获取声部map
+
+    Map<String,Long> getSubjectMap();
+
+    //获取机构map
+    Map<String,Long> getTenantMap();
 }

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherService.java

@@ -11,6 +11,7 @@ import com.yonge.cooleshow.biz.dal.entity.Subject;
 import com.yonge.cooleshow.biz.dal.entity.Teacher;
 import com.yonge.cooleshow.biz.dal.entity.TeacherStyleVideo;
 import com.yonge.cooleshow.biz.dal.enums.TeacherTagEnum;
+import com.yonge.cooleshow.biz.dal.execl.entity.TeacherImportWrapper;
 import com.yonge.cooleshow.biz.dal.queryInfo.TeacherQueryInfo;
 import com.yonge.cooleshow.biz.dal.vo.*;
 import com.yonge.cooleshow.biz.dal.wrapper.StatGroupWrapper;
@@ -216,4 +217,6 @@ public interface TeacherService extends IService<Teacher> {
     void delFans(Long studentId, Long teacherId);
 
     TeacherFreeTimeWrapper.TeacherFreeConfig queryTeacherTime();
+
+    void importTeacher(List<TeacherImportWrapper> collect);
 }

+ 24 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/EasyExcelServiceImpl.java

@@ -1,14 +1,20 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
+import com.yonge.cooleshow.biz.dal.entity.Subject;
 import com.yonge.cooleshow.biz.dal.entity.TenantAccountRecord;
+import com.yonge.cooleshow.biz.dal.entity.TenantInfo;
 import com.yonge.cooleshow.biz.dal.service.EasyExcelService;
+import com.yonge.cooleshow.biz.dal.service.SubjectService;
 import com.yonge.cooleshow.biz.dal.service.TenantAccountRecordService;
+import com.yonge.cooleshow.biz.dal.service.TenantInfoService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * Excel解析服务类型
@@ -18,8 +24,12 @@ import java.util.List;
 @Service
 public class EasyExcelServiceImpl implements EasyExcelService {
 
-    @Autowired
+    @Resource
     private TenantAccountRecordService tenantAccountRecordService;
+    @Resource
+    private SubjectService subjectService;
+    @Resource
+    private TenantInfoService tenantInfoService;
 
     @Override
     public List<TenantAccountRecord> getRecordById(List<String> ids) {
@@ -28,4 +38,16 @@ public class EasyExcelServiceImpl implements EasyExcelService {
                 .list();
 
     }
+
+    @Override
+    public Map<String,Long> getSubjectMap() {
+        List<Subject> all = subjectService.getDao().getAll();
+        return CollectionUtils.isEmpty(all) ? null : all.stream().collect(Collectors.toMap(Subject::getName, Subject::getId));
+    }
+
+    @Override
+    public Map<String, Long> getTenantMap() {
+        List<TenantInfo> list = tenantInfoService.lambdaQuery().list();
+        return CollectionUtils.isEmpty(list) ? null : list.stream().collect(Collectors.toMap(TenantInfo::getName, TenantInfo::getId));
+    }
 }

+ 35 - 12
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ExcelAnalyseCoreServiceImpl.java

@@ -1,6 +1,5 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
-import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.microsvc.toolkit.common.tools.DownloadManager;
 import com.microsvc.toolkit.common.tools.ThreadPool;
@@ -8,12 +7,11 @@ import com.microsvc.toolkit.middleware.excel.analysis.AnalysisContext;
 import com.microsvc.toolkit.middleware.oss.OssPluginContext;
 import com.microsvc.toolkit.middleware.oss.impl.TencentOssPlugin;
 import com.yonge.cooleshow.biz.dal.entity.FileImportInfo;
+import com.yonge.cooleshow.biz.dal.execl.analysis.TeacherImportAnalysis;
 import com.yonge.cooleshow.biz.dal.execl.analysis.TenantAccountRecordImportAnalysis;
+import com.yonge.cooleshow.biz.dal.execl.entity.TeacherImportWrapper;
 import com.yonge.cooleshow.biz.dal.execl.entity.TenantAccountRecordImport;
-import com.yonge.cooleshow.biz.dal.service.EasyExcelService;
-import com.yonge.cooleshow.biz.dal.service.ExcelAnalyseCoreService;
-import com.yonge.cooleshow.biz.dal.service.FileImportInfoService;
-import com.yonge.cooleshow.biz.dal.service.TenantAccountRecordService;
+import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.wrapper.FileImportInfoWrapper;
 import com.yonge.toolset.base.exception.BizException;
 import lombok.extern.slf4j.Slf4j;
@@ -21,9 +19,9 @@ import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.openxml4j.exceptions.NotOfficeXmlFileException;
 import org.joda.time.DateTime;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.io.File;
 import java.util.List;
 import java.util.Optional;
@@ -37,16 +35,16 @@ import java.util.stream.Collectors;
 @Service
 public class ExcelAnalyseCoreServiceImpl implements ExcelAnalyseCoreService {
 
-    @Autowired
+    @Resource
     private EasyExcelService easyExcelService;
-    @Autowired
+    @Resource
     private OssPluginContext ossPluginContext;
-
-    @Autowired
+    @Resource
     private FileImportInfoService fileImportInfoService;
-
-    @Autowired
+    @Resource
     private TenantAccountRecordService tenantAccountRecordService;
+    @Resource
+    private TeacherService teacherService;
 
     /**
      * 异步读取数据
@@ -91,6 +89,10 @@ public class ExcelAnalyseCoreServiceImpl implements ExcelAnalyseCoreService {
                 case TENANT: // 课件导入
                     readTenantExcelData(wrapper);
                     break;
+                case TEACHER: // 老师导入
+                    break;
+                case STUDENT: // 学生导入
+                    break;
                 default:
                     break;
             }
@@ -137,6 +139,27 @@ public class ExcelAnalyseCoreServiceImpl implements ExcelAnalyseCoreService {
         tenantAccountRecordService.updatePostStatus(collect);
     }
 
+    private void readTeacherExcelData(FileImportInfoWrapper.FileImportInfo wrapper) {
+
+        // 解析excel文件,生成EchoInfoAnalysis对象
+        TeacherImportAnalysis analysis = TeacherImportAnalysis.build(easyExcelService).start(wrapper.getImportUrl()).get();
+
+        AnalysisContext context = analysis.getContext();
+        // 生成导入数据记录
+        createFileImportRecord(wrapper, context);
+
+        // 入库业务数据
+        List<TeacherImportWrapper> collect = analysis.getTeacherImportWrappers().stream()
+                .filter(x -> !Optional.ofNullable(x.getId()).orElse("").equals("."))
+                .collect(Collectors.toList());
+        if (context.getFailure() > 0) {
+            log.info("readTeacherExcelData collect.size={}", collect.size());
+            return;
+        }
+
+        teacherService.importTeacher(collect);
+    }
+
     /**
      * 生成导入数据记录
      *

+ 6 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java

@@ -1,8 +1,6 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -28,6 +26,7 @@ import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.TeacherTagEnum;
 import com.yonge.cooleshow.biz.dal.enums.TeacherTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.im.EImUserFriendSourceForm;
+import com.yonge.cooleshow.biz.dal.execl.entity.TeacherImportWrapper;
 import com.yonge.cooleshow.biz.dal.mapper.TenantGroupMapper;
 import com.yonge.cooleshow.biz.dal.mapper.UserTenantBindRecordMapper;
 import com.yonge.cooleshow.biz.dal.queryInfo.TeacherQueryInfo;
@@ -1687,4 +1686,9 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
         teacherFreeConfig.setIntervalTime(maxTime);
         return teacherFreeConfig;
     }
+
+    @Override
+    public void importTeacher(List<TeacherImportWrapper> collect) {
+
+    }
 }