package com.stylefeng.guns.modular.crossCity.controller; import com.alibaba.fastjson.JSON; import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService; import com.stylefeng.guns.modular.crossCity.warpper.OrderCrossCityInfoWrapper; import com.stylefeng.guns.modular.crossCity.warpper.OrderCrossCityWarpper; import com.stylefeng.guns.modular.crossCity.warpper.OrderWarpper; import com.stylefeng.guns.modular.system.model.Reassign; import com.stylefeng.guns.modular.system.service.IDriverService; import com.stylefeng.guns.modular.system.service.IReassignService; //import com.stylefeng.guns.modular.system.util.ICBCPayUtil; import com.stylefeng.guns.modular.system.util.PayMoneyUtil; import com.stylefeng.guns.modular.system.util.ResultUtil; import com.stylefeng.guns.modular.system.util.SystemException; import com.stylefeng.guns.modular.system.warpper.BaseWarpper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; import java.util.Map; @Api @RestController @RequestMapping("") public class OrderCrossCityController { @Autowired private IOrderCrossCityService orderCrossCityService; @Autowired private IDriverService driverService; @Autowired private IReassignService reassignService; // @Autowired // private ICBCPayUtil icbcPayUtil; @Autowired private PayMoneyUtil payMoneyUtil; /** * 获取服务中页面订单详情 * @param orderId * @return */ @ResponseBody @PostMapping("/api/orderCrossCity/queryOrderInfo") @ApiOperation(value = "获取跨城订单服务中详情", tags = {"司机端-服务中"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil queryOrderInfo(Integer orderId){ try { Map map = orderCrossCityService.queryOrderInfo(orderId); return ResultUtil.success(OrderWarpper.getOrderWarpper(map)); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 提交改派申请 * @param reassign * @param orderIds * @param request * @return */ @ResponseBody @PostMapping("/api/orderCrossCity/reassignOrderCrossCityReassign") @ApiOperation(value = "提交改派申请(跨城)", tags = {"司机端-服务中"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "订单id(多个以逗号分隔)", name = "orderIds", required = true, dataType = "string"), @ApiImplicitParam(value = "改派支付方式(1=微信,2=支付宝,3=余额)", name = "payType", required = false, dataType = "int"), @ApiImplicitParam(value = "改派原因", name = "reason", required = true, dataType = "string"), @ApiImplicitParam(value = "备注", name = "remark", required = false, dataType = "string"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil reassignOrderCrossCityReassign(Reassign reassign, String orderIds, HttpServletRequest request){ try { Integer uid = driverService.getUserIdFormRedis(request); if(null == uid){ return ResultUtil.tokenErr(); } return reassignService.saveData_(reassign, orderIds, uid, null); }catch (SystemException s){ return ResultUtil.error(s.getMsg()); } catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 获取已完成订单明细 * @param orderId * @return */ @ResponseBody @PostMapping("/api/orderCrossCity/queryOrderCrossCityInfo") @ApiOperation(value = "获取已完成的订单明细(跨城)", tags = {"司机端-服务中"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "跨城订单id", name = "orderId", required = true, dataType = "int"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil queryOrderCrossCityInfo(Integer orderId){ try { Map map = orderCrossCityService.queryOrderCrossCityInfo(orderId); return ResultUtil.success(OrderCrossCityInfoWrapper.getOrderInfoWarpper(map)); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 修改订单顺序 * @param orderId * @return */ @ResponseBody @PostMapping("/api/orderCrossCity/setOrderCrossCitySort") @ApiOperation(value = "修改订单顺序(跨城)", tags = {"司机端-服务中"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "跨城订单id", name = "orderId", required = true, dataType = "int"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil setOrderCrossCitySort(Integer orderId){ try { orderCrossCityService.setOrderCrossCitySort(orderId); return ResultUtil.success(); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 跨城出行下单操作 * @param orderCrossCityWarpper * @param request * @return */ @ResponseBody @RequestMapping(value = "/api/order/orderCrossCity", method = RequestMethod.POST) @ApiOperation(value = "跨城出行下单操作", tags = {"司机端-首页"}, notes = "先进行下单操作,再根据返回数据生成收款二维码") @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil orderCrossCity(OrderCrossCityWarpper orderCrossCityWarpper, HttpServletRequest request){ try { Integer uid = driverService.getUserIdFormRedis(request); if(null == uid){ return ResultUtil.tokenErr(); } return orderCrossCityService.orderCrossCity(orderCrossCityWarpper, uid); }catch (SystemException se){ return ResultUtil.error(se.getMessage()); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 扫码支付成功回调处理 * @param request * @param response */ @ResponseBody @PostMapping("/base/order/generatePay") public void generatePay(HttpServletRequest request, HttpServletResponse response){ try { // Map map = icbcPayUtil.generatePayCallback(request); // if(null != map){ // String out_trade_no = map.get("out_trade_no"); // String order_id = map.get("order_id"); // String s = icbcPayUtil.queryGeneratePayState("", order_id); // if(s.equals("1")){ // icbcPayUtil.answer(response);//回调应答 // } // if(ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(order_id) && s.equals("1")){ // String[] split = out_trade_no.split(","); // Integer id = Integer.valueOf(split[0]); // Integer type = Integer.valueOf(split[1]); // switch (type){ // case 1: // break; // case 2: // break; // case 3: // orderCrossCityService.generatePayCallback(id, order_id); // break; // } // } // } }catch (Exception e){ e.printStackTrace(); } } /** * 订单完成支付订单操作 * @param payType * @param orderId * @param request * @return */ @ResponseBody @PostMapping("/api/order/payTaxiOrder") @ApiOperation(value = "订单完成支付订单操作", tags = {"司机端-首页"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "支付方式(1=微信,2=支付宝,3=扫码支付)", name = "payType", required = true, dataType = "int"), @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), @ApiImplicitParam(value = "订单类型(3=跨城)", name = "orderType", required = true, dataType = "int"), @ApiImplicitParam(value = "优惠券id", name = "couponId", required = false, dataType = "int"), @ApiImplicitParam(value = "支付端(1=用户APP端,2=司机APP端,3=用户小程序端)", name = "type", required = true, dataType = "int"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil payTaxiOrder(Integer payType, Integer orderId, Integer orderType, Integer couponId, Integer type, HttpServletRequest request){ try { Integer uid = driverService.getUserIdFormRedis(request); if(null == uid){ return ResultUtil.tokenErr(); } switch (orderType){ case 3: return orderCrossCityService.payCrossCityOrder(payType, orderId, couponId, type); } return ResultUtil.success(); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 完成订单微信支付回调 * @param request */ @ResponseBody @PostMapping("/base/wxPayCrossCity") public void wxPayCrossCity(HttpServletRequest request, HttpServletResponse response){ try { Map map = payMoneyUtil.weixinpayCallback(request); if(null != map){ String out_trade_no = map.get("out_trade_no"); String transaction_id = map.get("transaction_id"); String result = map.get("result"); if(ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(transaction_id)){ String[] split = out_trade_no.split("_"); Integer id = Integer.valueOf(split[0]); Integer type = Integer.valueOf(split[1]); switch (type){ case 3: orderCrossCityService.payOrderCrossCityCallback(id, transaction_id, 1); break; } PrintWriter out = response.getWriter(); out.write(result); out.flush(); out.close(); } } }catch (Exception e){ e.printStackTrace(); } } @ResponseBody @PostMapping("/base/aliPayCrossCity") public void aliPayCrossCity(HttpServletRequest request, HttpServletResponse response){ try { Map map = payMoneyUtil.alipayCallback(request); if(null != map){ String out_trade_no = map.get("out_trade_no"); String trade_no = map.get("trade_no"); if(ToolUtil.isNotEmpty(out_trade_no) && ToolUtil.isNotEmpty(trade_no)){ String[] split = out_trade_no.split("_"); Integer id = Integer.valueOf(split[0]); Integer type = Integer.valueOf(split[1]); switch (type){ case 3: orderCrossCityService.payOrderCrossCityCallback(id, trade_no, 2); break; } } } }catch (Exception e){ e.printStackTrace(); } } }