package com.happy.action; import com.baidubce.model.User; import com.happy.Model.Booking; import com.happy.Model.weixin.Users; import com.happy.Until.*; import com.happy.Until.Excel.toExcel; import com.happy.common.http.Message; import com.happy.dto.BookTypeEto; import com.happy.dto.IPage; import com.happy.service.BookService; import com.happy.service.UserService; import com.opensymphony.xwork2.ActionSupport; import net.sf.json.JSONObject; import org.apache.struts2.ServletActionContext; import org.apache.struts2.interceptor.ServletRequestAware; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; import java.util.Vector; public class bookAction extends ActionSupport implements ServletRequestAware { private HttpServletRequest request; public HttpServletResponse response; @Resource public BookService bookService; @Resource public UserService userService; public int page; // 当前页 public int rows;// 每页显示的行数rows public Integer id; public Integer type; public String orderStatus;//订单状态 public String managerId;//商户Id public String payStartTime;//支付开始时间 public String payEndTime;//支付结束时间 public String ledgerParam;//台账列表查询参数 public String hotelTownship;//所属乡镇 public String minTotalPrice;//最小订单总价 public String maxTotalPrice;//最大订单总价 public HttpServletRequest getRequest() { return request; } public void setRequest(HttpServletRequest request) { this.request = request; } public void setServletRequest(HttpServletRequest request) { this.request = request; } public HttpServletResponse getResponse() { return response; } public void setResponse(HttpServletResponse response) { this.response = response; } /** * 描述:修改订单状态接单、入住、退房、退单、退款 * @return */ public String updateBookStatus(){ JSONObject resultJson = new JSONObject(); if (id == null) { resultJson.put("message", "请传入订单id"); resultJson.put("code", 500); ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString()); return null; } //根据id获取当前订单信息 Booking book = bookService.getById(id); //获取用户openId Users user = userService.queryByUserId(book.getCreateUserid()); try{ switch (type){ case 1://接单 book.setOrderStatus("3"); //推送信息 Message.send(user.getOpenid(),book.getOrderNum(),book.getUserName(),"商家已接单",book.getCreateTime()); break; case 2://入住 book.setOrderStatus("4"); break; case 3://退房 book.setOrderStatus("5"); break; case 4://退单 book.setOrderStatus("8"); break; case 5://退款 book.setOrderStatus("9"); break; } }catch (Exception e){ } bookService.updateBooking(book); return null; } /** * 描述:分页查询订单 * @return */ public String quearyBookPage(){ JSONObject resultJson = new JSONObject(); StringBuilder s1 = new StringBuilder(""); s1.append(" and hotel_manager_id = '").append(managerId).append("'"); if (ledgerParam!=null){ s1.append(" and (order_num like '%").append(ledgerParam).append("'") .append(" or user_name like '%").append(ledgerParam).append("'") .append(" or user_phone like '%").append(ledgerParam).append("')"); } if(orderStatus!=null){ s1.append(" and order_status = ").append(orderStatus); } if(payStartTime!=null && payEndTime!=null){ s1.append(" and pay_time >= '").append(payStartTime).append("'") .append(" and pay_time <= '").append(payEndTime).append("'"); } IPage bookIPage = bookService.queryPage(s1.toString(),page,rows); //获取订单汇总信息 BookTypeEto bookTypeEto = bookService.getBookStatusSum(s1.toString()); bookTypeEto.setBookIPage(bookIPage); if(bookTypeEto!=null && !"".equals(bookTypeEto)){ resultJson.put("message", "查询分页成功"); resultJson.put("code", 200); resultJson.put("date", bookTypeEto); ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString()); }else{ resultJson.put("message", "查询分页失败"); resultJson.put("code", 500); ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString()); } return null; } /** * 描述:导出订单 * @return */ public String toBookExcel() { JSONObject resultJson = new JSONObject(); StringBuilder s1 = new StringBuilder(""); if (ledgerParam!=null){ s1.append(" and (order_num like '%").append(ledgerParam).append("'") .append(" or user_name like '%").append(ledgerParam).append("'") .append(" or user_phone like '%").append(ledgerParam).append("')"); } if(orderStatus!=null){ s1.append(" and order_status = ").append(orderStatus); } if(payStartTime!=null && payEndTime!=null){ s1.append(" and pay_time >= '").append(payStartTime).append("'") .append(" and pay_time <= '").append(payEndTime).append("'"); } List list = bookService.queryList(s1.toString()); // 查询分页 List vectorsList = new ArrayList<>(); if(list==null){ resultJson.put("code", 500); resultJson.put("message", "无数据无法导出"); ResponseUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString()); } for(Booking book:list){ Vector columnValue = new Vector(); columnValue.add(book.getOrderNum()); columnValue.add(book.getOrderName()); columnValue.add(book.getUserName()); columnValue.add(book.getUserPhone()); columnValue.add(book.getHouseName()); columnValue.add(book.getHouseOrderNumber()); columnValue.add(book.getHouseTotalPrice()); columnValue.add(book.getPayTime()); vectorsList.add(columnValue); } // 项目路径地址 String path = request.getSession().getServletContext() .getRealPath("/download/");// File.separator try{ Vector columnName = new Vector(); columnName.add("订单号"); columnName.add("状态"); columnName.add("预定人"); columnName.add("手机号"); columnName.add("预定房型"); columnName.add("房间数"); columnName.add("订单金额(元)"); columnName.add("支付时间"); String filePathName ="订单信息" + UUIDUtil.generateID() +"Report.xls"; // 导出文件 new toExcel().book(vectorsList, path + filePathName, "sheet1", columnName); String url = request.getServerName()+":"+request.getServerPort() + request.getSession().getServletContext().getContextPath(); resultJson.put("downurl", url + "/download/" + filePathName); resultJson.put("code", 200); resultJson.put("message", "导出成功"); ResponseUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString()); } catch (Exception e){ e.printStackTrace(); } return null; } /** * 描述:分页查询台账(查询以消费订单数据) * @return */ public String quearyLedgerPage(){ JSONObject resultJson = new JSONObject(); StringBuilder s1 = new StringBuilder(""); s1.append(" and order_status = 5"); s1.append(" and hotel_manager_id like '%").append(managerId).append("'"); if (ledgerParam!=null){ s1.append(" and (order_num like '%").append(ledgerParam).append("'") .append(" or user_name like '%").append(ledgerParam).append("'") .append(" or user_phone like '%").append(ledgerParam).append("')"); } if(payStartTime!=null && payEndTime!=null){ s1.append(" and pay_time >= '").append(payStartTime).append("'") .append(" and pay_time <= '").append(payEndTime).append("'"); } if(hotelTownship!=null){ s1.append(" and hotel_township = '").append(payStartTime).append("'"); } if(minTotalPrice!=null){ s1.append(" and house_total_price >= '").append(minTotalPrice).append("'"); } if(maxTotalPrice!=null){ s1.append(" and house_total_price <= '").append(maxTotalPrice).append("'"); } IPage bookIPage = bookService.queryPage(s1.toString(),page,rows); //获取订单汇总信息 BookTypeEto bookTypeEto = bookService.getBookStatusSum(s1.toString()); bookTypeEto.setBookIPage(bookIPage); if(bookTypeEto!=null && !"".equals(bookTypeEto)){ resultJson.put("message", "查询分页成功"); resultJson.put("code", 200); resultJson.put("date", bookTypeEto); ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString()); }else{ resultJson.put("message", "查询分页失败"); resultJson.put("code", 500); ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString()); } return null; } /** * 描述:根据Id查询订单详细 * @return */ public String getById(){ JSONObject resultJson = new JSONObject(); if (id == null) { resultJson.put("message", "请传入id"); resultJson.put("code", 500); ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString()); return null; } Booking book = bookService.getById(id); if (book != null) { resultJson.put("message", "查询成功"); resultJson.put("code", 200); resultJson.put("date", book); ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString()); return null; }else{ resultJson.put("message", "未查到用户信息"); resultJson.put("code", 500); ResUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString()); return null; } } /** * 描述:导出台账 * @return */ public String toLedgerExcel() { JSONObject resultJson = new JSONObject(); StringBuilder s1 = new StringBuilder(""); s1.append(" and order_status = 5"); s1.append(" and hotel_manager_id like '%").append(managerId).append("'"); if (ledgerParam!=null){ s1.append(" and (order_num like '%").append(ledgerParam).append("'") .append(" or user_name like '%").append(ledgerParam).append("'") .append(" or user_phone like '%").append(ledgerParam).append("')"); } if(payStartTime!=null && payEndTime!=null){ s1.append(" and pay_time >= '").append(payStartTime).append("'") .append(" and pay_time <= '").append(payEndTime).append("'"); } if(hotelTownship!=null){ s1.append(" and hotel_township = '").append(payStartTime).append("'"); } if(minTotalPrice!=null){ s1.append(" and house_total_price >= '").append(minTotalPrice).append("'"); } if(maxTotalPrice!=null){ s1.append(" and house_total_price <= '").append(maxTotalPrice).append("'"); } List list = bookService.queryList(s1.toString()); // 查询列表 List vectorsList = new ArrayList<>(); for(Booking book:list){ Vector columnValue = new Vector(); columnValue.add(book.getOrderNum()); columnValue.add(book.getUserName()); columnValue.add(book.getUserPhone()); columnValue.add(book.getHouseOrderNumber()); columnValue.add(book.getPayAccount()); columnValue.add(book.getPayTime()); vectorsList.add(columnValue); } // 项目路径地址 String path = request.getSession().getServletContext() .getRealPath("/download/");// File.separator try{ Vector columnName = new Vector(); columnName.add("订单号"); columnName.add("预定人"); columnName.add("手机号"); columnName.add("房间数"); columnName.add("订单金额"); columnName.add("退房时间"); String filePathName ="台账信息" + UUIDUtil.generateID() +"Report.xls"; // 导出文件 new toExcel().book(vectorsList, path + filePathName, "sheet1", columnName); String url = request.getServerName()+":"+request.getServerPort() + request.getSession().getServletContext().getContextPath(); resultJson.put("downurl", url + "/download/" + filePathName); resultJson.put("code", 200); resultJson.put("message", "导出成功"); ResponseUtil.writeJson(ServletActionContext.getResponse(), resultJson.toString()); } catch (Exception e){ e.printStackTrace(); } return null; } }