From 653987d860e92a01c250a602d059cda67efbdc74 Mon Sep 17 00:00:00 2001 From: mirage <1127314491@qq.com> Date: Tue, 10 Feb 2026 10:13:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F-=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E6=95=99=E5=B8=88=E6=9F=A5=E8=AF=A2=E7=9B=B8=E5=85=B3=E7=9A=84?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../front/controller/TeacherController.java | 37 +++++++ .../mdd/front/service/ITeacherService.java | 29 +++++ .../service/impl/TeacherServiceImpl.java | 102 ++++++++++++++++++ .../teacher/TeacherSearchValidate.java | 33 ++++++ .../mdd/front/vo/teacher/TeacherListedVo.java | 53 +++++++++ 5 files changed, 254 insertions(+) create mode 100644 server/like-front/src/main/java/com/mdd/front/controller/TeacherController.java create mode 100644 server/like-front/src/main/java/com/mdd/front/service/ITeacherService.java create mode 100644 server/like-front/src/main/java/com/mdd/front/service/impl/TeacherServiceImpl.java create mode 100644 server/like-front/src/main/java/com/mdd/front/validate/teacher/TeacherSearchValidate.java create mode 100644 server/like-front/src/main/java/com/mdd/front/vo/teacher/TeacherListedVo.java diff --git a/server/like-front/src/main/java/com/mdd/front/controller/TeacherController.java b/server/like-front/src/main/java/com/mdd/front/controller/TeacherController.java new file mode 100644 index 00000000..d52b6160 --- /dev/null +++ b/server/like-front/src/main/java/com/mdd/front/controller/TeacherController.java @@ -0,0 +1,37 @@ +package com.mdd.front.controller; + +import com.mdd.common.core.AjaxResult; +import com.mdd.common.core.PageResult; +import com.mdd.front.service.ITeacherService; +import com.mdd.front.validate.common.PageValidate; +import com.mdd.front.validate.teacher.TeacherSearchValidate; +import com.mdd.front.vo.teacher.TeacherListedVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +@RestController +@RequestMapping("frontapi/teacher") +@Api(tags = "教师信息扩展管理") +public class TeacherController { + + @Resource + ITeacherService iTeacherService; + + @GetMapping("/list") + @ApiOperation(value = "教师信息扩展列表") + public AjaxResult> list(@Validated PageValidate pageValidate, + @Validated TeacherSearchValidate searchValidate) { + PageResult list = iTeacherService.list(pageValidate, searchValidate); + return AjaxResult.success(list); + } + + @PostMapping("/getTeacherInfo") + @ApiOperation(value = "根据查询条件获取教师信息") + public AjaxResult getTeacherInfo(@RequestBody TeacherSearchValidate searchValidate) { + return iTeacherService.getTeacherInfo(searchValidate); + } +} diff --git a/server/like-front/src/main/java/com/mdd/front/service/ITeacherService.java b/server/like-front/src/main/java/com/mdd/front/service/ITeacherService.java new file mode 100644 index 00000000..fa75ff27 --- /dev/null +++ b/server/like-front/src/main/java/com/mdd/front/service/ITeacherService.java @@ -0,0 +1,29 @@ +package com.mdd.front.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mdd.common.core.AjaxResult; +import com.mdd.common.core.PageResult; +import com.mdd.common.entity.Teacher; +import com.mdd.front.validate.common.PageValidate; +import com.mdd.front.validate.teacher.TeacherSearchValidate; +import com.mdd.front.vo.teacher.TeacherListedVo; + +/** + * 教师信息扩展服务接口类 + * + * @author gyp + */ +public interface ITeacherService extends IService { + + /** + * 教师信息扩展列表 + * + * @param pageValidate 分页参数 + * @param searchValidate 搜索参数 + * @return PageResult + * @author gyp + */ + PageResult list(PageValidate pageValidate, TeacherSearchValidate searchValidate); + + AjaxResult getTeacherInfo(TeacherSearchValidate searchValidate); +} diff --git a/server/like-front/src/main/java/com/mdd/front/service/impl/TeacherServiceImpl.java b/server/like-front/src/main/java/com/mdd/front/service/impl/TeacherServiceImpl.java new file mode 100644 index 00000000..425642aa --- /dev/null +++ b/server/like-front/src/main/java/com/mdd/front/service/impl/TeacherServiceImpl.java @@ -0,0 +1,102 @@ +package com.mdd.front.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mdd.common.core.AjaxResult; +import com.mdd.common.core.PageResult; +import com.mdd.common.entity.College; +import com.mdd.common.entity.Teacher; +import com.mdd.common.mapper.CollegeMapper; +import com.mdd.common.mapper.TeacherMapper; +import com.mdd.common.util.*; +import com.mdd.front.service.ITeacherService; +import com.mdd.front.validate.common.PageValidate; +import com.mdd.front.validate.teacher.TeacherSearchValidate; +import com.mdd.front.vo.teacher.TeacherListedVo; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.LinkedList; +import java.util.List; + +/** + * 教师信息扩展实现类 + * + * @author gyp + */ +@Service +public class TeacherServiceImpl extends ServiceImpl implements ITeacherService { + + @Resource + TeacherMapper teacherMapper; + @Resource + CollegeMapper collegeMapper; + + /** + * 教师信息扩展列表 + * + * @param pageValidate 分页参数 + * @param searchValidate 搜索参数 + * @return PageResult + * @author gyp + */ + @Override + public PageResult list(PageValidate pageValidate, TeacherSearchValidate searchValidate) { + Integer page = pageValidate.getPage_no(); + Integer limit = pageValidate.getPage_size(); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.orderByDesc("teacher_id"); + + teacherMapper.setSearch(queryWrapper, searchValidate, new String[]{ + "=:teacherId@teacher_id:int", + "like:name@teacher_name:str", + "=:teacherCode@teacher_code:str", + "=:collegeId@college_id:int", + "=:teacherStatus@teacher_status:int", + "=:invitationCode@invitation_code:str", + }); + + IPage iPage = teacherMapper.selectPage(new Page<>(page, limit), queryWrapper); + + List list = new LinkedList<>(); + for (Teacher item : iPage.getRecords()) { + TeacherListedVo vo = new TeacherListedVo(); + BeanUtils.copyProperties(item, vo); + // 映射主键:实体是teacherId,VO也是teacherId,BeanUtils会自动处理 + vo.setTeacherId(item.getTeacherId()); + // 显式设置教师工号,确保字段正确映射 + vo.setTeacherCode(item.getTeacherCode()); + // 设置二维码URL(转换为绝对URL) + if (item.getQrcodeUrl() != null && !item.getQrcodeUrl().isEmpty()) { + // 后台端静态资源映射:/adminapi/uploads/**,因此这里需走 admin 端的绝对路径转换 + vo.setQrcodeUrl(UrlUtils.toAdminAbsoluteUrl(item.getQrcodeUrl())); + } + vo.setCreateTime(TimeUtils.timestampToDate(item.getCreateTime())); + vo.setUpdateTime(TimeUtils.timestampToDate(item.getUpdateTime())); + College college = collegeMapper.selectById(vo.getCollegeId()); + if (college != null) vo.setCollegeName(college.getCollegeName()); + + list.add(vo); + } + + return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list); + } + + @Override + public AjaxResult getTeacherInfo(TeacherSearchValidate searchValidate) { + TeacherListedVo teacherListedVo = new TeacherListedVo(); + Teacher teacher = teacherMapper.selectOne(new QueryWrapper().eq("teacher_id", searchValidate.getTeacherId())); + BeanUtils.copyProperties(teacher, teacherListedVo); + College college = collegeMapper.selectById(teacherListedVo.getCollegeId()); + teacherListedVo.setCreateTime(TimeUtils.timestampToDate(teacher.getCreateTime())); + teacherListedVo.setUpdateTime(TimeUtils.timestampToDate(teacher.getUpdateTime())); + if (college != null) { + teacherListedVo.setCollegeName(college.getCollegeName()); + } + return AjaxResult.success(teacherListedVo); + } +} diff --git a/server/like-front/src/main/java/com/mdd/front/validate/teacher/TeacherSearchValidate.java b/server/like-front/src/main/java/com/mdd/front/validate/teacher/TeacherSearchValidate.java new file mode 100644 index 00000000..1699310a --- /dev/null +++ b/server/like-front/src/main/java/com/mdd/front/validate/teacher/TeacherSearchValidate.java @@ -0,0 +1,33 @@ +package com.mdd.front.validate.teacher; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +@ApiModel("教师信息扩展搜素参数") +public class TeacherSearchValidate implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "教师id") + private Integer teacherId; + + @ApiModelProperty(value = "姓名") + private String teacherName; + + @ApiModelProperty(value = "教师工号") + private String teacherCode; + + @ApiModelProperty(value = "所属学院ID") + private Integer CollegeId; + + @ApiModelProperty(value = "教师状态:1-在职,2-休假,3-离职") + private Integer teacherStatus; + + @ApiModelProperty(value = "邀请码(二维码地址标识)") + private String invitationCode; + +} diff --git a/server/like-front/src/main/java/com/mdd/front/vo/teacher/TeacherListedVo.java b/server/like-front/src/main/java/com/mdd/front/vo/teacher/TeacherListedVo.java new file mode 100644 index 00000000..8e3f885a --- /dev/null +++ b/server/like-front/src/main/java/com/mdd/front/vo/teacher/TeacherListedVo.java @@ -0,0 +1,53 @@ +package com.mdd.front.vo.teacher; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +@ApiModel("教师信息扩展列表Vo") +public class TeacherListedVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "教师ID") + private Integer teacherId; + + @ApiModelProperty(value = "姓名") + private String teacherName; + + @ApiModelProperty(value = "学院名") + private String collegeName; + + @ApiModelProperty(value = "所属学院ID") + private Integer collegeId; + + @ApiModelProperty(value = "教师工号") + private String teacherCode; + + @ApiModelProperty(value = "职称") + private String title; + + @ApiModelProperty(value = "联系电话") + private String contactPhone; + + @ApiModelProperty(value = "联系邮箱") + private String contactEmail; + + @ApiModelProperty(value = "教师状态:1-在职,2-休假,3-离职") + private Integer teacherStatus; + + @ApiModelProperty(value = "邀请码(二维码地址标识)") + private String invitationCode; + + @ApiModelProperty(value = "二维码图片地址") + private String qrcodeUrl; + + @ApiModelProperty(value = "创建时间") + private String createTime; + + @ApiModelProperty(value = "修改时间") + private String updateTime; +}