@@ -253,55 +253,55 @@ public class TbMemberConfigServiceImpl extends ServiceImpl<TbMemberConfigMapper,
boolean canOpen = false ;
if ( shopUser . getStartTime ( ) = = null | | shopUser . getEndTime ( ) . isBefore ( DateUtil . date ( ) . toLocalDateTime ( ) ) ) {
shopUser . setStartTime ( DateUtil . date ( ) . toLocalDateTime ( ) ) ;
}
if ( shopUser . getEndTime ( ) = = null | | shopUser . getEndTime ( ) . isBefore ( DateUtil . date ( ) . toLocalDateTime ( ) ) ) {
shopUser . setEndTime ( DateUtil . date ( ) . toLocalDateTime ( ) ) ;
}
// shopUser.
// 购买开通
if ( m emberOrderId ! = null ) {
MemberOrder memberOrder = memberOrderService . getOne ( new QueryWrapper ( ) . eq ( MemberOrder : : getId , memberOrderId ) . eq ( MemberOrder : : getShopId , shopId ) ) ;
if ( memberOrder = = null ) {
log . warn ( " 会员购买支付失败, 会员订单不存在, 会员订单id: {} " , memberOrderId ) ;
return false ;
}
if ( ! OrderStatusEnums . UNPAID . getCode ( ) . equals ( memberOrder . getStatus ( ) ) ) {
log . warn ( " 会员购买支付失败, 会员订单状态不为待支付, 会员订单id: {} " , memberOrderId ) ;
return false ;
}
switch ( memberOrder . getCircleUnit ( ) ) {
case " 天 " :
// shopUser.s
}
canOpen = true ;
// 条件开通
} else if ( " CONDITION " . equals ( memberConfigVO . getOpenType ( ) ) ) {
for ( MemberConfigDTO . condition item : memberConfigVO . getConditionList ( ) ) {
canOpen = switch ( item . getCode ( ) ) {
case " BIND_PHONE " - > StrUtil . isNotBlank ( shopUser . getPhone ( ) ) ;
case " ORDER " - >
orderInfoService . count ( new QueryWrapper ( ) . eq ( OrderInfo : : getShopId , shopId ) . eq ( OrderInfo : : getUserId , userId )
. notIn ( OrderInfo : : getStatus , OrderStatusEnums . UNPAID . getCode ( ) , OrderStatusEnums . CANCELLED . getCode ( ) ) ) > Integer . parseInt ( item . getValue ( ) ) ;
case " COST_AMOUNT " - >
orderInfoService . list ( new QueryWrapper ( ) . eq ( OrderInfo : : getShopId , shopId ) . eq ( OrderInfo : : getUserId , userId )
. notIn ( OrderInfo : : getStatus , OrderStatusEnums . UNPAID . getCode ( ) , OrderStatusEnums . CANCELLED . getCode ( ) ) )
. stream ( ) . map ( OrderInfo : : getPayAmount ) . reduce ( BigDecimal . ZERO , BigDecimal : : add ) . compareTo ( new BigDecimal ( item . getValue ( ) ) ) > 0 ;
case " RECHARGE_AMOUNT " - >
orderPaymentService . list ( new QueryWrapper ( ) . eq ( OrderPayment : : getShopId , shopId )
. eq ( OrderPayment : : getSourceId , shopUser . getId ( ) ) . isNotNull ( OrderPayment : : getTradeNumber ) )
. stream ( ) . map ( OrderPayment : : getAmount ) . reduce ( BigDecimal . ZERO , BigDecimal : : add ) . compareTo ( new BigDecimal ( item . getValue ( ) ) ) > 0 ;
default - > throw new CzgException ( " 会员开通条件类型错误 " ) ;
} ;
}
MemberOrder memberOrder = memberOrderService . getOne ( new QueryWrapper ( ) . eq ( M emberOrder: : getId , memberOrderId ) . eq ( MemberOrder : : getShopId , shopId ) ) ;
if ( memberOrder = = null ) {
log . warn ( " 会员购买支付失败, 会员订单不存在, 会员订单id: {} " , memberOrderId ) ;
return false ;
}
if ( ! OrderStatusEnums . UNPAID . getCode ( ) . equals ( memberOrder . getStatus ( ) ) ) {
log . warn ( " 会员购买支付失败, 会员订单状态不为待支付, 会员订单id: {} " , memberOrderId ) ;
return false ;
}
if ( canOpen ) {
MemberLevelConfig levelConfig = levelConfigService . getOne ( new QueryWrapper ( ) . eq ( MemberLevelConfig : : getShopId , shopId ) . orderBy ( MemberLevelConfig : : getExperienceValue , true ) . limit ( 1 ) ) ;
shopUser . setMemberLevelId ( levelConfig . getId ( ) ) ;
shopUser . setIsVip ( 1 ) ;
shopUserService . updateById ( shopUser ) ;
switch ( memberOrder . getCircleUnit ( ) ) {
case " 天 " :
shopUser . setEndTime ( shopUser . getEndTime ( ) . plusDays ( memberOrder . getCircleTime ( ) ) ) ;
break ;
case " 周 " :
shopUser . setEndTime ( shopUser . getEndTime ( ) . plusWeeks ( memberOrder . getCircleTime ( ) ) ) ;
break ;
case " 月 " :
shopUser . setEndTime ( shopUser . getEndTime ( ) . plusMonths ( memberOrder . getCircleTime ( ) ) ) ;
break ;
case " 季 " :
shopUser . setEndTime ( shopUser . getEndTime ( ) . plusMonths ( memberOrder . getCircleTime ( ) * 3L ) ) ;
break ;
case " 年 " :
shopUser . setEndTime ( shopUser . getEndTime ( ) . plusYears ( memberOrder . getCircleTime ( ) ) ) ;
break ;
default :
throw new CzgException ( " 周期单位错误 " ) ;
}
if ( memberOrder . getReward ( ) ! = null ) {
shopUser . setExperience ( shopUser . getExperience ( ) + memberOrder . getReward ( ) ) ;
}
if ( memberOrder . getCouponList ( ) ! = null & & ! memberOrder . getCouponList ( ) . isEmpty ( ) ) {
}
MemberLevelConfig levelConfig = levelConfigService . getOne ( new QueryWrapper ( ) . eq ( MemberLevelConfig : : getShopId , shopId ) . orderBy ( MemberLevelConfig : : getExperienceValue , true ) . limit ( 1 ) ) ;
shopUser . setMemberLevelId ( levelConfig . getId ( ) ) ;
shopUser . setIsVip ( 1 ) ;
shopUserService . updateById ( shopUser ) ;
return false ;
}
}