观前提示:

  • 详细资料观看黑马程序员的畅购商城。
  • 该博客尝试用解题思路说明代码实现。
  • 笔者当前水平有限,因此该博客质量不高。

已知:

  • 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);}}

畅购商城-添加订单实现(一)相关推荐

  1. 畅购商城_第11章_ 订单

    畅购商城_第11章_ 订单 文章目录 畅购商城_第11章_ 订单 第11章 订单 课程内容 1 订单结算页 1.1 收件地址分析 1.2 实现用户收件地址查询 1.2.1 代码实现 1.2.2 测试 ...

  2. 畅购商城(三):商品管理

    好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航 畅购商城(一):环境搭建 畅购商 ...

  3. 商品品牌信息的增删改查操作步骤_畅购商城(三):商品管理

    好好学习,天天向上 本文已收录至我的Github仓库 DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star 畅购商城(一):环境搭建 畅购商城(二):分布式文件系统 ...

  4. 畅购商城(五):Elasticsearch实现商品搜索

    好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航 畅购商城(一):环境搭建 畅购商 ...

  5. 畅购商城4.0 微信支付

    畅购商城4.0 1.微信支付 1.1流程分析 1.2微信支付概述 1.2.1账号申请 步骤一:注册公众号,根据自身主体类型注册对应的公众号 只能申请服务号,订阅号没有办法申请支付 https:// ...

  6. 畅购商城(十三):秒杀系统「上」

    好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star 畅购商城(一):环境搭建 畅购商城(二):分布式文件系统F ...

  7. 【畅购商城】校验用户名、手机号以及前置技术Redis和阿里大鱼短信验证码

    搭建环境 后端web服务:changgou4-service-web 修改pom.xml文档 <?xml version="1.0" encoding="UTF-8 ...

  8. Java毕业设计项目【畅购商城】

    为了帮助更多的铁汁们,快速进步,完成毕业设计,挺近大厂,我前面已经分享了很多项目 但是有铁汁们觉得实战项目不够,为了给支持我的朋友吧 此次分享的是商城项目,里面包含视频和代码,涉及到SSM.Sprin ...

  9. 畅购商城六:微服务网关与jwt令牌

    微服务网关 基本概念 对于微服务的各个服务一般会有不同的地址,外部客户端的一个服务可能要调用诸多的接口,这会带来以下的问题 客户端会多次请求不同的微服务,地址复杂 存在跨域请求,处理复杂 认证复杂 难 ...

最新文章

  1. 设计模式之创建型汇总
  2. python基础教程:类和对象
  3. tf.placeholder使用错误
  4. 好多邮箱的SMTP设置
  5. C#网络编程(异步传输字符串) - Part.3
  6. 电厂供配电模拟实训系统QY-GPD03
  7. 扒一扒能加速互联网的QUIC协议
  8. Unreal4+Qt+Plugins(unrealcv)安装教程
  9. SSIS - Excel Destination无法接受大于255个字符长度的字符字段(转载)
  10. Codeforces Round #744 (Div. 3) B. Shifting Sort
  11. 重启电脑后MySQL数据丢失_为什么当我重启电脑时会出现数据丢失?
  12. 常用广域网协议配—Vecloud
  13. 动作捕捉技术赋能协作机器人示教学习
  14. 【LSSVM回归预测】基于matlab麻雀算法优化LSSVM回归预测【含Matlab源码 1128期】
  15. linux中mtools工具_Linux mtools命令 - Linux 教程 - 自强学堂
  16. AgileConfig 一个轻量级配置中心
  17. [笔记]c++Windows平台代码规范
  18. 入营0双非,北理工自动化实力如何?
  19. 三谈exception——错误处理
  20. conio.h -1

热门文章

  1. 京东笔试编程题之方块消除
  2. idea很带劲的插件
  3. vue3 elementPlus input输入小写自动转为大写 vant限制输入
  4. Java根据日利率计算等额本息每月还款
  5. 以数为基,云启健康未来|“对标世界一流管理——走进一心堂暨生命科学行业峰会”圆满落幕
  6. 深圳职业技术学院计算机专业分数线,2016深圳职业技术学院分数线
  7. 电脑文件里哪里能用计算机,计算机管理怎么打开方法图解 计算机管理程序文件在哪里 电脑维修技术网...
  8. 国外的号码如何批量加入通讯录,Excel表格如何批量导入安卓苹果手机通讯录,如何快速的添加whatsApp,下面介绍具体的方法和软件
  9. 计算机桌面图片怎么设置大小,怎么设置桌面壁纸大小
  10. 动物识别——人工智能