苍穹外卖笔记-05-员工管理-账号的启用和禁用,修改员工信息

1 员工账号的启用与禁用

1.1 需求分析和设计

1 页面原型
在员工管理列表页面,可以对某个员工账号进行启用或者禁用操作。账号禁用的员工不能登录系统,启用后的员工可以正常登录。如果某个员工账号状态为正常,则按钮显示为 “禁用”,如果员工账号状态为已禁用,则按钮显示为"启用"。
业务规则:

  • 可以对状态为“启用” 的员工账号进行“禁用”操作
  • 可以对状态为“禁用”的员工账号进行“启用”操作
  • 状态为“禁用”的员工账号不能登录系统

在这里插入图片描述
1.2 接口设计
在这里插入图片描述
1). 路径参数携带状态值。

2). 同时,把id传递过去,明确对哪个用户进行操作。

3). 返回数据code状态是必须,其它是非必须。

1.2 代码开发

Controller层

在sky-server模块中,根据接口设计中的请求参数形式对应的在 EmployeeController 中创建启用禁用员工账号的方法:

	/**
     * 启用禁用员工账号
     * @param status
     * @param id
     * @return
     */
    @PostMapping("/status/{status}")
    @ApiOperation("启用禁用员工账号")
    public Result startOrStop(@PathVariable Integer status,Long id){
        log.info("启用禁用员工账号:{},{}",status,id);
        employeeService.startOrStop(status,id);//后绪步骤定义
        return Result.success();
    }

Service

在 EmployeeService 接口中声明启用禁用员工账号的业务方法:

	/**
     * 启用禁用员工账号
     * @param status
     * @param id
     */
    void startOrStop(Integer status, Long id);

在 EmployeeServiceImpl 中实现启用禁用员工账号的业务方法:

	/**
     * 启用禁用员工账号
     *
     * @param status
     * @param id
     */
    public void startOrStop(Integer status, Long id) {
        Employee employee = Employee.builder()
                .status(status)
                .id(id)
                .build();

        employeeMapper.update(employee);
    }

Mapper

在 EmployeeMapper 接口中声明 update 方法:

	/**
     * 根据id动态修改属性
     * @param employee
     */
    void update(Employee employee);

在 EmployeeMapper.xml 中编写SQL:

<update id="update" parameterType="Employee">
        update employee
        <set>
            <if test="name != null">name = #{name},</if>
            <if test="username != null">username = #{username},</if>
            <if test="password != null">password = #{password},</if>
            <if test="phone != null">phone = #{phone},</if>
            <if test="sex != null">sex = #{sex},</if>
            <if test="idNumber != null">id_Number = #{idNumber},</if>
            <if test="updateTime != null">update_Time = #{updateTime},</if>
            <if test="updateUser != null">update_User = #{updateUser},</if>
            <if test="status != null">status = #{status},</if>
        </set>
        where id = #{id}
    </update>

1.3 功能测试

接口文档测试和前后端测试
在这里插入图片描述
在这里插入图片描述

我成功喽!

2 修改员工信息

2.1 需求分析与设计

在员工管理列表页面点击 “修改” 按钮,跳转到修改页面,在修改页面回显员工信息并进行修改,最后点击 “保存” 按钮完成修改操作。
在这里插入图片描述

修改页面原型
在这里插入图片描述

注:点击修改时,数据应该正常回显到修改页面。

2.2 接口设计

根据上述原型图分析,编辑员工功能涉及到两个接口:

  • 根据id查询员工信息
  • 编辑员工信息

1). 根据id查询员工信息
在这里插入图片描述
2). 编辑员工信息
在这里插入图片描述
注:因为是修改功能,请求方式可设置为PUT。

2.2 代码开发

回显员工信息功能

1). Controller层

在 EmployeeController 中创建 getById 方法:

	/**
     * 根据id查询员工信息
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    @ApiOperation("根据id查询员工信息")
    public Result<Employee> getById(@PathVariable Long id){
        Employee employee = employeeService.getById(id);
        return Result.success(employee);
    }

2). Service层接口

在 EmployeeService 接口中声明 getById 方法:

    /**
     * 根据id查询员工
     * @param id
     * @return
     */
    Employee getById(Long id);

3). Service层实现类

在 EmployeeServiceImpl 中实现 getById 方法:

 	/**
     * 根据id查询员工
     *
     * @param id
     * @return
     */
    public Employee getById(Long id) {
        Employee employee = employeeMapper.getById(id);
        employee.setPassword("****");
        //屏蔽密码
        return employee;
    }

4). Mapper层

在 EmployeeMapper 接口中声明 getById 方法:

	/**
     * 根据id查询员工信息
     * @param id
     * @return
     */
    @Select("select * from employee where id = #{id}")
    Employee getById(Long id);

修改员工信息功能

1). Controller层

在 EmployeeController 中创建 update 方法:

	/**
     * 编辑员工信息
     * @param employeeDTO
     * @return
     */
    @PutMapping
    @ApiOperation("编辑员工信息")
    public Result update(@RequestBody EmployeeDTO employeeDTO){
        log.info("编辑员工信息:{}", employeeDTO);
        employeeService.update(employeeDTO);
        return Result.success();
    }

2). Service层接口

在 EmployeeService 接口中声明 update 方法:

    /**
     * 编辑员工信息
     * @param employeeDTO
     */
    void update(EmployeeDTO employeeDTO);

3). Service层实现类

在 EmployeeServiceImpl 中实现 update 方法:

 	/**
     * 编辑员工信息
     *
     * @param employeeDTO
     */
    public void update(EmployeeDTO employeeDTO) {
        Employee employee = new Employee();
        BeanUtils.copyProperties(employeeDTO, employee);

        employee.setUpdateTime(LocalDateTime.now());
        employee.setUpdateUser(BaseContext.getCurrentId());

        employeeMapper.update(employee);
    }

在实现启用禁用员工账号功能时,已实现employeeMapper.update(employee),在此不需写Mapper层代码。

2.3 功能测试

接口文档测试
简单写几个信息,其他不写了。

{
  "id": 4,
  "idNumber": "666666666666666666",
  "name": "shen",
  "phone": "13811122233",
  "sex": "1",
  "username": "shen"
}

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
前后端联调测试
在这里插入图片描述
在这里插入图片描述
我测试完成啦!!!

最近更新

  1. TCP协议是安全的吗?

    2024-06-06 12:46:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-06 12:46:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-06 12:46:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-06 12:46:04       18 阅读

热门阅读

  1. python练习5

    2024-06-06 12:46:04       8 阅读
  2. 从内存到sql的upsert

    2024-06-06 12:46:04       7 阅读
  3. pytest识别测试用例的机制以及和unittest的区别

    2024-06-06 12:46:04       7 阅读
  4. 数据库漫谈-国产数据库

    2024-06-06 12:46:04       6 阅读
  5. 【设计模式】适配器模式(结构型)⭐⭐⭐

    2024-06-06 12:46:04       7 阅读
  6. 【机器学习】朴素贝叶斯分类器

    2024-06-06 12:46:04       4 阅读
  7. 第十三届蓝桥杯B组c++国赛

    2024-06-06 12:46:04       6 阅读
  8. SpringBoot如何缓存方法返回值?

    2024-06-06 12:46:04       6 阅读
  9. C++面试经验分享

    2024-06-06 12:46:04       5 阅读
  10. 使用Python进行数据分析的基本步骤

    2024-06-06 12:46:04       6 阅读
  11. transformer中的ffn

    2024-06-06 12:46:04       7 阅读