Bläddra i källkod

增加销售收入

周箭河 5 år sedan
förälder
incheckning
ae054697eb

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/RouteScaleDto.java

@@ -21,6 +21,8 @@ public class RouteScaleDto {
 
     private FeeTypeEnum feeType;
 
+    private BigDecimal balance = BigDecimal.ZERO;
+
     public Integer getOrganId() {
         return organId;
     }
@@ -77,4 +79,12 @@ public class RouteScaleDto {
     public void setFeeType(FeeTypeEnum feeType) {
         this.feeType = feeType;
     }
+
+    public BigDecimal getBalance() {
+        return balance;
+    }
+
+    public void setBalance(BigDecimal balance) {
+        this.balance = balance;
+    }
 }

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/SellOrderService.java

@@ -9,6 +9,7 @@ import com.ym.mec.common.service.BaseService;
 
 import java.math.BigDecimal;
 import java.util.List;
+import java.util.Map;
 
 
 public interface SellOrderService extends BaseService<Integer, SellOrder> {
@@ -75,6 +76,6 @@ public interface SellOrderService extends BaseService<Integer, SellOrder> {
      * @param orderNo
      * @return
      */
-    BigDecimal getSellActualAmount(String orderNo);
+    Map<String,BigDecimal> getSellAmount(String orderNo);
 
 }

+ 23 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PayServiceImpl.java

@@ -55,8 +55,8 @@ public class PayServiceImpl implements PayService {
         }
 
         //根据费用类型
-        if(routeScaleDtos == null){
-            routeScaleDtos = getTypeRouteChannel(organId, orderNo, amount);
+        if (routeScaleDtos == null) {
+            routeScaleDtos = getTypeRouteChannel(organId, orderNo, amount, balanceAmount);
         }
 
         //根据金额获取分润
@@ -313,9 +313,20 @@ public class PayServiceImpl implements PayService {
             if (routeScaleDto.getPayType().equals(PaymentChannelEnum.YQPAY)) {
                 routingAmount = yqAmount;
             }
-            BigDecimal routingFee = routingAmount.multiply(new BigDecimal(routeScaleDto.getScale())).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
-            BigDecimal routeBalanceAmount = balanceAmount.multiply(new BigDecimal(routeScaleDto.getScale())).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
-            BigDecimal routingMoney = amount.multiply(new BigDecimal(routeScaleDto.getScale())).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
+
+            BigDecimal routingFee = null;
+            BigDecimal routeBalanceAmount = null;
+            BigDecimal routingMoney = null;
+
+            if (routeScaleDto.getFeeType() == null) {
+                routingFee = routingAmount.multiply(new BigDecimal(routeScaleDto.getScale())).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
+                routeBalanceAmount = balanceAmount.multiply(new BigDecimal(routeScaleDto.getScale())).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
+                routingMoney = amount.multiply(new BigDecimal(routeScaleDto.getScale())).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
+            } else {
+                routingFee = routeScaleDto.getAmount();
+                routeBalanceAmount = routeScaleDto.getBalance();
+                routingMoney = routeScaleDto.getAmount();
+            }
             if (i == routeScaleDtos.size()) {
                 routingFee = routingAmount.subtract(hasRouteAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
                 routeBalanceAmount = balanceAmount.subtract(hasRouteBalanceAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
@@ -378,7 +389,7 @@ public class PayServiceImpl implements PayService {
      * @param amount
      * @return
      */
-    private List<RouteScaleDto> getTypeRouteChannel(Integer organId, String orderNo, BigDecimal amount) {
+    private List<RouteScaleDto> getTypeRouteChannel(Integer organId, String orderNo, BigDecimal amount, BigDecimal balanceAmount) {
         SysPaymentConfig paymentConfig = sysPaymentConfigService.findPaymentConfigByOrganId(organId);
         if (paymentConfig == null || StringUtils.isBlank(paymentConfig.getTypeRouteScale())) {
             return null;
@@ -389,8 +400,8 @@ public class PayServiceImpl implements PayService {
         List<Integer> organIds = routeScaleDtos.stream().map(RouteScaleDto::getOrganId).collect(Collectors.toList());
         List<SysPaymentConfig> paymentConfigByOrganIds = sysPaymentConfigService.findPaymentConfigByOrganIds(organIds);
 
-        BigDecimal sellActualAmount = sellOrderService.getSellActualAmount(orderNo);
-        if (sellActualAmount == null) {
+        Map<String, BigDecimal> sellAmount = sellOrderService.getSellAmount(orderNo);
+        if (sellAmount == null) {
             return null;
         }
 
@@ -400,9 +411,11 @@ public class PayServiceImpl implements PayService {
             RouteScaleDto routeScaleDto = iterator.next();
             routeScaleDto.setPayType(paymentConfig.getPayType());
             if (routeScaleDto.getFeeType().equals(FeeTypeEnum.SELL)) {
-                routeScaleDto.setAmount(sellActualAmount);
+                routeScaleDto.setAmount(sellAmount.get("actualAmount"));
+                routeScaleDto.setBalance(sellAmount.get("balance"));
             } else {
-                routeScaleDto.setAmount(amount.subtract(sellActualAmount));
+                routeScaleDto.setAmount(amount.subtract(sellAmount.get("actualAmount")));
+                routeScaleDto.setBalance(balanceAmount.subtract(sellAmount.get("balance")));
             }
 
             if (routeScaleDto.getAmount().compareTo(BigDecimal.ZERO) <= 0) {

+ 21 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SellOrderServiceImpl.java

@@ -343,7 +343,7 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
     }
 
     @Override
-    public BigDecimal getSellActualAmount(String orderNo) {
+    public Map<String, BigDecimal> getSellAmount(String orderNo) {
         StudentPaymentOrder order = studentPaymentOrderDao.findOrderByOrderNo(orderNo);
         if (order == null) {
             return null;
@@ -356,9 +356,12 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
                 return null;
             }
         }
+        Map<String, BigDecimal> sellAmount = new HashMap<>();
         //乐器销售,声部更改
         if (order.getType().equals(OrderTypeEnum.GOODS_SELL) || order.getType().equals(OrderTypeEnum.SUBJECT_CHANGE)) {
-            return order.getActualAmount();
+            sellAmount.put("actualAmount", order.getActualAmount());
+            sellAmount.put("balance", order.getBalancePaymentAmount() == null ? BigDecimal.ZERO : order.getBalancePaymentAmount());
+            return sellAmount;
         }
 
         //乐器维修
@@ -366,12 +369,16 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
             StudentRepair repairInfo = studentRepairDao.getRepairInfo(Integer.parseInt(order.getMusicGroupId()));
 
             if (StringUtils.isBlank(repairInfo.getGoodsJson())) {
-                return BigDecimal.ZERO;
+                sellAmount.put("actualAmount", BigDecimal.ZERO);
+                sellAmount.put("balance", BigDecimal.ZERO);
+                return sellAmount;
             }
             List<Goods> goodies = JSONObject.parseArray(repairInfo.getGoodsJson(), Goods.class);
             List<Integer> goodsIds = goodies.stream().map(Goods::getId).collect(Collectors.toList());
             if (goodsIds.size() <= 0) {
-                return BigDecimal.ZERO;
+                sellAmount.put("actualAmount", BigDecimal.ZERO);
+                sellAmount.put("balance", BigDecimal.ZERO);
+                return sellAmount;
             }
 
             BigDecimal goodsTotalPrice = BigDecimal.ZERO;
@@ -387,7 +394,9 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
             }
             BigDecimal balance = order.getBalancePaymentAmount() == null ? BigDecimal.ZERO : order.getBalancePaymentAmount();
             BigDecimal goodsTotalBalance = goodsTotalPrice.multiply(balance).divide(order.getExpectAmount(), 2, BigDecimal.ROUND_HALF_UP);
-            return goodsTotalPrice.subtract(goodsTotalBalance);
+            sellAmount.put("actualAmount", goodsTotalPrice.subtract(goodsTotalBalance));
+            sellAmount.put("balance", goodsTotalBalance);
+            return sellAmount;
         }
 
         //乐团报名
@@ -401,10 +410,15 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
             BigDecimal detailTotalPrice = orderDetails.stream().map(StudentPaymentOrderDetail::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
             //商品销售占的余额
             BigDecimal detailTotalBalance = detailTotalPrice.multiply(totalBalance).divide(totalPrice, 2, BigDecimal.ROUND_HALF_UP);
-            return detailTotalPrice.subtract(detailTotalBalance);
+
+            sellAmount.put("actualAmount", detailTotalPrice.subtract(detailTotalBalance));
+            sellAmount.put("balance", detailTotalBalance);
+            return sellAmount;
         }
 
-        return BigDecimal.ZERO;
+        sellAmount.put("actualAmount", BigDecimal.ZERO);
+        sellAmount.put("balance", BigDecimal.ZERO);
+        return sellAmount;
     }
 
 }