编写禁止退货的方法
This commit is contained in:
parent
10bc17df0e
commit
4959f8ae64
@ -1595,12 +1595,8 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
|
|||||||
// 当前订单状态
|
// 当前订单状态
|
||||||
Integer order_state_id = info_row.getOrder_state_id();
|
Integer order_state_id = info_row.getOrder_state_id();
|
||||||
|
|
||||||
// 没有发货没有完成订单之前,允许取消订单和退运费(这个存在争议)
|
// 订单不是禁止退货(能退货)的情况下
|
||||||
List<Integer> forbiddenStates = Arrays.asList(
|
if (order_state_id != null && !isOrderDenyReturn(order_id)) {
|
||||||
StateCode.ORDER_STATE_SHIPPED,
|
|
||||||
StateCode.ORDER_STATE_RECEIVED,
|
|
||||||
StateCode.ORDER_STATE_FINISH);
|
|
||||||
if (order_state_id != null && !forbiddenStates.contains(order_state_id)) {
|
|
||||||
logger.info("处理运费和打包费事宜:{}", order_id);
|
logger.info("处理运费和打包费事宜:{}", order_id);
|
||||||
ShopOrderData order_data_row = shopOrderDataService.get(order_id);
|
ShopOrderData order_data_row = shopOrderDataService.get(order_id);
|
||||||
|
|
||||||
@ -2097,51 +2093,108 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl<ShopOrderReturnM
|
|||||||
* 订单状态是否超过退货期限:
|
* 订单状态是否超过退货期限:
|
||||||
* 如果订单状态为"已收货"或"已完成",并且当前时间超过允许提现时间,则标记为不可退货。
|
* 如果订单状态为"已收货"或"已完成",并且当前时间超过允许提现时间,则标记为不可退货。
|
||||||
*
|
*
|
||||||
* @param shopOrderInfo
|
* @param shopOrderInfo 订单信息
|
||||||
* @param shopOrderItem
|
* @param shopOrderItem 订单商品项
|
||||||
* @param shopProductIndex
|
* @param shopProductIndex 商品索引信息
|
||||||
* @return
|
* @return boolean true表示禁止退货,false表示允许退货
|
||||||
*/
|
*/
|
||||||
public boolean ifDenyReturn(ShopOrderInfo shopOrderInfo, ShopOrderItem shopOrderItem, ShopProductIndex shopProductIndex) {
|
public boolean ifDenyReturn(ShopOrderInfo shopOrderInfo, ShopOrderItem shopOrderItem, ShopProductIndex shopProductIndex) {
|
||||||
// 是否禁止退货?默认允许退货
|
// 参数校验
|
||||||
boolean is_deny_return = false;
|
|
||||||
|
|
||||||
if (shopOrderItem == null) {
|
if (shopOrderItem == null) {
|
||||||
log.error("此订单商品订单数据有误!");
|
log.warn("订单商品数据为空");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (shopProductIndex == null) {
|
if (shopOrderInfo == null) {
|
||||||
shopProductIndex = shopProductIndexService.get(shopOrderItem.getProduct_id());
|
log.warn("订单信息为空");
|
||||||
}
|
|
||||||
|
|
||||||
if (shopProductIndex == null) {
|
|
||||||
log.error("此订单商品数据有误!");
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Integer> contractTypeIds = Convert.toList(Integer.class, shopProductIndex.getContract_type_ids());
|
// 获取商品索引信息
|
||||||
|
ShopProductIndex productIndex = shopProductIndex;
|
||||||
|
if (productIndex == null) {
|
||||||
|
productIndex = shopProductIndexService.get(shopOrderItem.getProduct_id());
|
||||||
|
}
|
||||||
|
|
||||||
//start判断是否可以申请退款
|
if (productIndex == null) {
|
||||||
// 1、商品是否禁止退货
|
log.warn("商品索引信息不存在,product_id: {}", shopOrderItem.getProduct_id());
|
||||||
if (contractTypeIds.contains(new Integer(StateCode.CONTRACT_TYPE_DENY_RETURN))) {
|
|
||||||
log.error("此商品不允许退货!");
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2、是否已经可结算, 进入可结算,不允许退货。
|
String orderId = shopOrderInfo.getOrder_id();
|
||||||
if (shopOrderInfo.getOrder_state_id().intValue() == StateCode.ORDER_STATE_RECEIVED || shopOrderInfo.getOrder_state_id().intValue() == StateCode.ORDER_STATE_FINISH) {
|
|
||||||
// 可提现时间
|
|
||||||
Long withdrawTime = shopOrderBaseService.getWithdrawTime();
|
|
||||||
|
|
||||||
//order_deal_time
|
// 1. 检查商品是否设置了禁止退货标识
|
||||||
if (withdrawTime.compareTo(shopOrderInfo.getOrder_deal_time()) > 0) {
|
String contractTypeIdsStr = productIndex.getContract_type_ids();
|
||||||
log.error("此商品已过退货期,不允许退货!");
|
if (StrUtil.isNotBlank(contractTypeIdsStr)) {
|
||||||
return true;
|
try {
|
||||||
|
List<Integer> contractTypeIds = Convert.toList(Integer.class, contractTypeIdsStr);
|
||||||
|
if (contractTypeIds != null && contractTypeIds.contains(StateCode.CONTRACT_TYPE_DENY_RETURN)) {
|
||||||
|
log.debug("商品设置了禁止退货标识,order_id: {}, product_id: {}", orderId, shopOrderItem.getProduct_id());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("解析商品保障类型失败,order_id: {}, product_id: {}", orderId, shopOrderItem.getProduct_id(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return is_deny_return;
|
// 2. 检查订单状态是否为已收货或已完成
|
||||||
|
Integer orderStateId = shopOrderInfo.getOrder_state_id();
|
||||||
|
if (ObjectUtil.equal(orderStateId, StateCode.ORDER_STATE_RECEIVED) ||
|
||||||
|
ObjectUtil.equal(orderStateId, StateCode.ORDER_STATE_FINISH)) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 获取可提现时间戳
|
||||||
|
Long withdrawTime = shopOrderBaseService.getWithdrawTime();
|
||||||
|
Long orderDealTime = shopOrderInfo.getOrder_deal_time();
|
||||||
|
|
||||||
|
// 检查是否超过退货期限
|
||||||
|
if (orderDealTime != null && withdrawTime.compareTo(orderDealTime) > 0) {
|
||||||
|
log.debug("订单已超过退货期限,order_id: {}, product_id: {}", orderId, shopOrderItem.getProduct_id());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("检查订单退货期限时发生异常,order_id: {}, product_id: {}", orderId, shopOrderItem.getProduct_id(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. 检查拉卡拉分账订单是否已提现
|
||||||
|
try {
|
||||||
|
if (lklOrderSeparateService != null && lklOrderDrawService != null) {
|
||||||
|
boolean isSeparated = lklOrderSeparateService.isOrderSeparated(orderId);
|
||||||
|
boolean isDrawn = lklOrderDrawService.isOrderDrawed(orderId);
|
||||||
|
|
||||||
|
if (isSeparated && isDrawn) {
|
||||||
|
log.debug("拉卡拉分账订单已提现,不允许退货,order_id: {}, product_id: {}", orderId, shopOrderItem.getProduct_id());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("检查拉卡拉分账状态时发生异常,order_id: {}, product_id: {}", orderId, shopOrderItem.getProduct_id(), e);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 默认允许退货
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断订单中某个商品是否禁止退货
|
||||||
|
* <p>
|
||||||
|
* 该方法用于检查指定订单中的特定商品是否允许退货,主要检查以下几种情况:
|
||||||
|
* 1. 商品是否设置了"禁止退货"的消费者保障标识
|
||||||
|
* 2. 订单是否已超过退货期限(已收货或已完成状态,且超过可提现时间)
|
||||||
|
* 3. 拉卡拉分账订单是否已完成提现
|
||||||
|
*
|
||||||
|
* @param orderId 订单ID
|
||||||
|
* @param productId 商品ID
|
||||||
|
* @return boolean true表示禁止退货,false表示允许退货
|
||||||
|
*/
|
||||||
|
public boolean ifOrderItemDenyReturn(String orderId, Long productId) {
|
||||||
|
// 复用已有的方法逻辑,避免重复代码
|
||||||
|
return ifDenyReturn(
|
||||||
|
shopOrderInfoService.get(orderId),
|
||||||
|
null, // 不需要具体的订单商品项信息
|
||||||
|
shopProductIndexService.get(productId)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user