Browse Source

update 分润设置

周箭河 5 years ago
parent
commit
22c13f1a87

+ 58 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/AmountChannelDto.java

@@ -0,0 +1,58 @@
+package com.ym.mec.biz.dal.dto;
+
+import java.math.BigDecimal;
+
+public class AmountChannelDto {
+
+    private Integer organId;
+
+    private Integer routeOrganId;
+
+    private String type;
+
+    private BigDecimal amount;
+
+    private String feeFlag;
+
+    public Integer getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Integer organId) {
+        this.organId = organId;
+    }
+
+
+    public Integer getRouteOrganId() {
+        return routeOrganId;
+    }
+
+    public void setRouteOrganId(Integer routeOrganId) {
+        this.routeOrganId = routeOrganId;
+    }
+
+    public BigDecimal getAmount() {
+        return amount;
+    }
+
+    public void setAmount(BigDecimal amount) {
+        this.amount = amount;
+    }
+
+    public String getFeeFlag() {
+        return feeFlag;
+    }
+
+    public void setFeeFlag(String feeFlag) {
+        this.feeFlag = feeFlag;
+    }
+
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+}

+ 63 - 30
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PayServiceImpl.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.ym.mec.biz.dal.dao.MusicGroupDao;
 import com.ym.mec.biz.dal.dao.StudentPaymentRouteOrderDao;
 import com.ym.mec.biz.dal.dao.SysConfigDao;
+import com.ym.mec.biz.dal.dto.AmountChannelDto;
 import com.ym.mec.biz.dal.dto.RouteScaleDto;
 import com.ym.mec.biz.dal.entity.StudentPaymentRouteOrder;
 import com.ym.mec.biz.dal.entity.SysAccount;
@@ -245,10 +246,10 @@ public class PayServiceImpl implements PayService {
     @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 {
         //根据金额获取分润
-        List<RouteScaleDto> routeScaleDtos = getAmountChannel(amount);
+        List<RouteScaleDto> routeScaleDtos = getAmountChannel(organId, amount, receiver);
         //零星支付,收到指定
-        if (routeScaleDtos == null && receiver != null && receiver.equals("sporadic")) {
-            routeScaleDtos = getSporadicChannel(amount);
+        if (routeScaleDtos == null) {
+            routeScaleDtos = getSporadicChannel(amount, receiver);
         }
         //比例或者笔数分佣
         if (routeScaleDtos == null) {
@@ -324,24 +325,41 @@ public class PayServiceImpl implements PayService {
      *
      * @param amount 金额
      */
-    private List<RouteScaleDto> getAmountChannel(BigDecimal amount) {
+    private List<RouteScaleDto> getAmountChannel(Integer organId, BigDecimal amount, String receiver) {
         String amountChannel = sysConfigDao.findConfigValue("amount_channel");
         if (StringUtils.isBlank(amountChannel)) {
             return null;
         }
-        Integer organId = null;
-        Map<String, Integer> channel = (Map<String, Integer>) JSON.parseObject(amountChannel, Map.class);
-        for (Map.Entry<String, Integer> amountStr : channel.entrySet()) {
-            if (new BigDecimal(amountStr.getKey()).compareTo(amount) == 0) {
-                organId = amountStr.getValue();
+        Set<String> musicGroupType = new HashSet<>();
+        musicGroupType.add("renew");
+        musicGroupType.add("register");
+        if(musicGroupType.contains(receiver)){
+            receiver = "musicGroupBuy";
+        }
+
+        Integer routeOrganId = null;
+        List<AmountChannelDto> amountChannelDtoList = JSON.parseArray(amountChannel, AmountChannelDto.class);
+        for (AmountChannelDto amountChannelDto : amountChannelDtoList) {
+            if (amountChannelDto.getOrganId().equals(organId) &&
+                    amount.compareTo(amountChannelDto.getAmount()) == 0 &&
+                    receiver.equals(amountChannelDto.getType())
+            ) {
+                routeOrganId = amountChannelDto.getRouteOrganId();
                 break;
             }
         }
-        if (organId == null) {
+
+        if (routeOrganId == null) {
             return null;
         }
 
-        SysPaymentConfig paymentConfig = sysPaymentConfigService.findPaymentConfigByOrganId(organId);
+        //调度到 鎏逸乐器经营部 检测限定金额
+        if (checkHasMaxReceipt(routeOrganId, amount)) {
+            return null;
+        }
+
+        SysPaymentConfig paymentConfig = sysPaymentConfigService.findPaymentConfigByOrganId(routeOrganId);
+
         RouteScaleDto routeScaleDto = new RouteScaleDto();
         List<RouteScaleDto> routeScaleDtos = new ArrayList<>();
         routeScaleDto.setAmount(amount);
@@ -364,7 +382,10 @@ public class PayServiceImpl implements PayService {
      * @param amount
      * @return
      */
-    private List<RouteScaleDto> getSporadicChannel(BigDecimal amount) {
+    private List<RouteScaleDto> getSporadicChannel(BigDecimal amount, String receiver) {
+        if (receiver == null || !receiver.equals("sporadic")) {
+            return null;
+        }
         String SporadicChannel = sysConfigDao.findConfigValue("sporadic_channel");
         if (StringUtils.isBlank(SporadicChannel)) {
             return null;
@@ -378,26 +399,10 @@ public class PayServiceImpl implements PayService {
         }
 
         Integer organId = Integer.parseInt(channel.get("organId"));
-        BigDecimal monthMaxReceipt = new BigDecimal(channel.get("maxReceipt")); //每月限定金额
-        BigDecimal totalMaxReceipt = new BigDecimal(channel.get("totalMaxReceipt")); //总限定金额(500W)
-
-        Date monthStartTime = DateUtil.getFirstDayOfMonth(new Date());
-
-
-        //已收金额
-        List<PaymentChannelEnum> paymentChannelList = new ArrayList<>();
-        paymentChannelList.add(PaymentChannelEnum.YQPAY);
-        paymentChannelList.add(PaymentChannelEnum.ADAPAY);
-
-        BigDecimal monthHasReceipt = studentPaymentRouteOrderDao.getRouteOrderAmount(organId, paymentChannelList, monthStartTime);
-        if (monthHasReceipt.compareTo(monthMaxReceipt) >= 0) {
-            return null;
-        }
-        BigDecimal totalHasReceipt = studentPaymentRouteOrderDao.getRouteOrderAmount(organId, paymentChannelList, null);
-        if (totalHasReceipt.compareTo(totalMaxReceipt) >= 0) {
+        if (checkHasMaxReceipt(organId, amount)) {
             return null;
         }
-        
+
         SysPaymentConfig paymentConfig = sysPaymentConfigService.findPaymentConfigByOrganId(organId);
 
         RouteScaleDto routeScaleDto = new RouteScaleDto();
@@ -416,6 +421,34 @@ public class PayServiceImpl implements PayService {
         return routeScaleDtos;
     }
 
+    //按金额和零星支付(调度到 鎏逸乐器经营部 检测限定金额)
+    private Boolean checkHasMaxReceipt(Integer organId, BigDecimal amount) {
+        SysPaymentConfig paymentConfig = sysPaymentConfigService.findPaymentConfigByOrganId(organId);
+
+        if (!paymentConfig.getHfMerNo().equals("H004218")) {
+            return false;
+        }
+        BigDecimal monthMaxReceipt = new BigDecimal(75000); //每月限定金额
+        BigDecimal totalMaxReceipt = new BigDecimal(5000000); //总限定金额(500W)
+
+        Date monthStartTime = DateUtil.getFirstDayOfMonth(new Date());
+
+        //已收金额
+        List<PaymentChannelEnum> paymentChannelList = new ArrayList<>();
+        paymentChannelList.add(PaymentChannelEnum.YQPAY);
+        paymentChannelList.add(PaymentChannelEnum.ADAPAY);
+
+        BigDecimal monthHasReceipt = studentPaymentRouteOrderDao.getRouteOrderAmount(organId, paymentChannelList, monthStartTime);
+        if (amount.add(monthHasReceipt).compareTo(monthMaxReceipt) >= 0) {
+            return true;
+        }
+        BigDecimal totalHasReceipt = studentPaymentRouteOrderDao.getRouteOrderAmount(organId, paymentChannelList, null);
+        if (amount.add(totalHasReceipt).compareTo(totalMaxReceipt) >= 0) {
+            return true;
+        }
+        return false;
+    }
+
     private Map<String, Object> getPayRoute(BigDecimal amount, BigDecimal balanceAmount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody, List<RouteScaleDto> routeScaleDtos) throws Exception {
         Map<String, Object> unionPay = new HashMap<>();
         Map<String, Object> payMap = null;