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

Tmall商城系统后台管理订单模块分析商城系统后台管理订单模块分析 订单管理后台模块 请求地址 http localhost 8080 tmall admin order 请求方式 get 方式 说明 此时对应后台订单管理的模块部分主要集中在了 ordercontrol 这一个控制器中 后台管理全部订单模块页面跳转 转到后台管理 订单页 ajax

大家好,我是讯享网,很高兴认识大家。

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

订单管理后台模块

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ch588OP8-1660550636549)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220814224808304.png)]
讯享网

请求地址

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

请求方式get方式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QahCRNuo-1660550636552)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220814225002745.png)]

说明:此时对应后台订单管理的模块部分主要集中在了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"; } 

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UlCxdqhH-1660550636553)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220814225633882.png)]

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

分页数据的切换

请求路径

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(); } 
断点调试按照条件来查询订单

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-anYTsWHV-1660550636555)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220815095753162.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z5ihGpNL-1660550636556)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220815095805533.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KvEAZOrf-1660550636557)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220815101054665.png)]

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5tvgWOXf-1660550636558)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220815102206133.png)]

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

订单详情页显示

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

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

相等即为一级地址

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xCDrnRqO-1660550636559)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220815104047669.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bh9GTXaK-1660550636560)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220815104609353.png)]

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请求实现页面的定向跳转

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ueeIWjvj-1660550636561)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220815105713094.png)]

讯享网<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(); } 
小讯
上一篇 2025-01-19 19:04
下一篇 2025-02-24 21:20

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/17673.html