编写禁止退货的方法
This commit is contained in:
parent
501d3761e6
commit
10bc17df0e
@ -110,6 +110,9 @@ public class LklOrderDraw {
|
||||
@ApiModelProperty(value = "商户订单号", example = "MER2023100100001")
|
||||
private String mer_order_no;
|
||||
|
||||
@ApiModelProperty(value = "商城订单Id")
|
||||
private String order_id;
|
||||
|
||||
/**
|
||||
* 结算流水号
|
||||
*/
|
||||
|
||||
@ -49,7 +49,7 @@ public class LakalaAdminController extends BaseControllerImpl {
|
||||
}
|
||||
|
||||
// 执行业务逻辑
|
||||
Boolean success = lakalaPayService.ewalletWithDrawD1(paramsJSON.getStr("mercId"), paramsJSON.getStr("merOrderNo"), paramsJSON.getStr("drawAmt"), paramsJSON.getStr("summary"));
|
||||
Boolean success = lakalaPayService.ewalletWithDrawD1(paramsJSON.getStr("mercId"), paramsJSON.getStr("merOrderNo"), paramsJSON.getStr("drawAmt"), paramsJSON.getStr("orderId"), paramsJSON.getStr("summary"));
|
||||
if (success) {
|
||||
return CommonResult.success("账户D1提现提交成功");
|
||||
}
|
||||
|
||||
@ -340,9 +340,10 @@ public interface LakalaApiService {
|
||||
* @param mercId 822商户号或receiveNo
|
||||
* @param merOrderNo 商户订单号
|
||||
* @param drawAmt 提现金额(分)
|
||||
* @param orderId 商城订单Id
|
||||
* @param summary
|
||||
*/
|
||||
Boolean ewalletWithDrawD1(String mercId, String merOrderNo, String drawAmt, String summary);
|
||||
Boolean ewalletWithDrawD1(String mercId, String merOrderNo, String drawAmt, String orderId, String summary);
|
||||
|
||||
/**
|
||||
* 拉卡拉账户D1提现结果通知
|
||||
|
||||
@ -29,4 +29,12 @@ public interface LklOrderDrawService extends IBaseService<LklOrderDraw> {
|
||||
* @return
|
||||
*/
|
||||
LklOrderDraw getByByMercIdAndMerOrderNo(String mercId, String merOrderNo);
|
||||
|
||||
/**
|
||||
* 判断订单是否已经提现完成
|
||||
*
|
||||
* @param orderId
|
||||
* @return
|
||||
*/
|
||||
Boolean isOrderDrawed(String orderId);
|
||||
}
|
||||
|
||||
@ -2808,11 +2808,12 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
public JSONObject sacsSeparateNotify(HttpServletRequest request, String merchantNoParam, String separateNoParam) {
|
||||
String channel = "";
|
||||
try {
|
||||
JSONObject paramsJson = null;
|
||||
JSONObject paramsJson;
|
||||
if (!StrUtil.hasBlank(merchantNoParam, separateNoParam)) {
|
||||
channel = "(补偿)";
|
||||
log.info("[拉卡拉分账通知] 开始处理拉卡拉分账结果通知异步回调{},merchantNoParam={},separateNoParam={}",
|
||||
channel, merchantNoParam, separateNoParam);
|
||||
// 主动从拉卡拉获取分账结果
|
||||
paramsJson = sacsQuery(merchantNoParam, separateNoParam);
|
||||
} else {
|
||||
log.info("[拉卡拉分账通知] 开始处理拉卡拉分账结果通知异步回调");
|
||||
@ -2931,13 +2932,15 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 分账成功之后,立即申请提现
|
||||
String recvNo = Convert.toStr(detailData.get("recv_no"), "");
|
||||
String amt = Convert.toStr(detailData.get("amt"), "");
|
||||
if (StrUtil.isNotBlank(recvNo) && StrUtil.isNotBlank(amt)) {
|
||||
String outSeparateNoTemp = String.format("%s_%d", outSeparateNo, idx);
|
||||
Boolean drawSuccess = ewalletWithDrawD1(recvNo, outSeparateNoTemp, amt, JSONUtil.toJsonStr(detailDatas));
|
||||
String merOrderNo = String.format("%s_%d", outSeparateNo, idx);
|
||||
// 账户D1提现
|
||||
Boolean drawSuccess = ewalletWithDrawD1(recvNo, merOrderNo, amt, outSeparateNo, JSONUtil.toJsonStr(detailDatas));
|
||||
log.info("[拉卡拉分账通知] 账户D1提现{},商户号={},分账单号={},金额={}分",
|
||||
Boolean.TRUE.equals(drawSuccess) ? "成功" : "失败", recvNo, outSeparateNoTemp, amt);
|
||||
Boolean.TRUE.equals(drawSuccess) ? "成功" : "失败", recvNo, merOrderNo, amt);
|
||||
idx++;
|
||||
}
|
||||
}
|
||||
@ -3508,11 +3511,12 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
* @param mercId 822商户号或receiveNo
|
||||
* @param merOrderNo 商户订单号
|
||||
* @param drawAmt 提现金额(分)
|
||||
* @param orderId 商城订单Id
|
||||
* @param summary 摘要信息
|
||||
* @return 操作结果,成功返回true,失败返回false
|
||||
*/
|
||||
@Override
|
||||
public Boolean ewalletWithDrawD1(String mercId, String merOrderNo, String drawAmt, String summary) {
|
||||
public Boolean ewalletWithDrawD1(String mercId, String merOrderNo, String drawAmt, String orderId, String summary) {
|
||||
// 1. 参数校验
|
||||
if (StrUtil.hasBlank(mercId, merOrderNo, drawAmt)) {
|
||||
log.warn("[D1提现申请] D1提现参数校验失败,关键参数为空: mercId={}, merOrderNo={}, drawAmt={}",
|
||||
@ -3557,7 +3561,8 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
if (StrUtil.isNotBlank(summary)) {
|
||||
request.setSummary(summary);
|
||||
}
|
||||
request.setNotifyUrl(projectDomain + "/api/mobile/shop/lakala/ewallet/ewallet/drawNotify");
|
||||
|
||||
request.setNotifyUrl(projectDomain + "/api/mobile/shop/lakala/ewallet/drawNotify");
|
||||
|
||||
// 4. 发送请求
|
||||
String responseStr = LKLSDK.httpPost(request);
|
||||
@ -3583,6 +3588,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
LklOrderDraw lklOrderDraw = new LklOrderDraw();
|
||||
lklOrderDraw.setMerc_id(mercId);
|
||||
lklOrderDraw.setMer_order_no(merOrderNo);
|
||||
lklOrderDraw.setOrder_id(orderId);
|
||||
lklOrderDraw.setDraw_jnl(Convert.toStr(drawJnl));
|
||||
lklOrderDraw.setDraw_amt(drawAmtYuan);
|
||||
lklOrderDraw.setBatch_auto_settle(payType);
|
||||
@ -3654,7 +3660,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
|
||||
log.info("[拉卡拉D1提现结果通知] 提现通知参数: drawState={}, mercId={}, merOrderNo={}", drawState, mercId, merOrderNo);
|
||||
|
||||
if (StrUtil.isBlank(mercId) || StrUtil.isBlank(merOrderNo) || StrUtil.isBlank(drawState)) {
|
||||
if (StrUtil.hasBlank(mercId, merOrderNo, drawState)) {
|
||||
log.warn("[拉卡拉提现结果通知] 回调参数缺失: drawState={}, mercId={}, merOrderNo={}", drawState, mercId, merOrderNo);
|
||||
return JSONUtil.createObj()
|
||||
.set("code", "FAIL")
|
||||
@ -3665,7 +3671,7 @@ public class LakalaApiServiceImpl implements LakalaApiService {
|
||||
if (!"DRAW.SUCCESS".equals(drawState)) {
|
||||
log.debug("[拉卡拉D1提现结果通知] 提现状态未成功,忽略处理: drawState={}", drawState);
|
||||
return JSONUtil.createObj()
|
||||
.set("code", "SUCCESS") // 返回成功,避免重复通知
|
||||
.set("code", "FAIL") // 返回成功,避免重复通知
|
||||
.set("message", "状态未成功,忽略处理");
|
||||
}
|
||||
|
||||
|
||||
@ -38,7 +38,7 @@ public class LklOrderDrawServiceImpl extends BaseServiceImpl<LklOrderDrawMapper,
|
||||
queryWrapper.eq("draw_jnl", record.getDraw_jnl());
|
||||
}
|
||||
|
||||
LklOrderDraw existsRecord = getOne(queryWrapper);
|
||||
LklOrderDraw existsRecord = findOne(queryWrapper);
|
||||
if (existsRecord != null && existsRecord.getId() != null && existsRecord.getId() > 0) {
|
||||
// 更新记录
|
||||
log.info("[LklOrderDraw] 记录已存在,执行更新操作,ID={}", existsRecord.getId());
|
||||
@ -102,4 +102,39 @@ public class LklOrderDrawServiceImpl extends BaseServiceImpl<LklOrderDrawMapper,
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断订单是否已经提现完成
|
||||
*
|
||||
* @param orderId 订单ID
|
||||
* @return 如果订单已提现完成返回true,否则返回false
|
||||
*/
|
||||
@Override
|
||||
public Boolean isOrderDrawed(String orderId) {
|
||||
// 参数校验
|
||||
if (StrUtil.isBlank(orderId)) {
|
||||
log.warn("订单ID为空,无法判断提现状态");
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
// 查询提现成功的记录
|
||||
LklOrderDraw lklOrderDraw = findOne(new QueryWrapper<LklOrderDraw>()
|
||||
.eq("order_id", orderId)
|
||||
.eq("draw_state", "DRAW.SUCCESS")
|
||||
.orderByDesc("id"));
|
||||
|
||||
// 根据查询结果判断是否已提现
|
||||
if (lklOrderDraw != null) {
|
||||
log.debug("订单[{}]提现已完成", orderId);
|
||||
return true;
|
||||
} else {
|
||||
log.debug("订单[{}]提现未完成或不存在提现记录", orderId);
|
||||
return false;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("查询订单[{}]提现状态异常", orderId, e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -85,7 +85,8 @@ public class UserReturnController extends BaseControllerImpl {
|
||||
return CommonResult.failed(ResultCode.NEED_LOGIN);
|
||||
}
|
||||
|
||||
return shopOrderReturnService.addWholeItems(order_id, false, "");
|
||||
// return shopOrderReturnService.addWholeItems(order_id, false, "");
|
||||
return shopOrderReturnService.addRemainingItems(order_id, true, "");
|
||||
}
|
||||
|
||||
@ApiOperation(value = "取消退款订单", notes = "取消退款订单")
|
||||
|
||||
@ -43,6 +43,7 @@ import com.suisung.mall.shop.base.service.ShopBaseStateCodeService;
|
||||
import com.suisung.mall.shop.distribution.service.ShopDistributionUserCommissionService;
|
||||
import com.suisung.mall.shop.distribution.service.ShopDistributionUserOrderItemService;
|
||||
import com.suisung.mall.shop.distribution.service.ShopDistributionUserOrderService;
|
||||
import com.suisung.mall.shop.lakala.service.LklOrderDrawService;
|
||||
import com.suisung.mall.shop.lakala.service.LklOrderSeparateService;
|
||||
import com.suisung.mall.shop.message.service.PushMessageService;
|
||||
import com.suisung.mall.shop.number.service.ShopNumberSeqService;
|
||||
@ -195,7 +196,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
|
||||
|
||||
@Lazy
|
||||
@Autowired
|
||||
private ShopOrderLklService shopOrderLklService;
|
||||
private LklOrderDrawService lklOrderDrawService;
|
||||
|
||||
@Lazy
|
||||
@Autowired
|
||||
@ -2090,7 +2091,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
|
||||
}
|
||||
|
||||
/**
|
||||
* 该函数用于判断某个订单商品是否禁止退货。
|
||||
* 该函数用于判断订单某个商品是否禁止退货。(判断订单的商品)
|
||||
* 参数校验:检查订单商品和商品信息是否为空,若为空则抛出异常。
|
||||
* 商品是否禁止退货:从商品信息中获取消费者保障类型,如果包含"禁止退货",则标记为不可退货。
|
||||
* 订单状态是否超过退货期限:
|
||||
@ -2103,10 +2104,11 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
|
||||
*/
|
||||
public boolean ifDenyReturn(ShopOrderInfo shopOrderInfo, ShopOrderItem shopOrderItem, ShopProductIndex shopProductIndex) {
|
||||
// 是否禁止退货?默认允许退货
|
||||
boolean is_denyreturn = false;
|
||||
boolean is_deny_return = false;
|
||||
|
||||
if (shopOrderItem == null) {
|
||||
throw new ApiException(I18nUtil._("此订单商品订单数据有误!"));
|
||||
log.error("此订单商品订单数据有误!");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (shopProductIndex == null) {
|
||||
@ -2114,16 +2116,17 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
|
||||
}
|
||||
|
||||
if (shopProductIndex == null) {
|
||||
throw new ApiException(I18nUtil._("此订单商品数据有误!"));
|
||||
log.error("此订单商品数据有误!");
|
||||
return true;
|
||||
}
|
||||
|
||||
List<Integer> contractTypeIds = Convert.toList(Integer.class, shopProductIndex.getContract_type_ids());
|
||||
|
||||
//start判断是否可以申请退款
|
||||
// 1、商品是否允许
|
||||
// 1、商品是否禁止退货
|
||||
if (contractTypeIds.contains(new Integer(StateCode.CONTRACT_TYPE_DENY_RETURN))) {
|
||||
is_denyreturn = true;
|
||||
// throw new ApiException(I18nUtil._("此商品不允许退货!"));
|
||||
log.error("此商品不允许退货!");
|
||||
return true;
|
||||
}
|
||||
|
||||
// 2、是否已经可结算, 进入可结算,不允许退货。
|
||||
@ -2133,14 +2136,69 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
|
||||
|
||||
//order_deal_time
|
||||
if (withdrawTime.compareTo(shopOrderInfo.getOrder_deal_time()) > 0) {
|
||||
is_denyreturn = true;
|
||||
//throw new ApiException(I18nUtil._("此商品已过退货期,不允许退货!"));
|
||||
log.error("此商品已过退货期,不允许退货!");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return is_denyreturn;
|
||||
return is_deny_return;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 判断订单是否禁止退货
|
||||
*
|
||||
* @param orderId 订单ID
|
||||
* @return 如果订单禁止退货返回true,否则返回false
|
||||
*/
|
||||
public boolean isOrderDenyReturn(String orderId) {
|
||||
// 参数校验
|
||||
if (StrUtil.isBlank(orderId)) {
|
||||
log.warn("订单ID为空,无法判断退货状态");
|
||||
return true;
|
||||
}
|
||||
|
||||
try {
|
||||
// 获取订单信息
|
||||
ShopOrderInfo shopOrderInfo = shopOrderInfoService.get(orderId);
|
||||
if (shopOrderInfo == null) {
|
||||
log.error("订单信息不存在,订单ID: {}", orderId);
|
||||
return true;
|
||||
}
|
||||
|
||||
// 检查订单状态是否已收货或已完成
|
||||
Integer orderStateId = shopOrderInfo.getOrder_state_id();
|
||||
if (ObjectUtil.equal(orderStateId, StateCode.ORDER_STATE_RECEIVED) ||
|
||||
ObjectUtil.equal(orderStateId, StateCode.ORDER_STATE_FINISH)) {
|
||||
|
||||
// 获取可提现时间戳
|
||||
Long withdrawTime = shopOrderBaseService.getWithdrawTime();
|
||||
Long orderDealTime = shopOrderInfo.getOrder_deal_time();
|
||||
|
||||
// 如果订单成交时间早于可提现时间,说明已过退货期
|
||||
if (orderDealTime != null && withdrawTime.compareTo(orderDealTime) > 0) {
|
||||
log.debug("订单[{}]已过退货期,不允许退货", orderId);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// 检查拉卡拉分账和提现状态
|
||||
if (lklOrderSeparateService.isOrderSeparated(orderId) &&
|
||||
lklOrderDrawService.isOrderDrawed(orderId)) {
|
||||
log.debug("订单[{}]已提现,不允许退货", orderId);
|
||||
return true;
|
||||
}
|
||||
|
||||
// 默认允许退货
|
||||
return false;
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("查询订单[{}]退货状态异常", orderId, e);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 该函数用于判断指定订单商品是否禁止退货。
|
||||
* 根据 order_item_id 获取订单商品信息;
|
||||
@ -2284,7 +2342,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
|
||||
}
|
||||
|
||||
if (StrUtil.isBlank(remark)) {
|
||||
remark = "剩余商品退款!";
|
||||
remark = "整单退款!";
|
||||
}
|
||||
|
||||
// 获取订单中所有商品
|
||||
|
||||
Loading…
Reference in New Issue
Block a user