diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardAmountUnitEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardAmountUnitEnum.java new file mode 100644 index 0000000..b040f9d --- /dev/null +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardAmountUnitEnum.java @@ -0,0 +1,36 @@ +package com.qniao.dam.domian.aggregate.rewardconfig.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 RewardAmountUnitEnum { + + NUM(1, "数值"), + + PERCENT(2, "百分比"); + + @EnumValue + @JsonValue + private final Integer value; + private final String desc; + + RewardAmountUnitEnum(Integer value, String desc) { + this.value = value; + this.desc = desc; + } + + @JsonCreator + public static RewardAmountUnitEnum get(Object code) { + for (RewardAmountUnitEnum e : RewardAmountUnitEnum.values()) { + if (e.getValue().equals(code)) { + return e; + } + } + return null; + } +} diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardTypeEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardTypeEnum.java index 19f19d1..2db4995 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardTypeEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardTypeEnum.java @@ -10,7 +10,9 @@ import lombok.Getter; @JsonFormat(shape = JsonFormat.Shape.OBJECT) public enum RewardTypeEnum { - MATCHMAKER_JOIN_RECOMMEND(1, "红娘入驻推荐"); + MATCHMAKER_JOIN_RECOMMEND(1, "红娘入驻推荐"), + + PLATFORM_SERVICE_FEE(2, "平台服务费"); @EnumValue @JsonValue diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/walletaccount/constant/TradeTypeEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/walletaccount/constant/TradeTypeEnum.java new file mode 100644 index 0000000..71942e9 --- /dev/null +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/walletaccount/constant/TradeTypeEnum.java @@ -0,0 +1,43 @@ +package com.qniao.dam.domian.aggregate.walletaccount.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 TradeTypeEnum { + + /** + * 红娘 + */ + MATCHMAKER_JOIN_RECOMMEND_FEE(1, "红娘入驻推荐奖励"), + /** + * 平台 + */ + PLATFORM_SERVICE_FEE(2, "平台服务费"); + + @EnumValue + @JsonValue + private final Integer value; + + private final String desc; + + TradeTypeEnum(Integer value, String desc) { + this.value = value; + this.desc = desc; + } + + @JsonCreator + public static TradeTypeEnum get(Integer v) { + + for (TradeTypeEnum e : TradeTypeEnum.values()) { + if (e.getValue().equals(v)) { + return e; + } + } + return null; + } +} diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/Order.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/Order.java index 5fdac59..c6e0ab5 100644 --- a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/Order.java +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/Order.java @@ -27,6 +27,9 @@ public class Order extends Entity { @ApiModelProperty("订单归属(客户、红娘)") private OrderBelongingEnum orderBelonging; + @ApiModelProperty("订单归属名称") + private String orderBelongName; + @ApiModelProperty("订单号") private String orderCode; diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/rewardconfig/entity/RewardConfig.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/rewardconfig/entity/RewardConfig.java index 8c4f1aa..a7368a5 100644 --- a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/rewardconfig/entity/RewardConfig.java +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/rewardconfig/entity/RewardConfig.java @@ -1,6 +1,7 @@ package com.qniao.dam.domain.aggregate.rewardconfig.entity; import com.baomidou.mybatisplus.annotation.TableName; +import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardAmountUnitEnum; import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardTypeEnum; import com.qniao.domain.Entity; import io.swagger.annotations.ApiModelProperty; @@ -17,6 +18,9 @@ public class RewardConfig extends Entity { @ApiModelProperty("奖励类型") private RewardTypeEnum rewardType; + @ApiModelProperty("奖励金额单位") + private RewardAmountUnitEnum rewardAmountUnit; + @ApiModelProperty("奖励金额") private BigDecimal rewardAmount; } diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/walletaccount/entity/WalletAccount.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/walletaccount/entity/WalletAccount.java new file mode 100644 index 0000000..072353a --- /dev/null +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/walletaccount/entity/WalletAccount.java @@ -0,0 +1,33 @@ +package com.qniao.dam.domain.aggregate.walletaccount.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.qniao.dam.domain.aggregate.walletaccount.valueobj.WalletAccountRecord; +import com.qniao.domain.Entity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.util.List; + +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("da_wallet_account") +public class WalletAccount extends Entity { + + @ApiModelProperty("用户唯一标识") + private Long userId; + + @ApiModelProperty("总余额") + private BigDecimal totalBalance; + + @ApiModelProperty("可用余额") + private BigDecimal availableBalance; + + @ApiModelProperty("冻结余额") + private BigDecimal frozenBalance; + + @ApiModelProperty("钱包记录") + private transient List recordList; + +} diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/walletaccount/valueobj/WalletAccountRecord.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/walletaccount/valueobj/WalletAccountRecord.java new file mode 100644 index 0000000..715c758 --- /dev/null +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/walletaccount/valueobj/WalletAccountRecord.java @@ -0,0 +1,33 @@ +package com.qniao.dam.domain.aggregate.walletaccount.valueobj; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeTypeEnum; +import com.qniao.domain.ValueObject; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("da_wallet_account_record") +public class WalletAccountRecord extends ValueObject { + + @ApiModelProperty("用户钱包账号标识") + private Long walletAccountId; + + @ApiModelProperty("交易类型") + private TradeTypeEnum tradeType; + + @ApiModelProperty("交易金额") + private BigDecimal tradeAmount; + + @ApiModelProperty("是否收入") + private Boolean isIncome; + + @ApiModelProperty("备注") + private String remark; + + +} diff --git a/dating-agency-mall-server/pom.xml b/dating-agency-mall-server/pom.xml index 71430fa..07a6f54 100644 --- a/dating-agency-mall-server/pom.xml +++ b/dating-agency-mall-server/pom.xml @@ -67,11 +67,6 @@ 0.0.1-SNAPSHOT - - com.github.binarywang - weixin-java-pay - 3.3.4.B - com.github.wechatpay-apiv3 wechatpay-apache-httpclient diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/rewardconfig/user/request/UserEditRewardConfigDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/rewardconfig/user/request/UserEditRewardConfigDto.java index 8bec572..4d64bc6 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/rewardconfig/user/request/UserEditRewardConfigDto.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/rewardconfig/user/request/UserEditRewardConfigDto.java @@ -1,6 +1,7 @@ package com.qniao.dam.api.command.rewardconfig.user.request; import com.qniao.dam.domain.aggregate.rewardconfig.entity.RewardConfig; +import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardAmountUnitEnum; import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardTypeEnum; import com.qniao.domain.Trans2DomainAssembler; import com.qniao.framework.utils.TypeConvertUtils; @@ -20,6 +21,9 @@ public class UserEditRewardConfigDto implements Trans2DomainAssembler { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MatchmakerDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MatchmakerDao.java new file mode 100644 index 0000000..52ea782 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MatchmakerDao.java @@ -0,0 +1,7 @@ +package com.qniao.dam.infrastructure.persistent.dao.domain; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qniao.dau.domain.aggregate.matchmaker.entity.Matchmaker; + +public interface MatchmakerDao extends BaseMapper { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/WalletAccountDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/WalletAccountDao.java new file mode 100644 index 0000000..6e8d675 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/WalletAccountDao.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.walletaccount.entity.WalletAccount; + +public interface WalletAccountDao extends BaseMapper { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/WalletAccountRecordDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/WalletAccountRecordDao.java new file mode 100644 index 0000000..fbd6776 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/WalletAccountRecordDao.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.walletaccount.valueobj.WalletAccountRecord; + +public interface WalletAccountRecordDao extends BaseMapper { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/WalletAccountRepositoryImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/WalletAccountRepositoryImpl.java new file mode 100644 index 0000000..4ecdb9b --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/WalletAccountRepositoryImpl.java @@ -0,0 +1,46 @@ +package com.qniao.dam.infrastructure.persistent.repository.impl; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount; +import com.qniao.dam.domain.aggregate.walletaccount.repository.WalletAccountRepository; +import com.qniao.dam.domain.aggregate.walletaccount.valueobj.WalletAccountRecord; +import com.qniao.dam.infrastructure.persistent.dao.domain.WalletAccountDao; +import com.qniao.dam.infrastructure.persistent.dao.domain.WalletAccountRecordDao; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Objects; + +@Service +public class WalletAccountRepositoryImpl implements WalletAccountRepository { + + @Resource + private WalletAccountDao walletAccountDao; + @Resource + private WalletAccountRecordDao walletAccountRecordDao; + + @Override + public WalletAccount load(Long id) { + WalletAccount walletAccount = walletAccountDao.selectById(id); + walletAccount.setRecordList(walletAccountRecordDao.selectList(new LambdaQueryWrapper() + .eq(WalletAccountRecord::getWalletAccountId, id))); + return walletAccount; + } + + @Override + public Long save(WalletAccount entity) { + if (Objects.isNull(entity.getId()) || Objects.isNull(walletAccountDao.selectById(entity.getId()))) { + walletAccountDao.insert(entity); + } else { + walletAccountDao.updateById(entity); + } + if (CollUtil.isNotEmpty(entity.getRecordList())) { + entity.getRecordList().forEach(record -> { + record.setWalletAccountId(entity.getId()); + walletAccountRecordDao.insert(record); + }); + } + return entity.getId(); + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/matchmaker/MatchmakerQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/matchmaker/MatchmakerQueryService.java new file mode 100644 index 0000000..fd0683e --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/matchmaker/MatchmakerQueryService.java @@ -0,0 +1,7 @@ +package com.qniao.dam.query.matchmaker; + +import com.qniao.dau.domain.aggregate.matchmaker.entity.Matchmaker; + +public interface MatchmakerQueryService { + Matchmaker queryByUserId(Long userId); +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/matchmaker/impl/MatchmakerQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/matchmaker/impl/MatchmakerQueryServiceImpl.java new file mode 100644 index 0000000..fd82cb3 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/matchmaker/impl/MatchmakerQueryServiceImpl.java @@ -0,0 +1,24 @@ +package com.qniao.dam.query.matchmaker.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qniao.dam.infrastructure.persistent.dao.domain.MatchmakerDao; +import com.qniao.dam.query.matchmaker.MatchmakerQueryService; +import com.qniao.dau.domain.aggregate.matchmaker.entity.Matchmaker; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +public class MatchmakerQueryServiceImpl implements MatchmakerQueryService { + + @Resource + private MatchmakerDao matchmakerDao; + + @Override + public Matchmaker queryByUserId(Long userId) { + return matchmakerDao.selectOne(new LambdaQueryWrapper() + .eq(Matchmaker::getUserId, userId) + .last("limit 1")); + } +} +