浏览代码

vip活动改造

zouxuan 2 年之前
父节点
当前提交
db003e5e25

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroupActivity.java

@@ -183,5 +183,8 @@ public class VipGroupActivity{
 	@ApiModelProperty(value = "单价")
 	private BigDecimal singlePrice;
 
+	@ApiModelProperty(value = "活动价用于前端展示")
+	private BigDecimal displayPrice;
+
 	private Integer tenantId = TenantContextHolder.getTenantId();
 }

+ 8 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupActivityServiceImpl.java

@@ -608,9 +608,14 @@ public class VipGroupActivityServiceImpl extends BaseServiceImpl<Integer, VipGro
 			}
 		}
 		//计算支付金额
-		BigDecimal actualAmount = this.getActivityPrice(vipGroupActivity,payParam.getOrganId(),new BigDecimal(1));
-		actualAmount = actualAmount.multiply(vipGroupActivity.getDiscount()).divide(new BigDecimal(100), 0, ROUND_UP);
-		actualAmount = actualAmount.multiply(new BigDecimal(payParam.getBuyNum()));
+		BigDecimal actualAmount;
+		if(vipGroupActivity.getFixedCourseNumFlag()){
+			actualAmount = vipGroupActivity.getMarketPrice();
+		}else {
+			actualAmount = this.getActivityPrice(vipGroupActivity,payParam.getOrganId(),new BigDecimal(1));
+			actualAmount = actualAmount.multiply(vipGroupActivity.getDiscount()).divide(new BigDecimal(100), 0, ROUND_UP);
+			actualAmount = actualAmount.multiply(new BigDecimal(payParam.getBuyNum()));
+		}
 		// 判断是否存在支付中的记录
 		List<StudentPaymentOrder> list = studentPaymentOrderService
 				.queryByCondition(GroupType.ACTIVITY,

+ 21 - 18
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -2,8 +2,7 @@ package com.ym.mec.biz.service.impl;
 
 import static com.ym.mec.biz.dal.enums.GroupType.VIP;
 import static com.ym.mec.biz.dal.enums.SysUserRoleEnum.ORGAN_MANAGER;
-import static java.math.BigDecimal.ROUND_DOWN;
-import static java.math.BigDecimal.ZERO;
+import static java.math.BigDecimal.*;
 
 import java.math.BigDecimal;
 import java.time.LocalDate;
@@ -1966,6 +1965,14 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
         VipGroupSalarySettlementTypeDto vipOfflineSalarySettlement = null;
         VipGroupSalarySettlementTypeDto giveVipOfflineSalarySettlement = null;
+        BigDecimal onlineClassesUnitPrice = vipGroup.getOnlineClassesUnitPrice();
+        if (Objects.isNull(onlineClassesUnitPrice)) {
+            throw new BizException("课程单价异常");
+        }
+        BigDecimal offlineClassesUnitPrice = vipGroup.getOfflineClassesUnitPrice();
+        if (Objects.isNull(offlineClassesUnitPrice)) {
+            throw new BizException("课程单价异常");
+        }
         BigDecimal discount = new BigDecimal(100);
         if (vipGroup.getVipGroupActivityId() != null) {
             VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId());
@@ -1976,6 +1983,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
             }
             vipOfflineSalarySettlement = vipGroupSalarySettlementDto.getOfflineSalarySettlement();
             giveVipOfflineSalarySettlement = vipGroupSalarySettlementDto.getGiveVipOfflineSalarySettlement();
+            onlineClassesUnitPrice = onlineClassesUnitPrice.multiply(discount).divide(new BigDecimal(100), 0, ROUND_UP);
+            offlineClassesUnitPrice = offlineClassesUnitPrice.multiply(discount).divide(new BigDecimal(100), 0, ROUND_UP);
 
             //是否是赠送课程
             ActivityUserMapper activityUserMapper = activityUserMapperService.findVipUserMapper(vipGroup.getId(), "VIP", null);
@@ -1991,16 +2000,8 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
         BigDecimal offlineClassNum = new BigDecimal(vipGroup.getOfflineClassesNum());
         BigDecimal onlineClassNum = new BigDecimal(vipGroup.getOnlineClassesNum());
-        BigDecimal onlineClassesUnitPrice = vipGroup.getOnlineClassesUnitPrice();
-        if (Objects.isNull(onlineClassesUnitPrice)) {
-            throw new BizException("课程单价异常");
-        }
         BigDecimal onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
 
-        BigDecimal offlineClassesUnitPrice = vipGroup.getOfflineClassesUnitPrice();
-        if (Objects.isNull(offlineClassesUnitPrice)) {
-            throw new BizException("课程单价异常");
-        }
         BigDecimal offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
         BigDecimal teacherOfflineSalary = BigDecimal.ZERO;
         BigDecimal giveTeacherOfflineSalary = BigDecimal.ZERO;
@@ -2094,6 +2095,14 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
         VipGroupSalarySettlementTypeDto vipOfflineSalarySettlement = null;
         VipGroupSalarySettlementTypeDto giveVipOfflineSalarySettlement = null;
+        BigDecimal onlineClassesUnitPrice = vipGroup.getOnlineClassesUnitPrice();
+        if (Objects.isNull(onlineClassesUnitPrice)) {
+            throw new BizException("课程单价异常");
+        }
+        BigDecimal offlineClassesUnitPrice = vipGroup.getOfflineClassesUnitPrice();
+        if (Objects.isNull(offlineClassesUnitPrice)) {
+            throw new BizException("课程单价异常");
+        }
         BigDecimal discount = new BigDecimal(100);
         if (vipGroup.getVipGroupActivityId() != null) {
             VipGroupActivity vipGroupActivity = vipGroupActivityDao.get(vipGroup.getVipGroupActivityId());
@@ -2104,20 +2113,14 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
             }
             vipOfflineSalarySettlement = vipGroupSalarySettlementDto.getOfflineSalarySettlement();
             giveVipOfflineSalarySettlement = vipGroupSalarySettlementDto.getGiveVipOfflineSalarySettlement();
+            onlineClassesUnitPrice = onlineClassesUnitPrice.multiply(discount).divide(new BigDecimal(100), 0, ROUND_UP);
+            offlineClassesUnitPrice = offlineClassesUnitPrice.multiply(discount).divide(new BigDecimal(100), 0, ROUND_UP);
         }
 
         BigDecimal offlineClassNum = new BigDecimal(vipGroup.getOfflineClassesNum());
         BigDecimal onlineClassNum = new BigDecimal(vipGroup.getOnlineClassesNum());
-        BigDecimal onlineClassesUnitPrice = vipGroup.getOnlineClassesUnitPrice();
-        if (Objects.isNull(onlineClassesUnitPrice)) {
-            throw new BizException("课程单价异常");
-        }
         BigDecimal onlineVipGroupCharge = onlineClassesUnitPrice.multiply(onlineClassNum);
 
-        BigDecimal offlineClassesUnitPrice = vipGroup.getOfflineClassesUnitPrice();
-        if (Objects.isNull(offlineClassesUnitPrice)) {
-            throw new BizException("课程单价异常");
-        }
         BigDecimal offlineVipGroupCharge = offlineClassesUnitPrice.multiply(offlineClassNum);
         BigDecimal teacherOfflineSalary = BigDecimal.ZERO;
         BigDecimal giveTeacherOfflineSalary = BigDecimal.ZERO;

+ 14 - 0
mec-student/src/main/java/com/ym/mec/student/controller/ActivityController.java

@@ -27,6 +27,8 @@ import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
+import static java.math.BigDecimal.ROUND_UP;
+
 @RequestMapping("activity")
 @Api(tags = "活动")
 @RestController
@@ -154,6 +156,12 @@ public class ActivityController extends BaseController {
         Map<String, String> categoryMap = vipGroupCategoryDao.findConditionCategorys().stream().collect(Collectors.toMap(e-> e.getId().toString(), ConditionDto::getName));
         vipGroupActivity.setVipGroupCategoryNames(categoryMap.get(vipGroupActivity.getVipGroupCategoryIdList()));
         vipGroupActivity.setGiveCategoryName(categoryMap.get(vipGroupActivity.getGiveCategoryId()));
+        //如果是固定金额
+        if(vipGroupActivity.getFixedCourseNumFlag()){
+            vipGroupActivity.setDisplayPrice(vipGroupActivity.getMarketPrice());
+        }else {
+            vipGroupActivity.setDisplayPrice(vipGroupActivity.getSinglePrice().multiply(vipGroupActivity.getDiscount()).divide(new BigDecimal(100), 0, ROUND_UP));
+        }
         vipGroupActivityService.setActivityType(vipGroupActivity);
         return succeed(vipGroupActivity);
     }
@@ -186,6 +194,12 @@ public class ActivityController extends BaseController {
             for (VipGroupActivity activity : vipGroupActivities) {
                 activity.setVipGroupCategoryNames(categoryMap.get(activity.getVipGroupCategoryIdList()));
                 activity.setGiveCategoryName(categoryMap.get(activity.getGiveCategoryId()));
+                //如果是固定金额
+                if(activity.getFixedCourseNumFlag()){
+                    activity.setDisplayPrice(activity.getMarketPrice());
+                }else {
+                    activity.setDisplayPrice(activity.getSinglePrice().multiply(activity.getDiscount()).divide(new BigDecimal(100), 0, ROUND_UP));
+                }
                 vipGroupActivityService.setActivityType(activity);
             }
         }