- j3_liuliang
- 上期写了订单相关的功能,现在我们来实现一下商家的员工相关内容
项目相关文章导航:
- 快捷点餐项目简介
- 餐饮系统设计概括
- 餐饮系统店家后端基础功能构建
- 快捷餐饮之店家后台OSS文件管理实现
- 快捷餐饮之店家后台厨艺秀实现
- 快捷餐饮之店家后台菜品分类及菜品管理实现
- 快捷餐饮之店家后台评论管理及餐桌管理实现
- 快捷餐饮之店家后台订单管理实现
- 快捷餐饮之店家后台员工管理实现
- 快捷餐饮之店家系统相关功能
项目Git地址:
点这里哦!
一、员工管理
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#/
结束语
- 由于博主才疏学浅,难免会有纰漏,假如你发现了错误或偏见的地方,还望留言给我指出来,我会对其加以修正。
- 如果你觉得文章还不错,你的转发、分享、点赞、留言就是对我最大的鼓励。
- 感谢您的阅读,十分欢迎并感谢您的关注。