diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/contract/constant/ContractStatusEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/contract/constant/ContractStatusEnum.java index 638932b..534a0b9 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/contract/constant/ContractStatusEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/contract/constant/ContractStatusEnum.java @@ -22,7 +22,7 @@ public enum ContractStatusEnum { */ OVER(3, "已结束"), /** - * 已废弃 + * 已废弃wa */ OBSOLETED(4, "已废弃"); diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/contract/constant/ContractTermNameEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/contract/constant/ContractTermNameEnum.java index 5221eb2..24ce645 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/contract/constant/ContractTermNameEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/contract/constant/ContractTermNameEnum.java @@ -10,9 +10,7 @@ import lombok.Getter; @JsonFormat(shape = JsonFormat.Shape.OBJECT) public enum ContractTermNameEnum { - PIC(1, "图片"), - - FILE(2, "文件"); + NUMBER_OF_SERVICES(1, "服务次数"); @EnumValue @JsonValue diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/order/constant/OrderBelongingEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/order/constant/OrderBelongingEnum.java index e69d0fe..39fbe20 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/order/constant/OrderBelongingEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/order/constant/OrderBelongingEnum.java @@ -14,7 +14,9 @@ public enum OrderBelongingEnum { MATCHMAKER(2, "红娘"), - MATCHMAKING_CORNER(3, "相亲角"); + MATCHMAKING_CORNER(3, "相亲角"), + + CUSTOMIZED_SERVICE(4, "定制服务"); @EnumValue @JsonValue diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/paymentorder/constant/PaymentMethodEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/paymentorder/constant/PaymentMethodEnum.java index 4b10d15..4385963 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/paymentorder/constant/PaymentMethodEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/paymentorder/constant/PaymentMethodEnum.java @@ -12,8 +12,9 @@ public enum PaymentMethodEnum { WECHAT_PAY(1, "微信付款JSAPI"), - WECHAT_PAY_H5(2, "微信付款H5"); + WECHAT_PAY_H5(2, "微信付款H5"), + OFFLINE(3, "线下付款"); @EnumValue @JsonValue diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductMainCategoryEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductMainCategoryEnum.java index 8dee885..b50a88b 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductMainCategoryEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductMainCategoryEnum.java @@ -21,6 +21,7 @@ public enum ProductMainCategoryEnum { VIP(6, "会员"), MARRIAGE_BOUNTY(7, "悬赏招亲"), SITE_ACTIVITY(8, "线下活动"), + CUSTOMIZED_SERVICE(9, "定制服务"), MATCHMAKER(888, "红娘合伙人"), diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductSubCategoryEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductSubCategoryEnum.java index 1360c2b..eff689b 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductSubCategoryEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductSubCategoryEnum.java @@ -42,6 +42,8 @@ public enum ProductSubCategoryEnum { MARRIAGE_BOUNTY_WOMAN_FEE(1002, "线下活动女性费用"), + CUSTOMIZED_SERVICE(1101, "定制服务"), + MATCHMAKER_FRANCHISE_FEE(88801, "高级红娘"), MATCHMAKER_ONLINE_FEE(88802, "线上红娘"), diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/contract/entity/Contract.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/contract/entity/Contract.java index c1de801..1206688 100644 --- a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/contract/entity/Contract.java +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/contract/entity/Contract.java @@ -10,6 +10,8 @@ import lombok.Data; import lombok.EqualsAndHashCode; import com.qniao.domain.Entity; +import java.math.BigDecimal; +import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; @@ -47,14 +49,17 @@ public class Contract extends Entity { @ApiModelProperty("乙方身份编号 身份证、统一信用代码") private String secondPartyIdentityNo; + @ApiModelProperty("合同金额") + private BigDecimal amount; + @ApiModelProperty("签订日期") - private LocalDateTime signDate; + private LocalDate signDate; @ApiModelProperty("开始日期") - private LocalDateTime startDate; + private LocalDate startDate; @ApiModelProperty("开始日期") - private LocalDateTime endDate; + private LocalDate endDate; @ApiModelProperty("状态 已生效、已结束、已终止") private ContractStatusEnum status; diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/contract/valobj/ContractTerm.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/contract/valobj/ContractTerm.java index ed572b4..197f21a 100644 --- a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/contract/valobj/ContractTerm.java +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/contract/valobj/ContractTerm.java @@ -28,4 +28,15 @@ public class ContractTerm extends ValueObject { @ApiModelProperty("数值") private String value; + public static ContractTerm build(ContractTermNameEnum name, + String displayName, + ContractTermUnitEnum type, + String value) { + ContractTerm entity = new ContractTerm(); + entity.setName(name); + entity.setDisplayName(displayName); + entity.setType(type); + entity.setValue(value); + return entity; + } } diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/paymentorder/entity/PaymentOrder.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/paymentorder/entity/PaymentOrder.java index c3c3c84..4386d4b 100644 --- a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/paymentorder/entity/PaymentOrder.java +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/paymentorder/entity/PaymentOrder.java @@ -1,6 +1,7 @@ package com.qniao.dam.domain.aggregate.paymentorder.entity; import com.baomidou.mybatisplus.annotation.TableName; +import com.qniao.dam.domain.aggregate.paymentorder.valobj.PaymentOrderVoucherImage; import com.qniao.dam.domian.aggregate.paymentorder.constant.PaymentMethodEnum; import com.qniao.dam.domian.aggregate.paymentorder.constant.PaymentOrderStatusEnum; import com.qniao.domain.Entity; @@ -10,6 +11,7 @@ import lombok.EqualsAndHashCode; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.List; @Data @EqualsAndHashCode(callSuper = true) @@ -36,4 +38,6 @@ public class PaymentOrder extends Entity { @ApiModelProperty("状态") private PaymentOrderStatusEnum status; + + private transient List voucherImageList; } diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/paymentorder/valobj/PaymentOrderVoucherImage.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/paymentorder/valobj/PaymentOrderVoucherImage.java new file mode 100644 index 0000000..a2d552c --- /dev/null +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/paymentorder/valobj/PaymentOrderVoucherImage.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 { + + @ApiModelProperty("付款单标识") + private Long paymentOrderId; + + @ApiModelProperty("URL") + private String url; + +} diff --git a/dating-agency-mall-server/pom.xml b/dating-agency-mall-server/pom.xml index 907d335..ddb470b 100644 --- a/dating-agency-mall-server/pom.xml +++ b/dating-agency-mall-server/pom.xml @@ -91,6 +91,11 @@ dating-agency-uec-event 0.0.1-SNAPSHOT + + com.qniao + dating-clue-service-event + 0.0.1-SNAPSHOT + com.qniao dating-agency-service-entity diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/contract/ContractEventHandler.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/contract/ContractEventHandler.java new file mode 100644 index 0000000..673ab6b --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/contract/ContractEventHandler.java @@ -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 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; + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/paymentorder/PaymentOrderAggregate.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/paymentorder/PaymentOrderAggregate.java index 70f1b5f..0d33a54 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/paymentorder/PaymentOrderAggregate.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/paymentorder/PaymentOrderAggregate.java @@ -37,4 +37,8 @@ public class PaymentOrderAggregate { paymentOrderRepository.save(paymentOrder); return TypeConvertUtils.convert(paymentOrder, PaymentOrderPaidEvent.class); } + + public void save(PaymentOrder paymentOrder) { + paymentOrderRepository.save(paymentOrder); + } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqExchange.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqExchange.java index fde3735..89ace76 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqExchange.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqExchange.java @@ -33,4 +33,6 @@ public interface MqExchange { String MATCHMAKER_INVITED = "fanout.MatchmakerInvited"; String MATCHMAKER_NOVICE_TASK_PROGRESS_FINISHED = "fanout.matchmakerNoviceTaskProgressFinished"; + + String DATING_STORE_CUSTOMER_SIGNED = "fanout.DatingStoreCustomerSigned"; } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqQueue.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqQueue.java index 1752357..9dc3760 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqQueue.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqQueue.java @@ -25,4 +25,6 @@ public interface MqQueue { String OPERATION_CENTER_CREATED = MqExchange.OPERATION_CENTER_CREATED + serviceName; String MATCHMAKER_NOVICE_TASK_PROGRESS_FINISHED = MqExchange.MATCHMAKER_NOVICE_TASK_PROGRESS_FINISHED + serviceName; + + String DATING_STORE_CUSTOMER_SIGNED = MqExchange.DATING_STORE_CUSTOMER_SIGNED + serviceName; } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/PaymentOrderVoucherImageDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/PaymentOrderVoucherImageDao.java new file mode 100644 index 0000000..b24d5e0 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/PaymentOrderVoucherImageDao.java @@ -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 { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/PaymentOrderRepositoryImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/PaymentOrderRepositoryImpl.java index ba82d2c..1b609e7 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/PaymentOrderRepositoryImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/PaymentOrderRepositoryImpl.java @@ -1,9 +1,12 @@ package com.qniao.dam.infrastructure.persistent.repository.impl; +import cn.hutool.core.collection.CollUtil; import com.qniao.dam.domain.aggregate.paymentorder.entity.PaymentOrder; import com.qniao.dam.domain.aggregate.paymentorder.repository.PaymentOrderRepository; import com.qniao.dam.infrastructure.persistent.dao.domain.PaymentOrderDao; +import com.qniao.dam.infrastructure.persistent.dao.domain.PaymentOrderVoucherImageDao; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.Objects; @@ -13,12 +16,15 @@ public class PaymentOrderRepositoryImpl implements PaymentOrderRepository { @Resource private PaymentOrderDao paymentOrderDao; + @Resource + private PaymentOrderVoucherImageDao paymentOrderVoucherImageDao; @Override public PaymentOrder load(Long id) { return paymentOrderDao.selectById(id); } + @Transactional(rollbackFor = Exception.class) @Override public Long save(PaymentOrder entity) { if (Objects.isNull(entity.getId()) || Objects.isNull(paymentOrderDao.selectById(entity.getId()))) { @@ -26,6 +32,12 @@ public class PaymentOrderRepositoryImpl implements PaymentOrderRepository { } else { paymentOrderDao.updateById(entity); } + if (CollUtil.isNotEmpty(entity.getVoucherImageList())) { + entity.getVoucherImageList().forEach(voucherImage -> { + voucherImage.setPaymentOrderId(entity.getId()); + paymentOrderVoucherImageDao.insert(voucherImage); + }); + } return entity.getId(); } }