预约订单校验 修改逻辑
This commit is contained in:
parent
dfab392ed6
commit
9b5c618c40
@ -2924,7 +2924,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
// 3. 提取关键参数并校验 - 确保必要参数完整
|
||||
String logNo = paramsJson.getStr("log_no"); // 合单订单是子单(确认收货)流水号,非合单时是主单(确认收货)流水号
|
||||
String separateNo = paramsJson.getStr("separate_no");
|
||||
String outSeparateNo = paramsJson.getStr("out_separate_no");
|
||||
String outSeparateNo = paramsJson.getStr("out_separate_no"); // 商城的订单号
|
||||
String status = paramsJson.getStr("status");
|
||||
String finalStatus = paramsJson.getStr("final_status");
|
||||
|
||||
@ -3758,17 +3758,17 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
request.setMerchantNo(mercId);
|
||||
request.setMerOrderNo(merOrderNo);
|
||||
request.setPayType(payType);
|
||||
request.setNotifyUrl(projectDomain + "/api/mobile/shop/lakala/ewallet/drawNotify");
|
||||
|
||||
// 分转元,保留两位小数点,不要四舍五入
|
||||
String drawAmtYuan = drawAmtDecimal.divide(BigDecimal.valueOf(100), 2, RoundingMode.DOWN).toString();
|
||||
request.setDrawAmt(drawAmtYuan); // 单位:元
|
||||
request.setRemark(remark);
|
||||
|
||||
if (StrUtil.isNotBlank(summary)) {
|
||||
request.setSummary(summary);
|
||||
}
|
||||
|
||||
request.setNotifyUrl(projectDomain + "/api/mobile/shop/lakala/ewallet/drawNotify");
|
||||
|
||||
// 4. 发送请求
|
||||
String responseStr = LKLSDK.httpPost(request);
|
||||
if (StrUtil.isBlank(responseStr)) {
|
||||
@ -3840,16 +3840,19 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
*/
|
||||
@Override
|
||||
public JSONObject ewalletWithDrawNotify(HttpServletRequest request, String merchantNo, String drawJnl) {
|
||||
log.debug("[拉卡拉D1提现结果通知] 开始处理拉卡拉提现结果通知");
|
||||
String signTag = "[拉卡拉提现结果通知]";
|
||||
|
||||
log.debug("{} 开始处理", signTag);
|
||||
|
||||
try {
|
||||
JSONObject paramsJSON;
|
||||
|
||||
Pair<Boolean, String> signCheckResult = null;
|
||||
if (request != null) {
|
||||
// 1. 验签处理 - 验证通知来源的合法性
|
||||
signCheckResult = LakalaUtil.chkLklApiNotifySign(request, lklNotifyCerPath, false);
|
||||
if (signCheckResult != null && !signCheckResult.getFirst()) {
|
||||
log.warn("[拉卡拉D1提现结果通知] 验签失败: {}", signCheckResult.getSecond());
|
||||
log.warn("{} 验签失败: {}", signTag, signCheckResult.getSecond());
|
||||
return JSONUtil.createObj()
|
||||
.set("code", "FAIL")
|
||||
.set("message", signCheckResult.getSecond());
|
||||
@ -3859,12 +3862,12 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
paramsJSON = JSONUtil.parseObj(signCheckResult.getSecond());
|
||||
} else {
|
||||
// 补偿机制。主动从拉卡拉上获取提现结果
|
||||
signTag = "[查询拉卡拉提现结果补偿]";
|
||||
paramsJSON = ewalletWithdrawQuery(merchantNo, drawJnl);
|
||||
}
|
||||
|
||||
|
||||
if (JSONUtil.isNull(paramsJSON)) {
|
||||
log.warn("[拉卡拉D1提现结果通知] 回调参数解析失败");
|
||||
log.warn("{} 回调参数解析失败", signTag);
|
||||
return JSONUtil.createObj()
|
||||
.set("code", "FAIL")
|
||||
.set("message", "回调参数解析失败");
|
||||
@ -3875,10 +3878,10 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
String merOrderNo = paramsJSON.getStr("merOrderNo");
|
||||
String drawJnlRemote = paramsJSON.getStr("drawJnl");
|
||||
|
||||
log.info("[拉卡拉D1提现结果通知] 提现通知参数: drawState={}, mercId={}, merOrderNo={},drawJnlRemote={}", drawState, mercId, merOrderNo, drawJnlRemote);
|
||||
log.info("{} 提现通知参数: drawState={}, mercId={}, merOrderNo={},drawJnlRemote={}", signTag, drawState, mercId, merOrderNo, drawJnlRemote);
|
||||
|
||||
if (StrUtil.hasBlank(mercId, merOrderNo, drawJnl, drawState)) {
|
||||
log.warn("[拉卡拉提现结果通知] 回调参数缺失: drawState={}, mercId={}, merOrderNo={}, drawJnlRemote={}", drawState, mercId, merOrderNo, drawJnlRemote);
|
||||
log.warn("{} 回调参数缺失: drawState={}, mercId={}, merOrderNo={}, drawJnlRemote={}", signTag, drawState, mercId, merOrderNo, drawJnlRemote);
|
||||
return JSONUtil.createObj()
|
||||
.set("code", "FAIL")
|
||||
.set("message", "回调参数错误");
|
||||
@ -3886,7 +3889,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
|
||||
Boolean isCompensate = lklOrderDrawService.isOrderDrawed(mercId, drawJnl);
|
||||
if (isCompensate) {
|
||||
log.warn("[拉卡拉D1提现结果通知] 提现结果通知已处理,忽略处理: mercId={}, merOrderNo={}, drawJnl={}", mercId, merOrderNo, drawJnl);
|
||||
log.warn("{} 提现结果通知已处理,忽略处理: mercId={}, merOrderNo={}, drawJnl={}", signTag, mercId, merOrderNo, drawJnl);
|
||||
return JSONUtil.createObj()
|
||||
.set("code", "SUCCESS")
|
||||
.set("message", "提现结果通知已处理");
|
||||
@ -3894,7 +3897,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
|
||||
// 只处理成功的提现状态
|
||||
if (!"DRAW.SUCCESS".equals(drawState)) {
|
||||
log.debug("[拉卡拉D1提现结果通知] 提现状态未成功,忽略处理: drawState={}", drawState);
|
||||
log.debug("{} 提现状态未成功,忽略处理: drawState={}", signTag, drawState);
|
||||
return JSONUtil.createObj()
|
||||
.set("code", "FAIL") // 返回成功,避免重复通知
|
||||
.set("message", "状态未成功,忽略处理");
|
||||
@ -3903,7 +3906,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
// 3. 转换参数并更新数据
|
||||
String snakeCaseJson = StringUtils.convertCamelToSnake(signCheckResult.getSecond());
|
||||
if (StringUtils.isBlank(snakeCaseJson)) {
|
||||
log.error("[拉卡拉D1提现结果通知] 回调参数转换失败,mercId={} merOrderNo={}", mercId, merOrderNo);
|
||||
log.error("{} 回调参数转换失败,mercId={} merOrderNo={}", signTag, mercId, merOrderNo);
|
||||
return JSONUtil.createObj()
|
||||
.set("code", "FAIL")
|
||||
.set("message", "回调参数转换失败");
|
||||
@ -3911,21 +3914,22 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
|
||||
LklOrderDraw lklOrderDraw = JSONUtil.toBean(snakeCaseJson, LklOrderDraw.class);
|
||||
if (lklOrderDraw == null) {
|
||||
log.error("[拉卡拉D1提现结果通知] 回调参数转换为对象失败,mercId={} merOrderNo={}", mercId, merOrderNo);
|
||||
log.error("{} 回调参数转换为对象失败,mercId={} merOrderNo={}", signTag, mercId, merOrderNo);
|
||||
return JSONUtil.createObj()
|
||||
.set("code", "FAIL")
|
||||
.set("message", "回调参数转换失败");
|
||||
}
|
||||
|
||||
lklOrderDraw.setRemark(lklOrderDraw.getRemark() + " " + signTag);
|
||||
boolean isSuccess = lklOrderDrawService.addOrUpdateByMercIdAndMerOrderNo(lklOrderDraw);
|
||||
if (!isSuccess) {
|
||||
log.error("[拉卡拉D1提现结果通知] 数据更新失败,mercId={} merOrderNo={}", mercId, merOrderNo);
|
||||
log.error("{} 数据更新失败,mercId={} merOrderNo={}", signTag, mercId, merOrderNo);
|
||||
return JSONUtil.createObj()
|
||||
.set("code", "FAIL")
|
||||
.set("message", "数据更新失败");
|
||||
}
|
||||
|
||||
log.info("[拉卡拉D1提现结果通知] 拉卡拉提现结果通知处理成功,mercId={} merOrderNo={}", mercId, merOrderNo);
|
||||
log.info("{} 拉卡拉提现结果通知处理成功,mercId={} merOrderNo={}", signTag, mercId, merOrderNo);
|
||||
|
||||
// 4. 返回成功响应
|
||||
return JSONUtil.createObj()
|
||||
@ -3933,7 +3937,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
.set("message", "处理成功");
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("[拉卡拉D1提现结果通知] 处理拉卡拉提现结果通知异常", e);
|
||||
log.error(signTag + " 处理拉卡拉提现结果通知异常", e);
|
||||
return JSONUtil.createObj()
|
||||
.set("code", "FAIL")
|
||||
.set("message", "系统处理异常");
|
||||
|
||||
@ -901,12 +901,15 @@ public class ShopOrderInfoServiceImpl extends BaseServiceImpl<ShopOrderInfoMappe
|
||||
}
|
||||
|
||||
if (StrUtil.isBlank(shopStoreInfo.getStore_opening_hours()) || StrUtil.isBlank(shopStoreInfo.getStore_close_hours())) {
|
||||
return Pair.of(false, "[预约订单校验] 店铺营业时间未设置,请联系商家");
|
||||
shopStoreInfo.setStore_opening_hours("09:00");
|
||||
shopStoreInfo.setStore_close_hours("06:00");
|
||||
logger.warn("[预约订单校验] 店铺营业时间未设置,请联系商家,默认指定 {}-{}", shopStoreInfo.getStore_opening_hours(), shopStoreInfo.getStore_close_hours());
|
||||
}
|
||||
|
||||
// 6. 店铺营业时间检查
|
||||
if (!DateTimeUtils.isTimeInRange(shopStoreInfo.getStore_opening_hours(), shopStoreInfo.getStore_close_hours(), bookingBeginTime)) {
|
||||
return Pair.of(false, "[预约订单校验] 请在店铺营业时间内预约下单");
|
||||
String message = StrUtil.format("[预约订单校验] 请在 {}-{} 店铺营业时间内预约下单", shopStoreInfo.getStore_opening_hours(), shopStoreInfo.getStore_close_hours());
|
||||
return Pair.of(false, message);
|
||||
}
|
||||
|
||||
// 7. 预约时间范围检查 - 仅能预约50分钟后的订单(防止用户在下单页面停留太长,45分钟也是可以通过的)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user