<?php

namespace app\common\logic;

use app\common\model\distribution\Distribution;
use app\common\model\store_branch_product\StoreBranchProduct;
use app\common\model\store_finance_flow_product\StoreFinanceFlowProduct;
use app\common\model\store_order_cart_info\StoreOrderCartInfo;
use app\common\model\store_product\StoreProduct;
use PDO;

/**
 * 产品佣金计算
 * 
 */
class CommissionProductLogic extends BaseLogic
{

    /**
     * 根据毛利率计算
     */
    function calculate_product_flow($find, $order, $village_uid = 0, $brigade_uid = 0, $user_ship = 0, $spread_user_ship = 0)
    {
        $product = StoreProduct::where('id', $find['product_id'])->find();
        if ($product && $product['rose'] > 0) {
            if (in_array($user_ship, [4, 6, 7])) {
                $this->b($find, $order, $product);
                return true;
            }
            if ($product['rose'] < 8) {
                return false;
            } else {
                if($user_ship==5){
                    $top_cate_id=StoreBranchProduct::where('product_id',$find['product_id'])->value('top_cate_id');
                    if($top_cate_id==15189){
                        $this->b($find, $order, $product);
                        return true;
                    }
                }
                $this->a($find, $order, $village_uid, $brigade_uid, $user_ship, $product);
            }
            return true;
        }
    }

    /**
     * 零售价结算
     */
    public function a($find, $order, $village_uid, $brigade_uid, $user_ship, $product)
    {
        $rose = bcdiv($product['rose'], 100, 2);
        $total_price = bcmul($product['purchase'], $find['cart_num']);
        $Distribution = Distribution::where('rate', $rose)->find();
        //门店
        $data[] = [
            'store_id' => $order['store_id'],
            'product_id' => $find['product_id'],
            'other_uid'=>0,
            'number' =>  bcmul($total_price, $Distribution['store'], 2),
            'oid' => $order['id'],
            'type' => 1,
            'status' => 1,
        ];
        //平台
        $data[] = [
            'store_id' => $order['store_id'],
            'product_id' => $find['product_id'],
            'other_uid'=>0,
            'number' =>  bcmul($total_price, $Distribution['platform'], 2),
            'oid' => $order['id'],
            'type' => 2,
            'status' => 1,
        ];
        //村长
        $data[] = [
            'store_id' => $order['store_id'],
            'product_id' => $find['product_id'],
            'other_uid' => $village_uid,
            'number' =>  bcmul($total_price, $Distribution['village'], 2),
            'oid' => $order['id'],
            'type' => 3,
            'status' => 1,
        ];
        //队长
        $data[] = [
            'store_id' => $order['store_id'],
            'product_id' => $find['product_id'],
            'other_uid' => $brigade_uid,
            'number' =>  bcmul($total_price, $Distribution['brigade'], 2),
            'oid' => $order['id'],
            'type' => 4,
            'status' => 1,
        ];
        //会员
        if ($user_ship == 1) {
            $uid = $order['spread_uid'];
        } else {
            $uid = 0;
        }
        $data[] = [
            'store_id' => $order['store_id'],
            'product_id' => $find['product_id'],
            'other_uid' => $uid,
            'number' =>  bcmul($total_price, $Distribution['user'], 2),
            'oid' => $order['id'],
            'type' => 0,
            'status' => 1,
        ];

        //个人店铺
        if ($order['spread_uid'] > 0) {
            $data[] = [
                'store_id' => $order['store_id'],
                'product_id' => $find['product_id'],
                'other_uid' => $order['spread_uid'],
                'number' =>  bcmul($total_price, $Distribution['person_store'], 2),
                'oid' => $order['id'],
                'type' => 5,
                'status' => 1,
            ];
        }

        (new StoreFinanceFlowProduct())->saveAll($data);
    }

    /**
     * 商户价结算
     */
    public function b($find, $order, $product)
    {
        // $rose = bcdiv($product['rose'], 100, 2);
        $total_price = bcmul($product['purchase'], $find['cart_num']);
        $commission = bcmul($total_price, 0.02, 2);

        //供货价
        $total_cost = bcmul($product['cost'], $find['cart_num']);
        $total = bcsub($total_cost, $total_price, 2);
        $number = bcsub($total, $commission, 2);
        if ($product['rose'] <= 4) {
            //门店
            $data = [
                'store_id' => $order['store_id'],
                'product_id' => $find['product_id'],
                'other_uid'=>0,
                'number' => $total,
                'oid' => $order['id'],
                'type' => 1,
                'status' => 1,
            ];
            StoreFinanceFlowProduct::create($data);
        } else {
            //门店
            $data[] = [
                'store_id' => $order['store_id'],
                'product_id' => $find['product_id'],
                'other_uid'=>0,
                'number' => $number,
                'oid' => $order['id'],
                'type' => 1,
                'status' => 1,
            ];
            //平台
            $data[] = [
                'store_id' => $order['store_id'],
                'product_id' => $find['product_id'],
                'other_uid'=>0,
                'number' => $commission,
                'oid' => $order['id'],
                'type' => 2,
                'status' => 1,
            ];
            (new StoreFinanceFlowProduct())->saveAll($data);
        }
    }
}