update 更新查询身份接口

develop
hhb@hotmail.com 3 days ago
parent e621ed1c8c
commit a7be435dc6

@ -2,8 +2,10 @@ package cn.teammodel.controller.admin.controller;
import cn.teammodel.common.R; import cn.teammodel.common.R;
import cn.teammodel.controller.admin.service.TeacherService; import cn.teammodel.controller.admin.service.TeacherService;
import cn.teammodel.model.dto.admin.teacher.CoreUser;
import cn.teammodel.model.dto.admin.teacher.GpTeacherDto; import cn.teammodel.model.dto.admin.teacher.GpTeacherDto;
import cn.teammodel.model.dto.admin.teacher.TeacherDto; import cn.teammodel.model.dto.admin.teacher.TeacherDto;
import cn.teammodel.model.entity.school.Teacher;
import cn.teammodel.model.vo.admin.GpTeacherVo; import cn.teammodel.model.vo.admin.GpTeacherVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@ -105,4 +107,16 @@ public class TeacherController {
List<String> res = teacherService.batchImportPtTeachers(gpTeacherDtos,request); List<String> res = teacherService.batchImportPtTeachers(gpTeacherDtos,request);
return R.success(res); return R.success(res);
} }
@PostMapping("findTeachers")
@ApiOperation("获取教师Base信息")
public R<List<Map<String, Object>>> findTeachers(@Valid @RequestBody CoreUser dto, HttpServletRequest request) {
List<Map<String, Object>> res = teacherService.findTeachers(dto,request);
return R.success(res);
}
@PostMapping("saveOrUpdate")
@ApiOperation("保存或更新教师信息")
public R<String> saveOrUpdate(@Valid @RequestBody List<GpTeacherVo> gpTeacherDtos, HttpServletRequest request) {
teacherService.saveOrUpdate(gpTeacherDtos,request);
return R.success("保存成功");
}
} }

@ -1,7 +1,9 @@
package cn.teammodel.controller.admin.service; package cn.teammodel.controller.admin.service;
import cn.teammodel.model.dto.admin.teacher.CoreUser;
import cn.teammodel.model.dto.admin.teacher.GpTeacherDto; import cn.teammodel.model.dto.admin.teacher.GpTeacherDto;
import cn.teammodel.model.dto.admin.teacher.TeacherDto; import cn.teammodel.model.dto.admin.teacher.TeacherDto;
import cn.teammodel.model.entity.school.Teacher;
import cn.teammodel.model.entity.teacher.PtTeacherInfo; import cn.teammodel.model.entity.teacher.PtTeacherInfo;
import cn.teammodel.model.vo.admin.GpTeacherVo; import cn.teammodel.model.vo.admin.GpTeacherVo;
@ -24,4 +26,6 @@ public interface TeacherService {
Map<String,Object> findIdentityByTmdId(TeacherDto teacherDto); Map<String,Object> findIdentityByTmdId(TeacherDto teacherDto);
void delete(TeacherDto teacherDto); void delete(TeacherDto teacherDto);
List<String> batchImportPtTeachers(List<GpTeacherVo> gpTeachers, HttpServletRequest request); List<String> batchImportPtTeachers(List<GpTeacherVo> gpTeachers, HttpServletRequest request);
List<Map<String, Object>> findTeachers(CoreUser dto, HttpServletRequest request);
void saveOrUpdate(List<GpTeacherVo> gpTeachers, HttpServletRequest request);
} }

@ -4,6 +4,7 @@ import cn.teammodel.common.ErrorCode;
import cn.teammodel.common.PK; import cn.teammodel.common.PK;
import cn.teammodel.config.exception.ServiceException; import cn.teammodel.config.exception.ServiceException;
import cn.teammodel.controller.admin.service.TeacherService; import cn.teammodel.controller.admin.service.TeacherService;
import cn.teammodel.model.dto.admin.teacher.CoreUser;
import cn.teammodel.model.dto.admin.teacher.GpTeacherDto; import cn.teammodel.model.dto.admin.teacher.GpTeacherDto;
import cn.teammodel.model.dto.admin.teacher.IdCodePair; import cn.teammodel.model.dto.admin.teacher.IdCodePair;
import cn.teammodel.model.dto.admin.teacher.TeacherDto; import cn.teammodel.model.dto.admin.teacher.TeacherDto;
@ -39,11 +40,8 @@ import org.springframework.cache.annotation.Cacheable;
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;
import org.springframework.data.domain.Slice; import org.springframework.data.domain.Slice;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.time.*; import java.time.*;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
@ -65,6 +63,8 @@ public class TeacherServiceImpl implements TeacherService {
private LessonRecordRepository lessonRecordRepository; private LessonRecordRepository lessonRecordRepository;
@Resource @Resource
private PtTeacherRepository ptTeacherRepository; private PtTeacherRepository ptTeacherRepository;
@Resource
private TeacherRepository teacherRepository;
/** /**
* *
*/ */
@ -1552,7 +1552,7 @@ public class TeacherServiceImpl implements TeacherService {
List<PtTeacherInfo> existingList = ptTeacherRepository.findByIdCodePairs(idAndCode); List<PtTeacherInfo> existingList = ptTeacherRepository.findByIdCodePairs(idAndCode);
Map<String, PtTeacherInfo> codeToTeacherMap = existingList.stream() Map<String, PtTeacherInfo> codeToTeacherMap = existingList.stream()
.collect(Collectors.toMap(PtTeacherInfo::getCode, Function.identity())); .collect(Collectors.toMap(PtTeacherInfo::getId, Function.identity()));
List<PtTeacherInfo> ptTeacherInfos = new ArrayList<>(); List<PtTeacherInfo> ptTeacherInfos = new ArrayList<>();
for (GpTeacherVo teacher : gpTeachers) { for (GpTeacherVo teacher : gpTeachers) {
@ -1562,7 +1562,7 @@ public class TeacherServiceImpl implements TeacherService {
} }
String businessCode = "PtTeacher-" + schoolCode; String businessCode = "PtTeacher-" + schoolCode;
PtTeacherInfo ptTeacherInfo = codeToTeacherMap.get(businessCode); PtTeacherInfo ptTeacherInfo = codeToTeacherMap.get(teacher.getId());
if (ptTeacherInfo != null) { if (ptTeacherInfo != null) {
// 更新现有记录保留ID更新其他字段 // 更新现有记录保留ID更新其他字段
@ -1627,6 +1627,106 @@ public class TeacherServiceImpl implements TeacherService {
return missingPhones; return missingPhones;
} }
@Override
public List<Map<String, Object>> findTeachers(CoreUser dto,HttpServletRequest request) {
List<Map<String, Object>> teachers;
try {
String url = env.getProperty("ies.server-url-get-core-user-data");
teachers = GroupUtil.getUsers(dto.ids, new GroupUtil(env), request, url);
}catch (Exception e){
throw new ServiceException(ErrorCode.PARAMS_ERROR.getCode(), "查询数据异常");
}
return teachers;
}
@Override
public void saveOrUpdate(List<GpTeacherVo> gpTeachers, HttpServletRequest request) {
try {
// 获取当前登录用户信息
User loginUser = SecurityUtil.getLoginUser();
String operator = loginUser != null ? loginUser.getName() : "system";
String schoolCode = SecurityUtil.getLoginUser().getSchoolId();
List<Pair<String, String>> idCodePairs = gpTeachers.stream()
.filter(t -> t.getId() != null)
.map(t -> Pair.of(t.getId(), "PtTeacher-" + schoolCode))
.collect(Collectors.toList());
List<IdCodePair> idAndCode = idCodePairs.stream()
.map(pair -> new IdCodePair(pair.getLeft(), pair.getRight()))
.collect(Collectors.toList());
List<PtTeacherInfo> existingList = ptTeacherRepository.findByIdCodePairs(idAndCode);
Map<String, PtTeacherInfo> codeToTeacherMap = existingList.stream()
.collect(Collectors.toMap(PtTeacherInfo::getId, Function.identity()));
// 根据传入的gpTeachers对象数据批量保存或更新PtTeacherInfo对象
List<PtTeacherInfo> ptTeacherInfos = new ArrayList<>();
for (GpTeacherVo teacher : gpTeachers) {
String businessCode = "PtTeacher-" + schoolCode;
PtTeacherInfo ptTeacherInfo = codeToTeacherMap.get(teacher.getId());
if (ptTeacherInfo != null) {
// 更新现有记录保留ID更新其他字段
ptTeacherInfo.setName(teacher.getName());
ptTeacherInfo.setPhone(teacher.getPhone());
ptTeacherInfo.setEmail(teacher.getEmail());
ptTeacherInfo.setPicture(teacher.getPicture());
ptTeacherInfo.setJob(teacher.getJob());
ptTeacherInfo.setSubjectIds(teacher.getSubjectIds());
ptTeacherInfo.setRoles(teacher.getRoles());
ptTeacherInfo.setDegree(teacher.getDegree());
ptTeacherInfo.setGender(teacher.getGender());
ptTeacherInfo.setGrade(teacher.getGrade());
ptTeacherInfo.setPeriodId(teacher.getPeriodId());
ptTeacherInfo.setAge(teacher.getAge());
ptTeacherInfo.setTeachingAge(teacher.getTeachingAge());
ptTeacherInfo.setStatus(teacher.getStatus());
ptTeacherInfo.setJoinTime(teacher.getJoinTime());
ptTeacherInfo.setSchool(teacher.getCode());
ptTeacherInfo.setVersion(ptTeacherInfo.getVersion() + 1); // 版本号递增
} else {
// 新增记录生成新ID
ptTeacherInfo = new PtTeacherInfo();
ptTeacherInfo.setId(teacher.getId());
ptTeacherInfo.setCode(businessCode);
ptTeacherInfo.setPk("PtTeacher");
ptTeacherInfo.setTtl(-1);
ptTeacherInfo.setName(teacher.getName());
ptTeacherInfo.setPhone(teacher.getPhone());
ptTeacherInfo.setEmail(teacher.getEmail());
ptTeacherInfo.setPicture(teacher.getPicture());
ptTeacherInfo.setJob(teacher.getJob());
ptTeacherInfo.setSubjectIds(teacher.getSubjectIds());
ptTeacherInfo.setRoles(teacher.getRoles());
ptTeacherInfo.setDegree(teacher.getDegree());
ptTeacherInfo.setGender(teacher.getGender());
ptTeacherInfo.setGrade(teacher.getGrade());
ptTeacherInfo.setPeriodId(teacher.getPeriodId());
ptTeacherInfo.setAge(teacher.getAge());
ptTeacherInfo.setTeachingAge(teacher.getTeachingAge());
ptTeacherInfo.setStatus(teacher.getStatus());
ptTeacherInfo.setJoinTime(teacher.getJoinTime());
ptTeacherInfo.setState(1);
ptTeacherInfo.setIdentity(Collections.singletonList("teacher"));
ptTeacherInfo.setVersion(1);
}
ptTeacherInfos.add(ptTeacherInfo);
}
// 数据持久化日志
logger.info("用户[{}]即将{}教师数据(添加:{}条,更新:{}条)",
operator,
existingList.isEmpty() ? "新增" : "更新",
gpTeachers.size() - existingList.size(),
existingList.size());
ptTeacherRepository.saveAll(ptTeacherInfos);
}catch (Exception e) {
throw new ServiceException(ErrorCode.PARAMS_ERROR.getCode(), "保存数据异常");
}
}
// 手机号正则表达式(中国大陆) // 手机号正则表达式(中国大陆)
private static final String PHONE_REGEX = "^1\\d{10}$"; private static final String PHONE_REGEX = "^1\\d{10}$";
/** /**

@ -0,0 +1,10 @@
package cn.teammodel.model.dto.admin.teacher;
import lombok.Data;
import java.util.List;
@Data
public class CoreUser {
public List<String> ids;
}

@ -16,4 +16,8 @@ import java.util.List;
public interface TeacherRepository extends CosmosRepository<Teacher, String> { public interface TeacherRepository extends CosmosRepository<Teacher, String> {
@Query("select c.id, c.name from Teacher as c where c.code = @code and c.id in (@ids)") @Query("select c.id, c.name from Teacher as c where c.code = @code and c.id in (@ids)")
List<Teacher> findAllByCodeAndIdIn(String code, Collection<String> ids); List<Teacher> findAllByCodeAndIdIn(String code, Collection<String> ids);
//根据手机号码、名称、id 模糊查询
@Query("select * from Teacher as c where c.code = @code and " +
"(IS_NULL(@name) or contains(c.name,@name) ) ")
List<Teacher> findTeachers(String code, String name);
} }

Loading…
Cancel
Save