123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- <?php
- namespace app\index\controller;
- use think\Controller;
- use Redis;
- use think\Db;
- use app\common\library\Easemob;
- class Plantask extends Controller
- {
-
-
-
- public function auto_user_level_up(){
- Db::startTrans();
- $tasklist = Db::name('gift_user_party')->where('task_status',0)->limit(20)->lock(true)->select();
- if(empty($tasklist)){
- Db::rollback();
- echo 'empty';
- exit;
- }
- try {
-
- $redis = new Redis();
- $redisconfig = config("redis");
- $redis->connect($redisconfig["host"], $redisconfig["port"]);
- if ($redisconfig['redis_pwd']) {
- $redis->auth($redisconfig['redis_pwd']);
- }
- if($redisconfig['redis_selectdb'] > 0){
- $redis->select($redisconfig['redis_selectdb']);
- }
- $money_to_jewel = config('site.money_to_jewel') ?: 10;
- foreach($tasklist as $key => $giftuserparty){
- echo $giftuserparty['id'].'<br>';
- $giftValue = $giftuserparty['value'];
- $hotValue = $giftValue;
-
- $authuser_info = Db::name('user')->field('nickname')->where('id',$giftuserparty['user_id'])->find();
- $touserInfo = Db::name('user')->field('nickname')->where('id',$giftuserparty['user_to_id'])->find();
- $party_id = $giftuserparty['party_id'];
-
- $user_id = $giftuserparty['user_to_id'];
- if($giftuserparty['getvalue'] > 0){
- $getMoney = bcdiv($giftuserparty['getvalue'],$money_to_jewel,2);
- if($getMoney > 0){
- $rs_wallet = model('wallet')->lockChangeAccountRemain($user_id,$getMoney,'+',0,"{$authuser_info['nickname']}送你{$giftuserparty['gift_name']}x{$giftuserparty['number']}",101,'money');
- if($rs_wallet['status'] == false){
- Db::rollback();
- $this->error($rs_wallet['msg']);
- }
- }
- }
- $partyInfo = \app\common\model\Party::field("id,room_type,party_name,party_hot,user_id,platRate,guilderRate,easemob_room_id")->where(["id"=>$giftuserparty['party_id']])->find();
-
- if ($partyInfo && $giftuserparty['guildervalue'] > 0) {
- $guilderMoney = bcdiv($giftuserparty['guildervalue'],$money_to_jewel,2);
- if($guilderMoney > 0){
- $rs_wallet = model('wallet')->lockChangeAccountRemain($partyInfo->user_id,$guilderMoney,'+',0,"{$authuser_info['nickname']}送礼物{$giftuserparty['gift_name']}x{$giftuserparty['number']}给{$touserInfo['nickname']},房间礼物抽成",102,'money');
- if($rs_wallet['status'] == false){
- Db::rollback();
- $this->error($rs_wallet['msg']);
- }
- }
- }
-
- $this->updateSeatCharm($partyInfo['easemob_room_id'],$giftuserparty['seat_num'],$hotValue,$partyInfo);
-
-
-
-
-
-
-
-
-
-
- $res_charm = \app\common\model\User::add_charm_level($giftuserparty['user_to_id'],$giftValue);
-
-
- \app\common\model\Message::addMessage($giftuserparty['user_to_id'],"礼物通知","收到 ".$authuser_info['nickname']." 赠送的".$giftuserparty['gift_name']." x".$giftuserparty['number']." 价值 ".$giftValue ." 金币");
-
- $res_wealth = \app\common\model\User::add_wealth_level($giftuserparty['user_id'],$giftValue);
-
-
- $avatarArr = $redis->hGet("user_jewel_top3",$partyInfo['id']);
- $easemob = new Easemob();
- $matedata = [
- 'wealth_top3_userlist' => $avatarArr,
- ];
- $easemob->room_setRoomCustomAttributeForced($partyInfo['easemob_room_id'],$partyInfo['user_id'],$matedata);
-
- $rs_up = Db::name('gift_user_party')->where('id',$giftuserparty['id'])->update(['task_status'=>1]);
- if($rs_up === false){
- Db::rollback();
- echo '更新错误'.$giftuserparty['id'];
- exit;
- }
- }
- Db::commit();
- } catch (ValidateException $e) {
- Db::rollback();
- $this->error($e->getMessage());
- } catch (PDOException $e) {
- Db::rollback();
- $this->error($e->getMessage());
- } catch (Exception $e) {
- Db::rollback();
- $this->error($e->getMessage());
- }
- }
-
- private function updateSeatCharm($easemob_room_id,$seatnum,$giftValue,$party_info) {
-
- $key = 'seat'.$seatnum;
- $easemob = new Easemob();
- $seatdata = $easemob->room_getRoomCustomAttribute($easemob_room_id,[$key]);
- if(empty($seatdata)){
-
- $seatdata = [
- 'charm' => 0,
- 'isMaster' => false,
- 'headUrl' => '',
- 'userNo' => '',
- 'rtcUid' => '',
- 'name' => '',
- 'seatIndex' => $seatnum,
- 'chorusSongCode' => '',
- 'isAudioMuted' => 1,
- 'isVideoMuted' => 0,
- 'checked' => false,
- 'isUsed' => true,
- 'gender' => 1,
- ];
- }else{
- $seatdata = json_decode($seatdata[$key],true);
- }
-
- $seatdata['charm'] = intval($seatdata['charm']);
- $seatdata['charm'] += $giftValue;
-
- $matedata = [
- $key => json_encode($seatdata),
- ];
- $easemob->room_setRoomCustomAttributeForced($easemob_room_id,$party_info['user_id'],$matedata);
- return true;
- }
- }
|