220 lines
9.0 KiB
PHP
220 lines
9.0 KiB
PHP
<?php
|
|
|
|
namespace app\api\model;
|
|
|
|
use think\Db;
|
|
use think\Model;
|
|
|
|
class GiftWall extends Model
|
|
{
|
|
|
|
//礼物列表
|
|
public function get_room_gift_list($uid, $type){
|
|
$user_info = db::name('user')->field('uid, integral')->find($uid);
|
|
if(!$user_info){
|
|
return ['code' => 201, 'msg' => '参数错误', 'data' => null];
|
|
}
|
|
|
|
$user_pack_gift_total_price = 0;
|
|
$map = [];
|
|
$map[] = ['is_show', '=', 1];
|
|
$map[] = ['is_can_buy', '=', 1];
|
|
$map[] = ['is_delete', '=', 1];
|
|
if($type == 2){//背包
|
|
$map = [];
|
|
// $map[] = ['is_show', '=', 1];
|
|
$map[] = ['is_delete', '=', 1];
|
|
$gift_list = db::name('gift')->where($map)->field('gid, gift_type, gift_name, gift_price, base_image, play_image, is_public_server, is_public_screen,tag_name')->order('sort desc')->select();
|
|
|
|
$map = [];
|
|
$map[] = ['uid', '=', $uid];
|
|
$map[] = ['num', '>', 0];
|
|
$map[] = ['is_use_give', '=', 1];
|
|
$user_pack_gift_list = db::name('user_gift_pack')->field('gid,num')->where($map)->select();
|
|
$gift_data = [];
|
|
foreach ($gift_list as $k => $v) {
|
|
$v['play_image'] = localpath_to_netpath($v['play_image']);
|
|
$v['base_image'] = localpath_to_netpath($v['base_image']);
|
|
$gift_data[$v['gid']] = $v;
|
|
}
|
|
|
|
// $user_pack_gift_total_price = 0;
|
|
foreach ($user_pack_gift_list as $m => &$n) {
|
|
$n['gift_name'] = $gift_data[$n['gid']]['gift_name'];
|
|
$n['play_image'] = $gift_data[$n['gid']]['play_image'];
|
|
$n['base_image'] = $gift_data[$n['gid']]['base_image'];
|
|
$n['gift_price'] = $gift_data[$n['gid']]['gift_price'];
|
|
$user_pack_gift_total_price += $n['gift_price'] * $n['num'];
|
|
}
|
|
array_multisort(array_column($user_pack_gift_list, 'gift_price'), SORT_ASC, $user_pack_gift_list);
|
|
|
|
$gift_list = $user_pack_gift_list;
|
|
} else{// 1普通 3新人 4幸运礼物 5盲盒 6爵位 7麦位 8挂件
|
|
$map[] = ['type', '=', $type];
|
|
$gift_list = db::name('gift')->where($map)->field('gid, gift_type, gift_name, gift_price, base_image, play_image, is_public_server, is_public_screen,tag_name,sort')->order(['sort'=>'desc','gift_price'=> 'asc'])->select();
|
|
$gift_data = [];
|
|
foreach ($gift_list as $k => $v){
|
|
$v['base_image'] = localpath_to_netpath($v['base_image']);
|
|
$v['play_image'] = localpath_to_netpath($v['play_image']);
|
|
|
|
$gift_data[$v['gid']] = $v;
|
|
}
|
|
$gift_list = array_values($gift_data);
|
|
}
|
|
|
|
$data = [];
|
|
$data['gift_list'] = $gift_list;
|
|
$data['integral'] = (int)$user_info['integral'];
|
|
$data['user_pack_gift_price'] = $user_pack_gift_total_price;
|
|
|
|
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
|
|
}
|
|
|
|
//记录收礼物墙
|
|
public function user_receive_gift_wall($uid, $gid, $num, $send_uid){
|
|
$map = [];
|
|
$map[] = ['uid', '=', $uid];
|
|
$map[] = ['send_uid', '=', $send_uid];
|
|
$map[] = ['gid', '=', $gid];
|
|
$user_receive_gift_wall = db::name('user_receive_gift_wall')->where($map)->find();
|
|
if($user_receive_gift_wall){
|
|
$reslut = db::name('user_receive_gift_wall')->where('id', $user_receive_gift_wall['id'])->inc('num', $num)->update(['update_time' => time()]);
|
|
}else{
|
|
$insert = [];
|
|
$insert['uid'] = $uid;
|
|
$insert['send_uid'] = $send_uid;
|
|
$insert['gid'] = $gid;
|
|
$insert['num'] = $num;
|
|
$insert['update_time'] = time();
|
|
$reslut = db::name('user_receive_gift_wall')->insert($insert);
|
|
}
|
|
if($reslut){
|
|
return ['code' => 200, 'msg' => '成功', 'data' => null];
|
|
}else{
|
|
return ['code' => 201, 'msg' => '失败', 'data' => null];
|
|
}
|
|
|
|
}
|
|
|
|
//记录送礼物墙
|
|
public function user_send_gift_wall($uid, $gid, $num, $receive_uid){
|
|
$map = [];
|
|
$map[] = ['uid', '=', $uid];
|
|
$map[] = ['receive_uid', '=', $receive_uid];
|
|
$map[] = ['gid', '=', $gid];
|
|
$user_send_gift_wall = db::name('user_send_gift_wall')->where($map)->find();
|
|
if($user_send_gift_wall){
|
|
$reslut = db::name('user_send_gift_wall')->where('id', $user_send_gift_wall['id'])->inc('num', $num)->update(['update_time' => time()]);
|
|
}else{
|
|
$insert = [];
|
|
$insert['uid'] = $uid;
|
|
$insert['receive_uid'] = $receive_uid;
|
|
$insert['gid'] = $gid;
|
|
$insert['num'] = $num;
|
|
$insert['update_time'] = time();
|
|
$reslut = db::name('user_send_gift_wall')->insert($insert);
|
|
}
|
|
if($reslut){
|
|
return ['code' => 200, 'msg' => '成功', 'data' => null];
|
|
}else{
|
|
return ['code' => 201, 'msg' => '失败', 'data' => null];
|
|
}
|
|
|
|
}
|
|
|
|
|
|
//记录房间礼物墙
|
|
public function room_gift_wall($rid, $gid, $num, $gift_total_price){
|
|
$map = [];
|
|
$map[] = ['rid', '=', $rid];
|
|
$map[] = ['gid', '=', $gid];
|
|
$room_gift_wall = db::name('room_gift_wall')->where($map)->find();
|
|
if($room_gift_wall){
|
|
$reslut = db::name('room_gift_wall')->where('id', $room_gift_wall['id'])->inc('num', $num)->inc('gift_total_price', $gift_total_price)->update(['update_time' => time()]);
|
|
}else{
|
|
$insert = [];
|
|
$insert['rid'] = $rid;
|
|
$insert['gid'] = $gid;
|
|
$insert['num'] = $num;
|
|
$insert['gift_total_price'] = $gift_total_price;
|
|
$insert['update_time'] = time();
|
|
$reslut = db::name('room_gift_wall')->insert($insert);
|
|
}
|
|
if($reslut){
|
|
return ['code' => 200, 'msg' => '成功', 'data' => null];
|
|
}else{
|
|
return ['code' => 201, 'msg' => '失败', 'data' => null];
|
|
}
|
|
|
|
}
|
|
|
|
|
|
//用户点亮礼物墙
|
|
public function get_user_illume_gift_wall($uid, $user_id, $page, $page_limit){
|
|
$page = intval($page);
|
|
$page_limit = $page_limit < 100 ? $page_limit : 100;
|
|
|
|
if(empty($user_id)){
|
|
$user_id = $uid;
|
|
}
|
|
|
|
$user_info = db::name('user')->find($user_id);
|
|
if(!$user_info){
|
|
return ['code' => 201, 'msg' => '参数错误', 'data' => null];
|
|
}
|
|
|
|
$map = [];
|
|
$map[] = ['a.uid', '=', $user_id];
|
|
$map[] = ['b.is_delete', '=', 1];
|
|
$map[] = ['b.is_show', '=', 1];
|
|
$list = db::name('user_receive_gift_wall')->alias('a')->join('yy_gift b', 'a.gid = b.gid')->where($map)->field('a.gid,b.gift_name,b.base_image,b.gift_price,sum(a.num) as num')->group('a.gid')->order('b.gift_price asc')->page($page, $page_limit)->select();
|
|
|
|
foreach ($list as $k => &$v){
|
|
$v['base_image'] = localpath_to_netpath($v['base_image']);
|
|
$where = [];
|
|
$where[] = ['a.uid', '=', $user_id];
|
|
$where[] = ['a.gid', '=', $v['gid']];
|
|
$user_send_gift_info = db::name('user_receive_gift_wall')->alias('a')->join('yy_user b', 'a.send_uid = b.uid')->where($where)->field('a.send_uid as uid,b.base64_nick_name, b.head_pic,a.num')->order('a.num desc')->find();
|
|
$user_send_gift_info['nick_name'] = mb_convert_encoding(base64_decode($user_send_gift_info['base64_nick_name']), 'UTF-8', 'UTF-8');
|
|
$user_send_gift_info['head_pic'] = localpath_to_netpath($user_send_gift_info['head_pic']);
|
|
$v['max_gift_num_user'] = $user_send_gift_info;
|
|
}
|
|
|
|
|
|
return ['code' => 200, 'msg' => '获取成功', 'data' => $list];
|
|
}
|
|
|
|
//用户未点亮礼物墙
|
|
public function get_user_unillume_gift_wall($uid, $user_id, $page, $page_limit){
|
|
$page = intval($page);
|
|
$page_limit = $page_limit < 100 ? $page_limit : 100;
|
|
|
|
if(empty($user_id)){
|
|
$user_id = $uid;
|
|
}
|
|
|
|
$user_info = db::name('user')->find($user_id);
|
|
if(!$user_info){
|
|
return ['code' => 201, 'msg' => '参数错误', 'data' => null];
|
|
}
|
|
|
|
$receive_gift_id_array = db::name('user_receive_gift_wall')->where('uid', $user_id)->group('gid')->column('gid');
|
|
// dump($receive_gift_id_array);exit;
|
|
|
|
$map = [];
|
|
$map[] = ['is_delete', '=', 1];
|
|
$map[] = ['is_show', '=', 1];
|
|
$map[] = ['gid', 'not in', $receive_gift_id_array];
|
|
$list = db::name('gift')->where($map)->field('gid, gift_name, base_image, gift_price')->order('gift_price asc')->page($page, $page_limit)->select();
|
|
foreach ($list as $k => &$v){
|
|
$v['base_image'] = localpath_to_netpath($v['base_image']);
|
|
}
|
|
|
|
|
|
return ['code' => 200, 'msg' => '获取成功', 'data' => $list];
|
|
}
|
|
|
|
|
|
|
|
}
|