会员 问题

This commit is contained in:
2025-12-25 15:02:57 +08:00
parent 7d434ff5c7
commit ec59490f3a

View File

@@ -122,20 +122,24 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
conditionMap.put("BIND_PHONE", StrUtil.isNotBlank(shopUserInfo.getPhone())); conditionMap.put("BIND_PHONE", StrUtil.isNotBlank(shopUserInfo.getPhone()));
break; break;
case "ORDER": case "ORDER":
conditionMap.put("ORDER", orderInfoService.count(new QueryWrapper().eq(OrderInfo::getShopId, shopUserInfo.getSourceShopId()).eq(OrderInfo::getUserId, shopUserInfo.getUserId()) conditionMap.put("ORDER", orderInfoService.count(query().eq(OrderInfo::getShopId, shopId).eq(OrderInfo::getUserId, shopUserInfo.getUserId())
.notIn(OrderInfo::getStatus, OrderStatusEnums.UNPAID.getCode(), OrderStatusEnums.CANCELLED.getCode())) >= Integer.parseInt(item.getValue())); .notIn(OrderInfo::getStatus, OrderStatusEnums.UNPAID.getCode(), OrderStatusEnums.CANCELLED.getCode())) >= Integer.parseInt(item.getValue()));
break; break;
case "COST_AMOUNT": case "COST_AMOUNT":
conditionMap.put("COST_AMOUNT", orderInfoService.list(new QueryWrapper().eq(OrderInfo::getShopId, shopUserInfo.getSourceShopId()).eq(OrderInfo::getUserId, shopUserInfo.getUserId()) conditionMap.put("COST_AMOUNT", orderInfoService.getOneAs(query().select("sum(pay_amount)").eq(OrderInfo::getShopId, shopId).eq(OrderInfo::getUserId, shopUserInfo.getUserId())
.notIn(OrderInfo::getStatus, OrderStatusEnums.UNPAID.getCode(), OrderStatusEnums.CANCELLED.getCode())) .notIn(OrderInfo::getStatus, OrderStatusEnums.UNPAID.getCode(), OrderStatusEnums.CANCELLED.getCode()), BigDecimal.class)
.stream().map(OrderInfo::getPayAmount).reduce(BigDecimal.ZERO, BigDecimal::add).compareTo(new BigDecimal(item.getValue())) >= 0); .compareTo(new BigDecimal(item.getValue())) >= 0);
break; break;
case "RECHARGE_AMOUNT": case "RECHARGE_AMOUNT":
conditionMap.put("RECHARGE_AMOUNT", paymentService.list(new QueryWrapper().eq(OrderPayment::getShopId, shopUserInfo.getSourceShopId()) conditionMap.put("RECHARGE_AMOUNT", paymentService.getOneAs(query().select("sum(amount)")
.eq(OrderPayment::getSourceId, shopUserInfo.getId()).isNotNull(OrderPayment::getTradeNumber)) .eq(OrderPayment::getShopId, shopId)
.stream().map(OrderPayment::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add).compareTo(new BigDecimal(item.getValue())) >= 0); .eq(OrderPayment::getSourceType, PayTypeConstants.SourceType.MEMBER_IN)
.eq(OrderPayment::getPayType, PayTypeConstants.PayType.PAY)
.eq(OrderPayment::getSourceId, shopUserInfo.getId())
.eq(OrderPayment::getPayStatus, PayTypeConstants.PayStatus.SUCCESS), BigDecimal.class)
.compareTo(new BigDecimal(item.getValue())) >= 0);
break; break;
default: default:
@@ -421,8 +425,7 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
orderInfoService.getOneAs(query().select("sum(pay_amount)").eq(OrderInfo::getShopId, shopId).eq(OrderInfo::getUserId, shopUser.getUserId()) orderInfoService.getOneAs(query().select("sum(pay_amount)").eq(OrderInfo::getShopId, shopId).eq(OrderInfo::getUserId, shopUser.getUserId())
.eq(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode()), BigDecimal.class) .eq(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode()), BigDecimal.class)
.compareTo(new BigDecimal(item.getValue())) >= 0; .compareTo(new BigDecimal(item.getValue())) >= 0;
case "RECHARGE_AMOUNT" -> case "RECHARGE_AMOUNT" -> paymentService.getOneAs(query().select("sum(amount)")
paymentService.getOneAs(query().select("sum(amount)")
.eq(OrderPayment::getShopId, shopId) .eq(OrderPayment::getShopId, shopId)
.eq(OrderPayment::getSourceType, PayTypeConstants.SourceType.MEMBER_IN) .eq(OrderPayment::getSourceType, PayTypeConstants.SourceType.MEMBER_IN)
.eq(OrderPayment::getPayType, PayTypeConstants.PayType.PAY) .eq(OrderPayment::getPayType, PayTypeConstants.PayType.PAY)
@@ -567,20 +570,27 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
@Override @Override
@Transactional @Transactional
public MemberDetailVO getUserDetail(Long userId, Long shopId) { public MemberDetailVO getUserDetail(Long userId, Long shopId) {
Long mainIdByShopId = shopInfoService.getMainIdByShopId(shopId); ShopInfo shopInfo = shopInfoService.getById(shopId);
Long mainIdByShopId = shopInfo.getMainId() == null ? shopId : shopInfo.getMainId();
ShopUser shopUser = shopUserService.getOne(new QueryWrapper().eq(ShopUser::getUserId, userId).eq(ShopUser::getMainShopId, mainIdByShopId)); ShopUser shopUser = shopUserService.getOne(new QueryWrapper().eq(ShopUser::getUserId, userId).eq(ShopUser::getMainShopId, mainIdByShopId));
MemberLevelVO levelVO = null; MemberLevelVO levelVO = null;
if (shopUser.getMemberLevelId() != null) { if (shopUser.getMemberLevelId() != null) {
levelVO = levelConfigService.detail(shopUser.getMemberLevelId()); levelVO = levelConfigService.detail(shopUser.getMemberLevelId());
} }
TbMemberConfig memberConfig = getOne(new QueryWrapper().eq(TbMemberConfig::getShopId, shopId)); MemberConfigVO memberConfig = detail(shopId);
if ("CONDITION".equals(memberConfig.getOpenType())) { long nextLevelExperience = 0;
joinMemberByCondition(shopId, userId, shopUser); if (memberConfig != null && memberConfig.getIsOpen() == 1) {
if ("CONDITION".equals(memberConfig.getOpenType())) {
joinMemberByCondition(shopId, userId, shopUser);
}
MemberLevelConfig nextLevel = levelConfigService.getOne(new QueryWrapper()
.eq(MemberLevelConfig::getShopId, mainIdByShopId)
.ge(MemberLevelConfig::getExperienceValue, shopUser.getExperience())
.ne(MemberLevelConfig::getId, shopUser.getMemberLevelId()).orderBy(MemberLevelConfig::getExperienceValue, true));
if (nextLevel != null) {
nextLevelExperience = nextLevel.getExperienceValue() - shopUser.getExperience();
}
} }
ShopInfo shopInfo = shopInfoService.getById(shopUser.getSourceShopId());
MemberLevelConfig nextLevel = levelConfigService.getOne(new QueryWrapper().eq(MemberLevelConfig::getShopId, shopId).ge(MemberLevelConfig::getExperienceValue, shopUser.getExperience())
.ne(MemberLevelConfig::getId, shopUser.getMemberLevelId()).orderBy(MemberLevelConfig::getExperienceValue, true));
return new MemberDetailVO() return new MemberDetailVO()
.setMemberCircleName(shopUser.getMemberCircleName()) .setMemberCircleName(shopUser.getMemberCircleName())
.setMemberCircleReward(shopUser.getMemberCircleReward()) .setMemberCircleReward(shopUser.getMemberCircleReward())
@@ -589,6 +599,6 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
.setMemberLevel(levelVO) .setMemberLevel(levelVO)
.setExperience(shopUser.getExperience()) .setExperience(shopUser.getExperience())
.setEndTime(shopUser.getEndTime()) .setEndTime(shopUser.getEndTime())
.setNextExperienceValue(nextLevel == null ? 0 : nextLevel.getExperienceValue() - shopUser.getExperience()); .setNextExperienceValue(nextLevelExperience);
} }
} }