diff --git a/bnyer-common/bnyer-common-rocketmq/src/main/java/com/bnyer/common/rocketmq/config/RocketMqConstant.java b/bnyer-common/bnyer-common-rocketmq/src/main/java/com/bnyer/common/rocketmq/config/RocketMqConstant.java index a8600bb..d76f757 100644 --- a/bnyer-common/bnyer-common-rocketmq/src/main/java/com/bnyer/common/rocketmq/config/RocketMqConstant.java +++ b/bnyer-common/bnyer-common-rocketmq/src/main/java/com/bnyer/common/rocketmq/config/RocketMqConstant.java @@ -37,9 +37,4 @@ public class RocketMqConstant { */ public static final String VIP_ORDER_PAY_NOTIFY_TOPIC = "vip-order-pay-notify-topic"; - /** - * 添加vip记录 - */ - public static final String VIP_RECORD_CREATE_TOPIC = "vip-record-create-topic"; - } diff --git a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/config/RocketMqConfig.java b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/config/RocketMqConfig.java index 9bf6cd9..9629caa 100644 --- a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/config/RocketMqConfig.java +++ b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/config/RocketMqConfig.java @@ -26,9 +26,4 @@ public class RocketMqConfig { return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.VIP_ORDER_CANCEL_TOPIC); } - @Lazy - @Bean(destroyMethod = "destroy") - public RocketMQTemplate vipRecordMqTemplate() { - return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.VIP_RECORD_CREATE_TOPIC); - } } diff --git a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/dto/AddVipOrderDto.java b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/dto/AddVipOrderDto.java index d253ed7..edaf77e 100644 --- a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/dto/AddVipOrderDto.java +++ b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/dto/AddVipOrderDto.java @@ -1,5 +1,6 @@ package com.bnyer.order.dto; +import com.bnyer.common.core.annotation.CustomParamsValidation; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.NoArgsConstructor; @@ -29,7 +30,7 @@ public class AddVipOrderDto implements Serializable { private Long vipId; @NotBlank(message = "用户客户端类型不能为空!") - @Range(min = 10,max = 40,message = "用户客户端类型只能包含:10用户-抖音 20用户-快手 30用户-微信 40艺术家-微信") + @CustomParamsValidation(range = "10|20|30|40",message = "用户客户端类型只能包含:10用户-抖音 20用户-快手 30用户-微信 40艺术家-微信") @ApiModelProperty(value="用户客户端类型:10用户-抖音 20用户-快手 30用户-微信 40艺术家-微信") private Integer userClientType; diff --git a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/listener/vip/VipOrderPayNotifyConsumer.java b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/listener/vip/VipOrderPayNotifyConsumer.java index 66a3b31..325a29f 100644 --- a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/listener/vip/VipOrderPayNotifyConsumer.java +++ b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/listener/vip/VipOrderPayNotifyConsumer.java @@ -5,17 +5,14 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.bnyer.common.core.domain.VipOrder; import com.bnyer.common.core.enums.EnumPayStatus; -import com.bnyer.common.core.enums.ResponseEnum; -import com.bnyer.common.core.exception.ServiceException; +import com.bnyer.common.core.utils.SpringUtils; import com.bnyer.common.rocketmq.config.RocketMqConstant; import com.bnyer.order.enums.EnumVipOrderStatus; import com.bnyer.order.mapper.VipOrderMapper; +import com.bnyer.order.service.VipOrderService; import lombok.extern.slf4j.Slf4j; -import org.apache.rocketmq.client.producer.SendStatus; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; import org.apache.rocketmq.spring.core.RocketMQListener; -import org.apache.rocketmq.spring.core.RocketMQTemplate; -import org.springframework.messaging.support.GenericMessage; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -35,9 +32,6 @@ public class VipOrderPayNotifyConsumer implements RocketMQListener { @Resource private VipOrderMapper vipOrderMapper; - @Resource - private RocketMQTemplate vipRecordMqTemplate; - @Override public void onMessage(String message) { log.info("收到消息:{}", message); @@ -49,35 +43,13 @@ public class VipOrderPayNotifyConsumer implements RocketMQListener { log.error("订单不存在,订单id:{}",orderId); return; } + //修改订单并添加会员记录 + VipOrderService vipOrderService = SpringUtils.getBean(VipOrderService.class); vipOrder.setPayStatus(EnumPayStatus.SUCCESS.getCode()); vipOrder.setOrderStatus(EnumVipOrderStatus.SUCCESS.getStatus()); vipOrder.setUpdateTime(new Date()); vipOrder.setPayTime(new Date()); - vipOrderMapper.updateById(vipOrder); - // TODO: 2023/04/13 发消息到img服务创建vip记录开通会员 - String msg = buildVipRecordMsg(vipOrder); - SendStatus sendStatus = vipRecordMqTemplate.syncSend(RocketMqConstant.VIP_RECORD_CREATE_TOPIC, new GenericMessage<>(msg)).getSendStatus(); - if (!Objects.equals(sendStatus, SendStatus.SEND_OK)) { - // 消息发不出去就抛异常 - throw new ServiceException(ResponseEnum.SERVER_ERROR); - } + vipOrderService.updateOrderAndAddVipRecord(vipOrder); } - /** - * 构建vip记录消息体 - * @param vipOrder - * @return - */ - private String buildVipRecordMsg(VipOrder vipOrder) { - JSONObject jsonObject = new JSONObject(); - jsonObject.put("orderId",vipOrder.getOrderId()); - jsonObject.put("startTime",vipOrder.getStartTime()); - jsonObject.put("endTime",vipOrder.getEndTime()); - jsonObject.put("vipId",vipOrder.getVipId()); - jsonObject.put("vipName",vipOrder.getVipName()); - jsonObject.put("vipTypeName",vipOrder.getVipTypeName()); - jsonObject.put("phone",vipOrder.getPhone()); - jsonObject.put("userId",vipOrder.getUserId()); - return JSON.toJSONString(jsonObject); - } } diff --git a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/VipOrderService.java b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/VipOrderService.java index c0cab2a..75bddd7 100644 --- a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/VipOrderService.java +++ b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/VipOrderService.java @@ -36,4 +36,10 @@ public interface VipOrderService extends IService { * @return */ List getVipOrderList(QueryVipOrderDto dto); + + /** + * 更新订单信息并添加用户会员记录 + * @param vipOrder + */ + void updateOrderAndAddVipRecord(VipOrder vipOrder); } diff --git a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/impl/VipOrderServiceImpl.java b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/impl/VipOrderServiceImpl.java index acb7e9c..6f073a5 100644 --- a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/impl/VipOrderServiceImpl.java +++ b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/impl/VipOrderServiceImpl.java @@ -32,6 +32,7 @@ import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.support.GenericMessage; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.util.Date; @@ -179,4 +180,17 @@ public class VipOrderServiceImpl extends ServiceImpl i vipOrderMapper.cancelVipOrder(cancelOrderIds,closeType); } + + /** + * 更新订单信息并添加用户会员记录 + * @param vipOrder + */ + @Transactional(rollbackFor = Exception.class) + @Override + public void updateOrderAndAddVipRecord(VipOrder vipOrder) { + //更新订单 + vipOrderMapper.updateById(vipOrder); + // TODO: 2023/04/23 远程调用添加会员记录 + } + } diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/PayInfoServiceImpl.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/PayInfoServiceImpl.java index 00e0408..51dcc6b 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/PayInfoServiceImpl.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/PayInfoServiceImpl.java @@ -177,6 +177,17 @@ public class PayInfoServiceImpl extends ServiceImpl impl JSONObject vipRechargeMsgObj = new JSONObject(); vipRechargeMsgObj.put("orderId",orderId); String vipRechargeMsgStr = JSON.toJSONString(vipRechargeMsgObj); + // TODO: 2023/04/23可优化为:添加一张消息日志表,字段:topicName,消息内容,消息状态(发送中、成功、失败),错误信息 +// vipOrderPayNotifyMqTemplate.asyncSend(RocketMqConstant.VIP_ORDER_PAY_NOTIFY_TOPIC,vipRechargeMsgStr,new SendCallback() { +// @Override +// public void onSuccess(SendResult sendResult) { +// log.info("topic:{}消息发送成功",RocketMqConstant.VIP_ORDER_PAY_NOTIFY_TOPIC); +// } +// @Override +// public void onException(Throwable e) { +// log.info("topic:{}消息发送失败,error:{}",RocketMqConstant.VIP_ORDER_PAY_NOTIFY_TOPIC,e.getMessage()); +// } +// }); SendStatus sendStatus = vipOrderPayNotifyMqTemplate.syncSend(RocketMqConstant.VIP_ORDER_PAY_NOTIFY_TOPIC, new GenericMessage<>(vipRechargeMsgStr)).getSendStatus(); if (!Objects.equals(sendStatus, SendStatus.SEND_OK)) {