一、员工管理
1.1 编写员工信息vo对象
EmployeeVO
/** * @Package: cn.liuliang.quickdinesysstore.entity.vo * @Author: liuliang * @CreateTime: 2020/10/31 - 16:24 * @Description: */ @Data @ApiModel(value = "员工信息vo", description = "") public class EmployeeVO { @ApiModelProperty(value = "ID") private Long id; @ApiModelProperty(value = "姓名") private String employeeName; @ApiModelProperty(value = "级别:关联级别表id") private Long levelId; @ApiModelProperty(value = "密码") private String password; @ApiModelProperty(value = "入职时间") private String entryTime; }
1.2 编写员工信息查询条件vo对象
EmployeeQueryVO
/** * @Package: cn.liuliang.quickdinesysstore.entity.vo * @Author: liuliang * @CreateTime: 2020/10/31 - 16:24 * @Description: */ @Data @ApiModel(value = "员工信息查询条件vo", description = "") public class EmployeeQueryVO { @ApiModelProperty(value = "姓名") private String employeeName; @ApiModelProperty(value = "级别:关联级别表id") private Long levelId; @ApiModelProperty(value = "入职时间(格式:2020-01-10)") private String entryTime; }
1.3 编写员工信息DTO对象
EmployeeDTO
/** * @Package: cn.liuliang.quickdinesysstore.entity.vo * @Author: liuliang * @CreateTime: 2020/10/31 - 16:24 * @Description: */ @Data @ApiModel(value = "员工信息DTO", description = "") public class EmployeeDTO implements Serializable { private static final long serialVersionUID=1L; @ApiModelProperty(value = "ID") private Long id; @ApiModelProperty(value = "姓名") private String employeeName; @ApiModelProperty(value = "级别:关联级别表id") private Long levelId; @ApiModelProperty(value = "级别名称") private String levelName; @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "入职时间") private Date entryTime; }
1.4 编写控制器类
@Api(value = "店家员工管理", tags = "店家员工管理") @CrossOrigin @RestController @RequestMapping("/employee") public class EmployeeController { @Autowired private EmployeeService employeeService; @ApiOperation(value = "添加或修改员工", notes = "添加或修改员工") @PostMapping("/add-or-update") public ResultDTO addOrUpdate(@RequestBody EmployeeVO employeeVO) { return employeeService.addOrUpdate(employeeVO); } @ApiOperation(value = "分页查询所有员工列表", notes = "分页查询所有员工列表") @ApiResponses({@ApiResponse(code = 200, message = "请求成功!", response = EmployeeDTO.class)}) @GetMapping("/select-all") public ResultDTO selectAll( EmployeeQueryVO employeeQueryVO, @ApiParam("当前页码") @RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum, @ApiParam("每页显示条数") @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize) { return employeeService.selectAll(pageNum, pageSize, employeeQueryVO); } @ApiOperation(value = "根据员工id查询详情", notes = "根据员工id查询详情") @ApiResponses({@ApiResponse(code = 200, message = "请求成功!", response = EmployeeDetailDTO.class)}) @GetMapping("/select-one") public ResultDTO selectOne(@ApiParam("员工id") @RequestParam(value = "id", required = false, defaultValue = "1") Long id) { return employeeService.selectOne(id); } @ApiOperation(value = "根据员工id删除员工数据", notes = "根据员工id删除员工数据") @GetMapping("/delete") public ResultDTO delete(@ApiParam("员工id") @RequestParam(value = "id", required = false, defaultValue = "1") Long id) { return ResultDTO.success("data", employeeService.removeById(id)); } }
1.5 编写业务类
public interface EmployeeService extends IService<Employee> { /** * 添加或修改员工 * @param employeeVO 员工信息对象 * @return */ ResultDTO addOrUpdate(EmployeeVO employeeVO); /** * 分页查询所有员工列表 * @param pageNum 当前页 * @param pageSize 每页大小 * @param employeeQueryVO 查询条件数据 * @return */ ResultDTO selectAll(Integer pageNum, Integer pageSize, EmployeeQueryVO employeeQueryVO); /** * 根据员工id查询详情 * @param id 员工id * @return */ ResultDTO selectOne(Long id); }
@Service public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper, Employee> implements EmployeeService { @Autowired private EmployeeMapper employeeMapper; @Autowired private LevelMapper levelMapper; @Autowired private LevelService levelService; @Override public ResultDTO addOrUpdate(EmployeeVO employeeVO) { // 判断必要参数是否为空 if (StringUtils.isEmpty(employeeVO.getEmployeeName()) || StringUtils.isEmpty(employeeVO.getLevelId()) || StringUtils.isEmpty(employeeVO.getPassword()) || StringUtils.isEmpty(employeeVO.getEntryTime())) { throw new QuickException(ResultCodeEnum.PAEAMETER_IS_EMPTY); } // 构造插入或修改数据 Employee employee = new Employee(); BeanUtils.copyProperties(employeeVO, employee); // 格式化入职时间 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); try { employee.setEntryTime(simpleDateFormat.parse(employeeVO.getEntryTime())); } catch (ParseException e) { throw new QuickException("时间格式转换异常",8001); } // 判断是添加还是修改 if (null == employeeVO.getId()) { // 添加 return ResultDTO.success("data", employeeMapper.insert(employee)); } // 修改 return ResultDTO.success("data", employeeMapper.updateById(employee)); } @Override public ResultDTO selectAll(Integer pageNum, Integer pageSize, EmployeeQueryVO employeeQueryVO) { // 构造分页对象 Page<Employee> employeePage = new Page<>(pageNum, pageSize); // 执行查询 List<Employee> employeeList = employeeMapper.selectAll(employeePage, employeeQueryVO); // 构造返回数据 List<EmployeeDTO> employeeDTOList = new ArrayList<>(employeeList.size()); employeeList.forEach(employee -> { EmployeeDTO employeeDTO = new EmployeeDTO(); BeanUtils.copyProperties(employee, employeeDTO); employeeDTOList.add(employeeDTO); }); // 获取所有员工级别名称和id列表 List<LevelIdAndNameDTO> levelIdAndNameDTOList = (List<LevelIdAndNameDTO>) levelService.getAllLevelIdAndName().getData().get("data"); // 将结果编程map便于获取数据 Map<Long, String> levelIdAndNameMap = new HashMap<>(levelIdAndNameDTOList.size()); // 给map填充数据 levelIdAndNameDTOList.forEach(levelIdAndNameDTO -> { levelIdAndNameMap.put(levelIdAndNameDTO.getId(), levelIdAndNameDTO.getLevelName()); }); // 给员工列表填充缺失的级别字段 employeeDTOList.forEach(employeeDTO -> { employeeDTO.setLevelName(levelIdAndNameMap.get(employeeDTO.getLevelId())); }); return ResultDTO.success().data("total", Math.toIntExact(employeePage.getTotal())).data("rows", employeeDTOList); } @Override public ResultDTO selectOne(Long id) { // 根据id查询员工信息 Employee employee = employeeMapper.selectById(id); // 根据员工的级别id查询级别信息 Level level = levelMapper.selectById(employee.getLevelId()); // 构造返回数据 EmployeeDetailDTO employeeDetailDTO = new EmployeeDetailDTO(); LevelDTO levelDTO = new LevelDTO(); BeanUtils.copyProperties(employee, employeeDetailDTO); BeanUtils.copyProperties(level, levelDTO); employeeDetailDTO.setLevelDTO(levelDTO); return ResultDTO.success("data", employeeDetailDTO); } }
1.6 编写mapper
public interface EmployeeMapper extends BaseMapper<Employee> { /** * 根据条件分页查询员工信息 * * @param employeePage 分页对象 * @param employeeQueryVO 查询条件对象 * @return */ List<Employee> selectAll(@Param("employeePage") Page<Employee> employeePage, @Param("employeeQueryVO") EmployeeQueryVO employeeQueryVO); }
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="cn.liuliang.quickdinesysstore.mapper.EmployeeMapper"> <resultMap id="employee" type="cn.liuliang.quickdinesysstore.entity.Employee"> <result property="id" javaType="long" column="employee_id"/> <result property="employeeName" javaType="string" column="employee_name"/> <result property="levelId" javaType="long" column="level_id"/> <result property="entryTime" javaType="date" column="entry_time"/> </resultMap> <select id="selectAll" resultMap="employee"> SELECT t_employee.`id` AS employee_id, t_employee.`employee_name`, t_level.`id` AS level_id, t_employee.`entry_time` FROM t_employee LEFT JOIN t_level ON t_level.`id` = t_employee.`level_id` <where> <if test="employeeQueryVO.employeeName != null and employeeQueryVO.employeeName != ''"> AND t_employee.`employee_name` like CONCAT("%",#{employeeQueryVO.employeeName},"%") </if> <if test="employeeQueryVO.levelId != null"> AND t_level.`id` = #{employeeQueryVO.levelId} </if> <if test="employeeQueryVO.entryTime != null and employeeQueryVO.entryTime != ''"> AND DATE_FORMAT(t_employee.`entry_time`, '%Y-%m-%d') = DATE_FORMAT(#{employeeQueryVO.entryTime}, '%Y-%m-%d') </if> </where> ORDER BY t_employee.`update_time` DESC </select> </mapper>
1.7 启动项目swagger测试
http://localhost:9110/swagger-ui.html#/
结束语
- 由于博主才疏学浅,难免会有纰漏,假如你发现了错误或偏见的地方,还望留言给我指出来,我会对其加以修正。
- 如果你觉得文章还不错,你的转发、分享、点赞、留言就是对我最大的鼓励。
- 感谢您的阅读,十分欢迎并感谢您的关注。