From a58444706b2e163e26ccc13b8ea055e43159b041 Mon Sep 17 00:00:00 2001 From: Derran Date: Mon, 5 Jan 2026 18:16:26 +0800 Subject: [PATCH] =?UTF-8?q?=E7=8E=AB=E7=91=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MallServerApplicationService.java | 4 +++ .../FreezeOneOnOneRtcConsumeBySdkDto.java | 15 ++++++++++ .../FreezeOneOnOneRtcConsumeBySdkVo.java | 18 ++++++++++++ .../VirtualAccountUserCommandController.java | 12 +++++--- .../request/FreezeOneOnOneRtcConsumeDto.java | 13 +++++++++ .../response/FreezeOneOnOneRtcConsumeVo.java | 18 ++++++++++++ .../VirtualAccountApplicationService.java | 28 +++++++++++++++++++ 7 files changed, 104 insertions(+), 4 deletions(-) create mode 100644 dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/FreezeOneOnOneRtcConsumeBySdkDto.java create mode 100644 dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/response/FreezeOneOnOneRtcConsumeBySdkVo.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/request/FreezeOneOnOneRtcConsumeDto.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/response/FreezeOneOnOneRtcConsumeVo.java diff --git a/dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/MallServerApplicationService.java b/dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/MallServerApplicationService.java index fff7984..a08d41a 100644 --- a/dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/MallServerApplicationService.java +++ b/dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/MallServerApplicationService.java @@ -65,4 +65,8 @@ public interface MallServerApplicationService { @IgnoreResponseAdvice CheckOneOnOneRtcConsumeSdkVo checkOneOnOneRtcConsumeBySdk(@RequestBody CheckOneOnOneRtcConsumeSdkDto dto); + @PostMapping("/user/freeze/one-on-one-rtc-consume/by/sdk") + @IgnoreResponseAdvice + FreezeOneOnOneRtcConsumeBySdkVo freezeOneOnOneRtcConsumeBySdk(@RequestBody FreezeOneOnOneRtcConsumeBySdkDto dto); + } diff --git a/dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/FreezeOneOnOneRtcConsumeBySdkDto.java b/dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/FreezeOneOnOneRtcConsumeBySdkDto.java new file mode 100644 index 0000000..696686a --- /dev/null +++ b/dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/FreezeOneOnOneRtcConsumeBySdkDto.java @@ -0,0 +1,15 @@ +package com.qniao.dam.application.request; + +import com.qniao.daca.domian.aggregate.rtcchannel.constant.RtcChannelTypeEnum; +import lombok.AllArgsConstructor; +import lombok.Data; + +@Data +@AllArgsConstructor +public class FreezeOneOnOneRtcConsumeBySdkDto { + + private Long userId; + + private RtcChannelTypeEnum rtcChannelType; + +} diff --git a/dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/response/FreezeOneOnOneRtcConsumeBySdkVo.java b/dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/response/FreezeOneOnOneRtcConsumeBySdkVo.java new file mode 100644 index 0000000..002aa73 --- /dev/null +++ b/dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/response/FreezeOneOnOneRtcConsumeBySdkVo.java @@ -0,0 +1,18 @@ +package com.qniao.dam.application.response; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class FreezeOneOnOneRtcConsumeBySdkVo { + + private Boolean flag; + + private Integer freezeBalance; + + private Integer availableBalance; + + private BigDecimal unitSellingPrice; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/VirtualAccountUserCommandController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/VirtualAccountUserCommandController.java index 3882db3..fa384a1 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/VirtualAccountUserCommandController.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/VirtualAccountUserCommandController.java @@ -1,11 +1,9 @@ package com.qniao.dam.api.command.virtualaccount.user; -import com.qniao.dam.api.command.virtualaccount.user.request.CheckOneOnOneRtcConsumeDto; -import com.qniao.dam.api.command.virtualaccount.user.request.UserConsumeVirtualAccountDto; -import com.qniao.dam.api.command.virtualaccount.user.request.UserCostChannelGiftDto; -import com.qniao.dam.api.command.virtualaccount.user.request.UserCostIMGiftDto; +import com.qniao.dam.api.command.virtualaccount.user.request.*; import com.qniao.dam.api.command.virtualaccount.user.response.CheckOneOnOneRtcConsumeVo; import com.qniao.dam.api.command.virtualaccount.user.response.CostGiftVo; +import com.qniao.dam.api.command.virtualaccount.user.response.FreezeOneOnOneRtcConsumeVo; import com.qniao.dam.api.command.virtualaccount.user.response.UserConsumeVirtualAccountVo; import com.qniao.dam.application.service.virtualaccount.VirtualAccountApplicationService; import com.qniao.framework.annotation.IgnoreResponseAdvice; @@ -49,4 +47,10 @@ public class VirtualAccountUserCommandController { return virtualAccountApplicationService.checkOneOnOneRtcConsume(dto.getUserId(), dto.getRtcChannelType()); } + @PostMapping("/freeze/one-on-one-rtc-consume/by/sdk") + @IgnoreResponseAdvice + public FreezeOneOnOneRtcConsumeVo freezeOneOnOneRtcConsumeBySdk(@RequestBody FreezeOneOnOneRtcConsumeDto dto) { + return virtualAccountApplicationService.freezeOneOnOneRtcConsume(dto.getUserId(), dto.getRtcChannelType()); + } + } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/request/FreezeOneOnOneRtcConsumeDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/request/FreezeOneOnOneRtcConsumeDto.java new file mode 100644 index 0000000..07347db --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/request/FreezeOneOnOneRtcConsumeDto.java @@ -0,0 +1,13 @@ +package com.qniao.dam.api.command.virtualaccount.user.request; + +import com.qniao.daca.domian.aggregate.rtcchannel.constant.RtcChannelTypeEnum; +import lombok.Data; + +@Data +public class FreezeOneOnOneRtcConsumeDto { + + private Long userId; + + private RtcChannelTypeEnum rtcChannelType; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/response/FreezeOneOnOneRtcConsumeVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/response/FreezeOneOnOneRtcConsumeVo.java new file mode 100644 index 0000000..e02a31b --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/response/FreezeOneOnOneRtcConsumeVo.java @@ -0,0 +1,18 @@ +package com.qniao.dam.api.command.virtualaccount.user.response; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class FreezeOneOnOneRtcConsumeVo { + + private Boolean flag = false; + + private Integer freezeBalance; + + private Integer availableBalance; + + private BigDecimal unitSellingPrice; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/virtualaccount/VirtualAccountApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/virtualaccount/VirtualAccountApplicationService.java index b22e49f..fe73415 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/virtualaccount/VirtualAccountApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/virtualaccount/VirtualAccountApplicationService.java @@ -6,6 +6,7 @@ import com.qniao.dam.api.command.virtualaccount.user.request.UserCostChannelGift import com.qniao.dam.api.command.virtualaccount.user.request.UserCostIMGiftDto; import com.qniao.dam.api.command.virtualaccount.user.response.CheckOneOnOneRtcConsumeVo; import com.qniao.dam.api.command.virtualaccount.user.response.CostGiftVo; +import com.qniao.dam.api.command.virtualaccount.user.response.FreezeOneOnOneRtcConsumeVo; import com.qniao.dam.api.command.virtualaccount.user.response.UserConsumeVirtualAccountVo; import com.qniao.dam.api.query.product.user.response.UserGetProductByCategoryVo; import com.qniao.dam.domain.aggregate.order.entity.Order; @@ -368,4 +369,31 @@ public class VirtualAccountApplicationService extends BaseApplicationService { } return vo; } + + public FreezeOneOnOneRtcConsumeVo freezeOneOnOneRtcConsume(Long userId, + RtcChannelTypeEnum rtcChannelType) { + FreezeOneOnOneRtcConsumeVo vo = new FreezeOneOnOneRtcConsumeVo(); + UserGetProductByCategoryVo productSpec = null; + if (RtcChannelTypeEnum.ONE_ON_ONE_VOICE.equals(rtcChannelType)) { + //一对一语音 + productSpec = productQueryService.getProductByCategory(ProductSubCategoryEnum.CHAT_VOICE_FEE.getValue()); + } else if (RtcChannelTypeEnum.ONE_ON_ONE_VIDEO.equals(rtcChannelType)) { + //一对一视频 + productSpec = productQueryService.getProductByCategory(ProductSubCategoryEnum.CHAT_VIDEO_FEE.getValue()); + } + VirtualAccount virtualAccount = virtualAccountQueryService.queryBy(userId); + Integer tradeBalance = productSpec.getUnitSellingPrice().intValue(); + if (virtualAccount != null && virtualAccount.getBalance() >= tradeBalance) { + Integer originalBalance = virtualAccount.getBalance(); + virtualAccount.setTotalBalance(virtualAccount.getTotalBalance() - tradeBalance); + virtualAccount.setBalance(originalBalance - tradeBalance); + virtualAccount.setFrozenBalance(virtualAccount.getFrozenBalance() + tradeBalance); + virtualAccountAggregate.edit(virtualAccount); + vo.setFlag(true); + vo.setFreezeBalance(tradeBalance); + vo.setAvailableBalance(virtualAccount.getBalance()); + vo.setUnitSellingPrice(productSpec.getUnitSellingPrice()); + } + return vo; + } } \ No newline at end of file