From 37ba49430c8c6896020d8d1e8552022d786f31a0 Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期四, 26 六月 2025 20:05:06 +0800 Subject: [PATCH] 管理后台二期 --- ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TReassignController.java | 198 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 195 insertions(+), 3 deletions(-) diff --git a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TReassignController.java b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TReassignController.java index 909743e..6c44fd3 100644 --- a/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TReassignController.java +++ b/ManagementOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TReassignController.java @@ -11,9 +11,7 @@ import com.stylefeng.guns.modular.system.dao.OrderCancelMapper; import com.stylefeng.guns.modular.system.model.*; import com.stylefeng.guns.modular.system.service.*; -import com.stylefeng.guns.modular.system.util.HttpRequestUtil; -import com.stylefeng.guns.modular.system.util.PushURL; -import com.stylefeng.guns.modular.system.util.ResultUtil; +import com.stylefeng.guns.modular.system.util.*; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @@ -26,6 +24,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.*; /** @@ -356,8 +355,201 @@ @Autowired private ITPubTransactionDetailsService itPubTransactionDetailsService; + @Autowired + private PayMoneyUtil payMoneyUtil; + /** + * 操作跨城改派管理 + * optType 1=拒绝 2=取消 + */ + @RequestMapping(value = "/optCross") + @ResponseBody + public Object optCross(@RequestParam Integer tReassignId,@RequestParam Integer optType) { + try { + TReassign tReassign = tReassignService.selectById(tReassignId); + if(tReassign.getState() == 3){//已改派 + return "不能重复操作"; + } + if(tReassign.getState() == 4){//已改派 + return "不能重复操作"; + } + if(tReassign.getState() == 5){//已改派 + return "不能重复操作"; + } + Integer state = tReassign.getState(); + ShiroUser user = ShiroKit.getUser(); + if (1 == optType){ + tReassign.setState(5); + tReassign.setReviewer(user.getId()); + tReassign.setReviewerType(2); + tReassignService.updateById(tReassign); + TOrderCrossCity orderCrossCity = itOrderCrossCityService.selectById(tReassign.getOrderId()); + orderCrossCity.setState(orderCrossCity.getOldState()); + itOrderCrossCityService.updateById(orderCrossCity); + }else if (2 == optType){ + tReassign.setState(4); + tReassign.setReviewer(user.getId()); + tReassign.setReviewerType(2); + tReassignService.updateById(tReassign); + + TOrderCrossCity orderCrossCity = itOrderCrossCityService.selectById(tReassign.getOrderId()); + if(orderCrossCity.getState() > 5 && orderCrossCity.getState() != 11){ + return ResultUtil.error("订单状态不在可取消范围内"); + } + orderCrossCity.setState(10); + itOrderCrossCityService.updateById(orderCrossCity); + + //修改司机信息 + LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(orderCrossCity.getLineShiftDriverId()); + lineShiftDriver.setLaveSeat(lineShiftDriver.getLaveSeat() + orderCrossCity.getPeopleNumber() > lineShiftDriver.getTotalSeat() ? + lineShiftDriver.getTotalSeat() : lineShiftDriver.getLaveSeat() + orderCrossCity.getPeopleNumber()); + String seat = ""; + String[] split = orderCrossCity.getSeatNumber().split(","); + for(String s : split){ + seat += s + ","; + } + seat = lineShiftDriver.getLaveSeatNumber() + "," + seat.substring(0, seat.length() - 1); + + //总和大于总座位数的情况 + if(lineShiftDriver.getLaveSeat() + orderCrossCity.getPeopleNumber() > lineShiftDriver.getTotalSeat()){ + seat = ""; + for(int i = 1; i <= lineShiftDriver.getTotalSeat(); i++){ + seat += i + ","; + } + seat = seat.substring(0, seat.length() - 1); + } + lineShiftDriver.setLaveSeatNumber(seat); + lineShiftDriverMapper.updateById(lineShiftDriver); + if(lineShiftDriver.getLaveSeat() >= lineShiftDriver.getTotalSeat()){ + TDriver driver = itDriverService.selectById(tReassign.getOriginalDriverId()); + driver.setState(2); + itDriverService.updateById(driver); + } + + //调用推送 + Map<String,String> map = new HashMap<>(); + map.put("id", orderCrossCity.getId().toString()); + map.put("orderType", "3"); + String result = HttpRequestUtil.postRequest(PushURL.cancel_order_url, map); + System.out.println("跨城取消:【orderId="+orderCrossCity.getId().toString()+"】,调用接口:"+result); + //已支付的情况下进行退款操作 + if(null != orderCrossCity.getPayType() && null != orderCrossCity.getPayMoney()){ + if(orderCrossCity.getPayType() == 3){//余额支付 + TUser tUser = userService.selectById(orderCrossCity.getUserId()); + tUser.setBalance(tUser.getBalance().add(orderCrossCity.getPayMoney())); + userService.updateById(tUser); + //添加交易明细 + transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城改派取消退款", orderCrossCity.getPayMoney().doubleValue(), 1, 1, 1, 3, tReassign.getOrderId()); + }else{ + PaymentRecord query = paymentRecordService.query(1, null, null, tReassign.getOrderId(), 3, null, 2).get(0); + if(null == query){ + return ResultUtil.error("订单还未进行支付"); + } + + if(query.getPayType() == 1){//微信 + Map<String, String> map1 = payMoneyUtil.wxRefund(query.getCode(), orderCrossCity.getId() + "_3_" + UUIDUtil.getRandomCode(3), query.getAmount().toString(), query.getAmount().toString(), "/user/base/cancleOrderWXPay"); + if(!"SUCCESS".equals(map1.get("return_code"))){ + return ResultUtil.error(map1.get("return_msg")); + } + //添加交易明细 + transactionDetailsService.saveData(query.getUserId(), "跨城改派取消退款", query.getAmount(), 1, 1, query.getType(), 3, orderCrossCity.getId()); + }else{//支付宝 +// Map<String, String> map1 = payMoneyUtil.aliRefund(query.getCode(), query.getAmount().toString()); +// if(!"10000".equals(map1.get("code"))){ +// return ResultUtil.error(map1.get("msg")); +// } +// //添加交易明细 +// transactionDetailsService.saveData(query.getUserId(), "跨城改派取消退款", query.getAmount(), 1, 1, query.getType(), 3, orderCrossCity.getId()); + } + } + + //添加负的收入明细 + List<Income> incomes = incomeService.selectList(new EntityWrapper<Income>().eq("type", 2).eq("incomeId", tReassign.getOrderId()).eq("orderType", 3)); + for(Income income : incomes){ + if(income.getUserType() == 2){//处理司机的收入 + TDriver driver = itDriverService.selectById(income.getObjectId()); + driver.setBalance(driver.getBalance().subtract(new BigDecimal(income.getMoney()))); + driver.setLaveBusinessMoney(new BigDecimal(driver.getLaveBusinessMoney()).subtract(new BigDecimal(income.getMoney())).doubleValue()); + itDriverService.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); + } + } + + //添加取消记录 + OrderCancel orderCancel = new OrderCancel(); + orderCancel.setOrderId(tReassign.getOrderId()); + orderCancel.setOrderType(tReassign.getOrderType()); + orderCancel.setReason("调度端取消订单"); + orderCancel.setRemark("调度“" + user.getName() + "-" + user.getId() + "”执行取消操作"); + orderCancel.setState(2); + orderCancel.setInsertTime(new Date()); + orderCancel.setUserType(3); + orderCancel.setUserId(user.getId()); + orderCancelMapper.insert(orderCancel); + } + + if(state == 2){//退款操作 + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + String out_refund_no = sdf.format(new Date()) + "_" + tReassign.getId(); + Double money = tReassign.getMoney(); + if(tReassign.getPayType() == 1){//微信 + Map<String, String> map = payMoneyUtil.wxRefund(tReassign.getPayOrder(), out_refund_no, money.toString(), money.toString(), "/dispatch/base/order/reassignRefundCallback"); + if(null == map || !"SUCCESS".equals(map.get("return_code"))){ + System.err.println(map.get("return_msg")); + return ResultUtil.error(map.get("return_msg")); + } + tReassign.setReviewer(ShiroKit.getUser().getId()); + tReassign.setReviewerType(2); + tReassignService.updateById(tReassign); + //添加交易明细 + transactionDetailsService.saveData(tReassign.getOriginalDriverId(), "跨城改派拒绝退款", money, 1, 1, 2, 3, tReassign.getOrderId()); + } + if(tReassign.getPayType() == 2){//支付宝 +// Map<String, String> map = payMoneyUtil.aliRefund(tReassign.getPayOrder(), money.toString()); +// if(null != map && "10000".equals(map.get("code"))){ +// tReassign.setReviewer(ShiroKit.getUser().getId()); +// tReassign.setReviewerType(2); +// tReassignService.updateById(tReassign); +// //添加交易明细 +// transactionDetailsService.saveData(tReassign.getOriginalDriverId(), "跨城改派拒绝退款", money, 1, 1, 2, 3, tReassign.getOrderId()); +// } +// if(null == map || !"10000".equals(map.get("code"))){ +// System.err.println(map.get("msg")); +// return ResultUtil.error(map.get("msg")); +// } + } + if(tReassign.getPayType() == 3){//余额 + TDriver tDriver = itDriverService.selectById(tReassign.getOriginalDriverId()); + tDriver.setBalance(tDriver.getBalance().add(new BigDecimal(money))); + itDriverService.updateById(tDriver); + } + } + + + //增加交易明细 + TPubTransactionDetails details = new TPubTransactionDetails(); + details.setUserId(tReassign.getOriginalDriverId()); + details.setInsertTime(new Date()); + details.setRemark("【跨城改派】:改派失败或订单取消"); + details.setMoney(new BigDecimal(tReassign.getMoney())); + details.setState(1); + details.setType(1); + details.setUserType(2); + details.setOrderType(3); + details.setOrderId(tReassign.getOrderId()); + itPubTransactionDetailsService.insert(details); + }catch (Exception e){ + e.printStackTrace(); + } + return SUCCESS_TIP; + } -- Gitblit v1.7.1