Browse Source

订单修改后添加会员记录逻辑优化

feature-1.1
wuxicheng 3 years ago
parent
commit
edff449a3b
  1. 5
      bnyer-common/bnyer-common-rocketmq/src/main/java/com/bnyer/common/rocketmq/config/RocketMqConstant.java
  2. 5
      bnyer-services/bnyer-order/src/main/java/com/bnyer/order/config/RocketMqConfig.java
  3. 3
      bnyer-services/bnyer-order/src/main/java/com/bnyer/order/dto/AddVipOrderDto.java
  4. 38
      bnyer-services/bnyer-order/src/main/java/com/bnyer/order/listener/vip/VipOrderPayNotifyConsumer.java
  5. 6
      bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/VipOrderService.java
  6. 14
      bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/impl/VipOrderServiceImpl.java
  7. 11
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/PayInfoServiceImpl.java

5
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"; 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";
} }

5
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); return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.VIP_ORDER_CANCEL_TOPIC);
} }
@Lazy
@Bean(destroyMethod = "destroy")
public RocketMQTemplate vipRecordMqTemplate() {
return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.VIP_RECORD_CREATE_TOPIC);
}
} }

3
bnyer-services/bnyer-order/src/main/java/com/bnyer/order/dto/AddVipOrderDto.java

@ -1,5 +1,6 @@
package com.bnyer.order.dto; package com.bnyer.order.dto;
import com.bnyer.common.core.annotation.CustomParamsValidation;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Getter; import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
@ -29,7 +30,7 @@ public class AddVipOrderDto implements Serializable {
private Long vipId; private Long vipId;
@NotBlank(message = "用户客户端类型不能为空!") @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艺术家-微信") @ApiModelProperty(value="用户客户端类型:10用户-抖音 20用户-快手 30用户-微信 40艺术家-微信")
private Integer userClientType; private Integer userClientType;

38
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.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.bnyer.common.core.domain.VipOrder; import com.bnyer.common.core.domain.VipOrder;
import com.bnyer.common.core.enums.EnumPayStatus; import com.bnyer.common.core.enums.EnumPayStatus;
import com.bnyer.common.core.enums.ResponseEnum; import com.bnyer.common.core.utils.SpringUtils;
import com.bnyer.common.core.exception.ServiceException;
import com.bnyer.common.rocketmq.config.RocketMqConstant; import com.bnyer.common.rocketmq.config.RocketMqConstant;
import com.bnyer.order.enums.EnumVipOrderStatus; import com.bnyer.order.enums.EnumVipOrderStatus;
import com.bnyer.order.mapper.VipOrderMapper; import com.bnyer.order.mapper.VipOrderMapper;
import com.bnyer.order.service.VipOrderService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.client.producer.SendStatus;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener; 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 org.springframework.stereotype.Component;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -35,9 +32,6 @@ public class VipOrderPayNotifyConsumer implements RocketMQListener<String> {
@Resource @Resource
private VipOrderMapper vipOrderMapper; private VipOrderMapper vipOrderMapper;
@Resource
private RocketMQTemplate vipRecordMqTemplate;
@Override @Override
public void onMessage(String message) { public void onMessage(String message) {
log.info("收到消息:{}", message); log.info("收到消息:{}", message);
@ -49,35 +43,13 @@ public class VipOrderPayNotifyConsumer implements RocketMQListener<String> {
log.error("订单不存在,订单id:{}",orderId); log.error("订单不存在,订单id:{}",orderId);
return; return;
} }
//修改订单并添加会员记录
VipOrderService vipOrderService = SpringUtils.getBean(VipOrderService.class);
vipOrder.setPayStatus(EnumPayStatus.SUCCESS.getCode()); vipOrder.setPayStatus(EnumPayStatus.SUCCESS.getCode());
vipOrder.setOrderStatus(EnumVipOrderStatus.SUCCESS.getStatus()); vipOrder.setOrderStatus(EnumVipOrderStatus.SUCCESS.getStatus());
vipOrder.setUpdateTime(new Date()); vipOrder.setUpdateTime(new Date());
vipOrder.setPayTime(new Date()); vipOrder.setPayTime(new Date());
vipOrderMapper.updateById(vipOrder); vipOrderService.updateOrderAndAddVipRecord(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);
}
} }
/**
* 构建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);
}
} }

6
bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/VipOrderService.java

@ -36,4 +36,10 @@ public interface VipOrderService extends IService<VipOrder> {
* @return * @return
*/ */
List<VipOrderVo> getVipOrderList(QueryVipOrderDto dto); List<VipOrderVo> getVipOrderList(QueryVipOrderDto dto);
/**
* 更新订单信息并添加用户会员记录
* @param vipOrder
*/
void updateOrderAndAddVipRecord(VipOrder vipOrder);
} }

14
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.beans.factory.annotation.Autowired;
import org.springframework.messaging.support.GenericMessage; import org.springframework.messaging.support.GenericMessage;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.Date; import java.util.Date;
@ -179,4 +180,17 @@ public class VipOrderServiceImpl extends ServiceImpl<VipOrderMapper, VipOrder> i
vipOrderMapper.cancelVipOrder(cancelOrderIds,closeType); vipOrderMapper.cancelVipOrder(cancelOrderIds,closeType);
} }
/**
* 更新订单信息并添加用户会员记录
* @param vipOrder
*/
@Transactional(rollbackFor = Exception.class)
@Override
public void updateOrderAndAddVipRecord(VipOrder vipOrder) {
//更新订单
vipOrderMapper.updateById(vipOrder);
// TODO: 2023/04/23 远程调用添加会员记录
}
} }

11
bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/PayInfoServiceImpl.java

@ -177,6 +177,17 @@ public class PayInfoServiceImpl extends ServiceImpl<PayInfoMapper, PayInfo> impl
JSONObject vipRechargeMsgObj = new JSONObject(); JSONObject vipRechargeMsgObj = new JSONObject();
vipRechargeMsgObj.put("orderId",orderId); vipRechargeMsgObj.put("orderId",orderId);
String vipRechargeMsgStr = JSON.toJSONString(vipRechargeMsgObj); 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, SendStatus sendStatus = vipOrderPayNotifyMqTemplate.syncSend(RocketMqConstant.VIP_ORDER_PAY_NOTIFY_TOPIC,
new GenericMessage<>(vipRechargeMsgStr)).getSendStatus(); new GenericMessage<>(vipRechargeMsgStr)).getSendStatus();
if (!Objects.equals(sendStatus, SendStatus.SEND_OK)) { if (!Objects.equals(sendStatus, SendStatus.SEND_OK)) {

Loading…
Cancel
Save