浏览代码

缴费修改

zouxuan 3 年之前
父节点
当前提交
c0b073cf11

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupPaymentCalenderMember.java

@@ -13,6 +13,16 @@ public class MusicGroupPaymentCalenderMember extends MusicGroupPaymentCalenderBa
     @ApiModelProperty(value = "会员等级编号", required = false)
     private Integer memberRankSettingId = 1;
 
+    private Integer organId;
+
+    public Integer getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Integer organId) {
+        this.organId = organId;
+    }
+
     public String getName() {
         return name;
     }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupPaymentCalenderBaseService.java

@@ -48,7 +48,7 @@ public interface MusicGroupPaymentCalenderBaseService<T> {
     * @author zx
     * @date 2021/12/29 15:32
     */
-    BigDecimal getCurrentAmount(T baseCalender);
+    BigDecimal getCurrentAmount(MusicGroupPaymentBaseCalender baseCalender);
 
     /**
     * @description: 缴费项目关联初始化

+ 17 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderActivityServiceImpl.java

@@ -24,6 +24,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.function.Consumer;
 import java.util.function.Function;
+import java.util.function.Supplier;
 import java.util.stream.Collectors;
 
 @Service
@@ -63,19 +64,30 @@ public class MusicGroupPaymentCalenderActivityServiceImpl extends BaseServiceImp
 
     @Override
     public BigDecimal getOriginalAmount(MusicGroupPaymentBaseCalender baseCalender) {
-        List<MusicGroupPaymentCalenderActivity> calenderActivityList = baseCalender.getCalenderActivityList();
+        return this.getAmount(baseCalender.getCalenderActivityList(),this::getActivityOriginalAmount);
+    }
+
+    @Override
+    public BigDecimal getCurrentAmount(MusicGroupPaymentBaseCalender baseCalender) {
+        return this.getAmount(baseCalender.getCalenderActivityList(),this::getActivityActualAmount);
+    }
+
+    private BigDecimal getAmount(List<MusicGroupPaymentCalenderActivity> calenderActivityList,Function<VipGroupActivity,BigDecimal> fun){
         if(calenderActivityList != null && calenderActivityList.size() > 0){
             List<Integer> collect = calenderActivityList.stream().map(e -> e.getActivityId()).collect(Collectors.toList());
             List<VipGroupActivity> vipGroupActivities = vipGroupActivityDao.queryByIds(StringUtils.join(collect, ","));
-            return vipGroupActivities.stream().map(e->e.getOriginalPrice()).reduce(BigDecimal.ZERO,BigDecimal::add);
+            return vipGroupActivities.stream().map(e->fun.apply(e)).reduce(BigDecimal.ZERO,BigDecimal::add);
         }
         return BigDecimal.ZERO;
     }
 
-    @Override
-    public BigDecimal getCurrentAmount(MusicGroupPaymentCalenderActivity baseCalender) {
-        return baseCalender.getActualAmount();
+    private BigDecimal getActivityOriginalAmount(VipGroupActivity activity){
+        return activity.getOriginalPrice();
     }
+    private BigDecimal getActivityActualAmount(VipGroupActivity activity){
+        return activity.getMarketPrice();
+    }
+
 
     @Override
     public <T> T initBean(T bean) {

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderCourseSettingsServiceImpl.java

@@ -191,8 +191,8 @@ public class MusicGroupPaymentCalenderCourseSettingsServiceImpl extends BaseServ
     }
 
 	@Override
-	public BigDecimal getCurrentAmount(MusicGroupPaymentCalenderCourseSettings baseCalender) {
-		return null;
+	public BigDecimal getCurrentAmount(MusicGroupPaymentBaseCalender baseCalender) {
+		return this.getOriginalAmount(baseCalender);
 	}
 
 	@Override

+ 36 - 15
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderMemberServiceImpl.java

@@ -17,6 +17,7 @@ import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 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.NO;
@@ -72,24 +73,12 @@ public class MusicGroupPaymentCalenderMemberServiceImpl extends BaseServiceImpl<
 
     @Override
     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
-    public BigDecimal getCurrentAmount(MusicGroupPaymentCalenderMember baseCalender) {
-        return null;
+    public BigDecimal getCurrentAmount(MusicGroupPaymentBaseCalender calenderMember) {
+        return getAmount(calenderMember, this::getGroupPurchaseFee);
     }
 
     @Override
@@ -108,6 +97,23 @@ public class MusicGroupPaymentCalenderMemberServiceImpl extends BaseServiceImpl<
     private BigDecimal getGroupPurchaseFee(PeriodEnum periodEnum,MemberFeeSetting memberFee){
         switch (periodEnum){
             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();
             case MONTH :
                 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
     public void deleteByCalenderId(Long calenderId) {
         musicGroupPaymentCalenderMemberDao.deleteByCalenderId(calenderId);

+ 17 - 13
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderRepairServiceImpl.java

@@ -72,22 +72,12 @@ public class MusicGroupPaymentCalenderRepairServiceImpl extends BaseServiceImpl<
 
     @Override
     public BigDecimal getOriginalAmount(MusicGroupPaymentBaseCalender baseCalender) {
-        MusicGroupPaymentCalenderRepair musicRepair = baseCalender.getMusicRepair();
-        if(musicRepair != null){
-            Integer tenantId = TenantContextHolder.getTenantId();
-            String configValue = sysTenantConfigService.getTenantConfigValue(SysConfigService.ONE_YEAR_MUSICAL_REPAIR_ORIGINAL_AMOUNT, tenantId);
-            if(StringUtils.isEmpty(configValue)){
-                throw new BizException("操作失败:请配置乐保单价");
-            }
-            //获取会员总价
-            return new BigDecimal(configValue).multiply(musicRepair.getNum()).setScale(0, BigDecimal.ROUND_HALF_UP);
-        }
-        return BigDecimal.ZERO;
+        return getAmount(baseCalender,SysConfigService.ONE_YEAR_MUSICAL_REPAIR_ORIGINAL_AMOUNT);
     }
 
     @Override
-    public BigDecimal getCurrentAmount(MusicGroupPaymentCalenderRepair baseCalender) {
-        return null;
+    public BigDecimal getCurrentAmount(MusicGroupPaymentBaseCalender baseCalender) {
+        return getAmount(baseCalender,SysConfigService.ONE_YEAR_MUSICAL_REPAIR_AMOUNT);
     }
 
     @Override
@@ -104,4 +94,18 @@ public class MusicGroupPaymentCalenderRepairServiceImpl extends BaseServiceImpl<
     public MusicGroupPaymentCalenderRepair findByCalenderId(Long calenderId) {
         return musicGroupPaymentCalenderRepairDao.findByCalenderId(calenderId);
     }
+
+    private BigDecimal getAmount(MusicGroupPaymentBaseCalender baseCalender,String configName){
+        MusicGroupPaymentCalenderRepair musicRepair = baseCalender.getMusicRepair();
+        if(musicRepair != null){
+            Integer tenantId = TenantContextHolder.getTenantId();
+            String configValue = sysTenantConfigService.getTenantConfigValue(configName, tenantId);
+            if(StringUtils.isEmpty(configValue)){
+                throw new BizException("操作失败:请配置乐保单价");
+            }
+            //获取会员总价
+            return new BigDecimal(configValue).multiply(musicRepair.getNum()).setScale(0, BigDecimal.ROUND_HALF_UP);
+        }
+        return BigDecimal.ZERO;
+    }
 }

+ 14 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java

@@ -567,15 +567,24 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		//检测缴费项目是否有费用变更
 //		Map<CalenderBaseServiceEnum, MusicGroupPaymentCalenderBaseService> calenderBaseServiceMap = MusicGroupPaymentCalenderBaseService.calenderBaseServiceMap;
 
-		//计算缴费项目总金额
+		//计算缴费项目总金额(前端录入)
 		BigDecimal courseActualAmount = musicGroupPaymentCalenderCourseSettingsService.getActualAmount(musicGroupPaymentBaseCalender);
 		BigDecimal memberActualAmount = musicGroupPaymentCalenderMemberService.getActualAmount(musicGroupPaymentBaseCalender);
 		BigDecimal repairActualAmount = musicGroupPaymentCalenderRepairService.getActualAmount(musicGroupPaymentBaseCalender);
 		BigDecimal activityActualAmount = musicGroupPaymentCalenderActivityService.getActualAmount(musicGroupPaymentBaseCalender);
 
-		BigDecimal currentTotalAmount = courseActualAmount.add(memberActualAmount)
+		BigDecimal actualTotalAmount = courseActualAmount.add(memberActualAmount)
 				.add(repairActualAmount)
 				.add(activityActualAmount).setScale(0, BigDecimal.ROUND_HALF_UP);
+		//计算项目原现价
+		BigDecimal courseCurrentAmount = musicGroupPaymentCalenderCourseSettingsService.getCurrentAmount(musicGroupPaymentBaseCalender);
+		BigDecimal memberCurrentAmount = musicGroupPaymentCalenderMemberService.getCurrentAmount(musicGroupPaymentBaseCalender);
+		BigDecimal repairCurrentAmount = musicGroupPaymentCalenderRepairService.getCurrentAmount(musicGroupPaymentBaseCalender);
+		BigDecimal activityCurrentAmount = musicGroupPaymentCalenderActivityService.getCurrentAmount(musicGroupPaymentBaseCalender);
+
+		BigDecimal currentTotalAmount = courseCurrentAmount.add(memberCurrentAmount)
+				.add(repairCurrentAmount)
+				.add(activityCurrentAmount).setScale(0, BigDecimal.ROUND_HALF_UP);
 
 		//计算缴费项目原价
 		BigDecimal courseOriginalAmount = musicGroupPaymentCalenderCourseSettingsService.getOriginalAmount(musicGroupPaymentBaseCalender);
@@ -591,7 +600,7 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		if (musicGroupPaymentBaseCalender.getPayUserType() == SCHOOL) {
 			status = AUDITING;
 		} else {
-			status = currentTotalAmount.compareTo(originalTotalAmount) == 0 ? NO:AUDITING;
+			status = actualTotalAmount.compareTo(currentTotalAmount) == 0 ? NO:AUDITING;
 		}
 
 		Date date = new Date();
@@ -607,8 +616,8 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
 		musicGroupPaymentCalender.setCreateTime(date);
 		musicGroupPaymentCalender.setUpdateTime(date);
 		musicGroupPaymentCalender.setPaymentType(musicGroupPaymentBaseCalender.getPaymentType());
-		musicGroupPaymentCalender.setPaymentAmount(courseActualAmount);
-		musicGroupPaymentCalender.setCurrentTotalAmount(currentTotalAmount);
+//		musicGroupPaymentCalender.setPaymentAmount(courseActualAmount);
+		musicGroupPaymentCalender.setCurrentTotalAmount(courseActualAmount);
 		musicGroupPaymentCalender.setOriginalTotalAmount(originalTotalAmount);
 		musicGroupPaymentCalender.setStatus(status);
 		musicGroupPaymentCalender.setOrganId(musicGroup.getOrganId());