<?php namespace app\em\model; use app\em\controller\Payment; class EmPayment extends Base { protected $table = 'em_payment'; public function getPayDateAttr($val){ if($val =='' || $val == 0){ return '尚未付款'; } return date('Y-m-d H:i:s',$val); } public function setPayDateAttr($val){ if(is_int($val) && strlen($val) >= 10) return $val; if(date('Y-m-d H:i:s',strtotime($val)) == $val){ return strtotime($val); } return 0; } //缴费单+search public function getPaymentList($map,$Nowpage,$limits){ //先找到账单 $data = self::alias('pay') ->field('pay.*') ->field('epi.invoice_id') ->field('em.em_numb') ->field('r.region_name,station.station_name') ->leftJoin(['em_payment_invoice'=>'epi'],'epi.payment_id = pay.payment_id') ->leftJoin(['em_invoice'=>'ei'],'ei.invoice_id=epi.invoice_id') ->leftJoin(['em_account'=>'ea'],'ea.account_id=ei.account_id') ->leftJoin(['em'],'em.id=ea.em_id') ->leftJoin(['station_info'=>'station'],'station.station_id=em.station_id') ->leftJoin(['region'=>'r'],'station.area_id = r.id') ->where($map) ->order('pay.id desc') ->group('pay.payment_id') ->page($Nowpage, $limits) ->select() ->toarray(); $arr = []; foreach ($data as $v){ $arr[] = $v['payment_id']; } $data2 = self::alias('pay') ->field('pay.*') ->field('em.em_numb,r.region_name,station.station_name') ->leftJoin(['em_account'=>'ea'],'ea.account_id=pay.account_id') ->leftJoin(['em'],'em.id=ea.em_id') ->leftJoin(['station_info'=>'station'],'station.station_id=em.station_id') ->leftJoin(['region'=>'r'],'station.area_id = r.id') ->where($map) ->whereNotIn('pay.payment_id',$arr) ->order('pay.id desc') ->group('pay.payment_id') ->page($Nowpage, $limits) ->select() ->toarray(); $data = array_merge($data,$data2); $sortKey = []; foreach ($data as $k=>$item){ $data[$k]['state'] = Payment::PAYMENT_STATUS[$item['status']]; $data[$k]['style'] = Payment::PAYMENT_STAUS_STYLE[$item['status']]; $data[$k]['payment_type'] = Payment::PAYMENT_TYPE[$item['payment_type']]; $sortKey[$k] = $item['create_time']; } array_multisort($sortKey, SORT_DESC, $data); return $data; } public function getPaymentCount($map){ //先找到账单 $data = self::alias('pay') ->field('pay.*') ->field('epi.invoice_id') ->field('em.em_numb') ->field('r.region_name,station.station_name') ->leftJoin(['em_payment_invoice'=>'epi'],'epi.payment_id = pay.payment_id') ->leftJoin(['em_invoice'=>'ei'],'ei.invoice_id=epi.invoice_id') ->leftJoin(['em_account'=>'ea'],'ea.account_id=ei.account_id') ->leftJoin(['em'],'em.id=ea.em_id') ->leftJoin(['station_info'=>'station'],'station.station_id=em.station_id') ->leftJoin(['region'=>'r'],'station.area_id = r.id') ->where($map) ->count(); $data2 = self::alias('pay') ->field('pay.*') ->field('em.em_numb,r.region_name,station.station_name') ->leftJoin(['em_account'=>'ea'],'ea.account_id=pay.account_id') ->leftJoin(['em'],'em.id=ea.em_id') ->leftJoin(['station_info'=>'station'],'station.station_id=em.station_id') ->leftJoin(['region'=>'r'],'station.area_id = r.id') ->where($map) ->count(); return intval($data + $data2); } //通过缴费单id返回缴费单关联账单信息 public function getinvsInfo($payment_id){ //1.获取所关联账单的账单id,通过账单id查询账单信息 $invIdArr = EmPaymentInvoice::field('invoice_id')->where('payment_id','=',$payment_id)->select()->toArray(); //降维 $invArr = []; foreach ($invIdArr as $inv){ $invArr[] = $inv['invoice_id']; } $invModel = new EmInvoice(); $invs = $invModel->alias('inv') ->field('inv.*') ->field('station.station_name,station.proj_number') ->field('em.em_numb') ->leftJoin(['em_invoice_useage'=>'eiu'],'eiu.invoice_id=inv.invoice_id') ->leftJoin(['em_useage'=>'eu'],'eu.useage_id = eiu.useage_id') ->leftJoin(['em'],'em.id=eu.em_id') ->leftJoin(['station_info'=>'station'],'station.station_id=em.station_id') ->where(['inv.invoice_id'=>$invArr]) ->select(); return $invs; } //获取所有缴费类型 public static function getAllType(){ $data = EmPaymentType::field('id,title')->select()->toArray(); return $data; } //解析一个缴费类型 public static function getTypeByTypeId($id){ $types = self::getAllType(); foreach ($types as $type){ if($type['id'] == $id){ return $type['title']; } } } }