畅购商城-添加订单实现(一)
观前提示:
- 详细资料观看黑马程序员的畅购商城。
- 该博客尝试用解题思路说明代码实现。
- 笔者当前水平有限,因此该博客质量不高。
已知:
- Idworke:一个分布式的ID生成工具.
- 可以理解为帮助生成数据库表的id。
- 假设已经引入在common公共模块。
- 订单数据库表和订单数据库明细表
- 已建立订单实体类Order。
- 已建立订单明细实体类OrderIte。
- 订单实体类与订单明细实体类的关系可以理解为前者是购物车,后者是购物车的详情商品。
- 已经实现购物车模块
- 购物车实体类是使用了订单明细实体类OrderIte,但是只保存在redis缓存。
- redis缓存可以从RedisTemplate类的对象获取。
- 从Controller层接受Order对象。
- DAO层已经创建OrderMapper和OrderItemMapper。
- 已经依赖Spring Boot等框架。
要求:
- 在订单模块调用Idworker
- 在Service层完成:
- 给Order对象的订单主键id赋值。
- 给Order对象的订单创建时间createTime属性赋值。
- 给Order对象的最近更新时间updateTime属性赋值。
- 给Order对象的商品总数量num属性赋值。
- 给Order对象的商品总金额money属性赋值。
- 赋值后的Order对象和OrderItem对象封装给DAO层的OrderMapper和OrderItemMapper。
解决:
- Idworker在本模块的调用
//方法创建在OrderApplication.java/****
* 创建IDworker
* workerld是机号
* datacenterld是序列
*/
@Bean
public IdWorker idWorker() {return new IdWorker (workerld:0, datacenterld:0);
- 给Order对象的订单主键id赋值。
@Autowired
private IdWorker idWorker;@Override
public void add (Order order){//生成主键id:调用idWork,转换成String,赋给Order对象;order.setId (String. valueOf (idWorker.nextId()));
}
- 给Order对象的订单创建时间createTime属性赋值。
- 给Order对象的最近更新时间updateTime属性赋值。
@Override
public void add (Order order){// 创建时间order.setCreateTime (new Date()); //修改时间:前端传递过来的Order对象中获取order.setUpdateTime (order.getCreateTime()); }
- 给Order对象的商品总数量num属性赋值。
- 给Order对象的商品总金额money属性赋值。
@Autowired
private RedisTemplate redisTemplate;@Override
public void add (Order order){//从Token令牌中获取当前用户名username,并赋值给Order对象的username属性String username = TokenDecode.getUserInfo().get("username");|order.setUsername(username);//根据Order对象的username属性获取redis缓存中购物车实体类,并赋值给OrderItem订单实体类List<OrderItem> orderItem = redisTemplate.boundHash0ps("Cart_" +order.getUsername()).values();int totalNum = 0; //总数量int totalMoney =0; //总金额for (OrderItem orderItem : orderItems) { //循环购物车里每一个商品totalNum += orderItem.getNum(); //从购物车里获取每一个商品的数量totalMoney += orderItem.getMoney(); //从购物车里获取每一个商品的金额}//循环出来的就是订单实体类需要的总数量和总金额order.setTotalNum(totalNum);order.setPayMoney(totalMoney);}
- 赋值后的Order对象和OrderItem对象封装给DAO层的OrderMapper和OrderItemMapper。
@Autowired
private OrderMapper orderMapper;@Autowired
private OrderItemMapper orderItemMapper;@Override
public void add (Order order){//订单明细的IDorderItem.setId(String.valueOf(idWorker.nextId());//订单明细所属的订单,从订单主键id获取,因此我们需要把订单主键id先在写在上面orderItem.setOrderId(order.getId());//先添加订单信息,再循环添加订单明细orderMapper.insertSelective(order);for (OrderItem orderItem : orderItems) {orderItemMapper.insertSelective(orderItem);}}
畅购商城-添加订单实现(一)相关推荐
- 畅购商城_第11章_ 订单
畅购商城_第11章_ 订单 文章目录 畅购商城_第11章_ 订单 第11章 订单 课程内容 1 订单结算页 1.1 收件地址分析 1.2 实现用户收件地址查询 1.2.1 代码实现 1.2.2 测试 ...
- 畅购商城(三):商品管理
好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航 畅购商城(一):环境搭建 畅购商 ...
- 商品品牌信息的增删改查操作步骤_畅购商城(三):商品管理
好好学习,天天向上 本文已收录至我的Github仓库 DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star 畅购商城(一):环境搭建 畅购商城(二):分布式文件系统 ...
- 畅购商城(五):Elasticsearch实现商品搜索
好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航 畅购商城(一):环境搭建 畅购商 ...
- 畅购商城4.0 微信支付
畅购商城4.0 1.微信支付 1.1流程分析 1.2微信支付概述 1.2.1账号申请 步骤一:注册公众号,根据自身主体类型注册对应的公众号 只能申请服务号,订阅号没有办法申请支付 https:// ...
- 畅购商城(十三):秒杀系统「上」
好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star 畅购商城(一):环境搭建 畅购商城(二):分布式文件系统F ...
- 【畅购商城】校验用户名、手机号以及前置技术Redis和阿里大鱼短信验证码
搭建环境 后端web服务:changgou4-service-web 修改pom.xml文档 <?xml version="1.0" encoding="UTF-8 ...
- Java毕业设计项目【畅购商城】
为了帮助更多的铁汁们,快速进步,完成毕业设计,挺近大厂,我前面已经分享了很多项目 但是有铁汁们觉得实战项目不够,为了给支持我的朋友吧 此次分享的是商城项目,里面包含视频和代码,涉及到SSM.Sprin ...
- 畅购商城六:微服务网关与jwt令牌
微服务网关 基本概念 对于微服务的各个服务一般会有不同的地址,外部客户端的一个服务可能要调用诸多的接口,这会带来以下的问题 客户端会多次请求不同的微服务,地址复杂 存在跨域请求,处理复杂 认证复杂 难 ...
最新文章
- 设计模式之创建型汇总
- python基础教程:类和对象
- tf.placeholder使用错误
- 好多邮箱的SMTP设置
- C#网络编程(异步传输字符串) - Part.3
- 电厂供配电模拟实训系统QY-GPD03
- 扒一扒能加速互联网的QUIC协议
- Unreal4+Qt+Plugins(unrealcv)安装教程
- SSIS - Excel Destination无法接受大于255个字符长度的字符字段(转载)
- Codeforces Round #744 (Div. 3) B. Shifting Sort
- 重启电脑后MySQL数据丢失_为什么当我重启电脑时会出现数据丢失?
- 常用广域网协议配—Vecloud
- 动作捕捉技术赋能协作机器人示教学习
- 【LSSVM回归预测】基于matlab麻雀算法优化LSSVM回归预测【含Matlab源码 1128期】
- linux中mtools工具_Linux mtools命令 - Linux 教程 - 自强学堂
- AgileConfig 一个轻量级配置中心
- [笔记]c++Windows平台代码规范
- 入营0双非,北理工自动化实力如何?
- 三谈exception——错误处理
- conio.h -1
热门文章
- 京东笔试编程题之方块消除
- idea很带劲的插件
- vue3 elementPlus input输入小写自动转为大写 vant限制输入
- Java根据日利率计算等额本息每月还款
- 以数为基,云启健康未来|“对标世界一流管理——走进一心堂暨生命科学行业峰会”圆满落幕
- 深圳职业技术学院计算机专业分数线,2016深圳职业技术学院分数线
- 电脑文件里哪里能用计算机,计算机管理怎么打开方法图解 计算机管理程序文件在哪里 电脑维修技术网...
- 国外的号码如何批量加入通讯录,Excel表格如何批量导入安卓苹果手机通讯录,如何快速的添加whatsApp,下面介绍具体的方法和软件
- 计算机桌面图片怎么设置大小,怎么设置桌面壁纸大小
- 动物识别——人工智能