商城系统后台管理订单模块分析

订单管理后台模块

请求地址

http://localhost:8080/tmall/admin/order

请求方式get方式

说明:此时对应后台订单管理的模块部分主要集中在了ordercontroller这一个控制器中

后台管理全部订单模块页面跳转

//转到后台管理-订单页-ajax
@RequestMapping(value = "admin/order", method = RequestMethod.GET)
public String goToPage(HttpSession session, Map<String, Object> map){logger.info("获取前10条订单列表");PageUtil pageUtil = new PageUtil(0, 10);List<ProductOrder> productOrderList =productOrderService.getList(null,null,new OrderUtil("productOrder_id",true), pageUtil);map.put("productOrderList",productOrderList);logger.info("获取订单总数量");Integer productOrderCount = productOrderService.getTotal(null, null);map.put("productOrderCount", productOrderCount);logger.info("获取分页信息");pageUtil.setTotal(productOrderCount);map.put("pageUtil", pageUtil);logger.info("转到后台管理-订单页-ajax方式");return "admin/orderManagePage";
}

断点调试跳转到后台管理订单页

查询出第一次分页所需要的数据

之后封装信息完成页面的跳转

分页数据的切换

请求路径

http://localhost:8080/tmall/admin/order/1/10?productOrder_code=&productOrder_post=&productOrder_status_array=&orderBy=&isDesc=true

GET

按照条件查询数据

@ResponseBody@RequestMapping(value = "admin/order/{index}/{count}", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")public String getOrderBySearch(@RequestParam(required = false) String productOrder_code/* 订单号 */,@RequestParam(required = false) String productOrder_post/* 订单邮政编码 */,@RequestParam(required = false) Byte[] productOrder_status_array/* 订单状态数组 */,@RequestParam(required = false) String orderBy/* 排序字段 */,@RequestParam(required = false,defaultValue = "true") Boolean isDesc/* 是否倒序 */,@PathVariable Integer index/* 页数 */,@PathVariable Integer count/* 行数 */){//移除不必要条件if (productOrder_status_array != null && (productOrder_status_array.length <= 0 || productOrder_status_array.length >=5)) {productOrder_status_array = null;}if (productOrder_code != null){productOrder_code = "".equals(productOrder_code) ? null : productOrder_code;}if(productOrder_post != null){productOrder_post = "".equals(productOrder_post) ? null : productOrder_post;}if (orderBy != null && "".equals(orderBy)) {orderBy = null;}//封装查询条件ProductOrder productOrder = new ProductOrder().setProductOrder_code(productOrder_code).setProductOrder_post(productOrder_post);OrderUtil orderUtil = null;if (orderBy != null) {logger.info("根据{}排序,是否倒序:{}",orderBy,isDesc);orderUtil = new OrderUtil(orderBy, isDesc);} else {orderUtil = new OrderUtil("productOrder_id",true);}JSONObject object = new JSONObject();logger.info("按条件获取第{}页的{}条订单", index + 1, count);PageUtil pageUtil = new PageUtil(index, count);List<ProductOrder> productOrderList = productOrderService.getList(productOrder, productOrder_status_array, orderUtil, pageUtil);object.put("productOrderList", JSONArray.parseArray(JSON.toJSONString(productOrderList)));logger.info("按条件获取订单总数量");Integer productOrderCount = productOrderService.getTotal(productOrder, productOrder_status_array);object.put("productOrderCount", productOrderCount);logger.info("获取分页信息");pageUtil.setTotal(productOrderCount);object.put("totalPage", pageUtil.getTotalPage());object.put("pageUtil", pageUtil);return object.toJSONString();}

断点调试按照条件来查询订单

难点在于移除条件,在整个项目中发挥了什么作用。

productOrder_code = "".equals(productOrder_code) ? null : productOrder_code;

在参数没有提交的情况下,将空格条件转化为null

订单详情页显示

难点在与循环倒序的拼接出详细的地址

//如果不是第一级地址,循环拼接地址信息
while (!address.getAddress_areaId().equals(address.getAddress_regionId().getAddress_areaId())) {address = addressService.get(address.getAddress_regionId().getAddress_areaId());addressStack.push(address.getAddress_name() + " ");
}

相等即为一级地址

Stack<String> addressStack = new Stack<>();
//创建一个String类型的栈实例
//转到后台管理-订单详情页-ajax@RequestMapping(value = "admin/order/{oid}", method = RequestMethod.GET)public String goToDetailsPage(HttpSession session, Map<String, Object> map, @PathVariable Integer oid/* 订单ID */) {logger.info("获取order_id为{}的订单信息",oid);ProductOrder order = productOrderService.get(oid);logger.info("获取订单详情-地址信息");Address address = addressService.get(order.getProductOrder_address().getAddress_areaId());Stack<String> addressStack = new Stack<>();//详细地址addressStack.push(order.getProductOrder_detail_address());//最后一级地址addressStack.push(address.getAddress_name() + " ");//如果不是第一级地址,循环拼接地址信息while (!address.getAddress_areaId().equals(address.getAddress_regionId().getAddress_areaId())) {address = addressService.get(address.getAddress_regionId().getAddress_areaId());addressStack.push(address.getAddress_name() + " ");}StringBuilder builder = new StringBuilder();while (!addressStack.empty()) {builder.append(addressStack.pop());}logger.info("订单地址字符串:{}", builder);order.setProductOrder_detail_address(builder.toString());logger.info("获取订单详情-用户信息");order.setProductOrder_user(userService.get(order.getProductOrder_user().getUser_id()));logger.info("获取订单详情-订单项信息");List<ProductOrderItem> productOrderItemList = productOrderItemService.getListByOrderId(oid, null);if (productOrderItemList != null) {logger.info("获取订单详情-订单项对应的产品信息");for (ProductOrderItem productOrderItem : productOrderItemList) {Integer productId = productOrderItem.getProductOrderItem_product().getProduct_id();logger.info("获取产品ID为{}的产品信息", productId);Product product = productService.get(productId);if (product != null) {logger.info("获取产品ID为{}的第一张预览图片信息", productId);product.setSingleProductImageList(productImageService.getList(productId, (byte) 0, new PageUtil(0, 1)));}productOrderItem.setProductOrderItem_product(product);}}order.setProductOrderItemList(productOrderItemList);map.put("order", order);logger.info("转到后台管理-订单详情页-ajax方式");return "admin/include/orderDetails";}

跳转到前端jsp地址admin/include/orderDetails

//单击发货按钮时$("#btn_order_save").click(function () {var order_id = '${requestScope.order.productOrder_id}';$.ajax({url: "admin/order/" + order_id,type: "PUT",data: null,success: function (data) {$("#btn_order_save").remove();if (data.success) {$("#btn-ok,#btn-close").unbind("click").click(function () {$('#modalDiv').modal("hide");setTimeout(function () {//ajax请求页面ajaxUtil.getPage("order/" + data.order_id, null, true);}, 170);});$(".modal-body").text("发货成功!");$('#modalDiv').modal();}},beforeSend: function () {$("#btn_order_save").attr("disabled", true).val("发货中...");},error: function () {}});});
});

其他点击时可以通过jsp发送的ajax请求实现页面的定向跳转

<div class="details_tools_div"><c:if test="${requestScope.order.productOrder_status==1}"><input class="frm_btn" id="btn_order_save" type="button" value="发货"/></c:if><input class="frm_btn frm_clear" id="btn_order_cancel" type="button" value="取消"/>
</div>

根据c-if标签进行动态显示

发货时更新状态的信息

同时更新状态值为2,在将时间进行更新

//更新订单信息-ajax
@ResponseBody
@RequestMapping(value = "admin/order/{order_id}", method = RequestMethod.PUT, produces = "application/json;charset=UTF-8")
public String updateOrder(@PathVariable("order_id") String order_id) {JSONObject jsonObject = new JSONObject();logger.info("整合订单信息");ProductOrder productOrder = new ProductOrder().setProductOrder_id(Integer.valueOf(order_id)).setProductOrder_status((byte) 2).setProductOrder_delivery_date(new Date());logger.info("更新订单信息,订单ID值为:{}", order_id);boolean yn = productOrderService.update(productOrder);if (yn) {logger.info("更新成功!");jsonObject.put("success", true);} else {logger.info("更新失败!事务回滚");jsonObject.put("success", false);throw new RuntimeException();}jsonObject.put("order_id", order_id);return jsonObject.toJSONString();
}

Tmall商城系统后台管理订单模块分析相关推荐

  1. 简洁商城系统后台管理模板

    简介: 简洁商城系统后台管理模板,简单,大气,全套模板,包括登录.旅游管理.系统管理.信息管理等后台模板页面. 网盘下载地址: http://kekewangLuo.cc/irUA8YyDkwp0 图 ...

  2. 通用的商城系统后台管理ui框架模板

    通用的商城系统后台管理ui框架模板 https://download.csdn.net/download/billhepeng/11927563 素材来源于网络

  3. B2B2C分销商城系统,带进货模块,二级分销商城Java系统源码

    B2B2C分销商城系统,带进货模块,二级分销商城Java系统源码 功能简介: 一.商家入驻体系 B2B2C商城系统可以招商入驻,用户在商城中注册后可以根据要求向平台运营商提供相应的 申请资料,选择商品 ...

  4. 《电商系统后台统计报表模块》需求分析与设计的课程小结

    <电商系统后台统计报表模块>需求分析与设计的课程小结 1)分工情况介绍,小组分工合作情况介绍 张顺程-选题,功能分析,建模 2)选题讨论 电商后台的统计报表也是非常重要的一个功能模块,一个 ...

  5. 商城购物后台管理项目

    好多天都没更了,这两天在老师的帮助下从零到一完成了一个商城购物后台管理的项目,今天刚刚进行项目发布,完结项目.下面来给大家分享一下项目步骤及知识点,顺带再次自己复习一遍. 由于主攻后端开发的原因,前端 ...

  6. vue考试系统后台管理项目-登录、记住密码功能

    考试系统后台管理项目介绍: 技术选型:Vue2.0+Elemenu-ui 项目功能介绍: 账户信息模块:菜单权限.角色权限设置.角色权限分配.账号设置.公司分组 考试管理模块:新增/编辑/删除考试试题 ...

  7. vue考试系统后台管理项目-接口封装调用

    上一篇文章 : vue考试系统后台管理项目-登录.记住密码功能_船长在船上的博客-CSDN博客 考试系统后台管理项目介绍: 技术选型:Vue2.0+Element-ui 项目功能介绍: 账户信息模块: ...

  8. 设备管理系统html,蓝色的远程监控设备系统后台管理界面html模板

    模板名称: 蓝色的远程监控设备系统后台管理界面html模板 模板页面: actions.html.add.html.apikey_manage.html.batch.html.change_passw ...

  9. 自建商城或会员系统如何对接在线客服咨询系统,例如商城系统、物流订单系统接入在线客服功能...

    自建商城或会员系统如何对接在线客服咨询系统,例如商城系统.物流订单系统接入在线客服功能 对接在线客服咨询系统可以帮助您的客户更快地获得问题解答和支持,提升客户满意度和忠诚度. 在商品详情页面传递产品信 ...

  10. PHP项目——外卖点餐系统后台管理解析

    项目介绍 系统基于总部+多门店的连锁模式,拥有门店独立管理后台,支持总部定价和门店定价.LBS定位点餐,可堂食可外卖,适用于茶饮的外卖点餐场景,搭建自己的一点点.奈雪.喜茶点餐系统. 平台后台 1.商 ...

最新文章

  1. 编程控制Word文档中Table的赋值
  2. go语言学习(2)rune以及strings
  3. Java高并发编程(九):Java中原子操作类
  4. 那些不回微信的人,都在看什么?
  5. 如何迁移outlook邮件到另一个硬盘_猎头如何有效的搜寻与筛选简历
  6. php中取整的函数,php中四舍五入取整函数详细介绍
  7. sublime text 3 package control
  8. android rss_Android RSS阅读器应用程序
  9. 使用libevhtp搭建HTTPS SERVER(双向验证身份)
  10. SpringCloud教程
  11. bluefish4框架平台
  12. 【电脑讲解】电脑知识入门大全,超详细电脑基础知识讲解
  13. Kafka 与 RabbitMQ 如何选择使用哪个?
  14. 2019前端面试题记录(杂文)
  15. 基于用户的协同过滤推荐算法原理和实现分析
  16. 5年前,榨干程序员老公1300万资产,逼其跳楼自杀的翟欣欣如今怎样了?
  17. 硬件设计17之DCDC-MP2315解读
  18. python框架pika的基本使用
  19. 老毛桃安装U盘 格式化 不可删除的部分
  20. 2021-2027全球与中国针叶樱桃提取物市场现状及未来发展趋势

热门文章

  1. centos7安装snort的九九八十一难!
  2. 读李虹之《画法几何及机械制图》
  3. iframe背景透明的设置方法
  4. 【Ubuntu18.04安装搜狗中文输入法】
  5. fterm linux ssh 乱码,用fterm ssh时出现如下乱码,请问如何解决
  6. 巴菲特致股东的一封信:2007年
  7. 只要一行代码,批量将Word转换为PDF!
  8. 工业相机基础知识五十问
  9. Flash游戏开发-RPG地图实现
  10. 通达OA11.2漏洞复现