<?php
namespace wstmart\common\model;
use think\Db;
/**
 * ============================================================================
 * 资金流水业务处理器
 */
class LogMoneys extends Base{
     /**
      * 获取列表
      */
      public function pageQuery($targetType,$targetId){
      	  $type = (int)input('post.type',-1);
          $where['targetType'] = (int)$targetType;
          $where['targetId'] = (int)$targetId;
          if(in_array($type,[0,1]))$where['moneyType'] = $type;
          $page = $this->where($where)->order('id desc')->paginate()->toArray();
          foreach ($page['Rows'] as $key => $v){
          	  $page['Rows'][$key]['dataSrc'] = WSTLangMoneySrc($v['dataSrc']);
          }
          return $page;
      }

      /**
      * 获取商家质保金流水
      */
      public function pageDeposit($targetType,$targetId){
          // $where['targetType'] = (int)$targetType;
          $targetId = (int)$targetId;
          $data = Db::name('shops_deposit_detail')->where(['shopId'=>$targetId])->order('payTime desc')->paginate()->toArray();
          // dump($data);die;
          foreach ($data['Rows'] as &$v){
          	 $v['createTime'] = date('Y-m-d H:i:s',$v['payTime']);
          	 $v['money'] = $v['cashDeposit'];
          	 if($v['payType'] == 1){
          	 	$v['dataSrc'] = '店铺认证通过时缴纳';
          	 	$v['moneyType'] = 1;
          	 }elseif($v['payType'] == 2){
          	 	$v['dataSrc'] = '店铺订单中缴纳';
          	 	$v['moneyType'] = 1;
          	 }elseif($v['payType'] == 3){
          	 	$v['dataSrc'] = '店铺充值缴纳';
          	 	$v['moneyType'] = 1;
          	 }elseif($v['payType'] == 4){
          	 	$v['dataSrc'] = '店铺违规扣除';
          	 	$v['moneyType'] = 0;
          	 }
          	 $v['remark'] = $v['dataSrc'];
          }

          // dump($data);die;
          return $data;
      }
      /**
       * $lm['targetType'] = 1;//0:用户 1:商家
		$lm['targetId'] = $order->shopId;//用户/商家ID
		$lm['dataId'] = $order->orderId;
		$lm['dataSrc'] = 1;//1:交易订单 2:积分支出
		$lm['remark'] = '交易订单【'.$order->orderNo.'】退款剩余收入¥'.$backShopNum;
		$lm['moneyType'] = 1;//1:收入 0:支出
		$lm['money'] = $backShopNum;
		$lm['payType'] = 'qlgpay';	
		$lm['moneyName'] = 1;//1产品券2优惠券3旺旺券4现金券				
		$lm['createTime'] = $nowTime;
       */

      public function addMoneyLog($targetType,$targetId,$dataId,$dataSrc,$remark,$moneyType,$money,$payType,$moneyName=0){
      	$lm['targetType'] = $targetType;//0:用户 1:商家
		$lm['targetId'] = $targetId;//用户/商家ID
		$lm['dataId'] = $dataId;
		$lm['dataSrc'] = $dataSrc;//1:交易订单 2:积分支出
		$lm['remark'] = $remark;
		$lm['moneyType'] = $moneyType;//1:收入 0:支出
		$lm['money'] = $money;
		$lm['payType'] = $payType;	
		$lm['moneyName'] = $moneyName;		
      	$lm['createTime'] = date('Y-m-d H:i:s');
      	$this->insert($lm);
      	if($moneyName && $moneyName <=3 ){
      		$moneyNames = ['1'=>'productNum','2'=>'couponsNum','3'=>'wangNum'];
      		if($targetType == 1){
      			$userId = Db::name('shops')->where('shopId',$targetId)->value('userId');
      		}else{
      			$userId = $targetId;
      		}
      		if($moneyType == 1){
      			return Db::name('users')->where(["userId"=>$userId])->setInc($moneyNames[$moneyName],$money);//增加
      		}else{
      			return Db::name('users')->where(["userId"=>$userId])->setDec($moneyNames[$moneyName],$money);//减少
      		}      		
      	}
      	return true;
      }
      
      public function complateRecharge($obj){
			$trade_no = $obj["trade_no"];
	      	$orderNo = $obj["out_trade_no"];
	      	$targetId = (int)$obj["targetId"];
	      	$targetType = (int)$obj["targetType"];
	      	$itemId = (int)$obj["itemId"];
	      	$payFrom = (int)$obj["payFrom"];
	      	$payMoney = (float)$obj["total_fee"];
	      	
	      	$log = $this->where(["tradeNo"=>$trade_no,"payType"=>$payFrom])->find();
	      	if(!empty($log)){
	      		return WSTReturn('已充值',-1);
	      	}
	      	Db::startTrans();
	      	try {
	      		$giveMoney = 0;
	      		if($itemId>0){
	      			$item = Db::name('charge_items')->where(["id"=>$itemId,"dataFlag"=>1])->field("chargeMoney,giveMoney")->find();
	      			$chargeMoney = $item["chargeMoney"];
	      			if($payMoney>=$chargeMoney){
	      				$giveMoney = $item["giveMoney"];
	      			}
	      		}
	      		$chargeMoney = $payMoney+$giveMoney;
	      		if($targetType==1){
	      			$data = array();
	      			$data["shopMoney"] = array("exp","shopMoney+".$chargeMoney);
	      			$data["rechargeMoney"] = array("exp","rechargeMoney+".$chargeMoney);
	      			model('shops')->where(["shopId"=>$targetId])->update($data);
	      		}else{
	      			$data = array();
	      			$data["userMoney"] = array("exp","userMoney+".$chargeMoney);
	      			$data["rechargeMoney"] = array("exp","rechargeMoney+".$chargeMoney);
	      			model('users')->where(["userId"=>$targetId])->update($data);
	      		}
	      		
	      		//创建一条充值流水记录
	      		$lm = [];
	      		$lm['targetType'] = $targetType;
	      		$lm['targetId'] = $targetId;
	      		$lm['dataId'] = $orderNo;
	      		$lm['dataSrc'] = 4;
	      		$lm['remark'] = '钱包充值 ¥'.$payMoney.(($giveMoney>0)?("元,送 ¥".$giveMoney." 元"):" 元");
	      		$lm['moneyType'] = 1;
	      		$lm['money'] = $chargeMoney;
	      		$lm['payType'] = $payFrom;
	      		$lm['tradeNo'] = $trade_no;
	      		$lm['createTime'] = date('Y-m-d H:i:s');
	      		model('LogMoneys')->save($lm);
	      		Db::commit();
	      		return WSTReturn('充值成功',1);
	      	} catch (Exception $e) {
	      		Db::rollback();errLog($e);
	      		return WSTReturn('充值失败',-1);
	      	}
      }

      /**
       * 新增记录
       */
      public function add($log){
          $log['createTime'] = date('Y-m-d H:i:s');
		 //dump($log);
          if($log['moneyType']==1){
              if($log['targetType']==1){
				  if($log['payType']==='ect'){
					  ectLog($log['targetId'],$log['money'],12,'结算',['userECT'=>['exp','userECT+'.$log['money']]],1);
				  }else {

					  Db::name('shops')->where(["shopId" => $log['targetId']])->setInc('shopMoney', $log['money']);
				  }
		      }else{
				  if($log['payType']==='ect'){
//dump('gfdgfd');
					  ectLog($log['targetId'],$log['money'],13,'退款',['userECT'=>['exp','userECT+'.$log['money']]],1);
				  }else{
					  Db::name('users')->where(["userId"=>$log['targetId']])->setInc('userMoney',$log['money']);
				  }

		      }
          }else{
              if($log['targetType']==1){
	      	      Db::name('shops')->where(["shopId"=>$log['targetId']])->setDec('shopMoney',$log['money']);
		      }else{
		      	if($log['payType']==='ect'){
					ectLog($log['targetId'],$log['money'],11,'购物',['userECT'=>['exp','userECT-'.$log['money']]],2);
		      	}else{
		      	  	Db::name('users')->where(["userId"=>$log['targetId']])->setDec('userMoney',$log['money']);
		      	}
		      }
          }
      }
}