From 15749d9c7bea3d2f6732c1a3e367fd50eaf0d6bb Mon Sep 17 00:00:00 2001 From: Derran Date: Fri, 10 May 2024 16:52:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../RevenueRewardUserQueryController.java | 49 ++++++++++++++++++ ...seGetRevenueRewardAbstractQueryParams.java | 25 +++++++++ ...UsePageRevenueRewardRecordQueryParams.java | 24 +++++++++ .../UseGetRevenueRewardAbstractVo.java | 23 +++++++++ .../response/UseGetRevenueRewardRecordVo.java | 33 ++++++++++++ .../reward/RewardApplicationService.java | 5 +- .../dao/view/RevenueRewardViewDao.java | 18 +++++++ .../RevenueRewardQueryService.java | 10 ++++ .../impl/RevenueRewardQueryServiceImpl.java | 21 ++++++++ .../revenuereward/RevenueRewardViewMapper.xml | 51 +++++++++++++++++++ 10 files changed, 257 insertions(+), 2 deletions(-) create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/RevenueRewardUserQueryController.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/request/UseGetRevenueRewardAbstractQueryParams.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/request/UsePageRevenueRewardRecordQueryParams.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/response/UseGetRevenueRewardAbstractVo.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/response/UseGetRevenueRewardRecordVo.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/RevenueRewardViewDao.java create mode 100644 dating-agency-mall-server/src/main/resources/mapper/revenuereward/RevenueRewardViewMapper.xml diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/RevenueRewardUserQueryController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/RevenueRewardUserQueryController.java new file mode 100644 index 0000000..eed16d3 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/RevenueRewardUserQueryController.java @@ -0,0 +1,49 @@ +package com.qniao.dam.api.query.revenuereward.user; + +import com.qniao.dam.api.query.revenuereward.user.request.UseGetRevenueRewardAbstractQueryParams; +import com.qniao.dam.api.query.revenuereward.user.request.UsePageRevenueRewardRecordQueryParams; +import com.qniao.dam.api.query.revenuereward.user.response.UseGetRevenueRewardAbstractVo; +import com.qniao.dam.api.query.revenuereward.user.response.UseGetRevenueRewardRecordVo; +import com.qniao.dam.query.revenuereward.RevenueRewardQueryService; +import com.qniao.domain.QnPage; +import com.qniao.framework.utils.PageUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.Objects; + +@RestController +@RequestMapping("user") +@Api(tags = "收益") +public class RevenueRewardUserQueryController { + + @Resource + private RevenueRewardQueryService revenueRewardQueryService; + + @GetMapping("get/revenue-reward-abstract") + @ApiOperation("获取用户收益摘要") + public UseGetRevenueRewardAbstractVo useGetRevenueRewardAbstract(UseGetRevenueRewardAbstractQueryParams queryParams, + @RequestParam("userId") Long userId) { + if (Objects.isNull(queryParams.getQueryUserId())) { + queryParams.setQueryUserId(userId); + } + return revenueRewardQueryService.getRevenueRewardAbstract(queryParams); + } + + @GetMapping("page/revenue-reward-record") + @ApiOperation("获取用户收益记录") + public QnPage usePageRevenueRewardRecord(PageUtil pageUtil, + UsePageRevenueRewardRecordQueryParams queryParams, + @RequestParam("userId") Long userId) { + if (Objects.isNull(queryParams.getQueryUserId())) { + queryParams.setQueryUserId(userId); + } + return PageUtil.convert(revenueRewardQueryService.pageRevenueRewardRecord(pageUtil, queryParams),UseGetRevenueRewardRecordVo.class); + } + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/request/UseGetRevenueRewardAbstractQueryParams.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/request/UseGetRevenueRewardAbstractQueryParams.java new file mode 100644 index 0000000..a9b38a0 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/request/UseGetRevenueRewardAbstractQueryParams.java @@ -0,0 +1,25 @@ +package com.qniao.dam.api.query.revenuereward.user.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +@Data +public class UseGetRevenueRewardAbstractQueryParams { + + @ApiModelProperty("查询用户标识") + private Long queryUserId; + + @ApiModelProperty("收益开始时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime revenueTimeFrom; + + @ApiModelProperty("收益结束时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime revenueTimeTo; + + @ApiModelProperty("交易类型 101认证、102发布、103匹配、104推荐") + private Integer tradeType; +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/request/UsePageRevenueRewardRecordQueryParams.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/request/UsePageRevenueRewardRecordQueryParams.java new file mode 100644 index 0000000..7ef0599 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/request/UsePageRevenueRewardRecordQueryParams.java @@ -0,0 +1,24 @@ +package com.qniao.dam.api.query.revenuereward.user.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +@Data +public class UsePageRevenueRewardRecordQueryParams { + @ApiModelProperty("查询用户标识") + private Long queryUserId; + + @ApiModelProperty("收益开始时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime revenueTimeFrom; + + @ApiModelProperty("收益结束时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime revenueTimeTo; + + @ApiModelProperty("交易类型 101认证、102发布、103匹配、104推荐") + private Integer tradeType; +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/response/UseGetRevenueRewardAbstractVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/response/UseGetRevenueRewardAbstractVo.java new file mode 100644 index 0000000..0c5a367 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/response/UseGetRevenueRewardAbstractVo.java @@ -0,0 +1,23 @@ +package com.qniao.dam.api.query.revenuereward.user.response; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class UseGetRevenueRewardAbstractVo { + + @ApiModelProperty("收益唯一标识") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @ApiModelProperty("营收额") + private BigDecimal totalRevenue; + + @ApiModelProperty("收益额") + private BigDecimal totalEarnings; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/response/UseGetRevenueRewardRecordVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/response/UseGetRevenueRewardRecordVo.java new file mode 100644 index 0000000..871cc0b --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/revenuereward/user/response/UseGetRevenueRewardRecordVo.java @@ -0,0 +1,33 @@ +package com.qniao.dam.api.query.revenuereward.user.response; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeTypeEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +public class UseGetRevenueRewardRecordVo { + + @ApiModelProperty("交易类型") + private TradeTypeEnum tradeType; + + @ApiModelProperty("营收额") + private BigDecimal revenue; + + @ApiModelProperty("收益额 营收额除去平台服务费") + private BigDecimal earnings; + + @ApiModelProperty("订单金额") + private BigDecimal totalAssociateOrderAmount; + + @ApiModelProperty("内容") + private String content; + + @ApiModelProperty("收益时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime revenueTime; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java index 3d9b337..096475d 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java @@ -98,6 +98,7 @@ public class RewardApplicationService { RewardConfig serviceFeeRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.PLATFORM_SERVICE_FEE); if (Objects.nonNull(serviceFeeRewardConfig)) { MarriageInformation meetingMi = marriageInformationDao.selectById(dto.getAssociatedMiId()); + TradeTypeEnum tradeType = transform(dto.getRewardType()); //收益信息 RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(dto.getReceiver()); if (Objects.isNull(revenueReward)) { @@ -108,7 +109,7 @@ public class RewardApplicationService { //服务费用 BigDecimal serviceFee = serviceFeeRewardConfig.calculate(revenue); BigDecimal earnings = revenue.subtract(serviceFee); - RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MARRIAGE_BOUNTY_MEETING_FEE, + RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(tradeType, revenue, earnings, dto.getTotalAssociateOrderAmount()); revenueRewardRecord.handleContent(Collections.singletonList(meetingMi.getNickName())); if (CollUtil.isNotEmpty(dto.getOrderIdRelList())) { @@ -129,7 +130,7 @@ public class RewardApplicationService { } walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(earnings)); walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); - WalletAccountRecord walletAccountRecord = WalletAccountRecord.build(TradeTypeEnum.MARRIAGE_BOUNTY_MEETING_FEE, earnings, true); + WalletAccountRecord walletAccountRecord = WalletAccountRecord.build(tradeType, earnings, true); walletAccount.setRecordList(Collections.singletonList(walletAccountRecord)); acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/RevenueRewardViewDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/RevenueRewardViewDao.java new file mode 100644 index 0000000..9d0abd0 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/RevenueRewardViewDao.java @@ -0,0 +1,18 @@ +package com.qniao.dam.infrastructure.persistent.dao.view; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.qniao.dam.api.query.revenuereward.user.request.UseGetRevenueRewardAbstractQueryParams; +import com.qniao.dam.api.query.revenuereward.user.request.UsePageRevenueRewardRecordQueryParams; +import com.qniao.dam.api.query.revenuereward.user.response.UseGetRevenueRewardAbstractVo; +import com.qniao.dam.api.query.revenuereward.user.response.UseGetRevenueRewardRecordVo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +@Mapper +public interface RevenueRewardViewDao { + UseGetRevenueRewardAbstractVo getRevenueRewardAbstract(@Param("queryParams") UseGetRevenueRewardAbstractQueryParams queryParams); + + IPage pageRevenueRewardRecord(Page pageWithoutOrders, + @Param("queryParams") UsePageRevenueRewardRecordQueryParams queryParams); +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/RevenueRewardQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/RevenueRewardQueryService.java index c6c9c5f..0a8bc5c 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/RevenueRewardQueryService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/RevenueRewardQueryService.java @@ -1,7 +1,17 @@ package com.qniao.dam.query.revenuereward; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.qniao.dam.api.query.revenuereward.user.request.UseGetRevenueRewardAbstractQueryParams; +import com.qniao.dam.api.query.revenuereward.user.request.UsePageRevenueRewardRecordQueryParams; +import com.qniao.dam.api.query.revenuereward.user.response.UseGetRevenueRewardAbstractVo; +import com.qniao.dam.api.query.revenuereward.user.response.UseGetRevenueRewardRecordVo; import com.qniao.dam.domain.aggregate.revenuereward.entity.RevenueReward; +import com.qniao.framework.utils.PageUtil; public interface RevenueRewardQueryService { RevenueReward queryByUserId(Long userId); + + UseGetRevenueRewardAbstractVo getRevenueRewardAbstract(UseGetRevenueRewardAbstractQueryParams queryParams); + + IPage pageRevenueRewardRecord(PageUtil pageUtil, UsePageRevenueRewardRecordQueryParams queryParams); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/impl/RevenueRewardQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/impl/RevenueRewardQueryServiceImpl.java index 667716f..8e076ac 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/impl/RevenueRewardQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/impl/RevenueRewardQueryServiceImpl.java @@ -1,9 +1,17 @@ package com.qniao.dam.query.revenuereward.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.qniao.dam.api.query.revenuereward.user.request.UseGetRevenueRewardAbstractQueryParams; +import com.qniao.dam.api.query.revenuereward.user.request.UsePageRevenueRewardRecordQueryParams; +import com.qniao.dam.api.query.revenuereward.user.response.UseGetRevenueRewardAbstractVo; +import com.qniao.dam.api.query.revenuereward.user.response.UseGetRevenueRewardRecordVo; import com.qniao.dam.domain.aggregate.revenuereward.entity.RevenueReward; import com.qniao.dam.infrastructure.persistent.dao.domain.RevenueRewardDao; +import com.qniao.dam.infrastructure.persistent.dao.view.RevenueRewardViewDao; import com.qniao.dam.query.revenuereward.RevenueRewardQueryService; +import com.qniao.domain.QnPage; +import com.qniao.framework.utils.PageUtil; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -13,6 +21,8 @@ public class RevenueRewardQueryServiceImpl implements RevenueRewardQueryService @Resource private RevenueRewardDao revenueRewardDao; + @Resource + private RevenueRewardViewDao revenueRewardViewDao; @Override public RevenueReward queryByUserId(Long userId) { @@ -20,4 +30,15 @@ public class RevenueRewardQueryServiceImpl implements RevenueRewardQueryService .eq(RevenueReward::getUserId, userId) .last("limit 1")); } + + @Override + public UseGetRevenueRewardAbstractVo getRevenueRewardAbstract(UseGetRevenueRewardAbstractQueryParams queryParams) { + return revenueRewardViewDao.getRevenueRewardAbstract(queryParams); + } + + @Override + public IPage pageRevenueRewardRecord(PageUtil pageUtil, + UsePageRevenueRewardRecordQueryParams queryParams) { + return revenueRewardViewDao.pageRevenueRewardRecord(pageUtil.toPageWithoutOrders(), queryParams); + } } diff --git a/dating-agency-mall-server/src/main/resources/mapper/revenuereward/RevenueRewardViewMapper.xml b/dating-agency-mall-server/src/main/resources/mapper/revenuereward/RevenueRewardViewMapper.xml new file mode 100644 index 0000000..38a168a --- /dev/null +++ b/dating-agency-mall-server/src/main/resources/mapper/revenuereward/RevenueRewardViewMapper.xml @@ -0,0 +1,51 @@ + + + + + + + + +