| | |
| | | import com.stylefeng.guns.modular.system.model.*; |
| | | import com.stylefeng.guns.modular.system.service.*; |
| | | import com.stylefeng.guns.modular.system.util.*; |
| | | import com.stylefeng.guns.modular.system.util.qianyuntong.OrderUtil; |
| | | import com.stylefeng.guns.modular.system.util.qianyuntong.model.OrderRefundNoticeRequest; |
| | | import com.stylefeng.guns.modular.system.util.qianyuntong.model.RefundInfoRequest; |
| | | import com.stylefeng.guns.modular.system.util.qianyuntong.model.TradeOrderRefund; |
| | | import com.stylefeng.guns.modular.system.util.qianyuntong.model.TradeOrderRefundRequest; |
| | | import com.stylefeng.guns.modular.system.warpper.BaseWarpper; |
| | | import com.stylefeng.guns.modular.system.warpper.OrderCrossCityWarpper; |
| | | import org.springframework.beans.BeanUtils; |
| | |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public ResultUtil cancelOrder(Integer orderId) throws Exception { |
| | | public ResultUtil cancelOrder(Integer orderId, Integer uid) throws Exception { |
| | | OrderCrossCity orderCrossCity = this.selectById(orderId); |
| | | if(orderCrossCity.getState() == 10 || orderCrossCity.getState() == 12){ |
| | | return ResultUtil.error("不允许重复取消"); |
| | |
| | | driver.setState(2); |
| | | driverService.updateById(driver); |
| | | } |
| | | |
| | | //未支付,调取消订单 |
| | | if(null == orderCrossCity.getPayType() && ToolUtil.isNotEmpty(orderCrossCity.getTravelId())){ |
| | | OrderUtil.tradeOrderCancel(orderCrossCity.getTravelId()); |
| | | } |
| | | //已支付的情况下进行退款操作 |
| | | if(null != orderCrossCity.getPayType() && null != orderCrossCity.getPayMoney()){ |
| | | if(orderCrossCity.getPayType() == 3){//余额支付 |
| | |
| | | } |
| | | |
| | | if(query.getPayType() == 1){//微信 |
| | | Map<String, String> map = payMoneyUtil.wxRefund(query.getCode(), orderId + "_3", query.getAmount().toString(), query.getAmount().toString(), "/base/cancleOrderWXPay"); |
| | | if(!"SUCCESS".equals(map.get("return_code"))){ |
| | | return ResultUtil.error(map.get("return_msg")); |
| | | //中台订单退款操作 |
| | | if(ToolUtil.isNotEmpty(orderCrossCity.getTravelId())){ |
| | | Dispatch dispatch = dispatchService.selectById(uid); |
| | | TradeOrderRefundRequest request = new TradeOrderRefundRequest(); |
| | | request.setPartnerPayId(orderCrossCity.getTravelId()); |
| | | request.setPayId(query.getCode()); |
| | | request.setRefundTotalFee(Double.valueOf(orderCrossCity.getPayMoney() * 100).intValue() + ""); |
| | | request.setRemark("调度取消订单退款"); |
| | | request.setRefundType("RF"); |
| | | |
| | | RefundInfoRequest refundInfo = new RefundInfoRequest(); |
| | | refundInfo.setPayItemId(orderCrossCity.getTravelId()); |
| | | refundInfo.setPayId(query.getCode()); |
| | | refundInfo.setTradeFee(Double.valueOf(orderCrossCity.getPayMoney() * 100).intValue() + ""); |
| | | request.setRefundInfos(new ArrayList<RefundInfoRequest>(){{ |
| | | add(refundInfo); |
| | | }}); |
| | | TradeOrderRefund tradeOrderRefund = OrderUtil.tradeOrderRefund(request); |
| | | //退款通知 |
| | | OrderRefundNoticeRequest request1 = new OrderRefundNoticeRequest(); |
| | | request1.setOrderId(orderCrossCity.getTravelId()); |
| | | request1.setRefundPayNum(tradeOrderRefund.getRefundId()); |
| | | request1.setRefundType("5"); |
| | | request1.setApplyRefundCharge(new BigDecimal(orderCrossCity.getPayMoney())); |
| | | request1.setActualRefundCharge(new BigDecimal(orderCrossCity.getPayMoney())); |
| | | request1.setRefundAccount(dispatch.getEnterId().toString()); |
| | | request1.setRemark("调度取消订单退款"); |
| | | OrderUtil.orderRefundNotice(request1); |
| | | //添加交易明细 |
| | | transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城出行取消退款", query.getAmount(), 1, 1, 1, 3, orderId); |
| | | } |
| | | }else{//支付宝 |
| | | Map<String, String> map = payMoneyUtil.aliRefund(query.getCode(), query.getAmount().toString()); |
| | |
| | | //添加交易明细 |
| | | transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城出行取消退款", query.getAmount(), 1, 1, 1, 3, orderId); |
| | | } |
| | | } |
| | | |
| | | //添加负的收入明细 |
| | | List<Income> incomes = incomeService.selectList(new EntityWrapper<Income>().eq("type", 2).eq("incomeId", orderId).eq("orderType", 3)); |
| | | for(Income income : incomes){ |
| | | if(income.getUserType() == 2){//处理司机的收入 |
| | | Driver driver = driverService.selectById(income.getObjectId()); |
| | | driver.setBalance(driver.getBalance() - income.getMoney()); |
| | | driver.setBusinessMoney(driver.getBusinessMoney() - income.getMoney()); |
| | | driver.setLaveBusinessMoney(driver.getLaveBusinessMoney() - income.getMoney()); |
| | | driverService.updateById(driver); |
| | | } |
| | | Income income1 = new Income(); |
| | | BeanUtils.copyProperties(income, income1); |
| | | income1.setMoney(income.getMoney() * -1); |
| | | income1.setId(null); |
| | | income1.setInsertTime(new Date()); |
| | | incomeService.insert(income1); |
| | | } |
| | | } |
| | | } |
| | |
| | | orderCrossCity.setIsDelete(1); |
| | | orderCrossCity.setIsReassign(1); |
| | | //调用高德创建轨迹 |
| | | String s = gdFalconUtil.selectTerminal(driver.getPhone()); |
| | | String track = gdFalconUtil.createTrack(s); |
| | | orderCrossCity.setTrackId(track); |
| | | // String s = gdFalconUtil.selectTerminal(driver.getPhone()); |
| | | // String track = gdFalconUtil.createTrack(s); |
| | | // orderCrossCity.setTrackId(track); |
| | | |
| | | //调用移动的小号接口 |
| | | Map<String, String> geocode = gdMapGeocodingUtil.geocode(orderCrossCity.getStartLon().toString(), orderCrossCity.getStartLat().toString()); |
| | | Region region = regionMapper.query(geocode.get("districtCode")); |
| | | Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderCrossCity.getPassengersPhone(), driver.getPhone(), (System.currentTimeMillis() + 86400000)); |
| | | if(String.valueOf(map.get("code")).equals("200")){ |
| | | orderCrossCity.setTelX(map.get("telX")); |
| | | orderCrossCity.setBindId(map.get("bindId")); |
| | | } |
| | | // Map<String, String> geocode = gdMapGeocodingUtil.geocode(orderCrossCity.getStartLon().toString(), orderCrossCity.getStartLat().toString()); |
| | | // Region region = regionMapper.query(geocode.get("districtCode")); |
| | | // Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderCrossCity.getPassengersPhone(), driver.getPhone(), (System.currentTimeMillis() + 86400000)); |
| | | // if(String.valueOf(map.get("code")).equals("200")){ |
| | | // orderCrossCity.setTelX(map.get("telX")); |
| | | // orderCrossCity.setBindId(map.get("bindId")); |
| | | // } |
| | | if(orderCrossCityWarpper.getTravelMode() == 2){//包车 |
| | | orderCrossCity.setSeatNumber(lineShiftDriver.getLaveSeatNumber()); |
| | | orderCrossCity.setPeopleNumber(lineShiftDriver.getLaveSeat()); |
| | |
| | | Timer timer = new Timer(); |
| | | timer.schedule(timerTask, 30 * 60 * 1000); |
| | | |
| | | return payMoneyUtil.weixinpay("完成订单", "", orderCrossCity.getId() + "_3_" + UUIDUtil.getRandomCode(5), orderCrossCity.getOrderMoney().toString(), "/base/wxPayOrderTaxi", "NATIVE", userInfo.getAppletsOpenId()); |
| | | // return payMoneyUtil.weixinpay("完成订单", "", orderCrossCity.getId() + "_3_" + UUIDUtil.getRandomCode(5), orderCrossCity.getOrderMoney().toString(), "/base/wxPayOrderTaxi", "NATIVE", userInfo.getAppletsOpenId()); |
| | | return ResultUtil.success(); |
| | | } |
| | | |
| | | |