|
@@ -17,6 +17,7 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
+import java.util.function.BiFunction;
|
|
|
|
|
|
import static com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentCalenderStatusEnum.AUDITING;
|
|
import static com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentCalenderStatusEnum.AUDITING;
|
|
import static com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentCalenderStatusEnum.NO;
|
|
import static com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentCalenderStatusEnum.NO;
|
|
@@ -72,24 +73,12 @@ public class MusicGroupPaymentCalenderMemberServiceImpl extends BaseServiceImpl<
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public BigDecimal getOriginalAmount(MusicGroupPaymentBaseCalender baseCalender) {
|
|
public BigDecimal getOriginalAmount(MusicGroupPaymentBaseCalender baseCalender) {
|
|
- MusicGroupPaymentCalenderMember calenderMember = baseCalender.getCalenderMember();
|
|
|
|
- if(calenderMember != null){
|
|
|
|
- MusicGroup musicGroup = baseCalender.getMusicGroup();
|
|
|
|
- //会员价格是否变动
|
|
|
|
- MemberFeeSetting memberFee = memberFeeSettingDao.findByRankIdAndOrganId(musicGroup.getOrganId(), calenderMember.getMemberRankSettingId());
|
|
|
|
- if(memberFee == null){
|
|
|
|
- throw new BizException("操作失败:请配置当前分部会员收费标准");
|
|
|
|
- }
|
|
|
|
- //获取会员总价
|
|
|
|
- return getGroupPurchaseFee(calenderMember.getPeriod(),memberFee).
|
|
|
|
- multiply(calenderMember.getNum()).setScale(0, BigDecimal.ROUND_HALF_UP);
|
|
|
|
- }
|
|
|
|
- return BigDecimal.ZERO;
|
|
|
|
|
|
+ return getAmount(baseCalender, this::getOriginalFee);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public BigDecimal getCurrentAmount(MusicGroupPaymentCalenderMember baseCalender) {
|
|
|
|
- return null;
|
|
|
|
|
|
+ public BigDecimal getCurrentAmount(MusicGroupPaymentBaseCalender calenderMember) {
|
|
|
|
+ return getAmount(calenderMember, this::getGroupPurchaseFee);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -108,6 +97,23 @@ public class MusicGroupPaymentCalenderMemberServiceImpl extends BaseServiceImpl<
|
|
private BigDecimal getGroupPurchaseFee(PeriodEnum periodEnum,MemberFeeSetting memberFee){
|
|
private BigDecimal getGroupPurchaseFee(PeriodEnum periodEnum,MemberFeeSetting memberFee){
|
|
switch (periodEnum){
|
|
switch (periodEnum){
|
|
case DAY :
|
|
case DAY :
|
|
|
|
+ return memberFee.getGroupPurchaseDayFee();
|
|
|
|
+ case MONTH :
|
|
|
|
+ return memberFee.getGroupPurchaseMonthFee();
|
|
|
|
+ case QUARTERLY :
|
|
|
|
+ return memberFee.getGroupPurchaseQuarterlyFee();
|
|
|
|
+ case YEAR_HALF :
|
|
|
|
+ return memberFee.getGroupPurchaseHalfYearFee();
|
|
|
|
+ case YEAR :
|
|
|
|
+ return memberFee.getGroupPurchaseYearFee();
|
|
|
|
+ default:
|
|
|
|
+ throw new BizException("请选择正确的会员有效期");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private BigDecimal getOriginalFee(PeriodEnum periodEnum,MemberFeeSetting memberFee){
|
|
|
|
+ switch (periodEnum){
|
|
|
|
+ case DAY :
|
|
return memberFee.getOriginalDayFee();
|
|
return memberFee.getOriginalDayFee();
|
|
case MONTH :
|
|
case MONTH :
|
|
return memberFee.getOriginalMonthFee();
|
|
return memberFee.getOriginalMonthFee();
|
|
@@ -122,6 +128,21 @@ public class MusicGroupPaymentCalenderMemberServiceImpl extends BaseServiceImpl<
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private BigDecimal getAmount(MusicGroupPaymentBaseCalender baseCalender, BiFunction<PeriodEnum,MemberFeeSetting,BigDecimal> func){
|
|
|
|
+ MusicGroupPaymentCalenderMember calenderMember = baseCalender.getCalenderMember();
|
|
|
|
+ if(calenderMember != null){
|
|
|
|
+ MusicGroup musicGroup = baseCalender.getMusicGroup();
|
|
|
|
+ //会员价格是否变动
|
|
|
|
+ MemberFeeSetting memberFee = memberFeeSettingDao.findByRankIdAndOrganId(musicGroup.getOrganId(), calenderMember.getMemberRankSettingId());
|
|
|
|
+ if(memberFee == null){
|
|
|
|
+ throw new BizException("操作失败:请配置当前分部会员收费标准");
|
|
|
|
+ }
|
|
|
|
+ //获取会员总价
|
|
|
|
+ return func.apply(calenderMember.getPeriod(),memberFee).multiply(calenderMember.getNum()).setScale(0, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ }
|
|
|
|
+ return BigDecimal.ZERO;
|
|
|
|
+ }
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public void deleteByCalenderId(Long calenderId) {
|
|
public void deleteByCalenderId(Long calenderId) {
|
|
musicGroupPaymentCalenderMemberDao.deleteByCalenderId(calenderId);
|
|
musicGroupPaymentCalenderMemberDao.deleteByCalenderId(calenderId);
|