diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/mica/MarriageInformationContactApplyApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/mica/MarriageInformationContactApplyApplicationService.java index 578a310..e2f87fb 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/mica/MarriageInformationContactApplyApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/mica/MarriageInformationContactApplyApplicationService.java @@ -1,13 +1,20 @@ package com.qniao.dam.application.service.mica; import com.qniao.dam.api.command.mica.user.response.UnlockMarriageInformationContactApplyVo; +import com.qniao.dam.application.service.right.RightApplicationService; +import com.qniao.dam.domain.aggregate.mcur.vobj.MatchCardUsageRecord; import com.qniao.dam.domain.aggregate.mica.MarriageInformationContactApplyAggregate; import com.qniao.dam.domain.aggregate.mica.entity.MarriageInformationContactApply; +import com.qniao.dam.domain.aggregate.rewardconfig.entity.RewardConfig; import com.qniao.dam.domain.aggregate.right.entity.Right; import com.qniao.dam.domian.aggregate.mica.constant.MarriageInformationContactApplyStatusEnum; +import com.qniao.dam.domian.aggregate.pcur.constant.CardUsageTypeEnum; +import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardTypeEnum; import com.qniao.dam.domian.aggregate.right.constant.RightTypeEnum; +import com.qniao.dam.infrastructure.persistent.dao.mcur.MatchCardUsageRecordDao; import com.qniao.dam.infrastructure.persistent.dao.mica.MarriageInformationContactApplyDao; import com.qniao.dam.query.mcur.MatchCardUsageRecordQueryService; +import com.qniao.dam.query.rewardconfig.RewardConfigQueryService; import com.qniao.dam.query.right.RightQueryService; import com.qniao.framework.exception.BizException; import org.springframework.stereotype.Service; @@ -29,6 +36,12 @@ public class MarriageInformationContactApplyApplicationService { private RightQueryService rightQueryService; @Resource private MatchCardUsageRecordQueryService matchCardUsageRecordQueryService; + @Resource + private RewardConfigQueryService rewardConfigQueryService; + @Resource + private MatchCardUsageRecordDao matchCardUsageRecordDao; + @Resource + private RightApplicationService rightApplicationService; public void confirm(MarriageInformationContactApply apply) { MarriageInformationContactApply existApply = marriageInformationContactApplyDao.selectById(apply.getId()); @@ -54,6 +67,8 @@ public class MarriageInformationContactApplyApplicationService { //判断是否会员 Right right = rightQueryService.getUserVipInfo(existApply.getApplicantUserId(), existApply.getApplicantMiId()); if (Objects.nonNull(right)) { + int usageFreeCount = 0; + RewardConfig rewardConfig = null; //是会员 if (RightTypeEnum.VIP.equals(right.getType())) { LocalDate now = LocalDate.now(); @@ -64,9 +79,27 @@ public class MarriageInformationContactApplyApplicationService { startTime = startTime.minusMonths(1); } //正式会员 - //int usageFreeCount = matchCardUsageRecordQueryService.countUsageRecord(usageRecord.getUserId(), CardUsageTyepEnum.FREE, ); + usageFreeCount = matchCardUsageRecordQueryService.countUsageRecord(applicantUserId, CardUsageTypeEnum.FREE, startTime); + rewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.VIP_MATCH_CARD); } else { //体验会员(周会员) + usageFreeCount = matchCardUsageRecordQueryService.countUsageRecord(applicantUserId, CardUsageTypeEnum.FREE, right.getStartTime()); + rewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.VIP_TRIAL_MATCH_CARD); + } + int freeCount = Objects.nonNull(rewardConfig) ? Integer.parseInt(rewardConfig.getValue()) : 0; + if (freeCount >= usageFreeCount) { + MatchCardUsageRecord record = MatchCardUsageRecord.build(existApply.getApplicantUserId(), existApply.getId(), CardUsageTypeEnum.FREE); + matchCardUsageRecordDao.insert(record); + vo.setSuccess(true); + } else { + //花费权益 + if (rightApplicationService.consumeRight(existApply.getApplicantUserId(), existApply.getApplicantMiId(), RightTypeEnum.MATCH_CARD, null)) { + MatchCardUsageRecord record = MatchCardUsageRecord.build(existApply.getApplicantUserId(), existApply.getId(), CardUsageTypeEnum.FREE); + matchCardUsageRecordDao.insert(record); + vo.setSuccess(true); + } else { + vo.setSuccess(false); + } } } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/mcur/MatchCardUsageRecordQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/mcur/MatchCardUsageRecordQueryService.java index 3fd5848..f85b35c 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/mcur/MatchCardUsageRecordQueryService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/mcur/MatchCardUsageRecordQueryService.java @@ -1,4 +1,9 @@ package com.qniao.dam.query.mcur; +import com.qniao.dam.domian.aggregate.pcur.constant.CardUsageTypeEnum; + +import java.time.LocalDateTime; + public interface MatchCardUsageRecordQueryService { + int countUsageRecord(Long userId, CardUsageTypeEnum usageType, LocalDateTime startTime); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/mcur/impl/MatchCardUsageRecordQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/mcur/impl/MatchCardUsageRecordQueryServiceImpl.java index b2133b1..c910415 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/mcur/impl/MatchCardUsageRecordQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/mcur/impl/MatchCardUsageRecordQueryServiceImpl.java @@ -1,8 +1,27 @@ package com.qniao.dam.query.mcur.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qniao.dam.domain.aggregate.mcur.vobj.MatchCardUsageRecord; +import com.qniao.dam.domian.aggregate.pcur.constant.CardUsageTypeEnum; +import com.qniao.dam.infrastructure.persistent.dao.mcur.MatchCardUsageRecordDao; import com.qniao.dam.query.mcur.MatchCardUsageRecordQueryService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.time.LocalDateTime; + @Service public class MatchCardUsageRecordQueryServiceImpl implements MatchCardUsageRecordQueryService { + + @Resource + private MatchCardUsageRecordDao matchCardUsageRecordDao; + + @Override + public int countUsageRecord(Long userId, CardUsageTypeEnum usageType, LocalDateTime startTime) { + return matchCardUsageRecordDao.selectCount(new LambdaQueryWrapper() + .eq(MatchCardUsageRecord::getUserId, userId) + .eq(MatchCardUsageRecord::getUsageType, usageType) + .ge(MatchCardUsageRecord::getCreateTime, startTime)); + } + }