소스 검색

订单总佣金计算

huangzhiguo 2 년 전
부모
커밋
887df20edb

+ 29 - 12
src/main/java/com/caimei/modules/order/service/CmPayShopService.java

@@ -233,14 +233,11 @@ public class CmPayShopService extends CrudService<CmPayShopDao, CmPayShop> {
                  1. 若发生退货,数量要减去已退货和已取消的数量
                  2. 有赠品的商品只能全退
                  */
+
                 Integer returnNum = 0;
-                Double commission = 0.0;
-                Double money = 0.0;
                 for (NewOrderProduct p : orderProductList) {
                     returnNum = newOrderProductDao.CountReturnedPurchaseProduct(so.getShopOrderID(), p.getOrderProductID());
                     returnNum = returnNum == null ? 0 : returnNum;
-
-                    commission = p.getDiscountPrice() - p.getCostPrice();
                     p.setReturnedNum(returnNum);
                 }
                 so.setNewOrderProducts(orderProductList);
@@ -285,12 +282,26 @@ public class CmPayShopService extends CrudService<CmPayShopDao, CmPayShop> {
                 List<String> strings = newShopOrderDao.findShopOrderNos(so.getOrderID());
                 so.setShopOrderNos(strings);
                 //主订单总佣金
-//                List<Product> product = cmPayShopDao.priceNum(so.getOrderNo());
+                List<Product> product = cmPayShopDao.priceNum(so.getOrderNo());
                 // 计算订单总佣金
                 Double income = newShopOrderDao.findIncome(so.getOrderID());
                 if(returnNum != null) {
-                    money =  income - (commission * returnNum);
-                    so.setIncome(money);
+                    if(product != null) {
+                        for (Product pro : product) {
+                            Integer number = newOrderProductDao.CountReturnedPurchaseProduct(pro.getShopOrderID(), pro.getOrderProductID());
+                            Double commission = 0.0;
+                            if(number != null && number != 0) {
+                                if (pro.getTaxRate() != null && pro.getTaxRate() != 0) {
+                                    commission = (pro.getPrice() + pro.getPrice() * (pro.getTaxRate() / 100)) - (Double.parseDouble(pro.getCostPrice()) + Double.parseDouble(pro.getCostPrice()) * (pro.getTaxRate() / 100));
+                                } else {
+                                    commission = pro.getPrice() - Double.parseDouble(pro.getCostPrice());
+                                }
+                                income -= (commission * number);
+
+                            }
+                        }
+                        so.setIncome(income);
+                    }
                 } else {
                     so.setIncome(income);
                 }
@@ -411,13 +422,19 @@ public class CmPayShopService extends CrudService<CmPayShopDao, CmPayShop> {
                 // 计算佣金
                 Double income = newShopOrderDao.findIncome(so.getOrderID());
                 if(count != 0) {
-                    Double commission = 0.0;
-                    Double money = 0.0;
                     for(Product pro: product) {
-                        commission = pro.getPrice() - Double.parseDouble(pro.getCostPrice());
-                        money = income - (commission * count);
+                        Double commission = pro.getPrice() - Double.parseDouble(pro.getCostPrice());
+                        Integer number = newOrderProductDao.CountReturnedPurchaseProduct(pro.getShopOrderID(), pro.getOrderProductID());
+                        if(number != null && number != 0) {
+                            if (pro.getTaxRate() != null && pro.getTaxRate() != 0) {
+                                commission = (pro.getPrice() + pro.getPrice() * (pro.getTaxRate() / 100)) - (Double.parseDouble(pro.getCostPrice()) + Double.parseDouble(pro.getCostPrice()) * (pro.getTaxRate() / 100));
+                            } else {
+                                commission = pro.getPrice() - Double.parseDouble(pro.getCostPrice());
+                            }
+                            income -= (commission * number);
+                        }
                     }
-                    so.setIncome(money);
+                    so.setIncome(income);
                 } else {
                     so.setIncome(income);
                 }

+ 31 - 0
src/main/java/com/caimei/modules/product/entity/Product.java

@@ -285,6 +285,13 @@ public class Product extends DataEntity<Product> {
      */
     public String qualificationLink;
 
+    //子订单ID
+    private Integer shopOrderID;
+    //订单商品ID
+    private Integer orderProductID;
+    //税率
+    private Double taxRate;
+
     public String[] getValidFlagString() {
         return validFlagString;
     }
@@ -1696,4 +1703,28 @@ public class Product extends DataEntity<Product> {
     public void setReceiptID(String receiptID) {
         this.receiptID = receiptID;
     }
+
+    public Integer getShopOrderID() {
+        return shopOrderID;
+    }
+
+    public void setShopOrderID(Integer shopOrderID) {
+        this.shopOrderID = shopOrderID;
+    }
+
+    public Integer getOrderProductID() {
+        return orderProductID;
+    }
+
+    public void setOrderProductID(Integer orderProductID) {
+        this.orderProductID = orderProductID;
+    }
+
+    public Double getTaxRate() {
+        return taxRate;
+    }
+
+    public void setTaxRate(Double taxRate) {
+        this.taxRate = taxRate;
+    }
 }

+ 4 - 3
src/main/resources/mappings/modules/order/CmPayShopMapper.xml

@@ -151,9 +151,10 @@
 		</choose>
 	</select>
 	<select id="priceNum" resultType="com.caimei.modules.product.entity.Product">
-		SELECT IFNULL(p.price, 0) as price,IFNULL(p.costPrice, 0) as costPrice FROM cm_order co
-		LEFT JOIN cm_order_product cop ON co.orderID = cop.orderID
-		LEFT JOIN product p ON cop.productID = p.productID WHERE co.orderNo = #{orderNo}
+		SELECT cso.shopOrderID,cop.orderProductID,cop.taxRate,cop.discountPrice as price,cop.costPrice as costPrice FROM cm_order co
+				 LEFT JOIN cm_order_product cop ON co.orderID = cop.orderID
+				 LEFT JOIN cm_shop_order cso ON cop.shopOrderNo = cso.shopOrderNo
+				 LEFT JOIN product p ON cop.productID = p.productID WHERE co.orderNo =  #{orderNo}
 	</select>
 	<insert id="insert" parameterType="CmPayShop"  keyProperty="id" useGeneratedKeys="true">
 		INSERT INTO cm_pay_shop(