springboot3对象属性拷贝和MD5加密
使用代码如下:
- package com.zidiu.service.impl;
- import com.zidiu.constant.MessageConstant;
- import com.zidiu.constant.PasswordConstant;
- import com.zidiu.constant.StatusConstant;
- import com.zidiu.dto.EmployeeDTO;
- import com.zidiu.dto.EmployeeLoginDTO;
- import com.zidiu.entity.Employee;
- import com.zidiu.exception.AccountLockedException;
- import com.zidiu.exception.PasswordErrorException;
- import com.zidiu.mapper.EmployeeMapper;
- import com.zidiu.service.EmployeeService;
- import com.zidiu.utils.JwtUtils;
- import com.zidiu.vo.EmployeeLoginVO;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.util.DigestUtils;
-
- import java.time.LocalDateTime;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Objects;
-
- @Slf4j
- @Service
- public class EmployeeServiceImpl implements EmployeeService {
- @Autowired
- private EmployeeMapper employeeMapper;
- @Override
- public EmployeeLoginVO login(EmployeeLoginDTO employeeLoginDTO) {
- String username = employeeLoginDTO.getUsername();
- String password = employeeLoginDTO.getPassword();
- //1、根据用户名查询数据库中的数据
- Employee employee = employeeMapper.getByUsername(username);
- //2、处理各种异常情况(用户名不存在、密码不对、账号被锁定)
- if (employee == null) {
- //账号不存在
- log.info("账号不存在");
- throw new AccountLockedException(MessageConstant.ACCOUNT_NOT_FOUND);
- }
- //密码比对
- // TODO 后期需要进行md5加密,然后再进行比对
- if (!password.equals(employee.getPassword())) {
- //密码错误
- throw new PasswordErrorException(MessageConstant.PASSWORD_ERROR);
- }
- if (Objects.equals(employee.getStatus(), StatusConstant.DISABLE)) {
- //账号被锁定
- throw new AccountLockedException(MessageConstant.ACCOUNT_LOCKED);
- }
- //登录成功后,生成jwt令牌
- Map<String, Object> dataMap = new HashMap<>();
- dataMap.put("emp_id", employee.getId());
- // dataMap.put("username", employee.getUsername());
- String jwt = JwtUtils.generateToken(dataMap);
- // 用户ID,生成令牌
- log.info("用户ID:{},生成令牌为:{}", employee.getId(), jwt);
- //3、返回实体对象
- return EmployeeLoginVO.builder()
- .id(employee.getId())
- .userName(employee.getUsername())
- .name(employee.getName())
- .token(jwt)
- .build();
- }
-
- /**
- * 新增员工
- * @param employeeDTO
- */
-
- @Override
- public void save(EmployeeDTO employeeDTO) {
- Employee employee = new Employee();
- //对象属性拷贝
- BeanUtils.copyProperties(employeeDTO, employee);
- //设置账号的状态,默认正常状态 1表示正常 0表示锁定
- employee.setStatus(StatusConstant.ENABLE);
- //设置密码,默认密码123456
- employee.setPassword(DigestUtils.md5DigestAsHex(PasswordConstant.DEFAULT_PASSWORD.getBytes()));
- //设置当前记录的创建时间和修改时间
- employee.setCreateTime(LocalDateTime.now());
- employee.setUpdateTime(LocalDateTime.now());
-
- //设置当前记录创建人id和修改人id
- employee.setCreateUser(10L);//目前写个假数据,后期修改
- employee.setUpdateUser(10L);
-
- employeeMapper.insert(employee);//后续步骤定义
- }
- }
复制代码
//对前端传过来的明文密码进行md5加密处理
password = DigestUtils.md5DigestAsHex(password.getBytes());
SpringBoot3+SSM的企业级Java项目实战之外卖小程序
|