登录,新增员工和分页查询
·
一.登录
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);
}
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)