| 
					
				 | 
			
			
				@@ -53,6 +53,8 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private TenantConfigService tenantConfigService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private TenantMemberRankSettingService tenantMemberRankSettingService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private PayService payService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Resource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private IdGeneratorService idGenerator; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -133,7 +135,7 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return pageInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         assert dataList != null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<Integer> organIds = dataList.stream().map(e -> e.getOrganId()).distinct().collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Integer> organIds = dataList.stream().map(CloudTeacherStudent::getOrganId).distinct().collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Map<Integer, String> organNameMap = this.getMap("organization", "id_", "name_", organIds, queryInfo.getTenantId(), Integer.class, String.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Map<Integer, SimpleUserDto> empMapById = new HashMap<>(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -146,6 +148,7 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //获取会员名称 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<Integer> memberRankIds = dataList.stream().map(CloudTeacherStudent::getMemberRankId).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Map<Integer, String> memberNameMap = memberRankSettingService.queryMemberName(memberRankIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<Integer, JSONObject> rankSettingMap = tenantConfigService.getActivationAmount(queryInfo.getTenantId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //获取 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (CloudTeacherStudent cst : dataList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             cst.setMemberName(memberNameMap.get(cst.getMemberRankId())); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -153,37 +156,8 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (cst.getOperator() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 cst.setOperatorName(empMapById.getOrDefault(cst.getOperator(), new SimpleUserDto()).getUserName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            TenantConfig tenantConfig = tenantConfigService.getOne(new QueryWrapper<TenantConfig>().eq("tenant_id_", cst.getTenantId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (tenantConfig == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                throw new Exception("未找到组织Id " + cst.getTenantId().toString() + "在 TenantConfig 表"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            JSONObject cfg = JSON.parseObject(tenantConfig.getConfig()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            JSONObject memberConfig = (JSONObject) cfg.get("member_config"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Double divide; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            switch (cst.getType()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                case DAY: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    divide = memberConfig.getDouble("day_divide"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                case MONTH: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    divide = memberConfig.getDouble("month_divide"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                case QUARTERLY: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    divide = memberConfig.getDouble("quarter_divide"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                case YEAR_HALF: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    divide = memberConfig.getDouble("half_year_divide"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                case YEAR: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    divide = memberConfig.getDouble("year_divide"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    divide = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (divide == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                cst.setAmount(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                cst.setAmount(new BigDecimal(divide * cst.getTime())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            JSONObject memberConfig = rankSettingMap.get(cst.getMemberRankId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            cst.setAmount(tenantConfigService.getPriceByPeriod(memberConfig, cst.getType()).multiply(new BigDecimal(cst.getTime()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return pageInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -196,7 +170,7 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (dataList == null || dataList.isEmpty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return dataList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<Integer> organIds = dataList.stream().map(e -> e.getOrganId()).distinct().collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Integer> organIds = dataList.stream().map(CloudTeacherStudent::getOrganId).distinct().collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Map<Integer, String> organNameMap = this.getMap("organization", "id_", "name_", organIds, queryInfo.getTenantId(), Integer.class, String.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Map<Integer, SimpleUserDto> empMapById = new HashMap<>(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -209,42 +183,15 @@ public class CloudTeacherOrderServiceImpl extends BaseServiceImpl<Long, CloudTea 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //获取会员名称 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<Integer> memberRankIds = dataList.stream().map(CloudTeacherStudent::getMemberRankId).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Map<Integer, String> memberNameMap = memberRankSettingService.queryMemberName(memberRankIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        TenantConfig tenantConfig = tenantConfigService.getOne(new QueryWrapper<TenantConfig>().eq("tenant_id_", queryInfo.getTenantId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<Integer, JSONObject> rankSettingMap = tenantConfigService.getActivationAmount(queryInfo.getTenantId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (CloudTeacherStudent cst : dataList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             cst.setMemberName(memberNameMap.get(cst.getMemberRankId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             cst.setOrganName(organNameMap.get(cst.getOrganId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (cst.getOperator() != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 cst.setOperatorName(empMapById.getOrDefault(cst.getOperator(), new SimpleUserDto()).getUserName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (tenantConfig != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                JSONObject cfg = JSON.parseObject(tenantConfig.getConfig()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                JSONObject memberConfig = (JSONObject) cfg.get("member_config"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Double divide; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                switch (cst.getType()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    case DAY: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        divide = memberConfig.getDouble("day_divide"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    case MONTH: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        divide = memberConfig.getDouble("month_divide"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    case QUARTERLY: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        divide = memberConfig.getDouble("quarter_divide"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    case YEAR_HALF: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        divide = memberConfig.getDouble("half_year_divide"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    case YEAR: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        divide = memberConfig.getDouble("year_divide"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    default: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        divide = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (divide == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    cst.setAmount(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    cst.setAmount(new BigDecimal(divide * cst.getTime())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            JSONObject memberConfig = rankSettingMap.get(cst.getMemberRankId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            cst.setAmount(tenantConfigService.getPriceByPeriod(memberConfig, cst.getType()).multiply(new BigDecimal(cst.getTime()))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return dataList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 |