@@ -271,6 +271,15 @@ public class CouponServiceImpl extends ServiceImpl<CouponDao, CouponEntity> impl
return set ;
}
private boolean matchUserVipIds ( String userVipIds , List < UserVip > userVipList ) {
Set < Integer > allowedVipTypes = Arrays . stream ( userVipIds . split ( " , " ) )
. map ( String : : trim )
. filter ( StringUtils : : isNotEmpty )
. map ( Integer : : parseInt )
. collect ( Collectors . toSet ( ) ) ;
return userVipList . stream ( ) . anyMatch ( userVip - > allowedVipTypes . contains ( userVip . getType ( ) ) ) ;
}
public void getCourseMedicalIds ( int courseMedicalId , List < Integer > list ) {
CourseMedicine courseMedicine = courseMedicineDao . selectById ( courseMedicalId ) ;
if ( courseMedicine . getIsLast ( ) = = 1 ) {
@@ -380,7 +389,7 @@ public class CouponServiceImpl extends ServiceImpl<CouponDao, CouponEntity> impl
List < Map < String , Object > > buyOrderProducts = couponToProductDao . selectJoinMaps ( wrapper ) ;
for ( Map < String , Object > map : buyOrderProducts ) {
ShopProduct shopProduct = shopProductDao . selectById ( map . get ( " product_id " ) . toString ( ) ) ;
//预售书+赠送现金券: VIP用户将券额转为积分; 仅产品id=2023时需为妇幼生殖vip(type=10)
//预售书+赠送现金券: VIP用户将券额转为积分; 配置user_vip_ids时匹配VIP且现金券换积分, 不匹配只送券
if ( " 03 " . equals ( shopProduct . getGoodsType ( ) ) ) {
MyUserEntity userEntity = userDao . selectById ( order . getUserId ( ) ) ;
List < UserVip > userVipList = userVipDao . selectList ( new LambdaQueryWrapper < UserVip > ( )
@@ -389,8 +398,15 @@ public class CouponServiceImpl extends ServiceImpl<CouponDao, CouponEntity> impl
int productId = Integer . parseInt ( map . get ( " product_id " ) . toString ( ) ) ;
int couponId = Integer . parseInt ( map . get ( " coupon_id " ) . toString ( ) ) ;
CouponEntity couponEntity = couponDao . selectById ( couponId ) ;
boolean isFyszVip = userVipList . stream ( ) . anyMatch ( userVip - > Integer . valueOf ( 10 ) . equals ( userVip . getType ( ) ) ) ;
boolean couponToJf = couponEntity . getCouponType ( ) = = 0 & & ( productId = = 2023 ? isFyszVip : userVipList . size ( ) > 0 ) ;
boolean couponToJf = false ;
if ( StringUtils . isNotEmpty ( couponEntity . getUserVipIds ( ) ) ) {
if ( matchUserVipIds ( couponEntity . getUserVipIds ( ) , userVipList ) ) {
couponToJf = couponEntity . getCouponType ( ) = = 0 ;
}
} else {
boolean isFyszVip = userVipList . stream ( ) . anyMatch ( userVip - > Integer . valueOf ( 10 ) . equals ( userVip . getType ( ) ) ) ;
couponToJf = couponEntity . getCouponType ( ) = = 0 & & ( productId = = 2023 ? isFyszVip : userVipList . size ( ) > 0 ) ;
}
if ( couponToJf ) {
BigDecimal jf = BigDecimal . ZERO ;
for ( int i = 0 ; i < Integer . parseInt ( map . get ( " quantity " ) . toString ( ) ) ; i + + ) {