<?php

namespace Bill\Lib;

use Dever;

class Cron
{
    public function sell_api()
    {
    	# 按月份统计团队业绩
        $month = Dever::input('month', date('Y-m'));
        $start_time = $month .'-01 00:00:00';
		$end_time = date('Y-m-d', strtotime($start_time. ' +1 month -1 day')).' 23:59:59';
		$where['type'] = '2';
        $where['start'] = Dever::maketime($start_time);
        $where['end'] = Dever::maketime($end_time);
        $data = Dever::db('bill/sell')->getNumByTime($where);
        if ($data) {
        	foreach ($data as $k => $v) {
        		if ($v['num'] > 0) {
                    $w = array();
        			$w['mid'] = $v['mid'];
        			$w['month'] = $where['start'];
        			$info = Dever::db('bill/sell_stat')->find($w);
        			$w['new_num'] = $v['num'];
        			$where['mid'] = $v['mid'];
        			$total = Dever::db('bill/sell')->getNumByTimeOne($where);
        			if ($total) {
        				$w['num'] = $total['num'];
        			}
        			if ($info) {
        				$w['where_id'] = $info['id'];
        				Dever::db('bill/sell_stat')->update($w);
        			} else {
        				Dever::db('bill/sell_stat')->insert($w);
        			}
        		}
        	}
        }

        return 'ok';
    }

    # 权益使用情况统计:类型、商品名、总发放数量、总使用数量
    public function goods_api()
    {
        $num = Dever::input('num', 1);
        $start = Dever::input('start', date('Y-m-d', strtotime('-'.$num.' day')));
        $end = Dever::input('end', date('Y-m-d'));

        $start = Dever::maketime($start . ' 00:00:00');
        $end = Dever::maketime($end . ' 23:59:59');
        $day = intval(($end - $start)/86400);

        for($i=0; $i<=$day; $i++) {
            $where['start'] = $start + 86400*$i;
            $where['end'] = $start + 86400*$i + 86399;
            $goods = Dever::db('agent/member_goods')->findAll($where);

            if ($goods) {
                foreach ($goods as $k => $v) {
                    $data = array();
                    $data['day'] = $where['start'];
                    $data['type'] = $v['type'];
                    $data['type_id'] = $v['type_id'];
                    $data['sku_id'] = $v['sku_id'];
                    $info = Dever::db('bill/goods_stat')->find($data);

                    $data['total_num'] = $v['total_num'];
                    $data['sell_num'] = $v['sell_num'];
                    $data['cash'] = $v['cash'];
                    $data['price'] = $v['price'];
                    $data['name'] = $v['name'];

                    if ($info) {
                        $data['where_id'] = $info['id'];
                        Dever::db('bill/goods_stat')->update($data);
                    } else {
                        Dever::db('bill/goods_stat')->insert($data);
                    }
                }
            }
        }
    }

    # 区域分润
    /*
    区域毛利  =  区域内所有门店的采购商品的零售价总额  x  30%

    城市分润  =  区域毛利 x 1%

    区县分润  =  区域毛利 x 3%

    街道分润  =  区域毛利 x 5%
    */
    public function area_api()
    {
        # 获取所有代理商
        $where['status'] = 2;
        $member = Dever::db('agent/member')->select($where);
        if ($member) {
            foreach ($member as $k => $v) {
                # 获取区域内门店的利润
                $role = Dever::db('setting/role')->find($v['role']);
                $profit = $role['profit'];
                if (!$profit) {
                    continue;
                }
                $temp = explode(',', $v['area']);
                if ($role['type'] == 2) {
                    $area = '';
                    if ($role['area'] == 1 && isset($temp[1])) {
                        # 城市
                        $area = $temp[0] . ',' . $temp[1];
                    } elseif ($role['area'] == 2 && isset($temp[2])) {
                        # 区县
                        $area = $temp[0] . ',' . $temp[1] . ',' . $temp[2];
                    } elseif ($role['area'] == 3 && isset($temp[3])) {
                        # 街道
                        $area = $temp[0] . ',' . $temp[1] . ',' . $temp[2] . ',' . $temp[3];
                    }
                    if ($area) {
                        
                    }
                }
            }
        }
    }

    # 营业额报表:日期,订单数,确认订单数,确认订单额度,新增代理商数量
    public function order_api()
    {
        $num = Dever::input('num', 1);
        $start = Dever::input('start', date('Y-m-d', strtotime('-'.$num.' day')));
        $end = Dever::input('end', date('Y-m-d'));

        $start = Dever::maketime($start . ' 00:00:00');
        $end = Dever::maketime($end . ' 23:59:59');
        $day = intval(($end - $start)/86400);

        for($i=0; $i<=$day; $i++) {
            $where = array();
            $where['start'] = $start + 86400*$i;
            $where['end'] = $start + 86400*$i + 86399;
            $data = array();
            $data['day'] = $where['start'];
            $info = Dever::db('bill/order_stat')->find($data);
            $data['num'] = Dever::db('agent/order')->getNum($where);
            $where['status'] = 4;
            $data['yes_num'] = Dever::db('agent/order')->getNum($where);

            $cash = Dever::db('agent/order')->getCash($where);
            if ($cash) {
                $data['cash'] = $cash['total'];
            } else {
                $data['cash'] = 0;
            }
            $where['status'] = 2;
            $data['daili_num'] = Dever::db('agent/member')->getNum($where);
            if (!$info) {
                Dever::db('bill/order_stat')->insert($data);
            } else {
                $data['where_id'] = $info['id'];
                Dever::db('bill/order_stat')->update($data);
            }
        }
    }

    # 代理商统计:日期,新增代理商,城市代理商,区县代理商,街道代理商,创客,消客
    public function member_api()
    {
        $num = Dever::input('num', 1);
        $start = Dever::input('start', date('Y-m-d', strtotime('-'.$num.' day')));
        $end = Dever::input('end', date('Y-m-d'));

        $start = Dever::maketime($start . ' 00:00:00');
        $end = Dever::maketime($end . ' 23:59:59');
        $day = intval(($end - $start)/86400);
        
        for($i=0; $i<=$day; $i++) {
            $where = array();
            $where['status'] = 2;
            $where['start'] = $start + 86400*$i;
            $where['end'] = $start + 86400*$i + 86399;
            $data = array();
            $data['day'] = $where['start'];
            $info = Dever::db('bill/member_stat')->find($data);
            $data['num'] = Dever::db('agent/member')->getNum($where);
            $where['role'] = 2;
            $data['city_num'] = Dever::db('agent/member')->getNum($where);

            $where['role'] = 3;
            $data['county_num'] = Dever::db('agent/member')->getNum($where);

            $where['role'] = 4;
            $data['town_num'] = Dever::db('agent/member')->getNum($where);

            $where['role'] = 6;
            $data['ck_num'] = Dever::db('agent/member')->getNum($where);

            $where['role'] = 7;
            $data['xk_num'] = Dever::db('agent/member')->getNum($where);


            if (!$info) {
                Dever::db('bill/member_stat')->insert($data);
            } else {
                $data['where_id'] = $info['id'];
                Dever::db('bill/member_stat')->update($data);
            }
        }
    }

    # 资金账户统计:日期,总收入,代理费,软件服务费,赠送商品价值,直推佣金,市场培训费
    # 总收入金额 = 代理费金额 + 软件服务费 - 赠送商品价值 - 直推分佣 - 市场培训费 - 活动分佣 - 手动发放
    public function cash_in_api()
    {
        $num = Dever::input('num', 1);
        $start = Dever::input('start', date('Y-m-d', strtotime('-'.$num.' day')));
        $end = Dever::input('end', date('Y-m-d'));

        $start = Dever::maketime($start . ' 00:00:00');
        $end = Dever::maketime($end . ' 23:59:59');
        $day = intval(($end - $start)/86400);
        
        for($i=0; $i<=$day; $i++) {
            $where = array();
            $where['start'] = $start + 86400*$i;
            $where['end'] = $start + 86400*$i + 86399;
            $data = array();
            $data['day'] = $where['start'];
            $info = Dever::db('bill/cash_in_stat')->find($data);

            $where['status'] = 4;
            $data['daili_cash'] = 0;
            $cash = Dever::db('agent/order')->getDailiCash($where);
            if ($cash) {
                $data['daili_cash'] = $cash['total'];
            }
            $data['soft_cash'] = 0;
            $cash = Dever::db('agent/order')->getSoftCash($where);
            if ($cash) {
                $data['soft_cash'] = $cash['total'];
            }
            $data['goods_cash'] = 0;
            $cash = Dever::db('agent/order')->getGoodsCash($where);
            if ($cash) {
                $data['goods_cash'] = $cash['total'];
            }
            unset($where['status']);

            $where['type'] = 1;

            $data['zt_cash'] = 0;
            $cash = Dever::db('bill/cash')->getCash($where);
            if ($cash) {
                $data['zt_cash'] = $cash['total'];
            }

            $where['type'] = 2;

            $data['sc_cash'] = 0;
            $cash = Dever::db('bill/cash')->getCash($where);
            if ($cash) {
                $data['sc_cash'] = $cash['total'];
            }

            $where['type'] = 4;

            $data['hd_cash'] = 0;
            $cash = Dever::db('bill/cash')->getCash($where);
            if ($cash) {
                $data['hd_cash'] = $cash['total'];
            }

            $where['type'] = 10;

            $data['sd_cash'] = 0;
            $cash = Dever::db('bill/cash')->getCash($where);
            if ($cash) {
                $data['sd_cash'] = $cash['total'];
            }

            $data['cash'] = $data['daili_cash'] + $data['soft_cash'] - $data['goods_cash'] - $data['sc_cash'] - $data['zt_cash'] - $data['hd_cash'] - $data['sd_cash'];

            if (!$info) {
                Dever::db('bill/cash_in_stat')->insert($data);
            } else {
                $data['where_id'] = $info['id'];
                Dever::db('bill/cash_in_stat')->update($data);
            }
        }
    }

    # 应付金额 = 现存余额 + 未审核提现 + 已审核待发放提现。
    public function cash_out_api()
    {
        $num = Dever::input('num', 1);
        $start = Dever::input('start', date('Y-m-d', strtotime('-'.$num.' day')));
        $end = Dever::input('end', date('Y-m-d'));

        $start = Dever::maketime($start . ' 00:00:00');
        $end = Dever::maketime($end . ' 23:59:59');
        $day = intval(($end - $start)/86400);
        
        for($i=0; $i<=$day; $i++) {
            $where = array();
            $where['start'] = $start + 86400*$i;
            $where['end'] = $start + 86400*$i + 86399;
            $data = array();
            $data['day'] = $where['start'];
            $info = Dever::db('bill/cash_in_stat')->find($data);

            $where['status'] = 4;
            $data['daili_cash'] = 0;
            $cash = Dever::db('agent/order')->getDailiCash($where);
            if ($cash) {
                $data['daili_cash'] = $cash['total'];
            }
            $data['soft_cash'] = 0;
            $cash = Dever::db('agent/order')->getSoftCash($where);
            if ($cash) {
                $data['soft_cash'] = $cash['total'];
            }
            $data['goods_cash'] = 0;
            $cash = Dever::db('agent/order')->getGoodsCash($where);
            if ($cash) {
                $data['goods_cash'] = $cash['total'];
            }
            unset($where['status']);

            $where['type'] = 1;

            $data['zt_cash'] = 0;
            $cash = Dever::db('bill/cash')->getCash($where);
            if ($cash) {
                $data['zt_cash'] = $cash['total'];
            }

            $where['type'] = 2;

            $data['sc_cash'] = 0;
            $cash = Dever::db('bill/cash')->getCash($where);
            if ($cash) {
                $data['sc_cash'] = $cash['total'];
            }

            $data['cash'] = $data['daili_cash'] + $data['soft_cash'] - $data['goods_cash'] - $data['sc_cash'] - $data['zt_cash'];

            if (!$info) {
                Dever::db('bill/cash_in_stat')->insert($data);
            } else {
                $data['where_id'] = $info['id'];
                Dever::db('bill/cash_in_stat')->update($data);
            }
        }
    }
}