package com.stylefeng.guns.modular.api; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.smallLogistics.model.OrderLogisticsSpread; import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService; import com.stylefeng.guns.modular.smallLogistics.server.impl.OrderLogisticsSpreadService; import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService; import com.stylefeng.guns.modular.system.model.OrderPosition; import com.stylefeng.guns.modular.system.model.Reassign; import com.stylefeng.guns.modular.system.service.IDriverService; import com.stylefeng.guns.modular.system.service.IOrderService; import com.stylefeng.guns.modular.system.service.IReassignService; import com.stylefeng.guns.modular.system.util.*; import com.stylefeng.guns.modular.system.util.Tingg.model.CallbackRequest; import com.stylefeng.guns.modular.system.util.Tingg.model.CallbackResponse; import com.stylefeng.guns.modular.system.util.Tingg.model.Payments; import com.stylefeng.guns.modular.system.warpper.BaseWarpper; import com.stylefeng.guns.modular.system.warpper.MoneyInfoWarpper; import com.stylefeng.guns.modular.system.warpper.OrderInfoWarpper; import com.stylefeng.guns.modular.system.warpper.OrderListWarpper; 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.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * 订单相关控制器 */ @RestController @RequestMapping("") public class OrderController { @Autowired private IOrderService orderService; @Autowired private IDriverService driverService; @Autowired private IReassignService reassignService; @Autowired private PushUtil pushUtil; @Autowired private ChinaMobileUtil chinaMobileUtil; @Autowired private IOrderLogisticsService orderLogisticsService; @Autowired private IOrderPrivateCarService orderPrivateCarService; @Value("${filePath}") private String filePath; /** * 司机端获取首页订单列表 * @param state * @param pageNum * @param size * @param request * @return */ @ResponseBody @PostMapping("/api/order/queryOrderList") @ApiOperation(value = "获取首页订单列表", tags = {"司机端-首页"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "数据类型(1=服务中,2=待服务)", name = "state", required = true, dataType = "int"), @ApiImplicitParam(value = "页码,首页1", name = "pageNum", required = true, dataType = "int"), @ApiImplicitParam(value = "页条数", name = "size", required = true, dataType = "int"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil> queryOrderList(Integer state, Integer pageNum, Integer size, Integer language, HttpServletRequest request){ try { Integer uid = driverService.getUserIdFormRedis(request); if(null == uid){ return ResultUtil.tokenErr(); } List> list = orderService.queryOrderList(state, pageNum, size, uid, language); return ResultUtil.success(OrderListWarpper.getOrderListWarpper(list)); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 司机端获取首页订单列表 * @param state * @param pageNum * @param size * @param request * @return */ @ResponseBody @PostMapping("/api/order/queryOrderList1") @ApiOperation(value = "获取首页订单列表", tags = {"司机端-车载端"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "数据类型(1=服务中,2=待服务)", name = "state", required = true, dataType = "int"), @ApiImplicitParam(value = "页码,首页1", name = "pageNum", required = true, dataType = "int"), @ApiImplicitParam(value = "页条数", name = "size", required = true, dataType = "int"), @ApiImplicitParam(value = "订单类型(1=其他订单,2=小件物流)", name = "type", required = true, dataType = "int"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil> queryOrderList1(Integer state, Integer type, Integer pageNum, Integer size, Integer language, HttpServletRequest request){ try { Integer uid = driverService.getUserIdFormRedis(request); if(null == uid){ return ResultUtil.tokenErr(); } List> list = orderService.queryOrderList1(state, type, pageNum, size, uid, language); return ResultUtil.success(OrderListWarpper.getOrderListWarpper(list)); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 获取我的订单列表 * @param state * @param pageNum * @param size * @param request * @return */ @ResponseBody @PostMapping("/api/order/queryMyAllOrder") @ApiOperation(value = "获取我的订单列表【2.0】", tags = {"司机端-首页"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "数据类型(1=全部,2=待支付,3=已取消,4=已完成)", name = "state", required = true, dataType = "int"), @ApiImplicitParam(value = "页码,首页1", name = "pageNum", required = true, dataType = "int"), @ApiImplicitParam(value = "页条数", name = "size", required = true, dataType = "int"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil> queryMyAllOrder(Integer state, Integer pageNum, Integer size, Integer language, HttpServletRequest request){ try { Integer uid = driverService.getUserIdFormRedis(request); if(null == uid){ return ResultUtil.tokenErr(); } List listWarppers = orderService.queryMyAllOrder(state, pageNum, size, uid, language); return ResultUtil.success(listWarppers); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 获取抢单界面的订单详情 * @param orderId * @param orderType * @param lon * @param lat * @return */ @ResponseBody @PostMapping("/api/order/queryPushOrder") @ApiOperation(value = "获取抢单界面的订单详情【1.0】", tags = {"司机端-首页"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), @ApiImplicitParam(value = "订单类型(1=专车,4=小件物流-同城)", name = "orderType", required = true, dataType = "int"), @ApiImplicitParam(value = "当前定位经度", name = "lon", required = true, dataType = "string"), @ApiImplicitParam(value = "当前定位纬度", name = "lat", required = true, dataType = "string"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil queryPushOrder(Integer orderId, Integer orderType, String lon, String lat, Integer language){ try { Map map = orderService.queryPushOrder(orderId, orderType, lon, lat, language); OrderInfoWarpper orderInfoWarpper = OrderInfoWarpper.getOrderInfoWarpper(map); orderInfoWarpper.setOrderPositionList(""); return ResultUtil.success(orderInfoWarpper); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 司机抢单操作 * @param orderId * @param orderType * @param request * @return */ @ResponseBody @PostMapping("/api/order/grabOrder") @ApiOperation(value = "司机抢单操作", tags = {"司机端-首页"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), @ApiImplicitParam(value = "订单类型(1=专车,4=小件物流-同城)", name = "orderType", required = true, dataType = "int"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil grabOrder(Integer orderId, Integer orderType, Integer language, HttpServletRequest request){ try { Integer uid = driverService.getUserIdFormRedis(request); if(null == uid){ return ResultUtil.tokenErr(); } return orderService.grabOrder(orderId, orderType, uid, language); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @Autowired private OrderLogisticsSpreadService spreadService; /** * 获取服务中页面订单详情 * @param orderId * @param orderType * @return */ @ResponseBody @PostMapping("/api/order/queryOrderInfo") @ApiOperation(value = "获取服务中页面订单详情【2.0】", tags = {"司机端-服务中"}, notes = "",response = OrderInfoWarpper.class) @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), @ApiImplicitParam(value = "订单类型(1=专车,4=小件物流-同城)", name = "orderType", required = true, dataType = "int"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil queryOrderInfo(Integer language, Integer orderId, Integer orderType){ try { Map map = orderService.queryOrderInfo(language, orderId, orderType); OrderInfoWarpper orderInfoWarpper = OrderInfoWarpper.getOrderInfoWarpper(map); File file = new File(filePath + orderId + "_" + orderType + ".txt"); if(file.exists()){ //读取文件(字符流) BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8")); //循环取出数据 String str = null; StringBuffer sb = new StringBuffer(); while ((str = in.readLine()) != null) { sb.append(str); } List list = JSONArray.parseArray(sb.toString(), OrderPosition.class); orderInfoWarpper.setOrderPositionList(JSONObject.toJSONString(list)); }else{ orderInfoWarpper.setOrderPositionList(""); } List orderLogisticsId = spreadService.selectList(new EntityWrapper().eq("orderLogisticsId", orderId)); if (!orderLogisticsId.isEmpty()){ double sum = 0; for (OrderLogisticsSpread orderLogisticsSpread : orderLogisticsId) { if (orderLogisticsSpread.getPayType()!=null&&orderLogisticsSpread.getPayType() == 4) { Double payMoney = orderLogisticsSpread.getPayMoney(); sum = sum + payMoney; } } sum = sum+orderInfoWarpper.getPayMoney(); orderInfoWarpper.setPayMoney(sum); } return ResultUtil.success(orderInfoWarpper); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 获取订单的改派金额 * @param orderId * @param orderType * @return */ @ResponseBody @PostMapping("/api/order/queryReassignMoney") @ApiOperation(value = "获取改派支付金额", tags = {"司机端-服务中"}, notes = "返回金额为0不需要调用支付") @ApiImplicitParams({ @ApiImplicitParam(value = "订单id(跨城多个订单使用逗号分隔)", name = "orderId", required = true, dataType = "string"), @ApiImplicitParam(value = "订单类型(1=专车,4=小件物流-同城)", name = "orderType", required = true, dataType = "int"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil queryReassignMoney(String orderId, Integer orderType){ try { String[] split = orderId.split(","); Double aDouble = orderService.queryReassignMoney(Integer.valueOf(split[0]), orderType); BaseWarpper baseWarpper = new BaseWarpper(); if(orderType == 3){ aDouble = aDouble * split.length; } baseWarpper.setAmount(aDouble); return ResultUtil.success(baseWarpper); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 司机提交改派申请 * @param reassign * @param request * @return */ @ResponseBody @PostMapping("/api/order/reassign") @ApiOperation(value = "提交改派申请", tags = {"司机端-服务中"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,4=小件物流-同城,5=小件物流-跨城)", name = "orderType", required = true, dataType = "int"), @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 reassign(Reassign reassign, Integer language, HttpServletRequest request){ try { Integer uid = driverService.getUserIdFormRedis(request); if(null == uid){ return ResultUtil.tokenErr(); } return reassignService.saveData(reassign, uid, null, language); }catch (SystemException s){ return ResultUtil.error(s.getMsg()); } catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 司机走流程操作 * @param orderId * @param orderType * @param state * @param lon * @param lat * @param request * @return */ @ResponseBody @PostMapping("/api/order/process") @ApiOperation(value = "司机走流程操作", tags = {"司机端-服务中"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), @ApiImplicitParam(value = "订单类型(1=专车,4=小件物流-同城)", name = "orderType", required = true, dataType = "int"), @ApiImplicitParam(value = "流程操作状态(3=开始出发预约点,4=到达预约点,5=开始服务,6=服务结束)", name = "state", required = true, dataType = "int"), @ApiImplicitParam(value = "手机号后四位", name = "phone", required = false, dataType = "String"), @ApiImplicitParam(value = "当前经度", name = "lon", required = true, dataType = "double"), @ApiImplicitParam(value = "当前纬度", name = "lat", required = true, dataType = "double"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil process(Integer orderId, Integer orderType, Integer state, Double lon, Double lat,String phone, String pickUpCode, Integer language, HttpServletRequest request){ try { Integer uid = driverService.getUserIdFormRedis(request); if(null == uid){ return ResultUtil.tokenErr(); } return orderService.process(orderId, orderType, state, uid, lon, lat, phone, pickUpCode, language); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 司机抢单操作(车载端) * @param orderId * @param orderType * @param request * @return */ @ResponseBody @PostMapping("/api/order/grabOrder_") @ApiOperation(value = "司机抢单操作", tags = {"司机端-车载端"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), @ApiImplicitParam(value = "订单类型(2=出租车,4=小件物流-同城,5=小件物流-跨城)", name = "orderType", required = true, dataType = "int"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil grabOrder_(Integer orderId, Integer orderType, HttpServletRequest request){ try { Integer uid = driverService.getUserIdFormRedis(request); if(null == uid){ return ResultUtil.tokenErr(); } return orderService.grabOrder_(orderId, orderType, uid); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 司机确认费用 * @param orderId * @param orderType * @param type * @param travelFee * @param parkingFee * @param crossingFee * @return */ @ResponseBody @PostMapping("/api/order/confirmFees") @ApiOperation(value = "司机确认费用", tags = {"司机端-服务中"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=城际,4=同城小件物流)", name = "orderType", required = true, dataType = "int"), // @ApiImplicitParam(value = "支付方式(1=OK平台收款,2=其他方式收款)", name = "type", required = true, dataType = "int"), @ApiImplicitParam(value = "行程费用(出租车必传)", name = "travelFee", required = false, dataType = "double"), @ApiImplicitParam(value = "停车费", name = "parkingFee", required = false, dataType = "double"), @ApiImplicitParam(value = "过路费", name = "crossingFee", required = false, dataType = "double"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil confirmFees(Integer language, Integer orderId, Integer orderType, Integer type, Double travelFee, Double parkingFee, Double crossingFee){ try{ return orderService.confirmFees(language, orderId, orderType, type, travelFee, parkingFee, crossingFee); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 司机确认费用(车载端) * @param orderId * @param orderType * @param type * @param travelFee * @return */ @ResponseBody @PostMapping("/api/order/confirmFees_") @ApiOperation(value = "司机确认费用(车载端)", tags = {"司机端-车载端"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), @ApiImplicitParam(value = "订单类型(2=出租车)", name = "orderType", required = true, dataType = "int"), @ApiImplicitParam(value = "支付方式(1=OK平台收款)", name = "type", required = true, dataType = "int"), @ApiImplicitParam(value = "行程费用", name = "travelFee", required = false, dataType = "double"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil confirmFees_(Integer orderId, Integer orderType, Integer type, Double travelFee, Double lon, Double lat){ try{ return orderService.confirmFees_(orderId, orderType, type, travelFee, lon, lat); }catch (Exception e){ e.printStackTrace(); System.err.println(lon + "," + lat); return ResultUtil.runErr(); } } /** * 获取待支付页详情 * @param orderId * @param orderType * @return */ @ResponseBody @PostMapping("/api/order/queryToBePaidPage") @ApiOperation(value = "获取待支付页详情", tags = {"司机端-服务中"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), @ApiImplicitParam(value = "订单类型(1=专车,2=出租车)", name = "orderType", required = true, dataType = "int"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil queryToBePaidPage(Integer language, Integer orderId, Integer orderType){ try { Map map = orderService.queryToBePaidPage(language, orderId, orderType); return ResultUtil.success(OrderInfoWarpper.getOrderInfoWarpper(map)); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 后台改派成功后的推送接口 * @param orderId * @param orderType * @return */ @ResponseBody @PostMapping("/base/order/pushOrderState") public String pushOrderState(Integer language, Integer orderId, Integer orderType){ try { Map map = orderService.queryOrderInfo(language, orderId, orderType); //更新小号绑定关系 orderService.RebindMidAxbBindSend(orderId, orderType); pushUtil.pushOrderReassign(Integer.valueOf(String.valueOf(map.get("driverId"))), 2,Integer.valueOf(String.valueOf(map.get("orderId"))), orderType); pushUtil.pushOrderReassign(Integer.valueOf(String.valueOf(map.get("userId"))), 1,Integer.valueOf(String.valueOf(map.get("orderId"))), orderType); pushUtil.pushOrderState(1, Integer.valueOf(String.valueOf(map.get("userId"))), Integer.valueOf(String.valueOf(map.get("orderId"))), orderType, Integer.valueOf(String.valueOf(map.get("orderState")))); return JSON.toJSONString(ResultUtil.success()); }catch (Exception e){ e.printStackTrace(); return JSON.toJSONString(ResultUtil.runErr()); } } @ResponseBody @PostMapping("/base/order/reassign_") @ApiOperation(value = "提交改派申请", tags = {"司机端-服务中"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=城际,4=小件物流-同城,5=小件物流-跨城,6=包车)", name = "orderType", required = true, dataType = "int"), @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"), }) public String reassign_(Reassign reassign, Integer uid, Integer language){ try { ResultUtil resultUtil = reassignService.saveData(reassign, uid, 3, language); return JSON.toJSONString(resultUtil); }catch (SystemException s){ return JSON.toJSONString(ResultUtil.error(s.getMsg())); } catch (Exception e){ e.printStackTrace(); return JSON.toJSONString(ResultUtil.runErr()); } } @ResponseBody @PostMapping("/base/order/test") public String test(String phoneA, String phoneB){ try { Map map = chinaMobileUtil.midAxbBindSend(phoneA, phoneB, 28); System.err.println(JSON.toJSONString(map)); }catch (Exception e){ e.printStackTrace(); return ""; } return null; } @ResponseBody @PostMapping("/base/order/test_") public String test(String bindId){ try { Map map = chinaMobileUtil.midAxbUnBindSend(bindId,""); }catch (Exception e){ e.printStackTrace(); return ""; } return null; } /** * 司机确认费用(车载端)不管之前数据状态直接修改到待支付(流程断网情况的处理流程) * @param orderId * @param orderType * @param type * @param travelFee * @param lon * @param lat * @return */ @ResponseBody @PostMapping("/api/order/confirmFees$") @ApiOperation(value = "司机确认费用(车载端)不管之前数据状态直接修改到已完成(流程断网情况的处理流程)", tags = {"司机端-车载端"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), @ApiImplicitParam(value = "订单类型(2=出租车)", name = "orderType", required = true, dataType = "int"), @ApiImplicitParam(value = "支付方式(1=OK平台收款)", name = "type", required = true, dataType = "int"), @ApiImplicitParam(value = "行程费用", name = "travelFee", required = false, dataType = "double"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil confirmFees$(Integer orderId, Integer orderType, Integer type, Double travelFee, Double lon, Double lat){ try{ return orderService.confirmFees$(orderId, orderType, type, travelFee, lon, lat); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/order/queryVoiceBroadcast") @ApiOperation(value = "接单后获取语音播报内容", tags = {"司机端-首页"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=城际,4=小件物流-同城,5=小件物流-跨城)", name = "orderType", required = true, dataType = "int"), @ApiImplicitParam(value = "当前位置经度", name = "lon", required = true, dataType = "string"), @ApiImplicitParam(value = "当前位置纬度", name = "lat", required = true, dataType = "string"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil queryVoiceBroadcast(Integer orderId, Integer orderType, String lon, String lat){ try { String s = orderService.queryVoiceBroadcast(orderId, orderType, lon, lat); return ResultUtil.success(s); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 手动确认订单完成 * @param orderId * @param orderType * @return */ @ResponseBody @PostMapping("/api/order/completeOrder") @ApiOperation(value = "手动确认订单完成", tags = {"司机端-服务中"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,4=同城小件物流)", name = "orderType", required = true, dataType = "int"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil completeOrder(Integer orderId, Integer orderType, Integer language){ try { return orderService.completeOrder(orderId, orderType, language); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/order/queryMoneyInfo") @ApiOperation(value = "获取订单费用明细【2.0】", tags = {"司机端-服务中"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), @ApiImplicitParam(value = "订单类型(1=专车,4=同城小件物流)", name = "orderType", required = true, dataType = "int"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil queryMoneyInfo(Integer orderId, Integer orderType){ try { Map map = orderService.queryMoneyInfo(orderId, orderType); return ResultUtil.success(MoneyInfoWarpper.getMoneyInfoWarpper(map)); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/order/fillInPickUpCode") @ApiOperation(value = "验证小件物流取件码", tags = {"司机端-服务中"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), @ApiImplicitParam(value = "取件码", name = "pickUpCode", required = true, dataType = "string"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil fillInPickUpCode(Integer orderId, String pickUpCode, Integer language){ try { return orderLogisticsService.fillInPickUpCode(orderId, pickUpCode, language); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/order/makeUpTheDifference") @ApiOperation(value = "设置小件物流差价", tags = {"司机端-服务中"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), @ApiImplicitParam(value = "差价金额", name = "difference", required = true, dataType = "double"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil makeUpTheDifference(Integer orderId, Double difference, Integer language){ try { return orderLogisticsService.makeUpTheDifference(orderId, difference, language); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/order/sendVerificationCode") @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 sendVerificationCode(Integer orderId, Integer language){ try { orderLogisticsService.sendVerificationCode(orderId, language); return ResultUtil.success(); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/order/payOrder") @ApiOperation(value = "司机订单代付(现金收款)", tags = {"司机端-服务中"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), @ApiImplicitParam(value = "订单类型", name = "orderType", required = true, dataType = "int"), @ApiImplicitParam(value = "支付方式(1=手机支付,2=银行卡支付,3=余额)", name = "payType", required = true, dataType = "int"), @ApiImplicitParam(value = "银行卡id", name = "bankCardId", required = false, dataType = "int"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil payOrder(Integer orderId, Integer orderType, Integer payType, Integer bankCardId, Integer language, HttpServletRequest request){ try { Integer uid = driverService.getUserIdFormRedis(request); if(null == uid){ return ResultUtil.tokenErr(); } return orderService.payOrder(uid, orderId, orderType, payType, bankCardId, language); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 完成订单微信支付回调 * @param */ @ResponseBody @PostMapping("/base/wxPayOrderTaxi") public CallbackResponse wxPayOrderTaxi(@RequestBody CallbackRequest callbackRequest){ CallbackResponse callbackResponse = new CallbackResponse(); try { /** * 指示服务是否成功或付费的总体请求代码。。 * 177-部分付费请求 * 178-表明请求已全额支付 * 179-表示请求已部分支付但已过期。 * 129-请求已过期,未付款。 * 180.商户拒绝请求 * 183-商户接受请求,我们可以结算资金 * 188-商户收到请求。 */ String request_status_code = callbackRequest.getRequest_status_code(); String out_trade_no = callbackRequest.getMerchant_transaction_id(); if("177".equals(request_status_code) || "178".equals(request_status_code)){ Payments payments = callbackRequest.getPayments().get(0); String order_id = payments.getPayer_transaction_id(); if(ToolUtil.isNotEmpty(out_trade_no)){ Integer orderType = Integer.valueOf(out_trade_no.substring(17, 18)); Integer language = Integer.valueOf(out_trade_no.substring(18, 19)); Integer id = Integer.valueOf(out_trade_no.substring(19)); switch (orderType){ case 1: orderPrivateCarService.payOrderPrivateCarCallback(id, order_id, language); break; case 4: orderLogisticsService.payOrderLogisticsCallback(id, order_id, language); break; } callbackResponse.setCheckout_request_id(order_id); callbackResponse.setMerchant_transaction_id(out_trade_no); callbackResponse.setStatus_code("183"); callbackResponse.setStatus_description("Payment processed successfully"); callbackResponse.setReceipt_number(UUIDUtil.getRandomCode(16)); } }else{ callbackResponse.setCheckout_request_id(UUIDUtil.getRandomCode(16)); callbackResponse.setMerchant_transaction_id(out_trade_no); callbackResponse.setStatus_code("180"); callbackResponse.setStatus_description("means payment rejected."); callbackResponse.setReceipt_number(UUIDUtil.getRandomCode(16)); } }catch (Exception e){ e.printStackTrace(); } return callbackResponse; } @ResponseBody @PostMapping("/api/taxi/updateEndAddress") @ApiOperation(value = "处理乘客修改目的地【2.0】", tags = {"用户端-专车", "用户端-小件物流"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), @ApiImplicitParam(value = "订单类型", name = "orderType", required = true, dataType = "int"), @ApiImplicitParam(value = "状态(2=同意,3=拒绝)", name = "status", required = true, dataType = "int"), @ApiImplicitParam(value = "语言", name = "language", required = true, dataType = "int"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil updateEndAddress(Integer orderId, Integer orderType, Integer status){ switch (orderType){ case 1: orderPrivateCarService.updateEndAddress(orderId, status); break; case 4: orderLogisticsService.updateEndAddress(orderId, status); break; } return ResultUtil.success(); } }