【java苍穹外卖项目实战四】新增员工功能

1、需求设计分析

一般在做需求分析时,往往都是对照着产品原型进行分析,因为产品原型比较直观,便于我们理解业务。

后台系统中可以管理员工信息,通过新增员工来添加后台系统用户。

image-20240330225620680

当填写完表单信息, 点击"保存"按钮后, 会提交该表单的数据到服务端, 在服务端中需要接受数据, 然后将数据保存至数据库中。

注意事项:

  1. 账号必须是唯一的
  2. 手机号为合法的11位手机号码
  3. 身份证号为合法的18位身份证号码
  4. 密码默认为123456
2、接口设计

image-20240330225652863

明确新增员工接口的请求路径、请求方式、请求参数、返回数据

本项目约定:

  • 管理端发出的请求,统一使用**/admin**作为前缀。
  • 用户端发出的请求,统一使用**/user**作为前缀。
3、表设计

新增员工,将我们新增页面录入的员工数据插入到employee表。

employee表结构:

字段名数据类型说明备注
idbigint主键自增
namevarchar(32)姓名
usernamevarchar(32)用户名唯一
passwordvarchar(64)密码
phonevarchar(11)手机号
sexvarchar(2)性别
id_numbervarchar(18)身份证号
statusInt账号状态1正常 0锁定
create_timeDatetime创建时间
update_timedatetime最后修改时间
create_userbigint创建人id
update_userbigint最后修改人id
4、设计DTO类

**注意:**当前端提交的数据和实体类中对应的属性差别比较大时,建议使用DTO来封装数据

在com.sky.dto包下,已定义EmployeeDTO,我们直接使用就好了

package com.sky.dto;

import lombok.Data;

import java.io.Serializable;

@Data
public class EmployeeDTO implements Serializable {

    private Long id;

    private String username;

    private String name;

    private String phone;

    private String sex;

    private String idNumber;

}
5、Controller层功能实现

在com.sky.cntroller.admin找到EmployeeController类

在EmployeeController类中创建save方法,方法很简单

  1. 调用业务层(下面会写)
  2. 返回成功标识
@PostMapping
@ApiOperation("新增员工")
public Result sava(@RequestBody EmployeeDTO employeeDTO){

    //打印日志
    log.info("新增员工",employeeDTO);

    //调用逻辑
    employeeService.sava(employeeDTO);

    //返回日志
    return Result.success();
}
  • @PostMapping:用于将HTTP POST请求映射到特定的处理方法上
  • @ApiOperation("新增员工"):Swagger框架的一个注解,生成API文档
  • Result类定义了后端统一返回结果格式。
6、Service层功能实现

在com.sky.server.EmployeeService包下找到EmployeeService接口添加save方法

/**
  * 新增员 工
  * @param employeeDTO
*/
void sava(EmployeeDTO employeeDTO);

在EmployeeServiceImpl中实现新增员工方法

  1. 将dto数据封装给employee对象(因为dto是封装前端传过来的,缺失了一些信息,所以转成employee)
  2. 封装前端没有传递的数据
  3. 调用mapper插入数据库
/**
  * 新增员工
  * @param employeeDTO
*/
@Override
public void sava(EmployeeDTO employeeDTO) {
    //1、将dto数据封装给employee对象
    //使用工具类,BeanUtils.copyProperties(A,B),将A中的属性值赋值给B相同属性值,进行拷贝
    Employee employee = new Employee();
    BeanUtils.copyProperties(employeeDTO,employee);

    //2、封装前端没有传递的数据
    //密码
    employee.setPassword(DigestUtils.md5DigestAsHex(PasswordConstant.DEFAULT_PASSWORD.getBytes()));

    //状态,默认为启用
    employee.setStatus(StatusConstant.ENABLE);

    //创建时间、修改时间、创建人、修改人
    employee.setCreateTime(LocalDateTime.now());
    employee.setUpdateTime(LocalDateTime.now());

    // 从ThreadLocal获取员工id
    employee.setCreateUser(BaseContext.getCurrentId());
    employee.setUpdateUser(BaseContext.getCurrentId());

    //3、调用mapper插入数据库
    employeeMapper.save(employee);

}
7、Mapper层功能实现

在com.sky. mapper中找到接口EmployeeMapper中添加方法

因为是新增员工,所以我们需要对数据库插入语句,用insert方法

@Insert("insert into sky_take_out.employee VALUES(null,#{name},#{username},#{password},#{phone},#{sex},#{idNumber},#{status},#{createTime},#{updateTime},#{createUser},#{updateUser})")
void save(Employee employee);

记得在application.yml中已开启驼峰命名

mybatis:
  configuration:
    #开启驼峰命名
    map-underscore-to-camel-case: true
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小林学习编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值