伙伴云客服论坛»论坛 S区 S客户管理 查看内容

0 评论

0 收藏

分享

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

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

订单管理后台模块
Tmall商城系统后台管理订单模块分析-1.png


恳求地址
http://localhost:8080/tmall/admin/order
恳求方式get方式
Tmall商城系统后台管理订单模块分析-2.png


说明:此时对应后台订单管理的模块部分主要集中在了ordercontroller这一个控制器中
后台管理全部订单模块页面跳转
  1. //转到后台管理-订单页-ajax@RequestMapping(value ="admin/order", method =RequestMethod.GET)publicStringgoToPage(HttpSession session,Map<String,Object> map){
  2.     logger.info("获取前10条订单列表");PageUtil pageUtil =newPageUtil(0,10);List<ProductOrder> productOrderList =
  3.             productOrderService.getList(null,null,newOrderUtil("productOrder_id",true), pageUtil);
  4.     map.put("productOrderList",productOrderList);
  5.     logger.info("获取订单总数量");Integer productOrderCount = productOrderService.getTotal(null,null);
  6.     map.put("productOrderCount", productOrderCount);
  7.     logger.info("获取分页信息");
  8.     pageUtil.setTotal(productOrderCount);
  9.     map.put("pageUtil", pageUtil);
  10.     logger.info("转到后台管理-订单页-ajax方式");return"admin/orderManagePage";}
复制代码
断点调试跳转到后台管理订单页

查询出第一次分页所需要的数据
Tmall商城系统后台管理订单模块分析-3.png


之后封装信息完成页面的跳转
分页数据的切换
恳求途径
http://localhost:8080/tmall/admin/order/1/10?productOrder_code=&productOrder_post=&productOrder_status_array=&orderBy=&isDesc=true
GET
依照条件查询数据
  1. @ResponseBody@RequestMapping(value ="admin/order/{index}/{count}", method =RequestMethod.GET, produces ="application/json;charset=UTF-8")publicStringgetOrderBySearch(@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/* 是否倒序 */,@PathVariableInteger index/* 页数 */,@PathVariableInteger count/* 行数 */){//移除不用要条件if(productOrder_status_array !=null&&(productOrder_status_array.length <=0|| productOrder_status_array.length >=5)){
  2.             productOrder_status_array =null;}if(productOrder_code !=null){
  3.             productOrder_code ="".equals(productOrder_code)?null: productOrder_code;}if(productOrder_post !=null){
  4.             productOrder_post ="".equals(productOrder_post)?null: productOrder_post;}if(orderBy !=null&&"".equals(orderBy)){
  5.             orderBy =null;}//封装查询条件ProductOrder productOrder =newProductOrder().setProductOrder_code(productOrder_code).setProductOrder_post(productOrder_post);OrderUtil orderUtil =null;if(orderBy !=null){
  6.             logger.info("根据{}排序,是否倒序:{}",orderBy,isDesc);
  7.             orderUtil =newOrderUtil(orderBy, isDesc);}else{
  8.             orderUtil =newOrderUtil("productOrder_id",true);}JSONObject object =newJSONObject();
  9.         logger.info("按条件获取第{}页的{}条订单", index +1, count);PageUtil pageUtil =newPageUtil(index, count);List<ProductOrder> productOrderList = productOrderService.getList(productOrder, productOrder_status_array, orderUtil, pageUtil);
  10.         object.put("productOrderList",JSONArray.parseArray(JSON.toJSONString(productOrderList)));
  11.         logger.info("按条件获取订单总数量");Integer productOrderCount = productOrderService.getTotal(productOrder, productOrder_status_array);
  12.         object.put("productOrderCount", productOrderCount);
  13.         logger.info("获取分页信息");
  14.         pageUtil.setTotal(productOrderCount);
  15.         object.put("totalPage", pageUtil.getTotalPage());
  16.         object.put("pageUtil", pageUtil);return object.toJSONString();}
复制代码
断点调试依照条件来查询订单

Tmall商城系统后台管理订单模块分析-4.png


Tmall商城系统后台管理订单模块分析-5.png


Tmall商城系统后台管理订单模块分析-6.png


难点在于移除条件,在整个项目中发挥了什么作用。
  1. productOrder_code ="".equals(productOrder_code)?null: productOrder_code;
复制代码
Tmall商城系统后台管理订单模块分析-7.png


在参数没有提交的情况下,将空格条件转化为null
订单详情页显示

难点在与循环倒序的拼接出详细的地址
  1. //假设不是第一级地址,循环拼接地址信息while(!address.getAddress_areaId().equals(address.getAddress_regionId().getAddress_areaId())){
  2.     address = addressService.get(address.getAddress_regionId().getAddress_areaId());
  3.     addressStack.push(address.getAddress_name()+" ");}
复制代码
相等即为一级地址
Tmall商城系统后台管理订单模块分析-8.png


Tmall商城系统后台管理订单模块分析-9.png

  1. Stack<String> addressStack = new Stack<>();
  2. //创建一个String类型的栈实例
复制代码
  1. //转到后台管理-订单详情页-ajax@RequestMapping(value ="admin/order/{oid}", method =RequestMethod.GET)publicStringgoToDetailsPage(HttpSession session,Map<String,Object> map,@PathVariableInteger oid/* 订单ID */){
  2.         logger.info("获取order_id为{}的订单信息",oid);ProductOrder order = productOrderService.get(oid);
  3.         logger.info("获取订单详情-地址信息");Address address = addressService.get(order.getProductOrder_address().getAddress_areaId());Stack<String> addressStack =newStack<>();//详细地址
  4.         addressStack.push(order.getProductOrder_detail_address());//最后一级地址
  5.         addressStack.push(address.getAddress_name()+" ");//假设不是第一级地址,循环拼接地址信息while(!address.getAddress_areaId().equals(address.getAddress_regionId().getAddress_areaId())){
  6.             address = addressService.get(address.getAddress_regionId().getAddress_areaId());
  7.             addressStack.push(address.getAddress_name()+" ");}StringBuilder builder =newStringBuilder();while(!addressStack.empty()){
  8.             builder.append(addressStack.pop());}
  9.         logger.info("订单地址字符串:{}", builder);
  10.         order.setProductOrder_detail_address(builder.toString());
  11.         logger.info("获取订单详情-用户信息");
  12.         order.setProductOrder_user(userService.get(order.getProductOrder_user().getUser_id()));
  13.         logger.info("获取订单详情-订单项信息");List<ProductOrderItem> productOrderItemList = productOrderItemService.getListByOrderId(oid,null);if(productOrderItemList !=null){
  14.             logger.info("获取订单详情-订单项对应的产品信息");for(ProductOrderItem productOrderItem : productOrderItemList){Integer productId = productOrderItem.getProductOrderItem_product().getProduct_id();
  15.                 logger.info("获取产品ID为{}的产品信息", productId);Product product = productService.get(productId);if(product !=null){
  16.                     logger.info("获取产品ID为{}的第一张预览图片信息", productId);
  17.                     product.setSingleProductImageList(productImageService.getList(productId,(byte)0,newPageUtil(0,1)));}
  18.                 productOrderItem.setProductOrderItem_product(product);}}
  19.         order.setProductOrderItemList(productOrderItemList);
  20.         map.put("order", order);
  21.         logger.info("转到后台管理-订单详情页-ajax方式");return"admin/include/orderDetails";}
复制代码
跳转到前端jsp地址admin/include/orderDetails
  1. //单击发货按钮时
  2.     $("#btn_order_save").click(function (){var order_id = '${requestScope.order.productOrder_id}';
  3.         $.ajax({
  4.             url:"admin/order/"+ order_id,
  5.             type:"PUT",
  6.             data:null,
  7.             success: function (data){
  8.                 $("#btn_order_save").remove();if(data.success){
  9.                     $("#btn-ok,#btn-close").unbind("click").click(function (){
  10.                         $('#modalDiv').modal("hide");setTimeout(function (){//ajax恳求页面
  11.                             ajaxUtil.getPage("order/"+ data.order_id,null,true);},170);});
  12.                     $(".modal-body").text("发货胜利!");
  13.                     $('#modalDiv').modal();}},
  14.             beforeSend: function (){
  15.                 $("#btn_order_save").attr("disabled",true).val("发货中...");},
  16.             error: function (){}});});});
复制代码
其他点击时可以通过jsp发送的ajax恳务实现页面的定向跳转
Tmall商城系统后台管理订单模块分析-10.png

  1. <div class="details_tools_div">
  2.     <c:if test="${requestScope.order.productOrder_status==1}">
  3.         <input class="frm_btn" id="btn_order_save" type="button" value="发货"/>
  4.     </c:if>
  5.     <input class="frm_btn frm_clear" id="btn_order_cancel" type="button" value="取消"/>
  6. </div>
复制代码
根据c-if标签停止动态显示
发货时更新状态的信息

同时更新状态值为2,在将时间停止更新
  1. //更新订单信息-ajax
  2. @ResponseBody
  3. @RequestMapping(value = "admin/order/{order_id}", method = RequestMethod.PUT, produces = "application/json;charset=UTF-8")
  4. public String updateOrder(@PathVariable("order_id") String order_id) {
  5.     JSONObject jsonObject = new JSONObject();
  6.     logger.info("整合订单信息");
  7.     ProductOrder productOrder = new ProductOrder()
  8.             .setProductOrder_id(Integer.valueOf(order_id))
  9.             .setProductOrder_status((byte) 2)
  10.             .setProductOrder_delivery_date(new Date());
  11.     logger.info("更新订单信息,订单ID值为:{}", order_id);
  12.     boolean yn = productOrderService.update(productOrder);
  13.     if (yn) {
  14.         logger.info("更新胜利!");
  15.         jsonObject.put("success", true);
  16.     } else {
  17.         logger.info("更新失败!事务回滚");
  18.         jsonObject.put("success", false);
  19.         throw new RuntimeException();
  20.     }
  21.     jsonObject.put("order_id", order_id);
  22.     return jsonObject.toJSONString();
  23. }
复制代码

回复

举报 使用道具

相关帖子
全部回复
暂无回帖,快来参与回复吧
本版积分规则 高级模式
B Color Image Link Quote Code Smilies

枭雄戏美人
注册会员
主题 19
回复 21
粉丝 0
|网站地图
快速回复 返回顶部 返回列表