diff --git a/app/common/logic/CommissionLogic.php b/app/common/logic/CommissionLogic.php index ca1099f4..73e831cd 100644 --- a/app/common/logic/CommissionLogic.php +++ b/app/common/logic/CommissionLogic.php @@ -3,6 +3,7 @@ namespace app\common\logic; use app\common\enum\OrderEnum; +use app\common\model\store_finance_flow_product\StoreFinanceFlowProduct; use app\common\model\system_store\SystemStore; use app\common\model\user\User; use app\common\model\user\UserAddress; @@ -14,32 +15,32 @@ class CommissionLogic extends BaseLogic */ public static function setVillage($order, $village_uid = 0, $brigade_uid = 0, $transaction_id = 0) { - $user_1 = self::user($order, 0.05, $transaction_id, $village_uid, 14); //村长 - $user_2 = self::user($order, 0.03, $transaction_id, 0, 12); //会员、厨师 - $user_3 = self::user($order, 0.01, $transaction_id, $brigade_uid, 15); //队长 + self::user($order, 3, $transaction_id, $village_uid, 14); //村长 + self::user($order, 0, $transaction_id, 0, 12); //会员、厨师 + self::user($order, 5, $transaction_id, 0, 12); //个人店铺 + self::user($order, 4, $transaction_id, $brigade_uid, 15); //队长 - $platform = self::platform($order, 0.02, $transaction_id); //平台 - $store = self::store($order, 0.05, $transaction_id, 0); //门店 - $attrition = self::attrition($order, 0.02, $transaction_id, 16); //损耗 + self::platform($order, 2, $transaction_id); //平台 + self::store($order, 1, $transaction_id, 0); //门店 + // $attrition = self::attrition($order, 0.02, $transaction_id, 16); //损耗 + self::suppliter($order, $transaction_id); - $moeny = bcadd(bcadd(bcadd(bcadd($user_1, $user_2, 2), $user_3, 2), $platform, 2), bcadd($store, $attrition, 2), 2); - self::suppliter($order, $moeny, $transaction_id); } /** * 走队长分润 */ public static function setBrigade($order, $village_uid = 0, $brigade_uid = 0, $transaction_id = 0) { - $user_1 = self::user($order, 0.05, $transaction_id, $brigade_uid, 15); //队长 - $user_2 = self::user($order, 0.03, $transaction_id, 0, 12); ////会员、厨师 - $user_3 = self::user($order, 0.01, $transaction_id, $village_uid, 14); //村长 + self::user($order, 4, $transaction_id, $brigade_uid, 15); //队长 + self::user($order, 0, $transaction_id, 0, 12); ////会员、厨师 + self::user($order, 5, $transaction_id, 0, 12); ////会员、厨师 + self::user($order, 3, $transaction_id, $village_uid, 14); //村长 - $platform = self::platform($order, 0.02, $transaction_id); //平台 - $store = self::store($order, 0.05, $transaction_id, 0); //门店 - $attrition = self::attrition($order, 0.02, $transaction_id, 16); //损耗 + self::platform($order, 2, $transaction_id); //平台 + self::store($order, 1, $transaction_id, 0); //门店 + // $attrition = self::attrition($order, 0.02, $transaction_id, 16); //损耗 + self::suppliter($order, $transaction_id); - $moeny = bcadd(bcadd(bcadd(bcadd($user_1, $user_2, 2), $user_3, 2), $platform, 2), bcadd($store, $attrition, 2), 2); - self::suppliter($order, $moeny, $transaction_id); } /** * 走厨师分润 @@ -51,14 +52,15 @@ class CommissionLogic extends BaseLogic }else{ $uid=$order['spread_uid']; } - $user_1 = self::user($order, 0.07, $transaction_id, $uid, 12); //会员、厨师 - $user_2 = self::user($order, 0.01, $transaction_id, $village_uid, 14); //村长 - $user_3 = self::user($order, 0.01, $transaction_id, $brigade_uid, 15); //队长 - $platform = self::platform($order, 0.02, $transaction_id); //平台 - $store = self::store($order, 0.05, $transaction_id, 0); //门店 - $attrition = self::attrition($order, 0.02, $transaction_id, 16); //损耗 - $moeny = bcadd(bcadd(bcadd(bcadd($user_1, $user_2, 2), $user_3, 2), $platform, 2), bcadd($store, $attrition, 2), 2); - self::suppliter($order, $moeny, $transaction_id); + self::user($order, 0, $transaction_id, $uid, 12); //会员、厨师 + self::user($order, 5, $transaction_id, $uid, 12); //会员、厨师 + self::user($order, 3, $transaction_id, $village_uid, 14); //村长 + self::user($order, 4, $transaction_id, $brigade_uid, 15); //队长 + self::platform($order, 2, $transaction_id); //平台 + self::store($order, 1, $transaction_id, 0); //门店 + // $attrition = self::attrition($order, 0.02, $transaction_id, 16); //损耗 + // $moeny = bcadd(bcadd(bcadd(bcadd($user_1, $user_2, 2), $user_3, 2), $platform, 2), bcadd($store, 0, 2), 2); + self::suppliter($order, $transaction_id); } /** @@ -66,27 +68,23 @@ class CommissionLogic extends BaseLogic */ public static function setStore($order, $transaction_id = 0) { - $platform = self::platform($order, 0.02, $transaction_id); //平台 - $store = self::store($order, 0.05, $transaction_id, 0); //门店 - $attrition = self::attrition($order, 0.01, $transaction_id, 16); //损耗 - $moeny = bcadd(bcadd($platform, $store, 2), $attrition, 2); - self::suppliter($order, $moeny, $transaction_id); + self::platform($order, 2, $transaction_id); //平台 + self::store($order, 1, $transaction_id, 0); //门店 + // $attrition = self::attrition($order, 0.01, $transaction_id, 16); //损耗 + // $moeny = bcadd($platform, $store, 2); + self::suppliter($order, $transaction_id); } /** * 平台分润 */ - public static function platform($order, $platformRate, $transaction_id) + public static function platform($order, $type, $transaction_id) { $financeLogic = new StoreFinanceFlowLogic(); $financeLogic->order = $order; $financeLogic->user['uid'] = $order['uid']; - $pay_price = $order['pay_price']; - if (isset($order['dealVipAmount']) && $order['dealVipAmount'] > 0) { - $pay_price = bcsub($order['pay_price'], $order['dealVipAmount'], 2); - } - $fees = bcdiv(bcmul($pay_price, $platformRate, 2), 1, 2); + $fees=StoreFinanceFlowProduct::where('oid',$order['id'])->where('type',$type)->sum('number'); if ($fees > 0) { $financeLogic->in($transaction_id, $fees, OrderEnum::ORDER_HANDLING_FEES, $order['store_id'], $order['staff_id'], 0, $order['pay_type']); //平台手续费 $financeLogic->out($transaction_id, $fees, OrderEnum::ORDER_HANDLING_FEES, $order['store_id'], $order['staff_id'], 0, $order['pay_type']); //商户平台手续费支出 @@ -97,16 +95,14 @@ class CommissionLogic extends BaseLogic /** * 供应链订单获得 */ - public static function suppliter($order, $platformRate, $transaction_id) + public static function suppliter($order, $transaction_id) { $financeLogic = new StoreFinanceFlowLogic(); $financeLogic->order = $order; $financeLogic->user['uid'] = $order['uid']; $pay_price = $order['pay_price']; - if (isset($order['dealVipAmount']) && $order['dealVipAmount'] > 0) { - $pay_price = bcsub($order['pay_price'], $order['dealVipAmount'], 2); - } - $fees = bcsub($pay_price, $platformRate, 2); + $number=StoreFinanceFlowProduct::where('oid',$order['id'])->sum('number'); + $fees = bcsub($pay_price, $number, 2); if ($fees > 0) { $financeLogic->in($transaction_id, $fees, OrderEnum::SUPPLIER_ORDER_OBTAINS, $order['store_id'], $order['staff_id'], 0, $order['pay_type']); $financeLogic->out($transaction_id, $fees, OrderEnum::SUPPLIER_ORDER_OBTAINS, $order['store_id'], $order['staff_id'], 0, $order['pay_type']); @@ -116,7 +112,7 @@ class CommissionLogic extends BaseLogic /** * 门店分润 */ - public static function store($order, $platformRate, $transaction_id, $uid) + public static function store($order, $type, $transaction_id, $uid) { $financeLogic = new StoreFinanceFlowLogic(); $financeLogic->user['uid'] = $order['uid']; @@ -127,11 +123,7 @@ class CommissionLogic extends BaseLogic //缴纳齐全了就加商户没有就加到平台 $money_limt = SystemStore::where('id', $order['store_id'])->field('paid_deposit,security_deposit')->find(); $deposit = bcsub($money_limt['security_deposit'], $money_limt['paid_deposit'], 2); //保证金剩余额度 - $pay_price = $order['pay_price']; - if (isset($order['dealVipAmount']) && $order['dealVipAmount'] > 0) { - $pay_price = bcsub($order['pay_price'], $order['dealVipAmount'], 2); - } - $store_profit = bcmul($pay_price, $platformRate, 2); + $store_profit=StoreFinanceFlowProduct::where('oid',$order['id'])->where('type',$type)->sum('number'); if ($deposit > 0) { if ($deposit > $store_profit) { if ($store_profit > 0) { @@ -159,14 +151,10 @@ class CommissionLogic extends BaseLogic /** * 分给用户 */ - public static function user($order, $userRate, $transaction_id, $uid = 0, $enum = 0) + public static function user($order, $type, $transaction_id, $uid = 0, $enum = 0) { $financeLogic = new StoreFinanceFlowLogic(); - $pay_price = $order['pay_price']; - if (isset($order['dealVipAmount']) && $order['dealVipAmount'] > 0) { - $pay_price = bcsub($order['pay_price'], $order['dealVipAmount'], 2); - } - $fees = bcmul($pay_price, $userRate, 2); + $fees=StoreFinanceFlowProduct::where('oid',$order['id'])->where('type',$type)->sum('number'); if ($fees > 0) { //记录用户余额收入 $financeLogic->user['uid'] = $order['uid']; diff --git a/app/common/logic/CommissionProductLogic.php b/app/common/logic/CommissionProductLogic.php index 244ea4db..f236bb3f 100644 --- a/app/common/logic/CommissionProductLogic.php +++ b/app/common/logic/CommissionProductLogic.php @@ -17,91 +17,87 @@ class CommissionProductLogic extends BaseLogic /** * 根据毛利率计算 */ - function calculate_product_flow($oid, $store_id, $product_id, $village_uid = 0, $brigade_uid = 0,$uid=0,$spread_uid=0) + function calculate_product_flow($oid, $store_id, $product_id, $village_uid = 0, $brigade_uid = 0, $uid = 0, $spread_uid = 0) { + $product = StoreBranchProduct::where('store_id', $store_id)->where('product_id', $product_id)->find(); + if ($product && $product['rose'] > 0) { + if ($product['rose'] >= 4 && $product['rose'] < 8) { + $rose = bcdiv($product['rose'], 100, 2); + $commission = bcmul($product['purchase'], $rose, 2); + StoreFinanceFlowProduct::create([ + 'store_id' => $store_id, + 'product_id' => $product_id, + 'number' => $commission, + 'oid' => $oid, + 'type' => 2, + 'status' => 1, + ]); + } elseif ($product['rose'] >= 8) { + $rose = bcdiv($product['rose'], 100, 2); - $find = StoreOrderCartInfo::where($oid, $product_id)->field('price,cart_num,rose')->find(); - if ($find && $find['rose'] > 0) { - $product = StoreBranchProduct::where('store_id', $store_id)->where('product_id', $product_id)->find(); - if ($product) { - if ($product['rose'] >= 4 && $product['rose'] < 8) { - $rose = bcdiv($find['rose'], 100, 2); - $commission = bcmul($product['purchase'], $rose, 4); - StoreFinanceFlowProduct::create([ - 'store_id' => $store_id, - 'product_id' => $product_id, - 'number' => $commission, - 'oid' => $oid, - 'type' => 2, - 'status' => 1, - ]); - } elseif ($product['rose'] >= 8) { - $rose = bcdiv($find['rose'], 100, 2); - - $Distribution = Distribution::where('rate', $rose)->find(); - //门店 - $data[] = [ - 'store_id' => $store_id, - 'product_id' => $product_id, - 'number' => bcmul($product['price'], $Distribution['store'], 4), - 'oid' => $oid, - 'type' => 1, - 'status' => 1, - ]; - //平台 - $data[] = [ - 'store_id' => $store_id, - 'product_id' => $product_id, - 'number' => bcmul($product['price'], $Distribution['platform'], 4), - 'oid' => $oid, - 'type' => 2, - 'status' => 1, - ]; - //村长 - $data[] = [ - 'store_id' => $store_id, - 'product_id' => $product_id, - 'other_uid' => $village_uid, - 'number' => bcmul($product['price'], $Distribution['village'], 4), - 'oid' => $oid, - 'type' => 0, - 'status' => 1, - ]; - //队长 - $data[] = [ - 'store_id' => $store_id, - 'product_id' => $product_id, - 'other_uid' => $brigade_uid, - 'number' => bcmul($product['price'], $Distribution['brigade'], 4), - 'oid' => $oid, - 'type' => 0, - 'status' => 1, - ]; - //会员 + $Distribution = Distribution::where('rate', $rose)->find(); + //门店 + $data[] = [ + 'store_id' => $store_id, + 'product_id' => $product_id, + 'number' => bcmul($product['price'], $Distribution['store'], 2), + 'oid' => $oid, + 'type' => 1, + 'status' => 1, + ]; + //平台 + $data[] = [ + 'store_id' => $store_id, + 'product_id' => $product_id, + 'number' => bcmul($product['price'], $Distribution['platform'],2), + 'oid' => $oid, + 'type' => 2, + 'status' => 1, + ]; + //村长 + $data[] = [ + 'store_id' => $store_id, + 'product_id' => $product_id, + 'other_uid' => $village_uid, + 'number' => bcmul($product['price'], $Distribution['village'], 2), + 'oid' => $oid, + 'type' => 3, + 'status' => 1, + ]; + //队长 + $data[] = [ + 'store_id' => $store_id, + 'product_id' => $product_id, + 'other_uid' => $brigade_uid, + 'number' => bcmul($product['price'], $Distribution['brigade'], 2), + 'oid' => $oid, + 'type' => 4, + 'status' => 1, + ]; + //会员 + $data[] = [ + 'store_id' => $store_id, + 'product_id' => $product_id, + 'other_uid' => $uid, + 'number' => bcmul($product['price'], $Distribution['user'], 2), + 'oid' => $oid, + 'type' => 0, + 'status' => 1, + ]; + //个人店铺 + if ($spread_uid > 0) { $data[] = [ 'store_id' => $store_id, 'product_id' => $product_id, 'other_uid' => $uid, - 'number' => bcmul($product['price'], $Distribution['user'], 4), + 'number' => bcmul($product['price'], $Distribution['person_store'], 2), 'oid' => $oid, - 'type' => 0, + 'type' => 5, 'status' => 1, ]; - //个人店铺 - if($spread_uid>0){ - $data[] = [ - 'store_id' => $store_id, - 'product_id' => $product_id, - 'other_uid' => $uid, - 'number' => bcmul($product['price'], $Distribution['person_store'], 4), - 'oid' => $oid, - 'type' => 0, - 'status' => 1, - ]; - } - - (new StoreFinanceFlowProduct())->saveAll($data); } + + (new StoreFinanceFlowProduct())->saveAll($data); } } }