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]; } }