增加订单申请售后失效、订单投诉申请失效天数。

This commit is contained in:
lifenlong 2021-07-09 11:55:43 +08:00
parent 18d2379a19
commit 86625e9e9d
7 changed files with 180 additions and 92 deletions

View File

@ -10,7 +10,12 @@ import cn.lili.modules.member.entity.enums.EvaluationGradeEnum;
import cn.lili.modules.member.service.MemberEvaluationService;
import cn.lili.modules.order.order.entity.dos.Order;
import cn.lili.modules.order.order.entity.dos.OrderItem;
import cn.lili.modules.order.order.entity.enums.CommentStatusEnum;
import cn.lili.modules.order.order.entity.enums.OrderComplaintStatusEnum;
import cn.lili.modules.order.order.entity.enums.OrderItemAfterSaleStatusEnum;
import cn.lili.modules.order.order.entity.enums.OrderStatusEnum;
import cn.lili.modules.order.order.mapper.OrderItemMapper;
import cn.lili.modules.order.order.service.AfterSaleService;
import cn.lili.modules.order.order.service.OrderItemService;
import cn.lili.modules.order.order.service.OrderService;
import cn.lili.modules.system.entity.dos.Setting;
@ -19,12 +24,13 @@ import cn.lili.modules.system.entity.enums.SettingEnum;
import cn.lili.modules.system.service.SettingService;
import cn.lili.timetask.handler.EveryDayExecute;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Date;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
@ -47,6 +53,8 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute {
*/
@Autowired
private OrderItemService orderItemService;
@Resource
private OrderItemMapper orderItemMapper;
/**
* 设置
*/
@ -58,13 +66,17 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute {
@Autowired
private MemberEvaluationService memberEvaluationService;
@Autowired
private AfterSaleService afterSaleService;
/**
* 执行每日任务
*/
@Override
public void execute() {
Setting setting = settingService.get(SettingEnum.ORDER_SETTING.name());
//自动确认收货
//订单设置
OrderSetting orderSetting = JSONUtil.toBean(setting.getSettingValue(), OrderSetting.class);
if (orderSetting == null) {
throw new ServiceException(ResultCode.ORDER_SETTING_ERROR);
@ -74,6 +86,10 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute {
completedOrder(orderSetting);
//自动好评
memberEvaluation(orderSetting);
//关闭允许售后申请
closeAfterSale(orderSetting);
//关闭允许投诉
closeComplaint(orderSetting);
}
/**
@ -82,21 +98,21 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute {
* @param orderSetting 订单设置
*/
private void completedOrder(OrderSetting orderSetting) {
//订单自动收货时间 = 当前时间 - 自动收货时间天数
DateTime receiveTime = DateUtil.offsetDay(DateUtil.date(), -orderSetting.getAutoEvaluation());
DateTime receiveTime = DateUtil.offsetDay(DateUtil.date(), -orderSetting.getAutoReceive());
LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Order::getOrderStatus, OrderStatusEnum.DELIVERED.name());
//订单发货时间 >= 订单自动收货时间
queryWrapper.ge(Order::getLogisticsTime, receiveTime);
List<Order> list = orderService.list(queryWrapper);
//判断是否有符合条件的订单进行订单完成处理
if (!list.isEmpty()) {
List<String> receiveSnList = list.stream().map(Order::getSn).collect(Collectors.toList());
if (!receiveSnList.isEmpty()) {
LambdaUpdateWrapper<Order> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.in(Order::getSn, receiveSnList);
updateWrapper.set(Order::getOrderStatus, OrderStatusEnum.COMPLETED.name()).set(Order::getCompleteTime, new Date());
boolean update = orderService.update(updateWrapper);
if (Boolean.FALSE.equals(update)) {
log.error("自动收货订单失败!订单编号为[{}]", receiveSnList);
for (String orderSn : receiveSnList) {
orderService.complete(orderSn);
}
}
}
@ -108,12 +124,17 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute {
*/
private void memberEvaluation(OrderSetting orderSetting) {
//订单自动收货时间 = 当前时间 - 自动收货时间天数
DateTime receiveTime = DateUtil.offsetDay(DateUtil.date(), -orderSetting.getAutoReceive());
DateTime receiveTime = DateUtil.offsetDay(DateUtil.date(), -orderSetting.getAutoEvaluation());
//订单完成时间 <= 订单自动好评时间
List<OrderItem> orderItems = orderItemService.waitEvaluate(receiveTime);
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.ge("o.complete_time", receiveTime);
queryWrapper.eq("oi.comment_status", CommentStatusEnum.UNFINISHED.name());
List<OrderItem> orderItems = orderItemMapper.waitOperationOrderItem(queryWrapper);
//判断是否有符合条件的订单进行自动评价处理
if (!orderItems.isEmpty()) {
for (OrderItem orderItem : orderItems) {
MemberEvaluationDTO memberEvaluationDTO = new MemberEvaluationDTO();
memberEvaluationDTO.setOrderItemSn(orderItem.getSn());
memberEvaluationDTO.setContent("系统默认好评");
@ -125,9 +146,71 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute {
memberEvaluationDTO.setServiceScore(5);
memberEvaluationService.addMemberEvaluation(memberEvaluationDTO);
}
}
}
/**
* 关闭允许售后申请
*
* @param orderSetting 订单设置
*/
private void closeAfterSale(OrderSetting orderSetting) {
//订单关闭售后申请时间 = 当前时间 - 自动关闭售后申请天数
DateTime receiveTime = DateUtil.offsetDay(DateUtil.date(), -orderSetting.getAutoEvaluation());
//关闭售后订单=未售后订单+小于订单关闭售后申请时间
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.ge("o.complete_time", receiveTime);
queryWrapper.eq("oi.after_sale_status", OrderItemAfterSaleStatusEnum.NOT_APPLIED.name());
List<OrderItem> orderItems = orderItemMapper.waitOperationOrderItem(queryWrapper);
//判断是否有符合条件的订单关闭允许售后申请处理
if (!orderItems.isEmpty()) {
//获取订单货物ID
List<String> orderItemIdList = orderItems.stream().map(OrderItem::getId).collect(Collectors.toList());
//修改订单售后状态
LambdaUpdateWrapper<OrderItem> lambdaUpdateWrapper = new LambdaUpdateWrapper<OrderItem>()
.set(OrderItem::getAfterSaleStatus, OrderItemAfterSaleStatusEnum.EXPIRED.name())
.in(OrderItem::getId, orderItemIdList);
orderItemService.update(lambdaUpdateWrapper);
}
}
/**
* 关闭允许交易投诉
*
* @param orderSetting 订单设置
*/
private void closeComplaint(OrderSetting orderSetting) {
//订单关闭交易投诉申请时间 = 当前时间 - 自动关闭交易投诉申请天数
DateTime receiveTime = DateUtil.offsetDay(DateUtil.date(), -orderSetting.getCloseComplaint());
//关闭售后订单=未售后订单+小于订单关闭售后申请时间
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.ge("o.complete_time", receiveTime);
queryWrapper.eq("oi.complain_status", OrderComplaintStatusEnum.NO_APPLY.name());
List<OrderItem> orderItems = orderItemMapper.waitOperationOrderItem(queryWrapper);
//判断是否有符合条件的订单关闭允许售后申请处理
if (!orderItems.isEmpty()) {
//获取订单货物ID
List<String> orderItemIdList = orderItems.stream().map(OrderItem::getId).collect(Collectors.toList());
//修改订单投诉状态
LambdaUpdateWrapper<OrderItem> lambdaUpdateWrapper = new LambdaUpdateWrapper<OrderItem>()
.set(OrderItem::getComplainStatus, OrderItemAfterSaleStatusEnum.EXPIRED.name())
.in(OrderItem::getId, orderItemIdList);
orderItemService.update(lambdaUpdateWrapper);
}
}
}

View File

@ -50,6 +50,7 @@ public enum ResultCode {
CATEGORY_PARAMETER_SAVE_ERROR(10008, "分类绑定参数组添加失败"),
CATEGORY_PARAMETER_UPDATE_ERROR(10009, "分类绑定参数组添加失败"),
CATEGORY_DELETE_FLAG_ERROR(10010, "子类状态不能与父类不一致!"),
CATEGORY_COMMISSION_RATE_ERROR(10011, "分类的佣金不正确!"),
/**
* 商品

View File

@ -163,6 +163,11 @@ public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> i
@Override
public boolean saveCategory(Category category) {
//判断分类佣金是否正确
if (category.getCommissionRate() < 0) {
throw new ServiceException(ResultCode.CATEGORY_COMMISSION_RATE_ERROR);
}
//子分类与父分类的状态一致
if (category.getParentId() != null && !("0").equals(category.getParentId())) {
Category parentCategory = this.getById(category.getParentId());
category.setDeleteFlag(parentCategory.getDeleteFlag());
@ -174,6 +179,11 @@ public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> i
@Override
public void updateCategory(Category category) {
//判断分类佣金是否正确
if (category.getCommissionRate() < 0) {
throw new ServiceException(ResultCode.CATEGORY_COMMISSION_RATE_ERROR);
}
//判断父分类与子分类的状态是否一致
if (category.getParentId() != null && !"0".equals(category.getParentId())) {
Category parentCategory = this.getById(category.getParentId());
if (!parentCategory.getDeleteFlag().equals(category.getDeleteFlag())) {

View File

@ -19,12 +19,11 @@ import java.util.List;
public interface OrderItemMapper extends BaseMapper<OrderItem> {
/**
* 获取等待评价的订单子项列表
* 获取等待操作订单子项目
*
* @param queryWrapper 查询条件
* @return 订单子项列表
*/
@Select("SELECT * FROM li_order_item AS oi INNER JOIN li_order AS o ON oi.order_sn=o.sn ${ew.customSqlSegment}")
List<OrderItem> waitEvaluate(@Param(Constants.WRAPPER) Wrapper<OrderSimpleVO> queryWrapper);
List<OrderItem> waitOperationOrderItem(@Param(Constants.WRAPPER) Wrapper<OrderSimpleVO> queryWrapper);
}

View File

@ -6,7 +6,6 @@ import cn.lili.modules.order.order.entity.enums.OrderComplaintStatusEnum;
import cn.lili.modules.order.order.entity.enums.OrderItemAfterSaleStatusEnum;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Date;
import java.util.List;
/**
@ -59,11 +58,4 @@ public interface OrderItemService extends IService<OrderItem> {
*/
List<OrderItem> getByOrderSn(String orderSn);
/**
* 获取待评价订单列表
*
* @param date 结束时间
* @return 子订单列表
*/
List<OrderItem> waitEvaluate(Date date);
}

View File

@ -80,11 +80,4 @@ public class OrderItemServiceImpl extends ServiceImpl<OrderItemMapper, OrderItem
return this.list(lambdaQueryWrapper);
}
@Override
public List<OrderItem> waitEvaluate(Date date) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.ge("o.complete_time", date);
queryWrapper.eq("oi.comment_status", CommentStatusEnum.UNFINISHED.name());
return this.baseMapper.waitEvaluate(queryWrapper);
}
}

View File

@ -25,11 +25,13 @@ public class OrderSetting implements Serializable {
* 已完成订单允许退单X天内允许客户发起退货退款申请未发货订单随时可退未发货订单随时可退
*/
@ApiModelProperty(value = "已完成订单允许退单 天")
private Integer autoComplete;
private Integer closeAfterSale;
@ApiModelProperty(value = "自动评价 天")
private Integer autoEvaluation;
//---------------售后---------------
@ApiModelProperty(value = "售后自动取消 天")
private Integer autoCancelAfterSale;
@ -44,4 +46,12 @@ public class OrderSetting implements Serializable {
*/
@ApiModelProperty(value = "已完成订单允许退单 天")
private Integer autoAfterSaleComplete;
//---------------投诉---------------
/**
* 已完成订单允许投诉X天内允许客户发起交易投诉
* 如果写0则不允许投诉
*/
@ApiModelProperty(value = "已完成订单允许投诉 天")
private Integer closeComplaint;
}