<?php
namespace Admin\Controller;

use Admin\Form\Finance\MoneyForm;
use Common\Controller\AdminController;
use Niaoyun\BasePage;
/**
 * 财务明细
 */

class UsersMoneyController extends AdminController {
	//------财务明细------
	public function finance() {
		//查询
		$searchType = I("get.searchType",'');
		$keyword = I("get.keyword",'');
        $pagesize = I('get.pagesize',10,'intval');
		$where = array();
        if ($this->customer_service['ownerpermission']){
            $where['u.customerServiceID'] = $this->customer_service['id'];
        }

        $key_column=array('id'=>'账单ID','userID'=>'会员ID','serviceID'=>'业务ID');
		if ($searchType&&$keyword) {
			$where = array('um.'.$searchType => $keyword);
		}
		$type = I("get.type",'');
        $type_column = array('consume'=>'消费','recharge'=>'充值','withdrawal'=>'提现','refund'=>'退款','trade'=>'交易','fee'=>'手续费','commission'=>'佣金');
		if ($type) {
			$where['um.type'] = $type;
		}

		//按时间查询
		$time = searchFilter(2,I('get.dateTime'));
		$endtime = searchFilter(2,I('get.endtime'));
        if($time>$endtime&&$endtime){
            $this->error('起始时间不能大于结束时间',U('admin/usersMoney/finance'));
        }
        if ($time) {
            $where['um.dateTime']= array('egt',$time);
        }
        if ($endtime) {
            $where['um.dateTime']= array('elt',date('Y-m-d', strtotime($endtime) + 86400));
        }
        if($time&&$endtime){
            $where['um.dateTime']= array('between',$time.','.date('Y-m-d', strtotime($endtime) + 86400));
        }

        if (I('get.userID')) {
            $where['um.userID'] = I('get.userID');
        }

        $hideParams =array(
            array('userID',I('get.userID'))
        );

        $count = M('UsersMoney')->alias('um')
            ->join('LEFT JOIN users AS u on um.userID = u.id')
            ->join('LEFT JOIN customerservice AS ctm on u.customerServiceID = ctm.id')
            ->where($where)
            ->count();
        $page = new BasePage($count, $pagesize,array(),false);
        $page->setFormID('search_form');
        $hiddenParams = $page->hiddenParametersHtml($hideParams);
        $select = $page->pagesizeSelect();
        $pagination = $page->pagination();
        $money = M('UsersMoney')->alias('um')
            ->field('um.*')
            ->join('LEFT JOIN users AS u on um.userID = u.id')
            ->join('LEFT JOIN customerservice AS ctm on u.customerServiceID = ctm.id')
            ->where($where)
            ->order('um.id desc')
            ->limit($page->firstRow . ',' . $page->listRows)
            ->select(); // $Page->firstRow 起始条数 $Page->listRows 获取多少条
        $recharge_ids = [];
        $orderids = [];
        foreach ($money as $value) {
            if ($value['type'] == 'recharge' && $value['servicetype'] == 'recharge') {
                $recharge_ids[] = $value['serviceid'];
            }
            if($value['order_id']){
                $orderids[] = $value['order_id'];
            }
        }
        $recharge_types = [];
        if (count($recharge_ids) > 0) {
            $recharge_types = M('users_recharge')->where(['id' => ['in', $recharge_ids]])->getField('id,type');
            if (!$recharge_types) {
                $recharge_types = [];
            }
        }
        foreach ($money as &$value) {
            if ($value['type'] != 'recharge') {
                continue;
            }
            $id = $value['serviceid'];
            if ($value['servicetype'] != 'recharge' || !isset($recharge_types[$id])) {
                $value['recharge_type'] = '管理员';
                continue;
            }
            $value['recharge_type'] = $recharge_types[$id] == 'weixin' ? '微信' : '支付宝';
        }

        $filters = new \Niaoyun\Page\SelectedFilters();
        $filters->setField("dateTime", "开始时间");
        $filters->setField("endtime", "结束时间");
        $filters->setField("userID", "会员ID");
        $filters->setField("type",array("款项类型"=>$type_column));
        $filters->setField("searchType",$key_column);
        $filters->setField("keyword");//关键字
        $filters->setAssociated("searchType","keyword");

        $selectedData = $filters->draw();
        $this->assign('selectedData', $selectedData);

		$this->assign("money", $money);
		$this->assign("dateTime", $time);
		$this->assign("endtime", $endtime);
		$this->assign("searchType", $searchType);
		$this->assign("keyword", $keyword);
		$this->assign("type", $type);
        $this->assign('hiddenParams', $hiddenParams);
        $this->assign('pagination', $pagination);
        $this->assign('select', $select);
		$this->display();
	}



	/**
	 * 财务明细查看
	 * @param $id
	 * @author xietaotao
	 */
	public function particulars($id){

		$parti = M('users_money');
		//$moneyid =  preg_match('/^[0-9]{1,20}$/',$id);
		$where['id']= $id;
		$par = $parti->where($where)->find();


		$serviceId = $par['serviceid'];//业务id
		switch($par['servicetype']) {
			case \Admin\Type\Money\ServiceType::ADMIN:
				$url = U('admin/User/changeMoneyView', array('id' => $serviceId));
				break;
			case \Admin\Type\Money\ServiceType::ORDER:
				$row = M("orders")->where(array('id' => $par['serviceid']))->find();
				$url = U("admin/Order/orderView", array('id' => $row['id']));
				break;
			case \Admin\Type\Money\ServiceType::ICPCODE:
				$url = U('admin/Icp/index', array('searchType' => 'serverID', 'keyword' => $serviceId));
				break;
			case \Admin\Type\Money\ServiceType::REFUND:
				$url = U('admin/Refund/view', array('id' => $serviceId));
				break;
			case \Admin\Type\Money\ServiceType::RECHARGE:
				$url = U('admin/UsersRecharge/recharge', array('searchType' => 'id', 'keyword' => $serviceId));
				break;
			case \Admin\Type\Money\ServiceType::INVOICE:
				$url = U('admin/Invoice/View', array('id' => $serviceId));
				break;
			case \Admin\Type\Money\ServiceType::WITHDRAWAL:
				$url = U('admin/finance/withdrawalView', array("id" => $serviceId));
				break;
			default:
				$url = "javascript:;";
				break;
		}

		$this->assign('url', $url);
		$this->assign('par', $par);
		$this->display();
	}

}