tablePrefix ='tab_'; /* 执行构造方法 */ parent::__construct($name, $tablePrefix, $connection); } /* 自动验证规则 */ protected $_validate = array( array('num', [1,999999], '发放数量错误', self::MUST_VALIDATE, 'between', self::MODEL_BOTH), ); /* 自动完成规则 */ protected $_auto = array( array('create_time', 'time', self::MODEL_INSERT,'function'), array('op_id',UID,self::MODEL_INSERT), ); //获取列表 public function get_lists($where){ return $this->where($where)->select(); } /** * 平台币记录 * @param $promote_id 渠道ID * @param $sid 来源ID * @param $num 数量 * @param $type 类型 1:增加 2:减少 */ public function record($promote_id,$sid,$num,$type){ $data['promote_id'] = $promote_id; $data['source_id'] = $sid; $data['num'] = $num; $data['type'] = $type; $data['promote_type'] = get_promote_level($promote_id); $data = $this->create($data); if(!$data){ return $this->getError(); } $res = $this->add($data); return $res; } public function addRecord($params) { $data = []; $data['promote_id'] = $params['promote_id']; $data['source_id'] = $params['source_id']; $data['game_id'] = $params['game_id']; $data['num'] = $params['num']; $data['type'] = $params['type']; $data['promote_type'] = get_promote_level($params['promote_id']); $data = $this->create($data); if(!$data){ return $this->getError(); } $status = $this->add($data); if ($status) { $id = M()->getLastInsID(); return $id; } else { return 0; } } /* * 平台币后台发放记录(只查自己的发放) * @param array $map 条件数组 * @param integer $page 页数 * @param integer $row 每页条数 * @param string $field 字段 * @author 鹿文学 */ public function grant($map=array(),$page=1,$row=10,$field='') { $map['type'] = 1; $map['banlan_type'] = 1; $map['source_id'] = 0; $map['promote_id'] = PID; $map['status'] = 1; $field = !empty($field)?$field:'id,"--" as order_number,"自己" as recharge_id,num,create_time,1 as source,"--" as way'; $list = $this->field($field)->where($map)->order('create_time desc,id desc')->page($page,$row)->select(); $count = $this->where($map)->count(); return ['count'=>$count,'list'=>$list]; } /* * 所有平台币后台发放记录(只查自己的发放) * @author 鹿文学 */ public function grant_all() { $map['type'] = 1; $map['banlan_type'] = 1; $map['source_id'] = 0; $map['promote_id'] = PID; $map['status'] = 1; $field = 'id,"--" as order_number,"自己" as recharge_id,num,create_time,1 as source,"--" as way'; $list = $this->field($field)->where($map)->order('create_time desc,id desc')->select(); return $list; } /* * 获取平台币记录(包含充值记录、后台发放记录) * @param integer $page 页数 * @param integer $row 每页条数 * @author 鹿文学 */ public function all_coin($page,$row) { $bmap=[]; if(!empty($_REQUEST['order_number'])){ $bmap['pay_order_number'] = array('like','%'.$_REQUEST['order_number'].'%'); $pcount = 0; } else{ $pmap['type'] = 1; $pmap['banlan_type'] = 1; $pmap['status'] = 1; $pmap['source_id'] = 0; $pmap['promote_id'] = PID; if(empty($_REQUEST['account']) || stripos(PROMOTE_ACCOUNT,$_REQUEST['account'])!== false || strpos('自己',$_REQUEST['account']) !== false) { $pids = $this->field('id,1 as type,create_time')->where($pmap)->order('create_time desc,id desc')->select(); $pcount = $this->where($pmap)->count(); } } $bmap['pay_status'] = 1; $bmap['status'] = 1; $pid = $child = $this->get_sub_all_promote_list(); $pid[] = PID; if(!empty($_REQUEST['account'])) { if(strpos('自己',$_REQUEST['account']) !== false) { $bmap['_complex'] = array( 'recharge_id'=>PID, 'promote_id'=>PID, ); } else { $bmap['_complex'] = array( '_complex'=>array('promote_account'=>['like','%'.$_REQUEST['account'].'%'],'recharge_id'=>PID), '_string'=>'recharge_account like \'%'.$_REQUEST['account'].'%\' and promote_id='.PID, '_logic'=>'or' ); } } else { $bmap['_complex'] = array( 'recharge_id'=>PID, 'promote_id'=>PID, '_logic'=>'or' ); } $bids = D('Balance')->field('id,2 as type,create_time')->where($bmap)->order('create_time desc')->select(); $bcount = D('Balance')->where($bmap)->count(); $count = $pcount + $bcount; if(!empty($pids) && !empty($bids)) { $ids = array_merge($pids,$bids); } elseif(!empty($pids) && empty($bids)) { $ids = $pids; } elseif(empty($pids) && !empty($bids)) { $ids = $bids; } else { return ['count'=>0,'list'=>[]]; } $ids = array_chunk(my_sort($ids,'create_time',SORT_DESC),$row); $mapids = $ids[$page-1]; $pmapids = []; $bmapids = []; foreach($mapids as $k => $v) { if($v['type']==1) { $pmapids[] = $v['id']; } elseif($v['type']==2) { $bmapids[] = $v['id']; } } $pdata = []; if(count($pmapids) > 0 && empty($_REQUEST['order_number'])) $pdata = $this->field('id,"--" as order_number,"自己" as recharge_id,num,create_time,1 as source,"--" as way') ->where(['id'=>['in', $pmapids]])->select(); $bdata = []; if(count($bmapids) > 0) $bdata = D('Balance')->field('id,pay_order_number as order_number,recharge_id,promote_id,create_time,money,case recharge_type when 1 then "支付宝" when 2 then "微信" else "--" end as way') ->where(['id'=>['in', $bmapids]])->select(); $data = []; foreach($mapids as $ok => $ov) { if($ov['type']==2) { foreach($bdata as $k => $v) { if($v['id'] == $ov['id']) { $v2=array( 'id'=>$v['id'], 'order_number'=>$v['order_number'], 'create_time'=>$v['create_time'], 'way'=>$v['way'], ); if($v['recharge_id']==$v['promote_id']) { $v2['recharge_id'] = '自己'; $v2['num'] = $v['money']; $v2['source'] = 2; }elseif($v['recharge_id']==PID && $v['promote_id']!=PID) { $v2['recharge_id'] = '自己'; $v2['num'] = $v['money']; $v2['source'] = 3; }elseif($v['promote_id']==PID && !in_array($v['recharge_id'],$pid)) { $v2['recharge_id'] = $v['recharge_id']; $v2['num'] = $v['money']; $v2['source'] = 4; }elseif($v['promote_id']==PID && in_array($v['recharge_id'],$child)) { $v2['recharge_id'] = $v['recharge_id']; $v2['num'] = $v['money']; $v2['source'] = 5; } $data[$ok] = $v2; } } } if($ov['type']==1) { foreach($pdata as $k => $v) { if($v['id'] == $ov['id']) { $data[$ok] = $v; } } } } return ['count'=>$count,'list'=>$data]; } /* * 所有获取平台币记录(包含充值记录、后台发放记录) * @author 鹿文学 */ public function all_coin_all() { $bmap=[]; if(!empty($_REQUEST['order_number'])){ $bmap['pay_order_number'] = array('like','%'.$_REQUEST['order_number'].'%'); } else{ $pmap['type'] = 1; $pmap['banlan_type'] = 1; $pmap['status'] = 1; $pmap['source_id'] = 0; $pmap['promote_id'] = PID; if(empty($_REQUEST['account']) || stripos(PROMOTE_ACCOUNT,$_REQUEST['account'])!== false || strpos('自己',$_REQUEST['account']) !== false) { $pdata= $this->field('id,"--" as order_number,"自己" as recharge_id,num,create_time,1 as source,"--" as way') ->where($pmap)->order('create_time desc')->select(); } } $bmap['pay_status'] = 1; $bmap['status'] = 1; $pid = $child = $this->get_sub_all_promote_list(); $pid[] = PID; if(!empty($_REQUEST['account'])) { if(strpos('自己',$_REQUEST['account']) !== false) { $bmap['_complex'] = array( 'recharge_id'=>PID, 'promote_id'=>PID, ); } else { $bmap['_complex'] = array( '_complex'=>array('promote_account'=>['like','%'.$_REQUEST['account'].'%'],'recharge_id'=>PID), '_string'=>'recharge_account like \'%'.$_REQUEST['account'].'%\' and promote_id='.PID, '_logic'=>'or' ); } } else { $bmap['_complex'] = array( 'recharge_id'=>PID, 'promote_id'=>PID, '_logic'=>'or' ); } $bdata = D('Balance')->field('id,pay_order_number as order_number,recharge_id,promote_id,create_time,money,case recharge_type when 1 then "支付宝" when 2 then "微信" else "--" end as way') ->where($bmap)->order('create_time desc')->select(); $data = []; foreach($bdata as $k => $v) { $v2=array( 'id'=>$v['id'], 'order_number'=>$v['order_number'], 'create_time'=>$v['create_time'], 'way'=>$v['way'], ); if($v['recharge_id']==$v['promote_id']) { $v2['recharge_id'] = '自己'; $v2['num'] = $v['money']; $v2['source'] = 2; }elseif($v['recharge_id']==PID && $v['promote_id']!=PID) { $v2['recharge_id'] = '自己'; $v2['num'] = $v['money']; $v2['source'] = 3; }elseif($v['promote_id']==PID && !in_array($v['recharge_id'],$pid)) { $v2['recharge_id'] = $v['recharge_id']; $v2['num'] = $v['money']; $v2['source'] = 4; }elseif($v['promote_id']==PID && in_array($v['recharge_id'],$child)) { $v2['recharge_id'] = $v['recharge_id']; $v2['num'] = $v['money']; $v2['source'] = 5; } $bdata[$k] = $v2; } if(!empty($pdata) && !empty($bdata)) { $data = array_merge($pdata,$bdata); } elseif(!empty($pdata) && empty($bdata)) { $data = $pdata; } elseif(empty($pdata) && !empty($bdata)) { $data = $bdata; } else { return []; } return my_sort($data,'create_time',SORT_DESC); } /* * 删除记录 * @author 鹿文学 */ public function del($id=0) { if(is_numeric($id) && $id>0) { return $this->where(['id'=>$id])->setField('status',0); } elseif(is_array($id)) { return $this->where(['id'=>['in',$id]])->setField('status',0); } else { return 0; } } /* * 获取子渠道 * @author 鹿文学 */ public function get_sub_all_promote_list() { if(PRO_GRADE==1) { $map['parent_id'] = PID; $map['grand_id'] = PID; $map['_logic'] = 'or'; } elseif(PRO_GRADE==2) { $map['parent_id'] = PID; } else { return [PID]; } $result = M('Promote','tab_')->field('id')->where($map)->select(); return is_array($result)?array_column($result,'id'):''; } }