mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-01 02:38:43 +08:00 
			
		
		
		
	Merge remote-tracking branch 'origin/feature/mall_product' into feature/mall_product
This commit is contained in:
		| @@ -23,6 +23,10 @@ public class LocalDateTimeUtils { | |||||||
|         return LocalDateTime.now().plus(duration); |         return LocalDateTime.now().plus(duration); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public static LocalDateTime minusTime(Duration duration) { | ||||||
|  |         return LocalDateTime.now().minus(duration); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     public static boolean beforeNow(LocalDateTime date) { |     public static boolean beforeNow(LocalDateTime date) { | ||||||
|         return date.isBefore(LocalDateTime.now()); |         return date.isBefore(LocalDateTime.now()); | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -18,6 +18,7 @@ public enum TradeOrderOperateTypeEnum { | |||||||
|     MEMBER_RECEIVE(30, "用户已收货"), |     MEMBER_RECEIVE(30, "用户已收货"), | ||||||
|     SYSTEM_RECEIVE(31, "到期未收货,系统自动确认收货"), |     SYSTEM_RECEIVE(31, "到期未收货,系统自动确认收货"), | ||||||
|     MEMBER_COMMENT(33, "用户评价"), |     MEMBER_COMMENT(33, "用户评价"), | ||||||
|  |     SYSTEM_COMMENT(34, "到期未评价,系统自动评价"), | ||||||
|     MEMBER_CANCEL(40, "取消订单"), |     MEMBER_CANCEL(40, "取消订单"), | ||||||
|     SYSTEM_CANCEL(41, "到期未支付,系统自动取消订单"), |     SYSTEM_CANCEL(41, "到期未支付,系统自动取消订单"), | ||||||
|     // 42 预留:管理员取消订单 |     // 42 预留:管理员取消订单 | ||||||
|   | |||||||
| @@ -173,7 +173,7 @@ public class AppTradeOrderController { | |||||||
|     @PostMapping("/item/create-comment") |     @PostMapping("/item/create-comment") | ||||||
|     @Operation(summary = "创建交易订单项的评价") |     @Operation(summary = "创建交易订单项的评价") | ||||||
|     public CommonResult<Long> createOrderItemComment(@RequestBody AppTradeOrderItemCommentCreateReqVO createReqVO) { |     public CommonResult<Long> createOrderItemComment(@RequestBody AppTradeOrderItemCommentCreateReqVO createReqVO) { | ||||||
|         return success(tradeOrderUpdateService.createOrderItemComment(getLoginUserId(), createReqVO)); |         return success(tradeOrderUpdateService.createOrderItemCommentByMember(getLoginUserId(), createReqVO)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -38,4 +38,10 @@ public interface TradeOrderItemMapper extends BaseMapperX<TradeOrderItemDO> { | |||||||
|                 .eq(TradeOrderItemDO::getUserId, loginUserId)); |                 .eq(TradeOrderItemDO::getUserId, loginUserId)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     default List<TradeOrderItemDO> selectListByOrderIdAndCommentStatus(Long orderId, Boolean commentStatus) { | ||||||
|  |         return selectList(new LambdaQueryWrapperX<TradeOrderItemDO>() | ||||||
|  |                 .eq(TradeOrderItemDO::getOrderId, orderId) | ||||||
|  |                 .eq(TradeOrderItemDO::getCommentStatus, commentStatus)); | ||||||
|  |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -73,4 +73,12 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> { | |||||||
|                 .lt(TradeOrderDO::getDeliveryTime, deliveryTime)); |                 .lt(TradeOrderDO::getDeliveryTime, deliveryTime)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     default List<TradeOrderDO> selectListByStatusAndReceiveTimeLt(Integer status, LocalDateTime receive, | ||||||
|  |                                                                   Boolean commentStatus) { | ||||||
|  |         return selectList(new LambdaUpdateWrapper<TradeOrderDO>() | ||||||
|  |                 .eq(TradeOrderDO::getStatus, status) | ||||||
|  |                 .lt(TradeOrderDO::getReceiveTime, receive) | ||||||
|  |                 .eq(TradeOrderDO::getCommentStatus, commentStatus)); | ||||||
|  |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -36,4 +36,10 @@ public class TradeOrderProperties { | |||||||
|     @NotNull(message = "收货超时时间不能为空") |     @NotNull(message = "收货超时时间不能为空") | ||||||
|     private Duration receiveExpireTime; |     private Duration receiveExpireTime; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 评论超时时间 | ||||||
|  |      */ | ||||||
|  |     @NotNull(message = "评论超时时间不能为空") | ||||||
|  |     private Duration commentExpireTime; | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -0,0 +1,28 @@ | |||||||
|  | package cn.iocoder.yudao.module.trade.job.order; | ||||||
|  |  | ||||||
|  | import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler; | ||||||
|  | import cn.iocoder.yudao.framework.tenant.core.job.TenantJob; | ||||||
|  | import cn.iocoder.yudao.module.trade.service.order.TradeOrderUpdateService; | ||||||
|  | import org.springframework.stereotype.Component; | ||||||
|  |  | ||||||
|  | import javax.annotation.Resource; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 交易订单的自动评论 Job | ||||||
|  |  * | ||||||
|  |  * @author 芋道源码 | ||||||
|  |  */ | ||||||
|  | @Component | ||||||
|  | @TenantJob | ||||||
|  | public class TradeOrderAutoCommentJob implements JobHandler { | ||||||
|  |  | ||||||
|  |     @Resource | ||||||
|  |     private TradeOrderUpdateService tradeOrderUpdateService; | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public String execute(String param) { | ||||||
|  |         int count = tradeOrderUpdateService.createOrderItemCommentBySystem(); | ||||||
|  |         return String.format("评论订单 %s 个", count); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -142,12 +142,19 @@ public interface TradeOrderUpdateService { | |||||||
|     void updateOrderItemWhenAfterSaleCancel(@NotNull Long id); |     void updateOrderItemWhenAfterSaleCancel(@NotNull Long id); | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 创建订单项的评论 |      * 【会员】创建订单项的评论 | ||||||
|      * |      * | ||||||
|      * @param userId      用户编号 |      * @param userId      用户编号 | ||||||
|      * @param createReqVO 创建请求 |      * @param createReqVO 创建请求 | ||||||
|      * @return 得到评价 id |      * @return 得到评价 id | ||||||
|      */ |      */ | ||||||
|     Long createOrderItemComment(Long userId, AppTradeOrderItemCommentCreateReqVO createReqVO); |     Long createOrderItemCommentByMember(Long userId, AppTradeOrderItemCommentCreateReqVO createReqVO); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 【系统】创建订单项的评论 | ||||||
|  |      * | ||||||
|  |      * @return 被评论的订单数 | ||||||
|  |      */ | ||||||
|  |     int createOrderItemCommentBySystem(); | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -74,7 +74,7 @@ import java.util.*; | |||||||
|  |  | ||||||
| import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | ||||||
| import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; | ||||||
| import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.addTime; | import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.minusTime; | ||||||
| import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.*; | import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.*; | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @@ -496,7 +496,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | |||||||
|     @Override |     @Override | ||||||
|     public int receiveOrderBySystem() { |     public int receiveOrderBySystem() { | ||||||
|         // 1. 查询过期的待支付订单 |         // 1. 查询过期的待支付订单 | ||||||
|         LocalDateTime expireTime = addTime(tradeOrderProperties.getReceiveExpireTime()); |         LocalDateTime expireTime = minusTime(tradeOrderProperties.getReceiveExpireTime()); | ||||||
|         List<TradeOrderDO> orders = tradeOrderMapper.selectListByStatusAndDeliveryTimeLt( |         List<TradeOrderDO> orders = tradeOrderMapper.selectListByStatusAndDeliveryTimeLt( | ||||||
|                 TradeOrderStatusEnum.DELIVERED.getStatus(), expireTime); |                 TradeOrderStatusEnum.DELIVERED.getStatus(), expireTime); | ||||||
|         if (CollUtil.isEmpty(orders)) { |         if (CollUtil.isEmpty(orders)) { | ||||||
| @@ -510,7 +510,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | |||||||
|                 getSelf().receiveOrderBySystem(order); |                 getSelf().receiveOrderBySystem(order); | ||||||
|                 count++; |                 count++; | ||||||
|             } catch (Throwable e) { |             } catch (Throwable e) { | ||||||
|                 log.error("[autoReceiveOrder][order({}) 自动收货订单异常]", order.getId(), e); |                 log.error("[receiveOrderBySystem][order({}) 自动收货订单异常]", order.getId(), e); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         return count; |         return count; | ||||||
| @@ -587,7 +587,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | |||||||
|     @Override |     @Override | ||||||
|     public int cancelOrderBySystem() { |     public int cancelOrderBySystem() { | ||||||
|         // 1. 查询过期的待支付订单 |         // 1. 查询过期的待支付订单 | ||||||
|         LocalDateTime expireTime = addTime(tradeOrderProperties.getPayExpireTime()); |         LocalDateTime expireTime = minusTime(tradeOrderProperties.getPayExpireTime()); | ||||||
|         List<TradeOrderDO> orders = tradeOrderMapper.selectListByStatusAndCreateTimeLt( |         List<TradeOrderDO> orders = tradeOrderMapper.selectListByStatusAndCreateTimeLt( | ||||||
|                 TradeOrderStatusEnum.UNPAID.getStatus(), expireTime); |                 TradeOrderStatusEnum.UNPAID.getStatus(), expireTime); | ||||||
|         if (CollUtil.isEmpty(orders)) { |         if (CollUtil.isEmpty(orders)) { | ||||||
| @@ -601,7 +601,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | |||||||
|                 getSelf().cancelOrderBySystem(order); |                 getSelf().cancelOrderBySystem(order); | ||||||
|                 count++; |                 count++; | ||||||
|             } catch (Throwable e) { |             } catch (Throwable e) { | ||||||
|                 log.error("[autoCancelOrder][order({}) 过期订单异常]", order.getId(), e); |                 log.error("[cancelOrderBySystem][order({}) 过期订单异常]", order.getId(), e); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         return count; |         return count; | ||||||
| @@ -723,7 +723,6 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | |||||||
|         } |         } | ||||||
|         tradeOrderItemMapper.updateBatch(updateItems); |         tradeOrderItemMapper.updateBatch(updateItems); | ||||||
|  |  | ||||||
|  |  | ||||||
|         // 6、更新支付订单 |         // 6、更新支付订单 | ||||||
|         payOrderApi.updatePayOrderPrice(order.getPayOrderId(), update.getPayPrice()); |         payOrderApi.updatePayOrderPrice(order.getPayOrderId(), update.getPayPrice()); | ||||||
|     } |     } | ||||||
| @@ -845,41 +844,6 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | |||||||
|         couponApi.returnUsedCoupon(order.getCouponId()); |         couponApi.returnUsedCoupon(order.getCouponId()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |  | ||||||
|     @Transactional(rollbackFor = Exception.class) |  | ||||||
|     @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.MEMBER_COMMENT) |  | ||||||
|     public Long createOrderItemComment(Long userId, AppTradeOrderItemCommentCreateReqVO createReqVO) { |  | ||||||
|         // 先通过订单项 ID,查询订单项是否存在 |  | ||||||
|         TradeOrderItemDO orderItem = tradeOrderItemMapper.selectByIdAndUserId(createReqVO.getOrderItemId(), userId); |  | ||||||
|         if (orderItem == null) { |  | ||||||
|             throw exception(ORDER_ITEM_NOT_FOUND); |  | ||||||
|         } |  | ||||||
|         // 校验订单相关状态 |  | ||||||
|         TradeOrderDO order = tradeOrderMapper.selectOrderByIdAndUserId(orderItem.getOrderId(), userId); |  | ||||||
|         if (order == null) { |  | ||||||
|             throw exception(ORDER_NOT_FOUND); |  | ||||||
|         } |  | ||||||
|         if (ObjectUtil.notEqual(order.getStatus(), TradeOrderStatusEnum.COMPLETED.getStatus())) { |  | ||||||
|             throw exception(ORDER_COMMENT_FAIL_STATUS_NOT_COMPLETED); |  | ||||||
|         } |  | ||||||
|         if (ObjectUtil.notEqual(order.getCommentStatus(), Boolean.FALSE)) { |  | ||||||
|             throw exception(ORDER_COMMENT_STATUS_NOT_FALSE); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         // 1. 创建评价 |  | ||||||
|         ProductCommentCreateReqDTO productCommentCreateReqDTO = TradeOrderConvert.INSTANCE.convert04(createReqVO, orderItem); |  | ||||||
|         Long comment = productCommentApi.createComment(productCommentCreateReqDTO); |  | ||||||
|  |  | ||||||
|         // 2. 更新订单项评价状态 |  | ||||||
|         tradeOrderItemMapper.updateById(new TradeOrderItemDO().setId(orderItem.getId()).setCommentStatus(Boolean.TRUE)); |  | ||||||
|         List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderId(order.getId()); |  | ||||||
|         if (!anyMatch(orderItems, item -> Objects.equals(item.getCommentStatus(), Boolean.FALSE))) { |  | ||||||
|             tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId()).setCommentStatus(Boolean.TRUE)); |  | ||||||
|             // 增加订单日志 |  | ||||||
|             TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), order.getStatus()); |  | ||||||
|         } |  | ||||||
|         return comment; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 判断指定订单的所有订单项,是不是都售后成功 |      * 判断指定订单的所有订单项,是不是都售后成功 | ||||||
| @@ -893,6 +857,114 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | |||||||
|                 TradeOrderItemAfterSaleStatusEnum.SUCCESS.getStatus())); |                 TradeOrderItemAfterSaleStatusEnum.SUCCESS.getStatus())); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     @Transactional(rollbackFor = Exception.class) | ||||||
|  |     @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.MEMBER_COMMENT) | ||||||
|  |     public Long createOrderItemCommentByMember(Long userId, AppTradeOrderItemCommentCreateReqVO createReqVO) { | ||||||
|  |         // 1.1 先通过订单项 ID,查询订单项是否存在 | ||||||
|  |         TradeOrderItemDO orderItem = tradeOrderItemMapper.selectByIdAndUserId(createReqVO.getOrderItemId(), userId); | ||||||
|  |         if (orderItem == null) { | ||||||
|  |             throw exception(ORDER_ITEM_NOT_FOUND); | ||||||
|  |         } | ||||||
|  |         // 1.2 校验订单相关状态 | ||||||
|  |         TradeOrderDO order = tradeOrderMapper.selectOrderByIdAndUserId(orderItem.getOrderId(), userId); | ||||||
|  |         if (order == null) { | ||||||
|  |             throw exception(ORDER_NOT_FOUND); | ||||||
|  |         } | ||||||
|  |         if (ObjectUtil.notEqual(order.getStatus(), TradeOrderStatusEnum.COMPLETED.getStatus())) { | ||||||
|  |             throw exception(ORDER_COMMENT_FAIL_STATUS_NOT_COMPLETED); | ||||||
|  |         } | ||||||
|  |         if (ObjectUtil.notEqual(order.getCommentStatus(), Boolean.FALSE)) { | ||||||
|  |             throw exception(ORDER_COMMENT_STATUS_NOT_FALSE); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         // 2. 创建评价 | ||||||
|  |         Long commentId = createOrderItemComment0(orderItem, createReqVO); | ||||||
|  |  | ||||||
|  |         // 3. 如果订单项都评论了,则更新订单评价状态 | ||||||
|  |         List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderId(order.getId()); | ||||||
|  |         if (!anyMatch(orderItems, item -> Objects.equals(item.getCommentStatus(), Boolean.FALSE))) { | ||||||
|  |             tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId()).setCommentStatus(Boolean.TRUE) | ||||||
|  |                     .setFinishTime(LocalDateTime.now())); | ||||||
|  |             // 增加订单日志。注意:只有在所有订单项都评价后,才会增加 | ||||||
|  |             TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), order.getStatus()); | ||||||
|  |         } | ||||||
|  |         return commentId; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public int createOrderItemCommentBySystem() { | ||||||
|  |         // 1. 查询过期的待支付订单 | ||||||
|  |         LocalDateTime expireTime = minusTime(tradeOrderProperties.getCommentExpireTime()); | ||||||
|  |         List<TradeOrderDO> orders = tradeOrderMapper.selectListByStatusAndReceiveTimeLt( | ||||||
|  |                 TradeOrderStatusEnum.COMPLETED.getStatus(), expireTime, false); | ||||||
|  |         if (CollUtil.isEmpty(orders)) { | ||||||
|  |             return 0; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         // 2. 遍历执行,逐个取消 | ||||||
|  |         int count = 0; | ||||||
|  |         for (TradeOrderDO order : orders) { | ||||||
|  |             try { | ||||||
|  |                 getSelf().createOrderItemCommentBySystemBySystem(order); | ||||||
|  |                 count ++; | ||||||
|  |             } catch (Throwable e) { | ||||||
|  |                 log.error("[createOrderItemCommentBySystem][order({}) 过期订单异常]", order.getId(), e); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return count; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 创建单个订单的评论 | ||||||
|  |      * | ||||||
|  |      * @param order 订单 | ||||||
|  |      */ | ||||||
|  |     @Transactional(rollbackFor = Exception.class) | ||||||
|  |     @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.SYSTEM_COMMENT) | ||||||
|  |     public void createOrderItemCommentBySystemBySystem(TradeOrderDO order) { | ||||||
|  |         // 1. 查询未评论的订单项 | ||||||
|  |         List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderIdAndCommentStatus(order.getId(), Boolean.FALSE); | ||||||
|  |         if (CollUtil.isEmpty(orderItems)) { | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         // 2. 逐个评论 | ||||||
|  |         for (TradeOrderItemDO orderItem : orderItems) { | ||||||
|  |             // 2.1 创建评价 | ||||||
|  |             AppTradeOrderItemCommentCreateReqVO commentCreateReqVO = new AppTradeOrderItemCommentCreateReqVO() | ||||||
|  |                     .setOrderItemId(orderItem.getId()).setAnonymous(false).setContent("") | ||||||
|  |                     .setBenefitScores(5).setDescriptionScores(5); | ||||||
|  |             createOrderItemComment0(orderItem, commentCreateReqVO); | ||||||
|  |  | ||||||
|  |             // 2.2 更新订单项评价状态 | ||||||
|  |             tradeOrderItemMapper.updateById(new TradeOrderItemDO().setId(orderItem.getId()).setCommentStatus(Boolean.TRUE)); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         // 3. 所有订单项都评论了,则更新订单评价状态 | ||||||
|  |         tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId()).setCommentStatus(Boolean.TRUE) | ||||||
|  |                 .setFinishTime(LocalDateTime.now())); | ||||||
|  |         // 增加订单日志。注意:只有在所有订单项都评价后,才会增加 | ||||||
|  |         TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), order.getStatus()); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 创建订单项的评论的核心实现 | ||||||
|  |      * | ||||||
|  |      * @param orderItem 订单项 | ||||||
|  |      * @param createReqVO 评论内容 | ||||||
|  |      * @return 评论编号 | ||||||
|  |      */ | ||||||
|  |     private Long createOrderItemComment0(TradeOrderItemDO orderItem, AppTradeOrderItemCommentCreateReqVO createReqVO) { | ||||||
|  |         // 1. 创建评价 | ||||||
|  |         ProductCommentCreateReqDTO productCommentCreateReqDTO = TradeOrderConvert.INSTANCE.convert04(createReqVO, orderItem); | ||||||
|  |         Long commentId = productCommentApi.createComment(productCommentCreateReqDTO); | ||||||
|  |  | ||||||
|  |         // 2. 更新订单项评价状态 | ||||||
|  |         tradeOrderItemMapper.updateById(new TradeOrderItemDO().setId(orderItem.getId()).setCommentStatus(Boolean.TRUE)); | ||||||
|  |         return commentId; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     // =================== 营销相关的操作 =================== |     // =================== 营销相关的操作 =================== | ||||||
|  |  | ||||||
|     @Async |     @Async | ||||||
|   | |||||||
| @@ -205,6 +205,7 @@ yudao: | |||||||
|       app-id: 1 # 商户编号 |       app-id: 1 # 商户编号 | ||||||
|       pay-expire-time: 2h # 支付的过期时间 |       pay-expire-time: 2h # 支付的过期时间 | ||||||
|       receive-expire-time: 14d # 收货的过期时间 |       receive-expire-time: 14d # 收货的过期时间 | ||||||
|  |       comment-expire-time: 7d # 评论的过期时间 | ||||||
|     express: |     express: | ||||||
|       client: kd_niao |       client: kd_niao | ||||||
|       kd-niao: |       kd-niao: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 owen
					owen