| 
					
				 | 
			
			
				@@ -28,6 +28,7 @@ import com.yonge.cooleshow.biz.dal.vo.CourseScheduleStudentPaymentVo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.wrapper.PaymentDivMemberRecordWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.wrapper.TenantAlbumWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.wrapper.UserPaymentOrderWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.wrapper.course.CourseRelationWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.common.constant.SysConfigConstant; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.common.entity.HttpResponseResult; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -37,6 +38,7 @@ import com.yonge.cooleshow.common.enums.PostStatusEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.toolset.base.exception.BizException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import lombok.extern.slf4j.Slf4j; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.apache.commons.collections.CollectionUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.commons.lang.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.joda.time.DateTime; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Service; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -133,6 +135,11 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private MemberPriceSettingsService memberPriceSettingsService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private ActivityPlanService activityPlanService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private TenantAlbumService tenantAlbumService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private RedisCacheService redisCacheService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 查询详情 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -251,7 +258,13 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 计算老师分润数据  平台的真实收益 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         BigDecimal platformFee = tenantdivMap.getOrDefault(-1L, BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap, platformFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 计算分润 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        teacherAmount(userPaymentOrder, tenantdivMap, teacherMap, platformFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tenantAlbumService.orderSuccess(userPaymentOrder); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -290,6 +303,14 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 保存购买记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         musicSheetService.addMusicSheetPurchaseRecord(userPaymentOrder, actualPrice, serviceFeeAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String userAccountConfig = redisCacheService.getUserAccountConfig(userPaymentOrder.getSubOrderNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        UserPaymentOrderWrapper.AccountTenantTo accountTenantTo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (StringUtils.isBlank(userAccountConfig)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            accountTenantTo = new UserPaymentOrderWrapper.AccountTenantTo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            accountTenantTo = JSON.parseObject(userAccountConfig, UserPaymentOrderWrapper.AccountTenantTo.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 曲目判断老师收入 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (userPaymentOrder.getOrderType().equals(OrderTypeEnum.MUSIC)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             MusicSheet musicSheet = musicSheetService.getById(userPaymentOrder.getBizId()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -299,10 +320,9 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 BigDecimal teacherAmount = BigDecimal.ONE.subtract(serviceFee).multiply(expectPrice); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // 判断分润给机构 还是给老师 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Teacher teacher = teacherService.getById(musicSheet.getUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (teacher.getTenantId() != null && teacher.getTenantId() > 0 && ESettlementFrom.TENANT.equals(teacher.getSettlementFrom())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (accountTenantTo.getIncomeTenant() != null && accountTenantTo.getIncomeTenant() >0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     // 分润给机构 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    tenantdivMap.merge(teacher.getTenantId(), teacherAmount, BigDecimal::add); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tenantdivMap.merge(accountTenantTo.getIncomeTenant(), teacherAmount, BigDecimal::add); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     tenantdivMap.merge(-1L, teacherAmount, BigDecimal::subtract); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     serviceFeeAmount = tenantdivMap.get(-1L); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } else { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -324,7 +344,9 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap, serviceFeeAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 计算分润 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        teacherAmount(userPaymentOrder, tenantdivMap, teacherMap, serviceFeeAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -397,21 +419,31 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             courseScheduleTeacherSalaryService.getDao().insertBatch(teacherSalaryList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             log.info("buyPracticeCourseSuccess ok"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String userAccountConfig = redisCacheService.getUserAccountConfig(userPaymentOrder.getSubOrderNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            UserPaymentOrderWrapper.AccountTenantTo accountTenantTo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (StringUtils.isBlank(userAccountConfig)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                accountTenantTo = new UserPaymentOrderWrapper.AccountTenantTo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                accountTenantTo = JSON.parseObject(userAccountConfig, UserPaymentOrderWrapper.AccountTenantTo.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 老师收入总金额 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             BigDecimal teacherAmount = teacherSalaryList.stream().map(CourseScheduleTeacherSalary::getActualSalary).reduce(BigDecimal.ZERO, BigDecimal::add); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 判断分润给机构 还是给老师 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Teacher teacher = teacherService.getById(teacherId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (teacher.getTenantId() != null && teacher.getTenantId() > 0 && ESettlementFrom.TENANT.equals(teacher.getSettlementFrom())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (accountTenantTo.getIncomeTenant() != null && accountTenantTo.getIncomeTenant() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // 分润给机构 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                tenantdivMap.merge(teacher.getTenantId(), teacherAmount, BigDecimal::add); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                tenantdivMap.merge( accountTenantTo.getIncomeTenant() , teacherAmount, BigDecimal::add); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 tenantdivMap.merge(-1L, teacherAmount, BigDecimal::subtract); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 serviceFeeAmount = tenantdivMap.get(-1L); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // 分润给老师 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 bizMap.merge(userPaymentOrder.getBizId(), teacherAmount, BigDecimal::add); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 计算分润 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            teacherAmount(userPaymentOrder, tenantdivMap, teacherMap, serviceFeeAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap, serviceFeeAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Set<Long> studentIds = new HashSet(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -519,13 +551,21 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (CollectionUtils.isNotEmpty(teacherSalaryList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             courseScheduleTeacherSalaryService.getDao().insertBatch(teacherSalaryList); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String userAccountConfig = redisCacheService.getUserAccountConfig(userPaymentOrder.getSubOrderNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            UserPaymentOrderWrapper.AccountTenantTo accountTenantTo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (StringUtils.isBlank(userAccountConfig)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                accountTenantTo = new UserPaymentOrderWrapper.AccountTenantTo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                accountTenantTo = JSON.parseObject(userAccountConfig, UserPaymentOrderWrapper.AccountTenantTo.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 老师收入总金额 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             BigDecimal teacherAmount = teacherSalaryList.stream().map(CourseScheduleTeacherSalary::getActualSalary).reduce(BigDecimal.ZERO, BigDecimal::add); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 判断分润给机构 还是给老师 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Teacher teacher = teacherService.getById(courseGroup.getTeacherId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (teacher.getTenantId() != null && teacher.getTenantId() > 0 && ESettlementFrom.TENANT.equals(teacher.getSettlementFrom())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (accountTenantTo.getIncomeTenant() !=null && accountTenantTo.getIncomeTenant() >0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // 分润给机构 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                tenantdivMap.merge(teacher.getTenantId(), teacherAmount, BigDecimal::add); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                tenantdivMap.merge(accountTenantTo.getIncomeTenant() , teacherAmount, BigDecimal::add); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 tenantdivMap.merge(-1L, teacherAmount, BigDecimal::subtract); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 serviceFeeAmount = tenantdivMap.get(-1L); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } else { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -533,7 +573,10 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 bizMap.merge(userPaymentOrder.getBizId(), teacherAmount, BigDecimal::add); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap, serviceFeeAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 计算分润 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            teacherAmount(userPaymentOrder, tenantdivMap, teacherMap, serviceFeeAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         log.info("buyLiveCourseSuccess ok"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //课程购买成功后进行消息推送 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -588,10 +631,18 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //老师入账金额 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         BigDecimal teacherAmount = expectPrice.subtract(serviceFeeAmount).setScale(2, RoundingMode.HALF_UP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 判断分润给机构 还是给老师 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Teacher teacher = teacherService.getById(lessonGroup.getTeacherId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (teacher.getTenantId() != null && teacher.getTenantId() > 0 && ESettlementFrom.TENANT.equals(teacher.getSettlementFrom())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String userAccountConfig = redisCacheService.getUserAccountConfig(userPaymentOrder.getSubOrderNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        UserPaymentOrderWrapper.AccountTenantTo accountTenantTo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (StringUtils.isBlank(userAccountConfig)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            accountTenantTo = new UserPaymentOrderWrapper.AccountTenantTo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            accountTenantTo = JSON.parseObject(userAccountConfig, UserPaymentOrderWrapper.AccountTenantTo.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (accountTenantTo.getIncomeTenant() !=null && accountTenantTo.getIncomeTenant() >0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 分润给机构 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            tenantdivMap.merge(teacher.getTenantId(), teacherAmount, BigDecimal::add); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tenantdivMap.merge(accountTenantTo.getIncomeTenant(), teacherAmount, BigDecimal::add); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             tenantdivMap.merge(-1L, teacherAmount, BigDecimal::subtract); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             serviceFeeAmount = tenantdivMap.get(-1L); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -599,7 +650,10 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             bizMap.merge(userPaymentOrder.getBizId(), teacherAmount, BigDecimal::add); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap, serviceFeeAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 计算分润 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        teacherAmount(userPaymentOrder, tenantdivMap, teacherMap, serviceFeeAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         videoLessonPurchaseRecordService.videoSend(lessonGroup.getTeacherId(), purchaseRecord.getStudentId(), lessonGroup); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -676,9 +730,12 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //服务费  原价的平台服务费 ,减去优惠券金额 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         BigDecimal serviceFeeAmount = userPaymentOrder.getActualPrice(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 计算分润 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        teacherAmount(userPaymentOrder, tenantdivMap, teacherMap, serviceFeeAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         memberPriceSettingsService.orderSuccess(userPaymentOrder); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap, serviceFeeAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -698,16 +755,18 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //服务费  原价的平台服务费 ,减去优惠券金额 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         BigDecimal serviceFeeAmount = userPaymentOrder.getActualPrice(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 计算分润 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        teacherAmount(userPaymentOrder, tenantdivMap, teacherMap, serviceFeeAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         activityPlanService.orderSuccess(userPaymentOrder); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap, serviceFeeAmount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        saveData(userPaymentOrder, tenantdivMap, teacherMap, bizMap); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 写入数据库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private void saveData(UserOrderDetailVo userPaymentOrder, Map<Long, BigDecimal> tenantdivMap, Map<Long, BigDecimal> teacherMap, Map<Long, BigDecimal> bizMap, BigDecimal platformFee) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 计算分润 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        teacherAmount(userPaymentOrder, tenantdivMap, teacherMap, platformFee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void saveData(UserOrderDetailVo userPaymentOrder, Map<Long, BigDecimal> tenantdivMap, Map<Long, BigDecimal> teacherMap, Map<Long, BigDecimal> bizMap) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 判断金额是否和支付金额一致 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -889,6 +948,15 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (platformFee.compareTo(BigDecimal.ZERO) <= 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String userAccountConfig = redisCacheService.getUserAccountConfig(userPaymentOrder.getSubOrderNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        UserPaymentOrderWrapper.AccountTenantTo accountTenantTo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (StringUtils.isBlank(userAccountConfig)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            accountTenantTo = new UserPaymentOrderWrapper.AccountTenantTo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            accountTenantTo = JSON.parseObject(userAccountConfig, UserPaymentOrderWrapper.AccountTenantTo.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //卖家不能分润自己 买家和分润人相同,不分润 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (null != userPaymentOrder.getRecomUserId() && userPaymentOrder.getRecomUserId() != 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 && !userPaymentOrder.getRecomUserId().equals(userPaymentOrder.getMerchId()) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -901,10 +969,9 @@ public class PaymentDivMemberRecordServiceImpl extends ServiceImpl<PaymentDivMem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             BigDecimal shareFee = platformFee.multiply(shareFeeRate).setScale(2, RoundingMode.HALF_UP); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (shareFee.compareTo(BigDecimal.ZERO) > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // 判断分润给机构 还是给老师 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Teacher teacher = teacherService.getById(userPaymentOrder.getRecomUserId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (teacher.getTenantId() != null && teacher.getTenantId() > 0 && ESettlementFrom.TENANT.equals(teacher.getSettlementFrom())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (accountTenantTo.getShareTenant() !=null && accountTenantTo.getShareTenant() > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     // 分润给机构 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    tenantdivMap.merge(teacher.getTenantId(), shareFee, BigDecimal::add); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tenantdivMap.merge(accountTenantTo.getShareTenant(), shareFee, BigDecimal::add); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     tenantdivMap.merge(-1L, shareFee, BigDecimal::subtract); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } else { 
			 |