yonge 3 年之前
父節點
當前提交
b1773f007c

+ 59 - 68
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderDetailServiceImpl.java

@@ -321,17 +321,17 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
 				continue;
 			}
 			
-			Long minPaymentOrderId = Collections.min(paymentOrderIdList);
-
 			List<StudentPaymentOrderDetail> orderDetailList = studentPaymentOrderDetailDao.getWithIds(paymentOrderIdList);
 			
 			Map<OrderDetailTypeEnum,BigDecimal> userOrderTypeMap = new HashMap<OrderDetailTypeEnum, BigDecimal>();;
 			
 			BigDecimal amount = BigDecimal.ZERO;
 			KitGroupPurchaseTypeEnum kitGroupPurchaseType = null;
-			String goodsId = null ,accessoriesId = null ;
+			String musicalId = null;
+			StringBuffer accessoriesId = new StringBuffer();
 			BigDecimal orderTotalAmount = BigDecimal.ZERO;
-			BigDecimal withoutMusicalTotalAmount = BigDecimal.ZERO;
+			
+			subjectChange = subjectChangeMap.get(studentRegistration.getUserId());
 			
 			for(StudentPaymentOrderDetail spod : orderDetailList){
 				
@@ -343,18 +343,32 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
 						|| spod.getType() == OrderDetailTypeEnum.TRAINING_MIX || spod.getType() == OrderDetailTypeEnum.HIGH_ONLINE
 						|| spod.getType() == OrderDetailTypeEnum.MUSIC_NETWORK || spod.getType() == OrderDetailTypeEnum.CLASSROOM || spod.getType() == OrderDetailTypeEnum.THEORY_COURSE) {
 					spod.setType(OrderDetailTypeEnum.COURSE);
-					withoutMusicalTotalAmount = withoutMusicalTotalAmount.add(spod.getPrice().subtract(spod.getRemitFee()));
+					//courseAmount = courseAmount.add(spod.getPrice().subtract(spod.getRemitFee()));
 				}else if(spod.getType() == OrderDetailTypeEnum.MUSICAL){
-					kitGroupPurchaseType = spod.getKitGroupPurchaseType();
-					goodsId = spod.getGoodsIdList();
+					if(subjectChange != null && spod.getPaymentOrderId() <= subjectChange.getOriginalOrderId()) {
+						if(subjectChange.getChangeMusical() == null){
+							continue;
+						}
+						kitGroupPurchaseType = subjectChange.getKitGroupPurchaseType();
+						musicalId = subjectChange.getChangeMusical() + "";
+						spod.setPrice(subjectChange.getChangeMusicalPrice());
+		        	}else{
+						kitGroupPurchaseType = spod.getKitGroupPurchaseType();
+						musicalId = spod.getGoodsIdList();
+						//musicalAmount = musicalAmount.add(spod.getPrice());
+		        	}
 				}else if(spod.getType() == OrderDetailTypeEnum.ACCESSORIES){
-					if(StringUtils.isBlank(accessoriesId)){
-						accessoriesId = spod.getGoodsIdList();
-					}else{
-						accessoriesId = accessoriesId + "," + spod.getGoodsIdList();
-					}
-				}else{
-					withoutMusicalTotalAmount = withoutMusicalTotalAmount.add(spod.getPrice().subtract(spod.getRemitFee()));
+					if(subjectChange != null && spod.getPaymentOrderId() <= subjectChange.getOriginalOrderId()) {
+						if(StringUtils.isBlank(subjectChange.getChangeAccessories())){
+							continue;
+						}
+						accessoriesId = accessoriesId.append(subjectChange.getChangeAccessories()).append(",");
+						//accessoriesAmount = accessoriesAmount.add(subjectChange.getChangeAccessoriesPrice());
+						spod.setPrice(subjectChange.getChangeAccessoriesPrice());
+		        	}else{
+						accessoriesId = accessoriesId.append(spod.getGoodsIdList()).append(",");
+						//accessoriesAmount = accessoriesAmount.add(spod.getPrice());
+		        	}
 				}
 				
 				amount = userOrderTypeMap.get(spod.getType());
@@ -368,63 +382,40 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
 				orderTotalAmount = orderTotalAmount.add(spod.getPrice().subtract(spod.getRemitFee()));
 			}
         	
-        	subjectChange = subjectChangeMap.get(studentRegistration.getUserId());
-        	if(subjectChange != null && minPaymentOrderId <= subjectChange.getOriginalOrderId()){
-        		dto.setAccessoriesAmount(subjectChange.getChangeAccessoriesPrice());
-        		if(subjectChange.getChangeAccessoriesGoods() != null){
-        			dto.setAccessoriesName(subjectChange.getChangeAccessoriesGoods().stream().map(Goods::getName).collect(Collectors.joining(",")));
-        		}
-
-        		dto.setCourseAmount(userOrderTypeMap.get(OrderDetailTypeEnum.COURSE));
-        		dto.setMaintenanceAmount(userOrderTypeMap.get(OrderDetailTypeEnum.MAINTENANCE));
-				dto.setCloudTeacherAmount(userOrderTypeMap.get(OrderDetailTypeEnum.CLOUD_TEACHER) == null ? userOrderTypeMap
-						.get(OrderDetailTypeEnum.CLOUD_TEACHER_PLUS) : userOrderTypeMap.get(OrderDetailTypeEnum.CLOUD_TEACHER));
-        		//dto.setGoodsNames(goodsNames);
-        		dto.setKitGroupPurchaseTypeEnum(subjectChange.getKitGroupPurchaseType());
-        		dto.setMusicalAmount(subjectChange.getChangeMusicalPrice());
-        		if(subjectChange.getChangeMusicalGoods() != null){
-        			dto.setMusicalName(subjectChange.getChangeMusicalGoods().getName());
-        		}
-        		dto.setMusicGroupName(musicGroup.getName());
-        		dto.setOrganName(organization.getName());
-        		dto.setOrderAmount(withoutMusicalTotalAmount.add(subjectChange.getChangeMusicalPrice().add(subjectChange.getChangeAccessoriesPrice())));
-        		dto.setUserId(userId);
-        		dto.setSubjectName(userSubjectMap.get(userId));
-        		dto.setUsername(usernameMap.get(userId));
-        	}else{
-        		
-				if (StringUtils.isNoneBlank(accessoriesId)) {
-					accessoriesId = StringUtils.removeEnd(accessoriesId, ",");
-					Map<Integer, Goods> goodsMap = goodsService.findGoodsByIds(accessoriesId).stream().collect(Collectors.toMap(Goods::getId, Goods -> Goods));
-
-					String[] accessoriesIds = StringUtils.split(accessoriesId, ',');
-
-					StringBuffer sb = new StringBuffer();
-					for (String s : accessoriesIds) {
-						sb.append(goodsMap.get(Integer.parseInt(s)).getName()).append(",");
+        	dto.setAccessoriesAmount(userOrderTypeMap.get(OrderDetailTypeEnum.ACCESSORIES));
+			dto.setCourseAmount(userOrderTypeMap.get(OrderDetailTypeEnum.COURSE));
+    		dto.setMusicalAmount(userOrderTypeMap.get(OrderDetailTypeEnum.MUSICAL));
+    		dto.setMaintenanceAmount(userOrderTypeMap.get(OrderDetailTypeEnum.MAINTENANCE));
+			dto.setCloudTeacherAmount(userOrderTypeMap.get(OrderDetailTypeEnum.CLOUD_TEACHER) == null ? userOrderTypeMap
+					.get(OrderDetailTypeEnum.CLOUD_TEACHER_PLUS) : userOrderTypeMap.get(OrderDetailTypeEnum.CLOUD_TEACHER));
+			
+			if (StringUtils.isNoneBlank(accessoriesId.toString())) {
+				String accessoriesIdList = StringUtils.removeEnd(accessoriesId.toString(), ",");
+				Map<Integer, Goods> goodsMap = goodsService.findGoodsByIds(accessoriesIdList).stream().collect(Collectors.toMap(Goods::getId, Goods -> Goods));
+
+				String[] accessoriesIds = StringUtils.split(accessoriesIdList, ',');
+
+				StringBuffer sb = new StringBuffer();
+				for (String s : accessoriesIds) {
+					if(StringUtils.isBlank(s)){
+						continue;
 					}
-					dto.setAccessoriesName(StringUtils.removeEnd(sb.toString(), ","));
+					sb.append(goodsMap.get(Integer.parseInt(s)).getName()).append(",");
 				}
-
-        		dto.setAccessoriesAmount(userOrderTypeMap.get(OrderDetailTypeEnum.ACCESSORIES));
-    			dto.setCourseAmount(userOrderTypeMap.get(OrderDetailTypeEnum.COURSE));
-        		dto.setMusicalAmount(userOrderTypeMap.get(OrderDetailTypeEnum.MUSICAL));
-        		dto.setMaintenanceAmount(userOrderTypeMap.get(OrderDetailTypeEnum.MAINTENANCE));
-				dto.setCloudTeacherAmount(userOrderTypeMap.get(OrderDetailTypeEnum.CLOUD_TEACHER) == null ? userOrderTypeMap
-						.get(OrderDetailTypeEnum.CLOUD_TEACHER_PLUS) : userOrderTypeMap.get(OrderDetailTypeEnum.CLOUD_TEACHER));
+				dto.setAccessoriesName(StringUtils.removeEnd(sb.toString(), ","));
+			}
+			
+    		if(StringUtils.isNoneBlank(musicalId)){
+    			dto.setMusicalName(goodsService.findGoodsByIds(musicalId).stream().map(Goods::getName).collect(Collectors.joining(",")));
+    		}
+    		dto.setKitGroupPurchaseTypeEnum(kitGroupPurchaseType);
+    		dto.setMusicGroupName(musicGroup.getName());
+    		dto.setOrganName(organization.getName());
+    		dto.setOrderAmount(orderTotalAmount);
+    		dto.setUserId(userId);
+    		dto.setSubjectName(userSubjectMap.get(userId));
+    		dto.setUsername(usernameMap.get(userId));
     		
-        		//dto.setGoodsNames(goodsNames);
-        		dto.setKitGroupPurchaseTypeEnum(kitGroupPurchaseType);
-        		if(StringUtils.isNoneBlank(goodsId)){
-        			dto.setMusicalName(goodsService.findGoodsByIds(goodsId).stream().map(Goods::getName).collect(Collectors.joining(",")));
-        		}
-        		dto.setMusicGroupName(musicGroup.getName());
-        		dto.setOrganName(organization.getName());
-        		dto.setOrderAmount(orderTotalAmount);
-        		dto.setUserId(userId);
-        		dto.setSubjectName(userSubjectMap.get(userId));
-        		dto.setUsername(usernameMap.get(userId));
-        	}
         	musicalListDetailDtos.add(dto);
         }
     	

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

@@ -352,7 +352,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 			StudentPaymentOrderDetail spod = null;
 			while (iterator.hasNext()) {
 				spod = iterator.next();
-				if (spod.getType() == OrderDetailTypeEnum.ACCESSORIES || spod.getType() == OrderDetailTypeEnum.MUSICAL) {
+				if ((spod.getType() == OrderDetailTypeEnum.ACCESSORIES || spod.getType() == OrderDetailTypeEnum.MUSICAL) && spod.getPaymentOrderId() <= studentLastChange.getOriginalOrderId()) {
 					iterator.remove();
 				}
 			}