Browse Source

用户使用资料卡

master
张彭杰 1 month ago
parent
commit
67d69d6a09
7 changed files with 127 additions and 7 deletions
  1. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/right/user/RightUserQueryController.java
  2. 20
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/right/user/response/UserCardInfoVo.java
  3. 6
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/pcur/ProfileCardUsageRecordApplicationService.java
  4. 4
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/RightDao.java
  5. 2
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/right/RightQueryService.java
  6. 82
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/right/impl/RightQueryServiceImpl.java
  7. 13
      dating-agency-mall-server/src/main/resources/mapper/right/PurchaseProductRecordQueryService.xml

7
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<UserCardInfoVo> userListCardInfo(@RequestParam("userId") Long userId,
@RequestParam("miId") Long miId) {
return rightQueryService.listCardInfo(userId, miId);
}
}

20
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;
}

6
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 {

4
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<Right> {
@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);
}

2
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<UserCardInfoVo> listCardInfo(Long userId, Long miId);
}

82
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<UserListRightByOperatorVo> listRightByOperator(UserListRightByOperatorQueryParam queryParam) {
@ -88,6 +98,70 @@ public class RightQueryServiceImpl implements RightQueryService {
return right;
}
@Override
public List<UserCardInfoVo> listCardInfo(Long userId, Long miId) {
List<UserCardInfoVo> 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<RewardConfig> 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<RewardConfig> 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<UserListRightByCustomerVo> listRightByCustomer(UserListRightByCustomerQueryParam queryParam) {
List<UserListRightByCustomerVo> customerVolist = new ArrayList<>();

13
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 &lt;= NOW() AND end_time >= NOW() AND `type` in (601,602)
</select>
<select id="countCardRightNum" resultType="java.lang.Integer">
SELECT
IFNULL(SUM(dart.`value`),0)
FROM da_right as dar
INNER JOIN da_right_term as dart on dart.is_delete=0 and dart.right_id=dar.id and dart.name=3
where dar.is_delete=0
and dar.user_id = #{userId}
and dar.mi_id = #{miId}
and dar.type = #{type}
and dar.`enable`=1
and dar.end_time > NOW()
</select>
</mapper>
Loading…
Cancel
Save