12 changed files with 222 additions and 12 deletions
Unified 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; |
package com.qniao.dam.infrastructure.persistent.dao.domain; |
||||
|
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
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> { |
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