当前位置: 首页>編程日記>正文

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

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

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

订单管理后台模块

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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();
}


https://www.fengoutiyan.com/post/15056.html

相关文章:

  • 订单管理模块
  • 您有新的模块订单
  • 管理订单系统吗
  • 订单界面
  • 订单管理系统模块
  • 订单模块
  • 订单管理
  • 魔筷订单
  • 鏡像模式如何設置在哪,圖片鏡像操作
  • 什么軟件可以把圖片鏡像翻轉,C#圖片處理 解決左右鏡像相反(旋轉圖片)
  • 手機照片鏡像翻轉,C#圖像鏡像
  • 視頻鏡像翻轉軟件,python圖片鏡像翻轉_python中鏡像實現方法
  • 什么軟件可以把圖片鏡像翻轉,利用PS實現圖片的鏡像處理
  • 照片鏡像翻轉app,java實現圖片鏡像翻轉
  • 什么軟件可以把圖片鏡像翻轉,python圖片鏡像翻轉_python圖像處理之鏡像實現方法
  • matlab下載,matlab如何鏡像處理圖片,matlab實現圖像鏡像
  • 圖片鏡像翻轉,MATLAB:鏡像圖片
  • 鏡像翻轉圖片的軟件,圖像處理:實現圖片鏡像(基于python)
  • canvas可畫,JavaScript - canvas - 鏡像圖片
  • 圖片鏡像翻轉,UGUI優化:使用鏡像圖片
  • Codeforces,CodeForces 1253C
  • MySQL下載安裝,Mysql ERROR: 1253 解決方法
  • 勝利大逃亡英雄逃亡方案,HDU - 1253 勝利大逃亡 BFS
  • 大一c語言期末考試試題及答案匯總,電大計算機C語言1253,1253《C語言程序設計》電大期末精彩試題及其問題詳解
  • lu求解線性方程組,P1253 [yLOI2018] 扶蘇的問題 (線段樹)
  • c語言程序設計基礎題庫,1253號C語言程序設計試題,2016年1月試卷號1253C語言程序設計A.pdf
  • 信奧賽一本通官網,【信奧賽一本通】1253:抓住那頭牛(詳細代碼)
  • c語言程序設計1253,1253c語言程序設計a(2010年1月)
  • 勝利大逃亡英雄逃亡方案,BFS——1253 勝利大逃亡
  • 直流電壓測量模塊,IM1253B交直流電能計量模塊(艾銳達光電)
  • c語言程序設計第三版課后答案,【渝粵題庫】國家開放大學2021春1253C語言程序設計答案
  • 18轉換為二進制,1253. 將數字轉換為16進制
  • light-emitting diode,LightOJ-1253 Misere Nim
  • masterroyale魔改版,1253 Dungeon Master
  • codeformer官網中文版,codeforces.1253 B
  • c語言程序設計考研真題及答案,2020C語言程序設計1253,1253計算機科學與技術專業C語言程序設計A科目2020年09月國家開 放大學(中央廣播電視大學)
  • c語言程序設計基礎題庫,1253本科2016c語言程序設計試題,1253電大《C語言程序設計A》試題和答案200901
  • 肇事逃逸車輛無法聯系到車主怎么辦,1253尋找肇事司機