快捷餐饮之店家后台员工管理实现

简介: 快捷餐饮之店家后台员工管理实现


一、员工管理


1.1 编写员工信息vo对象

EmployeeVO


image.png


/**
 * @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


image.png


/**
 * @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


image.png


/**
 * @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 编写控制器类


image.png


@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 编写业务类


image.png


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


image.png


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#/


image.png


结束语


  • 由于博主才疏学浅,难免会有纰漏,假如你发现了错误或偏见的地方,还望留言给我指出来,我会对其加以修正。
  • 如果你觉得文章还不错,你的转发、分享、点赞、留言就是对我最大的鼓励。
  • 感谢您的阅读,十分欢迎并感谢您的关注。
目录
相关文章
|
SQL 安全 JavaScript
基于JavaWeb的电影院在线选座订票管理系统
基于JavaWeb的电影院在线选座订票管理系统
559 0
基于JavaWeb的电影院在线选座订票管理系统
|
11天前
|
供应链 数据挖掘 API
淘宝API接口系列:数据分析丨Erp上货丨维权控价丨商品搬家丨店铺订单管理
淘宝API接口系列在多个方面为电商业务提供了强大的支持,包括数据分析、ERP上货、维权控价、商品搬家以及店铺订单管理。下面将针对这些方面逐一进行说明。
|
4月前
|
前端开发 JavaScript Java
鲜花线上销售管理系统的设计与实现
鲜花线上销售管理系统的设计与实现
|
JSON 前端开发 Java
校园外卖点餐系统——Day04【菜品管理业务开发】
校园外卖点餐系统——Day04【菜品管理业务开发】
131 0
校园外卖点餐系统——Day04【菜品管理业务开发】
|
Java 数据库连接 测试技术
校园外卖点餐系统——Day03【分类管理业务开发】
校园外卖点餐系统——Day03【分类管理业务开发】
108 0
校园外卖点餐系统——Day03【分类管理业务开发】
|
SQL JSON 前端开发
校园外卖点餐系统——Day02【员工管理业务开发】
校园外卖点餐系统——Day02【员工管理业务开发】
125 0
校园外卖点餐系统——Day02【员工管理业务开发】
|
XML 存储 前端开发
点餐项目实现(一)
点餐项目实现(一)
157 0
点餐项目实现(一)
|
XML 前端开发 JavaScript
点餐项目实现(二)
点餐项目实现(二)
164 0
点餐项目实现(二)
|
XML 前端开发 数据格式
点餐项目实现(三)
点餐项目实现(三)
174 0
|
网络协议 测试技术 Go
家庭收支软件需求和界面|学习笔记
快速学习家庭收支软件需求和界面
102 0
家庭收支软件需求和界面|学习笔记