12 changed files with 222 additions and 12 deletions
Split View
Diff Options
-
38dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/externalorder/constant/ExternalOrderRelStatus.java
-
13dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/externalorder/entity/ExternalOrderRel.java
-
74dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/externalorder/ExternalOrderEventHandler.java
-
10dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java
-
18dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/externalorder/ExternalOrderRelAggregate.java
-
7dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/externalorder/repository/ExternalOrderRelRepository.java
-
12dating-agency-mall-server/src/main/java/com/qniao/dam/domain/service/order/SubmitSiteActivityOrderDomainService.java
-
2dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqExchange.java
-
2dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqQueue.java
-
7dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/ExternalOrderRelDao.java
-
31dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/ExternalOrderRelRepositoryImpl.java
-
20dating-agency-mall-server/src/main/resources/mapper/externalorder/ExternalOrderRelMapper.xml
@ -0,0 +1,38 @@ |
|||
package com.qniao.dam.domian.aggregate.externalorder.constant; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.EnumValue; |
|||
import com.fasterxml.jackson.annotation.JsonCreator; |
|||
import com.fasterxml.jackson.annotation.JsonFormat; |
|||
import com.fasterxml.jackson.annotation.JsonValue; |
|||
import lombok.Getter; |
|||
|
|||
@Getter |
|||
@JsonFormat(shape = JsonFormat.Shape.OBJECT) |
|||
public enum ExternalOrderRelStatus { |
|||
|
|||
INIT(1, "初始化"), |
|||
|
|||
COMPLETED(2, "已完成"), |
|||
|
|||
CANCELED(3, "已取消"); |
|||
|
|||
@EnumValue |
|||
@JsonValue |
|||
private final Integer value; |
|||
private final String desc; |
|||
|
|||
ExternalOrderRelStatus(Integer value, String desc) { |
|||
this.value = value; |
|||
this.desc = desc; |
|||
} |
|||
|
|||
@JsonCreator |
|||
public static ExternalOrderRelStatus get(Object code) { |
|||
for (ExternalOrderRelStatus e : ExternalOrderRelStatus.values()) { |
|||
if (e.getValue().equals(code)) { |
|||
return e; |
|||
} |
|||
} |
|||
return null; |
|||
} |
|||
} |
|||
@ -0,0 +1,74 @@ |
|||
package com.qniao.dam.application.handler.externalorder; |
|||
|
|||
import com.qniao.dam.application.service.paymentorderrefund.PaymentOrderRefundApplicationService; |
|||
import com.qniao.dam.domain.aggregate.externalorder.entity.ExternalOrderRel; |
|||
import com.qniao.dam.domain.aggregate.paymentchannelorder.entity.PaymentChannelOrder; |
|||
import com.qniao.dam.domain.aggregate.paymentorder.entity.PaymentOrder; |
|||
import com.qniao.dam.domain.aggregate.paymentorderrefund.entity.PaymentOrderRefund; |
|||
import com.qniao.dam.domian.aggregate.externalorder.constant.ExternalOrderTypeEnum; |
|||
import com.qniao.dam.domian.aggregate.paymentorder.constant.PaymentOrderStatusEnum; |
|||
import com.qniao.dam.infrastructure.constant.MqExchange; |
|||
import com.qniao.dam.infrastructure.constant.MqQueue; |
|||
import com.qniao.dam.infrastructure.persistent.dao.domain.ExternalOrderRelDao; |
|||
import com.qniao.dam.query.paymentchannelorder.PaymentChannelOrderQueryService; |
|||
import com.qniao.dam.query.paymentorder.PaymentOrderQueryService; |
|||
import com.qniao.das.domian.aggregate.siteactivity.event.SiteActivityCancelEvent; |
|||
import com.qniao.domain.BaseApplicationService; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.amqp.core.ExchangeTypes; |
|||
import org.springframework.amqp.rabbit.annotation.Exchange; |
|||
import org.springframework.amqp.rabbit.annotation.Queue; |
|||
import org.springframework.amqp.rabbit.annotation.QueueBinding; |
|||
import org.springframework.amqp.rabbit.annotation.RabbitListener; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import javax.annotation.Resource; |
|||
import java.util.ArrayList; |
|||
import java.util.Collections; |
|||
import java.util.List; |
|||
import java.util.Objects; |
|||
|
|||
@Component |
|||
@Slf4j |
|||
public class ExternalOrderEventHandler extends BaseApplicationService { |
|||
|
|||
@Resource |
|||
private ExternalOrderRelDao externalOrderRelDao; |
|||
@Resource |
|||
private PaymentOrderQueryService paymentOrderQueryService; |
|||
@Resource |
|||
private PaymentChannelOrderQueryService paymentChannelOrderQueryService; |
|||
@Resource |
|||
private PaymentOrderRefundApplicationService paymentOrderRefundApplicationService; |
|||
|
|||
@RabbitListener(bindings = @QueueBinding(value = @Queue(MqQueue.CANCEL_SITE_ACTIVITY), |
|||
exchange = @Exchange(value = MqExchange.CANCEL_SITE_ACTIVITY, |
|||
type = ExchangeTypes.FANOUT))) |
|||
public void handleConfirmMeeting(SiteActivityCancelEvent event) { |
|||
try { |
|||
log.error("接收到线下活动订单取消事件:{}", event); |
|||
ExternalOrderRel externalOrderRel = externalOrderRelDao.queryCompletedBy(event.getExternalId(), event.getUserId(), ExternalOrderTypeEnum.SITE_ACTIVITY); |
|||
if (Objects.nonNull(externalOrderRel)) { |
|||
List<PaymentOrderRefund> paymentOrderRefundList = new ArrayList<>(); |
|||
List<PaymentOrder> paymentOrderList = paymentOrderQueryService.listByOrderId(Collections.singletonList(externalOrderRel.getOrderId()), PaymentOrderStatusEnum.PAID); |
|||
for (PaymentOrder paymentOrder : paymentOrderList) { |
|||
PaymentOrderRefund paymentOrderRefund = new PaymentOrderRefund(); |
|||
PaymentChannelOrder paymentChannelOrder = paymentChannelOrderQueryService.queryByTxnOrderId(paymentOrder.getId()); |
|||
paymentOrderRefund.setTradeOrderId(paymentOrder.getOrderId()); |
|||
paymentOrderRefund.setPaymentOrderId(paymentOrder.getId()); |
|||
paymentOrderRefund.setPaymentChannelOrder(paymentChannelOrder.getId()); |
|||
paymentOrderRefund.setPaymentMethod(paymentOrder.getPaymentMethod()); |
|||
paymentOrderRefund.setTransactionId(paymentChannelOrder.getExtOrderNo()); |
|||
paymentOrderRefund.setOrderAmount(paymentChannelOrder.getAmount()); |
|||
paymentOrderRefund.setRefundAmount(paymentChannelOrder.getAmount()); |
|||
paymentOrderRefundList.add(paymentOrderRefund); |
|||
} |
|||
//发起微信退款 |
|||
paymentOrderRefundApplicationService.refund(paymentOrderRefundList); |
|||
} |
|||
} catch (Exception e) { |
|||
log.error("接收到线下活动订单取消事件处理异常", e); |
|||
} |
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,18 @@ |
|||
package com.qniao.dam.domain.aggregate.externalorder; |
|||
|
|||
import com.qniao.dam.domain.aggregate.externalorder.entity.ExternalOrderRel; |
|||
import com.qniao.dam.domain.aggregate.externalorder.repository.ExternalOrderRelRepository; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import javax.annotation.Resource; |
|||
|
|||
@Service |
|||
public class ExternalOrderRelAggregate { |
|||
|
|||
@Resource |
|||
private ExternalOrderRelRepository externalOrderRelRepository; |
|||
|
|||
public void save(ExternalOrderRel externalOrderRel) { |
|||
externalOrderRelRepository.save(externalOrderRel); |
|||
} |
|||
} |
|||
@ -0,0 +1,7 @@ |
|||
package com.qniao.dam.domain.aggregate.externalorder.repository; |
|||
|
|||
import com.qniao.dam.domain.aggregate.externalorder.entity.ExternalOrderRel; |
|||
import com.qniao.domain.Repository; |
|||
|
|||
public interface ExternalOrderRelRepository extends Repository<ExternalOrderRel, Long> { |
|||
} |
|||
@ -1,7 +1,12 @@ |
|||
package com.qniao.dam.infrastructure.persistent.dao.domain; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.qniao.dam.domain.aggregate.externalorder.valueobj.ExternalOrderRel; |
|||
import com.qniao.dam.domain.aggregate.externalorder.entity.ExternalOrderRel; |
|||
import com.qniao.dam.domian.aggregate.externalorder.constant.ExternalOrderTypeEnum; |
|||
import org.apache.ibatis.annotations.Param; |
|||
|
|||
public interface ExternalOrderRelDao extends BaseMapper<ExternalOrderRel> { |
|||
ExternalOrderRel queryCompletedBy(@Param("externalId") Long externalId, |
|||
@Param("userId") Long userId, |
|||
@Param("type") ExternalOrderTypeEnum type); |
|||
} |
|||
@ -0,0 +1,31 @@ |
|||
package com.qniao.dam.infrastructure.persistent.repository.impl; |
|||
|
|||
import com.qniao.dam.domain.aggregate.externalorder.entity.ExternalOrderRel; |
|||
import com.qniao.dam.domain.aggregate.externalorder.repository.ExternalOrderRelRepository; |
|||
import com.qniao.dam.infrastructure.persistent.dao.domain.ExternalOrderRelDao; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import javax.annotation.Resource; |
|||
import java.util.Objects; |
|||
|
|||
@Service |
|||
public class ExternalOrderRelRepositoryImpl implements ExternalOrderRelRepository { |
|||
|
|||
@Resource |
|||
private ExternalOrderRelDao externalOrderRelDao; |
|||
|
|||
@Override |
|||
public ExternalOrderRel load(Long id) { |
|||
return externalOrderRelDao.selectById(id); |
|||
} |
|||
|
|||
@Override |
|||
public Long save(ExternalOrderRel entity) { |
|||
if (Objects.isNull(entity.getId()) || Objects.isNull(externalOrderRelDao.selectById(entity.getId()))) { |
|||
externalOrderRelDao.insert(entity); |
|||
} else { |
|||
externalOrderRelDao.updateById(entity); |
|||
} |
|||
return entity.getId(); |
|||
} |
|||
} |
|||
@ -0,0 +1,20 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="com.qniao.dam.infrastructure.persistent.dao.domain.ExternalOrderRelDao"> |
|||
|
|||
|
|||
<select id="queryCompletedBy" |
|||
resultType="com.qniao.dam.domain.aggregate.externalorder.entity.ExternalOrderRel"> |
|||
select deor.id, |
|||
deor.external_id, |
|||
deor.order_id, |
|||
deor.type |
|||
from da_external_order_rel as deor |
|||
INNER JOIN da_order as dao on deor.order_id = dao.id and dao.`status` = 5 and dao.user_id = #{userId} |
|||
where deor.is_delete = 0 |
|||
and deor.status = 2 |
|||
and deor.external_id = #{externalId} |
|||
and deor.type = #{type} |
|||
limit 1 |
|||
</select> |
|||
</mapper> |
|||
Write
Preview
Loading…
Cancel
Save