package com.iamberry.wechat.handles.admin; import com.iamberry.app.tool.log.RatFWLogger; import com.iamberry.wechat.core.entity.OrderUtil; import com.iamberry.wechat.core.entity.ResultMsg; import com.iamberry.wechat.core.entity.drp.PlaceInfo; import com.iamberry.wechat.core.entity.member.CashLog; import com.iamberry.wechat.core.entity.member.Member; import com.iamberry.wechat.core.entity.mq.MQMessage; import com.iamberry.wechat.core.entity.order.*; import com.iamberry.wechat.core.entity.reback.RebackInfo; import com.iamberry.wechat.core.entity.relationship.DealerRelation; import com.iamberry.wechat.core.entity.relationship.WdRelation; import com.iamberry.wechat.face.drp.PlaceInfoService; import com.iamberry.wechat.face.efast.EfastRentService; import com.iamberry.wechat.face.member.MemberService; import com.iamberry.wechat.face.order.AdminOrderService; import com.iamberry.wechat.face.order.CodeService; import com.iamberry.wechat.face.porduct.ProductColorService; import com.iamberry.wechat.face.reback.LoadRewardTaskService; import com.iamberry.wechat.face.reback.RebackServices; import com.iamberry.wechat.face.relationship.DealerRelationService; import com.iamberry.wechat.face.relationship.WdRelationService; import com.iamberry.wechat.handles.mq.MQServiceProxy; import com.iamberry.wechat.tools.NameUtils; import com.iamberry.wechat.tools.ObjectExcelView; import com.iamberry.wechat.tools.ResultInfo; import com.iamberry.wechat.tools.SendMessageUtil; import org.apache.commons.collections.map.HashedMap; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLDecoder; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.*; import static com.iamberry.wechat.service.ImberryConfig.INFORM_SHIPPING; //import cn.jpush.api.common.connection.IHttpClient.RequestMethod; @Controller @RequestMapping("/admin/order") public class AdminOrderHandlers { @Autowired private AdminOrderService adminOrderService; @Autowired private OrderUtil orderUtil; @Autowired private SendMessageUtil sendMessageUtil; @Autowired private MemberService memberService; @Autowired private WdRelationService wdRelationService; @Autowired private DealerRelationService dealerRelationService; @Autowired private PlaceInfoService placeInfoService; @Autowired private RatFWLogger logger; @Autowired private MQServiceProxy mQservice; @Autowired private RebackServices rebackServices; @Autowired private EfastRentService efastRentService; @Autowired private CodeService codeService; @Autowired private ProductColorService productColorService; /** * 后台进入订单列表功能 * * @param request * @param pageSize * @param pageNO * @return ModelAndView * @throws Exception */ @RequestMapping("/selectShopOrder") public ModelAndView selectShopOrder(HttpServletRequest request, @RequestParam(value = "pageSize", defaultValue = "20", required = false) Integer pageSize, @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO) throws Exception { ModelAndView mv = new ModelAndView("admin/order/orderList"); String orderStatus = request.getParameter("orderStatus"); if (orderStatus == null || "".equals(orderStatus)) { orderStatus = "paySuccess"; } // 订单状态,数字标识 int status = -1; if (!orderStatus.equals("allOrder")) { status = orderUtil.getOrderStatusByStr(orderStatus); } Order order = new Order(); order.setSalesStatus(status); order.getPage().setPageSize(pageSize); order.getPage().setPageNumber(pageNO); order.getPage().initRecordBegin(); List orderList = this.adminOrderService.selectShopOrder(order); // 订单是否按照状态查询的, 用于页面 if (status == -1) { mv.addObject("orderListIsStatus", false); for (Order orders : orderList) { // 用户昵称编码 if (orders.getUserNickname() != null && !orders.getUserNickname().isEmpty()) { orders.setUserNickname(URLDecoder.decode(orders.getUserNickname(), "UTF-8")); } // 获取用户的操作权限 orders.setOperations(orderUtil.orderStatusToOperation(orders.getSalesStatus(), orders.getSalesOrderid(), orders.getSalesIsRfund())); orders.setOrderLinkStatus(orderUtil.orderStatusToString(orders.getSalesStatus())); // 订单状态描述,中文 // 遍历订单, 判断用户角色 if (orders.getPlaceOpenID() != null && orders.getPlaceOpenID().equals(orders.getSalesOrderid())) { // 金牌会员 orders.setUserResource("金牌会员"); } else if (orders.getVipRole() != null && orders.getVipRole().equals("52") && orders.getUserResource().equals("3")) { // 金牌会员直属下线 orders.setUserResource("金牌会员直属下线"); } else { // 会员 String role = "会员"; switch (Integer.parseInt(orders.getUserResource())) { case 47: role = "合伙人下线"; break; case 48: role = "门店下线"; break; case 49: role = "微代理下线"; break; case 51: role = "VIP会员下线"; break; case 52: role = "金牌会员下线"; break; case 53: role = "钻石下线"; break; default: break; } orders.setUserResource(role); } } } else { mv.addObject("orderListIsStatus", true); for (Order orders : orderList) { // 用户昵称编码 if (orders.getUserNickname() != null && !orders.getUserNickname().isEmpty()) { orders.setUserNickname(URLDecoder.decode(orders.getUserNickname(), "UTF-8")); } // 获取用户的操作权限 orders.setOperations(orderUtil.orderStatusToOperation(orders.getSalesStatus(), orders.getSalesOrderid(), orders.getSalesIsRfund())); // 遍历订单, 判断用户角色 if (orders.getPlaceOpenID() != null && orders.getPlaceOpenID().equals(orders.getSalesOrderid())) { // 金牌会员 orders.setUserResource("金牌会员"); } else if (orders.getVipRole() != null && orders.getVipRole().equals("52") && orders.getUserResource().equals("3")) { // 金牌会员直属下线 orders.setUserResource("金牌会员直属下线"); } else { // 会员 String role = "会员"; switch (Integer.parseInt(orders.getUserResource())) { case 47: role = "合伙人下线"; break; case 48: role = "门店下线"; break; case 49: role = "微代理下线"; break; case 51: role = "VIP会员下线"; break; case 52: role = "金牌会员下线"; break; case 53: role = "钻石下线"; break; default: break; } orders.setUserResource(role); } } } mv.addObject("orderList", orderList); mv.addObject("pageNO", pageNO); mv.addObject("orderStatus", status);// 订单状态 mv.addObject("url", "/admin/order/selectShopOrder?orderStatus=" + orderStatus + "&pageSize=" + pageSize + "&pageNO="); mv.addObject("pageSize", this.adminOrderService.selectShopOrderCount(order)); mv.addObject("orderStatusStr", orderUtil.orderStatusIntToOrderStatusString(status));// 订单状态描述(用于选中订单头) mv.addObject("orderLinkStatus", orderUtil.orderStatusToString(status));// 订单状态描述,中文(显示给用户看) mv.addObject("statusUrl", "/admin/order/selectShopOrder?bid=&sid="); return mv; } /** * 同步订单状态 * @param request * @param orderId * @param type 1:销售订单,2:代理商采购订单 * @throws Exception */ @ResponseBody @RequestMapping("/select_efast_order/{orderId}/{type}") public ResultMsg selectEfastOrder(HttpServletRequest request, @PathVariable("orderId") String orderId, @PathVariable("type") Integer type) throws Exception { //efast的订单编号 String efastOrderId = request.getParameter("efastOrderId"); ResultMsg msg = new ResultMsg(); if (!cn.jpush.api.utils.StringUtils.isNotEmpty(orderId) || type == null) { msg.setMessage("订单号或类型为空!"); msg.setResultCode(ResultInfo.ERRORCODE); msg.setStatus(false); return msg; } //获取队列中的map集合 Map queuesMap = new HashedMap(); String id = efastOrderId; String EsastType = "1"; //查询efast系统该订单的状态 Map map = efastRentService.getEfastSendOrderInfo(id,EsastType); if (!(boolean) map.get("status")) { msg.setData(""); msg.setMessage(map.get("result").toString()); msg.setResultCode(ResultInfo.ERRORCODE); msg.setStatus(false); return msg; } //获取订单信息 Order or = adminOrderService.getShopOrderByOrderId(orderId); Order order = new Order(); order.setSalesOrderid(orderId); order.setSalesStatus(5); order.setSalesPostFirm((String) map.get("postFirm")); order.setSalesPostNum((String) map.get("postNum")); order.setOldStatus(2); order.setSalesOpenid(or.getSalesOpenid()); //order.set int flag = adminOrderService.updateOrderDeliver(order); if (flag < 1){ msg.setMessage("修改订单状态失败"); msg.setResultCode(ResultInfo.ERRORCODE); msg.setStatus(false); return msg; } Member member = memberService.getMemberByUserOpenId(or.getSalesOpenid()); if (member == null || 1 == member.getUserStatus() || 0 == member.getUserStatus()){ //未关注或者取消关注的,将发送手机短信 logger.info("短信通知:"+ or.getSalesOpenid() +" 用户的订单已发货"); String phone = or.getSalesAddressTel(); codeService.informShipping(phone,INFORM_SHIPPING); }else if(2 == member.getUserStatus()){ //已关注的用户推送信息到公众号 logger.info("公众号推送物流信息: "+ or.getSalesOpenid() +" 用户的订单已发货"); //消息内容 String data = ResultInfo.ORDERPACKAGETEMP; data = data.replaceFirst("firstValueOrder", ResultInfo.SHIPMENTMESSAGE) .replaceFirst("orderIdValueOrder", orderId) .replaceFirst("orderValuePackageId", SendMessageUtil.hashmap.get(map.get("postFirm")) + ":" + map.get("postNum")) .replaceFirst("orderRemarkValue", ResultInfo.INTOSHOP); sendMessageUtil.sendTemplateMessageToOpenid(data, or.getSalesOpenid(), ResultInfo.PAGE_SHIPMENT + orderId, 2); } msg.setMessage(NameUtils.getConfig("SUCCESSINFO")); msg.setResultCode(ResultInfo.SUCCESSCODE); msg.setStatus(true); return msg; } /** * 订单详细信息 * * @param request * @param orderId * @return ModelAndView * @throws Exception */ @RequestMapping("/getShopOrderByOrderId/{orderId}") public ModelAndView getShopOrderByOrderId(HttpServletRequest request, @PathVariable("orderId") String orderId) throws Exception { ModelAndView mv = new ModelAndView("admin/order/order"); if (null != orderId && !"".equals(orderId)) { Order order = this.adminOrderService.getShopOrderByOrderId(orderId); List orderItemList = this.adminOrderService.getShopOrderItemByOrderId(orderId); // 用户昵称编码 if (order.getUserNickname() != null && !order.getUserNickname().isEmpty()) { order.setUserNickname(URLDecoder.decode(order.getUserNickname(), "UTF-8")); } // 获取用户的操作权限 order.setOperations(orderUtil.orderStatusToOperation(order.getSalesStatus(), order.getSalesOrderid(), order.getSalesIsRfund())); order.setOrderLinkStatus(orderUtil.orderStatusToString(order.getSalesStatus())); // 订单状态描述,中文 if (order.getSalesStatus() == 2) { // 给百胜推送信息 // try { // MQMessage message = new MQMessage(); // message.setServiceToMessage(orderId); // message.setServiceOtherMessage("efast.trade.detail.get"); // message.setServiceIsSend(2); // 没有推送的信息 // message.setServiceStatus(1); // 推送成功 // message.setServiceType(1); // 添加订单信息 // message.setServiceHandlerObjectName("efastOrderServiceImpl"); // message.setServiceHandlerMethodName("selectEfastSendOrderInfo"); // mQservice.insertMQMessage(message); // } catch (Exception e) { // // TODO: handle exception // } } else if (order.getSalesStatus() == 8) { // 给百胜推送信息 // try { // MQMessage message = new MQMessage(); // message.setServiceToMessage(orderId); // message.setServiceOtherMessage("efast.order.return.info.fetch"); // message.setServiceIsSend(2); // 没有推送的信息 // message.setServiceStatus(1); // 推送成功 // message.setServiceType(1); // 添加订单信息 // message.setServiceHandlerObjectName("efastOrderServiceImpl"); // message.setServiceHandlerMethodName("selectEfastReturnOrderInfo"); // mQservice.insertMQMessage(message); // } catch (Exception e) { // // TODO: handle exception // } } mv.addObject("order", order); mv.addObject("orderItemList", orderItemList); } return mv; } @RequestMapping(value = "/selectShopOrderByOrderId") public ModelAndView selectShopOrderByOrderId(HttpServletRequest request, @RequestParam(value = "pageSize", defaultValue = "20", required = false) Integer pageSize, @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO, OrderActionDto actionDto) throws Exception { ModelAndView mv = new ModelAndView("admin/order/orderList"); Order order = new Order(); String orderStatus = request.getParameter("orderStatus"); //url需要进行拼接,拼接的内容是页面上的时间条件 StringBuffer url = new StringBuffer("/admin/order/selectShopOrderByOrderId?orderStatus=" + actionDto.getOrderStatus()); // 判断是否输入数据 if (!(actionDto.getText() == null || actionDto.getText().isEmpty())) { url.append("&text=" + actionDto.getText()); } //分页并带条件查询接收参数 String beginTime = request.getParameter("beginDate"); String endTime = request.getParameter("endDate"); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); String salesAddressTel = request.getParameter("salesAddressTel"); String salesAddressName = request.getParameter("salesAddressName"); String salesAddressInfo = request.getParameter("salesAddressInfo"); String userNickname = request.getParameter("userNickname"); if (salesAddressTel != null && !"".equals(salesAddressTel)) { order.setSalesAddressTel(salesAddressTel); mv.addObject("salesAddressTel", salesAddressTel); url.append("&salesAddressTel=" + salesAddressTel); } if (salesAddressName != null && !"".equals(salesAddressName)) { order.setSalesAddressName(salesAddressName); mv.addObject("salesAddressName", salesAddressName); url.append("&salesAddressName=" + salesAddressName); } if (salesAddressInfo != null && !"".equals(salesAddressInfo)) { order.setSalesAddressInfo(salesAddressInfo); mv.addObject("salesAddressInfo", salesAddressInfo); url.append("&salesAddressInfo=" + salesAddressInfo); } if (userNickname != null && !"".equals(userNickname)) { order.setUserNickname(userNickname); mv.addObject("userNickname", userNickname); url.append("&userNickname=" + userNickname); } if (null != beginTime && !"".equals(beginTime)) { if (!request.getMethod().equalsIgnoreCase("post")) { actionDto.setBeginDate(format.parse(new String(beginTime.getBytes("ISO-8859-1"), "UTF-8"))); } else { actionDto.setBeginDate(format.parse(beginTime)); } } if (null != endTime && !"".equals(endTime)) { if (!request.getMethod().equalsIgnoreCase("post")) { actionDto.setEndDate(format.parse(new String(endTime.getBytes("ISO-8859-1"), "UTF-8"))); } else { actionDto.setEndDate(format.parse(endTime)); } } if (null != actionDto.getBeginDate()) { url.append("&beginDate=" + format.format(actionDto.getBeginDate())); mv.addObject("beginDate", format.format(actionDto.getBeginDate())); } if (null != actionDto.getEndDate()) { url.append("&endDate=" + format.format(actionDto.getEndDate())); mv.addObject("endDate", format.format(actionDto.getEndDate())); } url.append("&pageSize=" + pageSize + "&pageNO="); if (orderStatus == null || "".equals(orderStatus)) { orderStatus = "paySuccess"; } // 订单状态,数字标识 int status = -1; if (!orderStatus.equals("allOrder")) { status = orderUtil.getOrderStatusByStr(orderStatus); } order.setSalesStatus(status); order.setSalesOrderid(actionDto.getText()); order.setBeginDate(actionDto.getBeginDate()); order.setEndDate(actionDto.getEndDate()); order.getPage().setPageSize(pageSize); order.getPage().setPageNumber(pageNO); order.getPage().initRecordBegin(); List orderList = this.adminOrderService.selectShopOrderByOrderId(order); // 订单是否按照状态查询的, 用于页面 if (status == -1) { mv.addObject("orderListIsStatus", false); for (Order orders : orderList) { // 用户昵称编码 if (orders.getUserNickname() != null && !orders.getUserNickname().isEmpty()) { orders.setUserNickname(URLDecoder.decode(orders.getUserNickname(), "UTF-8")); } // 获取用户的操作权限 orders.setOperations(orderUtil.orderStatusToOperation(orders.getSalesStatus(), orders.getSalesOrderid(), orders.getSalesIsRfund())); orders.setOrderLinkStatus(orderUtil.orderStatusToString(orders.getSalesStatus())); // 订单状态描述,中文 } } else { mv.addObject("orderListIsStatus", true); for (Order orders : orderList) { // 用户昵称编码 if (orders.getUserNickname() != null && !orders.getUserNickname().isEmpty()) { orders.setUserNickname(URLDecoder.decode(orders.getUserNickname(), "UTF-8")); } // 获取用户的操作权限 orders.setOperations(orderUtil.orderStatusToOperation(orders.getSalesStatus(), orders.getSalesOrderid(), orders.getSalesIsRfund())); } } // 时间区间的处理 String beginDateTime = ""; SimpleDateFormat simple = null; if (actionDto.getBeginDate() != null) { simple = new SimpleDateFormat("yyyy-MM-dd"); beginDateTime = simple.format(actionDto.getBeginDate()); } String endDate = ""; if (actionDto.getEndDate() != null) { if (simple == null) { simple = new SimpleDateFormat("yyyy-MM-dd"); } endDate = simple.format(actionDto.getEndDate()); } mv.addObject("orderList", orderList); mv.addObject("pageNO", pageNO); mv.addObject("orderStatus", status);// 订单状态 mv.addObject("url", url.toString()); mv.addObject("pageSize", this.adminOrderService.selectShopOrderCount(order)); mv.addObject("orderStatusStr", orderUtil.orderStatusIntToOrderStatusString(status));// 订单状态描述(用于选中订单头) mv.addObject("orderLinkStatus", orderUtil.orderStatusToString(status));// 订单状态描述,中文(显示给用户看) mv.addObject("statusUrl", "/admin/order/selectShopOrderByOrderId?bid=&sid="); mv.addObject("beginDate", beginDateTime); mv.addObject("endDate", endDate); mv.addObject("selectInput", actionDto.getText()); return mv; } /** * 操作订单 * * @return * @throws Exception */ @RequestMapping("/{action}/{orderId}") public synchronized ModelAndView actionOrder( @PathVariable("action") String action, @PathVariable("orderId") String orderId, OrderActionDto actionDto ) throws Exception { ModelAndView mv = new ModelAndView("admin/msg/msg"); DecimalFormat df=new DecimalFormat("0.00"); Order order = new Order(); order.setSalesOrderid(orderId); // 订单状态,数字标识 order.setSalesPostFirm(actionDto.getPostFirm()); order.setSalesPostNum(actionDto.getPostNum()); // 判断当前的订单,是否支持希望进行的操作 Order currentOrder = adminOrderService.selectOrderStatusByOrderId(orderId); //获取当前订单订单项 List itemList = adminOrderService.getShopOrderItemByOrderId(orderId); Integer orderStatus = currentOrder.getSalesStatus(); order.setOldStatus(orderStatus); order.setSalesOpenid(currentOrder.getSalesOpenid()); if (!orderUtil.orderStatusIntToOrderStatusString(orderStatus).equals(actionDto.getOrderStatus())) { mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!")); return mv; } switch (orderStatus) { case 0: // 取消的订单,不支持任何修改订单状态的操作 mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,取消的订单不能操作!")); return mv; case 1: // 待支付(管理员存在操作权限:取消订单,如果取消订单,订单状态修改为0) if (!orderUtil.getOrderActin()[0].equals(action)) {// 判断当前请求操作是否相符, 否则提示不成功 mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!")); return mv; } if (!orderUtil.orderStatusIntToOrderStatusString(0).equals(actionDto.getToOrderStatus())) {// 判断请求修改的订单状态是否相符,否则提示不成功 mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!")); return mv; } order.setSalesStatus(orderUtil.getOrderStatusByStr(actionDto.getToOrderStatus())); // 执行修改操作 if (adminOrderService.updateOrderStatusByOrderId(order)) { mv.addObject("msgObj", new MessageDto(true, "取消订单成功", "恭喜您!订单:" + orderId + "取消成功,本订单将不能操作!")); return mv; } else { mv.addObject("msgObj", new MessageDto(false, "对不起,取消订单失败", "对不起,取消订单失败,请稍后重试!")); return mv; } case 2: // 已支付、待发货(管理员的操作为:确认发货) if (!orderUtil.getOrderActin()[2].equals(action)) {// 判断当前请求操作是否相符, 否则提示不成功 mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!")); return mv; } if (!orderUtil.orderStatusIntToOrderStatusString(5).equals(actionDto.getToOrderStatus())) {// 判断请求修改的订单状态是否相符,否则提示不成功 mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!")); return mv; } // 执行修改操作 order.setSalesStatus(orderUtil.getOrderStatusByStr(actionDto.getToOrderStatus())); if (adminOrderService.deliverOrderByOrderId(order)) { mv.addObject("msgObj", new MessageDto(true, "操作成功", "订单已发货")); //logger.info("准备为用户推送模版信息!"); // 给百胜推送信息 /* try { MQMessage message = new MQMessage(); message.setServiceToMessage(orderId); message.setServiceOtherMessage(actionDto.getPostFirm() + "-" + actionDto.getPostNum()); message.setServiceIsSend(2); // 没有推送的信息 message.setServiceStatus(1); // 推送成功 message.setServiceType(1); // 添加订单信息 message.setServiceHandlerObjectName("efastOrderServiceImpl"); message.setServiceHandlerMethodName("sendOrderInfoToEfast"); mQservice.insertMQMessage(message); } catch (Exception e) { // TODO: handle exception }*/ //给用户发送消息-已发货的通知 try { sendMessageUtil.orderSendSuccess("尊敬的朵粉,您的订单已发货,物流信息:",orderId,SendMessageUtil.hashmap.get(actionDto.getPostFirm()), actionDto.getPostNum(),currentOrder.getSalesAddressInfo(),"如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!(点击查看订单详情)",currentOrder.getSalesOpenid(),null); } catch (Exception e) { logger.info("订单号:"+ orderId +"的订单驳回退款,发送微信消息失败!"); } /*//消息内容 String data = ResultInfo.ORDERPACKAGETEMP; data = data.replaceFirst("firstValueOrder", ResultInfo.SHIPMENTMESSAGE) .replaceFirst("orderIdValueOrder", orderId) .replaceFirst("orderValuePackageId", SendMessageUtil.hashmap.get(actionDto.getPostFirm()) + ":" + actionDto.getPostNum()) .replaceFirst("orderRemarkValue", ResultInfo.INTOSHOP); sendMessageUtil.sendTemplateMessageToOpenid(data, currentOrder.getSalesOpenid(), ResultInfo.PAGE_SHIPMENT + orderId, 2);*/ return mv; } else { mv.addObject("msgObj", new MessageDto(false, "对不起,取消订单失败", "对不起,取消订单失败,请稍后重试!")); return mv; } case 3: // 退款申请中(管理员可以操作:确认退款、驳回退款) order.setSalesAuditRemark(actionDto.getSalesAuditRemark()); // 只有两种操作 : 确认退款、驳回退款 if (orderUtil.getOrderActin()[4].equals(action)) { // 驳回退款 if (!orderUtil.orderStatusIntToOrderStatusString(2).equals(actionDto.getToOrderStatus())) {// 判断请求修改的订单状态是否相符,否则提示不成功 mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!")); return mv; } order.setSalesStatus(2); if (adminOrderService.updateOrderStatusByOrderId(order)) {// 驳回退款 String payMoney = df.format((float)currentOrder.getSalesYetAmount()/100) + "元"; try { //sendMessageUtil.orderApplyRefund("尊敬的朵粉,您的退款申请被退回。",payMoney,itemList.get(0).getItemProductName(),orderId, // "请确认您的退款申请信息填写无误。如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!(点击查看订单详情)",currentOrder.getSalesOpenid(),ResultInfo.ORDER_DETAIL + orderId); sendMessageUtil.refundToDismiss("尊敬的朵粉,您的退款申请被退回。",payMoney,itemList.get(0).getItemProductName(),orderId, "请确认您的退款申请信息填写无误。 如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!(点击查看订单详情)",currentOrder.getSalesOpenid(),ResultInfo.ORDER_DETAIL + orderId); } catch (Exception e) { logger.info("订单号:"+ orderId +"的订单驳回退款,发送微信消息失败!"); } mv.addObject("msgObj", new MessageDto(true, "驳回退款成功!", "驳回退款成功,订单进入待发货状态!")); return mv; } else { mv.addObject("msgObj", new MessageDto(false, "对不起,驳回退款订单失败", "对不起,对不起,驳回退款订单失败,请稍后重试!")); return mv; } } else if (orderUtil.getOrderActin()[5].equals(action)) { // 同意退款 , 需要回滚积分 if (!orderUtil.orderStatusIntToOrderStatusString(4).equals(actionDto.getToOrderStatus())) {// 判断请求修改的订单状态是否相符,否则提示不成功 mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!")); return mv; } order.setSalesStatus(4); if (adminOrderService.updateOrderStatusByOrderId(order)) { List orderItemList = adminOrderService.getShopOrderItemByOrderId(order.getSalesOrderid()); /*调整库存 - 同意退款,库存返回*/ for (int i = 0; i < orderItemList.size(); i++) { Integer fl = productColorService.updateMinusSoldNum(orderItemList.get(i).getItemColorId(),orderItemList.get(i).getItemNum()); if (fl < 1) { logger.info("退款修改数量失败,订单号为:" +orderItemList.get(i).getItemSalesOrderid() ); }else{ logger.info("退款修改数量成功,订单号为:" +orderItemList.get(i).getItemSalesOrderid() +";颜色id为:"+orderItemList.get(i).getItemColorId()+"的数量加上"+orderItemList.get(i).getItemNum()); } } /*调整库存*/ //将返利表中待入账改为已入账 RebackInfo rabackInfo = new RebackInfo(); rabackInfo.setOrderId(order.getSalesOrderid()); rabackInfo.setStatus(3); //根据orderId查询订单所有信息 Order orderInfo = adminOrderService.getShopOrderByOrderId(orderId); Member member = new Member(); //判断该订单是否用过余额支付,如果有,则退款后该支付的余额会退回到用户余额中 if (orderInfo != null && orderInfo.getBalancePayAmount() != null) { member.setUserOpenid(orderInfo.getSalesOpenid()); member.setUserIncome(orderInfo.getBalancePayAmount()); adminOrderService.updateUserByUserId(member); //将数据存入日志中 CashLog cashLog = new CashLog(); cashLog.setCashLogsOpenid(orderInfo.getSalesOpenid()); cashLog.setCashLogsOrderid(orderId); cashLog.setCashLogsNum(orderInfo.getBalancePayAmount()); cashLog.setCashLogsType(1); cashLog.setCashLogsIntroduction("退款"); cashLog.setCashLogsResType(5); cashLog.setCashLogsCreateDate(new Date()); adminOrderService.addCashLog(cashLog); } rebackServices.updateStatus(rabackInfo); String payMoney = df.format((float)currentOrder.getSalesYetAmount()/100) + "元"; try { sendMessageUtil.orderApplyRefund("尊敬的朵粉,您的退款申请已通过。",payMoney,itemList.get(0).getItemProductName(),orderId, "退款金额将在三个工作日内退款到您的支付账户。如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!(点击查看订单详情)",currentOrder.getSalesOpenid(),ResultInfo.ORDER_DETAIL + orderId); } catch (Exception e) { logger.info("订单号:"+ orderId +"的订单同意退款,发送微信消息失败!"); } mv.addObject("msgObj", new MessageDto(true, "订单退款成功", "请联系财务部门,将此订单退款!")); updateRebate(order, 3); return mv; } else { mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!")); return mv; } } else { mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!")); return mv; } case 4: // 已退款(管理员通过申请退款,此时订单任何人不能操作) mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,已退款的订单不能操作!")); return mv; case 5: // 已发货(管理员不具有权限) mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,已发货的订单不能操作!")); return mv; case 6: // 申请退货中(只有管理员能操作 : 确认退货) order.setSalesAuditRemark(actionDto.getSalesAuditRemark()); if (!orderUtil.getOrderActin()[6].equals(action) && !orderUtil.getOrderActin()[10].equals(action)) {// 判断当前请求操作是否相符, 否则提示不成功 mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!")); return mv; } if (!orderUtil.orderStatusIntToOrderStatusString(7).equals(actionDto.getToOrderStatus()) && !orderUtil.orderStatusIntToOrderStatusString(5).equals(actionDto.getToOrderStatus())) {// 判断请求修改的订单状态是否相符,否则提示不成功 mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!")); return mv; } // 执行修改操作 order.setSalesStatus(orderUtil.getOrderStatusByStr(actionDto.getToOrderStatus())); if (adminOrderService.updateOrderStatusByOrderId(order)) { if (orderUtil.orderStatusIntToOrderStatusString(7).equals(actionDto.getToOrderStatus())) { String payMoney = df.format((float)currentOrder.getSalesYetAmount()/100) + "元"; int productNum = 0; for (OrderItem item : itemList) { productNum += item.getItemNum(); } try { sendMessageUtil.orderApplyReturn("尊敬的朵粉,soodo上朵已通过您的【退货申请】",orderId,payMoney,productNum+"件",currentOrder.getSalesReturnDes(), "请您尽快联系客服人员处理,根据客服人员指引将机器寄回。对此结果,soodo上朵深表歉意,我们会继续提升,期待下一次相遇!",currentOrder.getSalesOpenid(),ResultInfo.ORDER_DETAIL + orderId); } catch (Exception e) { logger.info("订单号:"+ orderId +"的订单同意退货,发送微信消息失败!"); } mv.addObject("msgObj", new MessageDto(true, "订单申请退货成功", "恭喜您!同意订单:" + orderId + "退货,等待收到货物后确认退货!")); } else { String payMoney = df.format((float)currentOrder.getSalesYetAmount()/100) + "元"; int productNum = 0; for (OrderItem item : itemList) { productNum += item.getItemNum(); } try { sendMessageUtil.orderApplyReturn("尊敬的朵粉,您的【退货申请】没有通过。",orderId,payMoney,productNum+"件",currentOrder.getSalesReturnDes(), "请确认您的退货申请信息填写无误。如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!",currentOrder.getSalesOpenid(),ResultInfo.ORDER_DETAIL + orderId); } catch (Exception e) { logger.info("订单号:"+ orderId +"的订单驳回退货,发送微信消息失败!"); } mv.addObject("msgObj", new MessageDto(true, "成功驳回订单退货", "订单:" + orderId + "退货被驳回,状态返回已发货!")); } return mv; } else { mv.addObject("msgObj", new MessageDto(false, "对不起,取消订单失败", "对不起,取消订单失败,请稍后重试!")); return mv; } case 7: // 退货中(管理员具有操作能力:确认退货) if (!orderUtil.getOrderActin()[7].equals(action)) {// 判断当前请求操作是否相符, 否则提示不成功 mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!")); return mv; } if (!orderUtil.orderStatusIntToOrderStatusString(8).equals(actionDto.getToOrderStatus())) {// 判断请求修改的订单状态是否相符,否则提示不成功 mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!")); return mv; } // 执行修改操作 order.setSalesStatus(8); if (adminOrderService.updateOrderStatusByOrderId(order)) { //将返利表中待入账改为已入账 RebackInfo rabackInfo = new RebackInfo(); rabackInfo.setOrderId(order.getSalesOrderid()); rabackInfo.setStatus(3); rebackServices.updateStatus(rabackInfo); //根据orderId查询订单所有信息 Order orderInfo = adminOrderService.getShopOrderByOrderId(orderId); Member memberInfo = new Member(); //判断该订单是否用过余额支付,如果有,则退款后该支付的余额会退回到用户余额中 if (orderInfo != null && orderInfo.getBalancePayAmount() != null) { memberInfo.setUserOpenid(orderInfo.getSalesOpenid()); memberInfo.setUserIncome(orderInfo.getBalancePayAmount()); adminOrderService.updateUserByUserId(memberInfo); //将数据存入日志中 CashLog cashLog = new CashLog(); cashLog.setCashLogsOpenid(orderInfo.getSalesOpenid()); cashLog.setCashLogsOrderid(orderId); cashLog.setCashLogsNum(orderInfo.getBalancePayAmount()); cashLog.setCashLogsType(1); cashLog.setCashLogsIntroduction("退货"); cashLog.setCashLogsResType(5); cashLog.setCashLogsCreateDate(new Date()); adminOrderService.addCashLog(cashLog); } mv.addObject("msgObj", new MessageDto(true, "确认订单退货成功", "恭喜您!同意订单:" + orderId + "退货,订单关闭!")); updateRebate(order, 3); // try { // MQMessage message = new MQMessage(); // message.setServiceToMessage(orderId); // message.setServiceOtherMessage(currentOrder.getSalesPostFirm() + "-" + currentOrder.getSalesPostNum()); // message.setServiceIsSend(2); // 没有推送的信息 // message.setServiceStatus(1); // 推送成功 // message.setServiceType(1); // 添加订单信息 // message.setServiceHandlerObjectName("efastOrderServiceImpl"); // message.setServiceHandlerMethodName("returnOrderInfoToEfast"); // mQservice.insertMQMessage(message); // } catch (Exception e) { // // TODO: handle exception // } //推送金额变动消息 Member member = memberService.getMemberByUserOpenId(currentOrder.getSalesOpenid()); if (member != null || member.getUserResType() != null) { String toopenid = ""; switch (member.getUserResType().intValue()) {//用户来源 case 2: //用户来源 微代理 WdRelation wdrelation = wdRelationService.getWdRelationByOpenid(currentOrder.getSalesOpenid()); Member fatherMember = memberService.getMemberByUserId(wdrelation.getWdFirst()); //微代理父节点信息 if (fatherMember != null && StringUtils.isNotEmpty(fatherMember.getUserOpenid())) { toopenid = fatherMember.getUserOpenid(); } break; case 3: //用户来源 线下 DealerRelation dealerrelation = dealerRelationService.getDealerRelationById(member.getUserDealers()); int Dealerid = 0; if (dealerrelation != null) { if (dealerrelation.getDealerThird() != null) { //第三极 Dealerid = dealerrelation.getDealerThird(); } else if (dealerrelation.getDealerSecond() != null) { //第二级 Dealerid = dealerrelation.getDealerSecond(); } else if (dealerrelation.getDealerFifth() != null) { //第一级 Dealerid = dealerrelation.getDealerFifth(); } } PlaceInfo fatherPlace = placeInfoService.getPlaceInfoById(Dealerid);//分销父节点信息 if (fatherPlace != null) { toopenid = fatherPlace.getOpenid(); } break; } String payMoney = df.format((float)currentOrder.getSalesYetAmount()/100) + "元"; int productNum = 0; for (OrderItem item : itemList) { productNum += item.getItemNum(); } try { sendMessageUtil.orderApplyReturn("尊敬的朵粉,soodo上朵已收到您寄回的产品",orderId,payMoney,productNum+"件",currentOrder.getSalesReturnDes(), "退款金额将在三个工作日内退款到您的支付账户。对此结果,soodo上朵深表歉意,我们会继续提升,期待下一次相遇!",currentOrder.getSalesOpenid(),ResultInfo.ORDER_DETAIL + orderId); } catch (Exception e) { logger.info("订单号:"+ orderId +"的订单退货,后台确认收货,发送微信消息失败!"); } } return mv; } else { mv.addObject("msgObj", new MessageDto(false, "对不起,取消订单失败", "对不起,取消订单失败,请稍后重试!")); return mv; } case 8: // 订单退货,订单关闭(管理员收到货后,确认退货,订单状态修改为此,订单不对外提供操作能力) mv.addObject("msgObj", new MessageDto(false, "对不起,操作订单失败", "对不起,订单退货,订单关闭,本订单不能操作!")); return mv; case 9: // 换货中(管理员对申请换货的订单,确认换货时,订单状态为此,此时只有管理员具有操作权限,只能确认换货,录入物流信息,并重新计算订单关闭的时间,待入账积分的时间要修改) if (!orderUtil.getOrderActin()[9].equals(action)) {// 判断当前请求操作是否相符, 否则提示不成功 mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!")); return mv; } if (!orderUtil.orderStatusIntToOrderStatusString(5).equals(actionDto.getToOrderStatus())) {// 判断请求修改的订单状态是否相符,否则提示不成功 mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!")); return mv; } // 执行修改操作 if ("2".equals(currentOrder.getSalesProxyReward().toString())) { order.setSalesStatus(orderUtil.getOrderStatusByStr("inFinish")); } else { order.setSalesStatus(orderUtil.getOrderStatusByStr(actionDto.getToOrderStatus())); } if (adminOrderService.deliverOrderByOrderId(order)) { mv.addObject("msgObj", new MessageDto(true, "订单发货成功", "恭喜您!订单:" + orderId + "订单发货成功!")); // try { // MQMessage message = new MQMessage(); // message.setServiceToMessage(orderId); // message.setServiceOtherMessage("efast.trade.new.add"); // message.setServiceIsSend(2); // 没有推送的信息 // message.setServiceStatus(1); // 推送成功 // message.setServiceType(1); // 添加订单信息 // message.setServiceHandlerObjectName("efastOrderServiceImpl"); // message.setServiceHandlerMethodName("exchangeOrderInfoToEfast"); // mQservice.insertMQMessage(message); // } catch (Exception e) { // System.out.println("===========pay 201 插入返利到百胜失败=============="); // } return mv; } else { mv.addObject("msgObj", new MessageDto(false, "对不起,订单发货失败", "对不起,订单发货失败,请稍后重试!")); return mv; } case 10: // 换货完成,当用户对换货中的订单,点击确认换货时,并录入物流信息,此订单进入已发货状态 break; case 11: // 在订单为已发货时,用户具有的权限,用户申请换货 if (!orderUtil.getOrderActin()[8].equals(action) && !orderUtil.getOrderActin()[11].equals(action)) {// 判断当前请求操作是否相符, 否则提示不成功 mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!")); return mv; } if (!orderUtil.orderStatusIntToOrderStatusString(9).equals(actionDto.getToOrderStatus()) && !orderUtil.orderStatusIntToOrderStatusString(5).equals(actionDto.getToOrderStatus())) {// 判断请求修改的订单状态是否相符,否则提示不成功 mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!")); return mv; } // 执行修改操作 if (!orderUtil.orderStatusIntToOrderStatusString(9).equals(actionDto.getToOrderStatus())) { if ("2".equals(currentOrder.getSalesProxyReward().toString())) { order.setSalesStatus(orderUtil.getOrderStatusByStr("inFinish")); } else { order.setSalesStatus(orderUtil.getOrderStatusByStr(actionDto.getToOrderStatus())); } } else { order.setSalesStatus(orderUtil.getOrderStatusByStr(actionDto.getToOrderStatus())); } if (adminOrderService.updateOrderStatusByOrderId(order)) { if (orderUtil.orderStatusIntToOrderStatusString(9).equals(actionDto.getToOrderStatus())) { try { sendMessageUtil.orderApplyBarter("尊敬的朵粉,您的【换货申请】通过。",orderId,itemList.get(0).getItemProductName(), "如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!(点击查看订单详情)",currentOrder.getSalesOpenid(),ResultInfo.ORDER_DETAIL + orderId); } catch (Exception e) { logger.info("订单号:"+ orderId +"的订单同意换货,发送微信消息失败!"); } mv.addObject("msgObj", new MessageDto(true, "同意换货成功", "恭喜您!同意订单:" + orderId + "换货,请收货后录入物流信息并同意换货!")); } else { try { sendMessageUtil.orderApplyBarter("尊敬的朵粉,您的【换货申请】没有通过。",orderId,itemList.get(0).getItemProductName(), "请确认您的换货申请信息填写无误。如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!(点击查看订单详情)",currentOrder.getSalesOpenid(),ResultInfo.ORDER_DETAIL + orderId); } catch (Exception e) { logger.info("订单号:"+ orderId +"的订单驳回换货,发送微信消息失败!"); } mv.addObject("msgObj", new MessageDto(true, "驳回换货成功", "您已驳回订单:" + orderId + "换货,订单状态改为已发货!")); } return mv; } else { mv.addObject("msgObj", new MessageDto(false, "对不起,取消订单失败", "对不起,取消订单失败,请稍后重试!")); return mv; } default: // 报错 mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误!")); return mv; } return mv; } /** * 修改返利表的返现状态 * * @param order * @param status */ public void updateRebate(Order order, int status) { RebackInfo rabackInfo = new RebackInfo(); rabackInfo.setOrderId(order.getSalesOrderid()); rabackInfo.setStatus(status); LoadRewardTaskService.updateStatus(rabackInfo); } @ResponseBody @RequestMapping("/markRefund/{orderId}") public ResultMsg markRefund(HttpServletRequest request, @PathVariable("orderId") String orderId) throws Exception { ResultMsg msg = new ResultMsg(); //查询该订单的状态 Order order = adminOrderService.selectOrderStatusByOrderId(orderId); if (order == null) { msg.setResultCode(ResultInfo.ERRORCODE); msg.setStatus(false); msg.setMessage("该订单不存在,请重新操作!"); return msg; } //4:已退款,8:订单退货,订单关闭 if (order.getSalesStatus() != 4 && order.getSalesStatus() != 8) { msg.setResultCode(ResultInfo.ERRORCODE); msg.setStatus(false); msg.setMessage("该订单不支持标记已退款!"); return msg; } if (order.getSalesIsRfund() != null && order.getSalesIsRfund() == 2) { msg.setResultCode(ResultInfo.ERRORCODE); msg.setStatus(false); msg.setMessage("该订单已标记退款,不能重复标记!"); return msg; } Order orderInfo = new Order(); orderInfo.setSalesOrderid(orderId); orderInfo.setSalesIsRfund(2); //修改订单退款状态 int num = adminOrderService.updateOrderRfund(orderInfo); if (num > 0) { msg.setResultCode(ResultInfo.SUCCESSCODE); msg.setStatus(true); } else { msg.setResultCode(ResultInfo.ERRORCODE); msg.setStatus(false); msg.setMessage("标记退款失败,请重新标记!"); } return msg; } /** * 订单备注 * * @throws IOException */ @RequestMapping(value = "/remark/{id}", produces = {"application/json;charset=UTF-8"}) @ResponseBody public String orderRemark(OrderActionDto actionDto, @PathVariable("id") String orderId, HttpServletResponse response) throws IOException { String remark = ""; // 订单备注 if (actionDto.getRemarkColor() == null) { actionDto.setRemarkColor(1); } if (actionDto.getRemark() == null || actionDto.getRemark().isEmpty()) { return "{\"status\":\"false\",\"info\":\"备注信息不能为空!\"}"; } if (actionDto.getRemark().length() > 100) { return "{'\"status\":\"false\",\"info\":\"备注信息不能超过100个字符!\"}"; } //查询该订单的状态 Order order = adminOrderService.selectOrderStatusByOrderId(orderId); if (null == order) { return "{\"status\":true,\"info\":\"该订单不存在!\"}"; } if (!"8".equals(order.getSalesStatus().toString())) { remark = actionDto.getRemark(); } // update到数据库 if (adminOrderService.updateOrderAdminRemarkByOrderId(remark, orderId, actionDto.getRemarkColor())) { return "{\"status\":true,\"info\":\"备注成功!\"}"; } else { return "{\"status\":\"false\",\"info\":\"备注失败,请稍后重试!\"}"; } } /** * 查询待发货事项、申请退款订单、申请退货订单、申请换货订单数量 */ @ResponseBody @RequestMapping(value = "/selectTodo") public ResultMsg selectTodo(HttpServletRequest request){ ResultMsg msg = new ResultMsg(); //查询待发货事项、申请退款订单、申请退货订单、申请换货订单 的数量 NumberBacklogDto numberBacklogDto = adminOrderService.selectNumberBacklog(); msg.setResultCode(ResultInfo.SUCCESSCODE); msg.setStatus(true); msg.setData(numberBacklogDto); return msg; } /** * 下载导出订单 */ @ResponseBody @RequestMapping(value = "/download_order") public ModelAndView downloadOrder(HttpServletRequest request,Order order){ List orderList = adminOrderService.getOrderListToExcel(order); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 准备model Map model = new HashMap(); model.put("fileName", "上朵销售数据"); // 下载文件名称 // 标题 List titles = new ArrayList(); titles.add("时间"); titles.add("产品类型"); titles.add("产品名称"); titles.add("产品颜色"); titles.add("数量"); titles.add("订单金额"); titles.add("支付金额"); titles.add("订单状态"); titles.add("优惠券使用"); titles.add("订单编号"); titles.add("收货人"); titles.add("昵称"); titles.add("手机号码"); titles.add("地址"); titles.add("邮寄方式"); titles.add("渠道层级"); titles.add("渠道名称"); model.put("titles", titles); List> countexts = new ArrayList>(); for (Order info : orderList) { Integer num=0; for (int i=0; i row = new ArrayList(); row.add(info.getSalesCreateDate() == null ? "":formatter.format(info.getSalesCreateDate())); row.add(item.getProductTypeName() == null ? "":item.getProductTypeName()); row.add(item.getItemProductName() == null ? "":item.getItemProductName()); row.add(item.getProductColor() == null ? "":item.getProductColor()); row.add(item.getItemNum() == null ? "":item.getItemNum()); row.add(item.getItemTotal() == null ? "":item.getItemTotal()/100); //订单金额 if(info.getCouponId() != null){ //支付金额 row.add((item.getItemTotal() - (oneOfferAmount*item.getItemNum()))/100); }else{ row.add(item.getItemTotal() == null ? "":item.getItemTotal()/100); } String statusString = ""; switch (info.getSalesStatus()){ case 0: statusString = "取消订单"; break; case 1: statusString = "待支付"; break; case 2: statusString = "已支付、待发货"; break; case 3: statusString = "退款申请中"; break; case 4: statusString = "已退款"; break; case 5: statusString = "已发货"; break; case 6: statusString = "申请退货中"; break; case 7: statusString = "退货中"; break; case 8: statusString = "订单退货"; break; case 9: statusString = "换货中"; break; case 10: statusString = "换货完成"; break; case 11: statusString = "申请换货中"; break; case 12: statusString = "订单完成"; break; } row.add(statusString); //订单状态 if(info.getCouponId() != null){ row.add("是"); }else{ row.add("否"); } row.add(info.getSalesOrderid() == null ? "":info.getSalesOrderid()); row.add(info.getSalesAddressName() == null ? "":info.getSalesAddressName()); row.add(info.getUserNickname() == null ? "":info.getUserNickname()); row.add(info.getSalesAddressTel() == null ? "":info.getSalesAddressTel()); row.add(info.getSalesAddressInfo() == null ? "":info.getSalesAddressInfo()); if(info.getSalesTransportationType() == 2){ // 1:邮寄 2:自提 row.add("自提"); }else{ row.add("邮寄"); } if(info.getSalesChannelType() != null) { //1:主渠道 2:子渠道 if (info.getSalesChannelType() == 1) { row.add("主渠道"); }else if (info.getSalesChannelType() == 2){ row.add("子渠道"); }else{ row.add(""); } }else{ row.add(""); } row.add(info.getSalesChannelName() == null ? "":info.getSalesChannelName()); countexts.add(row); } } model.put("varList", countexts); ObjectExcelView erv = new ObjectExcelView(); SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); String name = ""; if(order.getBeginDate() != null){ name += sd.format(order.getBeginDate()); }else{ name += "2018-01-01"; } name += "-"; if( order.getEndDate() != null){ name += sd.format(order.getEndDate()); }else{ name += sd.format(new Date()); } erv.setName(name); ModelAndView mv = new ModelAndView(erv, model); return mv; } /** * 下载导出订单 */ @ResponseBody @RequestMapping(value = "/download_order2") public ModelAndView downloadOrder2(HttpServletRequest request,Order order){ List orderList = adminOrderService.getPaySuccessOrderByOrderId(order); for (Order or: orderList) { List orderItemList = adminOrderService.getShopOrderItemByOrderId(or.getSalesOrderid()); or.setOrderItemList(orderItemList); } SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 准备model Map model = new HashMap(); model.put("fileName", "上朵销售数据"); // 下载文件名称 // 标题 List titles = new ArrayList(); titles.add("订单编号"); titles.add("日期"); titles.add("姓名"); titles.add("电话号码"); titles.add("地址"); titles.add("产品"); titles.add("颜色"); titles.add("数量"); titles.add("支付金额"); titles.add("订单状态"); titles.add("快递单号"); titles.add("物流公司"); model.put("titles", titles); List> countexts = new ArrayList>(); for (Order info : orderList) { Integer salesYetAmount = info.getSalesYetAmount(); //付款金额 for (int i=0; i row = new ArrayList(); row.add(info.getSalesOrderid() == null ? "":info.getSalesOrderid()); row.add(info.getSalesCreateDate() == null ? "":formatter.format(info.getSalesCreateDate())); row.add(info.getSalesAddressName() == null ? "":info.getSalesAddressName()); row.add(info.getSalesAddressTel() == null ? "":info.getSalesAddressTel()); row.add(info.getSalesAddressInfo() == null ? "":info.getSalesAddressInfo()); row.add(item.getItemProductName() == null ? "":item.getItemProductName()); row.add(item.getProductColor() == null ? "":item.getProductColor()); row.add(item.getItemNum() == null ? "":item.getItemNum()); if(salesYetAmount >= item.getItemTotal()){ salesYetAmount = salesYetAmount - item.getItemTotal(); row.add(item.getItemTotal()/100); //订单金额 }else{ row.add(salesYetAmount/100); //订单金额 salesYetAmount = 0; } String statusString = ""; switch (info.getSalesStatus()){ case 0: statusString = "取消订单"; break; case 1: statusString = "待支付"; break; case 2: statusString = "已支付、待发货"; break; case 3: statusString = "退款申请中"; break; case 4: statusString = "已退款"; break; case 5: statusString = "已发货"; break; case 6: statusString = "申请退货中"; break; case 7: statusString = "退货中"; break; case 8: statusString = "订单退货"; break; case 9: statusString = "换货中"; break; case 10: statusString = "换货完成"; break; case 11: statusString = "申请换货中"; break; case 12: statusString = "订单完成"; break; } row.add(statusString); //订单状态 row.add(info.getSalesPostFirm() == null ? "":info.getSalesPostFirm()); row.add(info.getSalesPostNum() == null ? "":info.getSalesPostNum()); countexts.add(row); } } model.put("varList", countexts); ObjectExcelView erv = new ObjectExcelView(); ModelAndView mv = new ModelAndView(erv, model); return mv; } }