feat(order): 完善订单生命周期与投诉处理;补充单元测试
This commit is contained in:
@@ -47,7 +47,7 @@ import com.starry.admin.modules.shop.module.entity.PlayCouponInfoEntity;
|
|||||||
import com.starry.admin.modules.shop.module.enums.CouponDiscountType;
|
import com.starry.admin.modules.shop.module.enums.CouponDiscountType;
|
||||||
import com.starry.admin.modules.shop.service.IPlayCouponDetailsService;
|
import com.starry.admin.modules.shop.service.IPlayCouponDetailsService;
|
||||||
import com.starry.admin.modules.shop.service.IPlayCouponInfoService;
|
import com.starry.admin.modules.shop.service.IPlayCouponInfoService;
|
||||||
import com.starry.admin.modules.weichat.service.WxCustomMpService;
|
import com.starry.admin.modules.weichat.service.NotificationSender;
|
||||||
import com.starry.admin.modules.withdraw.entity.EarningsLineEntity;
|
import com.starry.admin.modules.withdraw.entity.EarningsLineEntity;
|
||||||
import com.starry.admin.modules.withdraw.service.IEarningsService;
|
import com.starry.admin.modules.withdraw.service.IEarningsService;
|
||||||
import com.starry.admin.utils.SecurityUtils;
|
import com.starry.admin.utils.SecurityUtils;
|
||||||
@@ -85,7 +85,7 @@ public class OrderLifecycleServiceImpl implements IOrderLifecycleService {
|
|||||||
private IEarningsService earningsService;
|
private IEarningsService earningsService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private WxCustomMpService wxCustomMpService;
|
private NotificationSender notificationSender;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private IPlayOrderRefundInfoService orderRefundInfoService;
|
private IPlayOrderRefundInfoService orderRefundInfoService;
|
||||||
@@ -466,7 +466,7 @@ public class OrderLifecycleServiceImpl implements IOrderLifecycleService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (shouldNotify) {
|
if (shouldNotify) {
|
||||||
wxCustomMpService.sendOrderFinishMessageAsync(latest);
|
notificationSender.sendOrderFinishMessageAsync(latest);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import com.starry.admin.modules.order.module.vo.PlayOrderComplaintQueryVo;
|
|||||||
import com.starry.admin.modules.order.module.vo.PlayOrderComplaintReturnVo;
|
import com.starry.admin.modules.order.module.vo.PlayOrderComplaintReturnVo;
|
||||||
import com.starry.admin.modules.order.service.IPlayOrderComplaintInfoService;
|
import com.starry.admin.modules.order.service.IPlayOrderComplaintInfoService;
|
||||||
import com.starry.admin.modules.personnel.service.IPlayPersonnelGroupInfoService;
|
import com.starry.admin.modules.personnel.service.IPlayPersonnelGroupInfoService;
|
||||||
import com.starry.admin.modules.weichat.service.WxCustomMpService;
|
import com.starry.admin.modules.weichat.service.NotificationSender;
|
||||||
import com.starry.admin.utils.SecurityUtils;
|
import com.starry.admin.utils.SecurityUtils;
|
||||||
import com.starry.common.utils.IdUtils;
|
import com.starry.common.utils.IdUtils;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@@ -46,7 +46,7 @@ public class PlayOrderComplaintInfoServiceImpl
|
|||||||
@Resource
|
@Resource
|
||||||
private IPlayPersonnelGroupInfoService playClerkGroupInfoService;
|
private IPlayPersonnelGroupInfoService playClerkGroupInfoService;
|
||||||
@Resource
|
@Resource
|
||||||
private WxCustomMpService wxCustomMpService;
|
private NotificationSender notificationSender;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询订单投诉信息
|
* 查询订单投诉信息
|
||||||
@@ -169,7 +169,7 @@ public class PlayOrderComplaintInfoServiceImpl
|
|||||||
playOrderComplaintInfo.setClerkId(orderInfo.getAcceptBy());
|
playOrderComplaintInfo.setClerkId(orderInfo.getAcceptBy());
|
||||||
playOrderComplaintInfo.setCommodityId(orderInfo.getCommodityId());
|
playOrderComplaintInfo.setCommodityId(orderInfo.getCommodityId());
|
||||||
// 发送投诉消息给管理员以及客服
|
// 发送投诉消息给管理员以及客服
|
||||||
wxCustomMpService.sendComplaintMessage(playOrderComplaintInfo, orderInfo);
|
notificationSender.sendComplaintMessage(playOrderComplaintInfo, orderInfo);
|
||||||
return save(playOrderComplaintInfo);
|
return save(playOrderComplaintInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.starry.admin.modules.order.service.impl;
|
package com.starry.admin.modules.order.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
@@ -41,10 +42,11 @@ import com.starry.admin.modules.order.service.IPlayOrderRefundInfoService;
|
|||||||
import com.starry.admin.modules.order.service.support.ClerkRevenueCalculator;
|
import com.starry.admin.modules.order.service.support.ClerkRevenueCalculator;
|
||||||
import com.starry.admin.modules.personnel.module.entity.PlayPersonnelGroupInfoEntity;
|
import com.starry.admin.modules.personnel.module.entity.PlayPersonnelGroupInfoEntity;
|
||||||
import com.starry.admin.modules.personnel.service.IPlayPersonnelGroupInfoService;
|
import com.starry.admin.modules.personnel.service.IPlayPersonnelGroupInfoService;
|
||||||
|
import com.starry.admin.modules.shop.module.constant.CouponUseState;
|
||||||
import com.starry.admin.modules.shop.module.vo.PlayCouponDetailsReturnVo;
|
import com.starry.admin.modules.shop.module.vo.PlayCouponDetailsReturnVo;
|
||||||
import com.starry.admin.modules.shop.service.IPlayCouponDetailsService;
|
import com.starry.admin.modules.shop.service.IPlayCouponDetailsService;
|
||||||
import com.starry.admin.modules.weichat.entity.order.*;
|
import com.starry.admin.modules.weichat.entity.order.*;
|
||||||
import com.starry.admin.modules.weichat.service.WxCustomMpService;
|
import com.starry.admin.modules.weichat.service.NotificationSender;
|
||||||
import com.starry.admin.modules.withdraw.service.IEarningsService;
|
import com.starry.admin.modules.withdraw.service.IEarningsService;
|
||||||
import com.starry.admin.utils.DateRangeUtils;
|
import com.starry.admin.utils.DateRangeUtils;
|
||||||
import com.starry.admin.utils.SecurityUtils;
|
import com.starry.admin.utils.SecurityUtils;
|
||||||
@@ -95,7 +97,7 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
|||||||
private IPlayCouponDetailsService playCouponDetailsService;
|
private IPlayCouponDetailsService playCouponDetailsService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private WxCustomMpService wxCustomMpService;
|
private NotificationSender notificationSender;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private IPlayCustomUserInfoService customUserInfoService;
|
private IPlayCustomUserInfoService customUserInfoService;
|
||||||
@@ -644,7 +646,7 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
|||||||
orderInfo.setFirstOrder(firstOrderFlag);
|
orderInfo.setFirstOrder(firstOrderFlag);
|
||||||
log.info("Order accepted successfully. orderId={}, orderNo={}, acceptBy={}, operatorByType={}",
|
log.info("Order accepted successfully. orderId={}, orderNo={}, acceptBy={}, operatorByType={}",
|
||||||
orderId, orderInfo.getOrderNo(), acceptBy, operatorByType);
|
orderId, orderInfo.getOrderNo(), acceptBy, operatorByType);
|
||||||
wxCustomMpService.sendOrderMessageAsync(orderInfo);
|
notificationSender.sendOrderMessageAsync(orderInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void validateClerkQualificationForRandomOrder(PlayOrderInfoEntity orderInfo,
|
private void validateClerkQualificationForRandomOrder(PlayOrderInfoEntity orderInfo,
|
||||||
@@ -835,7 +837,8 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
|||||||
playOrderRefundInfoService.add(orderInfo.getId(), orderInfo.getPurchaserBy(), orderInfo.getAcceptBy(),
|
playOrderRefundInfoService.add(orderInfo.getId(), orderInfo.getPurchaserBy(), orderInfo.getAcceptBy(),
|
||||||
orderInfo.getPayMethod(), OrderRefundRecordType.FULL.getCode(), orderInfo.getFinalAmount(), refundReason, operatorByType, operatorBy,
|
orderInfo.getPayMethod(), OrderRefundRecordType.FULL.getCode(), orderInfo.getFinalAmount(), refundReason, operatorByType, operatorBy,
|
||||||
OrderRefundState.PROCESSING.getCode(), ReviewRequirement.NOT_REQUIRED.getCode());
|
OrderRefundState.PROCESSING.getCode(), ReviewRequirement.NOT_REQUIRED.getCode());
|
||||||
wxCustomMpService.sendOrderCancelMessageAsync(orderInfo, refundReason);
|
restoreCouponsForOrder(orderInfo);
|
||||||
|
notificationSender.sendOrderCancelMessageAsync(orderInfo, refundReason);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -888,8 +891,10 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
|||||||
orderInfo.getPayMethod(), forceCancelRefundType.getCode(), actualRefundAmount, refundReason, operatorByType, operatorBy,
|
orderInfo.getPayMethod(), forceCancelRefundType.getCode(), actualRefundAmount, refundReason, operatorByType, operatorBy,
|
||||||
OrderRefundState.PROCESSING.getCode(), ReviewRequirement.NOT_REQUIRED.getCode());
|
OrderRefundState.PROCESSING.getCode(), ReviewRequirement.NOT_REQUIRED.getCode());
|
||||||
|
|
||||||
|
restoreCouponsForOrder(orderInfo);
|
||||||
|
|
||||||
PlayOrderInfoEntity latest = this.selectOrderInfoById(orderId);
|
PlayOrderInfoEntity latest = this.selectOrderInfoById(orderId);
|
||||||
wxCustomMpService.sendOrderCancelMessageAsync(latest, refundReason);
|
notificationSender.sendOrderCancelMessageAsync(latest, refundReason);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1038,4 +1043,11 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
|
|||||||
return OrderTriggerSource.SYSTEM;
|
return OrderTriggerSource.SYSTEM;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void restoreCouponsForOrder(PlayOrderInfoEntity orderInfo) {
|
||||||
|
if (orderInfo == null || CollectionUtil.isEmpty(orderInfo.getCouponIds())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
playCouponDetailsService.updateCouponUseStateByIds(orderInfo.getCouponIds(), CouponUseState.UNUSED.getCode());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ import com.starry.admin.modules.shop.module.entity.PlayCouponDetailsEntity;
|
|||||||
import com.starry.admin.modules.shop.module.entity.PlayCouponInfoEntity;
|
import com.starry.admin.modules.shop.module.entity.PlayCouponInfoEntity;
|
||||||
import com.starry.admin.modules.shop.service.IPlayCouponDetailsService;
|
import com.starry.admin.modules.shop.service.IPlayCouponDetailsService;
|
||||||
import com.starry.admin.modules.shop.service.IPlayCouponInfoService;
|
import com.starry.admin.modules.shop.service.IPlayCouponInfoService;
|
||||||
import com.starry.admin.modules.weichat.service.WxCustomMpService;
|
import com.starry.admin.modules.weichat.service.NotificationSender;
|
||||||
import com.starry.admin.modules.withdraw.entity.EarningsLineEntity;
|
import com.starry.admin.modules.withdraw.entity.EarningsLineEntity;
|
||||||
import com.starry.admin.modules.withdraw.service.IEarningsService;
|
import com.starry.admin.modules.withdraw.service.IEarningsService;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
@@ -81,7 +81,7 @@ class OrderLifecycleServiceImplTest {
|
|||||||
private IEarningsService earningsService;
|
private IEarningsService earningsService;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private WxCustomMpService wxCustomMpService;
|
private NotificationSender notificationSender;
|
||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private IPlayOrderRefundInfoService orderRefundInfoService;
|
private IPlayOrderRefundInfoService orderRefundInfoService;
|
||||||
@@ -565,7 +565,7 @@ private PlayOrderLogInfoMapper orderLogInfoMapper;
|
|||||||
lifecycleService.placeOrder(command(context, null, false, null, null));
|
lifecycleService.placeOrder(command(context, null, false, null, null));
|
||||||
|
|
||||||
verify(orderInfoMapper, never()).selectById(anyString());
|
verify(orderInfoMapper, never()).selectById(anyString());
|
||||||
verify(wxCustomMpService, never()).sendOrderFinishMessageAsync(any());
|
verify(notificationSender, never()).sendOrderFinishMessageAsync(any());
|
||||||
verify(earningsService, never()).createFromOrder(any());
|
verify(earningsService, never()).createFromOrder(any());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -594,7 +594,7 @@ private PlayOrderLogInfoMapper orderLogInfoMapper;
|
|||||||
verify(orderInfoMapper, atLeastOnce()).selectById(anyString());
|
verify(orderInfoMapper, atLeastOnce()).selectById(anyString());
|
||||||
verify(customUserInfoService).handleOrderCompletion(any());
|
verify(customUserInfoService).handleOrderCompletion(any());
|
||||||
verify(earningsService).createFromOrder(completed);
|
verify(earningsService).createFromOrder(completed);
|
||||||
verify(wxCustomMpService).sendOrderFinishMessageAsync(completed);
|
verify(notificationSender).sendOrderFinishMessageAsync(completed);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -610,7 +610,7 @@ private PlayOrderLogInfoMapper orderLogInfoMapper;
|
|||||||
lifecycleService.placeOrder(command(context, null, false, null, null));
|
lifecycleService.placeOrder(command(context, null, false, null, null));
|
||||||
|
|
||||||
verify(orderInfoMapper, never()).selectById(anyString());
|
verify(orderInfoMapper, never()).selectById(anyString());
|
||||||
verify(wxCustomMpService, never()).sendOrderFinishMessageAsync(any());
|
verify(notificationSender, never()).sendOrderFinishMessageAsync(any());
|
||||||
verify(earningsService, never()).createFromOrder(any());
|
verify(earningsService, never()).createFromOrder(any());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -639,7 +639,7 @@ private PlayOrderLogInfoMapper orderLogInfoMapper;
|
|||||||
verify(orderInfoMapper, atLeastOnce()).selectById(anyString());
|
verify(orderInfoMapper, atLeastOnce()).selectById(anyString());
|
||||||
verify(customUserInfoService).handleOrderCompletion(any());
|
verify(customUserInfoService).handleOrderCompletion(any());
|
||||||
verify(earningsService).createFromOrder(completed);
|
verify(earningsService).createFromOrder(completed);
|
||||||
verify(wxCustomMpService).sendOrderFinishMessageAsync(completed);
|
verify(notificationSender).sendOrderFinishMessageAsync(completed);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -1031,7 +1031,7 @@ private PlayOrderLogInfoMapper orderLogInfoMapper;
|
|||||||
verify(orderInfoMapper).update(isNull(), any());
|
verify(orderInfoMapper).update(isNull(), any());
|
||||||
verify(customUserInfoService).handleOrderCompletion(completed);
|
verify(customUserInfoService).handleOrderCompletion(completed);
|
||||||
verify(earningsService).createFromOrder(completed);
|
verify(earningsService).createFromOrder(completed);
|
||||||
verify(wxCustomMpService).sendOrderFinishMessageAsync(completed);
|
verify(notificationSender).sendOrderFinishMessageAsync(completed);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -1052,7 +1052,7 @@ private PlayOrderLogInfoMapper orderLogInfoMapper;
|
|||||||
OrderTriggerSource.ADMIN_CONSOLE));
|
OrderTriggerSource.ADMIN_CONSOLE));
|
||||||
|
|
||||||
verify(earningsService, never()).createFromOrder(any());
|
verify(earningsService, never()).createFromOrder(any());
|
||||||
verify(wxCustomMpService, never()).sendOrderFinishMessageAsync(any());
|
verify(notificationSender, never()).sendOrderFinishMessageAsync(any());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -1074,7 +1074,7 @@ private PlayOrderLogInfoMapper orderLogInfoMapper;
|
|||||||
|
|
||||||
verify(customUserInfoService, never()).handleOrderCompletion(any());
|
verify(customUserInfoService, never()).handleOrderCompletion(any());
|
||||||
verify(earningsService, never()).createFromOrder(any());
|
verify(earningsService, never()).createFromOrder(any());
|
||||||
verify(wxCustomMpService, never()).sendOrderFinishMessageAsync(any());
|
verify(notificationSender, never()).sendOrderFinishMessageAsync(any());
|
||||||
verify(orderLogInfoMapper, never()).insert(any());
|
verify(orderLogInfoMapper, never()).insert(any());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user