思路:
1.存入redis的时候 对key 进行分类处理(如user 表 所有key 都带一个user 前缀)
2.查出所有满足条件的keys
3.对keys进行排序,分页
代码如下:
/**
* 血池列表
* @auth true
* @menu true
*/
public function bloodList()
{
$this->title = ‘血池列表’;
//注册按钮事件
$this->addBloodPlanBtn = url('bloodPlanAdd');
$this->editBloodFillBtn = url('bloodFillEdit');
$this->addBloodBtn = url('bloodAdd');
$this->editBloodBtn = url('bloodEdit');
$this->bloodChangeBtn = url('bloodChange');
$this->moneyTypeList = Login::table('MoneyConfig')->select()->toArray();
if (Request::param('page')) {
$pram=Request::param();
$page=$pram['page']??1;
$limit=$pram['limit']??10;
$BloodID=$pram['BloodID']??'';
$BloodName=$pram['BloodName']??'';
$keys=GameRedis::connect()->keys('BloodPool:*');
if($BloodID){
foreach ($keys as $k=>$v){
$arr=explode(':',$v);
if($arr[2]!=$BloodID){
unset($keys[$k]);
}
}
}
if($BloodName){
$arr=QPServerInfoDB::table('GameBloodPool')
->whereLike('BloodName',"$BloodName%")
->column('BloodID');
foreach ($keys as $k=>$v){
$arr1=explode(':',$v);
if(!in_array($arr1[2],$arr)){
unset($keys[$k]);
}
}
}
$list=array(
'total'=>count($keys),
'per_page'=>$limit,
'current_page'=>$page,
'last_page'=>ceil(count($keys)/$limit),
'data'=>[]
);
sort($keys);
$keys=array_slice($keys,($page-1)*$limit,$limit);
foreach ($keys as $key=>$value){
$one=GameRedis::connect()->hGetAll($value);
if(!empty($one)){
$one['ID']=$value;
$one['BloodName'] = iconv("gb2312","utf-8", $one['BloodName']);
$list['data'][]=$one;
}
}
return json($list);
} else {
return $this->fetch();
}
}