1、讲师接口概览
2、使用Swagger测试接口
3、控制层:TeacherController
package cn.org.xcore.edusys.controller.teacher;
import cn.org.xcore.edusys.db.ext.model.Teacher;
import cn.org.xcore.edusys.db.ext.model.Position;
import cn.org.xcore.edusys.common.bean.ApiResponse;
import cn.org.xcore.edusys.common.EmailRunnable;
import cn.org.xcore.edusys.common.poi.PoiUtils;
import cn.org.xcore.edusys.service.TeacherService;
import cn.org.xcore.edusys.service.impl.DepartmentService;
import cn.org.xcore.edusys.service.impl.JobLevelService;
import cn.org.xcore.edusys.service.impl.PositionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.thymeleaf.TemplateEngine;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutorService;
/**
* @author 李海林 手机:13802780104|微信:lihailin9073|Email:767679879@qq.com
* @copyright 个人开发者李海林版权所有,产品详情及技术服务请登录官网查询[http://www.x-core.org.cn]
* @create 2019-08-20 18:42
*/
@Api(tags = "03-讲师模块")
@RestController
@RequestMapping("/teacher")
public class TeacherController {
@Autowired
private TeacherService teacherService;
@Autowired
private DepartmentService departmentService;
@Autowired
private PositionService positionService;
@Autowired
private JobLevelService jobLevelService;
@Autowired
private ExecutorService executorService;
@Autowired
private TemplateEngine templateEngine;
@Autowired
private JavaMailSender javaMailSender;
@ApiOperation("获取民族列表")
@GetMapping("/get_nation_list")
public Map<String, Object> getNationList() {
Map<String, Object> map = new HashMap<>();
map.put("nations", teacherService.getAllNationList());
map.put("politics", teacherService.getAllPolitics());
map.put("deps", departmentService.getDepByPid(-1L));
map.put("positions", positionService.getAllPos());
map.put("joblevels", jobLevelService.getAllJobLevels());
map.put("workID", String.format("%08d", teacherService.getMaxWorkID() + 1));
return map;
}
@ApiOperation("获取讲师工号ID")
@GetMapping("/get_max_work_id")
public String getMaxWorkId() {
return String.format("%08d", teacherService.getMaxWorkID() + 1);
}
@ApiOperation("新增讲师档案")
@PostMapping("/add")
public ApiResponse addTeacher(Teacher teacher) {
if (teacherService.addTeacher(teacher) == 1) {
List<Position> allPos = positionService.getAllPos();
for (Position allPo : allPos) {
if (allPo.getId() == teacher.getPosId()) {
teacher.setPosName(allPo.getName());
}
}
executorService.execute(new EmailRunnable(teacher, javaMailSender, templateEngine));
return ApiResponse.success("添加成功!");
}
return ApiResponse.error("添加失败!");
}
@ApiOperation("更新讲师档案")
@PutMapping("/update")
public ApiResponse updateTeacher(Teacher teacher) {
if (teacherService.updateTeacher(teacher) == 1) {
return ApiResponse.success("更新成功!");
}
return ApiResponse.error("更新失败!");
}
@ApiOperation("注销讲师档案")
@DeleteMapping("/del/{ids}")
public ApiResponse deleteTeacherById(@PathVariable String ids) {
if (teacherService.deleteTeacherById(ids)) {
return ApiResponse.success("删除成功!");
}
return ApiResponse.error("删除失败!");
}
@ApiOperation("搜索讲师档案")
@GetMapping("/search")
public Map<String, Object> search(
@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer size, @RequestParam(defaultValue = "") String keywords,
Long politicId, Long nationId, Long posId, Long jobLevelId, String engageForm, Long departmentId, String beginDateScope) {
Map<String, Object> map = new HashMap<>();
List<Teacher> teacherByPage = teacherService.search(page, size, keywords, politicId, nationId, posId, jobLevelId, engageForm, departmentId, beginDateScope);
Long count = teacherService.getCountByKeywords(keywords, politicId, nationId, posId, jobLevelId, engageForm, departmentId, beginDateScope);
map.put("teacherList", teacherByPage);
map.put("count", count);
return map;
}
@ApiOperation("导出讲师档案")
@GetMapping("/export")
public ResponseEntity<byte[]> export() {
return PoiUtils.exportTeacher2Excel(teacherService.getAllTeachers());
}
@ApiOperation("导入讲师档案")
@PostMapping("/import")
public ApiResponse imports(MultipartFile file) {
List<Teacher> teachers = PoiUtils.importTeacher(file, teacherService.getAllNationList(), teacherService.getAllPolitics(), departmentService.getAllDeps(), positionService.getAllPos(), jobLevelService.getAllJobLevels());
if (teacherService.addTeachers(teachers) == teachers.size()) {
return ApiResponse.success("导入成功!");
}
return ApiResponse.error("导入失败!");
}
}
4、服务层:TeacherService、TeacherServiceImpl
(1)讲师服务接口
package cn.org.xcore.edusys.service.impl;
import cn.org.xcore.edusys.db.ext.model.Teacher;
import cn.org.xcore.edusys.db.ext.model.Nation;
import cn.org.xcore.edusys.db.ext.model.Politics;
import cn.org.xcore.edusys.db.ext.mapper.ExtTeacherMapper;
import cn.org.xcore.edusys.service.TeacherService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
* 讲师服务
*
* @author 李海林 手机:13802780104|微信:lihailin9073|Email:767679879@qq.com
* @copyright 个人开发者李海林版权所有,产品详情及技术服务请登录官网查询[http://www.x-core.org.cn]
* @create 2019-08-22 21:05
*/
@Service
@Transactional
public class TeacherServiceImpl implements TeacherService {
@Autowired
private ExtTeacherMapper extTeacherMapper;
private SimpleDateFormat yearFormat = new SimpleDateFormat("yyyy");
private SimpleDateFormat monthFormat = new SimpleDateFormat("MM");
private SimpleDateFormat birthdayFormat = new SimpleDateFormat("yyyy-MM-dd");
private DecimalFormat decimalFormat = new DecimalFormat("##.00");
@Override
public List<Nation> getAllNationList() {
return extTeacherMapper.getAllNations();
}
@Override
public List<Politics> getAllPolitics() {
return extTeacherMapper.getAllPolitics();
}
@Override
public int addTeacher(Teacher teacher) {
Date beginContract = teacher.getBeginContract();
Date endContract = teacher.getEndContract();
Double contractTerm = (Double.parseDouble(yearFormat.format(endContract)) - Double.parseDouble(yearFormat.format(beginContract))) * 12 + Double.parseDouble(monthFormat.format(endContract)) - Double.parseDouble(monthFormat.format(beginContract));
teacher.setContractTerm(Double.parseDouble(decimalFormat.format(contractTerm / 12)));
return extTeacherMapper.addEmp(teacher);
}
@Override
public Long getMaxWorkID() {
Long maxWorkID = extTeacherMapper.getMaxWorkID();
return maxWorkID == null ? 0 : maxWorkID;
}
@Override
public List<Teacher> search(Integer page, Integer size, String keywords, Long politicId, Long nationId, Long posId, Long jobLevelId, String engageForm, Long departmentId, String beginDateScope) {
int start = (page - 1) * size;
Date startBeginDate = null;
Date endBeginDate = null;
if (beginDateScope != null && beginDateScope.contains(",")) {
try {
String[] split = beginDateScope.split(",");
startBeginDate = birthdayFormat.parse(split[0]);
endBeginDate = birthdayFormat.parse(split[1]);
} catch (ParseException e) {
}
}
return extTeacherMapper.getEmployeeByPage(start, size, keywords, politicId, nationId, posId, jobLevelId, engageForm, departmentId, startBeginDate, endBeginDate);
}
@Override
public Long getCountByKeywords(String keywords, Long politicId, Long nationId, Long posId, Long jobLevelId, String engageForm, Long departmentId, String beginDateScope) {
Date startBeginDate = null;
Date endBeginDate = null;
if (beginDateScope != null && beginDateScope.contains(",")) {
try {
String[] split = beginDateScope.split(",");
startBeginDate = birthdayFormat.parse(split[0]);
endBeginDate = birthdayFormat.parse(split[1]);
} catch (ParseException e) {
}
}
return extTeacherMapper.getCountByKeywords(keywords, politicId, nationId, posId, jobLevelId, engageForm, departmentId, startBeginDate, endBeginDate);
}
@Override
public int updateTeacher(Teacher teacher) {
Date beginContract = teacher.getBeginContract();
Date endContract = teacher.getEndContract();
Double contractTerm = (Double.parseDouble(yearFormat.format(endContract)) - Double.parseDouble(yearFormat.format(beginContract))) * 12 + Double.parseDouble(monthFormat.format(endContract)) - Double.parseDouble(monthFormat.format(beginContract));
teacher.setContractTerm(Double.parseDouble(decimalFormat.format(contractTerm / 12)));
return extTeacherMapper.updateEmp(teacher);
}
@Override
public boolean deleteTeacherById(String ids) {
String[] split = ids.split(",");
return extTeacherMapper.deleteEmpById(split) == split.length;
}
@Override
public List<Teacher> getAllTeachers() {
return extTeacherMapper.getEmployeeByPage(null, null, "", null, null, null, null, null, null, null, null);
}
@Override
public int addTeachers(List<Teacher> teachers) {
return extTeacherMapper.addEmps(teachers);
}
@Override
public List<Teacher> getTeachersByPageShort(Integer page, Integer size) {
int start = (page - 1) * size;
return extTeacherMapper.getEmployeeByPageShort(start,size);
}
}
(2)讲师服务
package cn.org.xcore.edusys.service;
import cn.org.xcore.edusys.db.ext.model.Teacher;
import cn.org.xcore.edusys.db.ext.model.Nation;
import cn.org.xcore.edusys.db.ext.model.Politics;
import java.util.List;
/**
* 讲师服务接口
*
* @author 李海林 手机:13802780104|微信:lihailin9073|Email:767679879@qq.com
* @copyright 个人开发者李海林版权所有,产品详情及技术服务请登录官网查询[http://www.x-core.org.cn]
* @create 2019-08-22 21:00
*/
public interface TeacherService {
/**
* 获取民族清单
* @return 返回民族清单列表
*/
List<Nation> getAllNationList();
/**
* 获取政治面貌清单
* @return 返回政治面貌清单列表
*/
List<Politics> getAllPolitics();
/**
* 新增讲师档案
* @param teacher 讲师Teacher对象
* @return
*/
int addTeacher(Teacher teacher);
/**
* 获取讲师工号ID
* @return
*/
Long getMaxWorkID();
/**
* 搜索讲师档案
* @param page 页码
* @param size 页大小
* @param keywords 关键词
* @param politicId 政治面貌
* @param nationId 民族
* @param posId 职位
* @param jobLevelId 职称
* @param engageForm
* @param departmentId 部门
* @param beginDateScope 入职日期
* @return
*/
List<Teacher> search(Integer page, Integer size, String keywords, Long politicId, Long nationId, Long posId, Long jobLevelId, String engageForm, Long departmentId, String beginDateScope);
/**
* 获取讲师档案搜索记录总数
* @param keywords
* @param politicId
* @param nationId
* @param posId
* @param jobLevelId
* @param engageForm
* @param departmentId
* @param beginDateScope
* @return
*/
Long getCountByKeywords(String keywords, Long politicId, Long nationId, Long posId, Long jobLevelId, String engageForm, Long departmentId, String beginDateScope);
/**
* 更新讲师档案
* @param teacher 讲师Teacher对象
* @return
*/
int updateTeacher(Teacher teacher);
/**
* 删除讲师档案
* @param ids 被删除档案的ID清单
* @return
*/
boolean deleteTeacherById(String ids);
/**
* 获取全部讲师档案数据
* @return
*/
List<Teacher> getAllTeachers();
/**
* 批量添加讲师档案
* @param teachers 讲师Teacher对象列表
* @return
*/
int addTeachers(List<Teacher> teachers);
/**
* 分页获取讲师档案
* @param page 页码
* @param size 页大小
* @return
*/
List<Teacher> getTeachersByPageShort(Integer page, Integer size);
}
5、数据层:通过MyBatis Generator自动生成
上图箭头指向位置的代码模块,即是通过MyBatis Generator生成的数据层代码,讲师接口依赖于该数据层。
6、数据表:teacher、nation、region、position、title等
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/10473.html