17 changed files with 260 additions and 9 deletions
Split View
Diff Options
-
2dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/contract/constant/ContractStatusEnum.java
-
4dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/contract/constant/ContractTermNameEnum.java
-
4dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/order/constant/OrderBelongingEnum.java
-
3dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/paymentorder/constant/PaymentMethodEnum.java
-
1dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductMainCategoryEnum.java
-
2dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductSubCategoryEnum.java
-
11dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/contract/entity/Contract.java
-
11dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/contract/valobj/ContractTerm.java
-
4dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/paymentorder/entity/PaymentOrder.java
-
20dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/paymentorder/valobj/PaymentOrderVoucherImage.java
-
5dating-agency-mall-server/pom.xml
-
175dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/contract/ContractEventHandler.java
-
4dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/paymentorder/PaymentOrderAggregate.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/PaymentOrderVoucherImageDao.java
-
12dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/PaymentOrderRepositoryImpl.java
@ -0,0 +1,20 @@ |
|||
package com.qniao.dam.domain.aggregate.paymentorder.valobj; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import com.qniao.domain.ValueObject; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
import lombok.EqualsAndHashCode; |
|||
|
|||
@Data |
|||
@EqualsAndHashCode(callSuper = true) |
|||
@TableName("da_payment_order_voucher_image") |
|||
public class PaymentOrderVoucherImage extends ValueObject<PaymentOrderVoucherImage> { |
|||
|
|||
@ApiModelProperty("付款单标识") |
|||
private Long paymentOrderId; |
|||
|
|||
@ApiModelProperty("URL") |
|||
private String url; |
|||
|
|||
} |
|||
@ -0,0 +1,175 @@ |
|||
package com.qniao.dam.application.handler.contract; |
|||
|
|||
import cn.hutool.core.collection.CollUtil; |
|||
import com.qniao.dam.domain.aggregate.contract.ContractAggregate; |
|||
import com.qniao.dam.domain.aggregate.contract.entity.Contract; |
|||
import com.qniao.dam.domain.aggregate.contract.valobj.ContractImage; |
|||
import com.qniao.dam.domain.aggregate.contract.valobj.ContractTerm; |
|||
import com.qniao.dam.domain.aggregate.order.OrderAggregate; |
|||
import com.qniao.dam.domain.aggregate.order.entity.Order; |
|||
import com.qniao.dam.domain.aggregate.order.entity.OrderItem; |
|||
import com.qniao.dam.domain.aggregate.paymentorder.PaymentOrderAggregate; |
|||
import com.qniao.dam.domain.aggregate.paymentorder.entity.PaymentOrder; |
|||
import com.qniao.dam.domain.aggregate.paymentorder.valobj.PaymentOrderVoucherImage; |
|||
import com.qniao.dam.domian.aggregate.contract.constant.ContractStatusEnum; |
|||
import com.qniao.dam.domian.aggregate.contract.constant.ContractTermNameEnum; |
|||
import com.qniao.dam.domian.aggregate.order.constant.OrderBelongingEnum; |
|||
import com.qniao.dam.domian.aggregate.order.constant.OrderStatusEnum; |
|||
import com.qniao.dam.domian.aggregate.order.constant.OrderTypeEnum; |
|||
import com.qniao.dam.domian.aggregate.paymentorder.constant.PaymentMethodEnum; |
|||
import com.qniao.dam.domian.aggregate.paymentorder.constant.PaymentOrderStatusEnum; |
|||
import com.qniao.dam.domian.aggregate.product.constant.ProductMainCategoryEnum; |
|||
import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; |
|||
import com.qniao.dam.domian.aggregate.product.constant.ProductTypeEnum; |
|||
import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; |
|||
import com.qniao.dam.infrastructure.constant.MqExchange; |
|||
import com.qniao.dam.infrastructure.constant.MqQueue; |
|||
import com.qniao.dam.infrastructure.utils.SnowFlakeUtil; |
|||
import com.qniao.dcs.domain.dsc.event.DatingStoreCustomerSignedMQ; |
|||
import com.qniao.domain.BaseApplicationService; |
|||
import com.qniao.framework.utils.TypeConvertUtils; |
|||
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.beans.factory.annotation.Value; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import javax.annotation.Resource; |
|||
import java.math.BigDecimal; |
|||
import java.time.LocalDate; |
|||
import java.time.LocalDateTime; |
|||
import java.util.ArrayList; |
|||
import java.util.Collections; |
|||
import java.util.List; |
|||
|
|||
@Component |
|||
@Slf4j |
|||
public class ContractEventHandler extends BaseApplicationService { |
|||
|
|||
@Resource |
|||
private SnowFlakeUtil snowFlakeUtil; |
|||
@Resource |
|||
private ContractAggregate contractAggregate; |
|||
@Resource |
|||
private OrderAggregate orderAggregate; |
|||
@Resource |
|||
private PaymentOrderAggregate paymentOrderAggregate; |
|||
|
|||
@Value("${platform-org-id}") |
|||
private Long platformOrgId; |
|||
@Value("${platform-org-name}") |
|||
private String platformOrgName; |
|||
@Value("${platform-org-identity-no}") |
|||
private String platformOrgIdentityNo; |
|||
|
|||
@RabbitListener(bindings = @QueueBinding(value = @Queue(MqQueue.DATING_STORE_CUSTOMER_SIGNED), |
|||
exchange = @Exchange(value = MqExchange.DATING_STORE_CUSTOMER_SIGNED, |
|||
type = ExchangeTypes.FANOUT))) |
|||
public void handle(DatingStoreCustomerSignedMQ mq) { |
|||
try { |
|||
//合同 |
|||
Contract contract = handleContract(mq); |
|||
contractAggregate.create(contract); |
|||
//订单 |
|||
Order order = handleOrder(mq); |
|||
orderAggregate.complete(order); |
|||
//付款单 |
|||
PaymentOrder paymentOrder = handlePaymentOrder(mq, order); |
|||
paymentOrderAggregate.save(paymentOrder); |
|||
} catch (Exception e) { |
|||
log.error("线下门店客户已签约事件处理异常", e); |
|||
} |
|||
} |
|||
|
|||
private PaymentOrder handlePaymentOrder(DatingStoreCustomerSignedMQ mq, Order order) { |
|||
PaymentOrder paymentOrder = new PaymentOrder(); |
|||
paymentOrder.setOrderId(order.getId()); |
|||
paymentOrder.setPayableAmount(mq.getAmount()); |
|||
paymentOrder.setUnpaidAmount(BigDecimal.ZERO); |
|||
paymentOrder.setPaidAmount(mq.getAmount()); |
|||
paymentOrder.setPaidTime(order.getPaidTime()); |
|||
paymentOrder.setPaymentMethod(PaymentMethodEnum.OFFLINE); |
|||
paymentOrder.setStatus(PaymentOrderStatusEnum.PAID); |
|||
//付款凭证 |
|||
if (CollUtil.isNotEmpty(mq.getPaymentVoucherImageList())) { |
|||
List<PaymentOrderVoucherImage> paymentOrderVoucherImageList = new ArrayList<>(); |
|||
for (String url : mq.getPaymentVoucherImageList()) { |
|||
PaymentOrderVoucherImage voucherImage = new PaymentOrderVoucherImage(); |
|||
voucherImage.setUrl(url); |
|||
paymentOrderVoucherImageList.add(voucherImage); |
|||
} |
|||
paymentOrder.setVoucherImageList(paymentOrderVoucherImageList); |
|||
} |
|||
return paymentOrder; |
|||
} |
|||
|
|||
/** |
|||
* 订单处理 |
|||
*/ |
|||
private Order handleOrder(DatingStoreCustomerSignedMQ mq) { |
|||
Order order = new Order(); |
|||
order.setUserId(mq.getDatingStoreCustomerId()); |
|||
order.setOrderBelonging(OrderBelongingEnum.CUSTOMIZED_SERVICE); |
|||
order.setName("定制服务"); |
|||
order.setOrderBelongName(mq.getName()); |
|||
order.setOrderType(OrderTypeEnum.NORMAL); |
|||
order.setOrderCode(snowFlakeUtil.getSnowflakeOrderCode()); |
|||
order.setOriginalAmount(mq.getAmount()); |
|||
order.setDiscountAmount(BigDecimal.ZERO); |
|||
order.setPlatformDiscountAmount(BigDecimal.ZERO); |
|||
order.setDiscountAmount(mq.getAmount()); |
|||
order.setPaidTime(LocalDateTime.now()); |
|||
order.setStatus(OrderStatusEnum.COMPLETED); |
|||
|
|||
OrderItem orderItem = new OrderItem(); |
|||
orderItem.setProductType(ProductTypeEnum.CUSTOMER_VIRTUAL); |
|||
orderItem.setMainCategory(ProductMainCategoryEnum.CUSTOMIZED_SERVICE); |
|||
orderItem.setSubCategory(ProductSubCategoryEnum.CUSTOMIZED_SERVICE); |
|||
orderItem.setProductTitle("定制服务"); |
|||
orderItem.setProductDesc("定制服务"); |
|||
orderItem.setUnitOriginalPrice(mq.getAmount()); |
|||
orderItem.setUnitSettlementPrice(mq.getAmount()); |
|||
orderItem.setQuantity(1); |
|||
orderItem.setOriginalAmount(mq.getAmount()); |
|||
orderItem.setPlatformDiscountAmount(BigDecimal.ZERO); |
|||
orderItem.setDiscountAmount(BigDecimal.ZERO); |
|||
orderItem.setSettlementAmount(mq.getAmount()); |
|||
order.setOrderItemList(Collections.singletonList(orderItem)); |
|||
return order; |
|||
} |
|||
|
|||
/** |
|||
* 合同处理 |
|||
*/ |
|||
private Contract handleContract(DatingStoreCustomerSignedMQ mq) { |
|||
Contract contract = new Contract(); |
|||
//甲方 |
|||
contract.setFirstPartyIdentityType(IdentityTypeEnum.INDIVIDUAL); |
|||
contract.setFirstPartyId(mq.getDatingStoreCustomerId()); |
|||
contract.setFirstPartyName(mq.getName()); |
|||
contract.setFirstPartyIdentityNo(mq.getIdentityCard()); |
|||
//乙方 广州聚星河创意文化发展有限公司 |
|||
contract.setSecondPartyIdentityType(IdentityTypeEnum.ORGANIZATION); |
|||
contract.setSecondPartyId(platformOrgId); |
|||
contract.setSecondPartyName(platformOrgName); |
|||
contract.setSecondPartyIdentityNo(platformOrgIdentityNo); |
|||
|
|||
contract.setAmount(mq.getAmount()); |
|||
contract.setSignDate(LocalDate.now()); |
|||
contract.setStartDate(contract.getSignDate()); |
|||
contract.setEndDate(mq.getServiceEndDate()); |
|||
contract.setStatus(ContractStatusEnum.IN_EFFECT); |
|||
|
|||
//合同条款 |
|||
ContractTerm contractTerm = ContractTerm.build(ContractTermNameEnum.NUMBER_OF_SERVICES, ContractTermNameEnum.NUMBER_OF_SERVICES.getDesc(), |
|||
null, mq.getNumberOfServices().toString()); |
|||
contract.setContractTermList(Collections.singletonList(contractTerm)); |
|||
|
|||
//合同影像 |
|||
contract.setContractImageList(TypeConvertUtils.convert(mq.getContractImageList(), ContractImage.class)); |
|||
return contract; |
|||
} |
|||
} |
|||
@ -0,0 +1,7 @@ |
|||
package com.qniao.dam.infrastructure.persistent.dao.domain; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.qniao.dam.domain.aggregate.paymentorder.valobj.PaymentOrderVoucherImage; |
|||
|
|||
public interface PaymentOrderVoucherImageDao extends BaseMapper<PaymentOrderVoucherImage> { |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save