记得上下班打卡 | git大法好,push需谨慎

Commit 33b70f3e authored by wangyifan's avatar wangyifan

商品回调改造:订单商品全退后修改为退款状态

parent ee504be7
......@@ -1253,22 +1253,6 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
List<GoblinBackOrderSkuVo> backOrderSkuVos = backOrderVo.getBackOrderSkuVos();
GoblinStoreOrderVo orderVo = redisUtils.getGoblinOrder(orderId);
orderVo.setPriceRefund(orderVo.getPriceRefund() == null ? BigDecimal.ZERO : orderVo.getPriceRefund().add(refundCallbackParam.getRefundPrice()));
if (orderVo.getPriceRefund().compareTo(orderVo.getPriceActual()) >= 0) {
//整单退款 退券
orderVo.setStatus(GoblinStatusConst.Status.ORDER_STATUS_6.getValue());
if (!(orderVo.getUcouponId() == null || orderVo.getUcouponId().equals(""))) {
orderUtils.backCoupon(orderVo.getUcouponId(), orderVo.getUserId());
}
if (!(orderVo.getStoreCouponId() == null || orderVo.getStoreCouponId().equals(""))) {
List<BackCouponParam> params = ObjectUtil.getBackCouponParam();
BackCouponParam backCouponParam = BackCouponParam.getNew();
backCouponParam.setuCouponIds(orderVo.getStoreCouponId());
backCouponParam.setUid(orderVo.getUserId());
params.add(backCouponParam);
orderUtils.backStoreCoupon(params);
}
}
backOrderVo.setStatus(GoblinStatusConst.Status.ORDER_BACK_STATUS_2.getValue());
backOrderVo.setRefundAt(nowStr);
for (GoblinBackOrderSkuVo backOrderSkuVo : backOrderSkuVos) {
......@@ -1322,6 +1306,20 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
logVo.setCreatedAt(now);
mongoUtils.insertGoblinOrderLogVo(logVo);
}
if (isOrderFullyRefunded(orderVo)) {
orderVo.setStatus(GoblinStatusConst.Status.ORDER_STATUS_6.getValue());
if (!(orderVo.getUcouponId() == null || orderVo.getUcouponId().equals(""))) {
orderUtils.backCoupon(orderVo.getUcouponId(), orderVo.getUserId());
}
if (!(orderVo.getStoreCouponId() == null || orderVo.getStoreCouponId().equals(""))) {
List<BackCouponParam> params = ObjectUtil.getBackCouponParam();
BackCouponParam backCouponParam = BackCouponParam.getNew();
backCouponParam.setuCouponIds(orderVo.getStoreCouponId());
backCouponParam.setUid(orderVo.getUserId());
params.add(backCouponParam);
orderUtils.backStoreCoupon(params);
}
}
//redis
redisUtils.setGoblinOrder(orderId, orderVo);
redisUtils.setBackOrderVo(backOrderVo.getBackOrderId(), backOrderVo);
......@@ -1479,4 +1477,26 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
return "";
}
/**
* 主单是否已全部退完:以所有子单实退金额为准,不再要求累计退款金额达到主单实付(含运费)。
* 已发货后部分退不含运费时,商品全部退完也应进入退款通过;待发货整单退含运费时,子单同样会全部退完。
*/
private boolean isOrderFullyRefunded(GoblinStoreOrderVo orderVo) {
if (orderVo == null || orderVo.getOrderSkuVoIds() == null || orderVo.getOrderSkuVoIds().isEmpty()) {
return false;
}
for (String orderSkuId : orderVo.getOrderSkuVoIds()) {
GoblinOrderSkuVo orderSkuVo = redisUtils.getGoblinOrderSkuVo(orderSkuId);
if (orderSkuVo == null) {
return false;
}
BigDecimal priceRefund = orderSkuVo.getPriceRefund() == null ? BigDecimal.ZERO : orderSkuVo.getPriceRefund();
BigDecimal skuPriceActual = orderSkuVo.getSkuPriceActual() == null ? BigDecimal.ZERO : orderSkuVo.getSkuPriceActual();
if (priceRefund.compareTo(skuPriceActual) < 0) {
return false;
}
}
return true;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment