外卖点餐APP-02(后台--员工管理)

发布于:2022-12-02 ⋅ 阅读:(730) ⋅ 点赞:(0)

(一)登录

实现思路:

  1. 接收到用户登录输入的用户名和密码,封装到了emp对象中
  2. 对密码进行MD5加密
  3. 创建条件构造器
  4. 添加sql查询判断条件,emp对象中的Username等于Employee数据表中的Username
  5. 调用MyBatis-Plus的方法查询数据库,返回Employee对象
  6. 判断员工是否存在
  7. 判断员工账号和密码是否匹配
  8. 判断员工是否被禁用
  9. 登录成功,将员工id存入Session
  10. 返回成功结果【员工对象】

controller层代码如下:

@PostMapping("/login")
    public R login(HttpSession session, @RequestBody Employee emp){
        log.info("【登录员工信息:{}】",emp);
        String password = DigestUtils.md5DigestAsHex(emp.getPassword().getBytes());
        LambdaQueryWrapper<Employee> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(Employee::getUsername,emp.getUsername());
        Employee employee = employeeService.getOne(wrapper);
        if (employee==null){
            return R.error("员工不存在!");
        }
        if (password==null){
            return R.error("员工账号和密码不匹配!");
        }
        if (employee.getStatus()==0){
            return R.error("员工已禁用!");
        }
        session.setAttribute("employee",employee.getId());
        return R.success(employee);
    }

(二)登录退出

实现思路:

  1. 清理session中用户信息,直接让当前这个用户关联的session对象立即失效,其中保存的数据也被删掉了
  2. 再返回处理结果

controller层

@PostMapping("/logout")
    public R logout(HttpSession  session){
        session.invalidate();
        return R.success("退出成功!");
    }

(三)新增

实现思路:

  1. 接收到用户登录输入的用户名和密码,封装到了emp对象中
  2. 给emp对象设置使用md5加密之后的默认密码
  3. 给emp对象设置默认状态为启用
  4. 调用mybatisplus提供的通用IService接口类的save新增保存方法
  5. 返回处理结果

controller层

@PostMapping
    public R add(HttpSession session,@RequestBody Employee emp){
        emp.setPassword(DigestUtils.md5DigestAsHex("123456".getBytes()));
        emp.setStatus(1);
        boolean flag = employeeService.save(emp);
        return flag?R.success(true):R.error("新增员工失败!");
    }

(四)分页查询

实现思路:

  1. 调用业务处理
  2. 响应处理结果

controller层

@GetMapping("/page")
public R<Page<Employee>> selectPage(@RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "10") int pageSize, String name){
    Page<Employee> empPage = employeeService.findPage(page,pageSize,name);
    return R.success(empPage);
}

service层

public interface EmployeeService extends IService<Employee> {
    Page<Employee> findPage(int page, int pageSize, String name);
}

实现思路:

  1. 注入employeeDao
  2. 配置MyBatisPlus分页拦截器,在公共部分已配置
  3. 执行分页查询 返回Page对象
  4. 将分页查询参数page和pageSize封装到Page对象中
  5. 创建wrapper对象 设置查询条件
  6. 调用selectPage方法 传入Page和Wrapper对象 完成分页查询
  7. 返回Page对象

serviceImpl层代码实现如下:

@Service
public class EmployeeServiceImpl extends ServiceImpl<EmployeeDao, Employee> implements EmployeeService {
    @Autowired
    private EmployeeDao employeeDao;
    //findPage实现
    @Override
    public Page<Employee> findPage(int page, int pageSize, String name) {
        Page<Employee> employeePage = new Page<>(page, pageSize);
        LambdaQueryWrapper<Employee> wrapper = new LambdaQueryWrapper<>();
        wrapper.like(name!=null && name.length()>0,Employee::getName,name);
        employeeDao.selectPage(employeePage,wrapper);
        return employeePage;
    }
}

(五)根据ID查询

实现思路:

  1. 调用mybatisplus提供的通用IService接口类的getById()方法
  2. 响应处理结果

controller层实现代码:

@GetMapping("/{id}")
    public R<Employee> getById(@PathVariable Long id){
        Employee employee = employeeService.getById(id);
        return R.success(employee);
    }

(六)禁用 && 启用

controller层

@PutMapping
    public R<String> updateEmp(@RequestBody Employee employee,HttpSession session){
        //1.调用service处理
        int rows = employeeService.updateEmp(employee);
        //2.响应处理结果
        return rows>0?R.success("修改成功!"):R.error("修改失败!");
    }

service层

public interface EmployeeService extends IService<Employee> {
    Page<Employee> findPage(int page, int pageSize, String name);
}

serviceImpl层

实现思路:

  1. 注入employeeDao
  2. 修改员工状态status  MyBatisPlus中的修改默认使用了动态修改部分字段  id和status,只会根据id修改status
@Service
public class EmployeeServiceImpl extends ServiceImpl<EmployeeDao, Employee> implements EmployeeService {
    @Autowired
    private EmployeeDao employeeDao;
    //修改员工状态实现
    @Override
    public int updateEmp(Employee employee) {
        int rows = employeeDao.updateById(employee);
        return rows;
    }
}
本文含有隐藏内容,请 开通VIP 后查看