From 0f05f1789cffc2fb7e12a36a42a5d8043b40ff27 Mon Sep 17 00:00:00 2001 From: Derran Date: Sat, 3 Aug 2024 15:56:57 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E9=80=80=E6=AC=BE=E7=94=B3?= =?UTF-8?q?=E8=AF=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OrderRefundApplicationStatus.java | 40 ++++++++++++++ .../ora/constant/RefundOrderTypeEnum.java | 34 ++++++++++++ .../ora/entity/OrderRefundApplication.java | 52 +++++++++++++++++++ ...riageBountyOrderUserCommandController.java | 7 ++- ...efundApplicationUserCommandController.java | 20 +++++++ ...arriageBountyOrderUserQueryController.java | 10 +++- ...GetMarriageBountyOrderPreRefundInfoVo.java | 3 ++ ...rRefundApplicationUserQueryController.java | 31 +++++++++++ ...untyOrderRefundApplicationQueryParams.java | 28 ++++++++++ ...arriageBountyOrderRefundApplicationVo.java | 46 ++++++++++++++++ ...erRefundApplicationApplicationService.java | 41 +++++++++++++++ .../ora/OrderRefundApplicationAggregate.java | 24 +++++++++ .../OrderRefundApplicationRepository.java | 12 +++++ .../dao/ora/OrderRefundApplicationDao.java | 19 +++++++ .../OrderRefundApplicationRepositoryImpl.java | 41 +++++++++++++++ .../MarriageBountyOrderQueryServiceImpl.java | 4 ++ .../OrderRefundApplicationQueryService.java | 13 +++++ ...rderRefundApplicationQueryServiceImpl.java | 35 +++++++++++++ .../ora/OrderRefundApplicationMapper.xml | 35 +++++++++++++ 19 files changed, 490 insertions(+), 5 deletions(-) create mode 100644 dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/ora/constant/OrderRefundApplicationStatus.java create mode 100644 dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/ora/constant/RefundOrderTypeEnum.java create mode 100644 dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/ora/entity/OrderRefundApplication.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/ora/user/OrderRefundApplicationUserCommandController.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/ora/user/OrderRefundApplicationUserQueryController.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/ora/user/request/UserPageMarriageBountyOrderRefundApplicationQueryParams.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/ora/user/response/UserPageMarriageBountyOrderRefundApplicationVo.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/ora/OrderRefundApplicationApplicationService.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/ora/OrderRefundApplicationAggregate.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/ora/repository/OrderRefundApplicationRepository.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/ora/OrderRefundApplicationDao.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/OrderRefundApplicationRepositoryImpl.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/query/ora/OrderRefundApplicationQueryService.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/query/ora/impl/OrderRefundApplicationQueryServiceImpl.java create mode 100644 dating-agency-mall-server/src/main/resources/mapper/ora/OrderRefundApplicationMapper.xml diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/ora/constant/OrderRefundApplicationStatus.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/ora/constant/OrderRefundApplicationStatus.java new file mode 100644 index 0000000..1daa6be --- /dev/null +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/ora/constant/OrderRefundApplicationStatus.java @@ -0,0 +1,40 @@ +package com.qniao.dam.domian.aggregate.ora.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 OrderRefundApplicationStatus { + + UNAUDITED(1, "未审核"), + + APPROVED(2, "已通过"), + + REJECTED(3, "已拒绝"); + + @EnumValue + @JsonValue + private final Integer value; + + private final String desc; + + OrderRefundApplicationStatus(Integer value, String desc) { + this.value = value; + this.desc = desc; + } + + @JsonCreator + public static OrderRefundApplicationStatus get(Integer v) { + + for (OrderRefundApplicationStatus e : OrderRefundApplicationStatus.values()) { + if (e.getValue().equals(v)) { + return e; + } + } + return null; + } +} diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/ora/constant/RefundOrderTypeEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/ora/constant/RefundOrderTypeEnum.java new file mode 100644 index 0000000..436c7b7 --- /dev/null +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/ora/constant/RefundOrderTypeEnum.java @@ -0,0 +1,34 @@ +package com.qniao.dam.domian.aggregate.ora.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 RefundOrderTypeEnum { + + MARRIAGE_BOUNTY(1, "悬赏招亲"); + + @EnumValue + @JsonValue + private final Integer value; + private final String desc; + + RefundOrderTypeEnum(Integer value, String desc) { + this.value = value; + this.desc = desc; + } + + @JsonCreator + public static RefundOrderTypeEnum get(Object code) { + for (RefundOrderTypeEnum e : RefundOrderTypeEnum.values()) { + if (e.getValue().equals(code)) { + return e; + } + } + return null; + } +} \ No newline at end of file diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/ora/entity/OrderRefundApplication.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/ora/entity/OrderRefundApplication.java new file mode 100644 index 0000000..bdd218a --- /dev/null +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/ora/entity/OrderRefundApplication.java @@ -0,0 +1,52 @@ +package com.qniao.dam.domain.aggregate.ora.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.qniao.dam.domian.aggregate.ora.constant.OrderRefundApplicationStatus; +import com.qniao.dam.domian.aggregate.ora.constant.RefundOrderTypeEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import com.qniao.domain.Entity; + +import java.math.BigDecimal; + +/** + * 订单退款申请 + * + * @date 2024/08/03 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("da_order_refund_application") +public class OrderRefundApplication extends Entity { + + + @ApiModelProperty("订单标识") + private Long orderId; + + @ApiModelProperty("退款订单类型") + private RefundOrderTypeEnum refundOrderType; + + @ApiModelProperty("退款金额") + private BigDecimal refundAmount; + + @ApiModelProperty("订单金额") + private BigDecimal orderAmount; + + @ApiModelProperty("审核状态") + private OrderRefundApplicationStatus status; + + public static OrderRefundApplication build(Long orderId, + RefundOrderTypeEnum refundOrderType, + BigDecimal refundAmount, + BigDecimal orderAmount) { + OrderRefundApplication orderRefundApplication = new OrderRefundApplication(); + orderRefundApplication.setOrderId(orderId); + orderRefundApplication.setRefundOrderType(refundOrderType); + orderRefundApplication.setRefundAmount(refundAmount); + orderRefundApplication.setOrderAmount(orderAmount); + return orderRefundApplication; + } + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/marriagebounty/user/MarriageBountyOrderUserCommandController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/marriagebounty/user/MarriageBountyOrderUserCommandController.java index d17dbf3..cb54581 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/marriagebounty/user/MarriageBountyOrderUserCommandController.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/marriagebounty/user/MarriageBountyOrderUserCommandController.java @@ -1,7 +1,7 @@ package com.qniao.dam.api.command.marriagebounty.user; import com.qniao.dam.api.command.marriagebounty.user.request.RefundMarriageBountyOrderDto; -import com.qniao.dam.application.service.marriagebounty.MarriageBountyOrderApplicationService; +import com.qniao.dam.application.service.ora.OrderRefundApplicationApplicationService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.validation.annotation.Validated; @@ -13,15 +13,14 @@ import javax.annotation.Resource; @RequestMapping("user") @Api(tags = "悬赏招亲订单") public class MarriageBountyOrderUserCommandController { - @Resource - private MarriageBountyOrderApplicationService marriageBountyOrderApplicationService; + private OrderRefundApplicationApplicationService orderRefundApplicationApplicationService; @ApiOperation("用户发起悬赏招亲退款") @PostMapping("/refund/marriage-bounty-order") public void refundMarriageBountyOrder(@RequestBody @Validated RefundMarriageBountyOrderDto dto, @RequestParam Long userId) { - marriageBountyOrderApplicationService.refund(dto.getMarriageBountyOrderId()); + orderRefundApplicationApplicationService.refundMarriageBountyOrder(dto.getMarriageBountyOrderId()); } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/ora/user/OrderRefundApplicationUserCommandController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/ora/user/OrderRefundApplicationUserCommandController.java new file mode 100644 index 0000000..fa8852f --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/ora/user/OrderRefundApplicationUserCommandController.java @@ -0,0 +1,20 @@ +package com.qniao.dam.api.command.ora.user; + +import com.qniao.dam.api.command.ora.user.request.*; +import com.qniao.dam.application.service.ora.OrderRefundApplicationApplicationService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; + +@Api(tags = "订单退款申请") +@RestController +@RequestMapping("user") +public class OrderRefundApplicationUserCommandController { + + @Resource + private OrderRefundApplicationApplicationService orderRefundApplicationApplicationService; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/marriagebounty/user/MarriageBountyOrderUserQueryController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/marriagebounty/user/MarriageBountyOrderUserQueryController.java index 0633a7c..3364370 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/marriagebounty/user/MarriageBountyOrderUserQueryController.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/marriagebounty/user/MarriageBountyOrderUserQueryController.java @@ -6,6 +6,7 @@ import com.qniao.dam.api.query.marriagebounty.user.response.UserGetMarriageBount import com.qniao.dam.api.query.marriagebounty.user.response.UserGetMarriageBountyOrderProductInfoVo; import com.qniao.dam.api.query.marriagebounty.user.response.UserGetMarriageBountyOrderPreRefundInfoVo; import com.qniao.dam.query.marriagebounty.MarriageBountyOrderQueryService; +import com.qniao.dam.query.ora.OrderRefundApplicationQueryService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.validation.annotation.Validated; @@ -20,6 +21,8 @@ public class MarriageBountyOrderUserQueryController { @Resource private MarriageBountyOrderQueryService marriageBountyOrderQueryService; + @Resource + private OrderRefundApplicationQueryService orderRefundApplicationQueryService; @GetMapping("get/marriage-bounty-order/product-info") @ApiOperation("用户获取悬赏招亲订单信息") @@ -32,7 +35,12 @@ public class MarriageBountyOrderUserQueryController { @ApiOperation("用户获取悬赏招亲订单预退款信息") public UserGetMarriageBountyOrderPreRefundInfoVo getMarriageBountyOrderPreRefundInfo(@RequestParam("marriageBountyOrderId") Long marriageBountyOrderId, @RequestParam("userId") Long userId) { - return marriageBountyOrderQueryService.getMarriageBountyOrderPreRefundInfo(marriageBountyOrderId); + UserGetMarriageBountyOrderPreRefundInfoVo refundInfoVo = marriageBountyOrderQueryService.getMarriageBountyOrderPreRefundInfo(marriageBountyOrderId); + //补充退款申请,如果发生退款申请则不能再次发起 + if (orderRefundApplicationQueryService.hasApplied(marriageBountyOrderId)) { + refundInfoVo.setRefundable(false); + } + return refundInfoVo; } @GetMapping("get/marriage-bounty-order/detail") diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/marriagebounty/user/response/UserGetMarriageBountyOrderPreRefundInfoVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/marriagebounty/user/response/UserGetMarriageBountyOrderPreRefundInfoVo.java index 85a5b47..dfc72b3 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/marriagebounty/user/response/UserGetMarriageBountyOrderPreRefundInfoVo.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/marriagebounty/user/response/UserGetMarriageBountyOrderPreRefundInfoVo.java @@ -14,6 +14,9 @@ public class UserGetMarriageBountyOrderPreRefundInfoVo { @JsonSerialize(using = ToStringSerializer.class) private Long marriageBountyOrderId; + @ApiModelProperty("奖励金额") + private BigDecimal rewardAmount; + @ApiModelProperty("可退款见面费用") private BigDecimal refundableMeetingFee = BigDecimal.ZERO; diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/ora/user/OrderRefundApplicationUserQueryController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/ora/user/OrderRefundApplicationUserQueryController.java new file mode 100644 index 0000000..f45823c --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/ora/user/OrderRefundApplicationUserQueryController.java @@ -0,0 +1,31 @@ +package com.qniao.dam.api.query.ora.user; + +import com.qniao.dam.api.query.ora.user.request.UserPageMarriageBountyOrderRefundApplicationQueryParams; +import com.qniao.dam.api.query.ora.user.response.UserPageMarriageBountyOrderRefundApplicationVo; +import com.qniao.dam.query.ora.OrderRefundApplicationQueryService; +import com.qniao.domain.QnPage; +import com.qniao.framework.utils.PageUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +@Api(tags = "订单退款申请") +@RestController +@RequestMapping("user") +public class OrderRefundApplicationUserQueryController { + + @Resource + private OrderRefundApplicationQueryService orderRefundApplicationQueryService; + + @GetMapping("page/marriage-bounty-order/refund-application") + @ApiOperation("用户查询订单退款申请分页") + public QnPage userPageMarriageBountyOrderRefundApplication(PageUtil pageUtil, + @Validated UserPageMarriageBountyOrderRefundApplicationQueryParams queryParams) { + return PageUtil.convert(orderRefundApplicationQueryService.pageMarriageBountyOrder(queryParams, pageUtil), UserPageMarriageBountyOrderRefundApplicationVo.class); + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/ora/user/request/UserPageMarriageBountyOrderRefundApplicationQueryParams.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/ora/user/request/UserPageMarriageBountyOrderRefundApplicationQueryParams.java new file mode 100644 index 0000000..63b3480 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/ora/user/request/UserPageMarriageBountyOrderRefundApplicationQueryParams.java @@ -0,0 +1,28 @@ +package com.qniao.dam.api.query.ora.user.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +@Data +public class UserPageMarriageBountyOrderRefundApplicationQueryParams { + + @ApiModelProperty("审核状态") + private Integer status; + + @ApiModelProperty("客户名称") + private String miName; + + @ApiModelProperty("手机号码") + private String phone; + + @ApiModelProperty("申请开始时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime applyTimeFrom; + + @ApiModelProperty("申请结束时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime applyTimeTo; +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/ora/user/response/UserPageMarriageBountyOrderRefundApplicationVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/ora/user/response/UserPageMarriageBountyOrderRefundApplicationVo.java new file mode 100644 index 0000000..026a5fa --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/ora/user/response/UserPageMarriageBountyOrderRefundApplicationVo.java @@ -0,0 +1,46 @@ +package com.qniao.dam.api.query.ora.user.response; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.qniao.dam.domian.aggregate.ora.constant.OrderRefundApplicationStatus; +import com.qniao.dam.domian.aggregate.ora.constant.RefundOrderTypeEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +public class UserPageMarriageBountyOrderRefundApplicationVo { + + @ApiModelProperty("唯一标识") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @ApiModelProperty("订单标识") + @JsonSerialize(using = ToStringSerializer.class) + private Long orderId; + + @ApiModelProperty("客户名称") + private String miName; + + @ApiModelProperty("手机号码") + private String phone; + + @ApiModelProperty("退款订单类型") + private RefundOrderTypeEnum refundOrderType; + + @ApiModelProperty("退款金额") + private BigDecimal refundAmount; + + @ApiModelProperty("订单金额") + private BigDecimal orderAmount; + + @ApiModelProperty("审核状态") + private OrderRefundApplicationStatus status; + + @ApiModelProperty("申请时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime applyTime; +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/ora/OrderRefundApplicationApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/ora/OrderRefundApplicationApplicationService.java new file mode 100644 index 0000000..200a8ff --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/ora/OrderRefundApplicationApplicationService.java @@ -0,0 +1,41 @@ +package com.qniao.dam.application.service.ora; + +import com.qniao.dam.api.query.marriagebounty.user.response.UserGetMarriageBountyOrderPreRefundInfoVo; +import com.qniao.dam.domain.aggregate.ora.OrderRefundApplicationAggregate; +import com.qniao.dam.domain.aggregate.ora.entity.OrderRefundApplication; +import com.qniao.dam.domian.aggregate.ora.constant.OrderRefundApplicationStatus; +import com.qniao.dam.domian.aggregate.ora.constant.RefundOrderTypeEnum; +import com.qniao.dam.query.marriagebounty.MarriageBountyOrderQueryService; +import com.qniao.dam.query.ora.OrderRefundApplicationQueryService; +import com.qniao.framework.exception.BizException; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +public class OrderRefundApplicationApplicationService { + + @Resource + private MarriageBountyOrderQueryService marriageBountyOrderQueryService; + @Resource + private OrderRefundApplicationQueryService orderRefundApplicationQueryService; + + @Resource + private OrderRefundApplicationAggregate orderRefundApplicationAggregate; + + + public void refundMarriageBountyOrder(Long order) { + UserGetMarriageBountyOrderPreRefundInfoVo preRefundInfoVo = marriageBountyOrderQueryService.getMarriageBountyOrderPreRefundInfo(order); + //补充退款申请,如果发生退款申请则不能再次发起 + if (orderRefundApplicationQueryService.hasApplied(order)) { + preRefundInfoVo.setRefundable(false); + } + if (!preRefundInfoVo.getRefundable()) { + throw new BizException("不能发起退款"); + } + OrderRefundApplication application = OrderRefundApplication.build(order, RefundOrderTypeEnum.MARRIAGE_BOUNTY, + preRefundInfoVo.getRewardAmount(), preRefundInfoVo.getRefundableMeetingFee().add(preRefundInfoVo.getRefundableResultGift())); + application.setStatus(OrderRefundApplicationStatus.UNAUDITED); + orderRefundApplicationAggregate.create(application); + } +} \ No newline at end of file diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/ora/OrderRefundApplicationAggregate.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/ora/OrderRefundApplicationAggregate.java new file mode 100644 index 0000000..190c2ec --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/ora/OrderRefundApplicationAggregate.java @@ -0,0 +1,24 @@ +package com.qniao.dam.domain.aggregate.ora; + +import com.qniao.dam.domain.aggregate.ora.entity.OrderRefundApplication; +import com.qniao.dam.domain.aggregate.ora.repository.OrderRefundApplicationRepository; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * 订单退款申请 + * + * @date 2024/08/03 + */ +@Service +public class OrderRefundApplicationAggregate { + + @Resource + private OrderRefundApplicationRepository repository; + + public void create(OrderRefundApplication entity) { + repository.save(entity); + } + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/ora/repository/OrderRefundApplicationRepository.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/ora/repository/OrderRefundApplicationRepository.java new file mode 100644 index 0000000..40a6560 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/ora/repository/OrderRefundApplicationRepository.java @@ -0,0 +1,12 @@ +package com.qniao.dam.domain.aggregate.ora.repository; + +import com.qniao.dam.domain.aggregate.ora.entity.OrderRefundApplication; +import com.qniao.domain.Repository; + +/** + * 订单退款申请 + * + * @date 2024/08/03 + */ +public interface OrderRefundApplicationRepository extends Repository { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/ora/OrderRefundApplicationDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/ora/OrderRefundApplicationDao.java new file mode 100644 index 0000000..86d399c --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/ora/OrderRefundApplicationDao.java @@ -0,0 +1,19 @@ +package com.qniao.dam.infrastructure.persistent.dao.ora; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.qniao.dam.api.query.ora.user.request.UserPageMarriageBountyOrderRefundApplicationQueryParams; +import com.qniao.dam.api.query.ora.user.response.UserPageMarriageBountyOrderRefundApplicationVo; +import com.qniao.dam.domain.aggregate.ora.entity.OrderRefundApplication; +import org.apache.ibatis.annotations.Param; + +/** + * 订单退款申请 + * + * @date 2024/08/03 + */ +public interface OrderRefundApplicationDao extends BaseMapper { + IPage pageMarriageBountyOrder(Page pageWithoutOrders, + @Param("queryParams") UserPageMarriageBountyOrderRefundApplicationQueryParams queryParams); +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/OrderRefundApplicationRepositoryImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/OrderRefundApplicationRepositoryImpl.java new file mode 100644 index 0000000..14c3b2d --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/OrderRefundApplicationRepositoryImpl.java @@ -0,0 +1,41 @@ +package com.qniao.dam.infrastructure.persistent.repository.impl; + +import com.qniao.dam.domain.aggregate.ora.entity.OrderRefundApplication; +import com.qniao.dam.domain.aggregate.ora.repository.OrderRefundApplicationRepository; +import com.qniao.dam.infrastructure.persistent.dao.ora.OrderRefundApplicationDao; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Objects; + +/** + * 订单退款申请 + * + * @date 2024/08/03 + */ +@Service +public class OrderRefundApplicationRepositoryImpl implements OrderRefundApplicationRepository { + + @Resource + private OrderRefundApplicationDao dao; + + @Override + public OrderRefundApplication load(Long id) { + return dao.selectById(id); + } + + @Override + public Long save(OrderRefundApplication entity) { + if (Objects.isNull(entity) || Objects.isNull(dao.selectById(entity.getId()))) { + dao.insert(entity); + } else { + dao.updateById(entity); + } + return entity.getId(); + } + + @Override + public void delete(Long id) { + dao.deleteById(id); + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/marriagebounty/impl/MarriageBountyOrderQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/marriagebounty/impl/MarriageBountyOrderQueryServiceImpl.java index e375b37..1f70f86 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/marriagebounty/impl/MarriageBountyOrderQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/marriagebounty/impl/MarriageBountyOrderQueryServiceImpl.java @@ -15,6 +15,7 @@ import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageBountyOrderDao import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageBountyOrderRelDao; import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageBountyOrderRewardDao; import com.qniao.dam.query.marriagebounty.MarriageBountyOrderQueryService; +import com.qniao.dam.query.ora.OrderRefundApplicationQueryService; import com.qniao.dam.query.product.ProductQueryService; import com.qniao.framework.utils.TypeConvertUtils; import org.springframework.stereotype.Service; @@ -35,6 +36,8 @@ public class MarriageBountyOrderQueryServiceImpl implements MarriageBountyOrderQ private MarriageBountyOrderRelDao marriageBountyOrderRelDao; @Resource private MarriageBountyOrderRewardDao marriageBountyOrderRewardDao; + @Resource + private OrderRefundApplicationQueryService orderRefundApplicationQueryService; @Override public MarriageBountyOrder queryBy(Long userId, Long miId, MarriageBountyOrderStatusEnum status, @@ -59,6 +62,7 @@ public class MarriageBountyOrderQueryServiceImpl implements MarriageBountyOrderQ MarriageBountyOrder marriageBountyOrder = marriageBountyOrderRepository.load(marriageBountyOrderId); if (Objects.nonNull(marriageBountyOrder) && MarriageBountyOrderPaymentStatusEnum.PAID.equals(marriageBountyOrder.getPaymentStatus())) { refundInfoVo.setMarriageBountyOrderId(marriageBountyOrder.getId()); + refundInfoVo.setRewardAmount(marriageBountyOrder.getRewardAmount()); BigDecimal refundableMeetingFee = BigDecimal.ZERO; BigDecimal refundableResultGift = BigDecimal.ZERO; int refundableMeetingQuantity = 0; diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/ora/OrderRefundApplicationQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/ora/OrderRefundApplicationQueryService.java new file mode 100644 index 0000000..440772d --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/ora/OrderRefundApplicationQueryService.java @@ -0,0 +1,13 @@ +package com.qniao.dam.query.ora; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.qniao.dam.api.query.ora.user.request.UserPageMarriageBountyOrderRefundApplicationQueryParams; +import com.qniao.dam.api.query.ora.user.response.UserPageMarriageBountyOrderRefundApplicationVo; +import com.qniao.framework.utils.PageUtil; + +public interface OrderRefundApplicationQueryService { + + boolean hasApplied(Long orderId); + + IPage pageMarriageBountyOrder(UserPageMarriageBountyOrderRefundApplicationQueryParams queryParams, PageUtil pageUtil); +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/ora/impl/OrderRefundApplicationQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/ora/impl/OrderRefundApplicationQueryServiceImpl.java new file mode 100644 index 0000000..3dc9cdd --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/ora/impl/OrderRefundApplicationQueryServiceImpl.java @@ -0,0 +1,35 @@ +package com.qniao.dam.query.ora.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.qniao.dam.api.query.ora.user.request.UserPageMarriageBountyOrderRefundApplicationQueryParams; +import com.qniao.dam.api.query.ora.user.response.UserPageMarriageBountyOrderRefundApplicationVo; +import com.qniao.dam.domain.aggregate.ora.entity.OrderRefundApplication; +import com.qniao.dam.domian.aggregate.ora.constant.OrderRefundApplicationStatus; +import com.qniao.dam.infrastructure.persistent.dao.ora.OrderRefundApplicationDao; +import com.qniao.dam.query.ora.OrderRefundApplicationQueryService; +import com.qniao.framework.utils.PageUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Arrays; + +@Service +public class OrderRefundApplicationQueryServiceImpl implements OrderRefundApplicationQueryService { + + @Resource + private OrderRefundApplicationDao orderRefundApplicationDao; + + @Override + public boolean hasApplied(Long orderId) { + return orderRefundApplicationDao.selectCount(new LambdaQueryWrapper() + .eq(OrderRefundApplication::getOrderId, orderId) + .in(OrderRefundApplication::getStatus, Arrays.asList(OrderRefundApplicationStatus.UNAUDITED, OrderRefundApplicationStatus.APPROVED))) > 0; + } + + @Override + public IPage pageMarriageBountyOrder(UserPageMarriageBountyOrderRefundApplicationQueryParams queryParams, + PageUtil pageUtil) { + return orderRefundApplicationDao.pageMarriageBountyOrder(pageUtil.toPageWithoutOrders(), queryParams); + } +} \ No newline at end of file diff --git a/dating-agency-mall-server/src/main/resources/mapper/ora/OrderRefundApplicationMapper.xml b/dating-agency-mall-server/src/main/resources/mapper/ora/OrderRefundApplicationMapper.xml new file mode 100644 index 0000000..89c41fd --- /dev/null +++ b/dating-agency-mall-server/src/main/resources/mapper/ora/OrderRefundApplicationMapper.xml @@ -0,0 +1,35 @@ + + + + + + \ No newline at end of file