增加订单申请售后失效、订单投诉申请失效天数。
This commit is contained in:
parent
18d2379a19
commit
86625e9e9d
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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, "分类的佣金不正确!"),
|
||||
|
||||
/**
|
||||
* 商品
|
||||
|
@ -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())) {
|
||||
|
@ -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);
|
||||
}
|
@ -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);
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user