diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/virtualaccount/constant/VirtualAccountTradeTypeEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/virtualaccount/constant/VirtualAccountTradeTypeEnum.java new file mode 100644 index 0000000..2c60f72 --- /dev/null +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/virtualaccount/constant/VirtualAccountTradeTypeEnum.java @@ -0,0 +1,41 @@ +package com.qniao.dam.domian.aggregate.virtualaccount.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 VirtualAccountTradeTypeEnum { + + RECHARGE(101, "充值"), + + CHAT(201, "聊天"), + + GIFT(202, "礼物"); + + @EnumValue + @JsonValue + private final Integer value; + + private final String desc; + + VirtualAccountTradeTypeEnum(Integer value, String desc) { + this.value = value; + this.desc = desc; + } + + @JsonCreator + public static VirtualAccountTradeTypeEnum get(Integer v) { + + for (VirtualAccountTradeTypeEnum e : VirtualAccountTradeTypeEnum.values()) { + if (e.getValue().equals(v)) { + 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/virtualaccount/valobj/VirtualAccountRecord.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/virtualaccount/valobj/VirtualAccountRecord.java index 18e3967..dc53f37 100644 --- a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/virtualaccount/valobj/VirtualAccountRecord.java +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/virtualaccount/valobj/VirtualAccountRecord.java @@ -1,6 +1,7 @@ package com.qniao.dam.domain.aggregate.virtualaccount.valobj; import com.baomidou.mybatisplus.annotation.TableName; +import com.qniao.dam.domian.aggregate.virtualaccount.constant.VirtualAccountTradeTypeEnum; import com.qniao.domain.ValueObject; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -19,7 +20,7 @@ public class VirtualAccountRecord extends ValueObject { private Long virtualAccountId; @ApiModelProperty("交易类型") - private Integer tradeType; + private VirtualAccountTradeTypeEnum tradeType; @ApiModelProperty("交易数量") private Integer tradeBalance; 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 b675d96..df00e84 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 @@ -1,6 +1,7 @@ package com.qniao.dam.application; import com.qniao.dam.application.request.*; +import com.qniao.dam.application.response.ConsumeVirtualAccountVo; import com.qniao.dam.application.response.UserCheckEnableRightBySdkVo; import com.qniao.dam.application.response.UserConsumeRightBySdkVo; import com.qniao.framework.annotation.IgnoreResponseAdvice; @@ -45,4 +46,8 @@ public interface MallServerApplicationService { @PostMapping("/user/acquire/matchmaker-join-recommend/reward/by/sdk") @IgnoreResponseAdvice void userAcquireMatchmakerJoinRecommendRewardBySdk(@RequestBody @Valid UserAcquireMatchmakerJoinRecommendRewardDto dto); + + @PostMapping("/user/consume/virtual-account") + @IgnoreResponseAdvice + ConsumeVirtualAccountVo userConsumeVirtualAccountBySdk(@RequestBody UserConsumeVirtualAccountDto dto); } diff --git a/dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/UserConsumeVirtualAccountDto.java b/dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/UserConsumeVirtualAccountDto.java new file mode 100644 index 0000000..e4fa2b7 --- /dev/null +++ b/dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/UserConsumeVirtualAccountDto.java @@ -0,0 +1,19 @@ +package com.qniao.dam.application.request; + +import com.qniao.dam.domian.aggregate.virtualaccount.constant.VirtualAccountTradeTypeEnum; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@AllArgsConstructor +@NoArgsConstructor +@Data +public class UserConsumeVirtualAccountDto { + + private Long userId; + + private Integer spend; + + private VirtualAccountTradeTypeEnum tradeType; + +} diff --git a/dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/response/ConsumeVirtualAccountVo.java b/dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/response/ConsumeVirtualAccountVo.java new file mode 100644 index 0000000..b8aea47 --- /dev/null +++ b/dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/response/ConsumeVirtualAccountVo.java @@ -0,0 +1,10 @@ +package com.qniao.dam.application.response; + +import lombok.Data; + +@Data +public class ConsumeVirtualAccountVo { + + private Boolean success = false; + +} 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 new file mode 100644 index 0000000..1d5f5a7 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/VirtualAccountUserCommandController.java @@ -0,0 +1,29 @@ +package com.qniao.dam.api.command.virtualaccount.user; + +import com.qniao.dam.api.command.virtualaccount.user.request.UserConsumeVirtualAccountDto; +import com.qniao.dam.api.command.virtualaccount.user.response.UserConsumeVirtualAccountVo; +import com.qniao.dam.application.service.virtualaccount.VirtualAccountApplicationService; +import com.qniao.framework.annotation.IgnoreResponseAdvice; +import io.swagger.annotations.Api; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +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 VirtualAccountUserCommandController { + + @Resource + private VirtualAccountApplicationService virtualAccountApplicationService; + + @PostMapping("/consume/virtual-account") + @IgnoreResponseAdvice + public UserConsumeVirtualAccountVo userConsumeVirtualAccountBySdk(@RequestBody UserConsumeVirtualAccountDto dto) { + return virtualAccountApplicationService.consume(dto); + } + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/request/UserConsumeVirtualAccountDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/request/UserConsumeVirtualAccountDto.java new file mode 100644 index 0000000..026c8e6 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/request/UserConsumeVirtualAccountDto.java @@ -0,0 +1,20 @@ +package com.qniao.dam.api.command.virtualaccount.user.request; + +import com.qniao.dam.domian.aggregate.virtualaccount.constant.VirtualAccountTradeTypeEnum; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class UserConsumeVirtualAccountDto { + + @NotNull + private Long userId; + + @NotNull + private Integer spend; + + @NotNull + private VirtualAccountTradeTypeEnum tradeType; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/response/UserConsumeVirtualAccountVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/response/UserConsumeVirtualAccountVo.java new file mode 100644 index 0000000..da1c46c --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/response/UserConsumeVirtualAccountVo.java @@ -0,0 +1,10 @@ +package com.qniao.dam.api.command.virtualaccount.user.response; + +import lombok.Data; + +@Data +public class UserConsumeVirtualAccountVo { + + private Boolean success = false; + +} 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 2e1eaeb..aaf24cb 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 @@ -1,7 +1,10 @@ package com.qniao.dam.application.service.virtualaccount; +import com.qniao.dam.api.command.virtualaccount.user.request.UserConsumeVirtualAccountDto; +import com.qniao.dam.api.command.virtualaccount.user.response.UserConsumeVirtualAccountVo; import com.qniao.dam.domain.aggregate.virtualaccount.VirtualAccountAggregate; import com.qniao.dam.domain.aggregate.virtualaccount.entity.VirtualAccount; +import com.qniao.dam.query.virtualaccount.VirtualAccountQueryService; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -11,6 +14,8 @@ public class VirtualAccountApplicationService { @Resource private VirtualAccountAggregate virtualAccountAggregate; + @Resource + private VirtualAccountQueryService virtualAccountQueryService; public void create(VirtualAccount virtualAccount) { virtualAccountAggregate.create(virtualAccount); @@ -21,6 +26,15 @@ public class VirtualAccountApplicationService { } public void delete(Long id) { - virtualAccountAggregate.delete(id); + virtualAccountAggregate.delete(id); + } + + public UserConsumeVirtualAccountVo consume(UserConsumeVirtualAccountDto dto) { + UserConsumeVirtualAccountVo vo = new UserConsumeVirtualAccountVo(); + VirtualAccount virtualAccount = virtualAccountQueryService.queryBy(dto.getUserId()); + + if (virtualAccount != null) { + + } } } \ No newline at end of file