怎么做才能给直播软件开发出“守护功能”的代码教程
程序员文章站
2022-05-03 09:47:17
...
在我们观看直播时,倘若遇见喜欢的主播,我们可以为他赠送礼物或者开通守护,在我们操作消费后,主播方会获得一定收益,平台方也能够获取一定抽成,为此,很多直播平台的运营方都会希望通过直播软件开发,为自己的直播平台增加“守护功能”那么,我们该怎么做呢?教程如下:
用户在给主播开通守护时,首先要获取守护的各项信息
public function getList(){
$list=DI()->notorm->guard
->select('id,name,type,coin') //获取守护信息的id,名称,类型,价格
->order("orderno asc")
->fetchAll();
return $list;
}
在用户获取这些信息之后,即可购买自己想要的守护
/* 购买守护 */
public function buyGuard($data){
$rs = array('code' => 0, 'msg' => '购买成功', 'info' => array());
$uid=$data['uid']; //购买守护的用户id
$liveuid=$data['liveuid']; //主播的id
$guardid=$data['guardid']; //守护信息的id,用来获取守护的信息
$guardinfo=DI()->notorm->guard
->select('*')
->where('id=?',$guardid)
->fetchOne();
if(!$guardinfo){ //使用用户守护信息的id来搜索守护信息,进行判断:守护信息是否存在
$rs['code'] = 1001;
$rs['msg'] = '守护信息不存在';
return $rs;
}
$addtime=time();
$isexist=DI()->notorm->guard_users //检索该用户之前有没有开通过守护
->select('*')
->where('uid = ? and liveuid=?', $uid,$liveuid)
->fetchOne();
if($isexist && $isexist['endtime'] > $addtime && $isexist['type'] > $guardinfo['type'] ){ //判断本次用户开通的守护和之前开通的守护是否有冲突,倘若用户正处于更高级别的守护有效期内(如在开通尊贵守护的同时,又开通普通守护)则本次守护无法开通
$rs['code'] = 1004;
$rs['msg'] = '已经是尊贵守护了,不能购买普通守护';
return $rs;
}
$type='expend';
$action='buyguard';
$giftid= $guardinfo['id'];
$total= $guardinfo['coin'];
/* 更新用户余额 消费 */
$isok=DI()->notorm->users
->where('id = ? and coin>=?', $uid,$total)
->update(array('coin' => new NotORM_Literal("coin - {$total}"),'consumption' => new NotORM_Literal("consumption + {$total}") ) ); //用户购买守护进行扣费
if(!$isok){ //判断本次扣费是否成功
$rs['code'] = 1002;
$rs['msg'] = '余额不足';
return $rs;
}
DI()->notorm->users //主播在被开通守护之后会收到相应的收益
->where('id = ?', $liveuid)
->update( array('votes' => new NotORM_Literal("votes + {$total}"),'votestotal' => new NotORM_Literal("votestotal + {$total}") ));
$insert=array("type"=>$type,"action"=>$action,"uid"=>$uid,"touid"=>$liveuid,"giftid"=>$giftid,"giftcount"=>$total,"totalcoin"=>$total,"addtime"=>$addtime ); //添加购买守护的记录,证明该用户是该主播的守护
DI()->notorm->users_coinrecord->insert($insert); //更新消费记录
$endtime=$addtime + $guardinfo['length_time'];
if($isexist){ //如果之前购买过守护
if($isexist['type'] == $guardinfo['type'] && $isexist['endtime'] > $addtime){ //判断本次购买的守护和之前的守护是否相同,如果相同测更新到期时间
/* 同类型未到期 只更新到期时间 */
DI()->notorm->guard_users
->where('id = ? ', $isexist['id'])
->update( array('endtime' => new NotORM_Literal("endtime + {$guardinfo['length_time']}")));
$rs['msg']='续费成功';
}else{ //不同的话就更新全部信息
$data=array(
'type'=>$guardinfo['type'],
'endtime'=>$endtime,
'addtime'=>$addtime,
);
DI()->notorm->guard_users
->where('id = ? ', $isexist['id'])
->update( $data );
}
}else{ //如果之前没有购买过守护
$data=array(
'uid'=>$uid,
'liveuid'=>$liveuid,
'type'=>$guardinfo['type'],
'endtime'=>$endtime,
'addtime'=>$addtime,
);
DI()->notorm->guard_users //添加新的守护信息
->insert( $data );
}
return $rs;
}
以上就是用户为主播购买守护之后,直播系统自动进行的操作,更多与直播软件开发相关的资讯和分析会在以后逐渐放出,敬请期待,需要的朋友请关注我。
声明:文章为原创内容,转载请注明原文链接及作者