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

(一)登录

实现思路:

  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层

@PostMappingpublic 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 {@Autowiredprivate EmployeeDao employeeDao;//findPage实现@Overridepublic 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层

@PutMappingpublic 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 {@Autowiredprivate EmployeeDao employeeDao;//修改员工状态实现@Overridepublic int updateEmp(Employee employee) {int rows = employeeDao.updateById(employee);return rows;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/34124.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

瑞吉外卖-移动端菜品展示功能,购物车添加菜品及修改等功能,用户下单功能及历史订单派送功能

整理记录下学习整个瑞吉外卖项目&#xff0c;详细代码可在我的Gitee仓库瑞吉外卖实战克隆下载学习使用&#xff01; 12.菜品展示 12.1 需求分析 12.2 更改前台页面使其正常显示 由于购物车功能还未进行开发&#xff0c;所以修改main.js中的cartListJson函数中访问固定数据&a…

外卖点餐APP-04(后台--菜品管理)

&#xff08;一&#xff09;新增 controller层思路&#xff1a; 调用service处理响应处理结果 PostMapping public R<String> save(RequestBody DishDto dishDto){dishService.saveWithFlavors(dishDto);return R.success("新增成功&#xff01;"); } servi…

瑞吉外卖:后台系统登录和退出功能

文章目录 需求分析代码开发创建实体类导入返回结果类Rcontroller、service与mapperlogin.html防止非法访问 需求分析 点击登录按钮后&#xff0c;浏览器以POST方式向employee/login提交username和password&#xff0c;服务器经过处理后向浏览器返回某种格式的数据&#xff0c;…

服装销售数据分析

目录&#xff1a; 一、项目背景介绍 二、数据源 三、分析流程 四、分析框架 五、知识点总结 一、项目背景介绍&#xff1a; 某服装经销商经营多个女装品牌&#xff0c;每个品牌设有线下店铺。该公司老板及销售总监需在每日营业结束后查看当日销售数据。以往主要由业务员手动整…

创建报价单或销售凭证,提示无定价确定过程能被确定,消息号V1212

创建报价单&#xff0c;提示无定价确定过程能被确定&#xff0c;消息号V1212。 解决方案&#xff1a; spro 》销售和分销——》基本功能——》定价——》定价控制——》定价并分配定价过程 1&#xff09;将凭证定价程序分配给订单类型 2&#xff09;设置定价程序确定&#xff0…

ChatGPT工作提效之layedit上传多附件的解决方案(layedit赋值、layui.js底层修改、追加模式多附件上传)

ChatGPT工作提效系列文章目录 ChatGPT工作提效之初探路径独孤九剑遇强则强ChatGPT工作提效之在程序开发中的巧劲和指令(创建MySQL语句、PHP语句、Javascript用法、python的交互)ChatGPT工作提效之生成开发需求和报价单并转为Excel格式ChatGPT工作提效之小鹅通二次开发批量API对…

Zia和ChatGPT如何协同工作?

有没有集成ChatGPT的CRM系统推荐&#xff1f;Zoho CRM已经正式与ChatGPT集成。下面我们将从使用场景、使用价值和使用范围等方面切入讲述CRMAI的应用和作用。 Zia和ChatGPT如何协同工作&#xff1f; Zia和ChatGPT是不同的人工智能模型&#xff0c;在CRM中呈现出共生的关系。 …

AIGC持续火爆大模型争相推出,庞大市场造就算力供应模式演变

本图由AI生成 文/王吉伟 近期的AIGC领域仍旧火爆异常。 但火的不只是AIGC应用&#xff0c;还有巨头之间的AI竞赛&#xff0c;以及接连不断上新的AI大模型&#xff08;LLM&#xff0c;Large Language Model&#xff09;。 面对ChatGPT带来的技术冲击&#xff0c;为了研发谷歌多…

ChatGPT实现命名实体识别(NER, named entity recognization)和词性归类

语义分析词格分类 命名实体识别(NER, named entity recognization)和词性归类是 NLP 技术中的关键一环。过去 NLP 领域有不少流行的开源项目专注在这个领域&#xff0c;如 Spacy、NLTK 等等。我们来试试 ChatGPT 在这方面的表现情况如何。我们从"四渡赤水"的百度百科…

突发!两所知名大学,曝合并!校方紧急回应:校长将亲自说明!

点击上方“3D视觉工坊”&#xff0c;选择“星标” 干货第一时间送达 来源丨联合新闻网 编辑丨3D视觉工坊 点击进入—>3D视觉工坊学习交流群 我国台湾又有“国立”大学传出合并的消息&#xff0c;台湾中山大学与台湾高雄大学传将重启合并协商&#xff0c;有网友曝光中山大学发…

从 Uber 数据泄露事件我们可以学到什么?

Uber 数据泄露始于一名黑客从暗网市场购买属于一名 Uber 员工的被盗凭证。最初尝试使用这些凭据连接到 Uber 的网络失败&#xff0c;因为该帐户受 MFA 保护。为了克服这一安全障碍&#xff0c;黑客通过 What’s App 联系了 Uber 员工&#xff0c;并假装是 Uber 的安全人员&…

点击率预估

点击率预估是广告技术的核心算法之一&#xff0c;它是很多广告算法工程师喜爱的战场。一直想介绍一下点击率预估&#xff0c;但是涉及公式和模型理论太多&#xff0c;怕说不清楚&#xff0c;读者也不明白。所以&#xff0c;这段时间花了一些时间整理点击率预估的知识&#xff0…

老鸟教你如何精确评估开发时间

一个程序员能否精确评估开发时间&#xff0c;是一件非常重要的事情。如果你掌握了这项技能&#xff0c;你在别人的眼里就会是这样&#xff1a; 靠谱经验十足对需求很了解延期风险小合格的软件工程师正规军&#xff0c;不是野路子 评估开发时间的重要性 首先&#xff0c;在一…

从FM推演各深度CTR预估模型(附代码)

作者&#xff1a; 龙心尘 && 寒小阳 时间&#xff1a;2018年7月 出处&#xff1a;https://blog.csdn.net/longxinchen_ml/article/details/81031736 https://blog.csdn.net/han_xiaoyang/article/details/81031961 声明&#xff1a;版权所有&#xff0c;转载请联系作者…

[项目管理] 如何评估工作量

1.1. 工作量估算的定义 工作量估算 即对开发软件产品所需的人力和时间的估算——人力成本是一个项目的主要成本。 我们可以根据预估的工作量决定具体由几个人、哪几个人参与该项目。 工作量通常以 人/天、人/月、人/年 的形式来衡量。 1.2. 为什么要进行工作量估算 做好工…

机器学习实战 | 综合项目-电商销量预估

作者&#xff1a;韩信子ShowMeAI 教程地址&#xff1a;https://www.showmeai.tech/tutorials/41 本文地址&#xff1a;https://www.showmeai.tech/article-detail/206 声明&#xff1a;版权所有&#xff0c;转载请联系平台与作者并注明出处 收藏ShowMeAI查看更多精彩内容 1.案例…

Python:实现进度条和时间预估

一、前言 在python当中可以用进度条来显示工作的进度&#xff0c;比如for循环的进度或者一些模型训练的进度。 在这里可以使用progressbar包以及tqdm包来实现。 使用pip install progressbar 安装progressbar包。 使用pip install tqdm安装tqdm包。 二、代码 1. progress…

如何科学预估开发时间

0. 我是前言 一个开发人员能否精确评估开发时间&#xff0c;是一件非常重要的事情。如果你掌握了这项技能&#xff0c;你在别人的眼里就会是这样&#xff1a; 1. 评估开发时间的重要性 首先&#xff0c;在一个项目中&#xff0c;所有的环节都是承上启下的&#xff0c;不管你是…

编译原理之代码生成

前面提到了经过了词法分析->语法分析->语义分析->中间代码优化&#xff0c;最后的阶段便是在目标机器上运行的目标代码的生成了。目标代码生成阶段的任务是&#xff1a;将此前的中间代码转换成特定机器上的机器语言或汇编语言&#xff0c;这种转换程序便被称为代码生成…

前端案例-跟随鼠标移动的天使

&#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是阿牛&#xff0c;全栈领域新星创作者。&#x1f61c;&#x1f4dd; 个人主页&#xff1a;馆主阿牛&#x1f525;&#x1f389; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4d…