mirror of
				https://github.com/YunaiV/ruoyi-vue-pro.git
				synced 2025-10-31 10:37:41 +08:00 
			
		
		
		
	fix:完善 TODO 提到的问题
This commit is contained in:
		| @ -23,7 +23,6 @@ | |||||||
|             <artifactId>yudao-module-trade-api</artifactId> |             <artifactId>yudao-module-trade-api</artifactId> | ||||||
|             <version>${revision}</version> |             <version>${revision}</version> | ||||||
|         </dependency> |         </dependency> | ||||||
|  |  | ||||||
|         <dependency> |         <dependency> | ||||||
|             <groupId>cn.iocoder.boot</groupId> |             <groupId>cn.iocoder.boot</groupId> | ||||||
|             <artifactId>yudao-module-product-api</artifactId> |             <artifactId>yudao-module-product-api</artifactId> | ||||||
| @ -44,6 +43,11 @@ | |||||||
|             <artifactId>yudao-module-member-api</artifactId> |             <artifactId>yudao-module-member-api</artifactId> | ||||||
|             <version>${revision}</version> |             <version>${revision}</version> | ||||||
|         </dependency> |         </dependency> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>cn.iocoder.boot</groupId> | ||||||
|  |             <artifactId>yudao-module-system-api</artifactId> | ||||||
|  |             <version>${revision}</version> | ||||||
|  |         </dependency> | ||||||
|  |  | ||||||
|         <!-- 业务组件 --> |         <!-- 业务组件 --> | ||||||
|         <dependency> |         <dependency> | ||||||
|  | |||||||
| @ -6,7 +6,9 @@ import cn.hutool.core.util.IdUtil; | |||||||
| import cn.hutool.core.util.ObjectUtil; | import cn.hutool.core.util.ObjectUtil; | ||||||
| import cn.hutool.core.util.StrUtil; | import cn.hutool.core.util.StrUtil; | ||||||
| import cn.iocoder.yudao.framework.common.core.KeyValue; | import cn.iocoder.yudao.framework.common.core.KeyValue; | ||||||
|  | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||||||
| import cn.iocoder.yudao.framework.common.enums.TerminalEnum; | import cn.iocoder.yudao.framework.common.enums.TerminalEnum; | ||||||
|  | import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | ||||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||||
| import cn.iocoder.yudao.framework.common.util.json.JsonUtils; | import cn.iocoder.yudao.framework.common.util.json.JsonUtils; | ||||||
| import cn.iocoder.yudao.module.member.api.address.AddressApi; | import cn.iocoder.yudao.module.member.api.address.AddressApi; | ||||||
| @ -21,6 +23,11 @@ import cn.iocoder.yudao.module.product.api.sku.ProductSkuApi; | |||||||
| import cn.iocoder.yudao.module.product.api.sku.dto.ProductSkuUpdateStockReqDTO; | import cn.iocoder.yudao.module.product.api.sku.dto.ProductSkuUpdateStockReqDTO; | ||||||
| import cn.iocoder.yudao.module.promotion.api.coupon.CouponApi; | import cn.iocoder.yudao.module.promotion.api.coupon.CouponApi; | ||||||
| import cn.iocoder.yudao.module.promotion.api.coupon.dto.CouponUseReqDTO; | import cn.iocoder.yudao.module.promotion.api.coupon.dto.CouponUseReqDTO; | ||||||
|  | import cn.iocoder.yudao.module.system.api.notify.NotifyMessageSendApi; | ||||||
|  | import cn.iocoder.yudao.module.system.api.notify.dto.NotifySendSingleToUserReqDTO; | ||||||
|  | import cn.iocoder.yudao.module.system.api.notify.dto.NotifyTemplateReqDTO; | ||||||
|  | import cn.iocoder.yudao.module.system.api.user.AdminUserApi; | ||||||
|  | import cn.iocoder.yudao.module.system.enums.notify.NotifyTemplateTypeEnum; | ||||||
| import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderDeliveryReqVO; | import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderDeliveryReqVO; | ||||||
| import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderPageReqVO; | import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderPageReqVO; | ||||||
| import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderCreateReqVO; | import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderCreateReqVO; | ||||||
| @ -29,6 +36,7 @@ import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderSettle | |||||||
| import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderSettlementRespVO; | import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderSettlementRespVO; | ||||||
| import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert; | import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert; | ||||||
| import cn.iocoder.yudao.module.trade.dal.dataobject.cart.TradeCartDO; | import cn.iocoder.yudao.module.trade.dal.dataobject.cart.TradeCartDO; | ||||||
|  | import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO; | ||||||
| import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; | ||||||
| import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; | ||||||
| import cn.iocoder.yudao.module.trade.dal.mysql.order.TradeOrderItemMapper; | import cn.iocoder.yudao.module.trade.dal.mysql.order.TradeOrderItemMapper; | ||||||
| @ -38,6 +46,7 @@ import cn.iocoder.yudao.module.trade.enums.delivery.DeliveryTypeEnum; | |||||||
| import cn.iocoder.yudao.module.trade.enums.order.*; | import cn.iocoder.yudao.module.trade.enums.order.*; | ||||||
| import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderProperties; | import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderProperties; | ||||||
| import cn.iocoder.yudao.module.trade.service.cart.TradeCartService; | import cn.iocoder.yudao.module.trade.service.cart.TradeCartService; | ||||||
|  | import cn.iocoder.yudao.module.trade.service.delivery.DeliveryExpressService; | ||||||
| import cn.iocoder.yudao.module.trade.service.price.TradePriceService; | import cn.iocoder.yudao.module.trade.service.price.TradePriceService; | ||||||
| import cn.iocoder.yudao.module.trade.service.price.bo.TradePriceCalculateReqBO; | import cn.iocoder.yudao.module.trade.service.price.bo.TradePriceCalculateReqBO; | ||||||
| import cn.iocoder.yudao.module.trade.service.price.bo.TradePriceCalculateRespBO; | import cn.iocoder.yudao.module.trade.service.price.bo.TradePriceCalculateRespBO; | ||||||
| @ -74,6 +83,8 @@ public class TradeOrderServiceImpl implements TradeOrderService { | |||||||
|     private TradeCartService tradeCartService; |     private TradeCartService tradeCartService; | ||||||
|     @Resource |     @Resource | ||||||
|     private TradePriceService tradePriceService; |     private TradePriceService tradePriceService; | ||||||
|  |     @Resource | ||||||
|  |     private DeliveryExpressService deliveryExpressService; | ||||||
|  |  | ||||||
|     @Resource |     @Resource | ||||||
|     private ProductSkuApi productSkuApi; |     private ProductSkuApi productSkuApi; | ||||||
| @ -85,7 +96,10 @@ public class TradeOrderServiceImpl implements TradeOrderService { | |||||||
|     private CouponApi couponApi; |     private CouponApi couponApi; | ||||||
|     @Resource |     @Resource | ||||||
|     private MemberUserApi memberUserApi; |     private MemberUserApi memberUserApi; | ||||||
|  |     @Resource | ||||||
|  |     private AdminUserApi adminUserApi; | ||||||
|  |     @Resource | ||||||
|  |     private NotifyMessageSendApi notifyMessageSendApi; | ||||||
|     @Resource |     @Resource | ||||||
|     private TradeOrderProperties tradeOrderProperties; |     private TradeOrderProperties tradeOrderProperties; | ||||||
|  |  | ||||||
| @ -201,7 +215,7 @@ public class TradeOrderServiceImpl implements TradeOrderService { | |||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 执行创建完创建完订单后的逻辑 |      * 执行创建完创建完订单后的逻辑 | ||||||
|      * |      * <p> | ||||||
|      * 例如说:优惠劵的扣减、积分的扣减、支付单的创建等等 |      * 例如说:优惠劵的扣减、积分的扣减、支付单的创建等等 | ||||||
|      * |      * | ||||||
|      * @param userId          用户编号 |      * @param userId          用户编号 | ||||||
| @ -265,7 +279,7 @@ public class TradeOrderServiceImpl implements TradeOrderService { | |||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 校验交易订单满足被支付的条件 |      * 校验交易订单满足被支付的条件 | ||||||
|      * |      * <p> | ||||||
|      * 1. 交易订单未支付 |      * 1. 交易订单未支付 | ||||||
|      * 2. 支付单已支付 |      * 2. 支付单已支付 | ||||||
|      * |      * | ||||||
| @ -324,8 +338,11 @@ public class TradeOrderServiceImpl implements TradeOrderService { | |||||||
|     public void deliveryOrder(Long userId, TradeOrderDeliveryReqVO deliveryReqVO) { |     public void deliveryOrder(Long userId, TradeOrderDeliveryReqVO deliveryReqVO) { | ||||||
|         // 校验并获得交易订单(可发货) |         // 校验并获得交易订单(可发货) | ||||||
|         TradeOrderDO order = validateOrderDeliverable(deliveryReqVO.getId()); |         TradeOrderDO order = validateOrderDeliverable(deliveryReqVO.getId()); | ||||||
|  |         // TODO 芋艿:logisticsId 校验存在 发货物流公司 fix | ||||||
|         // TODO 芋艿:logisticsId 校验存在 |         DeliveryExpressDO deliveryExpress = deliveryExpressService.getDeliveryExpress(deliveryReqVO.getLogisticsId()); | ||||||
|  |         if (deliveryExpress == null) { | ||||||
|  |             throw exception(DELIVERY_EXPRESS_NOT_EXISTS); | ||||||
|  |         } | ||||||
|  |  | ||||||
|         // 更新 TradeOrderDO 状态为已发货,等待收货 |         // 更新 TradeOrderDO 状态为已发货,等待收货 | ||||||
|         int updateCount = tradeOrderMapper.updateByIdAndStatus(order.getId(), order.getStatus(), |         int updateCount = tradeOrderMapper.updateByIdAndStatus(order.getId(), order.getStatus(), | ||||||
| @ -338,8 +355,32 @@ public class TradeOrderServiceImpl implements TradeOrderService { | |||||||
|  |  | ||||||
|         // TODO 芋艿:发送订单变化的消息 |         // 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<String, Object> msgMap = new HashMap<>(); | ||||||
|  |         msgMap.put("orderId", deliveryReqVO.getId()); | ||||||
|  |         msgMap.put("msg", TradeOrderStatusEnum.DELIVERED.getStatus()); | ||||||
|  |         // 2、发送站内信 | ||||||
|  |         notifyMessageSendApi.sendSingleMessageToAdmin( | ||||||
|  |                 new NotifySendSingleToUserReqDTO() | ||||||
|  |                         .setUserId(userId) | ||||||
|  |                         .setTemplateCode("order_delivery") | ||||||
|  |                         .setTemplateParams(msgMap)); | ||||||
|         // TODO 芋艿:OrderLog |         // TODO 芋艿:OrderLog | ||||||
|  |  | ||||||
|         // TODO 设计:like:是否要单独一个 delivery 发货单表??? |         // TODO 设计:like:是否要单独一个 delivery 发货单表??? | ||||||
| @ -349,7 +390,7 @@ public class TradeOrderServiceImpl implements TradeOrderService { | |||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 校验交易订单满足被发货的条件 |      * 校验交易订单满足被发货的条件 | ||||||
|      * |      * <p> | ||||||
|      * 1. 交易订单未发货 |      * 1. 交易订单未发货 | ||||||
|      * |      * | ||||||
|      * @param id 交易订单编号 |      * @param id 交易订单编号 | ||||||
| @ -397,7 +438,7 @@ public class TradeOrderServiceImpl implements TradeOrderService { | |||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 校验交易订单满足可售货的条件 |      * 校验交易订单满足可售货的条件 | ||||||
|      * |      * <p> | ||||||
|      * 1. 交易订单待收货 |      * 1. 交易订单待收货 | ||||||
|      * |      * | ||||||
|      * @param userId 用户编号 |      * @param userId 用户编号 | ||||||
|  | |||||||
| @ -1,6 +1,7 @@ | |||||||
| package cn.iocoder.yudao.module.system.api.notify; | 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.NotifySendSingleToUserReqDTO; | ||||||
|  | import cn.iocoder.yudao.module.system.api.notify.dto.NotifyTemplateReqDTO; | ||||||
|  |  | ||||||
| import javax.validation.Valid; | import javax.validation.Valid; | ||||||
|  |  | ||||||
| @ -27,4 +28,8 @@ public interface NotifyMessageSendApi { | |||||||
|      */ |      */ | ||||||
|     Long sendSingleMessageToMember(@Valid NotifySendSingleToUserReqDTO reqDTO); |     Long sendSingleMessageToMember(@Valid NotifySendSingleToUserReqDTO reqDTO); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     boolean validateNotifyTemplate(String orderDelivery); | ||||||
|  |  | ||||||
|  |     void createNotifyTemplate(NotifyTemplateReqDTO templateReqDTO); | ||||||
| } | } | ||||||
|  | |||||||
| @ -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; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -1,7 +1,7 @@ | |||||||
| package cn.iocoder.yudao.module.system.api.notify; | 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.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 cn.iocoder.yudao.module.system.service.notify.NotifySendService; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
|  |  | ||||||
| @ -30,4 +30,14 @@ public class NotifyMessageSendApiImpl implements NotifyMessageSendApi { | |||||||
|                 reqDTO.getTemplateCode(), reqDTO.getTemplateParams()); |                 reqDTO.getTemplateCode(), reqDTO.getTemplateParams()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public boolean validateNotifyTemplate(String orderDelivery) { | ||||||
|  |         return false; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void createNotifyTemplate(NotifyTemplateReqDTO templateReqDTO) { | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 puhui999
					puhui999