diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/right/user/RightUserQueryController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/right/user/RightUserQueryController.java index 7d45e64..bb36eba 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/right/user/RightUserQueryController.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/right/user/RightUserQueryController.java @@ -62,4 +62,11 @@ public class RightUserQueryController { Right right = rightQueryService.getUserVipInfo(userId, miId); return Objects.nonNull(right) ? TypeConvertUtils.convert(right, UserGetUserVipInfoVo.class) : null; } + + @GetMapping("list/card-info") + @ApiOperation("获取用户vip信息") + public List userListCardInfo(@RequestParam("userId") Long userId, + @RequestParam("miId") Long miId) { + return rightQueryService.listCardInfo(userId, miId); + } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/right/user/response/UserCardInfoVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/right/user/response/UserCardInfoVo.java new file mode 100644 index 0000000..26524c2 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/right/user/response/UserCardInfoVo.java @@ -0,0 +1,20 @@ +package com.qniao.dam.api.query.right.user.response; + +import com.qniao.dam.domian.aggregate.right.constant.RightTypeEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UserCardInfoVo { + + @ApiModelProperty("权益类型") + private RightTypeEnum type; + + @ApiModelProperty("数量") + private Integer quantity = 0; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/pcur/ProfileCardUsageRecordApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/pcur/ProfileCardUsageRecordApplicationService.java index c7e887b..6cfc86f 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/pcur/ProfileCardUsageRecordApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/pcur/ProfileCardUsageRecordApplicationService.java @@ -35,8 +35,8 @@ public class ProfileCardUsageRecordApplicationService { if (profileCardUsageRecordQueryService.existUsageRecord(usageRecord.getUserId(), usageRecord.getTargetMiId())) { vo.setSuccess(true); } else { - int freeCount = profileCardUsageRecordQueryService.countUsageRecord(usageRecord.getUserId(), CardUsageTyepEnum.FREE); - if (freeCount < 3) { + int usageFreeCount = profileCardUsageRecordQueryService.countUsageRecord(usageRecord.getUserId(), CardUsageTyepEnum.FREE); + if (usageFreeCount < 3) { ProfileCardUsageRecord record = ProfileCardUsageRecord.build(usageRecord.getUserId(), usageRecord.getTargetMiId(), CardUsageTyepEnum.FREE); profileCardUsageRecordDao.insert(record); } else { @@ -46,7 +46,7 @@ public class ProfileCardUsageRecordApplicationService { //未实名是有3次 vo.setSuccess(false); } else { - if (freeCount < 20) { + if (usageFreeCount < 20) { ProfileCardUsageRecord record = ProfileCardUsageRecord.build(usageRecord.getUserId(), usageRecord.getTargetMiId(), CardUsageTyepEnum.FREE); profileCardUsageRecordDao.insert(record); } else { diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/RightDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/RightDao.java index 969d364..0a8bc0b 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/RightDao.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/RightDao.java @@ -13,4 +13,8 @@ public interface RightDao extends BaseMapper { @Param("unit") RightUnitEnum unit); Integer checkUserVip(@Param("userId") Long userId, @Param("miId") Long miId); + + int countCardRightNum(@Param("userId") Long userId, + @Param("miId") Long miId, + @Param("type") RightTypeEnum type); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/right/RightQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/right/RightQueryService.java index 37b63ef..5e25ff3 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/right/RightQueryService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/right/RightQueryService.java @@ -37,4 +37,6 @@ public interface RightQueryService { UserVipRightVo checkUserVipRight(Long userId, Long miId); Right getUserVipInfo(Long userId, Long miId); + + List listCardInfo(Long userId, Long miId); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/right/impl/RightQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/right/impl/RightQueryServiceImpl.java index 38911ac..8c475f7 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/right/impl/RightQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/right/impl/RightQueryServiceImpl.java @@ -8,26 +8,30 @@ import com.qniao.dam.api.query.right.user.request.UserCheckEnableRightBySdkQuery import com.qniao.dam.api.query.right.user.request.UserListRightByCustomerQueryParam; import com.qniao.dam.api.query.right.user.request.UserListRightByOperatorQueryParam; import com.qniao.dam.api.query.right.user.response.*; +import com.qniao.dam.domain.aggregate.rewardconfig.entity.RewardConfig; import com.qniao.dam.domain.aggregate.right.entity.Right; import com.qniao.dam.domain.aggregate.right.entity.RightTerm; import com.qniao.dam.domain.aggregate.right.repository.RightRepository; +import com.qniao.dam.domian.aggregate.pcur.constant.CardUsageTyepEnum; +import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardTypeEnum; import com.qniao.dam.domian.aggregate.right.constant.RightNameEnum; import com.qniao.dam.domian.aggregate.right.constant.RightTypeEnum; import com.qniao.dam.domian.aggregate.right.constant.RightUnitEnum; import com.qniao.dam.infrastructure.persistent.dao.domain.RightDao; import com.qniao.dam.infrastructure.persistent.dao.domain.RightTermDao; +import com.qniao.dam.query.marriageinformation.MarriageInformationQueryService; +import com.qniao.dam.query.pcur.ProfileCardUsageRecordQueryService; +import com.qniao.dam.query.rewardconfig.RewardConfigQueryService; import com.qniao.dam.query.right.RightQueryService; import com.qniao.dam.query.rightconsumerel.RightConsumeRelQueryService; +import com.qniao.das.domian.aggregate.marriageinformation.MarriageInformation; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.Duration; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; @Slf4j @@ -42,6 +46,12 @@ public class RightQueryServiceImpl implements RightQueryService { private RightRepository rightRepository; @Resource private RightConsumeRelQueryService rightConsumeRelQueryService; + @Resource + private RewardConfigQueryService rewardConfigQueryService; + @Resource + private MarriageInformationQueryService marriageInformationQueryService; + @Resource + private ProfileCardUsageRecordQueryService profileCardUsageRecordQueryService; @Override public List listRightByOperator(UserListRightByOperatorQueryParam queryParam) { @@ -88,6 +98,70 @@ public class RightQueryServiceImpl implements RightQueryService { return right; } + @Override + public List listCardInfo(Long userId, Long miId) { + List list = new ArrayList<>(); + UserCardInfoVo profileCardInfo = new UserCardInfoVo(RightTypeEnum.PROFILE_CARD, 0); + UserCardInfoVo contactCardInfo = new UserCardInfoVo(RightTypeEnum.CONTACT_CARD, 0); + UserCardInfoVo matchCardInfo = new UserCardInfoVo(RightTypeEnum.MATCH_CARD, 0); + //判断是否会员 + Right vipRight = getUserVipInfo(userId, miId); + if (Objects.nonNull(vipRight)) { + if (Objects.equals(vipRight.getType(), RightTypeEnum.VIP)) { + List vipRightList = rewardConfigQueryService.listVipRight(); + for (RewardConfig rewardConfig : vipRightList) { + if (RewardTypeEnum.VIP_PROFILE_CARD.equals(rewardConfig.getRewardType())) { + profileCardInfo.setQuantity(Integer.valueOf(rewardConfig.getValue())); + } + if (RewardTypeEnum.VIP_CONTACT_CARD.equals(rewardConfig.getRewardType())) { + contactCardInfo.setQuantity(Integer.valueOf(rewardConfig.getValue())); + } + if (RewardTypeEnum.VIP_MATCH_CARD.equals(rewardConfig.getRewardType())) { + matchCardInfo.setQuantity(Integer.valueOf(rewardConfig.getValue())); + } + } + } else if (Objects.equals(vipRight.getType(), RightTypeEnum.VIP_TRIAL)) { + List vipTrialRightList = rewardConfigQueryService.listVipTrialRight(); + for (RewardConfig rewardConfig : vipTrialRightList) { + if (RewardTypeEnum.VIP_TRIAL_PROFILE_CARD.equals(rewardConfig.getRewardType())) { + profileCardInfo.setQuantity(Integer.valueOf(rewardConfig.getValue())); + } + if (RewardTypeEnum.VIP_TRIAL_CONTACT_CARD.equals(rewardConfig.getRewardType())) { + contactCardInfo.setQuantity(Integer.valueOf(rewardConfig.getValue())); + } + if (RewardTypeEnum.VIP_TRIAL_MATCH_CARD.equals(rewardConfig.getRewardType())) { + matchCardInfo.setQuantity(Integer.valueOf(rewardConfig.getValue())); + } + } + } + } else { + //没有会员判断是否实名认证 + MarriageInformation marriageInformation = marriageInformationQueryService.queryByUserId(userId); + if (StrUtil.isNotBlank(marriageInformation.getIdentityCard())) { + profileCardInfo.setQuantity(20); + contactCardInfo.setQuantity(10); + } + } + //查询周期内免费卡使用次数 + if (profileCardInfo.getQuantity() > 0) { + int usageQuantity = profileCardUsageRecordQueryService.countUsageRecord(userId, CardUsageTyepEnum.FREE); + profileCardInfo.setQuantity(profileCardInfo.getQuantity() >= usageQuantity ? profileCardInfo.getQuantity() - usageQuantity : 0); + } + + //查询权益卡数量 + int profileCardNum = rightDao.countCardRightNum(userId, miId, RightTypeEnum.PROFILE_CARD); + profileCardInfo.setQuantity(profileCardInfo.getQuantity() + profileCardNum); + int contactCardNum = rightDao.countCardRightNum(userId, miId, RightTypeEnum.CONTACT_CARD); + contactCardInfo.setQuantity(contactCardInfo.getQuantity() + contactCardNum); + int matchCardNum = rightDao.countCardRightNum(userId, miId, RightTypeEnum.MATCH_CARD); + matchCardInfo.setQuantity(matchCardInfo.getQuantity() + matchCardNum); + + list.add(profileCardInfo); + list.add(contactCardInfo); + list.add(matchCardInfo); + return list; + } + @Override public List listRightByCustomer(UserListRightByCustomerQueryParam queryParam) { List customerVolist = new ArrayList<>(); diff --git a/dating-agency-mall-server/src/main/resources/mapper/right/PurchaseProductRecordQueryService.xml b/dating-agency-mall-server/src/main/resources/mapper/right/PurchaseProductRecordQueryService.xml index e30c173..f40354c 100644 --- a/dating-agency-mall-server/src/main/resources/mapper/right/PurchaseProductRecordQueryService.xml +++ b/dating-agency-mall-server/src/main/resources/mapper/right/PurchaseProductRecordQueryService.xml @@ -25,4 +25,17 @@ SELECT COUNT(1) FROM `da_right` WHERE is_delete = 0 and user_id =#{userId} AND mi_id =#{miId} AND start_time <= NOW() AND end_time >= NOW() AND `type` in (601,602) + +