一.登录

1.接口文档

2.DTO和VO

@Data
@ApiModel(description = "员工登录时传递的数据模型")
public class EmployeeLoginDTO implements Serializable {

    @ApiModelProperty("用户名")
    private String username;

    @ApiModelProperty("密码")
    private String password;

}
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(description = "员工登录返回的数据格式")
public class EmployeeLoginVO implements Serializable {

    @ApiModelProperty("主键值")
    private Long id;

    @ApiModelProperty("用户名")
    private String userName;

    @ApiModelProperty("姓名")
    private String name;

    @ApiModelProperty("jwt令牌")
    private String token;

}

3.mapper

/**
 * 员工登录
 * @param employeeLoginDTO
 * @return
 */
Employee login(EmployeeLoginDTO employeeLoginDTO);

4.service

/**
 * 员工登录
 *
 * @param employeeLoginDTO
 * @return
 */
public Employee login(EmployeeLoginDTO employeeLoginDTO) {
    String username = employeeLoginDTO.getUsername();
    String password = employeeLoginDTO.getPassword();

    //1、根据用户名查询数据库中的数据
    Employee employee = employeeMapper.getByUsername(username);

    //2、处理各种异常情况(用户名不存在、密码不对、账号被锁定)
    if (employee == null) {
        //账号不存在
        throw new AccountNotFoundException(MessageConstant.ACCOUNT_NOT_FOUND);
    }

    //密码比对
    // 对前端传过来的明文密码进行md5加密处理
    password = DigestUtils.md5DigestAsHex(password.getBytes());
    System.out.println("输入的密码MD5:"+password);
    System.out.println("数据库的密码:"+employee.getPassword());
    System.out.println("是否相等"+password.equals(employee.getPassword()));
    if (!password.equals(employee.getPassword())) {
        //密码错误
        throw new PasswordErrorException(MessageConstant.PASSWORD_ERROR);
    }

    if (employee.getStatus() == StatusConstant.DISABLE) {
        //账号被锁定
        throw new AccountLockedException(MessageConstant.ACCOUNT_LOCKED);
    }

    //3、返回实体对象
    return employee;
}

5.controller

/**
 * 登录
 *
 * @param employeeLoginDTO
 * @return
 */
@PostMapping("/login")
public Result<EmployeeLoginVO> login(@RequestBody EmployeeLoginDTO employeeLoginDTO) {
    log.info("员工登录:{}", employeeLoginDTO);

    Employee employee = employeeService.login(employeeLoginDTO);

    //登录成功后,生成jwt令牌
    Map<String, Object> claims = new HashMap<>();
    claims.put(JwtClaimsConstant.EMP_ID, employee.getId());
    String token = JwtUtil.createJWT(
            jwtProperties.getAdminSecretKey(),
            jwtProperties.getAdminTtl(),
            claims);

    EmployeeLoginVO employeeLoginVO = EmployeeLoginVO.builder()
            .id(employee.getId())
            .userName(employee.getUsername())
            .name(employee.getName())
            .token(token)
            .build();

    return Result.success(employeeLoginVO);
}

/**
 * 退出
 *
 * @return
 */
@PostMapping("/logout")
public Result<String> logout() {
    return Result.success();
}

二.新增员工

1.接口文档

2.DTO和VO

@Data
@ApiModel(description = "新增员工时传递的数据模型")

public class EmployeeDTO {
    private Long id;
    private String idNumber;
    private String name;
    private String phone;
    private String sex;
    private String username;
}

3.mapper

<insert id="insertNewEmployee" useGeneratedKeys="true" keyProperty="id">
    Insert into employee(name,username,password,phone,sex,id_number,status,create_time,update_time,create_user)values(
     #{name},#{username},#{password},#{phone},#{sex},#{idNumber},#{status},#{createTime},#{updateTime},#{createUser});
</insert>

4.service

/**
     * 新增员工
     * @param employeeDTO
     */
  @Override
    public void save(EmployeeDTO employeeDTO){
Employee employee =new Employee();
employee.setName(employeeDTO.getName());
employee.setUsername(employeeDTO.getUsername());
employee.setPassword(DigestUtils.md5DigestAsHex("123456".getBytes()));
employee.setPhone(employeeDTO.getPhone());
employee.setSex(employeeDTO.getSex());
employee.setIdNumber(employeeDTO.getIdNumber());
employee.setStatus(1);
employee.setCreateTime(LocalDateTime.now());
employee.setUpdateTime(LocalDateTime.now());
employee.setCreateUser(BaseContext.getCurrentId());

employeeMapper.insertNewEmployee(employee);
  }

5.controller

/**
 * 新增员工
 * @param employeeDTO
 * @return
 */
@PostMapping
public Result save(@RequestBody EmployeeDTO employeeDTO) {
    employeeService.save(employeeDTO);
    return Result.success();
}

三.分页查询

1.接口文档

2.DTO和VO

@Data
@ApiModel(description = "分页查询时传递的数据模型")

public class EmployeePageQueryDTO {
    private String name;
    private int page;
    private int pageSize;
    private int start;
}
@Data
@ApiModel(description = "分页查询返回的数据格式")

public class EmployeePageQueryVO {
private int total;
private List<Employee> records;
}

3.mapper

<select id="selectEmployeePageQuery" resultType="com.sky.entity.Employee">

      select * from employee
      <where>
          <if test="name!=null and name !=''">
              name like concat('%',#{name},'%')
          </if>
</where>
               limit #{start},#{pageSize}
  </select>
  <select id="selectEmployeePageQueryCount" resultType="java.lang.Integer">
      select count(*) from employee
                      <where>
                          <if test="name!=null and name!=''">
                      name like concat('%',#{name},'%')
                      </if>
                      </where>
  </select>

4.service

/**
 * 分页查询查列表,查总数
 * @param employeePageQueryDTO
 * @return
 */
@Override
public  EmployeePageQueryVO selectEmployeePageQuery(EmployeePageQueryDTO employeePageQueryDTO) {
   employeePageQueryDTO.setStart(employeePageQueryDTO.getPageSize()*(employeePageQueryDTO.getPage()-1));
  List<Employee> employeeList=employeeMapper.selectEmployeePageQuery(employeePageQueryDTO);
  int total=employeeMapper.selectEmployeePageQueryCount(employeePageQueryDTO);
  EmployeePageQueryVO employeePageQueryVO=new EmployeePageQueryVO();
  employeePageQueryVO.setTotal(total);
  employeePageQueryVO.setRecords(employeeList);
  return employeePageQueryVO;
}

5.controller

/**
 * 分页查询
 * @param employeePageQueryDTO
 * @return
 */
@GetMapping("/page")
public Result<EmployeePageQueryVO> selectPageQueryVO( EmployeePageQueryDTO employeePageQueryDTO){
   EmployeePageQueryVO employeePageQueryVO= employeeService.selectEmployeePageQuery(employeePageQueryDTO);
 return Result.success(employeePageQueryVO);
}
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐