fix bug 退款运费问题, 砍价活动,截止时间问题

This commit is contained in:
Jack 2025-07-25 12:04:40 +08:00
parent 5816a0d19b
commit bbf38e0f1b
6 changed files with 147 additions and 82 deletions

View File

@ -2607,10 +2607,10 @@ public class AccountUserBaseServiceImpl extends BaseServiceImpl<AccountUserBaseM
return false;
}
// TODO 此处测试用途 生产部署之后正式加上验证校验
if ("9999".equals(verifyCode)) {
return true;
}
// TODO 此处测试用途 生产部署之后删除9999正式加上验证校验
// if ("9999".equals(verifyCode)) {
// return true;
// }
// 带国家码手机号码
number = PhoneNumberUtils.convZhPhoneNumber(number);

File diff suppressed because one or more lines are too long

View File

@ -307,12 +307,12 @@ public class ShopActivityCutpriceServiceImpl extends BaseServiceImpl<ShopActivit
activity_row.put("activity_rule", JSONUtil.parseObj(activity_row.get("activity_rule")));
// 砍价订单有效期时长
if (cutprice_row != null && cutprice_row.getAc_datetime() != null) {
Float order_cutprice_time = accountBaseConfigService.getConfig("order_cutprice_time", 3f);
int second = NumberUtil.mul(order_cutprice_time, 24, 60, 60).intValue();
long time = DateUtil.offsetSecond(cutprice_row.getAc_datetime(), +second).getTime();
activity_row.put("activity_endtime", Convert.toDate(time));
}
// if (cutprice_row != null && cutprice_row.getAc_datetime() != null) {
// Float order_cutprice_time = accountBaseConfigService.getConfig("order_cutprice_time", 3f);
// int second = NumberUtil.mul(order_cutprice_time, 24, 60, 60).intValue();
// long time = DateUtil.offsetSecond(cutprice_row.getAc_datetime(), +second).getTime();
// activity_row.put("activity_endtime", Convert.toDate(time));
// }
return activity_row;
}

View File

@ -63,6 +63,7 @@ public class LibraryProductImpl extends BaseServiceImpl<LibraryProductMapper, Li
if (StrUtil.isBlank(tengxunEndpoint)) {
tengxunEndpoint = staticDomain;
} else {
// TODO 后期从配置文件里获取不能写死
tengxunEndpoint = "https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com";
}
String finalTengxunEndpoint = tengxunEndpoint;

View File

@ -1304,11 +1304,11 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
* @param return_ids 退单编号 return_ids return_rows 必须一个有值
* @param return_rows 退单数据 return_ids return_rows 必须一个有值
* @param return_curr_state_id 当前退单状态
* RETURN_PROCESS_SUBMIT = 3100; //客户提交退单1ReturnReturn
* RETURN_PROCESS_CHECK = 3105; //退单审核1ReturnReturn
* RETURN_PROCESS_RECEIVED = 3110; //收货确认0ReturnReturn
* RETURN_PROCESS_REFUND = 3115; //退款确认0ReturnReturn
* RETURN_PROCESS_RECEIPT_CONFIRMATION = 3120; //[客户收款确认0 ReturnReturn
* RETURN_PROCESS_SUBMIT = 3100; //客户提交退单1
* RETURN_PROCESS_CHECK = 3105; //退单审核1
* RETURN_PROCESS_RECEIVED = 3110; //收货确认0
* RETURN_PROCESS_REFUND = 3115; //退款确认0
* RETURN_PROCESS_RECEIPT_CONFIRMATION = 3120; //[客户收款确认0
* RETURN_PROCESS_FINISH = 3125; //完成1退货退款
* RETURN_PROCESS_REFUSED = 3130; //-商家拒绝退货
* RETURN_PROCESS_CANCEL = 3135; //-买家取消退款
@ -1335,21 +1335,21 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
switch (return_curr_state_id) {
case StateCode.RETURN_PROCESS_CHECK:
// 退单审核1ReturnReturn
// 退单审核1
if (ifReview(return_state_id)) {
review_ids.add(return_id);
}
break;
case StateCode.RETURN_PROCESS_RECEIVED:
// 收货确认0ReturnReturn
// 收货确认0
if (ifReceived(return_state_id)) {
review_ids.add(return_id);
}
break;
case StateCode.RETURN_PROCESS_REFUND:
// 退款确认0ReturnReturn
// 退款确认0
Integer return_is_paid = return_row.getReturn_is_paid();
if (ifRefund(return_state_id, return_is_paid)) {
review_ids.add(return_id);
@ -1367,7 +1367,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
ShopOrderReturn return_row = return_rows.get(0);
Integer store_id = return_row.getStore_id();
// 重要退款 加库存改状态
// RMK 重要方法退款 加库存改状态
editNextState(review_ids, store_id, return_curr_state_id, return_rows, return_next_state_id);
return true;
@ -1379,11 +1379,11 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
* @param return_ids 退货订单id
* @param store_id 所属店铺
* @param return_state_id 当前退单状态
* RETURN_PROCESS_SUBMIT = 3100; //客户提交退单1ReturnReturn
* RETURN_PROCESS_CHECK = 3105; //退单审核1ReturnReturn
* RETURN_PROCESS_RECEIVED = 3110; //收货确认0ReturnReturn
* RETURN_PROCESS_REFUND = 3115; //退款确认0ReturnReturn
* RETURN_PROCESS_RECEIPT_CONFIRMATION = 3120; //[客户收款确认0 ReturnReturn
* RETURN_PROCESS_SUBMIT = 3100; //客户提交退单1
* RETURN_PROCESS_CHECK = 3105; //退单审核1
* RETURN_PROCESS_RECEIVED = 3110; //收货确认0
* RETURN_PROCESS_REFUND = 3115; //退款确认0
* RETURN_PROCESS_RECEIPT_CONFIRMATION = 3120; //[客户收款确认0
* RETURN_PROCESS_FINISH = 3125; //完成1退货退款
* RETURN_PROCESS_REFUSED = 3130; //-商家拒绝退货
* RETURN_PROCESS_CANCEL = 3135; //-买家取消退款
@ -1401,7 +1401,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
ShopOrderReturn shopOrderReturn = new ShopOrderReturn();
shopOrderReturn.setReturn_state_id(return_next_state_id);
//商家 收货确认0ReturnReturn增加库存
//商家 收货确认0增加库存
if (ObjectUtil.equal(return_state_id, StateCode.RETURN_PROCESS_RECEIVED)) {
//查询订单退货详情表得到退货商品数量
QueryWrapper<ShopOrderReturnItem> returnItemQueryWrapper = new QueryWrapper<>();
@ -1444,30 +1444,36 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
}
}
// 判断是否需要退款
if (shopStoreConfigService.checkNeedRefund(return_state_id, return_next_state_id)) {
// 执行真正退款逻辑
// 卖家账户扣款买家账户增加
// 佣金问题
shopOrderReturn.setReturn_is_paid(1);
shopOrderReturn.setReturn_finish_time(new Date());
Date now = new Date();
// 执行退款操作
if (!payService.doRefund(return_rows)) {
throw new ApiException(ResultCode.FAILED);
}
}
// // 判断是否需要退款
// if (shopStoreConfigService.checkNeedRefund(return_state_id, return_next_state_id)) {
// // 执行真正退款逻辑
// // 卖家账户扣款买家账户增加
// // 佣金问题
// shopOrderReturn.setReturn_is_paid(1); // 0-退货未完成1-退货完成
// shopOrderReturn.setReturn_finish_time(now);
//
// // 执行退款操作
// if (!payService.doRefund(return_rows)) {
// throw new ApiException(ResultCode.FAILED);
// }
// }
//修改退货订单及其相关商品为下一个待处理状态
editShopOrderReturnAndItemNextState(return_ids, return_state_id, shopOrderReturn);
// 当前状态旧状态
// return_state_id 当前状态旧状态
if (ObjectUtil.equal(return_state_id, StateCode.RETURN_PROCESS_CHECK)) {
// 同意退款退货判断是否全部都退款退货修改订单状态
// todo 判断是否全部退货
UserDto user = getCurrentUser();
for (ShopOrderReturn return_row : return_rows) {
String order_id = return_row.getOrder_id();
//退货类型(BOOL): 0-退款单;1-退运费单
Integer return_is_shipping_fee = return_row.getReturn_is_shipping_fee();
if (CheckUtil.isEmpty(return_is_shipping_fee)) {
@ -1486,6 +1492,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
// 全部退款完成
if (ObjectUtil.compare(order_item_payment_amount, return_item_subtotal) == 0) {
ShopOrderData shopOrderData = new ShopOrderData();
shopOrderData.setOrder_id(order_id);
shopOrderData.setOrder_refund_status(2);
@ -1496,9 +1503,13 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
// 取消订单
ShopOrderInfo info_row = shopOrderInfoService.get(order_id);
Integer order_state_id = info_row.getOrder_state_id();
// 没有发货没有完成订单之前允许取消订单和退运费
if (!Arrays.asList(StateCode.ORDER_STATE_SHIPPED, StateCode.ORDER_STATE_RECEIVED, StateCode.ORDER_STATE_FINISH).contains(order_state_id)) {
// 取消订单,更改订单的状态为已取消
shopOrderBaseService.cancel(order_id, info_row, false);
// logger.info("全部退款完成,取消订单:{}", order_id);
// todo 未发货退运费 - 判断运费是否存在
ShopOrderData order_data_row = shopOrderDataService.get(order_id);
@ -1506,12 +1517,11 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
// 运费大于0的 执行退运费操作, 有两种方案1生成退运费售后服务单 2直接执行退款
// 1生成退运费售后服务单
UserDto user = getCurrentUser();
ShopOrderReturn return_order_shipping_fee_row = new ShopOrderReturn();
Integer buyer_user_id = info_row.getBuyer_user_id();
Integer storeId = info_row.getStore_id();
// 订单运费
BigDecimal order_shipping_fee = order_data_row.getOrder_shipping_fee();
BigDecimal order_points_fee = order_data_row.getOrder_points_fee();
BigDecimal order_refund_agree_points = order_data_row.getOrder_refund_agree_points();
@ -1519,22 +1529,33 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
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);
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_amount(order_shipping_fee);
return_order_shipping_fee_row.setReturn_refund_point(NumberUtil.min(return_refund_point, order_shipping_fee));
return_order_shipping_fee_row.setReturn_state_id(StateCode.RETURN_PROCESS_CHECK);
return_order_shipping_fee_row.setReturn_add_time(new Date()); // 添加时间
// return_order_shipping_fee_row.setReturn_state_id(StateCode.RETURN_PROCESS_CHECK);
return_order_shipping_fee_row.setReturn_add_time(now); // 添加时间
return_order_shipping_fee_row.setReturn_tel("");
return_order_shipping_fee_row.setReturn_store_user_id(user.getId());
// 店铺审核操作员
Integer storeUserId = user == null ? 0 : user.getId();
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());
String type_code = stateCodeService.getCode(StateCode.ORDER_TYPE_FX, "state_code_code");
String return_id = shopNumberSeqService.createNextSeq(type_code);
// 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_id(return_id);
if (!add(return_order_shipping_fee_row)) {
// 1生成退运费售后服务单
@ -1544,16 +1565,25 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
// 修正退款总额 加上运费的
ShopOrderData orderData = shopOrderDataService.get(order_id);
BigDecimal order_refund_amount = orderData.getOrder_refund_amount();
orderData.setOrder_refund_amount(NumberUtil.add(order_refund_amount, order_shipping_fee));
// 退款金额+运费
BigDecimal order_refund_amount_add_fee = NumberUtil.add(order_refund_amount, order_shipping_fee);
orderData.setOrder_refund_amount(order_refund_amount_add_fee);
if (!shopOrderDataService.edit(orderData)) {
throw new ApiException(I18nUtil._("修改订单退款总额(加运费)失败!"));
}
// RMK: 加上运费没有后续了吗
// 最后一个退款订单如果有运费加上运费
return_row.setReturn_refund_amount(order_refund_amount_add_fee);
}
}
} else {
// 部分退款
// 退款一部分商品
ShopOrderData orderData = new ShopOrderData();
orderData.setOrder_id(order_id);
orderData.setOrder_refund_status(1);
orderData.setOrder_refund_status(CommonConstant.Enable);
if (!shopOrderDataService.edit(orderData)) {
throw new ApiException(I18nUtil._("部分退款失败!"));
}
@ -1570,6 +1600,21 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
}
}
// 判断是否需要退款
if (shopStoreConfigService.checkNeedRefund(return_state_id, return_next_state_id)) {
// 执行真正退款逻辑
// 卖家账户扣款买家账户增加
// 佣金问题
shopOrderReturn.setReturn_is_paid(1); // 0-退货未完成1-退货完成
shopOrderReturn.setReturn_finish_time(now);
// 执行退款操作
if (!payService.doRefund(return_rows)) {
throw new ApiException(ResultCode.FAILED);
}
}
return true;
}

View File

@ -153,48 +153,62 @@ sf-express:
enable: 2
#拉卡拉进件配置
lakala:
# #服务地址
# server_url: https://s2.lakala.com
# #应用Id
# app_id: OP10000439
# #商户证书序列号
# serial_no: 1737359895636
# #商户证书
# api_cert_path: payKey/lakala/prod/api_cert.cer
# #商户私钥
# api_pri_key_path: payKey/lakala/prod/api_private_key.pem
# #拉卡拉平台证书
# lkl_platform_cer_path: payKey/lakala/prod/lkl_platform.cer
# #机构代码
# org_code: 980688
#服务地址
server_url: https://test.wsmsd.cn/sit
server_url: https://s2.lakala.com
#应用Id
app_id: OP00000003
app_id: OP10000439
#商户证书序列号
serial_no: 00dfba8194c41b84cf
serial_no: 1737359895636
#商户证书
api_cert_path: payKey/lakala/dev/OP00000003_cert.cer
api_cert_path: payKey/lakala/prod/api_cert.cer
#商户私钥
api_pri_key_path: payKey/lakala/dev/OP00000003_private_key.pem
api_pri_key_path: payKey/lakala/prod/api_private_key.pem
#拉卡拉平台证书
lkl_platform_cer_path: payKey/lakala/dev/lkl_notify_cert_v2.cer
lkl_platform_cer_path: payKey/lakala/prod/lkl_platform.cer
#机构代码
org_code: 1951582
is_prod: false
#拉卡拉拓客进件配置
org_code: 980688
is_prod: true
tk:
#服务地址
server_url: https://test.wsmsd.cn
server_url: https://tkapi.lakala.com
client_id: lsycs
client_secret: XPa1HB5d55Ig0qV8
user_no: 29153396
split_lowest_ratio: 70.00
wx_fee: 0.6 # 微信手续费 6/1000
api_pub_key_path: payKey/lakala/dev/tk_api_public_key.txt
api_pri_key_path: payKey/lakala/dev/tk_api_private_key.txt
notify_pub_key_path: payKey/lakala/dev/tk_notify_public_key.txt
notify_pri_key_path: payKey/lakala/dev/tk_notify_private_key.txt
wx_fee: 0.25 # 微信手续费 6/1000
api_pub_key_path: payKey/lakala/prod/tk_api_public_key.txt
api_pri_key_path: payKey/lakala/prod/tk_api_private_key.txt
notify_pub_key_path: payKey/lakala/prod/tk_notify_public_key.txt
notify_pri_key_path: payKey/lakala/prod/tk_notify_private_key.txt
# #服务地址
# server_url: https://test.wsmsd.cn/sit
# #应用Id
# app_id: OP00000003
# #商户证书序列号
# serial_no: 00dfba8194c41b84cf
# #商户证书
# api_cert_path: payKey/lakala/dev/OP00000003_cert.cer
# #商户私钥
# api_pri_key_path: payKey/lakala/dev/OP00000003_private_key.pem
# #拉卡拉平台证书
# lkl_platform_cer_path: payKey/lakala/dev/lkl_notify_cert_v2.cer
# #机构代码
# org_code: 1951582
# is_prod: false
# #拉卡拉拓客进件配置
# tk:
# #服务地址
# server_url: https://test.wsmsd.cn
# client_id: lsycs
# client_secret: XPa1HB5d55Ig0qV8
# user_no: 29153396
# split_lowest_ratio: 70.00
# wx_fee: 0.6 # 微信手续费 6/1000
# api_pub_key_path: payKey/lakala/dev/tk_api_public_key.txt
# api_pri_key_path: payKey/lakala/dev/tk_api_private_key.txt
# notify_pub_key_path: payKey/lakala/dev/tk_notify_public_key.txt
# notify_pri_key_path: payKey/lakala/dev/tk_notify_private_key.txt
#e签宝配置
esign:
server_url: https://smlopenapi.esign.cn