会员 问题

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()));
break;
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()));
break;
case "COST_AMOUNT":
conditionMap.put("COST_AMOUNT", orderInfoService.list(new QueryWrapper().eq(OrderInfo::getShopId, shopUserInfo.getSourceShopId()).eq(OrderInfo::getUserId, shopUserInfo.getUserId())
.notIn(OrderInfo::getStatus, OrderStatusEnums.UNPAID.getCode(), OrderStatusEnums.CANCELLED.getCode()))
.stream().map(OrderInfo::getPayAmount).reduce(BigDecimal.ZERO, BigDecimal::add).compareTo(new BigDecimal(item.getValue())) >= 0);
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()), BigDecimal.class)
.compareTo(new BigDecimal(item.getValue())) >= 0);
break;
case "RECHARGE_AMOUNT":
conditionMap.put("RECHARGE_AMOUNT", paymentService.list(new QueryWrapper().eq(OrderPayment::getShopId, shopUserInfo.getSourceShopId())
.eq(OrderPayment::getSourceId, shopUserInfo.getId()).isNotNull(OrderPayment::getTradeNumber))
.stream().map(OrderPayment::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add).compareTo(new BigDecimal(item.getValue())) >= 0);
conditionMap.put("RECHARGE_AMOUNT", paymentService.getOneAs(query().select("sum(amount)")
.eq(OrderPayment::getShopId, shopId)
.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;
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())
.eq(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode()), BigDecimal.class)
.compareTo(new BigDecimal(item.getValue())) >= 0;
case "RECHARGE_AMOUNT" ->
paymentService.getOneAs(query().select("sum(amount)")
case "RECHARGE_AMOUNT" -> paymentService.getOneAs(query().select("sum(amount)")
.eq(OrderPayment::getShopId, shopId)
.eq(OrderPayment::getSourceType, PayTypeConstants.SourceType.MEMBER_IN)
.eq(OrderPayment::getPayType, PayTypeConstants.PayType.PAY)
@@ -567,20 +570,27 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
@Override
@Transactional
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));
MemberLevelVO levelVO = null;
if (shopUser.getMemberLevelId() != null) {
levelVO = levelConfigService.detail(shopUser.getMemberLevelId());
}
TbMemberConfig memberConfig = getOne(new QueryWrapper().eq(TbMemberConfig::getShopId, shopId));
if ("CONDITION".equals(memberConfig.getOpenType())) {
joinMemberByCondition(shopId, userId, shopUser);
MemberConfigVO memberConfig = detail(shopId);
long nextLevelExperience = 0;
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()
.setMemberCircleName(shopUser.getMemberCircleName())
.setMemberCircleReward(shopUser.getMemberCircleReward())
@@ -589,6 +599,6 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
.setMemberLevel(levelVO)
.setExperience(shopUser.getExperience())
.setEndTime(shopUser.getEndTime())
.setNextExperienceValue(nextLevel == null ? 0 : nextLevel.getExperienceValue() - shopUser.getExperience());
.setNextExperienceValue(nextLevelExperience);
}
}