You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

470 lines
12 KiB
PHTML

5 years ago
<?php
// +----------------------------------------------------------------------
// | 徐州梦创信息科技有限公司—专业的游戏运营,推广解决方案.
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.vlcms.com All rights reserved.
// +----------------------------------------------------------------------
// | Author: kefu@vlcms.com QQ97471547
// +----------------------------------------------------------------------
namespace Home\Model;
use Think\Model;
/**
* 文档基础模型
*/
class PromoteCoinModel extends Model{
/**
* 构造函数
* @param string $name 模型名称
* @param string $tablePrefix 表前缀
* @param mixed $connection 数据库连接信息
*/
public function __construct($name = '', $tablePrefix = '', $connection = '')
{
/* 设置默认的表前缀 */
$this->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'):'';
}
}