329 lines
13 KiB
PHP
329 lines
13 KiB
PHP
<?php
|
|
|
|
namespace app\api\model;
|
|
|
|
use think\Model;
|
|
use think\Db;
|
|
|
|
class UserDecorate extends Model
|
|
{
|
|
public function get_user_decorate_list($uid, $type, $page, $page_limit)
|
|
{
|
|
if (!in_array($type, [1, 2, 3, 4, 5, 6, 7])) {
|
|
return ['code' => 201, 'msg' => '装扮类型参数非法', 'data' => null];
|
|
}
|
|
$page = intval($page);
|
|
$page_limit = $page_limit < 30 ? $page_limit : 30;
|
|
$map = [];
|
|
$map[] = ['a.end_time', '>', time()];
|
|
$map[] = ['b.show_status', '=', 1];
|
|
$map[] = ['b.is_delete', '=', 1];
|
|
$map[] = ['a.type', '=', $type];
|
|
$map[] = ['a.uid', '=', $uid];
|
|
$model = Db::name('user_decorate')->alias('a')->join('yy_decorate b', 'a.did = b.did');
|
|
$model = $model->where($map);
|
|
$list = $model->field('a.udid,b.base_image,b.play_image,b.title,b.type,a.is_using,a.end_time')->order('udid desc')->page($page, $page_limit)->select();
|
|
foreach ($list as $k => &$v) {
|
|
$v['base_image'] = localpath_to_netpath($v['base_image']);
|
|
$v['play_image'] = localpath_to_netpath($v['play_image']);
|
|
}
|
|
return ['code' => 200, 'msg' => '获取成功', 'data' => $list];
|
|
}
|
|
//设置装扮
|
|
public function set_user_decorate($uid, $udid)
|
|
{
|
|
$map = [];
|
|
$map[] = ['udid', '=', $udid];
|
|
$map[] = ['uid', '=', $uid];
|
|
$info = Db::name('user_decorate')->where($map)->find();
|
|
if (empty($info)) {
|
|
return ['code' => 201, 'msg' => '装扮不存在', 'data' => null];
|
|
}
|
|
if ($info['end_time'] < time()) {
|
|
return ['code' => 201, 'msg' => '装扮已过期', 'data' => null];
|
|
}
|
|
|
|
Db::startTrans();
|
|
try {
|
|
//清理该类型装扮使用状态
|
|
$map = [];
|
|
$map[] = ['uid', '=', $uid];
|
|
$map[] = ['type', '=', $info['type']];
|
|
$data = [];
|
|
$data['is_using'] = 2;
|
|
$data['update_time'] = time();
|
|
$reslut = Db::name('user_decorate')->where($map)->update($data);
|
|
if (!$reslut) {
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => "设置失败", 'data' => null];
|
|
}
|
|
//设置使用中状态
|
|
$map = [];
|
|
$map[] = ['udid', '=', $udid];
|
|
$data = [];
|
|
$data['is_using'] = 1;
|
|
$data['update_time'] = time();
|
|
$reslut = Db::name('user_decorate')->where($map)->update($data);
|
|
if (!$reslut) {
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => "设置失败", 'data' => null];
|
|
}
|
|
// 提交事务
|
|
Db::commit();
|
|
return ['code' => 200, 'msg' => "设置成功", 'data' => null];
|
|
} catch (\Exception $e) {
|
|
// 回滚事务
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => "设置失败", 'data' => null];
|
|
}
|
|
}
|
|
//取消装扮
|
|
public function cancel_user_decorate($uid, $udid)
|
|
{
|
|
|
|
$map = [];
|
|
$map[] = ['udid', '=', $udid];
|
|
$map[] = ['uid', '=', $uid];
|
|
$data = [];
|
|
$data['is_using'] = 2;
|
|
$data['update_time'] = time();
|
|
$reslut = Db::name('user_decorate')->where($map)->update($data);
|
|
|
|
return ['code' => 200, 'msg' => "取消成功", 'data' => null];
|
|
}
|
|
|
|
//当前装扮列表
|
|
public function get_decorate_list(){
|
|
//当前装扮信息
|
|
$decorate_array = [];
|
|
$map = [];
|
|
$map[] = ['is_delete', '=', 1];
|
|
$decorate_list = db::name('decorate')->where($map)->order('did asc')->select();
|
|
foreach ($decorate_list as $a => &$b){
|
|
$decorate_array[$b['did']] = $b;
|
|
}
|
|
|
|
$level_decorate_array = [];
|
|
//等级列表
|
|
$map = [];
|
|
$map[] = ['is_delete', '=', 1];
|
|
$map[] = ['type', '=', 2];
|
|
$level_list = db::name('user_level')->where($map)->order('level asc')->select();
|
|
foreach ($level_list as $k => &$v){
|
|
$level_decorate_data = [];
|
|
$level_decorate_data['level'] = $v['level'] - 1;
|
|
$level_decorate_data['level_image'] = localpath_to_netpath($v['image']);
|
|
if(!empty($v['head_decorate_id'])){
|
|
$data = [];
|
|
// $data['level'] = $v['level'];
|
|
$data['title'] = $decorate_array[$v['head_decorate_id']]['title'];
|
|
$data['base_image'] = localpath_to_netpath($decorate_array[$v['head_decorate_id']]['base_image']);
|
|
$data['play_image'] = localpath_to_netpath($decorate_array[$v['head_decorate_id']]['play_image']);
|
|
$level_decorate_data['head_decorate'] = $data;
|
|
}
|
|
|
|
if(!empty($v['mount_decorate_id'])){
|
|
$data = [];
|
|
// $data['level'] = $v['level'];
|
|
$data['title'] = $decorate_array[$v['mount_decorate_id']]['title'];
|
|
$data['base_image'] = localpath_to_netpath($decorate_array[$v['mount_decorate_id']]['base_image']);
|
|
$data['play_image'] = localpath_to_netpath($decorate_array[$v['mount_decorate_id']]['play_image']);
|
|
$level_decorate_data['mount_decorate'] = $data;
|
|
}
|
|
|
|
if(!empty($v['head_decorate_id']) || !empty($v['mount_decorate_id'])){
|
|
$level_decorate_array[] = $level_decorate_data;
|
|
}
|
|
|
|
}
|
|
|
|
// $data_array = [];
|
|
// $data_array['head_decorate_array'] = $head_decorate_array;
|
|
// $data_array['mount_decorate_array'] = $mount_decorate_array;
|
|
return ['code' => 200, 'msg' => '获取成功', 'data' => $level_decorate_array];
|
|
}
|
|
|
|
|
|
//用户装扮列表
|
|
public function user_decorate_list($uid, $type, $page, $page_limit){
|
|
$page = intval($page);
|
|
$page_limit = $page_limit < 30 ? $page_limit : 30;
|
|
|
|
$user_info = db::name('user')->field('uid, sex, nick_name, base64_nick_name, head_pic, special_uid')->find($uid);
|
|
if(!$user_info){
|
|
return ['code' => 201, 'msg' => '参数错误', 'data' => null];
|
|
}
|
|
$user_info['nick_name'] = mb_convert_encoding(base64_decode($user_info['base64_nick_name']), 'UTF-8', 'UTF-8');
|
|
$user_info['head_pic'] = localpath_to_netpath($user_info['head_pic']);
|
|
|
|
$map = [];
|
|
$map[] = ['a.uid', '=', $uid];
|
|
$map[] = ['a.type', '=', $type];
|
|
$map[] = ['a.end_time', '>=', time()];
|
|
$user_decorate_data = db::name('user_decorate')->alias('a')->join('yy_decorate b', 'a.did = b.did')->where($map)->field('a.udid, a.did, a.uid, b.type, b.title, b.base_image, a.end_time, a.is_using')->order('udid asc')->page($page, $page_limit)->select();
|
|
foreach ($user_decorate_data as $k => &$v){
|
|
$v['base_image'] = localpath_to_netpath($v['base_image']);
|
|
}
|
|
|
|
$data = [];
|
|
$data['user_info'] = $user_info;
|
|
$data['list'] = $user_decorate_data;
|
|
|
|
return ['code' => 200, 'msg' => "获取成功", 'data' => $data];
|
|
}
|
|
|
|
//获取用户头像框详情
|
|
public function get_user_avatar_info($uid)
|
|
{
|
|
$data = [];
|
|
//获取用户头像框
|
|
$map = [];
|
|
$map[] = ['a.is_using', '=', 1];
|
|
$map[] = ['a.uid', '=', $uid];
|
|
$map[] = ['a.end_time', '>', time()];
|
|
$map[] = ['a.type', '=', 1];
|
|
$map[] = ['b.show_status', '=', 1];
|
|
$map[] = ['b.is_delete', '=', 1];
|
|
$model = Db::name('user_decorate')->alias('a')->join('yy_decorate b', 'a.did = b.did');
|
|
$user_decorate_info = $model->field('b.base_image,b.play_image,b.title,a.uid')->where($map)->find();
|
|
$data['avatar_play_image'] = '';
|
|
if (!empty($user_decorate_info)) {
|
|
$data['avatar_play_image'] = localpath_to_netpath($user_decorate_info['play_image']);
|
|
}
|
|
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
|
|
}
|
|
|
|
//使用、放弃使用装扮
|
|
public function user_use_decorate($uid, $udid){
|
|
$user_info = db::name('user')->find($uid);
|
|
if(!$user_info){
|
|
return ['code' => 201, 'msg' => '参数错误', 'data' => null];
|
|
}
|
|
|
|
//是否有该装扮
|
|
$map = [];
|
|
$map[] = ['uid', '=', $uid];
|
|
$map[] = ['udid', '=', $udid];
|
|
$user_decorate_info = db::name('user_decorate')->where($map)->find();
|
|
if(!$user_decorate_info){
|
|
return ['code' => 201, 'msg' => '用户没有该装扮', 'data' => null];
|
|
}
|
|
|
|
if($user_decorate_info['end_time'] < time()){
|
|
return ['code' => 201, 'msg' => '该装扮已过期', 'data' => null];
|
|
}
|
|
|
|
$decorate_info = db::name('decorate')->find($user_decorate_info['did']);
|
|
if(!$decorate_info){
|
|
return ['code' => 201, 'msg' => '该装扮不存在', 'data' => null];
|
|
}
|
|
$rid = 0;
|
|
if($decorate_info['type'] == 7) {
|
|
$rid = Db::name('room')->where('room_owner_uid', $uid)->where('is_delete', 1)->value('rid');
|
|
if(empty($rid)) {
|
|
return ['code' => 201, 'msg' => '没有房间不能设置房间靓号', 'data' => null];
|
|
}
|
|
}
|
|
Db::startTrans();
|
|
try {
|
|
if($user_decorate_info['is_using'] == 1) {//如果使用中则放弃使用
|
|
|
|
$is_using = 2;
|
|
$update = [];
|
|
$update['is_using'] = 2;
|
|
$update['update_time'] = time();
|
|
$reslut = db::name('user_decorate')->where('udid', $udid)->update($update);
|
|
if($user_decorate_info['type'] == 6) {
|
|
Db::name('user')->where('uid', $uid)->update(['special_uid' => 0]);
|
|
}
|
|
if($user_decorate_info['type'] == 7) {
|
|
if($user_decorate_info['rid'] > 0) {
|
|
Db::name('user')->where('rid', $user_decorate_info['rid'])->update(['pretty_room_number' => 0]);
|
|
}
|
|
}
|
|
}else{
|
|
$is_using = 1;
|
|
$map = [];
|
|
$map[] = ['uid', '=', $uid];
|
|
$map[] = ['type', '=', $user_decorate_info['type']];
|
|
$map[] = ['is_using', '=', 1];
|
|
$user_decorate_data = db::name('user_decorate')->where($map)->find();
|
|
if($user_decorate_data){
|
|
$update = [];
|
|
$update['is_using'] = 2;
|
|
$update['update_time'] = time();
|
|
if($user_decorate_data['type'] == 7 && $user_decorate_data['rid'] > 0) {
|
|
$update['rid'] = 0;
|
|
}
|
|
$reslut = db::name('user_decorate')->where($map)->update($update);
|
|
if(!$reslut){
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => '请重试2', 'data' => null];
|
|
}
|
|
}
|
|
$update_date = [];
|
|
$update_date['is_using'] = 1;
|
|
$update_date['update_time'] = time();
|
|
if($user_decorate_info['type'] == 7) {
|
|
$update_date['rid'] = $rid;
|
|
|
|
}
|
|
$reslut = db::name('user_decorate')->where('udid', $udid)->update($update_date);
|
|
}
|
|
|
|
if(!$reslut){
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => '请重试1', 'data' => null];
|
|
}
|
|
|
|
$data = [];
|
|
$data['udid'] = $udid;
|
|
$data['is_using'] = $is_using;
|
|
if($user_decorate_info['type'] == 7) {
|
|
Db::name('room')->where('rid', $rid)->update(['pretty_room_number' => $user_decorate_info['special_num']]);
|
|
}
|
|
if($user_decorate_info['type'] == 6) {
|
|
Db::name('user')->where('uid', $uid)->update(['special_uid' => $user_decorate_info['special_num']]);
|
|
}
|
|
Db::name('user_decorate')->where('udid', $user_decorate_info['udid'])->update($data);
|
|
// 提交事务
|
|
Db::commit();
|
|
return ['code' => 200, 'msg' => "操作成功", 'data' => $data];
|
|
} catch (\Exception $e) {
|
|
dump($e);
|
|
// 回滚事务
|
|
Db::rollback();
|
|
return ['code' => 201, 'msg' => "请重试", 'data' => null];
|
|
}
|
|
}
|
|
|
|
//购买装扮记录
|
|
public function user_pay_decorate_log($uid, $page, $page_limit){
|
|
$page = intval($page);
|
|
$page_limit = $page_limit < 30 ? $page_limit : 30;
|
|
|
|
$map = [];
|
|
$map[] = ['a.uid', '=', $uid];
|
|
$map[] = ['a.from_type', '=', 2];
|
|
$list = db::name('user_decorate_log')->alias('a')->join('yy_decorate b', 'a.did = b.did')->field('a.udid, a.uid, a.type, a.did, b.title, a.add_time,a.pay_price')->where($map)->order('a.udid desc')->page($page, $page_limit)->select();
|
|
foreach ($list as $k => &$v){
|
|
$type_name = '';
|
|
if($v['type'] == 1){
|
|
$type_name = '头像框';
|
|
}else if($v['type'] == 3){
|
|
$type_name = '坐骑';
|
|
}else if($v['type'] == 2){
|
|
$type_name = '气泡';
|
|
}else if($v['type'] == 4){
|
|
$type_name = '光圈';
|
|
}
|
|
$v['content'] = $v['title'] . '-' . $type_name;
|
|
}
|
|
|
|
return ['code' => 200, 'msg' => '获取成功', 'data' => $list];
|
|
}
|
|
|
|
|
|
|
|
}
|