Files
yuyin-php/application/admin/model/Decorate.php

503 lines
18 KiB
PHP
Raw Normal View History

2025-08-08 14:45:40 +08:00
<?php
namespace app\admin\model;
use think\Model;
use think\Db;
class Decorate extends Model
{
//获取装扮列表
public function get_decorate_list($title, $type, $page = 1, $limit = 20)
{
$map = [];
if (!empty($type)) {
$map[] = ['type', '=', $type];
}
if (!empty($title)) {
$map[] = ['title', 'like', '%' . $title . '%'];
}
$map[] = ['is_delete', '=', 1];
$list = db::name('decorate')->where($map)->order('did desc')->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']);
}
$data = [];
$data['count'] = db::name('decorate')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
public function get_decorates_list()
{
$map = [];
$map[] = ['is_delete', '=', 1];
$map[] = ['type', 'in', [1,2,4,5]];
$list = db::name('decorate')->where($map)->order('did', 'asc')->select();
$data = [];
$data['count'] = db::name('decorate')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//编辑装扮
public function add_decorate_info($title, $type, $base_image, $play_image, $day, $price, $show_status, $file_type, $plays_image, $is_buy)
{
// $map = [];
// $map[] = ['did', '=', $did];
// $map[] = ['is_delete', '=', 1];
// $info = db::name('decorate')->where($map)->find();
// if (empty($info)) {
// return ['code' => 201, 'msg' => '信息不存在', 'data' => null];
// }
if (!in_array($type, [1, 2, 3, 4, 5,6,7,9])) {
return ['code' => 201, 'msg' => '装扮类型参数非法', 'data' => null];
}
$special_num = input('special_num', 0);
$data = [];
$data['title'] = $title;
$data['type'] = $type;
$data['base_image'] = $base_image;
// $data['play_image'] = $play_image;
$data['file_type'] = $file_type;
if($file_type == 1){
$data['play_image'] = $play_image;
}else{
$data['play_image'] = $plays_image;
}
// $data['day'] = $day;
// $data['price'] = $price;
$data['is_buy'] = $is_buy;
$data['show_status'] = $show_status;
$data['is_delete'] = 1;
$data['delete_time'] = 0;
$data['add_time'] = time();
$data['update_time'] = time();
if($type == 6 || $type == 7) {
if(empty($special_num)) {
return ['code' => 201, 'msg' => '请输入靓号号码', 'data' => null];
}
$map = [];
$map[] = ['special_num', '=', $special_num];
$map[] = ['is_delete', '=', 1];
$count = Db::name('decorate')->where($map)->count();
if($count > 0) {
return ['code' => 201, 'msg' => '靓号已存在', 'data' => null];
}
} else {
$special_num = 0;
}
$data['special_num'] = $special_num;
$status = db::name('decorate')->insert($data);
if ($status) {
return ['code' => 200, 'msg' => '添加成功', 'data' => null];
} else {
return ['code' => 201, 'msg' => '添加失败', 'data' => null];
}
}
//编辑装扮
public function get_decorate_info($did)
{
$map = [];
$map[] = ['did', '=', $did];
$map[] = ['is_delete', '=', 1];
$info = db::name('decorate')->where($map)->find();
if (empty($info)) {
return ['code' => 201, 'msg' => '信息不存在', 'data' => null];
}
$info['http_base_image'] = localpath_to_netpath($info['base_image']);
$info['http_play_image'] = localpath_to_netpath($info['play_image']);
$info['plays_image'] = $info['play_image'];
return ['code' => 200, 'msg' => '编辑成功', 'data' => $info];
}
public function edit_decorate_info($did, $title, $type, $base_image, $play_image, $show_status, $day, $price, $file_type, $plays_image, $is_buy)
{
$map = [];
$map[] = ['did', '=', $did];
$map[] = ['is_delete', '=', 1];
$info = db::name('decorate')->where($map)->find();
if (empty($info)) {
return ['code' => 201, 'msg' => '信息不存在', 'data' => null];
}
if (!in_array($type, [1, 2, 3, 4, 5, 6, 7,9])) {
return ['code' => 201, 'msg' => '装扮类型参数非法', 'data' => null];
}
if (!in_array($show_status, [1, 2])) {
return ['code' => 201, 'msg' => '显示状态参数非法', 'data' => null];
}
$special_num = input('special_num', 0);
//修改用户装扮表对应装扮类型
$data = [];
$data['type'] = $type;
$data['update_time'] = time();
$map = [];
$map[] = ['did', '=', $did];
db::name('user_decorate')->where($map)->update($data);
$data = [];
$data['title'] = $title;
$data['type'] = $type;
$data['base_image'] = $base_image;
// $data['play_image'] = $play_image;
$data['file_type'] = $file_type;
if($file_type == 1){
$data['play_image'] = $play_image;
}else{
$data['play_image'] = $plays_image;
}
$data['show_status'] = $show_status;
// $data['day'] = $day;
// $data['price'] = $price;
$data['is_buy'] = $is_buy;
$data['update_time'] = time();
if($type == 6 || $type == 7) {
if(empty($special_num)) {
return ['code' => 201, 'msg' => '请输入靓号号码', 'data' => null];
}
$map = [];
$map[] = ['special_num', '=', $special_num];
$map[] = ['is_delete', '=', 1];
$map[] = ['did', 'neq', $did];
$count = Db::name('decorate')->where($map)->count();
if($count > 0) {
return ['code' => 201, 'msg' => '靓号已存在', 'data' => null];
}
} else {
$special_num = 0;
}
$data['special_num'] = $special_num;
$map = [];
$map[] = ['did', '=', $did];
$status = db::name('decorate')->where($map)->update($data);
if ($status) {
return ['code' => 200, 'msg' => '编辑成功', 'data' => null];
} else {
return ['code' => 201, 'msg' => '编辑失败', 'data' => null];
}
}
//删除装扮
public function delete_decorate_info($did)
{
$map = [];
$map[] = ['did', '=', $did];
$map[] = ['is_delete', '=', 1];
$info = db::name('decorate')->where($map)->find();
if (empty($info)) {
return ['code' => 201, 'msg' => '信息不存在', 'data' => null];
}
$data = [];
$data['is_delete'] = 2;
$data['delete_time'] = time();
$map = [];
$map[] = ['did', '=', $did];
$status = db::name('decorate')->where($map)->update($data);
if ($status) {
return ['code' => 200, 'msg' => '删除成功', 'data' => null];
} else {
return ['code' => 201, 'msg' => '删除失败', 'data' => null];
}
}
//清理过期装扮
public function clear_user_decorate()
{
$map = [];
$map[] = ['end_time', '<', time()];
$map[] = ['is_perpetual', '=', 2];
$list = Db::name('user_decorate')->where($map)->select();
Db::startTrans();
try {
foreach($list as $v) {
if($v['type'] == 7 && $v['rid'] > 0 && $v['is_using'] == 1) {
Db::name('room')->where('rid', $v['rid'])->update(['pretty_room_number' => 0]);
}
if($v['type'] == 6 && $v['is_using'] == 1) {
Db::name('user')->where('uid', $v['uid'])->update(['special_uid' => 0]);
}
if($v['type'] == 7 || $v['type'] == 6) {
db::name('decorate')->where(['did' => $v['did']])->update(['is_user_buy' => 2]);
}
}
db::name('user_decorate')->where($map)->delete();
// 提交事务
Db::commit();
return ['code' => 200, 'msg' => "成功", 'data' => null];
} catch (\Exception $e) {
Db::rollback();
dump($e);
// 回滚事务
return ['code' => 201, 'msg' => "失败5", 'data' => null];
}
return '清理成功';
}
public function give_user_decorate($uid, $did, $day)
{
if ($day < 1) {
return ['code' => 201, 'msg' => '赠送至少一天', 'data' => null];
}
$map = [];
$map[] = ['did', '=', $did];
$map[] = ['is_delete', '=', 1];
$decorate_info = db::name('decorate')->where($map)->find();
if (empty($decorate_info)) {
return ['code' => 201, 'msg' => '装扮信息不存在', 'data' => null];
}
if($decorate_info['is_user_buy'] == 1){
return ['code' => 201, 'msg' => '该装扮已无法赠送', 'data' => null];
}
$user_info = db::name('user')->where('uid', $uid)->find();
if (empty($user_info)) {
return ['code' => 201, 'msg' => '用户信息不存在', 'data' => null];
}
$map = [];
$map[] = ['uid', '=', $uid];
$map[] = ['did', '=', $did];
$user_decorate_data = db::name('user_decorate')->where($map)->find();
if (empty($user_decorate_data)) {
$data = [];
$data['uid'] = $uid;
$data['did'] = $did;
$data['type'] = $decorate_info['type'];
$data['is_using'] = 2;
$now_time = time();
$data['special_num'] = $decorate_info['special_num'];
$data['end_time'] = $now_time + $day * 24 * 3600;
$data['add_time'] = $now_time;
$data['update_time'] = $now_time;
db::name('user_decorate')->insert($data);
} else {
$change_time = $day * 24 * 3600;
db::name('user_decorate')->where('udid', $user_decorate_data['udid'])->setInc('end_time', $change_time);
}
if($decorate_info['type'] == 6 || $decorate_info['type'] == 7){
Db::name('decorate')->where('did', $decorate_info['did'])->update(['is_user_buy' => 1, 'update_time' => time()]);
}
return ['code' => 200, 'msg' => '赠送成功', 'data' => null];
}
public function get_user_decorate_list($uid, $did, $type, $page, $page_limit)
{
$map = [];
if (!empty($uid)) {
$map[] = ['a.uid', '=', $uid];
}
if (!empty($did)) {
$map[] = ['a.did', '=', $did];
}
if (!empty($type)) {
$map[] = ['a.type', '=', $type];
}
$map[] = ['b.is_delete', '=', 1];
$model = Db::name('user_decorate')->alias('a')->join('yy_decorate b', 'a.did = b.did');
$model = $model->where($map);
$list = $model->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']);
$user_info = db::name('user')->find($v['uid']);
$v['nick_name'] = base64_decode($user_info['base64_nick_name']);
}
$data = [];
$data['count'] = $model->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
public function delete_user_decorate($udid)
{
return ['code' => 201, 'msg' => '无法操作', 'data' => null];
$map = [];
$map[] = ['udid', '=', $udid];
db::name('user_decorate')->where($map)->delete();
return ['code' => 200, 'msg' => '删除成功', 'data' => null];
}
public function get_head_decorate_list(){
$map = [];
$map[] = ['is_delete', '=', 1];
$map[] = ['type', '=', 1];
$list = db::name('decorate')->where($map)->order('did', 'asc')->select();
$data = [];
$data['count'] = db::name('decorate')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
public function get_mount_decorate_list(){
$map = [];
$map[] = ['is_delete', '=', 1];
$map[] = ['type', '=', 2];
$list = db::name('decorate')->where($map)->order('did', 'asc')->select();
$data = [];
$data['count'] = db::name('decorate')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
public function get_cp_tx_list(){
$map = [];
$map[] = ['is_delete', '=', 1];
$map[] = ['type', '=', 9];
$list = db::name('decorate')->where($map)->order('did', 'asc')->select();
$data = [];
$data['count'] = db::name('decorate')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
public function get_wind_decorate_list(){
$map = [];
$map[] = ['is_delete', '=', 1];
$map[] = ['type', '=', 3];
$list = db::name('decorate')->where($map)->order('did', 'asc')->select();
$data = [];
$data['count'] = db::name('decorate')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//获取装扮价位列表
public function get_decorate_price_list($did, $page = 1, $limit = 20)
{
$map = [];
$map[] = ['is_delete', '=', 1];
$map[] = ['did', '=', $did];
$list = db::name('decorate_price')->where($map)->order('id desc')->page($page, $limit)->select();
$data = [];
$data['count'] = db::name('decorate_price')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//添加装扮价位
public function add_decorate_price($did, $price, $day)
{
$map = [];
$map[] = ['did', '=', $did];
$map[] = ['is_delete', '=', 1];
$info = db::name('decorate')->where($map)->find();
if (empty($info)) {
return ['code' => 201, 'msg' => '信息不存在', 'data' => null];
}
//该装扮价位天数是否存在
$map = [];
$map[] = ['did', '=', $did];
$map[] = ['day', '=', $day];
$map[] = ['is_delete', '=', 1];
$decorate_price_info = db::name('decorate_price')->where($map)->find();
if($decorate_price_info){
return ['code' => 201, 'msg' => '该装扮天数已存在', 'data' => null];
}
$data = [];
$data['did'] = $did;
$data['price'] = $price;
$data['day'] = $day;
$data['is_delete'] = 1;
$data['add_time'] = time();
$status = db::name('decorate_price')->insert($data);
if ($status) {
return ['code' => 200, 'msg' => '添加成功', 'data' => null];
} else {
return ['code' => 201, 'msg' => '添加失败', 'data' => null];
}
}
//装扮价位详情
public function decorate_price_info($id)
{
$map = [];
$map[] = ['id', '=', $id];
$map[] = ['is_delete', '=', 1];
$info = db::name('decorate_price')->where($map)->find();
if (empty($info)) {
return ['code' => 201, 'msg' => '信息不存在', 'data' => null];
}
return ['code' => 200, 'msg' => '编辑成功', 'data' => $info];
}
//编辑装扮价位
public function edit_decorate_price($id, $price, $day)
{
$map = [];
$map[] = ['id', '=', $id];
$map[] = ['is_delete', '=', 1];
$info = db::name('decorate_price')->where($map)->find();
if (empty($info)) {
return ['code' => 201, 'msg' => '信息不存在', 'data' => null];
}
//该装扮价位天数是否存在
$map = [];
$map[] = ['did', '=', $info['did']];
$map[] = ['id', 'neq', $id];
$map[] = ['day', '=', $day];
$map[] = ['is_delete', '=', 1];
$decorate_price_info = db::name('decorate_price')->where($map)->find();
if($decorate_price_info){
return ['code' => 201, 'msg' => '该装扮天数已存在', 'data' => null];
}
$data = [];
$data['price'] = $price;
$data['day'] = $day;
$data['update_time'] = time();
$map = [];
$map[] = ['id', '=', $id];
$status = db::name('decorate_price')->where($map)->update($data);
if ($status) {
return ['code' => 200, 'msg' => '编辑成功', 'data' => null];
} else {
return ['code' => 201, 'msg' => '编辑失败', 'data' => null];
}
}
//删除装扮
public function del_decorate_price($id)
{
$map = [];
$map[] = ['id', '=', $id];
$map[] = ['is_delete', '=', 1];
$info = db::name('decorate_price')->where($map)->find();
if (empty($info)) {
return ['code' => 201, 'msg' => '信息不存在', 'data' => null];
}
$data = [];
$data['is_delete'] = 2;
$data['update_time'] = time();
$map = [];
$map[] = ['id', '=', $id];
$status = db::name('decorate_price')->where($map)->update($data);
if ($status) {
return ['code' => 200, 'msg' => '删除成功', 'data' => null];
} else {
return ['code' => 201, 'msg' => '删除失败', 'data' => null];
}
}
}