创建订单 - 填充新订单数据
/*** @Description: 支付方式 枚举*/
public enum PayMethod {WEIXIN(1, "微信"),ALIPAY(2, "支付宝");public final Integer type;public final String value;PayMethod(Integer type, String value){this.type = type;this.value = value;}}
/*** 用于创建订单相关信息* @param submitOrderBO*/
public OrderVO createOrder(SubmitOrderBO submitOrderBO);
@Transactional(propagation = Propagation.REQUIRED)
@Override
public OrderVO createOrder(SubmitOrderBO submitOrderBO) {String userId = submitOrderBO.getUserId();String addressId = submitOrderBO.getAddressId();String itemSpecIds = submitOrderBO.getItemSpecIds();Integer payMethod = submitOrderBO.getPayMethod();String leftMsg = submitOrderBO.getLeftMsg();// 包邮费用设置为0Integer postAmount = 0;String orderId = sid.nextShort();UserAddress address = addressService.queryUserAddres(userId, addressId);// 1. 新订单数据保存Orders newOrder = new Orders();newOrder.setId(orderId);newOrder.setUserId(userId);newOrder.setReceiverName(address.getReceiver());newOrder.setReceiverMobile(address.getMobile());newOrder.setReceiverAddress(address.getProvince() + " "+ address.getCity() + " "+ address.getDistrict() + " "+ address.getDetail());// newOrder.setTotalAmount();
// newOrder.setRealPayAmount();newOrder.setPostAmount(postAmount);newOrder.setPayMethod(payMethod);newOrder.setLeftMsg(leftMsg);newOrder.setIsComment(YesOrNo.NO.type);newOrder.setIsDelete(YesOrNo.NO.type);newOrder.setCreatedTime(new Date());newOrder.setUpdatedTime(new Date());// 2. 循环根据itemSpecIds保存订单商品信息表String itemSpecIdArr[] = itemSpecIds.split(",");Integer totalAmount = 0; // 商品原价累计Integer realPayAmount = 0; // 优惠后的实际支付价格累计for (String itemSpecId : itemSpecIdArr) {// TODO 整合redis后,商品购买的数量重新从redis的购物车中获取int buyCounts = 1;// 2.1 根据规格id,查询规格的具体信息,主要获取价格ItemsSpec itemSpec = itemService.queryItemSpecById(itemSpecId);totalAmount += itemSpec.getPriceNormal() * buyCounts;realPayAmount += itemSpec.getPriceDiscount() * buyCounts;// 2.2 根据商品id,获得商品信息以及商品图片String itemId = itemSpec.getItemId();Items item = itemService.queryItemById(itemId);String imgUrl = itemService.queryItemMainImgById(itemId);// 2.3 循环保存子订单数据到数据库String subOrderId = sid.nextShort();OrderItems subOrderItem = new OrderItems();subOrderItem.setId(subOrderId);subOrderItem.setOrderId(orderId);subOrderItem.setItemId(itemId);subOrderItem.setItemName(item.getItemName());subOrderItem.setItemImg(imgUrl);subOrderItem.setBuyCounts(buyCounts);subOrderItem.setItemSpecId(itemSpecId);subOrderItem.setItemSpecName(itemSpec.getName());subOrderItem.setPrice(itemSpec.getPriceDiscount());orderItemsMapper.insert(subOrderItem);// 2.4 在用户提交订单以后,规格表中需要扣除库存itemService.decreaseItemSpecStock(itemSpecId, buyCounts);}newOrder.setTotalAmount(totalAmount);newOrder.setRealPayAmount(realPayAmount);ordersMapper.insert(newOrder);// 3. 保存订单状态表OrderStatus waitPayOrderStatus = new OrderStatus();waitPayOrderStatus.setOrderId(orderId);waitPayOrderStatus.setOrderStatus(OrderStatusEnum.WAIT_PAY.type);waitPayOrderStatus.setCreatedTime(new Date());orderStatusMapper.insert(waitPayOrderStatus);// 4. 构建商户订单,用于传给支付中心MerchantOrdersVO merchantOrdersVO = new MerchantOrdersVO();merchantOrdersVO.setMerchantOrderId(orderId);merchantOrdersVO.setMerchantUserId(userId);merchantOrdersVO.setAmount(realPayAmount + postAmount);merchantOrdersVO.setPayMethod(payMethod);// 5. 构建自定义订单voOrderVO orderVO = new OrderVO();orderVO.setOrderId(orderId);orderVO.setMerchantOrdersVO(merchantOrdersVO);return orderVO;
}
/*** 根据用户id和地址id,查询具体的用户地址对象信息* @param userId* @param addressId* @return*/
public UserAddress queryUserAddres(String userId, String addressId);
@Transactional(propagation = Propagation.SUPPORTS)
@Override
public UserAddress queryUserAddres(String userId, String addressId) {UserAddress singleAddress = new UserAddress();singleAddress.setId(addressId);singleAddress.setUserId(userId);return userAddressMapper.selectOne(singleAddress);
}
创建订单 - 填充新订单数据相关推荐
- 如何在原先的jqgrid中填充新的数据_如何提升NX工程师的逆向能力与速度
前言: 逆向工程造型对于NX软件来讲按旧的思路来造型设计已经远远不能达到市场上的需要,不管是从速度或者是从质量上来讲都很难满足,在这一章节里带大家一起来认识一下NX功能的另一面. 一.STL档案小平面 ...
- 如何在原先的jqgrid中填充新的数据_自然人电子税务局(扣缴端)数据如何恢复?申税小微教您轻松搞定...
自然人电子税务局 数据如何恢复? 申税小微教您轻松搞定! 财务小王:申税小微,我们公司换了新电脑,重新安装的自然人电子税务局(扣缴端)上没有人员采集信息和历史申报数据该怎么办? 申税小微: 1.可以在 ...
- 畅捷通T+与畅捷通T+对接集成批量新增销售订单连通存货批量创建(批量新增销售订单)
畅捷通T+与畅捷通T+对接集成批量新增销售订单连通存货批量创建(批量新增销售订单) 对接系统畅捷通T+ "T+"是一款灵动.智慧.时尚的互联网管理软件,主要针对中小型工贸和商贸企业 ...
- php新订单提醒代码,PHP怎么实现新订单提醒功能
PHP实现新订单提醒功能的方法:首先实现ajax轮询:然后下载workerman:接着连接服务端,代码为"var socket = io('http://www.tp5_test.com:2 ...
- 视频号小店新订单如何实时同步企业微信
随着直播带货的火热,视频号小店也为商家提供商品信息服务.商品交易,支持商家在视频号运营电商,许多企业也将产品的零售路径渗透至视频号小店中了.如果我们希望在视频号小店接收到订单后,能尽快及时发货,给用户 ...
- Code First开发系列之管理数据库创建,填充种子数据以及LINQ操作详解
本篇目录 管理数据库创建 管理数据库连接 管理数据库初始化 填充种子数据 LINQ to Entities详解 什么是LINQ to Entities 使用LINQ to Entities操作实体 L ...
- 8天掌握EF的Code First开发系列之3 管理数据库创建,填充种子数据以及LINQ操作详解...
本文出自8天掌握EF的Code First开发系列,经过自己的实践整理出来. 本篇目录 管理数据库创建 管理数据库连接 管理数据库初始化 填充种子数据 LINQ to Entities详解 什么是LI ...
- WooCommerce入门指南:添加新订单第1部分
在上一篇文章中,我介绍了在线商店所有者如何跟踪和管理客户下的订单. 如果您想手动下订单怎么办? 这是今天文章的主题,我将在其中解释如何在WooCommerce中添加新订单. 添加新订单 要在WooCo ...
- SAP母子订单(汇总订单)详解测试_SAP刘梦_新浪博客
汇总订单:一个在几个生产层次上链接计划订单或生产订单的多层结构.仅为结构中的最上面一个订单执行库存移动.每个订单有一个单独的订单号. 汇总订单(母子订单)优点 1.生产工艺的集成视图 汇总订单允许你在 ...
最新文章
- JBPM4.4_jBPM4.4应用(与Spring集成自行控制事务等)
- 再谈STM32的CAN过滤器-bxCAN的过滤器的4种工作模式以及使用方法总结
- 曾宝仪和机器人_你愿意和机器人成为终身伴侣吗?
- linux通常使用的 rc 和 .(点)文件
- mysql insert 不需要日志_MySQL数据库性能优化(1)「转」
- 阿里云峰会|阿里云数据中台重磅升级后拟扶持100万家企业数智化
- 清理linux 服务器的命令行,使用Linux上的Magic SysRq键修复冻结的X服务器,清理重新启动并运行其他低级命令 | MOS86...
- laravel运用redis存储数据和读取的方式
- Linux内核源代码分析——vmstat核心代码注释
- 安卓版App开发心得
- 怎么从视频文件中提取音频?
- 【元胞自动机】基于matlab元胞自动机收费站交通问题【含Matlab源码 357期】
- Quartz 定时任务 cron 表达式详解
- win7计算机摄像头怎么打开,win7的摄像头在哪里打开 怎么打开win7摄像头
- Smart Git Assume Unchanged
- 用人工智能做广告,它成为第一家走上IPO的人工智能企业
- php vip卡,vip.php
- Python matplotlib绘制函数曲线
- pyinstaller 打包内置文件,ico文件内置
- 罗升阳:那两年炼就的Android内功修养(转载老罗的)