where(['user_id1' => $from_user_id,'user_id2' => $to_user_id,'status' => 1])->find(); if(!$rees){ $rees = Db::name('user_cp_zone')->where(['user_id1' => $to_user_id,'user_id2' => $from_user_id,'status' => 1])->find(); } if($rees){ $this->addCpLevel($from_user_id, $to_user_id, $room_id, $gift_id, $rees['id']); return 0; } $cp_gift_id = explode(',', get_system_config_value('cp_gift_id')); if(!in_array($gift_id, $cp_gift_id)){ return 0; } //查询收礼人有没有给送礼人送过cp礼物 status:0-待回应,1-建交成功,2-已取消 $res = Db::name('user_cp_find')->where(['from_user_id' => $to_user_id, 'to_user_id' => $from_user_id,'status' => 0])->find(); if($res){ //创建推送信息1:回应送礼 并创建Cp空间, $data = [ 'from_user_id' => $from_user_id, 'to_user_id' => $to_user_id, 'gift_id' => $gift_id, 'createtime' => time(), 'status' => 1 ]; Db::name('user_cp_find')->insert($data); //修改状态 Db::name('user_cp_find')->where(['id' => $res['id']])->update(['status' => 1]); //创建Cp空间 $data = [ 'user_id1' => $from_user_id, 'user_id2' => $to_user_id, 'createtime' => time(), 'status' => 1,//1-已建立Cp空间,2-已取消 'level' => 1, //经验值 'exp' => 0, ]; $re = Db::name('user_cp_zone')->insertGetId($data); $rees = Db::name('user_cp_zone')->where(['user_id1' => $from_user_id,'user_id2' => $to_user_id,'status' => 1])->find(); if(!$rees){ $rees = Db::name('user_cp_zone')->where(['user_id1' => $to_user_id,'user_id2' => $from_user_id,'status' => 1])->find(); } if($rees && $re != $rees['id']){ //修改状态 Db::name('user_cp_zone')->where(['id' => $rees['id']])->update(['status' => 2]); } //给前端推送 return 2; }else{//创建推送信息2:表达心动信号 //查询是否有相应的Cp空间 $ress = Db::name('user_cp_find') ->where(['status' => ['in',[0,1]]]) ->whereOr(['from_user_id' => $from_user_id]) ->whereOr(['to_user_id' => $from_user_id]) ->select(); if($ress){ //把状态改为2 status:0-待回应,1-建交成功,2-已取消, foreach ($ress as $v){ Db::name('user_cp_find')->where(['id' => $v['id']])->update(['status' => 2]); } } $data = [ 'from_user_id' => $from_user_id, 'to_user_id' => $to_user_id, 'gift_id' => $gift_id, 'createtime' => time(), ]; Db::name('user_cp_find')->insert($data); //给前端推送 return 1; } } /* * 送Cp礼物 增加Cp 经验 判断是否升级 * @param $from_user_id 送礼用户ID * @param $to_user_id 接收用户ID * @param $gift_id 礼物ID * @param $room_id 房间ID * @param $cp_zone_id Cp空间ID */ public function addCpLevel($from_user_id, $to_user_id, $room_id, $gift_id, $cp_zone_id) { $jinbi_arr = explode(',', get_system_config_value('cp_exp_rate')); $jinbi = $jinbi_arr[0]; $jinyan = $jinbi_arr[1]; $exp = round(db::name('vs_gift')->where(['gid' => $gift_id])->value('gift_price') / $jinbi * $jinyan, 2); $yuan_exp = Db::name('user_cp_zone')->where(['id' => $cp_zone_id])->value('exp'); //添加一个记录 $datas = [ 'room_id' => $room_id, 'from_user_id' => $from_user_id, 'to_user_id' => $to_user_id, 'gift_id' => $gift_id, 'cp_zone_id' => $cp_zone_id, 'exp' => $exp, 'exp_total' => $yuan_exp + $exp, 'createtime' => time(), ]; Db::name('user_cp_gift_log')->insert($datas); //判断是否升级 $level = Db::name('user_cp_level')->where(['change_value' => ['<=', $yuan_exp + $exp]])->order('change_value desc')->value('level'); if($level){ //修改Cp空间等级 $data['level'] = $level; } $data['exp'] = $yuan_exp + $exp; Db::name('user_cp_zone')->where(['id' => $cp_zone_id])->update($data); return true; } /* * Cp空间 * @param $user_id 用户ID */ public function cpZone($user_id) { $res = Db::name('user_cp_zone')->where(['user_id1' => $user_id,'status' => 1])->select(); if(!$res){ $res = Db::name('user_cp_zone')->where(['user_id2' => $user_id,'status' => 1])->select(); } if($res){ $res['user_info1'] = Db::name('user')->where(['id' => $res['user_id1']])->field('id user_id,nickname,avatar')->find(); $res['user_info2'] = Db::name('user')->where(['id' => $res['user_id2']])->field('id user_id,nickname,avatar')->find(); //升下一级所需经验值 $next_level_exp = Db::name('user_cp_level')->where(['level' => ['>',$res['level']]])->order('level asc')->value('change_value'); $res['next_level_exp'] = $next_level_exp - $res['exp']; //送礼记录 $res['gift_log'] = Db::name('user_cp_gift_log')->where(['cp_zone_id' => $res['id']])->select(); foreach ($res['gift_log'] as &$v){ $v['gift_name'] = Db::name('vs_gift')->where(['gid' => $v['gift_id']])->value('gift_name'); $v['from_user_info'] = Db::name('user')->where(['id' => $v['from_user_id']])->field('id user_id,nickname,avatar')->find(); $v['to_user_info'] = Db::name('user')->where(['id' => $v['to_user_id']])->field('id user_id,nickname,avatar')->find(); } return ['code' => 1, 'msg' => '成功', 'data' => $res ]; }else{ return ['code' => 0, 'msg' => '暂无Cp空间', 'data' => null]; } } /* * 用户的Cp空间 * @param $user_id 用户ID */ public function userCpZone($user_id) { $res = Db::name('user_cp_zone')->where(['user_id1' => $user_id,'status' => 1])->select(); if(!$res){ $res = Db::name('user_cp_zone')->where(['user_id2' => $user_id,'status' => 1])->select(); } if($res){ $res['user_info1'] = Db::name('user')->where(['id' => $res['user_id1']])->field('id user_id,nickname,avatar')->find(); $res['user_info2'] = Db::name('user')->where(['id' => $res['user_id2']])->field('id user_id,nickname,avatar')->find(); return ['code' => 1, 'msg' => '成功', 'data' => $res ]; }else{ return ['code' => 0, 'msg' => '暂无Cp空间', 'data' => null]; } } }