* 例如说:优惠劵的扣减、积分的扣减、支付单的创建等等 * - * @param userId 用户编号 - * @param createReqVO 创建订单请求 - * @param tradeOrderDO 交易订单 + * @param userId 用户编号 + * @param createReqVO 创建订单请求 + * @param tradeOrderDO 交易订单 * @param calculateRespBO 订单价格计算结果 */ private void afterCreateTradeOrder(Long userId, AppTradeOrderCreateReqVO createReqVO, @@ -265,11 +279,11 @@ public class TradeOrderServiceImpl implements TradeOrderService { /** * 校验交易订单满足被支付的条件 - * + *
* 1. 交易订单未支付
* 2. 支付单已支付
*
- * @param id 交易订单编号
+ * @param id 交易订单编号
* @param payOrderId 支付订单编号
* @return 交易订单
*/
@@ -324,8 +338,11 @@ public class TradeOrderServiceImpl implements TradeOrderService {
public void deliveryOrder(Long userId, TradeOrderDeliveryReqVO deliveryReqVO) {
// 校验并获得交易订单(可发货)
TradeOrderDO order = validateOrderDeliverable(deliveryReqVO.getId());
-
- // TODO 芋艿:logisticsId 校验存在
+ // TODO 芋艿:logisticsId 校验存在 发货物流公司 fix
+ DeliveryExpressDO deliveryExpress = deliveryExpressService.getDeliveryExpress(deliveryReqVO.getLogisticsId());
+ if (deliveryExpress == null) {
+ throw exception(DELIVERY_EXPRESS_NOT_EXISTS);
+ }
// 更新 TradeOrderDO 状态为已发货,等待收货
int updateCount = tradeOrderMapper.updateByIdAndStatus(order.getId(), order.getStatus(),
@@ -338,8 +355,32 @@ public class TradeOrderServiceImpl implements TradeOrderService {
// TODO 芋艿:发送订单变化的消息
- // TODO 芋艿:发送站内信
-
+ // TODO 芋艿:发送站内信 fix
+ // 1、获取模版编码为 order_delivery 的模版,判断是否存在 存在放回 true
+ if (!notifyMessageSendApi.validateNotifyTemplate("order_delivery")) {
+ // 1、1 站内信模版不存在则创建模版
+ NotifyTemplateReqDTO templateReqDTO = new NotifyTemplateReqDTO();
+ templateReqDTO.setName("订单发货通知模版");
+ templateReqDTO.setCode("order_delivery");
+ templateReqDTO.setType(NotifyTemplateTypeEnum.NOTIFICATION_MESSAGE.getType()); // 系统消息
+ // 获取操作用户
+ // AdminUserRespDTO user = adminUserApi.getUser(userId);
+ // templateReqDTO.setNickname(user.getNickname());
+ templateReqDTO.setNickname(UserTypeEnum.ADMIN.getName());
+ templateReqDTO.setContent("订单:{orderId}{msg}");
+ templateReqDTO.setStatus(CommonStatusEnum.ENABLE.getStatus());
+ notifyMessageSendApi.createNotifyTemplate(templateReqDTO);
+ }
+ // 2、构造消息
+ Map
* 1. 交易订单未发货
*
* @param id 交易订单编号
@@ -363,7 +404,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
}
// 校验订单是否是待发货状态
if (!TradeOrderStatusEnum.isUndelivered(order.getStatus())
- || ObjectUtil.notEqual(order.getDeliveryStatus(), TradeOrderDeliveryStatusEnum.UNDELIVERED.getStatus())) {
+ || ObjectUtil.notEqual(order.getDeliveryStatus(), TradeOrderDeliveryStatusEnum.UNDELIVERED.getStatus())) {
throw exception(ORDER_DELIVERY_FAIL_STATUS_NOT_UNDELIVERED);
}
return order;
@@ -397,11 +438,11 @@ public class TradeOrderServiceImpl implements TradeOrderService {
/**
* 校验交易订单满足可售货的条件
- *
+ *
* 1. 交易订单待收货
*
* @param userId 用户编号
- * @param id 交易订单编号
+ * @param id 交易订单编号
* @return 交易订单
*/
private TradeOrderDO validateOrderReceivable(Long userId, Long id) {
@@ -476,7 +517,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
public void updateOrderItemAfterSaleStatus(Long id, Integer oldAfterSaleStatus, Integer newAfterSaleStatus, Integer refundPrice) {
// 如果退款成功,则 refundPrice 非空
if (Objects.equals(newAfterSaleStatus, TradeOrderItemAfterSaleStatusEnum.SUCCESS.getStatus())
- && refundPrice == null) {
+ && refundPrice == null) {
throw new IllegalArgumentException(StrUtil.format("id({}) 退款成功,退款金额不能为空", id));
}
diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/notify/NotifyMessageSendApi.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/notify/NotifyMessageSendApi.java
index facedfade..8e816d880 100644
--- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/notify/NotifyMessageSendApi.java
+++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/notify/NotifyMessageSendApi.java
@@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.system.api.notify;
import cn.iocoder.yudao.module.system.api.notify.dto.NotifySendSingleToUserReqDTO;
+import cn.iocoder.yudao.module.system.api.notify.dto.NotifyTemplateReqDTO;
import javax.validation.Valid;
@@ -27,4 +28,8 @@ public interface NotifyMessageSendApi {
*/
Long sendSingleMessageToMember(@Valid NotifySendSingleToUserReqDTO reqDTO);
+
+ boolean validateNotifyTemplate(String orderDelivery);
+
+ void createNotifyTemplate(NotifyTemplateReqDTO templateReqDTO);
}
diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/notify/dto/NotifyTemplateReqDTO.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/notify/dto/NotifyTemplateReqDTO.java
new file mode 100644
index 000000000..09d5b6fff
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/notify/dto/NotifyTemplateReqDTO.java
@@ -0,0 +1,34 @@
+package cn.iocoder.yudao.module.system.api.notify.dto;
+
+import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
+import cn.iocoder.yudao.framework.common.validation.InEnum;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+@Data
+public class NotifyTemplateReqDTO {
+
+ @NotEmpty(message = "模版名称不能为空")
+ private String name;
+
+ @NotNull(message = "模版编码不能为空")
+ private String code;
+
+ @NotNull(message = "模版类型不能为空")
+ private Integer type;
+
+ @NotEmpty(message = "发送人名称不能为空")
+ private String nickname;
+
+ @NotEmpty(message = "模版内容不能为空")
+ private String content;
+
+ @NotNull(message = "状态不能为空")
+ @InEnum(value = CommonStatusEnum.class, message = "状态必须是 {value}")
+ private Integer status;
+
+ private String remark;
+
+}
diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/notify/NotifyTemplateTypeEnum.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/notify/NotifyTemplateTypeEnum.java
new file mode 100644
index 000000000..dccfb1977
--- /dev/null
+++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/notify/NotifyTemplateTypeEnum.java
@@ -0,0 +1,26 @@
+package cn.iocoder.yudao.module.system.enums.notify;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 通知模板类型枚举
+ *
+ * @author HUIHUI
+ */
+@Getter
+@AllArgsConstructor
+public enum NotifyTemplateTypeEnum {
+
+ /**
+ * 系统消息
+ */
+ SYSTEM_MESSAGE(2),
+ /**
+ * 通知消息
+ */
+ NOTIFICATION_MESSAGE(1);
+
+ private final Integer type;
+
+}
diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/notify/NotifyMessageSendApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/notify/NotifyMessageSendApiImpl.java
index fc5ba1d12..ee169a1c3 100644
--- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/notify/NotifyMessageSendApiImpl.java
+++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/notify/NotifyMessageSendApiImpl.java
@@ -1,7 +1,7 @@
package cn.iocoder.yudao.module.system.api.notify;
import cn.iocoder.yudao.module.system.api.notify.dto.NotifySendSingleToUserReqDTO;
-import cn.iocoder.yudao.module.system.service.notify.NotifyMessageService;
+import cn.iocoder.yudao.module.system.api.notify.dto.NotifyTemplateReqDTO;
import cn.iocoder.yudao.module.system.service.notify.NotifySendService;
import org.springframework.stereotype.Service;
@@ -30,4 +30,14 @@ public class NotifyMessageSendApiImpl implements NotifyMessageSendApi {
reqDTO.getTemplateCode(), reqDTO.getTemplateParams());
}
+ @Override
+ public boolean validateNotifyTemplate(String orderDelivery) {
+ return false;
+ }
+
+ @Override
+ public void createNotifyTemplate(NotifyTemplateReqDTO templateReqDTO) {
+
+ }
+
}