Merge remote-tracking branch 'origin/develop' into develop
This commit is contained in:
66
application/api/controller/Friend.php
Normal file
66
application/api/controller/Friend.php
Normal file
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
use app\common\controller\BaseCom;
|
||||
|
||||
class Friend extends BaseCom
|
||||
{
|
||||
//交友开始
|
||||
public function start_friend(){
|
||||
$room_id = input('room_id', '');
|
||||
|
||||
$reslut = model('Friend')->start_friend($this->uid,$room_id);
|
||||
|
||||
return V($reslut['code'], $reslut['msg'], $reslut['data']);
|
||||
}
|
||||
|
||||
//交友延时
|
||||
public function delay(){
|
||||
$friend_id = input('friend_id', '');
|
||||
$room_id = input('room_id', '');
|
||||
$delay_times = input('delay_times', '');//分钟
|
||||
|
||||
$reslut = model('Friend')->delay($this->uid,$room_id,$friend_id,$delay_times);
|
||||
|
||||
return V($reslut['code'], $reslut['msg'], $reslut['data']);
|
||||
}
|
||||
|
||||
//交友结束
|
||||
public function end_friend(){
|
||||
|
||||
$friend_id = input('friend_id', '');
|
||||
$room_id = input('room_id', '');
|
||||
|
||||
$result = model('Friend')->end_friend($this->uid,$room_id,$friend_id);
|
||||
if($result['code'] == 1){
|
||||
model('Room')->clear_user_charm($this->uid, $room_id);
|
||||
}
|
||||
|
||||
return V($result['code'], $result['msg'], $result['data']);
|
||||
}
|
||||
|
||||
//卡关系 创建关系
|
||||
public function create_relation()
|
||||
{
|
||||
$room_id = input('room_id', '');
|
||||
$friend_id = input('friend_id', '');
|
||||
$user1_id = input('user1_id', '');
|
||||
$user2_id = input('user2_id', '');
|
||||
$relation_id = input('relation_id', '');
|
||||
|
||||
$result = model('Friend')->createRelation($this->uid,$room_id,$friend_id,$user1_id,$user2_id,$relation_id);
|
||||
|
||||
return V($result['code'], $result['msg'], $result['data']);
|
||||
}
|
||||
|
||||
//退出私密小屋
|
||||
public function out_room()
|
||||
{
|
||||
$room_id = input('room_id', '');
|
||||
|
||||
$result = model('Friend')->outRoom($this->uid,$room_id);
|
||||
|
||||
return V($result['code'], $result['msg'], $result['data']);
|
||||
}
|
||||
}
|
||||
@@ -155,8 +155,9 @@ class Room extends BaseCom
|
||||
$to_uid = input('to_uid', 0);//收礼人ID,逗号隔开的字符串
|
||||
$type = input('type', 1);//1金币购买 2送背包礼物
|
||||
$pit_number = input('pit_number', 0);
|
||||
$heart_id = input('heart_id', 0);
|
||||
|
||||
$reslut = model('Room')->room_gift($this->uid, $to_uid, $gift_id, $gift_num, $type, $room_id, $pit_number);
|
||||
$reslut = model('Room')->room_gift($this->uid, $to_uid, $gift_id, $gift_num, $type, $room_id, $pit_number,$heart_id);
|
||||
return V($reslut['code'], $reslut['msg'], $reslut['data']);
|
||||
}
|
||||
|
||||
|
||||
@@ -90,6 +90,15 @@ class Chat extends Model
|
||||
//送盲盒礼物推送文字消息
|
||||
// RoomGiftBlindBox = 1038,
|
||||
|
||||
//交友房间内发送消息
|
||||
//交友房游戏阶段
|
||||
// FriendRoomGameStart = 1039,
|
||||
//交友房延时
|
||||
// FriendRoomDelay = 1040,
|
||||
//交友结束推送是否创建小房间
|
||||
// FriendRoomEnd = 1041,
|
||||
|
||||
|
||||
|
||||
|
||||
$text = [
|
||||
|
||||
@@ -2,10 +2,218 @@
|
||||
|
||||
namespace app\api\model;
|
||||
|
||||
use think\Db;
|
||||
use think\Model;
|
||||
|
||||
class Friend extends Model
|
||||
{
|
||||
public function start_friend($user_id, $room_id){
|
||||
// 判断用户是否在主持麦
|
||||
$host = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => 9,'user_id' => $user_id])->find();
|
||||
if(!$host){
|
||||
return ['code' => 0, 'msg' => '没有权限操作', 'data' => null];
|
||||
}
|
||||
|
||||
$room_info = db::name('vs_room')->field('id,step,room_status')->where(['id' => $room_id,'room_status' =>1])->find();
|
||||
if (!$room_info) {
|
||||
return ['code' => 0, 'msg' => '房间不存在!', 'data' => null];
|
||||
}
|
||||
if($room_info['step'] == 2 || $room_info['step'] == 3){
|
||||
return ['code' => 0, 'msg' => '交友正在进行中!', 'data' => null];
|
||||
}
|
||||
//在麦位上的用户
|
||||
$pit_user = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => ['<',7],'user_id' => ['<>',0]])->count();
|
||||
|
||||
if($pit_user >= 2) {
|
||||
$data['room_id'] = $room_id;
|
||||
$data['end_time'] = time() + get_system_config_value('friend_time') * 60;
|
||||
$data['status'] = 1;
|
||||
|
||||
$id = db::name('vs_user_friending')->insertGetId($data);
|
||||
|
||||
if (!$id) {
|
||||
return ['code' => 0, 'msg' => '操作失败!', 'data' => null];
|
||||
}
|
||||
//修改房间状态
|
||||
db::name('vs_room')->where(['id' => $room_id])->update(['step' => 2]);
|
||||
|
||||
//推送给前端消息
|
||||
$text['text'] = '交友开始';
|
||||
$text['step'] = 2;
|
||||
model('api/Chat')->sendMsg(1039,$room_id,$text);
|
||||
return ['code' => 1, 'msg' => '操作成功!', 'data' => ['friend_id' => $id]];
|
||||
}else{
|
||||
return ['code' => 0, 'msg' => '不具备开始条件!', 'data' => null];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//延时
|
||||
public function delay($user_id,$room_id,$id,$delay_times){
|
||||
// 判断用户是否在主持麦
|
||||
$host = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => 9,'user_id' => $user_id])->find();
|
||||
if(!$host){
|
||||
return ['code' => 0, 'msg' => '没有权限操作', 'data' => null];
|
||||
}
|
||||
|
||||
if (!$id || !$room_id || $delay_times <= 0) {
|
||||
return ['code' => 0, 'msg' => '参数有误!', 'data' => null];
|
||||
}
|
||||
//修改结束 时间
|
||||
$res = db::name('vs_user_friending')->where('id', $id)->update(['end_time' => ['exp', 'end_time+' . $delay_times * 60]]);
|
||||
if(!$res){
|
||||
return ['code' => 0, 'msg' => '操作失败!', 'data' => null];
|
||||
}
|
||||
//推送延时
|
||||
$text['text'] = '延时';
|
||||
$text['end_time'] = db::name('vs_user_friending')->where('id', $id)->value('end_time');
|
||||
model('api/Chat')->sendMsg(1040,$room_id,$text);
|
||||
return ['code' => 1, 'msg' => '操作成功!', 'data' => null];
|
||||
}
|
||||
|
||||
//交友结束(结束牵手良缘)
|
||||
public function end_friend($user_id,$room_id,$id){
|
||||
// 判断用户是否在主持麦
|
||||
$host = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => 9,'user_id' => $user_id])->find();
|
||||
if(!$host){
|
||||
return ['code' => 0, 'msg' => '没有权限操作', 'data' => null];
|
||||
}
|
||||
|
||||
if (!$id || !$room_id) {
|
||||
return ['code' => 0, 'msg' => '参数有误!', 'data' => null];
|
||||
}
|
||||
|
||||
// 获取心动值最高的
|
||||
$originalPairs = db::name('user_friending_heart')
|
||||
->where(['room_id'=>$room_id,'friend_id'=>$id ,'status' =>1])
|
||||
->order('heart_value DESC')->find();
|
||||
$friend_heart_value = get_system_config_value('friend_heart_value');
|
||||
if($originalPairs && $originalPairs['heart_value'] >= $friend_heart_value){
|
||||
$return['is_cp'] = 1;
|
||||
$step = 3;//结束进入牵手良缘卡关系
|
||||
//心动值达到伐值 返回用户信息与关系列表
|
||||
$return['user1_id'] =$originalPairs['user1_id'];
|
||||
$return['user1_avatar'] = db::name('user')->where(['id'=>$originalPairs['user1_id']])->value('avatar');
|
||||
$return['user1_nickname'] = db::name('user')->where(['id'=>$originalPairs['user1_id']])->value('nickname');
|
||||
$return['user2_id'] =$originalPairs['user2_id'];
|
||||
$return['user2_avatar'] = db::name('user')->where(['id'=>$originalPairs['user2_id']])->value('avatar');
|
||||
$return['user2_nickname'] = db::name('user')->where(['id'=>$originalPairs['user2_id']])->value('nickname');
|
||||
$return['heart_value'] = $originalPairs['heart_value'];
|
||||
$return['heart_id'] = $originalPairs['id'];
|
||||
}else{
|
||||
$return = [];
|
||||
$return['is_cp'] = 0;
|
||||
$step = 1;//结束下一轮
|
||||
//所有人下麦
|
||||
$on_pit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => ['<',7],'user_id' => ['<>',0]])->select();
|
||||
if($on_pit){
|
||||
foreach ($on_pit as $pit){
|
||||
model('RoomPit')->DownPit($pit['user_id'], $room_id,$pit['pit_number']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//结束交友游戏
|
||||
if($step == 1){
|
||||
db::name('vs_user_friending')->where(['id' => $id])->update(['status' => 2]);
|
||||
}
|
||||
//推送给前端消息
|
||||
$text['text'] = $step == 1 ? '交友结束' : '牵手良缘';
|
||||
$text['step'] = $step;//1 等待邂逅 2 心动连线 3 牵手良缘
|
||||
model('api/Chat')->sendMsg(1039,$room_id,$text);
|
||||
// 修改当前交友阶段
|
||||
db::name('vs_room')->where(['id' => $room_id])->setField('step', $step);
|
||||
|
||||
return ['code' => 1, 'msg' => '操作成功!', 'data' => $return];
|
||||
}
|
||||
|
||||
//心动值超过配置值 创建关系
|
||||
public function createRelation($user_id,$room_id,$friend_id,$user1_id,$user2_id,$friending_config_id){
|
||||
|
||||
if (!$user1_id || !$user2_id || !$friend_id || !$friending_config_id || !$room_id || !$user_id) {
|
||||
return ['code' => 0, 'msg' => '参数有误!', 'data' => null];
|
||||
}
|
||||
|
||||
$user1 = min($user1_id, $user2_id);
|
||||
$user2 = max($user1_id, $user2_id);
|
||||
$friending_heart = db::name('user_friending_heart')
|
||||
->where(['room_id'=>$room_id,'friend_id'=>$friend_id ,'user1_id' =>$user1,'user2_id' => $user2])->find();
|
||||
$originalPairs = db::name('user_friending_heart')
|
||||
->where(['id'=>$friending_heart['id']])
|
||||
->save(['status' => 3,'friend_config_id' =>$friending_config_id]);
|
||||
if ($originalPairs) {
|
||||
$relation = db::name('vs_relation')->where('id',$friending_config_id)->value('name');
|
||||
if($friending_heart['heart_value'] >= get_system_config_value('friend_heart_create_room')){
|
||||
//创建小房间
|
||||
$room_id = model('api/Room')->user_create_room($user1,'的电影房',get_system_config_value('web_site').'/data/avatar/head_pic.png','交友房产生的一次性房间',7);
|
||||
if($room_id['code'] != 1){
|
||||
return ['code' => 0, 'msg' => 'cp电影房创建失败,请联系管理员','data' => null];
|
||||
}
|
||||
if($room_id['data']){
|
||||
$text['text'] = '交友结束并创建房间';
|
||||
$text['relation_name'] = $relation;
|
||||
$text['room_id'] = $room_id['data'];//前端用来让用户跳转的房间id
|
||||
$text['user1_id'] = $user1;//进小房间的用户id
|
||||
$text['user2_id'] = $user2;//进小房间的用户id
|
||||
model('api/Chat')->sendMsg(1041,$room_id,$text);
|
||||
}
|
||||
}else{
|
||||
$text['text'] = '交友结束未创建房间';
|
||||
$text['relation_name'] = $relation;
|
||||
model('api/Chat')->sendMsg(1041,$room_id,$text);
|
||||
}
|
||||
|
||||
// 修改当前交友阶段
|
||||
db::name('vs_room')->where(['id' => $room_id])->setField('step', 1);
|
||||
|
||||
//所有人下麦
|
||||
$on_pit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => ['<',7],'user_id' => ['<>',0]])->select();
|
||||
if($on_pit){
|
||||
foreach ($on_pit as $pit){
|
||||
model('RoomPit')->DownPit($pit['user_id'], $room_id,$pit['pit_number']);
|
||||
}
|
||||
}
|
||||
|
||||
$shijian = floor($friending_heart['heart_value']/get_system_config_value('friend_heart_value')) * get_system_config_value('friend_heart_times');
|
||||
$friendendtime = time() + $shijian * 3600;
|
||||
|
||||
//更新关系结束时间
|
||||
db::name('user_friending_heart')->where(['id'=>$friending_heart['id']])->update(['contact_end_time' => $friendendtime]);
|
||||
|
||||
//关系增加时间
|
||||
$room_auction = model('RoomAuction')->room_auction_create_or_add($user1_id,$user2_id,$friending_config_id,$shijian*3600,0);
|
||||
|
||||
//推送给前端消息
|
||||
$text['text'] = '交友结束';
|
||||
$text['step'] = 1;//1 等待邂逅 2 心动连线 3 牵手良缘
|
||||
model('api/Chat')->sendMsg(1039,$room_id,$text);
|
||||
return ['code' => 1, 'msg' => '创建关系成功', 'data' => ['id' => $id,'end_time' =>get_system_config_value('friend_room_timea')]];
|
||||
} else {
|
||||
return ['code' => 0, 'msg' => '创建关系失败!', 'data' => null];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//退出私密房间
|
||||
public function outRoom($user_id,$room_id){
|
||||
//查询在房间的用户
|
||||
$users = db::name('vs_room_visitor')->where(['room_id'=>$room_id])->select();
|
||||
|
||||
//退出房间
|
||||
foreach ($users as $v){
|
||||
//退出房间
|
||||
model('Room')->quit_room($v['user_id'], $room_id,$v['user_id']);
|
||||
}
|
||||
|
||||
//注销房间
|
||||
db::name('vs_room')->where(['id'=>$room_id])->update(['room_status'=>3]);
|
||||
|
||||
return ['code' => 1, 'msg' => '退出成功!', 'data' => null];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//房间内送礼
|
||||
/*
|
||||
* @param $uid 用户id
|
||||
@@ -17,7 +225,7 @@ class Friend extends Model
|
||||
* @param $room_id 房间id
|
||||
* @param $pit_number 坑位
|
||||
*/
|
||||
public function room_give_gift($uid, $to_uid, $gift_id, $gift_num, $from_type, $type, $room_id, $pit_number)
|
||||
public function room_give_gift($uid, $to_uid, $gift_id, $gift_num, $from_type, $type, $room_id, $pit_number,$heart_id)
|
||||
{
|
||||
$res = model('GiveGift')->give_gift($uid, $to_uid, $gift_id, $gift_num,$from_type,$type, $room_id,$pit_number);
|
||||
if($res['code'] != 1){
|
||||
|
||||
@@ -1213,7 +1213,7 @@ class Room extends Model
|
||||
|
||||
|
||||
//房间送礼
|
||||
public function room_gift($uid, $to_uid, $gift_id, $gift_num,$type, $room_id, $pit_number)
|
||||
public function room_gift($uid, $to_uid, $gift_id, $gift_num,$type, $room_id, $pit_number, $heart_id)
|
||||
{
|
||||
$label_type = model('Room')->get_room_label($room_id);
|
||||
if($label_type['code'] != 1){
|
||||
@@ -1248,7 +1248,7 @@ class Room extends Model
|
||||
}elseif($label_type['data']['type_id'] == 6){
|
||||
return model('GiveGift')->give_gift($uid, $to_uid, $gift_id, $gift_num,6,$type, $room_id,$pit_number);
|
||||
}elseif($label_type['data']['type_id'] == 7){
|
||||
return model('Friend')->room_give_gift($uid, $to_uid, $gift_id, $gift_num,2,$type, $room_id,$pit_number);
|
||||
return model('Friend')->room_give_gift($uid, $to_uid, $gift_id, $gift_num,2,$type, $room_id,$pit_number,$heart_id);
|
||||
}else{
|
||||
$res = model('GiveGift')->give_gift($uid, $to_uid, $gift_id, $gift_num,2,$type, $room_id,$pit_number);
|
||||
return $res;
|
||||
@@ -1631,7 +1631,7 @@ class Room extends Model
|
||||
}
|
||||
|
||||
//清除房间用户的魅力值
|
||||
public function clear_user_charm($user_id ,$room_id,$uid)
|
||||
public function clear_user_charm($user_id ,$room_id,$uid='')
|
||||
{
|
||||
//判断用户是否在主持麦
|
||||
// $is_host = db::name('vs_room_pit')->where(['room_id' => $room_id,'user_id' => $user_id,'pit_number' => 9])->find();
|
||||
|
||||
Reference in New Issue
Block a user