Java电商订单_Java电商项目学习(十) 订单管理模块开发
订单管理接口设计前台订单管理接口
后台订单管理接口
创建订单控制器中传入参数为session和收货地址ID,首先校验用户是否登录,如果是则将用户id和shippingId交给服务层控制函数处理;
服务层处理函数首先根据userId查询购物车表,得到购物车中已勾选的商品明细,然后遍历得到订单总价(前提要校验产品售卖状态和库存),转换为订单明细的列表,再生成订单Order(订单号的生成方式是currentTime + new Random().nextInt(100),避免重复,后续可以更详细的对订单号的生成方式进行编排),接着遍历订单明细的列表,给每个订单明细OrderItem添加订单号,之后将订单明细列表批量插入到order_item表中1
2
3
4
5
6
7
8
9
10
11
12
insert into mmall_order_item (id, order_no,user_id, product_id,
product_name, product_image, current_unit_price,
quantity, total_price, create_time,
update_time)
values
(
#{item.id},#{item.orderNo},#{item.userId},#{item.productId},#{item.productName},#{item.productImage},#{item.currentUnitPrice},#{item.quantity},#{item.totalPrice},now(),now()
)
通过购物车商品生成订单后,将产品库存减少,并清空购物车中已选的商品
返回给前端的订单数据还需要进一步装配,将Order和OrderItemList装配成OrderVo返回即可
取消订单控制器中传入参数为session和订单号orderNo,首先校验用户是否登录,如果是则将用户id和orderNo交给服务层控制函数处理;
服务层处理函数首先根据userId和orderNo查询数据库中的对应订单order,判断订单是否存在,判断订单状态是否为已支付,如果订单存在且未支付,则更新订单状态为CANCELED,更新到数据库订单列表中,返回成功
获取订单商品信息控制器中传入参数为session,首先校验用户是否登录,如果是则将用户id交给服务层控制函数处理;
服务层处理函数中首先根据userId查询购物车中已勾选商品的明细列表cartList,然后转换成订单明细列表orderItemList,再转换成orderItemVo的列表orderItemVoList,并计算订单商品总价,根据以上信息装配orderProductVo,作为ServerResponse的data返回即可
获取订单详情控制器中传入参数为session和订单号orderNo,首先校验用户是否登录,如果是则将用户id和orderNo交给服务层控制函数处理;
服务层处理函数根据userId和orderNo查询数据库订单表,判断订单order是否存在,然后再根据userId和orderNo查询数据库订单明细表,得到订单明细列表orderItemList,然后根据order和orderItemList装配orderVo,作为ServerResponse的data返回
获取用户订单分页列表控制器中传入参数为session、pageNum、pageSize,首先校验用户是否登录,如果是则将用户id和pageNum、pageSize交给服务层控制函数处理;
服务层处理函数仅根据userId查询数据库订单表,得到订单的列表orderList,然后装配成orderVo的列表orderVoList,作为分页信息的列表,最后将分页信息pageInfo作为ServerResponse的data返回即可1
2
3
4
5
6
7
8
9
10public ServerResponse (Integer userId, int pageNum, int pageSize){
PageHelper.startPage(pageNum, pageSize);
List orderList = orderMapper.selectByUserId(userId);
List orderVoList = assembleOrderVoList(orderList, userId);
PageInfo pageInfo = new PageInfo(orderList);
pageInfo.setList(orderVoList);
return ServerResponse.createBySuccess(pageInfo);
}
管理员获取用户订单分页列表与上面类似,不同之处在于控制器中需要判断是否是管理员,服务层查订单表不需要userId,把全部订单表都查出来,分页即可1
2
3
4
5
6
7
8
9
10public ServerResponse manageList(int pageNum, int pageSize){
PageHelper.startPage(pageNum, pageSize);
List orderList = orderMapper.selectAllOrder();
List orderVoList = assembleOrderVoList(orderList, null);
PageInfo pageInfo = new PageInfo(orderList);
pageInfo.setList(orderVoList);
return ServerResponse.createBySuccess(pageInfo);
}
管理员获取订单详情与普通用户查看订单详情类似,传入参数为session和订单号orderNo,不同之处在于控制器中需要判断是否是管理员,查询数据库时不需要传入userId
管理员按订单号查询与管理员获取订单详情类似,传入参数为session和订单号orderNo,不同之处在于还要添加分页分页参数,为后续的模糊匹配查询作准备
管理员订单发货控制器中传入参数为session和订单号orderNo,首先校验用户是否登录,判断管理员权限,如果是则将orderNo交给服务层控制函数处理;
服务层处理函数根据orderNo查询数据库订单表,判断订单是否存在,再判断订单状态是否为已支付,如果是则更新状态为SHIPPED,并同时更新发货时间,更新到数据库中,返回“发货成功”
Java电商订单_Java电商项目学习(十) 订单管理模块开发相关推荐
- JAVA财务保证金管理模块开发-王大师王文峰开发(项目现场驻场开发)
本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,<Java王大师王天师>作者 公众号:山峯草堂,非技术多篇文章,专注于天道酬勤的 Java 开发问题.中国国学.传统文化和代 ...
- MongoDB+模板引擎 项目学习 ---学生档案管理
MongoDB+模板引擎 项目学习 -学生档案管理 1 案例介绍 目标:模板引擎应用,强化node.js项目制作流程 知识点:http请求响应.数据库.模板引擎.静态资源访问 项目效果展示 2 制 ...
- 项目4:后台管理的开发和使用(前端)
项目4:后台管理的开发和使用(前端) 1.npm包管理器的基本学习 2.利用现成后台管理系统开发 3.后台管理系统的路由配置 4.后台管理系统的地址访问配置 5.前后端联调 6.完善积分等级的前端系统 ...
- 电商平台搭建--订单管理模块开发(一)
Hi,大家好,我是Steafan!项目开发到这里,基本上已经进行了90%了.项目中最关键的也是最难开发的就是今天我要向大家介绍的订单管理模块了.在实际的项目开发中,订单管理模块和支付模块往往是并行开发 ...
- java 班费管理系统_java毕业设计_springboot框架的班费管理
今天介绍一个java毕设题目, 题目内容为springboot框架的班费管理, 采用java语言编写开发工具eclipse, 项目框架jsp+springboot+mybatis, 班费管理的信息存储 ...
- java设计运动会成绩_java毕业设计_springboot框架的运动会成绩管理
这是一个基于java的毕业设计项目,毕设课题为springboot框架的运动会成绩管理, 是一个采用b/s结构的javaweb项目, 开发工具eclipsei/eclipse, 项目框架jsp+spr ...
- java bs架构书_基于BS架构的图书借阅管理模块的分析与设计(JSP+MySQL)(新品)
基于BS架构的图书借阅管理模块的分析与设计(JSP+MySQL)(新品) 来源:2BYSJ.cn 资料编号:2SJ295500 资料等级:★★★★★ %D7%CA%C1%CF%B1%E0%BA%C5% ...
- java实训手册_java实训项目用户手册
java实训项目用户手册 1 用户手册 第 1章 引言 1.1编写目的编写本手册的主要目的是为了方便使用的用户管理系统能够更加方便使用 此系统,以及更快的掌握JDK,MySQL,MyEclipse使之 ...
- java启动时执行_java怎么实现项目启动时执行指定方法
本文实例为大家共享了java项目启动时执行指定方法,供大家参考,详细内容如下 想到的就是监听步骤如下: 1.配置web.xml com.listener.InitListener 2.编写InitLi ...
最新文章
- CSS-in-JS的权衡
- ANT 发布项目中 build.xml 文件的详细配置
- C# API强制关机、重启以及注销计算机
- 【转】Python中设置输出文字的颜色
- 使用Hibernate和Spring构建Java Web应用程序
- CSV文件的转义处理
- 50 FI配置-财务会计-固定资产-与总账集成-定义集成资产购置的技术清算科目
- proc源码解析(一)--proc文件系统的内容
- 影响力最大化算法——degreediscount以及python实现代码
- 我们的眼睛用得太狠了
- 国家计算机网络设施英文简称,中国教育和科研计算机网的英文简称是
- 好用≠滥用,人脸识别的公共应用边界在哪里?
- ubuntu16.04火狐浏览器B站提示下载flash插件
- 企业运维,至少包括如下几个大方面: 1,桌面运维(以windows为主,工资偏低,桌面运维经理可以达到8K到10K,很多人在公司里干的就是安装windows系统,windows里的QQ坏了重装下,砸个
- html5 音乐播放进度条,js实现音乐播放控制条
- 图标字体的优缺点和使用
- Windows 系统重装 - Mac 制作 Win10 启动盘
- 2022-01-05:有四种诗的韵律分别为: AABB、ABAB、ABBA、AAAA。 比如 : 1 1 3 3就属于AABB型的韵律、
- 【安全科普】揭秘IPS之网络攻击的“字典”
- win10系统服务器在哪里设置,服务器win10在哪里设置方法