打印分账出错信息
This commit is contained in:
parent
f754f41b55
commit
e11cf54167
@ -98,6 +98,8 @@ public class ShopOrderLkl implements Serializable {
|
||||
|
||||
private String separate_remark;
|
||||
|
||||
private String separate_msg;
|
||||
|
||||
private Integer status;
|
||||
|
||||
private Date created_at;
|
||||
|
||||
@ -855,7 +855,12 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
log.warn("[确认收货通知] 未能获取到商品子单信息,使用原始参数进行处理");
|
||||
}
|
||||
} else {
|
||||
log.debug("[确认收货通知] 非合单订单,使用原始参数进行处理");
|
||||
// 非合单订单,确认收货响应数据:{"trade_no":"20251015110110000066202154232129","log_no":"66202154232129","trade_state":"SUCCESS",
|
||||
// "total_amount":"2950","trade_time":"20251015165538",
|
||||
// "complete_notify_url":"https://mall.gpxscs.cn/api/mobile/shop/lakala/trans/receive/completeNotify",
|
||||
// "merchant_no":"8226330541100H4","sub_mch_id":"812310610","origin_trade_no":"20251015110113130266250075936522",
|
||||
// "origin_log_no":"66250075936522","origin_out_trade_no":"DD_20251015_2"}
|
||||
log.debug("[确认收货通知] 从订单信息中获取原始交易号: originTradeNo={} originLogNo={}", originTradeNo, originLogNo);
|
||||
}
|
||||
|
||||
|
||||
@ -892,11 +897,19 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
}
|
||||
log.info("[确认收货通知] 订单信息更新成功: orderId={}", shopOrderLkl.getOrder_id());
|
||||
|
||||
// 准备发起分账指令
|
||||
// 重要:准备发起分账指令
|
||||
log.info("[确认收货通知] 开始发起分账指令: merchantNo={}, receiveTradeNo={}, logNo={}",
|
||||
merchantNo, shopOrderLkl.getLkl_receive_trade_no(), logNo);
|
||||
Pair<Boolean, String> separateResult = innerDoOrderSeparateByMerchantAndLogNo(merchantNo, shopOrderLkl.getLkl_receive_trade_no(), shopOrderLkl.getLkl_receive_log_no());
|
||||
if (!separateResult.getFirst()) {
|
||||
|
||||
shopOrderLkl.setSeparate_msg(separateResult.getSecond());
|
||||
updateResult = shopOrderLklService.addOrUpdateByStoreOrder(shopOrderLkl);
|
||||
if (Boolean.FALSE.equals(updateResult)) {
|
||||
log.error("[确认收货通知] 更新订单信息失败: orderId={}", shopOrderLkl.getOrder_id());
|
||||
return JSONUtil.createObj().set("code", "FAIL").set("message", "更新订单信息失败!");
|
||||
}
|
||||
|
||||
log.error("[确认收货通知] 发起分账指令失败: orderId={}, reason={}", shopOrderLkl.getOrder_id(), separateResult.getSecond());
|
||||
return JSONUtil.createObj().set("code", "FAIL").set("message", "发起分账指令失败:" + separateResult.getSecond());
|
||||
}
|
||||
@ -2450,9 +2463,11 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
return Pair.of(false, "缺少必要参数");
|
||||
}
|
||||
|
||||
ShopOrderLkl shopOrderLkl = null;
|
||||
|
||||
try {
|
||||
// 2. 查询订单信息
|
||||
ShopOrderLkl shopOrderLkl = shopOrderLklService.getByLklMchNoAndReceiveTradeNoAndReceiveLogNo(lklMerchantNo, receiveTradeNo, receiveLogNo);
|
||||
shopOrderLkl = shopOrderLklService.getByLklMchNoAndReceiveTradeNoAndReceiveLogNo(lklMerchantNo, receiveTradeNo, receiveLogNo);
|
||||
if (shopOrderLkl == null) {
|
||||
log.warn("[分账操作] 未找到对应订单记录, lklMerchantNo={}, receiveTradeNo={}, receiveLogNo={}",
|
||||
lklMerchantNo, receiveTradeNo, receiveLogNo);
|
||||
@ -2566,6 +2581,11 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
|
||||
if (calcResult == null || !calcResult.getFirst() || calcResult.getSecond() == null) {
|
||||
log.error("[分账操作] 分账参数评估失败,无法分账, orderId={}, merchantNo={}", orderId, merchantNo);
|
||||
|
||||
// 更新分账出错信息
|
||||
shopOrderLkl.setSeparate_msg("分账数据评估,结果无法分账");
|
||||
shopOrderLklService.safeUpdate(shopOrderLkl);
|
||||
|
||||
return Pair.of(false, "分账数据评估,结果无法分账");
|
||||
}
|
||||
LklSeparateWithTotalAmountDTO lklSeparateDTO = calcResult.getSecond();
|
||||
@ -2588,6 +2608,11 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
if (existingSeparateRecord != null) {
|
||||
lklOrderSeparateService.updateRemark(existingSeparateRecord.getId(), errorMsg);
|
||||
}
|
||||
|
||||
// 更新分账出错信息
|
||||
shopOrderLkl.setSeparate_msg("订单可分账金额低于1分钱,无法分账");
|
||||
shopOrderLklService.safeUpdate(shopOrderLkl);
|
||||
|
||||
return Pair.of(false, "订单可分账金额低于1分钱");
|
||||
}
|
||||
|
||||
@ -2596,9 +2621,13 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
Integer agent1stAmount = lklSeparateDTO.getAgent1stAmount();
|
||||
Integer agent2ndAmount = lklSeparateDTO.getAgent2ndAmount();
|
||||
|
||||
log.info("[分账操作] 分账金额明细: orderId={}, merchantNo={}, 总金额={}分, 可分金额={}分, 商家分得={}分, 平台分得={}分, 省级代理商分得={}分, 县级代理商分得={}分, 配送费={}分",
|
||||
orderId, merchantNo, shopOrderLkl.getTotal_amt(), refCanSeparateAmt, merchantAmount,
|
||||
platformAmount, agent1stAmount, agent2ndAmount, shoppingFeeInner);
|
||||
String logMsg = String.format("[分账操作] 分账金额计算完成, orderId=%s, merchantNo=%s, 总金额=%d分, 可分金额=%d分, 配送费=%d分",
|
||||
orderId, merchantNo, shopOrderLkl.getTotal_amt(), refCanSeparateAmt, shoppingFeeInner);
|
||||
log.info(logMsg);
|
||||
|
||||
// 更新分账计算结果
|
||||
shopOrderLkl.setSeparate_msg(logMsg);
|
||||
shopOrderLklService.safeUpdate(shopOrderLkl);
|
||||
|
||||
// 构建分账接收方分账列表参数
|
||||
List<V3SacsSeparateRecvDatas> recvDatas = new ArrayList<>();
|
||||
@ -2675,7 +2704,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
if (StrUtil.isBlank(response)) {
|
||||
String errorMsg = String.format("[分账操作] 拉卡拉无响应, orderId=%s, merchantNo=%s, receiveLogNo=%s",
|
||||
orderId, merchantNo, shopOrderLkl.getLkl_receive_log_no());
|
||||
shopOrderLklService.updateSeparateStatusByReceiveLogNo(shopOrderLkl.getLkl_receive_log_no(), CommonConstant.Sta_Separate_Fail, "");
|
||||
shopOrderLklService.updateSeparateStatusByReceiveLogNo(shopOrderLkl.getLkl_receive_log_no(), CommonConstant.Sta_Separate_Fail, errorMsg);
|
||||
log.error(errorMsg);
|
||||
return Pair.of(false, "拉卡拉无响应");
|
||||
}
|
||||
@ -2687,13 +2716,13 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
if (respJson == null || !lklSacsSuccessCode.equals(respJson.getStr("code")) || respJson.getJSONObject("resp_data") == null) {
|
||||
String errorMsg = String.format("[分账操作] 拉卡拉返回格式异常, orderId=%s, merchantNo=%s, receiveLogNo=%s, response=%s",
|
||||
orderId, merchantNo, shopOrderLkl.getLkl_receive_log_no(), response);
|
||||
shopOrderLklService.updateSeparateStatusByReceiveLogNo(shopOrderLkl.getLkl_receive_log_no(), CommonConstant.Sta_Separate_Fail, "");
|
||||
shopOrderLklService.updateSeparateStatusByReceiveLogNo(shopOrderLkl.getLkl_receive_log_no(), CommonConstant.Sta_Separate_Fail, errorMsg);
|
||||
log.error(errorMsg);
|
||||
return Pair.of(false, "拉卡拉分账异常:[" + (respJson != null ? respJson.getStr("code") : "未知错误码") + "]" +
|
||||
(respJson != null ? respJson.getStr("msg") : "未知错误"));
|
||||
}
|
||||
|
||||
// 只有在分账请求成功发送后才更新分账备注
|
||||
// 分账请求成功发送后更新分账备注
|
||||
shopOrderLklService.safeUpdate(shopOrderLkl);
|
||||
|
||||
// 保存分账记录
|
||||
@ -2729,6 +2758,13 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
} catch (Exception e) {
|
||||
String errorMsg = String.format("[分账操作] 系统异常, receiveLogNo=%s, 错误=%s", receiveLogNo, e.getMessage());
|
||||
log.error(errorMsg, e);
|
||||
|
||||
if (shopOrderLkl != null) {
|
||||
shopOrderLkl.setSeparate_msg(errorMsg);
|
||||
shopOrderLkl.setSeparate_status(CommonConstant.Sta_Separate_Fail);
|
||||
shopOrderLklService.safeUpdate(shopOrderLkl);
|
||||
}
|
||||
|
||||
return Pair.of(false, "系统异常,请稍后重试");
|
||||
}
|
||||
}
|
||||
|
||||
@ -1519,14 +1519,11 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
|
||||
//修改退货订单及其相关商品为下一个待处理状态
|
||||
editShopOrderReturnAndItemNextState(return_ids, return_state_id, shopOrderReturn);
|
||||
|
||||
// 运费退款
|
||||
ShopOrderReturn return_order_shipping_fee_row = null;
|
||||
|
||||
// return_state_id 是当前状态(旧状态)
|
||||
if (ObjectUtil.equal(return_state_id, StateCode.RETURN_PROCESS_CHECK)) {
|
||||
// 同意退款退货,判断是否全部都退款退货,修改订单状态
|
||||
|
||||
UserDto user = getCurrentUser();
|
||||
// UserDto user = getCurrentUser();
|
||||
|
||||
for (ShopOrderReturn return_row : return_rows) {
|
||||
String order_id = return_row.getOrder_id();
|
||||
@ -1600,99 +1597,53 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
|
||||
StateCode.ORDER_STATE_RECEIVED,
|
||||
StateCode.ORDER_STATE_FINISH);
|
||||
if (order_state_id != null && !forbiddenStates.contains(order_state_id)) {
|
||||
// 取消订单,更改订单的状态为已取消
|
||||
// shopOrderBaseService.cancel(order_id, info_row, false);
|
||||
logger.info("处理运费和打包费事宜:{}", order_id);
|
||||
|
||||
ShopOrderData order_data_row = shopOrderDataService.get(order_id);
|
||||
|
||||
// 如果有打包费,最后的退款订单的退款金额加上 打包费
|
||||
if (order_data_row != null &&
|
||||
order_data_row.getPacking_fee() != null &&
|
||||
order_data_row.getPacking_fee().compareTo(BigDecimal.ZERO) > 0) {
|
||||
// 退款金额+打包费
|
||||
BigDecimal orderRefundAmountAddFee = NumberUtil.add(
|
||||
order_data_row.getOrder_refund_amount(),
|
||||
order_data_row.getPacking_fee());
|
||||
// 最后一个退款订单如果有打包费,加上打包费
|
||||
return_row.setReturn_refund_amount(orderRefundAmountAddFee);
|
||||
logger.debug("最后一个商品,已添加打包费到退款金额,订单ID: {}", order_id);
|
||||
}
|
||||
if (order_data_row != null) {
|
||||
BigDecimal additionalFees = BigDecimal.ZERO;
|
||||
List<String> feeTypes = new ArrayList<>();
|
||||
|
||||
|
||||
// 有运费的,重新生成一个运费退单
|
||||
// if (order_data_row != null &&
|
||||
// order_data_row.getOrder_shipping_fee_inner() != null &&
|
||||
// order_data_row.getOrder_shipping_fee_inner().compareTo(BigDecimal.ZERO) > 0) {
|
||||
// 注意:商家配置的配送费
|
||||
if (order_data_row != null &&
|
||||
order_data_row.getOrder_shipping_fee() != null &&
|
||||
order_data_row.getOrder_shipping_fee().compareTo(BigDecimal.ZERO) > 0) {
|
||||
// 运费大于0的, 执行退运费操作, 有两种方案,1、生成退运费售后服务单; 2、直接执行退款
|
||||
// 1、生成独立退运费售后服务单,需注意运费是退给运费代理商的,需要获取代理商的交易单号
|
||||
|
||||
return_order_shipping_fee_row = new ShopOrderReturn();
|
||||
|
||||
Integer buyer_user_id = info_row.getBuyer_user_id();
|
||||
Integer storeId = info_row.getStore_id();
|
||||
|
||||
// // 平台内部订单配送费
|
||||
// BigDecimal orderShippingFeeInner = order_data_row.getOrder_shipping_fee_inner();
|
||||
// if (orderShippingFeeInner == null || orderShippingFeeInner.compareTo(BigDecimal.ZERO) <= 0) {
|
||||
// orderShippingFeeInner = shopOrderLklService.getOrderShippingFeeInnerToDecimal(storeId, order_id);
|
||||
// }
|
||||
|
||||
// 商家设置的配送费
|
||||
BigDecimal orderShippingFee = order_data_row.getOrder_shipping_fee();
|
||||
|
||||
return_order_shipping_fee_row.setReturn_refund_amount(orderShippingFee); // 平台内部配送费退款金额
|
||||
|
||||
BigDecimal order_points_fee = ObjectUtil.defaultIfNull(order_data_row.getOrder_points_fee(), BigDecimal.ZERO);
|
||||
BigDecimal order_refund_agree_points = ObjectUtil.defaultIfNull(order_data_row.getOrder_refund_agree_points(), BigDecimal.ZERO);
|
||||
BigDecimal return_refund_point = NumberUtil.round(NumberUtil.sub(order_points_fee, order_refund_agree_points), 2);
|
||||
|
||||
return_order_shipping_fee_row.setOrder_id(order_id); // 订单编号
|
||||
return_order_shipping_fee_row.setBuyer_user_id(buyer_user_id);
|
||||
return_order_shipping_fee_row.setReturn_is_shipping_fee(1); //退货类型(BOOL): 0-退款单;1-退运费单
|
||||
return_order_shipping_fee_row.setReturn_reason_id(0);
|
||||
return_order_shipping_fee_row.setReturn_buyer_message(I18nUtil._("订单(配送费)退款"));
|
||||
return_order_shipping_fee_row.setStore_id(storeId);
|
||||
return_order_shipping_fee_row.setReturn_refund_point(NumberUtil.min(return_refund_point, orderShippingFee));
|
||||
return_order_shipping_fee_row.setReturn_add_time(now); // 添加时间
|
||||
return_order_shipping_fee_row.setReturn_tel("");
|
||||
|
||||
// 店铺审核操作员
|
||||
Integer storeUserId = user != null ? user.getId() : 0;
|
||||
return_order_shipping_fee_row.setReturn_store_user_id(storeUserId);
|
||||
return_order_shipping_fee_row.setReturn_telephone("");
|
||||
return_order_shipping_fee_row.setSubsite_id(info_row.getSubsite_id());
|
||||
|
||||
// update 2025-07-24
|
||||
return_order_shipping_fee_row.setReturn_flag(0); // 退货标识(BOOL): 0-正常退货;1-退货换货
|
||||
return_order_shipping_fee_row.setReturn_store_message(I18nUtil._("订单(配送费)退款"));
|
||||
return_order_shipping_fee_row.setReturn_finish_time(now);
|
||||
return_order_shipping_fee_row.setReturn_state_id(StateCode.RETURN_PROCESS_FINISH);
|
||||
return_order_shipping_fee_row.setReturn_is_paid(1);// 退款完成
|
||||
return_order_shipping_fee_row.setReturn_channel_code("lakala");
|
||||
return_order_shipping_fee_row.setPayment_channel_id(1416);
|
||||
|
||||
return_order_shipping_fee_row.setReturn_year(DateUtil.year(now)); // 退单年份-索引查询
|
||||
return_order_shipping_fee_row.setReturn_month(DateUtil.month(now) + 1); // 退单月份-索引查询
|
||||
return_order_shipping_fee_row.setReturn_day(DateUtil.dayOfMonth(now)); // 退单日-索引查询
|
||||
|
||||
// 生成退货单
|
||||
String type_code = stateCodeService.getCode(StateCode.ORDER_TYPE_FX, "state_code_code");
|
||||
String return_id = shopNumberSeqService.createNextSeq(type_code);
|
||||
return_order_shipping_fee_row.setReturn_id(return_id);
|
||||
|
||||
// 运费独立加一条退单记录
|
||||
if (!add(return_order_shipping_fee_row)) {
|
||||
logger.error("配送费退款订单生成失败!订单ID: {}", order_id);
|
||||
// 1、生成退运费售后服务单;
|
||||
throw new ApiException(I18nUtil._("配送费退款订单生成失败!"));
|
||||
// 处理打包费
|
||||
if (order_data_row.getPacking_fee() != null &&
|
||||
order_data_row.getPacking_fee().compareTo(BigDecimal.ZERO) > 0) {
|
||||
additionalFees = additionalFees.add(order_data_row.getPacking_fee());
|
||||
feeTypes.add("打包费");
|
||||
logger.debug("添加打包费: {},订单ID: {}", order_data_row.getPacking_fee(), order_id);
|
||||
}
|
||||
logger.info("配送费退款订单生成成功,退单号: {}", return_id);
|
||||
|
||||
// 处理配送费
|
||||
if (order_data_row.getOrder_shipping_fee() != null &&
|
||||
order_data_row.getOrder_shipping_fee().compareTo(BigDecimal.ZERO) > 0) {
|
||||
additionalFees = additionalFees.add(order_data_row.getOrder_shipping_fee());
|
||||
feeTypes.add("配送费");
|
||||
logger.debug("添加配送费: {},订单ID: {}", order_data_row.getOrder_shipping_fee(), order_id);
|
||||
}
|
||||
|
||||
// 更新退款金额和说明
|
||||
if (additionalFees.compareTo(BigDecimal.ZERO) > 0) {
|
||||
BigDecimal newRefundAmount = return_row.getReturn_refund_amount().add(additionalFees);
|
||||
return_row.setReturn_refund_amount(newRefundAmount);
|
||||
return_row.setReturn_state_id(StateCode.RETURN_PROCESS_FINISH);
|
||||
|
||||
// 构建费用说明
|
||||
String feeDescription = String.join("+", feeTypes);
|
||||
String returnStoreMessage = return_row.getReturn_store_message();
|
||||
if (StrUtil.isBlank(returnStoreMessage)) {
|
||||
returnStoreMessage = "商品退款";
|
||||
}
|
||||
return_row.setReturn_store_message(returnStoreMessage + "+" + feeDescription);
|
||||
|
||||
// 保存更新
|
||||
if (StrUtil.isNotBlank(return_row.getReturn_id()) && !edit(return_row)) {
|
||||
logger.error("更新退货单退款金额失败!退货单ID: {}", return_row.getReturn_id());
|
||||
throw new ApiException(ResultCode.FAILED);
|
||||
}
|
||||
logger.debug("成功更新退款金额,新增费用: {},总退款金额: {},订单ID: {}",
|
||||
additionalFees, newRefundAmount, order_id);
|
||||
}
|
||||
} else {
|
||||
logger.warn("未找到订单数据,无法处理费用,订单ID: {}", order_id);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1711,7 +1662,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
|
||||
// 修改订单同步状态, 可重新同步
|
||||
ShopOrderInfo orderInfo = new ShopOrderInfo();
|
||||
orderInfo.setOrder_id(order_id);
|
||||
orderInfo.setOrder_is_sync(0); // 订单同步状态
|
||||
orderInfo.setOrder_is_sync(0); // 是否ERP同步(BOOL):0-未同步; 1-已同步
|
||||
if (!shopOrderInfoService.edit(orderInfo)) {
|
||||
logger.error("修改订单同步状态失败!订单ID: {}", order_id);
|
||||
throw new ApiException(I18nUtil._("修改订单同步状态失败!"));
|
||||
@ -1726,20 +1677,18 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
|
||||
// 卖家账户扣款,买家账户增加
|
||||
// 佣金问题
|
||||
|
||||
shopOrderReturn.setReturn_is_paid(CommonConstant.Enable); // 0-退货未完成;1-退货完成
|
||||
shopOrderReturn.setReturn_finish_time(now);
|
||||
|
||||
List<ShopOrderReturn> returnOrder = new ArrayList<>();
|
||||
if (return_rows != null) {
|
||||
returnOrder.addAll(return_rows);
|
||||
}
|
||||
if (return_order_shipping_fee_row != null) {
|
||||
returnOrder.add(return_order_shipping_fee_row);
|
||||
}
|
||||
// List<ShopOrderReturn> returnOrder = new ArrayList<>();
|
||||
// if (return_rows != null) {
|
||||
// returnOrder.addAll(return_rows);
|
||||
// }
|
||||
// if (return_order_shipping_fee_row != null) {
|
||||
// returnOrder.add(return_order_shipping_fee_row);
|
||||
// }
|
||||
|
||||
// 重要:执行退款操作
|
||||
try {
|
||||
if (!payService.doRefund(returnOrder)) {
|
||||
if (!payService.doRefund(return_rows)) {
|
||||
logger.error("执行退款操作失败!退单列表: {}", return_ids);
|
||||
throw new ApiException("余额不足,请稍后重试");
|
||||
}
|
||||
@ -1752,6 +1701,9 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
|
||||
logger.info("退款操作执行成功,退单列表: {}", return_ids);
|
||||
|
||||
// 更新退货单的退款完成状态和完成时间
|
||||
// shopOrderReturn.setReturn_is_paid(CommonConstant.Enable); // 0-退货未完成;1-退货完成
|
||||
// shopOrderReturn.setReturn_finish_time(now);
|
||||
//
|
||||
ShopOrderReturn updateRefundStatus = new ShopOrderReturn();
|
||||
updateRefundStatus.setReturn_is_paid(1); // 0-退货未完成;1-退货完成
|
||||
updateRefundStatus.setReturn_finish_time(now);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user