From 8b09fbc19a96b57bf1d0e4d7c79b51a76aeca554 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期五, 28 三月 2025 19:57:56 +0800 Subject: [PATCH] 修改bug --- DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java | 526 ++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 470 insertions(+), 56 deletions(-) diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java index e670dbc..54f88d7 100644 --- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java +++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java @@ -3,16 +3,24 @@ 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.MD5Util; +import com.stylefeng.guns.core.util.ToolUtil; +import com.stylefeng.guns.modular.smallLogistics.model.OrderLogistics; +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.model.OrderPrivateCar; +import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService; +import com.stylefeng.guns.modular.system.model.Car; 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.ChinaMobileUtil; -import com.stylefeng.guns.modular.system.util.PushUtil; -import com.stylefeng.guns.modular.system.util.ResultUtil; -import com.stylefeng.guns.modular.system.util.SystemException; +import com.stylefeng.guns.modular.system.service.*; +import com.stylefeng.guns.modular.system.util.*; +import com.stylefeng.guns.modular.system.util.GoogleMap.FleetEngineUtil; +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; @@ -22,19 +30,17 @@ 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.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import javax.validation.Valid; +import javax.validation.constraints.NotNull; 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; +import java.util.*; /** * 订单相关控制器 @@ -61,8 +67,23 @@ @Autowired private IOrderLogisticsService orderLogisticsService; + @Autowired + private IOrderPrivateCarService orderPrivateCarService; + @Value("${filePath}") private String filePath; + + @Resource + private FleetEngineUtil fleetEngineUtil; + + @Autowired + private IOrderPositionService orderPositionService; + + @Autowired + private RedisUtil redisUtil; + + @Autowired + private ICarService carService; @@ -86,13 +107,13 @@ @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<List<OrderListWarpper>> queryOrderList(Integer state, Integer pageNum, Integer size, HttpServletRequest request){ + public ResultUtil<List<OrderListWarpper>> queryOrderList(Integer state, Integer pageNum, Integer size, Integer language, HttpServletRequest request){ try { Integer uid = driverService.getUserIdFormRedis(request); if(null == uid){ return ResultUtil.tokenErr(); } - List<Map<String, Object>> list = orderService.queryOrderList(state, pageNum, size, uid); + List<Map<String, Object>> list = orderService.queryOrderList(state, pageNum, size, uid, language); return ResultUtil.success(OrderListWarpper.getOrderListWarpper(list)); }catch (Exception e){ e.printStackTrace(); @@ -119,13 +140,13 @@ @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<List<OrderListWarpper>> queryOrderList1(Integer state, Integer type, Integer pageNum, Integer size, HttpServletRequest request){ + public ResultUtil<List<OrderListWarpper>> 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<Map<String, Object>> list = orderService.queryOrderList1(state, type, pageNum, size, uid); + List<Map<String, Object>> list = orderService.queryOrderList1(state, type, pageNum, size, uid, language); return ResultUtil.success(OrderListWarpper.getOrderListWarpper(list)); }catch (Exception e){ e.printStackTrace(); @@ -147,20 +168,20 @@ */ @ResponseBody @PostMapping("/api/order/queryMyAllOrder") - @ApiOperation(value = "获取我的订单列表", tags = {"司机端-首页"}, notes = "") + @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<List<OrderListWarpper>> queryMyAllOrder(Integer state, Integer pageNum, Integer size, HttpServletRequest request){ + public ResultUtil<List<OrderListWarpper>> queryMyAllOrder(Integer state, Integer pageNum, Integer size, Integer language, HttpServletRequest request){ try { Integer uid = driverService.getUserIdFormRedis(request); if(null == uid){ return ResultUtil.tokenErr(); } - List<OrderListWarpper> listWarppers = orderService.queryMyAllOrder(state, pageNum, size, uid); + List<OrderListWarpper> listWarppers = orderService.queryMyAllOrder(state, pageNum, size, uid, language); return ResultUtil.success(listWarppers); }catch (Exception e){ e.printStackTrace(); @@ -187,9 +208,9 @@ @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<OrderInfoWarpper> queryPushOrder(Integer orderId, Integer orderType, String lon, String lat){ + public ResultUtil<OrderInfoWarpper> queryPushOrder(Integer orderId, Integer orderType, String lon, String lat, Integer language){ try { - Map<String, Object> map = orderService.queryPushOrder(orderId, orderType, lon, lat); + Map<String, Object> map = orderService.queryPushOrder(orderId, orderType, lon, lat, language); OrderInfoWarpper orderInfoWarpper = OrderInfoWarpper.getOrderInfoWarpper(map); orderInfoWarpper.setOrderPositionList(""); return ResultUtil.success(orderInfoWarpper); @@ -215,19 +236,22 @@ @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, HttpServletRequest request){ + 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); + return orderService.grabOrder(orderId, orderType, uid, language); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } + + @Autowired + private OrderLogisticsSpreadService spreadService; /** * 获取服务中页面订单详情 * @param orderId @@ -236,15 +260,15 @@ */ @ResponseBody @PostMapping("/api/order/queryOrderInfo") - @ApiOperation(value = "获取服务中页面订单详情", tags = {"司机端-服务中"}, notes = "") + @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<OrderInfoWarpper> queryOrderInfo(Integer orderId, Integer orderType){ + public ResultUtil<OrderInfoWarpper> queryOrderInfo(Integer language, Integer orderId, Integer orderType){ try { - Map<String, Object> map = orderService.queryOrderInfo(orderId, orderType); + Map<String, Object> map = orderService.queryOrderInfo(language, orderId, orderType); OrderInfoWarpper orderInfoWarpper = OrderInfoWarpper.getOrderInfoWarpper(map); File file = new File(filePath + orderId + "_" + orderType + ".txt"); if(file.exists()){ @@ -261,6 +285,22 @@ }else{ orderInfoWarpper.setOrderPositionList(""); } + + List<OrderLogisticsSpread> orderLogisticsId = spreadService.selectList(new EntityWrapper<OrderLogisticsSpread>().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(); @@ -317,13 +357,13 @@ @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, HttpServletRequest request){ + 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); + return reassignService.saveData(reassign, uid, null, language); }catch (SystemException s){ return ResultUtil.error(s.getMsg()); } catch (Exception e){ @@ -355,13 +395,20 @@ @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, HttpServletRequest request){ + 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); + String format = String.format("uid=%s&orderId=%s&orderType=%s&state=%s", uid, orderId, orderType, state); + String key = MD5Util.encrypt(format); + String value = redisUtil.getValue(key); + if(ToolUtil.isNotEmpty(value) && (System.currentTimeMillis() - Long.valueOf(value)) <= 1000){ + return ResultUtil.error(language == 1 ? "请勿重复操作" : language == 2 ? "Don't repeat the operation" : "Ne répétez pas l’opération"); + } + redisUtil.setStrValue(key, System.currentTimeMillis() + "", 5); + return orderService.process(orderId, orderType, state, uid, lon, lat, phone, pickUpCode, language); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); @@ -415,16 +462,20 @@ @ApiOperation(value = "司机确认费用", tags = {"司机端-服务中"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), - @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=城际)", name = "orderType", required = true, dataType = "int"), - @ApiImplicitParam(value = "支付方式(1=OK平台收款,2=其他方式收款)", name = "type", required = true, dataType = "int"), + @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=城际,4=同城小件物流)", name = "orderType", 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 orderId, Integer orderType, Integer type, Double travelFee, Double parkingFee, Double crossingFee){ + public ResultUtil confirmFees(Integer language, Integer orderId, Integer orderType, Integer type, + Double travelFee, Double parkingFee, Double crossingFee, HttpServletRequest request){ try{ - return orderService.confirmFees(orderId, orderType, type, travelFee, parkingFee, crossingFee); + Integer uid = driverService.getUserIdFormRedis(request); + if(null == uid){ + return ResultUtil.tokenErr(); + } + return orderService.confirmFees(language, orderId, orderType, type, travelFee, parkingFee, crossingFee, uid); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); @@ -479,9 +530,9 @@ @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<OrderInfoWarpper> queryToBePaidPage(Integer orderId, Integer orderType){ + public ResultUtil<OrderInfoWarpper> queryToBePaidPage(Integer language, Integer orderId, Integer orderType){ try { - Map<String, Object> map = orderService.queryToBePaidPage(orderId, orderType); + Map<String, Object> map = orderService.queryToBePaidPage(language, orderId, orderType); return ResultUtil.success(OrderInfoWarpper.getOrderInfoWarpper(map)); }catch (Exception e){ e.printStackTrace(); @@ -498,17 +549,17 @@ */ @ResponseBody @PostMapping("/base/order/pushOrderState") - public String pushOrderState(Integer orderId, Integer orderType){ + public String pushOrderState(Integer language, Integer orderId, Integer orderType){ try { - Map<String, Object> map = orderService.queryOrderInfo(orderId, orderType); + Map<String, Object> 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("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.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")))); + Integer.valueOf(String.valueOf(map.get("orderState"))), 0, ""); return JSON.toJSONString(ResultUtil.success()); }catch (Exception e){ e.printStackTrace(); @@ -529,9 +580,9 @@ @ApiImplicitParam(value = "改派原因", name = "reason", required = true, dataType = "string"), @ApiImplicitParam(value = "备注", name = "remark", required = false, dataType = "string"), }) - public String reassign_(Reassign reassign, Integer uid){ + public String reassign_(Reassign reassign, Integer uid, Integer language){ try { - ResultUtil resultUtil = reassignService.saveData(reassign, uid, 3); + ResultUtil resultUtil = reassignService.saveData(reassign, uid, 3, language); return JSON.toJSONString(resultUtil); }catch (SystemException s){ return JSON.toJSONString(ResultUtil.error(s.getMsg())); @@ -632,12 +683,12 @@ @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(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){ + public ResultUtil completeOrder(Integer orderId, Integer orderType, Integer language){ try { - return orderService.completeOrder(orderId, orderType); + return orderService.completeOrder(orderId, orderType, language); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); @@ -648,10 +699,10 @@ @ResponseBody @PostMapping("/api/order/queryMoneyInfo") - @ApiOperation(value = "获取订单费用明细", tags = {"司机端-服务中"}, notes = "") + @ApiOperation(value = "获取订单费用明细【2.0】", tags = {"司机端-服务中"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), - @ApiImplicitParam(value = "订单类型(1=专车)", name = "orderType", 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<MoneyInfoWarpper> queryMoneyInfo(Integer orderId, Integer orderType){ @@ -664,6 +715,7 @@ } } + @ResponseBody @PostMapping("/api/order/fillInPickUpCode") @ApiOperation(value = "验证小件物流取件码", tags = {"司机端-服务中"}, notes = "") @@ -672,9 +724,9 @@ @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){ + public ResultUtil fillInPickUpCode(Integer orderId, String pickUpCode, Integer language){ try { - return orderLogisticsService.fillInPickUpCode(orderId, pickUpCode); + return orderLogisticsService.fillInPickUpCode(orderId, pickUpCode, language); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); @@ -689,9 +741,9 @@ @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){ + public ResultUtil makeUpTheDifference(Integer orderId, Double difference, Integer language){ try { - return orderLogisticsService.makeUpTheDifference(orderId, difference); + return orderLogisticsService.makeUpTheDifference(orderId, difference, language); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); @@ -705,13 +757,375 @@ @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){ + public ResultUtil sendVerificationCode(Integer orderId, Integer language){ try { - orderLogisticsService.sendVerificationCode(orderId); + 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){ + if(null == orderId){ + return ResultUtil.error("订单id不能为空"); + } + if(null == orderType){ + return ResultUtil.error("订单类型不能为空"); + } + if(null == status){ + return ResultUtil.error("状态不能为空"); + } + switch (orderType){ + case 1: + orderPrivateCarService.updateEndAddress(orderId, status); + break; + case 4: + orderLogisticsService.updateEndAddress(orderId, status); + break; + } + return ResultUtil.success(); + } + + + + @ResponseBody + @PostMapping("/api/taxi/getTripInfo") + @ApiOperation(value = "获取google行程详情【2.0】", tags = {"用户端-专车", "用户端-小件物流"}, notes = "") + @ApiImplicitParams({ + @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"), + @ApiImplicitParam(value = "订单类型", name = "orderType", required = true, dataType = "int"), + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResultUtil<String> getTripInfo(Integer orderId, Integer orderType){ + try { + String tripId = null; + switch (orderType){ + case 1: + OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderId); + tripId = orderPrivateCar.getTripId(); + break; + case 4: + OrderLogistics orderLogistics = orderLogisticsService.selectById(orderId); + tripId = orderLogistics.getTripId(); + break; + } + String trip = fleetEngineUtil.getTrip(tripId); + return ResultUtil.success(trip); + }catch (Exception e){ + e.printStackTrace(); + return ResultUtil.runErr(); + } + } + + + @ResponseBody + @PostMapping("/base/taxi/getTripInfo") + public ResultUtil getTripInfo(String tripId){ + return ResultUtil.success(fleetEngineUtil.getTrip(tripId)); + } + + + + /** + * 更新google订单状态 + * @param tripStatus + * @param tripId + * @return + */ + @ResponseBody + @PostMapping("/base/taxi/editTripStatus") + public ResultUtil editTripStatus(String tripStatus, String tripId){ + boolean b = fleetEngineUtil.updateTrip(tripStatus, null, null, tripId, null, null, null, null); + if(b){ + return ResultUtil.success(); + } + return ResultUtil.error("更新失败"); + } + + + /** + * 上传订单经纬度 + * @param orderPosition + * @return + */ + @ResponseBody + @PostMapping("/api/order/saveOrderPosition") + public ResultUtil saveOrderPosition(OrderPosition orderPosition, HttpServletRequest request){ + try { + Integer uid = driverService.getUserIdFormRedis(request); + if(null == uid){ + return ResultUtil.tokenErr(); + } + if(null != orderPosition.getOrderId()){ + orderPosition.setDriverId(uid); + orderPosition.setInsertTime(new Date()); + orderPositionService.saveData(orderPosition); + } + redisUtil.setStrValue("DRIVER" + uid, orderPosition.getLon() + "," + orderPosition.getLat(), 300);//实时位置存入redis中 + return ResultUtil.success(); + }catch (Exception e){ + e.printStackTrace(); + return ResultUtil.runErr(); + } + } + + + + @ResponseBody + @PostMapping("/base/taxi/editGoogleTripStatus") + public ResultUtil editGoogleTripStatus(){ + List<OrderPrivateCar> privateCars = orderPrivateCarService.selectList(new EntityWrapper<OrderPrivateCar>().isNotNull("tripId")); + for (OrderPrivateCar privateCar : privateCars) { + Integer state = privateCar.getState(); + String tripId = privateCar.getTripId(); + String trip = fleetEngineUtil.getTrip(tripId); + if(ToolUtil.isNotEmpty(trip)){ + JSONObject jsonObject = JSON.parseObject(trip); + String tripStatus = jsonObject.getString("tripStatus"); + Car car = carService.selectById(privateCar.getCarId()); + if(Arrays.asList(10, 12).contains(state) && !"CANCELED".equals(tripStatus)){ + //修改行程信息 + boolean updateTrip = fleetEngineUtil.updateTrip("CANCELED", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null); + if(!updateTrip){ + for (int i = 0; i < 5; i++) { + updateTrip = fleetEngineUtil.updateTrip("CANCELED", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null); + if(updateTrip){ + privateCar.setIsover(1); + orderPrivateCarService.updateById(privateCar); + break; + } + try { + Thread.sleep(3000L); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + }else{ + privateCar.setIsover(1); + orderPrivateCarService.updateById(privateCar); + } + } + if(Arrays.asList(6, 7, 8, 9).contains(state) && !"COMPLETE".equals(tripStatus)){ + //修改行程信息 + boolean updateTrip = fleetEngineUtil.updateTrip("COMPLETE", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null); + if(!updateTrip){ + for (int i = 0; i < 5; i++) { + updateTrip = fleetEngineUtil.updateTrip("COMPLETE", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null); + if(updateTrip){ + privateCar.setIsover(1); + orderPrivateCarService.updateById(privateCar); + break; + } + try { + Thread.sleep(3000L); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + }else{ + privateCar.setIsover(1); + orderPrivateCarService.updateById(privateCar); + } + } + } + } + List<OrderLogistics> orderLogisticsList = orderLogisticsService.selectList(new EntityWrapper<OrderLogistics>().isNotNull("tripId")); + for (OrderLogistics orderLogistics : orderLogisticsList) { + Integer state = orderLogistics.getState(); + String tripId = orderLogistics.getTripId(); + String trip = fleetEngineUtil.getTrip(tripId); + if(ToolUtil.isNotEmpty(trip)){ + JSONObject jsonObject = JSON.parseObject(trip); + String tripStatus = jsonObject.getString("tripStatus"); + Car car = carService.selectById(orderLogistics.getCarId()); + if(Arrays.asList(10, 12).contains(state) && !"CANCELED".equals(tripStatus)){ + //修改行程信息 + boolean updateTrip = fleetEngineUtil.updateTrip("CANCELED", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null); + if(!updateTrip){ + for (int i = 0; i < 5; i++) { + updateTrip = fleetEngineUtil.updateTrip("CANCELED", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null); + if(updateTrip){ + orderLogistics.setIsover(1); + orderLogisticsService.updateById(orderLogistics); + break; + } + try { + Thread.sleep(3000L); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + }else{ + orderLogistics.setIsover(1); + orderLogisticsService.updateById(orderLogistics); + } + } + if(Arrays.asList(6, 7, 8, 9).contains(state) && !"COMPLETE".equals(tripStatus)){ + //修改行程信息 + boolean updateTrip = fleetEngineUtil.updateTrip("COMPLETE", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null); + if(!updateTrip){ + for (int i = 0; i < 5; i++) { + updateTrip = fleetEngineUtil.updateTrip("COMPLETE", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null); + if(updateTrip){ + orderLogistics.setIsover(1); + orderLogisticsService.updateById(orderLogistics); + break; + } + try { + Thread.sleep(3000L); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + }else{ + orderLogistics.setIsover(1); + orderLogisticsService.updateById(orderLogistics); + } + } + } + } + return ResultUtil.success(); + } + + + @ResponseBody + @PostMapping("/base/taxi/getTrips") + public String getTrips(String vehicleId, Integer pageSize, String pageToken){ + return fleetEngineUtil.getTrips(vehicleId, pageSize, pageToken); + } + + @ResponseBody + @GetMapping("/base/taxi/getTripsStatus") + public ResultUtil<List<Map<String, String>>> getTripsStatus(){ + String pageToken = null; + List<Map<String, String>> list = new ArrayList<>(); + while (true){ + String trips = fleetEngineUtil.getTrips(null, 50, pageToken); + if(ToolUtil.isEmpty(trips)){ + break; + } + JSONObject jsonObject = JSON.parseObject(trips); + JSONArray array = jsonObject.getJSONArray("trips"); + if(null == array){ + break; + } + for (int i = 0; i < array.size(); i++) { + JSONObject trip = array.getJSONObject(i); + String tripStatus = trip.getString("tripStatus"); + String name = trip.getString("name"); + Integer index = name.lastIndexOf("/") + 1; + String tripId = name.substring(index); + + Map<String, String> map = new HashMap<>(); + map.put(tripId, tripStatus); + list.add(map); + } + + pageToken = jsonObject.getString("nextPageToken"); + if(null == pageToken){ + break; + } + } + return ResultUtil.success(list); + } + + } -- Gitblit v1.7.1