07 微架构教务系统——讲师接口

导读:本篇文章讲解 07 微架构教务系统——讲师接口,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1、讲师接口概览

07 微架构教务系统——讲师接口

2、使用Swagger测试接口

07 微架构教务系统——讲师接口

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自动生成

07 微架构教务系统——讲师接口

上图箭头指向位置的代码模块,即是通过MyBatis Generator生成的数据层代码,讲师接口依赖于该数据层。

 

6、数据表:teacher、nation、region、position、title等

07 微架构教务系统——讲师接口

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/10473.html

(0)
小半的头像小半

相关推荐

极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!