From 1c40baaf9ca0183945b9881d11ceed5aeebc8290 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期四, 23 十月 2025 11:35:44 +0800
Subject: [PATCH] 修改bug
---
ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderCrossCityController.java | 390 ++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 324 insertions(+), 66 deletions(-)
diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderCrossCityController.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderCrossCityController.java
index c6bb2fa..1d23c14 100644
--- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderCrossCityController.java
+++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderCrossCityController.java
@@ -1,25 +1,25 @@
package com.stylefeng.guns.modular.system.controller.specialTrain;
-import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.stylefeng.guns.core.base.controller.BaseController;
import com.stylefeng.guns.core.beetl.ShiroExtUtil;
import com.stylefeng.guns.core.common.constant.factory.PageFactory;
import com.stylefeng.guns.core.shiro.ShiroUser;
+import com.stylefeng.guns.core.util.DateUtil;
import com.stylefeng.guns.core.util.SinataUtil;
import com.stylefeng.guns.core.util.ToolUtil;
-import com.stylefeng.guns.modular.system.controller.general.TDriverController;
-import com.stylefeng.guns.modular.system.controller.util.GetOpenBodySig;
import com.stylefeng.guns.modular.system.dao.LineShiftDriverMapper;
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.*;
import com.stylefeng.guns.modular.system.util.HttpRequestUtil;
import com.stylefeng.guns.modular.system.util.PayMoneyUtil;
import com.stylefeng.guns.modular.system.util.PushURL;
import com.stylefeng.guns.modular.system.util.ResultUtil;
-import org.apache.commons.lang.time.DateFormatUtils;
+import com.stylefeng.guns.modular.system.util.qianyuntong.OrderUtil;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.*;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
@@ -31,11 +31,10 @@
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
* 跨城出行订单控制器
@@ -70,8 +69,12 @@
private MongoTemplate mongoTemplate;
@Autowired
private ShiroExtUtil shiroExtUtil;
-
-
+ @Autowired
+ private IUserService sysUserService;
+ @Autowired
+ private ITCompanyService iTCompanyService;
+
+
/**
* 跳转到跨城出行订单首页
*/
@@ -146,7 +149,10 @@
Integer serverCarModelId,
String driver,
Integer lineId,
- Integer state) {
+ Integer state,
+ Integer abnormal,
+ Integer promotion,
+ String promotionUser) {
String beginTime = null;
String endTime = null;
if (SinataUtil.isNotEmpty(insertTime)){
@@ -155,9 +161,281 @@
endTime = timeArray[1];
}
Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
- page.setRecords(tOrderCrossCityService.getCrossCityOrderList(page, beginTime, endTime, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId(), orderNum, orderSource, userName, userPhone, passengers, passengersPhone, serverCarModelId, driver, lineId, state));
+ page.setRecords(tOrderCrossCityService.getCrossCityOrderList(page, beginTime, endTime, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId(), orderNum, orderSource, userName, userPhone, passengers, passengersPhone, serverCarModelId, driver, lineId, state, abnormal, promotion, promotionUser,null));
return super.packForBT(page);
}
+
+
+
+ @GetMapping("/export")
+ @ResponseBody
+ public void export(String insertTime,
+ String orderNum,
+ Integer orderSource,
+ String userName,
+ String userPhone,
+ String passengers,
+ String passengersPhone,
+ Integer serverCarModelId,
+ String driver,
+ Integer lineId,
+ Integer state,
+ Integer abnormal,
+ Integer promotion,
+ String promotionUser, HttpServletRequest request, HttpServletResponse response) {
+ try {
+ String beginTime = null;
+ String endTime = null;
+ if (SinataUtil.isNotEmpty(insertTime)) {
+ String[] timeArray = insertTime.split(" - ");
+ beginTime = timeArray[0];
+ endTime = timeArray[1];
+ }
+ List<Map<String, Object>> list = tOrderCrossCityService.getCrossCityOrderListExport(null, beginTime, endTime, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId(), orderNum, orderSource, userName, userPhone, passengers, passengersPhone, serverCarModelId, driver, lineId, state, abnormal, promotion, promotionUser,null);
+
+ // 表格数据【封装】
+ List<List<String>> dataList = new ArrayList<>();
+
+ //第一行显示【封装】
+ List<String> twoList = new ArrayList<String>();
+ twoList.add("总计:");
+ twoList.add(String.valueOf(list.size())+"条");
+ dataList.add(twoList);
+
+ // 列【封装】
+ List<String> shellList = new ArrayList<String>();
+ shellList.add("下单时间");
+ shellList.add("系统订单编号");
+ shellList.add("订单中心编号");
+ shellList.add("订单来源");
+ shellList.add("乘车时间");
+ shellList.add("下单用户昵称");
+ shellList.add("下单用户手机");
+ shellList.add("乘车用户姓名");
+ shellList.add("乘车用户手机");
+ shellList.add("起点");
+ shellList.add("终点");
+ shellList.add("线路名称");
+ shellList.add("选择车型");
+ shellList.add("接单司机");
+ shellList.add("接单车辆");
+ shellList.add("订单金额");
+ shellList.add("状态");
+ shellList.add("是否异常订单");
+ shellList.add("是否推广订单");
+ shellList.add("推广员姓名");
+ shellList.add("推广员电话");
+ dataList.add(shellList);
+
+ for (Map<String,Object> object : list){
+ // 详细数据列【封装】
+ shellList = new ArrayList<String>();
+ if(SinataUtil.isNotEmpty(object.get("insertTime"))){
+ shellList.add(DateUtil.formatDate(DateUtil.parse(object.get("insertTime").toString(),"YYYY-MM-dd HH:mm:ss.S"), "YYYY-MM-dd HH:mm:ss"));
+ }else{
+ shellList.add("-");
+ }
+ if(SinataUtil.isNotEmpty(object.get("orderNum"))){
+ shellList.add(object.get("orderNum").toString());
+ }else{
+ shellList.add("-");
+ }
+ if(SinataUtil.isNotEmpty(object.get("travelId"))){
+ shellList.add(object.get("travelId").toString());
+ }else{
+ shellList.add("-");
+ }
+
+ // 1:APP下单,2:扫码下单,3:小程序下单,4:司机下单,5:调度下单
+ if(SinataUtil.isNotEmpty(object.get("orderSource"))){
+ switch (object.get("orderSource").toString()){
+ case "1":
+ shellList.add("APP下单");
+ break;
+ case "2":
+ shellList.add("扫码下单");
+ break;
+ case "3":
+ shellList.add("小程序下单");
+ break;
+ case "4":
+ shellList.add("司机下单");
+ break;
+ case "5":
+ shellList.add("调度下单");
+ break;
+ case "6":
+ shellList.add("道行龙城下单");
+ break;
+ default:
+ shellList.add("-");
+ break;
+ }
+
+ }
+
+ if(SinataUtil.isNotEmpty(object.get("travelTime"))){
+ shellList.add(DateUtil.formatDate(DateUtil.parse(object.get("travelTime").toString(),"YYYY-MM-dd HH:mm:ss.S"), "YYYY-MM-dd HH:mm:ss"));
+ }else{
+ shellList.add("-");
+ }
+
+
+ if(SinataUtil.isNotEmpty(object.get("userName"))){
+ shellList.add(object.get("userName").toString());
+ }else{
+ shellList.add("-");
+ }
+
+ if(SinataUtil.isNotEmpty(object.get("userPhone"))){
+ shellList.add(object.get("userPhone").toString());
+ }else{
+ shellList.add("-");
+ }
+
+ if(SinataUtil.isNotEmpty(object.get("passengers"))){
+ shellList.add(object.get("passengers").toString());
+ }else{
+ shellList.add("-");
+ }
+
+ if(SinataUtil.isNotEmpty(object.get("passengersPhone"))){
+ shellList.add(object.get("passengersPhone").toString());
+ }else{
+ shellList.add("-");
+ }
+
+ if(SinataUtil.isNotEmpty(object.get("contactPersonPhone"))){
+ shellList.add(object.get("contactPersonPhone").toString());
+ }else{
+ shellList.add("-");
+ }
+
+ if(SinataUtil.isNotEmpty(object.get("startAddress"))){
+ shellList.add(object.get("startAddress").toString());
+ }else{
+ shellList.add("-");
+ }
+
+ if(SinataUtil.isNotEmpty(object.get("endAddress"))){
+ shellList.add(object.get("endAddress").toString());
+ }else{
+ shellList.add("-");
+ }
+ if(SinataUtil.isNotEmpty(object.get("lineName"))){
+ shellList.add(object.get("lineName").toString());
+ }else{
+ shellList.add("-");
+ }
+ if(SinataUtil.isNotEmpty(object.get("serverCarModelName"))){
+ shellList.add(object.get("serverCarModelName").toString());
+ }else{
+ shellList.add("-");
+ }
+
+ if(SinataUtil.isNotEmpty(object.get("driver"))){
+ shellList.add(object.get("driver").toString());
+ }else{
+ shellList.add("-");
+ }
+
+ if(SinataUtil.isNotEmpty(object.get("car"))){
+ shellList.add(object.get("car").toString());
+ }else{
+ shellList.add("-");
+ }
+
+ if(SinataUtil.isNotEmpty(object.get("orderMoney"))){
+ shellList.add(object.get("orderMoney").toString());
+ }else{
+ shellList.add("-");
+ }
+
+ // 1=待接单,2=待出发,3=待到达预约地点,4=待乘客上车,5=服务中,6=完成服务,7=待支付,8=待评价,9=已完成,10=已取消,11=改派中,12=取消待支付
+ if(SinataUtil.isNotEmpty(object.get("state"))){
+ switch (object.get("state").toString()){
+ case "1":
+ shellList.add("待接单");
+ break;
+ case "2":
+ shellList.add("待出发");
+ break;
+ case "3":
+ shellList.add("待到达预约地点");
+ break;
+ case "4":
+ shellList.add("待乘客上车");
+ break;
+ case "5":
+ shellList.add("服务中");
+ break;
+ case "6":
+ shellList.add("完成服务");
+ break;
+ case "7":
+ shellList.add("待支付");
+ break;
+ case "8":
+ shellList.add("待评价");
+ break;
+ case "9":
+ shellList.add("已完成");
+ break;
+ case "10":
+ shellList.add("已取消");
+ break;
+ case "11":
+ shellList.add("改派中");
+ break;
+ case "12":
+ shellList.add("取消待支付");
+ break;
+ default:
+ shellList.add("-");
+ break;
+ }
+ }
+
+
+ if(SinataUtil.isNotEmpty(object.get("abnormal"))){
+ shellList.add(object.get("abnormal").toString().equals("1")?"否":"是");
+ }else{
+ shellList.add("-");
+ }
+
+
+ if(SinataUtil.isNotEmpty(object.get("promotion"))){
+ shellList.add(object.get("promotion").toString().equals("1")?"否":"是");
+ }else{
+ shellList.add("-");
+ }
+
+
+ if(SinataUtil.isNotEmpty(object.get("promotionUser"))){
+ shellList.add(object.get("promotionUser").toString());
+ }else{
+ shellList.add("-");
+ }
+ if(SinataUtil.isNotEmpty(object.get("promotionPhone"))){
+ shellList.add(object.get("promotionPhone").toString());
+ }else{
+ shellList.add("-");
+ }
+
+
+ dataList.add(shellList);
+ }
+ try {
+ // 调用工具类进行导出
+ ExcelExportUtil.easySheet("订单导出记录"+DateUtil.formatDate(new Date(), "YYYYMMddHHmmss"), "订单导出记录", dataList,request, response);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
@Autowired
private ITDriverService tDriverService;
@@ -179,9 +457,6 @@
@Autowired
private IIncomeService incomeService;
-
-@Autowired
-private TDriverController tDriverController;
/**
@@ -229,6 +504,10 @@
}
}
+ //未支付,调取消订单
+ if(null == orderCrossCity.getPayType() && ToolUtil.isNotEmpty(orderCrossCity.getTravelId())){
+ OrderUtil.tradeOrderCancel(orderCrossCity.getTravelId());
+ }
//已支付的情况下进行退款操作
if(null != orderCrossCity.getPayType() && null != orderCrossCity.getPayMoney()){
@@ -262,9 +541,36 @@
}
if(query.getPayType() == 1){//微信
- Map<String, String> map = payMoneyUtil.wxRefund(query.getCode(), tOrderCrossCityId + "_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())){
+ User user1 = sysUserService.selectById(user.getId());
+ TradeOrderRefundRequest request = new TradeOrderRefundRequest();
+ request.setPartnerPayId(orderCrossCity.getTravelId());
+ request.setPayId(query.getCode());
+ request.setRefundTotalFee(orderCrossCity.getPayMoney().multiply(new BigDecimal(100)).intValue() + "");
+ request.setRemark("服务商取消订单退款");
+ request.setRefundType("RF");
+
+ RefundInfoRequest refundInfo = new RefundInfoRequest();
+ refundInfo.setPayItemId(orderCrossCity.getTravelId());
+ refundInfo.setPayId(query.getCode());
+ refundInfo.setTradeFee(orderCrossCity.getPayMoney().multiply(new BigDecimal(100)).intValue() + "");
+ request.setRefundInfos(new ArrayList<RefundInfoRequest>(){{
+ add(refundInfo);
+ }});
+ TradeOrderRefund tradeOrderRefund = OrderUtil.tradeOrderRefund(request);
+ //退款通知
+ OrderRefundNoticeRequest request2 = new OrderRefundNoticeRequest();
+ request2.setOrderId(orderCrossCity.getTravelId());
+ request2.setRefundPayNum(tradeOrderRefund.getRefundId());
+ request2.setRefundType("5");
+ request2.setApplyRefundCharge(orderCrossCity.getPayMoney());
+ request2.setActualRefundCharge(orderCrossCity.getPayMoney());
+ request2.setRefundAccount(user1.getEmpId().toString());
+ request2.setRemark("服务商取消订单退款");
+ OrderUtil.orderRefundNotice(request2);
+ //添加交易明细
+ transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城出行取消退款", query.getAmount(), 1, 1, 1, 3, tOrderCrossCityId);
}
}else if(query.getPayType()==4){
// TODO 退款
@@ -285,24 +591,6 @@
//添加交易明细
transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城出行取消退款", query.getAmount(), 1, 1, 1, 3, tOrderCrossCityId);
}
- }
-
- //添加负的收入明细
- List<Income> incomes = incomeService.selectList(new EntityWrapper<Income>().eq("type", 2).eq("incomeId", tOrderCrossCityId).eq("orderType", 3));
- for(Income income : incomes){
- if(income.getUserType() == 2){//处理司机的收入
- TDriver driver = tDriverService.selectById(income.getObjectId());
- driver.setBalance(driver.getBalance().subtract(new BigDecimal(income.getMoney())));
- driver.setBusinessMoney(driver.getBusinessMoney() - income.getMoney());
- driver.setLaveBusinessMoney(driver.getLaveBusinessMoney() - income.getMoney());
- tDriverService.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);
}
}
//添加取消记录
@@ -340,34 +628,4 @@
return SUCCESS_TIP;
}
-
- public static ResultUtil cancleMoney(BigDecimal amount,String no) throws Exception {
- JSONObject json = new JSONObject();
- json.put("requestTimestamp", DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss")); // 报文请求时间
-// json.put("merOrderId", Util.getMerOrderId("34U0")); // 商户订单号
- json.put("merOrderId", no); // 商户订单号
- json.put("mid", "898150841210108"); // 商户号
- json.put("tid", "84UJWSE8"); // 终端号
- json.put("instMid", "QRPAYDEFAULT"); // 业务类型
- BigDecimal multiply = amount.multiply(new BigDecimal(100));
- int money = multiply.intValue();
- json.put("refundAmount",money); // 支付总金额
- System.err.println("请求报文json:\n" + json);
- String url = "https://test-api-open.chinaums.com/v1/netpay/refund";
-// String url = "https://api-mop.chinaums.com/v1/netpay/refund";
- //OPEN-BODY-SIG 方式
- String result = GetOpenBodySig.sendOpenBodySig(url, json.toString());
- System.err.println("响应报文json:\n" + result);
- JSONObject jsonObject = JSONObject.parseObject(result);
- Object appPayRequest = jsonObject.get("appPayRequest");
- System.out.println(appPayRequest);
- return ResultUtil.success(appPayRequest);
- }
-
- @Autowired
- private ITEnterpriseWithdrawalService tEnterpriseWithdrawalService;
- @Autowired
- private IUserWithdrawalService userWithdrawalService;
-
-
}
--
Gitblit v1.7.1