Browse Source

Merge remote-tracking branch 'origin/saas' into saas

zouxuan 2 years ago
parent
commit
3ed04417a4

+ 78 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PayServiceImpl.java

@@ -20,6 +20,7 @@ import org.springframework.stereotype.Service;
 import com.alibaba.fastjson.JSON;
 import com.ym.mec.biz.dal.dao.GoodsProcurementDao;
 import com.ym.mec.biz.dal.dao.HfMemberDao;
+import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
 import com.ym.mec.biz.dal.dao.StudentPaymentRouteOrderDao;
 import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dto.AmountChannelDto;
@@ -31,6 +32,7 @@ import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
 import com.ym.mec.biz.dal.entity.StudentPaymentRouteOrder;
 import com.ym.mec.biz.dal.entity.SysPaymentConfig;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender.PaymentCalenderStatusEnum;
 import com.ym.mec.biz.dal.enums.FeeTypeEnum;
 import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
 import com.ym.mec.biz.dal.enums.OrderTypeEnum;
@@ -82,6 +84,9 @@ public class PayServiceImpl implements PayService {
     private RedisCache<String, Object> redisCache;
     @Autowired
     private GoodsProcurementDao goodsProcurementDao;
+    
+    @Autowired
+    private StudentPaymentOrderDao studentPaymentOrderDao;
 
     @Override
     public Map<String, Object> getPayMap(BigDecimal amount, BigDecimal balanceAmount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody, Integer organId, String receiver) throws Exception {
@@ -896,6 +901,79 @@ public class PayServiceImpl implements PayService {
             }
             newRouteScaleDtos.add(routeScaleDto);
         }
+        
+        /**
+         * 2022-10-14日添加规则
+         * 如果是武汉分部,且 服务收入选择的是“武汉小学”,服务费逻辑会发生变更
+         * 1.课程费用进入“武汉市武昌大雅艺术培训学校”-H004215
+         * 2.其他费用进入“武汉大雅文化艺术有限公司”-H004219
+         * 
+         */
+		if (organId == 1) {
+			//删除服务费用
+			Iterator<RouteScaleDto> routeScaleDtoIterator = newRouteScaleDtos.iterator();
+			RouteScaleDto dto = null;
+			
+			BigDecimal totalCashAmount = BigDecimal.ZERO;
+			BigDecimal totalBalanceAmount = BigDecimal.ZERO;
+			
+			while(routeScaleDtoIterator.hasNext()){
+				dto = routeScaleDtoIterator.next();
+				if(dto != null && dto.getFeeType() == FeeTypeEnum.SERVICE && dto.getOrganId() == 39){
+					totalCashAmount = totalCashAmount.add(dto.getAmount());
+					totalBalanceAmount = totalBalanceAmount.add(dto.getBalance());
+					routeScaleDtoIterator.remove();
+				}
+			}
+			
+			if(totalCashAmount.add(totalBalanceAmount).compareTo(BigDecimal.ZERO) <= 0){
+				return newRouteScaleDtos;
+			}
+			
+			StudentPaymentOrder order = studentPaymentOrderDao.findOrderByOrderNo(orderNo);
+			if (order == null) {
+				return null;
+			}
+			
+			BigDecimal musicGroupCourseTotalAmount = BigDecimal.ZERO;
+			
+			List<StudentPaymentOrderDetail> studentPaymentOrderDetailList = studentPaymentOrderDetailService.queryOrderDetail(order.getId());
+			if (studentPaymentOrderDetailList != null) {
+				musicGroupCourseTotalAmount = studentPaymentOrderDetailList
+						.stream()
+						.filter(t -> (t.getType() == OrderDetailTypeEnum.COURSE || t.getType() == OrderDetailTypeEnum.HIGH_ONLINE_COURSE
+								|| t.getType() == OrderDetailTypeEnum.SINGLE || t.getType() == OrderDetailTypeEnum.MIX
+								|| t.getType() == OrderDetailTypeEnum.HIGH || t.getType() == OrderDetailTypeEnum.COMPREHENSIVE
+								|| t.getType() == OrderDetailTypeEnum.ENLIGHTENMENT || t.getType() == OrderDetailTypeEnum.TRAINING_SINGLE
+								|| t.getType() == OrderDetailTypeEnum.TRAINING_MIX || t.getType() == OrderDetailTypeEnum.HIGH_ONLINE
+								|| t.getType() == OrderDetailTypeEnum.MUSIC_NETWORK || t.getType() == OrderDetailTypeEnum.CLASSROOM)).map(t -> t.getPrice())
+						.reduce(BigDecimal.ZERO, BigDecimal::add);
+			}
+			
+			RouteScaleDto routeScaleDto1 = new RouteScaleDto();
+			routeScaleDto1.setAmount(totalCashAmount.multiply(musicGroupCourseTotalAmount).divide(totalBalanceAmount.add(totalCashAmount), 2, BigDecimal.ROUND_DOWN));
+            routeScaleDto1.setBalance(totalBalanceAmount.multiply(musicGroupCourseTotalAmount).divide(totalBalanceAmount.add(totalCashAmount), 2, BigDecimal.ROUND_DOWN));
+            routeScaleDto1.setSaleAmount(BigDecimal.ZERO);
+            routeScaleDto1.setServiceAmount(routeScaleDto1.getAmount());
+            routeScaleDto1.setOrganId(50);
+            routeScaleDto1.setFeeType(FeeTypeEnum.SERVICE);
+            routeScaleDto1.setMerNo("H004215");
+            routeScaleDto1.setPayType(PaymentChannelEnum.ADAPAY);
+            newRouteScaleDtos.add(routeScaleDto1);
+			
+			RouteScaleDto routeScaleDto2 = new RouteScaleDto();
+			routeScaleDto2.setAmount(totalCashAmount.subtract(routeScaleDto1.getAmount()));
+            routeScaleDto2.setBalance(totalBalanceAmount.subtract(routeScaleDto1.getBalance()));
+            routeScaleDto2.setSaleAmount(BigDecimal.ZERO);
+            routeScaleDto2.setServiceAmount(routeScaleDto2.getAmount());
+            routeScaleDto2.setOrganId(52);
+            routeScaleDto2.setFeeType(FeeTypeEnum.SERVICE);
+            routeScaleDto2.setMerNo("H004219");
+            routeScaleDto2.setPayType(PaymentChannelEnum.ADAPAY);
+            newRouteScaleDtos.add(routeScaleDto2);
+			
+		}
+        
         return newRouteScaleDtos;
     }