2025008071805

This commit is contained in:
张潘 2025-08-13 18:20:22 +08:00
parent 3ad7422f9e
commit 90268bd97b
10 changed files with 879 additions and 426 deletions

View File

@ -235,6 +235,10 @@ public class UsersPayBeforController extends BaseController
public AjaxResult unifiedRefund(@RequestBody Map<String, Object> params) public AjaxResult unifiedRefund(@RequestBody Map<String, Object> params)
{ {
try { try {
// 添加调试日志
System.out.println("=== 统一退款接口开始 ===");
System.out.println("接收到的参数: " + params);
String orderId = params.get("orderId") == null ? null : params.get("orderId").toString(); String orderId = params.get("orderId") == null ? null : params.get("orderId").toString();
BigDecimal wechatRefund = params.get("wechatRefund") == null ? BigDecimal.ZERO : new BigDecimal(params.get("wechatRefund").toString()); BigDecimal wechatRefund = params.get("wechatRefund") == null ? BigDecimal.ZERO : new BigDecimal(params.get("wechatRefund").toString());
BigDecimal balanceRefund = params.get("balanceRefund") == null ? BigDecimal.ZERO : new BigDecimal(params.get("balanceRefund").toString()); BigDecimal balanceRefund = params.get("balanceRefund") == null ? BigDecimal.ZERO : new BigDecimal(params.get("balanceRefund").toString());
@ -244,6 +248,17 @@ public class UsersPayBeforController extends BaseController
BigDecimal couponRefund = params.get("couponRefund") == null ? BigDecimal.ZERO : new BigDecimal(params.get("couponRefund").toString()); BigDecimal couponRefund = params.get("couponRefund") == null ? BigDecimal.ZERO : new BigDecimal(params.get("couponRefund").toString());
String refundRemark = params.get("refundRemark") == null ? "" : params.get("refundRemark").toString(); String refundRemark = params.get("refundRemark") == null ? "" : params.get("refundRemark").toString();
// 添加参数解析后的调试日志
System.out.println("解析后的参数:");
System.out.println(" orderId: " + orderId);
System.out.println(" wechatRefund: " + wechatRefund);
System.out.println(" balanceRefund: " + balanceRefund);
System.out.println(" shoppingGoldRefund: " + shoppingGoldRefund);
System.out.println(" serviceGoldRefund: " + serviceGoldRefund);
System.out.println(" memberDiscountRefund: " + memberDiscountRefund);
System.out.println(" couponRefund: " + couponRefund);
System.out.println(" refundRemark: " + refundRemark);
if (orderId == null || orderId.trim().isEmpty()) { if (orderId == null || orderId.trim().isEmpty()) {
return error("订单ID不能为空"); return error("订单ID不能为空");
} }
@ -251,6 +266,8 @@ public class UsersPayBeforController extends BaseController
BigDecimal totalRefund = wechatRefund.add(balanceRefund).add(shoppingGoldRefund) BigDecimal totalRefund = wechatRefund.add(balanceRefund).add(shoppingGoldRefund)
.add(serviceGoldRefund).add(memberDiscountRefund).add(couponRefund); .add(serviceGoldRefund).add(memberDiscountRefund).add(couponRefund);
System.out.println("总退款金额: " + totalRefund);
if (totalRefund.compareTo(BigDecimal.ZERO) <= 0) { if (totalRefund.compareTo(BigDecimal.ZERO) <= 0) {
return error("退款金额必须大于0"); return error("退款金额必须大于0");
} }
@ -378,6 +395,13 @@ public class UsersPayBeforController extends BaseController
orderLogService.insertOrderLog(orderLog); orderLogService.insertOrderLog(orderLog);
// 更新支付记录状态和退款金额 // 更新支付记录状态和退款金额
// 创建参数副本避免修改原始参数
BigDecimal remainingWechatRefund = wechatRefund;
BigDecimal remainingBalanceRefund = balanceRefund;
BigDecimal remainingShoppingGoldRefund = shoppingGoldRefund;
BigDecimal remainingServiceGoldRefund = serviceGoldRefund;
BigDecimal remainingCouponRefund = couponRefund;
for (UsersPayBefor record : payRecords) { for (UsersPayBefor record : payRecords) {
BigDecimal currentRefunded = record.getReturnmoney() != null ? record.getReturnmoney() : BigDecimal.ZERO; BigDecimal currentRefunded = record.getReturnmoney() != null ? record.getReturnmoney() : BigDecimal.ZERO;
@ -386,42 +410,42 @@ public class UsersPayBeforController extends BaseController
// 根据该记录的支付方式分配退款金额 // 根据该记录的支付方式分配退款金额
if (record.getWxmoney() != null && record.getWxmoney().compareTo(BigDecimal.ZERO) > 0) { if (record.getWxmoney() != null && record.getWxmoney().compareTo(BigDecimal.ZERO) > 0) {
BigDecimal wxRefund = wechatRefund.min(record.getWxmoney().subtract(currentRefunded)); BigDecimal wxRefund = remainingWechatRefund.min(record.getWxmoney().subtract(currentRefunded));
if (wxRefund.compareTo(BigDecimal.ZERO) > 0) { if (wxRefund.compareTo(BigDecimal.ZERO) > 0) {
recordRefundAmount = recordRefundAmount.add(wxRefund); recordRefundAmount = recordRefundAmount.add(wxRefund);
wechatRefund = wechatRefund.subtract(wxRefund); remainingWechatRefund = remainingWechatRefund.subtract(wxRefund);
} }
} }
if (record.getYemoney() != null && record.getYemoney().compareTo(BigDecimal.ZERO) > 0) { if (record.getYemoney() != null && record.getYemoney().compareTo(BigDecimal.ZERO) > 0) {
BigDecimal yeRefund = balanceRefund.min(record.getYemoney().subtract(currentRefunded)); BigDecimal yeRefund = remainingBalanceRefund.min(record.getYemoney().subtract(currentRefunded));
if (yeRefund.compareTo(BigDecimal.ZERO) > 0) { if (yeRefund.compareTo(BigDecimal.ZERO) > 0) {
recordRefundAmount = recordRefundAmount.add(yeRefund); recordRefundAmount = recordRefundAmount.add(yeRefund);
balanceRefund = balanceRefund.subtract(yeRefund); remainingBalanceRefund = remainingBalanceRefund.subtract(yeRefund);
} }
} }
if (record.getShopmoney() != null && record.getShopmoney().compareTo(BigDecimal.ZERO) > 0) { if (record.getShopmoney() != null && record.getShopmoney().compareTo(BigDecimal.ZERO) > 0) {
BigDecimal shopRefund = shoppingGoldRefund.min(record.getShopmoney().subtract(currentRefunded)); BigDecimal shopRefund = remainingShoppingGoldRefund.min(record.getShopmoney().subtract(currentRefunded));
if (shopRefund.compareTo(BigDecimal.ZERO) > 0) { if (shopRefund.compareTo(BigDecimal.ZERO) > 0) {
recordRefundAmount = recordRefundAmount.add(shopRefund); recordRefundAmount = recordRefundAmount.add(shopRefund);
shoppingGoldRefund = shoppingGoldRefund.subtract(shopRefund); remainingShoppingGoldRefund = remainingShoppingGoldRefund.subtract(shopRefund);
} }
} }
if (record.getServicemoney() != null && record.getServicemoney().compareTo(BigDecimal.ZERO) > 0) { if (record.getServicemoney() != null && record.getServicemoney().compareTo(BigDecimal.ZERO) > 0) {
BigDecimal serviceRefund = serviceGoldRefund.min(record.getServicemoney().subtract(currentRefunded)); BigDecimal serviceRefund = remainingServiceGoldRefund.min(record.getServicemoney().subtract(currentRefunded));
if (serviceRefund.compareTo(BigDecimal.ZERO) > 0) { if (serviceRefund.compareTo(BigDecimal.ZERO) > 0) {
recordRefundAmount = recordRefundAmount.add(serviceRefund); recordRefundAmount = recordRefundAmount.add(serviceRefund);
serviceGoldRefund = serviceGoldRefund.subtract(serviceRefund); remainingServiceGoldRefund = remainingServiceGoldRefund.subtract(serviceRefund);
} }
} }
if (record.getCouponmoney() != null && record.getCouponmoney().compareTo(BigDecimal.ZERO) > 0) { if (record.getCouponmoney() != null && record.getCouponmoney().compareTo(BigDecimal.ZERO) > 0) {
BigDecimal couponRefundAmount = couponRefund.min(record.getCouponmoney().subtract(currentRefunded)); BigDecimal couponRefundAmount = remainingCouponRefund.min(record.getCouponmoney().subtract(currentRefunded));
if (couponRefundAmount.compareTo(BigDecimal.ZERO) > 0) { if (couponRefundAmount.compareTo(BigDecimal.ZERO) > 0) {
recordRefundAmount = recordRefundAmount.add(couponRefundAmount); recordRefundAmount = recordRefundAmount.add(couponRefundAmount);
couponRefund = couponRefund.subtract(couponRefundAmount); remainingCouponRefund = remainingCouponRefund.subtract(couponRefundAmount);
} }
} }
@ -442,6 +466,7 @@ public class UsersPayBeforController extends BaseController
} }
// 调用退款工具方法实现真实的业务退款与金额变动 // 调用退款工具方法实现真实的业务退款与金额变动
// 使用原始参数而不是被修改的副本
Map<String, Object> refundResult = refundUtil.processUnifiedRefund( Map<String, Object> refundResult = refundUtil.processUnifiedRefund(
orderId, wechatRefund, balanceRefund, shoppingGoldRefund, orderId, wechatRefund, balanceRefund, shoppingGoldRefund,
serviceGoldRefund, memberDiscountRefund, couponRefund, refundRemark serviceGoldRefund, memberDiscountRefund, couponRefund, refundRemark

View File

@ -130,7 +130,7 @@ public class CartOrderUtil {
//一口价金额大于0的时候进行支付 //一口价金额大于0的时候进行支付
if (order.getTotalPrice().compareTo(BigDecimal.ZERO)>0){ if (order.getTotalPrice().compareTo(BigDecimal.ZERO)>0){
String payBeforeId = payBeforeUtil.createPayBefore(user, itemPrice, order.getOrderId(), null, order.getProductId(), cart.getOrdertype(), order.getSku(), null, null, null, null,1L, null, null); String payBeforeId = payBeforeUtil.createPayBefore(user, itemPrice, order.getOrderId(), null, order.getProductId(), cart.getOrdertype(), order.getSku(), null, null, null, null,1L, null, null,BigDecimal.ZERO);
}else{ }else{
DispatchUtil.dispatchOrder(order.getId()); DispatchUtil.dispatchOrder(order.getId());
} }
@ -182,6 +182,7 @@ public class CartOrderUtil {
goodsOrder.setProductId(serviceGoods.getId()); goodsOrder.setProductId(serviceGoods.getId());
goodsOrder.setProductName(serviceGoods.getTitle()); goodsOrder.setProductName(serviceGoods.getTitle());
goodsOrder.setNum((long) num); goodsOrder.setNum((long) num);
goodsOrder.setPostage(serviceGoods.getPostage());
goodsOrder.setSku(sku); goodsOrder.setSku(sku);
goodsOrder.setIsself(isself); goodsOrder.setIsself(isself);
goodsOrder.setIsforservice(serviceGoods.getIsforservice()); goodsOrder.setIsforservice(serviceGoods.getIsforservice());
@ -274,6 +275,7 @@ public class CartOrderUtil {
goodsOrder.setGoodPrice(serviceGoods.getPrice()); goodsOrder.setGoodPrice(serviceGoods.getPrice());
goodsOrder.setPayPrice(itemPrice); goodsOrder.setPayPrice(itemPrice);
goodsOrder.setStatus(1L); // 待支付 goodsOrder.setStatus(1L); // 待支付
goodsOrder.setPostage(serviceGoods.getPostage());
goodsOrder.setMainOrderId(maincorid); goodsOrder.setMainOrderId(maincorid);
//goodsOrder.setIsmany(1L); //goodsOrder.setIsmany(1L);
int insertResult = goodsOrderService.insertGoodsOrder(goodsOrder); int insertResult = goodsOrderService.insertGoodsOrder(goodsOrder);

View File

@ -2958,12 +2958,16 @@ public class DispatchUtil {
orderLognew.setWorkerLogId(worker.getId()); orderLognew.setWorkerLogId(worker.getId());
orderLogService.insertOrderLog(orderLognew); orderLogService.insertOrderLog(orderLognew);
//绑定虚拟号码 //绑定虚拟号码
//微信推送
ServiceGoods serviceGoods = serviceGoodsService.selectServiceGoodsById(order.getProductId());
//给师傅派单的时候的推送
WXsendMsgUtil.sendMsgForWorkerInfo(worker.getOpenid(), order, serviceGoods);
Map<String, Object> map= OrderBindWorkerUtil.getOrderBindWorker(order.getId()); Map<String, Object> map= OrderBindWorkerUtil.getOrderBindWorker(order.getId());
YunXinPhoneUtilAPI.httpsAxbTransfer(order.getWorkerPhone()); YunXinPhoneUtilAPI.httpsAxbTransfer(order.getWorkerPhone());
// if (map.get("code").equals("200")) { if (map.get("code").equals("200")) {
// //电话通知 //电话通知
// YunXinPhoneUtilAPI.httpsAxbTransfer(order.getWorkerPhone()); YunXinPhoneUtilAPI.httpsAxbTransfer(order.getWorkerPhone());
// } }
return worker; return worker;

View File

@ -187,7 +187,7 @@ public class HomeUtril {
* *
* @return 分类树形列表数据只包含title和icon * @return 分类树形列表数据只包含title和icon
*/ */
public Map<String, Object> getServiceCategories() { public Map<String, Object> getServiceCategories(String city) {
try { try {
Map<String, Object> result = new HashMap<>(); Map<String, Object> result = new HashMap<>();
@ -195,6 +195,10 @@ public class HomeUtril {
ServiceCate serviceCateQuery = new ServiceCate(); ServiceCate serviceCateQuery = new ServiceCate();
serviceCateQuery.setStatus(1L); serviceCateQuery.setStatus(1L);
serviceCateQuery.setType(1L); serviceCateQuery.setType(1L);
if (StringUtils.isNotBlank(city)){
serviceCateQuery.setCity(city);
}
List<ServiceCate> allCategoryList = serviceCateService.selectServiceCateList(serviceCateQuery); List<ServiceCate> allCategoryList = serviceCateService.selectServiceCateList(serviceCateQuery);
// 2. 分离一级分类和二级分类 // 2. 分离一级分类和二级分类
@ -303,11 +307,14 @@ public class HomeUtril {
* 查询type=1且isgroup=1的服务商品前4个 * 查询type=1且isgroup=1的服务商品前4个
* 返回icon标题pricegroupprice字段 * 返回icon标题pricegroupprice字段
*/ */
public Map<String, Object> getGroupList() { public Map<String, Object> getGroupList(String city) {
try { try {
Map<String, Object> result = new HashMap<>(); Map<String, Object> result = new HashMap<>();
// 构建查询条件 // 构建查询条件
ServiceGoods queryGoods = new ServiceGoods(); ServiceGoods queryGoods = new ServiceGoods();
if (StringUtils.isNotBlank(city)){
queryGoods.setCity(city);
}
queryGoods.setType(1); // type=1 queryGoods.setType(1); // type=1
queryGoods.setIsgroup(1); // isgroup=1 queryGoods.setIsgroup(1); // isgroup=1
queryGoods.setStatus("1"); // 只查询启用状态的商品 queryGoods.setStatus("1"); // 只查询启用状态的商品

View File

@ -3,6 +3,7 @@ package com.ruoyi.system.ControllerUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.utils.AmapUtils; import com.ruoyi.common.utils.AmapUtils;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.system.domain.*; import com.ruoyi.system.domain.*;
import com.ruoyi.system.service.*; import com.ruoyi.system.service.*;
@ -629,7 +630,7 @@ public class OrderUtil {
* @param user 用户实体 * @param user 用户实体
* @return 新建的订单对象仅拼团或处理结果Map * @return 新建的订单对象仅拼团或处理结果Map
*/ */
public static Object prepayCallback(UsersPayBefor payBefor, Users user) { public static Object prepayCallback(UsersPayBefor payBefor, Users user) throws Exception {
System.out.println("=== prepayCallback 方法开始 ==="); System.out.println("=== prepayCallback 方法开始 ===");
System.out.println("输入参数 - payBefor: " + (payBefor != null ? payBefor.toString() : "null")); System.out.println("输入参数 - payBefor: " + (payBefor != null ? payBefor.toString() : "null"));
System.out.println("输入参数 - user: " + (user != null ? user.toString() : "null")); System.out.println("输入参数 - user: " + (user != null ? user.toString() : "null"));
@ -652,10 +653,14 @@ public class OrderUtil {
if (gorders != null && !gorders.isEmpty()){ if (gorders != null && !gorders.isEmpty()){
for (GoodsOrder g: gorders){ for (GoodsOrder g: gorders){
g.setStatus(2L); g.setStatus(2L);
g.setPayTime(DateUtils.getNowDate());
goodsOrderService.updateGoodsOrder(g); goodsOrderService.updateGoodsOrder(g);
// BenefitPointsUtil.processBenefitPoints(g.getId(),g.getTotalPrice(),"2"); // BenefitPointsUtil.processBenefitPoints(g.getId(),g.getTotalPrice(),"2");
} }
} }
//String openid, String orderid,String price,String Address, String title,String reamk
//微信发送消息
WXsendMsgUtil.sendUserForMoneySuccess(user.getOpenid(),payBefor.getOrderid(),payBefor.getAllmoney().toString(),gorder.getAddress(),"商品支付","商品支付成功");
// updateInventoryAndSales(gorder.getOrderId(), 2); // updateInventoryAndSales(gorder.getOrderId(), 2);
//处理服务金 //处理服务金
@ -674,6 +679,7 @@ public class OrderUtil {
for (GoodsOrder goodsOrder : orderslist){ for (GoodsOrder goodsOrder : orderslist){
System.out.println("更新商品订单 - ID: " + goodsOrder.getId() + ", 原状态: " + goodsOrder.getStatus()); System.out.println("更新商品订单 - ID: " + goodsOrder.getId() + ", 原状态: " + goodsOrder.getStatus());
goodsOrder.setStatus(2L); goodsOrder.setStatus(2L);
goodsOrder.setPayTime(DateUtils.getNowDate());
goodsOrder.setTransactionId(payBefor.getPaycode()); goodsOrder.setTransactionId(payBefor.getPaycode());
int updateResult = goodsOrderService.updateGoodsOrder(goodsOrder); int updateResult = goodsOrderService.updateGoodsOrder(goodsOrder);
@ -683,6 +689,9 @@ public class OrderUtil {
System.out.println("未找到相关商品订单"); System.out.println("未找到相关商品订单");
} }
System.out.println("拼团商品订单处理完成返回orderid: " + payBefor.getOrderid()); System.out.println("拼团商品订单处理完成返回orderid: " + payBefor.getOrderid());
//微信发送消息给客户
WXsendMsgUtil.sendUserForMoneySuccess(user.getOpenid(),payBefor.getOrderid(),payBefor.getAllmoney().toString(),gorder.getAddress(),"商品支付","商品支付成功");
return payBefor.getOrderid(); return payBefor.getOrderid();
} }
@ -691,8 +700,11 @@ public class OrderUtil {
GoodsOrder order = goodsOrderService.selectGoodsOrderByorderId(payBefor.getOrderid()); GoodsOrder order = goodsOrderService.selectGoodsOrderByorderId(payBefor.getOrderid());
if (order != null) { if (order != null) {
order.setStatus(2L); order.setStatus(2L);
order.setPayTime(DateUtils.getNowDate());
order.setTransactionId(payBefor.getPaycode()); order.setTransactionId(payBefor.getPaycode());
//BenefitPointsUtil.processBenefitPoints(order.getId(),order.getTotalPrice(),"2"); //BenefitPointsUtil.processBenefitPoints(order.getId(),order.getTotalPrice(),"2");
//微信发送消息
WXsendMsgUtil.sendUserForMoneySuccess(user.getOpenid(),payBefor.getOrderid(),payBefor.getAllmoney().toString(),order.getAddress(),"商品支付","商品支付成功");
int updateResult = goodsOrderService.updateGoodsOrder(order); int updateResult = goodsOrderService.updateGoodsOrder(order);
} }
return null; return null;
@ -723,7 +735,13 @@ public class OrderUtil {
// //
// } // }
// } // }
WXsendMsgUtil.sendUserForMoneySuccess(user.getOpenid(),payBefor.getOrderid(),payBefor.getAllmoney().toString(),order.getAddress(),"上门费支付","上门费支付成功");
//微信发送消息给师傅
Users master = usersService.selectUsersById(order.getWorkerId());
WXsendMsgUtil.sendUserPayDoorMoneyForWorker(master.getOpenid(),order,"上门费支付成功");
} }
//微信发送消息
return 1; return 1;
} }
if (type == 8) { if (type == 8) {
@ -740,6 +758,10 @@ public class OrderUtil {
order.setPayPrice(order.getPayPrice().add(payBefor.getAllmoney())); order.setPayPrice(order.getPayPrice().add(payBefor.getAllmoney()));
orderService.updateOrder(order); orderService.updateOrder(order);
} }
WXsendMsgUtil.sendUserForMoneySuccess(user.getOpenid(),payBefor.getOrderid(),payBefor.getAllmoney().toString(),order.getAddress(),"定金支付","定金支付成功");
//微信发送消息给师傅
Users master = usersService.selectUsersById(order.getWorkerId());
WXsendMsgUtil.sendUserPayDoorMoneyForWorker(master.getOpenid(),order,"定金支付成功");
ISTOPAYSIZE(payBefor.getLastorderid()); ISTOPAYSIZE(payBefor.getLastorderid());
} }
} }
@ -773,6 +795,10 @@ public class OrderUtil {
if (updateResult > 0){ if (updateResult > 0){
ISTOPAYSIZE(payBefor.getLastorderid()); ISTOPAYSIZE(payBefor.getLastorderid());
} }
WXsendMsgUtil.sendUserForMoneySuccess(user.getOpenid(),payBefor.getOrderid(),payBefor.getAllmoney().toString(),order.getAddress(),"尾款支付","尾款支付成功");
//微信发送消息给师傅
Users master = usersService.selectUsersById(order.getWorkerId());
WXsendMsgUtil.sendUserPayDoorMoneyForWorker(master.getOpenid(),order,"尾款支付成功");
} }
return 1; return 1;
} }
@ -788,6 +814,10 @@ public class OrderUtil {
if (order != null){ if (order != null){
order.setPayPrice(order.getPayPrice().add(payBefor.getAllmoney())); order.setPayPrice(order.getPayPrice().add(payBefor.getAllmoney()));
orderService.updateOrder(order); orderService.updateOrder(order);
WXsendMsgUtil.sendUserForMoneySuccess(user.getOpenid(),payBefor.getOrderid(),payBefor.getAllmoney().toString(),order.getAddress(),"差价支付","差价支付成功");
//微信发送消息给师傅
Users master = usersService.selectUsersById(order.getWorkerId());
WXsendMsgUtil.sendUserPayDoorMoneyForWorker(master.getOpenid(),order,"差价支付成功");
} }
ISTOPAYSIZE(payBefor.getLastorderid()); ISTOPAYSIZE(payBefor.getLastorderid());
} }
@ -858,6 +888,8 @@ public class OrderUtil {
System.out.println("未找到报价记录,处理失败"); System.out.println("未找到报价记录,处理失败");
} }
System.out.println("需求报价订单处理完成返回order: " + (order != null ? order.getOrderId() : "null")); System.out.println("需求报价订单处理完成返回order: " + (order != null ? order.getOrderId() : "null"));
WXsendMsgUtil.sendUserForMoneySuccess(user.getOpenid(),payBefor.getOrderid(),payBefor.getAllmoney().toString(),order.getAddress(),"报价支付","师傅报价支付成功");
// updateInventoryAndSales(order.getOrderId(), 1); // updateInventoryAndSales(order.getOrderId(), 1);
//dispatchOrderCheck(order); //dispatchOrderCheck(order);
return order; return order;
@ -879,6 +911,8 @@ public class OrderUtil {
userUseSecondaryCard.setStatus(1L); userUseSecondaryCard.setStatus(1L);
int cardUpdateResult = userUseSecondaryCardService.updateUserUseSecondaryCard(userUseSecondaryCard); int cardUpdateResult = userUseSecondaryCardService.updateUserUseSecondaryCard(userUseSecondaryCard);
System.out.println("次卡状态更新结果: " + cardUpdateResult); System.out.println("次卡状态更新结果: " + cardUpdateResult);
WXsendMsgUtil.sendUserForMoneySuccess(user.getOpenid(),payBefor.getOrderid(),payBefor.getAllmoney().toString(),"","次卡支付","次卡支付成功");
} }
return null; return null;
} }
@ -927,6 +961,8 @@ public class OrderUtil {
// } // }
// } // }
// } // }
WXsendMsgUtil.sendUserForMoneySuccess(user.getOpenid(),payBefor.getOrderid(),payBefor.getAllmoney().toString(),order.getAddress(),"秒杀订单支付","秒杀订单支付成功");
return order; return order;
} else { } else {
System.out.println("未找到订单"); System.out.println("未找到订单");
@ -1076,6 +1112,8 @@ public class OrderUtil {
System.out.println("拼团订单处理完成返回order: " + order.getOrderId()); System.out.println("拼团订单处理完成返回order: " + order.getOrderId());
//派单效验 //派单效验
dispatchOrderCheck(order); dispatchOrderCheck(order);
WXsendMsgUtil.sendUserForMoneySuccess(user.getOpenid(),payBefor.getOrderid(),payBefor.getAllmoney().toString(),order.getAddress(),"拼团订单支付","拼团订单支付成功");
//库存及销量变更 //库存及销量变更
// updateInventoryAndSales(ptorderid, 1); // updateInventoryAndSales(ptorderid, 1);
return order; return order;
@ -1114,6 +1152,8 @@ public class OrderUtil {
order.setStatus(1L); // 1=待预约 order.setStatus(1L); // 1=待预约
int orderUpdateResult = orderService.updateOrder(order); int orderUpdateResult = orderService.updateOrder(order);
dispatchOrderCheck(order); dispatchOrderCheck(order);
WXsendMsgUtil.sendUserForMoneySuccess(user.getOpenid(),payBefor.getOrderid(),payBefor.getAllmoney().toString(),order.getAddress(),"次卡下单","次卡下单成功");
return order; return order;
} }
System.out.println("次卡订单处理完成,返回: " + (userUseSecondaryCard != null ? userUseSecondaryCard.getId() : "null")); System.out.println("次卡订单处理完成,返回: " + (userUseSecondaryCard != null ? userUseSecondaryCard.getId() : "null"));
@ -1146,6 +1186,8 @@ public class OrderUtil {
System.out.println("订单状态更新结果: " + orderUpdateResult); System.out.println("订单状态更新结果: " + orderUpdateResult);
System.out.println("普通订单处理完成返回order: " + order.getOrderId()); System.out.println("普通订单处理完成返回order: " + order.getOrderId());
dispatchOrderCheck(order); dispatchOrderCheck(order);
WXsendMsgUtil.sendUserForMoneySuccess(user.getOpenid(),payBefor.getOrderid(),payBefor.getAllmoney().toString(),order.getAddress(),"预约下单","预约下单成功");
return order; return order;
} else { } else {
System.out.println("未找到订单"); System.out.println("未找到订单");

View File

@ -50,7 +50,7 @@ public class PayBeforeUtil {
*/ */
public String createPayBefore(Users user, BigDecimal amount, String orderId, Long oid, public String createPayBefore(Users user, BigDecimal amount, String orderId, Long oid,
Long serviceId, Long orderType, String sku, String grouporderid, Long serviceId, Long orderType, String sku, String grouporderid,
Long addressid, String maketime, String attachments,Long servicetype,Long baojiaid,String lastorderid) { Long addressid, String maketime, String attachments,Long servicetype,Long baojiaid,String lastorderid,BigDecimal youfei) {
try { try {
// 计算会员优惠 // 计算会员优惠
BigDecimal memberMoney = BigDecimal.ZERO; BigDecimal memberMoney = BigDecimal.ZERO;
@ -90,6 +90,7 @@ public class PayBeforeUtil {
payBefore.setUid(user.getId()); payBefore.setUid(user.getId());
payBefore.setOrderid(orderId); payBefore.setOrderid(orderId);
payBefore.setOid(oid); payBefore.setOid(oid);
payBefore.setPostage(youfei);
payBefore.setPaycode(GenerateCustomCode.generCreateOrder("PAY")); payBefore.setPaycode(GenerateCustomCode.generCreateOrder("PAY"));
payBefore.setAllmoney(amount); // 原始总金额 payBefore.setAllmoney(amount); // 原始总金额
// 微信支付金额 = 总金额 - 会员优惠 - 服务金抵扣 - 购物金抵扣 // 微信支付金额 = 总金额 - 会员优惠 - 服务金抵扣 - 购物金抵扣
@ -224,7 +225,7 @@ public class PayBeforeUtil {
* @return 预支付记录ID失败返回null * @return 预支付记录ID失败返回null
*/ */
public String createPayBefore(Users user, BigDecimal amount) { public String createPayBefore(Users user, BigDecimal amount) {
return createPayBefore(user, amount, null, null, 0L, 0L, null, null, null, null, null,null, null,null); return createPayBefore(user, amount, null, null, 0L, 0L, null, null, null, null, null,null, null,null, null);
} }
/** /**
@ -240,7 +241,7 @@ public class PayBeforeUtil {
*/ */
public String createPayBefore(Users user, BigDecimal amount, String orderId, Long oid, public String createPayBefore(Users user, BigDecimal amount, String orderId, Long oid,
Long serviceId, Long orderType) { Long serviceId, Long orderType) {
return createPayBefore(user, amount, orderId, oid, serviceId, orderType, null, null, null, null, null,null, null, null); return createPayBefore(user, amount, orderId, oid, serviceId, orderType, null, null, null, null, null,null, null, null, null);
} }
/** /**
@ -407,7 +408,7 @@ public class PayBeforeUtil {
orderLog.getId(), // oid orderLog.getId(), // oid
null, // serviceId null, // serviceId
8L, // type=8 定金 8L, // type=8 定金
null, null, null, null, null, 1L, null, lastorderid null, null, null, null, null, 1L, null, lastorderid, null
); );
} }
// 金额一致无需操作 // 金额一致无需操作
@ -420,7 +421,7 @@ public class PayBeforeUtil {
orderLog.getId(), // oid orderLog.getId(), // oid
null, // serviceId null, // serviceId
8L, // type=8 定金 8L, // type=8 定金
null, null, null, null, null, 1L, null, lastorderid null, null, null, null, null, 1L, null, lastorderid, null
); );
} }
} else { } else {
@ -479,7 +480,7 @@ public class PayBeforeUtil {
orderLog.getId(), // oid orderLog.getId(), // oid
null, // serviceId null, // serviceId
9L, // type=9 尾款 9L, // type=9 尾款
null, null, null, null, null, 1L, null, lastorderid null, null, null, null, null, 1L, null, lastorderid, null
); );
} }
// 金额一致无需操作 // 金额一致无需操作
@ -492,7 +493,7 @@ public class PayBeforeUtil {
orderLog.getId(), // oid orderLog.getId(), // oid
null, // serviceId null, // serviceId
9L, // type=9 尾款 9L, // type=9 尾款
null, null, null, null, null, 1L, null, lastorderid null, null, null, null, null, 1L, null, lastorderid, null
); );
} }
} else { } else {

View File

@ -297,7 +297,7 @@ public class WXsendMsgUtil {
return PublicPush(wxMssVo); return PublicPush(wxMssVo);
} }
//用户支付上门费后向师傅进行推送 //用户支付上门费后向师傅进行推送
public static String sendUserPayDoorMoneyForWorker(String openid, Order order, ServiceGoods serviceGoods) throws Exception { public static String sendUserPayDoorMoneyForWorker(String openid, Order order, String name) throws Exception {
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//拼接推送的模版 //拼接推送的模版
WxMssVo wxMssVo = new WxMssVo(); WxMssVo wxMssVo = new WxMssVo();
@ -309,35 +309,63 @@ public class WXsendMsgUtil {
// mark="暂无备注"; // mark="暂无备注";
// } // }
Map<String, TemplateData> m = new HashMap<>(3); Map<String, TemplateData> m = new HashMap<>(3);
m.put("thing15", new TemplateData(serviceGoods.getTitle())); m.put("thing15", new TemplateData(name));
m.put("character_string5", new TemplateData(order.getOrderId())); m.put("character_string5", new TemplateData(order.getOrderId()));
m.put("date3", new TemplateData(AppletControllerUtil.timeStamp2Date(order))); m.put("date3", new TemplateData(AppletControllerUtil.timeStamp2Date(order)));
m.put("thing1", new TemplateData(order.getAddress())); m.put("thing1", new TemplateData(order.getAddress()));
m.put("thing9", new TemplateData("用户已支付上门")); m.put("thing9", new TemplateData("用户已支付"));
System.out.println("师傅设置上门费的时候的推送:" + m.toString()); System.out.println("师傅设置上门费的时候的推送:" + m.toString());
wxMssVo.setData(m); wxMssVo.setData(m);
return PublicPush(wxMssVo); return PublicPush(wxMssVo);
} }
// //商城订单变化后给客户发送的通知
// public static String sendUserGoodsOrderStatusForUser(String openid, String orderid, String name) throws Exception {
// // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// //拼接推送的模版
// WxMssVo wxMssVo = new WxMssVo();
// wxMssVo.setTouser(openid);//用户的openid要发送给那个用户通常这里应该动态传进来的
// wxMssVo.setTemplate_id(ORDER_STATUS);//订阅消息模板id
// wxMssVo.setPage("/pages/serveSF/home/details?id="+orderid);
//// String mark = order.getMark();
//// if (StringUtils.isEmpty( mark)){
//// mark="暂无备注";
//// }
// Map<String, TemplateData> m = new HashMap<>(3);
// m.put("thing15", new TemplateData(name));
// m.put("character_string5", new TemplateData(orderid));
// m.put("date3", new TemplateData(AppletControllerUtil.timeStamp2Date(order)));
// m.put("thing1", new TemplateData(order.getAddress()));
// m.put("thing9", new TemplateData("用户已支付费用"));
//
// System.out.println("师傅设置上门费的时候的推送:" + m.toString());
// wxMssVo.setData(m);
// return PublicPush(wxMssVo);
// }
//客户支付成功的消息推送 //客户支付成功的消息推送
public static String sendUserForMoneySuccess(String openid, GoodsOrder order, ServiceGoods serviceGoods) throws Exception { public static String sendUserForMoneySuccess(String openid, String orderid,String price,String Address, String title,String reamk) throws Exception {
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//拼接推送的模版 //拼接推送的模版
WxMssVo wxMssVo = new WxMssVo(); WxMssVo wxMssVo = new WxMssVo();
wxMssVo.setTouser(openid);//用户的openid要发送给那个用户通常这里应该动态传进来的 wxMssVo.setTouser(openid);//用户的openid要发送给那个用户通常这里应该动态传进来的
wxMssVo.setTemplate_id(PAY_GOODS);//订阅消息模板id wxMssVo.setTemplate_id(PAY_GOODS);//订阅消息模板id
wxMssVo.setPage("/pages/mine/shopOrder/index"); wxMssVo.setPage("/pages/mine/shopOrder/index");
String mark = order.getMark(); // String mark = order.getMark();
if (StringUtils.isEmpty( mark)){ // if (StringUtils.isEmpty( mark)){
mark="暂无备注"; // mark="暂无备注";
} // }
Map<String, TemplateData> m = new HashMap<>(3); Map<String, TemplateData> m = new HashMap<>(3);
m.put("thing11", new TemplateData(serviceGoods.getTitle())); m.put("thing11", new TemplateData(title));
m.put("character_string3", new TemplateData(order.getOrderId())); m.put("character_string3", new TemplateData(orderid));
m.put("amount27",new TemplateData(String.valueOf(order.getTotalPrice()))); m.put("amount27",new TemplateData(price));
m.put("thing1", new TemplateData(order.getAddress())); m.put("thing1", new TemplateData(Address));
m.put("thing9", new TemplateData("师傅已经已经接单")); m.put("thing9", new TemplateData(reamk));
System.out.println("师傅设置上门费的时候的推送:" + m.toString()); System.out.println("师傅设置上门费的时候的推送:" + m.toString());
wxMssVo.setData(m); wxMssVo.setData(m);

View File

@ -81,7 +81,7 @@ public class WechatPayUtil {
private static final String WECHAT_TRANSFER_URL = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers"; // 企业付款 private static final String WECHAT_TRANSFER_URL = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers"; // 企业付款
public static final String PAY_FH = "https://403e667e.r3.cpolar.top"; public static final String PAY_FH = "https://403e667e.r3.cpolar.top/";
/** /**
* 其他配置常量 * 其他配置常量
*/ */

View File

@ -834,10 +834,26 @@ export default {
}, },
calculateTotalRefund() { calculateTotalRefund() {
const total = (parseFloat(this.refundForm.wechatRefund) || 0) + (parseFloat(this.refundForm.balanceRefund) || 0) + console.log('=== 开始计算总退款金额 ===');
(parseFloat(this.refundForm.shoppingGoldRefund) || 0) + (parseFloat(this.refundForm.serviceGoldRefund) || 0) + console.log('refundForm:', this.refundForm);
(parseFloat(this.refundForm.couponRefund === '1' ? this.actualPaymentData.couponmoney : 0) || 0);
const wechatAmount = parseFloat(this.refundForm.wechatRefund) || 0;
const balanceAmount = parseFloat(this.refundForm.balanceRefund) || 0;
const shoppingAmount = parseFloat(this.refundForm.shoppingGoldRefund) || 0;
const serviceAmount = parseFloat(this.refundForm.serviceGoldRefund) || 0;
const couponAmount = parseFloat(this.refundForm.couponRefund === '1' ? this.actualPaymentData.couponmoney : 0) || 0;
console.log('各项金额:');
console.log(' 微信退款:', wechatAmount);
console.log(' 余额退款:', balanceAmount);
console.log(' 购物金退款:', shoppingAmount);
console.log(' 服务金退款:', serviceAmount);
console.log(' 优惠券退款:', couponAmount);
const total = wechatAmount + balanceAmount + shoppingAmount + serviceAmount + couponAmount;
this.totalRefundAmount = total.toFixed(2); this.totalRefundAmount = total.toFixed(2);
console.log('总退款金额:', this.totalRefundAmount);
}, },
validateRefundAmount() { validateRefundAmount() {
@ -863,6 +879,11 @@ export default {
this.confirmLoading = true; this.confirmLoading = true;
try { try {
//
console.log('=== 开始确认退款 ===');
console.log('refundForm:', this.refundForm);
console.log('actualPaymentData:', this.actualPaymentData);
const params = { const params = {
orderId: this.orderId, orderId: this.orderId,
wechatRefund: this.refundForm.wechatRefund || "0", wechatRefund: this.refundForm.wechatRefund || "0",
@ -873,8 +894,20 @@ export default {
refundRemark: this.refundForm.refundRemark refundRemark: this.refundForm.refundRemark
}; };
console.log('构建的参数:', params);
console.log('参数类型检查:');
console.log(' orderId:', typeof params.orderId, params.orderId);
console.log(' wechatRefund:', typeof params.wechatRefund, params.wechatRefund);
console.log(' balanceRefund:', typeof params.balanceRefund, params.balanceRefund);
console.log(' shoppingGoldRefund:', typeof params.shoppingGoldRefund, params.shoppingGoldRefund);
console.log(' serviceGoldRefund:', typeof params.serviceGoldRefund, params.serviceGoldRefund);
console.log(' couponRefund:', typeof params.couponRefund, params.couponRefund);
console.log(' refundRemark:', typeof params.refundRemark, params.refundRemark);
const response = await unifiedRefund(params); const response = await unifiedRefund(params);
console.log('退款接口响应:', response);
if (response.code === 200) { if (response.code === 200) {
this.$message.success("退款成功"); this.$message.success("退款成功");
this.$emit("success", response.data); this.$emit("success", response.data);