生活随笔
收集整理的這篇文章主要介紹了
怎么做才能给直播软件开发出“守护功能”的代码教程
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
在我們觀看直播時(shí),倘若遇見(jiàn)喜歡的主播,我們可以為他贈(zèng)送禮物或者開(kāi)通守護(hù),在我們操作消費(fèi)后,主播方會(huì)獲得一定收益,平臺(tái)方也能夠獲取一定抽成,為此,很多直播平臺(tái)的運(yùn)營(yíng)方都會(huì)希望通過(guò)直播軟件開(kāi)發(fā),為自己的直播平臺(tái)增加“守護(hù)功能”那么,我們?cè)撛趺醋瞿?#xff1f;教程如下:
用戶在給主播開(kāi)通守護(hù)時(shí),首先要獲取守護(hù)的各項(xiàng)信息
public function getList(){$list=DI()->notorm->guard
->select('id,name,type,coin') //獲取守護(hù)信息的id,名稱,類型,價(jià)格
->order("orderno asc")
->fetchAll();
return $list;
}
在用戶獲取這些信息之后,即可購(gòu)買(mǎi)自己想要的守護(hù)
/* 購(gòu)買(mǎi)守護(hù) */
public function buyGuard($data){
$rs = array('code' => 0, 'msg' => '購(gòu)買(mǎi)成功', 'info' => array());
$uid=$data['uid']; //購(gòu)買(mǎi)守護(hù)的用戶id
$liveuid=$data['liveuid']; //主播的id
$guardid=$data['guardid']; //守護(hù)信息的id,用來(lái)獲取守護(hù)的信息
$guardinfo=DI()->notorm->guard
->select('*')
->where('id=?',$guardid)
->fetchOne();
if(!$guardinfo){ //使用用戶守護(hù)信息的id來(lái)搜索守護(hù)信息,進(jìn)行判斷:守護(hù)信息是否存在
$rs['code'] = 1001;$rs['msg'] = '守護(hù)信息不存在';return $rs;
}
$addtime=time();
$isexist=DI()->notorm->guard_users //檢索該用戶之前有沒(méi)有開(kāi)通過(guò)守護(hù)->select('*')->where('uid = ? and liveuid=?', $uid,$liveuid)->fetchOne();
if($isexist && $isexist['endtime'] > $addtime && $isexist['type'] > $guardinfo['type'] ){ //判斷本次用戶開(kāi)通的守護(hù)和之前開(kāi)通的守護(hù)是否有沖突,倘若用戶正處于更高級(jí)別的守護(hù)有效期內(nèi)(如在開(kāi)通尊貴守護(hù)的同時(shí),又開(kāi)通普通守護(hù))則本次守護(hù)無(wú)法開(kāi)通
$rs['code'] = 1004;$rs['msg'] = '已經(jīng)是尊貴守護(hù)了,不能購(gòu)買(mǎi)普通守護(hù)';return $rs;
} $type='expend';
$action='buyguard';
$giftid= $guardinfo['id'];
$total= $guardinfo['coin'];
/* 更新用戶余額 消費(fèi) */
$isok=DI()->notorm->users->where('id = ? and coin>=?', $uid,$total)->update(array('coin' => new NotORM_Literal("coin - {$total}"),'consumption' => new NotORM_Literal("consumption + {$total}") ) ); //用戶購(gòu)買(mǎi)守護(hù)進(jìn)行扣費(fèi)
if(!$isok){ //判斷本次扣費(fèi)是否成功
$rs['code'] = 1002;$rs['msg'] = '余額不足';return $rs;
}
DI()->notorm->users //主播在被開(kāi)通守護(hù)之后會(huì)收到相應(yīng)的收益
->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 ); //添加購(gòu)買(mǎi)守護(hù)的記錄,證明該用戶是該主播的守護(hù)DI()->notorm->users_coinrecord->insert($insert); //更新消費(fèi)記錄
$endtime=$addtime + $guardinfo['length_time'];
if($isexist){ //如果之前購(gòu)買(mǎi)過(guò)守護(hù)
if($isexist['type'] == $guardinfo['type'] && $isexist['endtime'] > $addtime){ //判斷本次購(gòu)買(mǎi)的守護(hù)和之前的守護(hù)是否相同,如果相同測(cè)更新到期時(shí)間
/* 同類型未到期 只更新到期時(shí)間 */
DI()->notorm->guard_users->where('id = ? ', $isexist['id'])->update( array('endtime' => new NotORM_Literal("endtime + {$guardinfo['length_time']}")));
$rs['msg']='續(xù)費(fèi)成功';
}else{ //不同的話就更新全部信息
$data=array(
'type'=>$guardinfo['type'],
'endtime'=>$endtime,
'addtime'=>$addtime,
);
DI()->notorm->guard_users->where('id = ? ', $isexist['id'])->update( $data );
}
}else{ //如果之前沒(méi)有購(gòu)買(mǎi)過(guò)守護(hù)
$data=array(
'uid'=>$uid,
'liveuid'=>$liveuid,
'type'=>$guardinfo['type'],
'endtime'=>$endtime,
'addtime'=>$addtime,
);
DI()->notorm->guard_users //添加新的守護(hù)信息->insert( $data );
}
return $rs;
}
以上就是用戶為主播購(gòu)買(mǎi)守護(hù)之后,直播系統(tǒng)自動(dòng)進(jìn)行的操作,更多與直播軟件開(kāi)發(fā)相關(guān)的資訊和分析會(huì)在以后逐漸放出,敬請(qǐng)期待,需要的朋友請(qǐng)關(guān)注我。
聲明:文章為原創(chuàng)內(nèi)容,轉(zhuǎn)載請(qǐng)注明原文鏈接及作者
總結(jié)
以上是生活随笔為你收集整理的怎么做才能给直播软件开发出“守护功能”的代码教程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。