初始化代码-发现错误修改

This commit is contained in:
2025-08-08 14:45:40 +08:00
parent 48ee8e54cc
commit 41715e4883
53725 changed files with 810530 additions and 1 deletions

7
.gitignore vendored Normal file
View File

@@ -0,0 +1,7 @@
/.idea
/.vscode
#/vendor
*.log
#thinkphp
#.env
.DS_Store

1
.htaccess Normal file
View File

@@ -0,0 +1 @@

42
.travis.yml Normal file
View File

@@ -0,0 +1,42 @@
sudo: false
language: php
branches:
only:
- stable
cache:
directories:
- $HOME/.composer/cache
before_install:
- composer self-update
install:
- composer install --no-dev --no-interaction --ignore-platform-reqs
- zip -r --exclude='*.git*' --exclude='*.zip' --exclude='*.travis.yml' ThinkPHP_Core.zip .
- composer require --update-no-dev --no-interaction "topthink/think-image:^1.0"
- composer require --update-no-dev --no-interaction "topthink/think-migration:^1.0"
- composer require --update-no-dev --no-interaction "topthink/think-captcha:^1.0"
- composer require --update-no-dev --no-interaction "topthink/think-mongo:^1.0"
- composer require --update-no-dev --no-interaction "topthink/think-worker:^1.0"
- composer require --update-no-dev --no-interaction "topthink/think-helper:^1.0"
- composer require --update-no-dev --no-interaction "topthink/think-queue:^1.0"
- composer require --update-no-dev --no-interaction "topthink/think-angular:^1.0"
- composer require --dev --update-no-dev --no-interaction "topthink/think-testing:^1.0"
- zip -r --exclude='*.git*' --exclude='*.zip' --exclude='*.travis.yml' ThinkPHP_Full.zip .
script:
- php think unit
deploy:
provider: releases
api_key:
secure: TSF6bnl2JYN72UQOORAJYL+CqIryP2gHVKt6grfveQ7d9rleAEoxlq6PWxbvTI4jZ5nrPpUcBUpWIJHNgVcs+bzLFtyh5THaLqm39uCgBbrW7M8rI26L8sBh/6nsdtGgdeQrO/cLu31QoTzbwuz1WfAVoCdCkOSZeXyT/CclH99qV6RYyQYqaD2wpRjrhA5O4fSsEkiPVuk0GaOogFlrQHx+C+lHnf6pa1KxEoN1A0UxxVfGX6K4y5g4WQDO5zT4bLeubkWOXK0G51XSvACDOZVIyLdjApaOFTwamPcD3S1tfvuxRWWvsCD5ljFvb2kSmx5BIBNwN80MzuBmrGIC27XLGOxyMerwKxB6DskNUO9PflKHDPI61DRq0FTy1fv70SFMSiAtUv9aJRT41NQh9iJJ0vC8dl+xcxrWIjU1GG6+l/ZcRqVx9V1VuGQsLKndGhja7SQ+X1slHl76fRq223sMOql7MFCd0vvvxVQ2V39CcFKao/LB1aPH3VhODDEyxwx6aXoTznvC/QPepgWsHOWQzKj9ftsgDbsNiyFlXL4cu8DWUty6rQy8zT2b4O8b1xjcwSUCsy+auEjBamzQkMJFNlZAIUrukL/NbUhQU37TAbwsFyz7X0E/u/VMle/nBCNAzgkMwAUjiHM6FqrKKBRWFbPrSIixjfjkCnrMEPw=
file:
- ThinkPHP_Core.zip
- ThinkPHP_Full.zip
skip_cleanup: true
on:
tags: true

1
1
View File

@@ -1 +0,0 @@
1

26
404.html Normal file
View File

@@ -0,0 +1,26 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title>404</title>
<style>
body{
background-color:#444;
font-size:14px;
}
h3{
font-size:60px;
color:#eee;
text-align:center;
padding-top:30px;
font-weight:normal;
}
</style>
</head>
<body>
<h3>404您请求的文件不存在!</h3>
</body>
</html>

946
CHANGELOG.md Normal file
View File

@@ -0,0 +1,946 @@
## V5.1.41 LTS2021-1-11
本版本为PHP8兼容更新
## V5.1.40 LTS2020-10-09
本版本为常规更新,主要包括:
* 改进redis驱动`has`方法
* 修正XA事务
* 修正`HasManyThrough`关联
* 增加mysql json类型字段->>方式获取支持
* 改进路由加载 避免加载编辑器临时文件影响
* 修复关联模型的属性直接附加到当前模型,当关联模型字段名为name时获取的值为模型的属性name值
* 修复多态关联预加载`field`无效
* 改进Collection类的`column`方法的PHP兼容性问题
* 改进mysql驱动
* 改进`parseclosure`方法
* SoftDelete删除条件做空判断
* 改进验证类`append`方法
## V5.1.39 LTS2019-11-18
本次更新为常规更新,主要包括:
* 修正`memcached`驱动
* 改进`HasManyThrough`关联查询
* 改进`Request``isJson`方法
* 改进关联查询
* 改进`redis`驱动
* 增加 Model类`getWhere`方法对复合主键的支持
* 改进`newQuery`方法
* 改进闭包查询的参数绑定
* 修正`Validate`
* 修复某些情况下URL会多一个冒号
* 调整composer.json
* 修复使用`Cache::clear()`时,报错缓存文件不存在问题
* 使用File类的unlink方法进行文件删除
* 改进`paraseData`方法
* 修正image验证方法
* 改进Url生成
* 改进空操作对数字的支持
* 改进一处PHP7.4兼容性问题
## V5.1.38 LTS2019-8-8
本次更新为常规更新,主要包括:
* `Request`类增加`isJson`方法
* 改进浮点型查询
* 修正关联查询关联外键为空的查询错误
* 远程一对多支持关联统计和预载入查询
* 远程一对多关联支持`has`/`hasWhere`查询
* 优化`parseIn`解析
* 改进`parseLike`查询
* 改进Url生成
* 改进模型的`toArray`方法
* 修正`notIn`查询
* 改进`JSON`字段查询
* 改进Controller类`display`/`fetch`方法返回`ViewResponse`对象
* 改进`param`方法
* 改进`mysql`驱动`getExplain`方法
* 改进时间查询
* 改进模型关联的`has`/`hasWhere`方法对软删除的支持
* 修正社区反馈的BUG
## V5.1.37 LTS2019-5-26
本次更新为常规更新,主要更新如下:
* 改进关联数据更新
* 修正关联动态获取器
* 改进`redis`驱动
* 修复验证规则里面出现二维数组时的错误
* 改进跨域请求支持
* 完善模型`hidden`方法对关联属性的支持
* 改进`where`查询方法传入`Query`对象的支持`bind`数据
* 改进数据集对象的`load`方法
* 修正缓存类`clear`方法对`tag`的支持
## V5.1.36 LTS2019-4-28
本次更新为常规更新,主要更新如下:
* 修正`chunk`方法一处异常抛出的错误
* 修正模型输出的`visible`
* 改进环境变量加载
* 改进命令行日志的`level`配置支持
* 修复设置有缓存前缀时,无法清空缓存标签的问题
* HasMony对象`saveAll`方法兼容`Collection`格式参数格式
* 修正`whereOr`查询使用字符串的问题
* 改进`dateFormat`设置对写入数据的影响
* 修正查询缓存
* 记住指定的跳转地址
* 改进软删除
* 改进聚合查询SQL去除limit 1
* 改进缓存驱动
## V5.1.35 LTS2019-3-2
本次主要为常规更新,修正了一些反馈的问题。
* 修正验证类自定义验证方法执行两次的问题
* 模型增加`isEmpty`方法用于判断是否空模型
* 改进获取器对`append`的支持
* 修正一对多关联的`withCount`自关联问题
* facade类注释调整
* 改进关联属性的`visible``hidden`判断
* 修正路由分组的`MISS`路由
* 改进pgsql.sql
## V5.1.34 LTS2019-1-30
本次更新为常规更新,修正了一些反馈的问题。
* 改进Request类的`has`方法,支持`patch`
* 改进`unique`验证的多条件支持
* 修复自定义上传验证,检测文件大小
* 改进`in`查询支持表达式
* 改进路由的`getBind`方法
* 改进验证类的错误信息获取
* 改进`response`助手函数默认值
* 修正mysql的`regexp`查询
* 改进模型类型强制转换写入对`Expression`对象的支持
## V5.1.33 LTS2019-1-16
* 修复路由中存在多个相同替换的正则BUG
* 修正whereLike查询
* join方法支持参数绑定
* 改进union方法
* 修正多对多关联的attach方法
* 改进验证类的正则规则自定义
* 改进Request类method方法
* 改进File日志类型的CLI日志写入
* 改进文件日志time_format配置对JSON格式的支持
## V5.1.32 LTS2018-12-24
本次主要为常规更新,修正了一些反馈的问题。
* 改进多对多关联的`attach`方法
* 改进聚合查询的`field`处理
* 改进关联的`save`方法
* 修正模型`exists`方法返回值
* 改进时间字段写入和输出
* 改进控制器中间件的调用
* 改进路由变量替换的性能
* 改进缓存标签的处理机制
## V5.1.31 LTS (2018-12-9)
本次版本包含一个安全更新,建议升级。
* 改进`field`方法
* 改进`count`方法返回类型
* `download`函数增加在浏览器中显示文件功能
* 修正多对多模型的中间表数据写入
* 改进`sqlsrv`驱动支持多个Schemas模式查询
* 统一助手函数与\think\response\Download函数文件过期时间
* 完善关联模型的`save`方法 增加`make`方法仅创建对象不保存
* 修改条件表达式对静态变量的支持
* 修正控制器名获取
* 改进view方法的`field`解析
## V5.1.30 LTS2018-11-30
该版本为常规更新,修正了一些社区反馈的问题。
主要更新如下:
* 改进查询类的`execute`方法
* 判断路由规则定义添加对请求类型的判断
* 修复`orderRaw`异常
* 修正 `optimize:autoload`指令
* 改进软删除的`destroy`方法造成重复执行事件的问题
* 改进验证类对扩展验证规则 始终验证 不管是否`require`
* 修复自定义验证`remove`所有规则的异常
* 改进时间字段的自动写入支持微秒数据
* 改进`Connection`类的`getrealsql`方法
* 修正`https`地址的URL生成
* 修复 `array_walk_recursive` 在低于PHP7.1消耗内部指针问题
* 改进手动参数绑定使用
* 改进聚合查询方法的`field`参数支持`Expression`
## V5.1.29 LTS2018-11-11
该版本主要改进了参数绑定的解析问题和提升性能,并修正了一些反馈的问题。
* 改进手动参数绑定
* 修正MISS路由的分组参数无效问题
* 行为支持对象的方法
* 修正全局查询范围
* 改进`belongsto`关联的`has`方法
* 改进`hasMany`关联
* 改进模型观察者多次注册的问题
* 改进`query`类的默认查询参数处理
* 修正`parseBetween`解析方法
* 改进路由地址生成的本地域名支持
* 改进参数绑定的实际URL解析性能
* 改进`Env`类的`getEnv``get`方法
* 改进模板缓存的生成优化
* 修复验证类的多语言支持
* 修复自定义场景验证`remove`规则异常
* File类添加是否自动补全扩展名的选项
* 改进`strpos`对子串是否存在的判断
* 修复`choice`无法用值选择第一个选项问题
* 验证器支持多维数组取值验证
* 改进解析`extend``block`标签的正则
## V5.1.28 LTS2018-10-29
该版本主要修正了上一个版本存在的一些问题,并改进了关联查询
* 改进聚合查询方法的字段支持DISTINCT
* 改进定义路由后url函数的端口生成
* 改进控制器中间件对`swoole`等的支持
* 改进Log类`save`方法
* 改进验证类的闭包验证参数
* 多对多关联支持指定中间表数据的名称
* 关联聚合查询支持闭包方式指定聚合字段
* 改进Lang类`get`方法
* 多对多关联增加判断关联数据是否存在的方法
* 改进关联查询使用`fetchsql`的情况
* 改进修改器的是否已经执行判断
* 增加`afterWith``beforeWith`验证规则 用于比较日期字段
## V5.1.27 LTS2018-10-22
该版本主要修正了路由绑定的参数改进了修改器的执行多次问题并正式宣布为LTS版本
* 修正路由绑定的参数丢失问题
* 修正路由别名的参数获取
* 改进修改器会执行多次的问题
## V5.1.262018-10-12
该版本主要修正了上一个版本的一些问题,并改进了全局查询范围的支持,同时包含了一个安全更新。
* 修正单一模块下注解路由无效的问题
* 改进数据库的聚合查询的字段处理
* 模型类增加`globalScope`属性定义 用于指定全局的查询范围
* 模型的`useGlobalScope`方法支持传入数组 用于指定当前查询需要使用的全局查询范围
* 改进数据集的`order`方法对数字类型的支持
* 修正上一个版本`order`方法解析的一处BUG
* 排序字段不合法或者错误的时候抛出异常
* 改进`Request`类的`file`方法对上传文件的错误判断
## V5.1.252018-9-21
该版本主要改进了查询参数绑定的性能和对浮点型的支持,以及一些细节的完善。
* 修正一处命令行问题
* 改进`Socketlog`日志驱动,支持自定义默认展开日志类别
* 修正`MorphMany`一处bug
* 跳转到上次记住的url并支持默认值
* 改进模型的异常提示
* 改进参数绑定对浮点型的支持
* 改进`order`方法解析
* 改进`json`字段数据的自动编码
* 改进日志`log_write`可能造成的日志写入死循环
* Log类增加`log_level`行为标签位置,用于对某个类型的日志进行处理
* Route类增加`clear`方法清空路由规则
* 分布式数据库配置支持使用数组
* 单日志文件也支持`max_files`参数
* 改进查询参数绑定的性能
* 改进别名路由的URL后缀参数检测
* 控制器前置方法和控制器中间件的`only``except`定义不区分大小写
## V5.1.242018-9-5
该版本主要增加了命令行的表格输出功能,并增加了查看路由定义的指令,以及修正了社区的一些反馈问题。
* 修正`Request`类的`file`方法
* 修正路由的`cache`方法
* 修正路由缓存的一处问题
* 改进上传文件获取的异常处理
* 改进`fetchCollection`方法支持传入数据集类名
* 修正多级控制器的注解路由生成
* 改进`Middleware``clear`方法
* 增加`route:list`指令用于[查看定义的路由](752690) 并支持排序
* 命令行增加`Table`输出类
* `Command`类增加`table`方法用于输出表格
* 改进搜索器查询方法支持别名定义
* 命令行配置增加`auto_path`参数用于定义自动载入的命令类路径
* 增加`make:command`指令用于[快速生成指令](354146)
* 改进`make:controller`指令对操作方法后缀的支持
* 改进命令行的定义文件支持索引数组 用于指令对象的惰性加载
* 改进`value``column`方法对后续查询结果的影响
* 改进`RuleName`类的`setRule`方法
## V5.1.232018-8-23
该版本主要改进了数据集对象的处理,增加了`findOrEmpty`方法并且修正了一些社区反馈的BUG。
* 数据集类增加`diff`/`intersect`方法用于获取差集和交集(默认根据主键值比较)
* 数据集类增加`order`方法支持指定字段排序
* 数据集类增加`map`方法使用回调函数处理数据并返回新的数据集对象
* Db增加`allowEmpty`方法允许`find`方法在没有数据的时候返回空数组或者空模型对象而不是null
* Db增加`findOrEmpty`方法
* Db增加`fetchCollection`方法用于指定查询返回数据集对象
* 改进`order`方法的数组方式解析,增强安全性
* 改进`withSearch`方法,支持第三个参数传入字段前缀标识,用于多表查询字段搜索
* 修正`optimize:route`指令开启类库后缀后的注解路由生成
* 修正redis缓存及session驱动
* 支持指定`Yaconf`的独立配置文件
* 增加`yaconf`助手函数用于配置文件
## V5.1.222018-8-9
该版本主要增加了模型搜索器和`withJoin`方法,完善了模型输出和对`Yaconf`的支持修正了一些社区反馈的BUG。
* 改进一对一关联的`table`识别问题
* 改进内置`Facade`
* 增加`withJoin`方法支持`join`方式的[一对一关联](一对一关联.md)查询
* 改进`join`预载入查询的空数据问题
* 改进`Config`类的`load`方法支持快速加载配置文件
* 改进`execute`方法和事务的断线重连
* 改进`memcache`驱动的`has`方法
* 模型类支持定义[搜索器](搜索器.md)方法
* 完善`Config`类对`Yaconf`的支持
* 改进模型的`hidden/visible/append/withAttr`方法,支持在[查询前后调用](数组访问.md),以及支持数据集对象
* 数据集对象增加`where`方法根据字段或者关联数据[过滤数据](模型数据集.md)
* 改进AJAX请求的`204`判断
## V5.1.212018-8-2
该版本主要增加了下载响应对象和数组查询对象的支持,并修正了一些社区反馈的问题。
* 改进核心对象的无用信息调试输出
* 改进模型的`isRelationAttr`方法判断
* 模型类的`get``all`方法并入Db类
* 增加[下载响应对象](文件下载.md)和`download`助手函数
* 修正别名路由配置定义读取
* 改进`resultToModel`方法
* 修正开启类库后缀后的注解路由生成
* `Response`类增加`noCache`快捷方法
* 改进路由对象在`Swoole`/`Workerman`下面参数多次合并问题
* 修正路由`ajax`/`pjax`参数后路由变量无法正确获取的问题
* 增加清除中间件的方法
* 改进依赖注入的参数规范自动识别(便于对接前端小写+下划线规范)
* 改进`hasWhere`的数组条件的字段判断
* 增加[数组查询对象](高级查询.md)`Where`支持(喜欢数组查询的福音)
* 改进多对多关联的闭包支持
## V5.1.202018-7-25
该版本主要增加了Db和模型的动态获取器的支持并修正了一些已知问题。
* Db类添加[获取器支持](703981)
* 支持模型及关联模型字段[动态定义获取器](354046)
* 动态获取器支持`JSON`字段
* 改进路由的`before`行为执行(匹配后执行)
* `Config`类支持`Yaconf`
* 改进Url生成的端口问题
* Request类增加`setUrl``setBaseUrl`方法
* 改进页面trace的信息显示
* 修正`MorphOne`关联
* 命令行添加[查看版本指令](703994)
## V5.1.19 2018-7-13
该版本是一个小幅改进版本,针对`Swoole``Workerman``Cookie`支持做了一些改进,并修正了一些已知的问题。
* 改进query类`delete`方法对软删除条件判断
* 修正分表查询的软删除问题
* 模型查询的时候同时传入`table``name`属性
* 容器类增加`IteratorAggregate``Countable`接口支持
* 路由分组支持对下面的资源路由统一设置`only/except/vars`参数
* 改进Cookie类更好支持扩展
* 改进Request类`post`方法
* 改进模型自关联的自动识别
* 改进Request类对`php://input`数据的处理
## V5.1.18 2018-6-30
该版本主要完善了对`Swoole``Workerman``HttpServer`运行支持,改进`Request`类,并修正了一些已知的问题。
* 改进关联`append`方法的处理
* 路由初始化和检测方法分离
* 修正`destroy`方法强制删除
* `app_init`钩子位置移入`run`方法
* `think-swoole`扩展更新到2.0版本
* `think-worker`扩展更新到2.0版本
* 改进Url生成的域名自动识别
* `Request`类增加`setPathinfo`方法和`setHost`方法
* `Request`类增加`withGet`/`withPost`/`withHeader`/`withServer`/`withCookie`/`withEnv`方法进行赋值操作
* Route类改进`host`属性的获取
* 解决注解路由配置不生效的问题
* 取消Test日志驱动改为使用`close`设置关闭全局日志写入
* 修正路由的`response`参数
* 修正204响应输出的判断
## V5.1.17 2018-6-18
该版本主要增加了控制器中间件的支持,改进了路由功能,并且修正了社区反馈的一些问题。
* 修正软删除的`delete`方法
* 修正Query类`Count`方法
* 改进多对多`detach`方法
* 改进Request类`Session`方法
* 增加控制器中间件支持
* 模型类增加`jsonAssoc`属性用于定义json数据是否返回数组
* 修正Request类`method`方法的请求伪装
* 改进静态路由的匹配
* 分组首页路由自动完整匹配
* 改进sqlsrv的`column`方法
* 日志类的`apart_level`配置支持true自动生成对应类型的日志文件
* 改进`204`输出判断
* 修正cli下页面输出的BUG
* 验证类使用更高效的`ctype`验证机制
* 改进Request类`cookie`方法
* 修正软删除的`withTrashed`方法
* 改进多态一对多的预载入查询
* 改进Query类`column`方法的缓存读取
* Query类增加`whereBetweenTimeField`方法
* 改进分组下多个相同路由规则的合并匹配问题
* 路由类增加`getRule`/`getRuleList`方法获取定义的路由
## V5.1.16 2018-6-7
该版本主要修正了社区反馈的一些问题并对Request类做了进一步规范和优化。
* 改进Session类的`boot`方法
* App类的初始化方法可以单独执行
* 改进Request类的`param`方法
* 改进资源路由的变量替换
* Request类增加`__isset`方法
* 改进`useGlobalScope`方法对软删除的影响
* 修正命令行调用
* 改进Cookie类`init`方法
* 改进多对多关联删除的返回值
* 一对多关联写入支持`replace`
* 路由增加`filter`检测方法,用于通过请求参数检测路由是否匹配
* 取消Request类`session/env/server`方法的`filter`参数
* 改进关联的指定属性输出
* 模型删除操作删除后不清空对象数据仅作标记
* 调整模型的`save`方法返回值为布尔值
* 修正Request类`isAjax`方法
* 修正中间件的模块配置读取
* 取消Request类的请求变量的设置功能
* 取消请求变量获取的默认修饰符
* Request类增加`setAction/setModule/setController`方法
* 关联模型的`delete`方法调用Query类
* 改进URL生成的域名识别
* 改进URL检测对已定义路由的域名判断
* 模型类增加`isExists``isForce`方法
* 软删除的`destroy``restore`方法返回值调整为布尔值
## V5.1.15 2018-6-1
该版本主要改进了路由缓存的性能和缓存方式设置增加了JSON格式文件日志的支持并修正了社区反馈的一些问题。
* 容器类增加`exists`方法 仅判断是否存在对象实例
* 取消配置类的`autoload`方法
* 改进路由缓存大小提高性能
* 改进Dispatch类`init`方法
* 增加`make:validate`指令生成验证器类
* Config类`get`方法支持默认值参数
* 修正字段缓存指令
* 改进App类对`null`数据的返回
* 改进模型类的`__isset`方法判断
* 修正`Query`类的`withAggregate`方法
* 改进`RuleItem`类的`setRuleName`方法
* 修正依赖注入和参数的冲突问题
* 修正Db类对第三方驱动的支持
* 修正模型类查询对象问题
* 修正File缓存驱动的`has`方法
* 修正资源路由嵌套
* 改进Request类对`$_SERVER`变量的读取
* 改进请求缓存处理
* 路由缓存支持指定单独的缓存方式和参数
* 修正资源路由的中间件多次执行问题
* 修正`optimize:config`指令
* 文件日志支持`JSON`格式日志保存
* 修正Db类`connect`方法
* 改进Log类`write`方法不会自动写入之前日志
* 模型的关联操作默认启用事务
* 改进软删除的事件响应
## V5.1.14 2018-5-18
该版本主要对底层容器进行了一些优化改进,并增加了路由缓存功能,可以进一步提升路由性能。
* 依赖注入的对象参数传入改进
* 改进核心类的容器实例化
* 改进日期字段的读取
* 改进验证类的`getScene`方法
* 模型的`create`方法和`save`方法支持`replace`操作
* 改进`Db`类的调用机制
* App类调整为容器类
* 改进容器默认绑定
* `Loader`类增加工厂类的实例化方法
* 增加路由变量默认规则配置参数
* 增加路由缓存设计
* 错误处理机制改进
* 增加清空路由缓存指令
## V5.1.13 2018-5-11
该版本主要增加了MySQL的XA事务支持模型事件支持观察者以及对Facade类的改进。
* 改进自动缓存
* 改进Url生成
* 修正数据缓存
* 修正`value`方法的缓存
* `join`方法和`view`方法的条件支持使用`Expression`对象
* 改进驱动的`parseKey`方法
* 改进Request类`host`方法和`domain`方法对端口的处理
* 模型增加`withEvent`方法用于控制当前操作是否需要执行模型事件
* 模型`setInc/setDec`方法支持更新事件
* 模型添加`before_restore/after_restore`事件
* 增加模型事件观察者
* 路由增加`mobile`方法设置是否允许手机访问
* 数据库XA事务支持
* 改进索引数组查询对`IN`查询的支持
* 修正`invokeMethod`方法
* 修正空数据写入返回值的BUG
* redis驱动支持`predis`
* 改进`parseData`方法
* 改进模块加载
* App类初始化方法调整
* 改进数组查询对表达式`Expression`对象支持
* 改进闭包的依赖注入调用
* 改进多对多关联的中间表模型更新
* 增加容器中对象的自定义实例化
## V5.1.12 2018-4-25
该版本主要改进了主从查询的及时性,并支持动态设置请求数据。
* 支持动态设置请求数据
* 改进`comment`方法解析
* 修正App类`__unset`方法
* 改进url生成的域名绑定
* 改进主从查询的及时性
* 修正`value`的数据缓存功能
* 改进分页类的集合对象方法调用
* 改进Db类的代码提示
* SQL日志增加主从标记
## V5.1.11 2018-4-19
该版本为安全和修正版本改进了JSON查询的参数绑定问题和容器类对象实例获取并包含一处可能的安全隐患建议更新。
* 支持指定JSON数据查询的字段类型
* 修正`selectInsert`方法
* `whereColumn`方法支持数组方式
* 改进容器类`make`方法
* 容器类`delete`方法支持数组
* 改进`composer`自动加载
* 改进模板引擎
* 修正`like`查询的一处安全隐患
## V5.1.10 2018-4-16
该版本为修正版本修正上一个版本的一些BUG并增强了`think clear`指令。
* 改进`orderField`方法
* 改进`exists`查询
* 修改cli模式入口文件位置计算
* 修正`null`查询
* 改进`parseTime`方法
* 修正关联预载入查询
* 改进`mysql`驱动
* 改进`think clear`指令 支持 `-c -l -r `选项
* 改进路由规则对`/`结尾的支持
## V5.1.9 2018-4-12
该版本主要是一些改进和修正,并包含一个安全更新,是一个推荐更新版本。
* 默认模板渲染规则支持配置保持操作方法名
* 改进`Request`类的`ip`方法
* 支持模型软删除字段的默认值定义
* 改进路由变量规则对中文的支持
* 使用闭包查询的时候使用`cache(true)` 抛出异常提示
* 改进`Loader``loadComposerAutoloadFiles`方法
* 改进查询方法安全性
* 修正路由地址中控制器名驼峰问题
* 调整上一个版本的`module_init``app_begin`的钩子顺序问题
* 改进CLI命令行执行的问题
* 修正社区反馈的其它问题
## V5.1.8 2018-4-5
该版本主要改进了中间件的域名和模块支持,并同时修正了几个已知问题。
* 增加`template.auto_rule` 参数设置默认模板渲染的操作名自动转换规则
* 默认模板渲染规则改由视图驱动实现
* 修正路由标识定义
* 修正控制器路由方法
* 改进Request类`ip`方法支持自定义代理IP参数
* 路由注册中间件支持数组方式别名
* 改进命令行执行下的`composer`自动加载
* 添加域名中间件注册支持
* 全局中间件支持模块定义文件
* Log日志配置支持`close`参数可以全局关闭日志写入
* 中间件方法中捕获`HttpResponseException`异常
* 改进中间件的闭包参数传入
* 改进分组路由的延迟解析
* 改进URL生成对域名绑定的支持
* 改进文件缓存和文件日志驱动的并发支持
## V5.1.7 2018-3-28
该版本主要修正了路由的一些问题,并改进了查询的安全性。
* 支持`middleware`配置文件预先定义中间件别名方便路由调用
* 修正资源路由
* 改进`field`方法 自动识别`fieldRaw`
* 增加`Expression`
* Query类增加`raw`方法
* Query类的`field`/ `order`` where`方法都支持使用`raw`表达式查询
* 改进`inc/dec`查询 支持批量更新
* 改进路由分组
* 改进Response类`create`方法
* 改进composer自动加载
* 修正域名路由的`append`方法
* 修正操作方法的初始化方法获取不到问题
## V5.1.6 2018-3-26
该版本主要改进了路由规则的匹配算法,大幅提升了路由性能。并正式引入了中间件的支持,可以在路由中定义或者全局定义。另外包含了一个安全更新,是一个建议更新版本。
* 改进URL生成对路由`ext`方法的支持
* 改进查询缓存对不同数据库相同表名的支持
* 改进composer自动加载的性能
* 改进空路由变量对默认参数的影响
* mysql的`json`字段查询支持多级
* Query类增加`option`方法
* 优化路由匹配
* 修复验证规则数字键名丢失问题
* 改进路由Url生成
* 改进一对一关联预载入查询
* Request类增加`rootDomain`方法
* 支持API资源控制器生成 `make:controller --api`
* 优化Template类的标签解析
* 容器类增加删除和清除对象实例的方法
* 修正MorphMany关联的`eagerlyMorphToMany`方法一处错误
* Container类的异常捕获改进
* Domain对象支持`bind`方法
* 修正分页参数
* 默认模板的输出规则不受URL影响
* 注解路由支持多级控制器
* Query类增加`getNumRows`方法获取前次操作影响的记录数
* 改进查询条件的性能
* 改进模型类`readTransform`方法对序列化类型的处理
* Log类增加`close`方法可以临时关闭当前请求的日志写入
* 文件日志方式增加自动清理功能(设置`max_files`参数)
* 修正Query类的`getPk`方法
* 修正模板缓存的布局开关问题
* 修正Query类`select`方法的缓存
* 改进input助手函数
* 改进断线重连的信息判断
* 改进正则验证方法
* 调整语言包的加载顺序 放到`app_init`之前
* controller类`fetch`方法改为`final`
* 路由地址中的变量支持使用`<var>`方式
* 改进XMLResponse 支持传入编码过的xml内容
* 修正Query类`view`方法的数组表名支持
* 改进路由的模型闭包绑定
* 改进分组变量规则的继承
* 改进`cli-server`模式下的`composer`自动加载
* 路由变量规则异常捕获
* 引入中间件支持
* 路由定义增加`middleware`方法
* 增加生成中间件指令`make:middleware`
* 增加全局中间件定义支持
* 改进`optimize:config`指令对全局中间件的支持
* 改进config类`has`方法
* 改进时间查询的参数绑定
* 改进`inc/dec/exp`查询的安全性
## V5.1.5 2018-1-31
该版本主要增强了数据库的JSON查询并支持JSON字段的聚合查询改进了一些性能问题修正了路由的一些BUG主要更新如下
* 改进数据集查询对`JSON`数据的支持
* 改进聚合查询对`JSON`字段的支持
* 模型类增加`getOrFail`方法
* 改进数据库驱动的`parseKey`方法
* 改进Query类`join`方法的自关联查询
* 改进数据查询不存在不生成查询缓存
* 增加`run`命令行指令启动内置服务器
* `Request``pathinfo`方法改进对`cli-server`支持
* `Session`类增加`use_lock`配置参数设置是否启用锁机制
* 优化`File`缓存自动生成空目录的问题
* 域名及分组路由支持`append`方法传递隐式参数
* 改进日志的并发写入问题
* 改进`Query`类的`where`方法支持传入`Query`对象
* 支持设置单个日志文件的文件名
* 修正路由规则的域名条件约束
* `Request`类增加`subDomain`方法用于获取当前子域名
* `Response`类增加`allowCache`方法控制是否允许请求缓存
* `Request`类增加`sendData`方法便于扩展
* 改进`Env`类不依赖`putenv`方法
* 改进控制台`trace`显示错误
* 改进`MorphTo`关联
* 改进完整路由匹配后带斜线访问出错的情况
* 改进路由的多级分组问题
* 路由url地址生成支持多级分组
* 改进路由Url生成的`url_convert`参数的影响
* 改进`miss``auto`路由内部解析
* 取消预载入关联查询缓存功能
## V5.1.4 2018-1-19
该版本主要增强了数据库和模型操作,主要更新如下:
* 支持设置 `deleteTime`属性为`false` 关闭软删除
* 模型增加`getError`方法
* 改进Query类的`getTableFields`/`getFieldsType`方法 支持表名自动获取
* 模型类`toCollection`方法增加参数指定数据集类
* 改进`union`查询
* 关联预载入`with`方法增加缓存参数
* 改进模型类的`get``all`方法的缓存 支持关联缓存
* 支持`order by field`操作
* 改进`insertAll`分批写入
* 改进`json`字段数据支持
* 增加JSON数据的模型对象化操作
* 改进路由`ext`参数检测
* 修正`rule`方法的`method`参数使用 `get|post` 方式注册路由的问题
## V5.1.3 2018-1-12
该版本主要改进了路由及调整函数加载顺序,主要更新如下:
* 增加`env`助手函数;
* 增加`route`助手函数;
* 增加视图路由方法;
* 增加路由重定向方法;
* 路由默认区分最后的目录斜杆(支持设置不区分);
* 调整公共文件和配置文件的加载顺序(可以在配置文件中直接使用助手函数);
* 视图类增加`filter`方法设置输出过滤;
* `view`助手函数增加`filter`参数;
* 改进缓存生成指令;
* Session类的`get`方法支持获取多级;
* Request类`only`方法支持指定默认值;
* 改进路由分组;
* 修正使用闭包查询的时候自动数据缓存出错的情况;
* 废除`view_filter`钩子位置;
* 修正分组下面的资源路由;
* 改进session驱动;
## V5.1.2 2018-1-8
该版本改进了配置类及数据库类,主要更新如下:
* 修正嵌套路由分组;
* 修正自定义模板标签界定符后表达式语法出错的情况;
* 修正自关联的多次调用问题;
* 修正数组查询的`null`条件查询;
* 修正Query类的`order``field`的一处可能的BUG
* 配置参数设置支持三级;
* 配置对象支持`ArrayAccess`
* App类增加`path`方法用于设置应用目录;
* 关联定义增加`selfRelation`方法用于设置是否为自关联;
## V5.1.1 2018-1-3
修正一些反馈的BUG包括
* 修正Cookie类存取数组的问题
* 修正Controller的`fetch`方法
* 改进跨域请求
* 修正`insertAll`方法
* 修正`chunk`方法
## V5.1.0 2018-1-1
主要更新如下:
* 增加注解路由支持
* 路由支持跨域请求设置
* 增加`app_dispatch`钩子位置
* 修正多对多关联的`detach`方法
* 修正软删除的`destroy`方法
* Cookie类`httponly`参数默认为false
* 日志File驱动增加`single`参数配置记录同一个文件(不按日期生成)
* 路由的`ext``denyExt`方法支持不传任何参数
* 改进模型的`save`方法对`oracle`的支持
* Query类的`insertall`方法支持配合`data``limit`方法
* 增加`whereOr`动态查询支持
* 日志的ip地址记录改进
* 模型`saveAll`方法支持`isUpdate`方法
* 改进`Pivot`模型的实例化操作
* 改进Model类的`data`方法
* 改进多对多中间表模型类
* 模型增加`force`方法强制更新所有数据
* Hook类支持设置入口方法名称
* 改进验证类
* 改进`hasWhere`查询的数据重复问题
* 模型的`saveall`方法返回数据集对象
* 改进File缓存的`clear`方法
* 缓存添加统一的序列化机制
* 改进泛三级域名的绑定
* 改进泛域名的传值和取值
* Request类增加`panDomain`方法
* 改进废弃字段判断
* App类增加`create`方法用于实例化应用类库
* 容器类增加`has`方法
* 改进多数据库切换连接
* 改进断线重连的异常捕获
* 改进模型类`buildQuery`方法
* Query类增加`unionAll`方法
* 关联统计功能增强支持Sum/Max/Min/Avg
* 修正延迟写入
* chunk方法支持复合主键
* 改进JSON类型的写入
* 改进Mysql的insertAll方法
* Model类`save`方法改进复合主键包含自增的情况
* 改进Query类`inc``dec`方法的关键字处理
* File缓存inc和dec方法保持原来的有效期
* 改进redis缓存的有效期判断
* 增加checkRule方法用于单独数据的多个验证规则
* 修正setDec方法的延迟写入
* max和min方法增加force参数
* 二级配置参数区分大小写
* 改进join方法自关联的问题
* 修正关联模型自定义表名的情况
* Query类增加getFieldsType和getTableFields方法
* 取消视图替换功能及view_replace_str配置参数
* 改进域名绑定模块后的额外路由规则问题
* 改进mysql的insertAll方法
* 改进insertAll方法写入json字段数据的支持
* 改进redis长连接多编号库的情况
## RC3版本2017-11-6
主要更新如下:
* 改进redis驱动的`get`方法
* 修正Query类的`alias`方法
* `File`类错误信息支持多语言
* 修正路由的额外参数解析
* 改进`whereTime`方法
* 改进Model类`getAttr`方法
* 改进App类的`controller``validate`方法支持多层
* 改进`HasManyThrough`
* 修正软删除的`restore`方法
* 改进`MorpthTo`关联
* 改进数据库驱动类的`parseKey`方法
* 增加`whereField`动态查询方法
* 模型增加废弃字段功能
* 改进路由的`after`行为检查和`before`行为机制
* 改进路由分组的检查
* 修正mysql的`json`字段查询
* 取消Connection类的`quote`方法
* 改进命令行的支持
* 验证信息支持多语言
* 修正路由模型绑定
* 改进参数绑定类型对枚举类型的支持
* 修正模板的`{$Think.version} `输出
* 改进模板`date`函数解析
* 改进`insertAll`方法支持分批执行
* Request类`host`方法支持反向代理
* 改进`JumpResponse`支持区分成功和错误模板
* 改进开启类库后缀后的关联外键自动识别问题
* 修正一对一关联的JOIN方式预载入查询问题
* Query类增加`hidden`方法
## RC2版本2017-10-17
主要更新如下:
* 修正视图查询
* 修正资源路由
* 修正`HasMany`关联 修正`where`方法的闭包查询
* 一对一关联绑定属性到父模型后 关联属性不再保留
* 修正应用的命令行配置文件读取
* 改进`Connection`类的`getCacheKey`方法
* 改进文件上传的非法图像异常
* 改进验证类的`unique`规则
* Config类`get`方法支持获取一级配置
* 修正count方法对`fetchSql`的支持
* 修正mysql驱动对`socket`支持
* 改进Connection类的`getRealSql`方法
* 修正`view`助手函数
* Query类增加`leftJoin` `rightJoin``fullJoin`方法
* 改进app_namespace的获取
* 改进`append`方法对一对一`bind`属性的支持
* 改进关联的`saveall`方法的返回值
* 路由标识设置异常修复
* 改进Route类`rule`方法
* 改进模型的`table`属性设置
* 改进composer autofile的加载顺序
* 改进`exception_handle`配置对闭包的支持
* 改进app助手函数增加参数
* 改进composer的加载路径判断
* 修正路由组合变量的URL生成
* 修正路由URL生成
* 改进`whereTime`查询并支持扩展规则
* File类的`move`方法第二个参数支持`false`
* 改进Config类
* 改进缓存类`remember`方法
* 惯例配置文件调整 Url类当普通模式参数的时候不做`urlencode`处理
* 取消`ROOT_PATH``APP_PATH`常量定义 如需更改应用目录 自己重新定义入口文件
* 增加`app_debug``Env`获取
* 修正泛域名绑定
* 改进查询表达式的解析机制
* mysql增加`regexp`查询表达式 支持正则查询
* 改进查询表达式的异常判断
* 改进model类的`destroy`方法
* 改进Builder类 取消`parseValue`方法
* 修正like查询的参数绑定问题
* console和start文件移出核心纳入应用库
* 改进Db类主键删除方法
* 改进泛域名绑定模块
* 取消`BIND_MODULE`常量 改为在入口文件使用`bind`方法设置
* 改进数组查询
* 改进模板渲染的异常处理
* 改进控制器基类的架构方法参数
* 改进Controller类的`success``error`方法
* 改进对浏览器`JSON-Handle`插件的支持
* 优化跳转模板的移动端显示
* 修正模型查询的`chunk`方法对时间字段的支持
* 改进trace驱动
* Collection类增加`push`方法
* 改进Redis Session驱动
* 增加JumpResponse驱动
## RC12017-9-8
主要新特性为:
* 引入容器和Facade支持
* 依赖注入完善和支持更多场景
* 重构的(对象化)路由
* 配置和路由目录独立
* 取消系统常量
* 助手函数增强
* 类库别名机制
* 模型和数据库增强
* 验证类增强
* 模板引擎改进
* 支持PSR-3日志规范
* RC1版本取消了5.0多个字段批量数组查询的方式

32
LICENSE.txt Normal file
View File

@@ -0,0 +1,32 @@
ThinkPHP遵循Apache2开源协议发布并提供免费使用。
版权所有Copyright © 2006-2018 by ThinkPHP (http://thinkphp.cn)
All rights reserved。
ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。
Apache Licence是著名的非盈利开源组织Apache采用的协议。
该协议和BSD类似鼓励代码共享和尊重原作者的著作权
允许代码修改,再作为开源或商业软件发布。需要满足
的条件:
1 需要给代码的用户一份Apache Licence
2 如果你修改了代码,需要在被修改的文件中说明;
3 在延伸的代码中(修改和有源代码衍生的代码中)需要
带有原来代码中的协议,商标,专利声明和其他原来作者规
定需要包含的说明;
4 如果再发布的产品中包含一个Notice文件则在Notice文
件中需要带有本协议内容。你可以在Notice中增加自己的
许可但不可以表现为对Apache Licence构成更改。
具体的协议参考http://www.apache.org/licenses/LICENSE-2.0
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

186
README.md Normal file
View File

@@ -0,0 +1,186 @@
![](https://box.kancloud.cn/5a0aaa69a5ff42657b5c4715f3d49221)
ThinkPHP 5.1LTS版本 —— 12载初心你值得信赖的PHP框架
===============
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/top-think/framework/badges/quality-score.png?b=5.1)](https://scrutinizer-ci.com/g/top-think/framework/?branch=5.1)
[![Build Status](https://travis-ci.org/top-think/framework.svg?branch=master)](https://travis-ci.org/top-think/framework)
[![Total Downloads](https://poser.pugx.org/topthink/framework/downloads)](https://packagist.org/packages/topthink/framework)
[![Latest Stable Version](https://poser.pugx.org/topthink/framework/v/stable)](https://packagist.org/packages/topthink/framework)
[![PHP Version](https://img.shields.io/badge/php-%3E%3D5.6-8892BF.svg)](http://www.php.net/)
[![License](https://poser.pugx.org/topthink/framework/license)](https://packagist.org/packages/topthink/framework)
ThinkPHP5.1对底层架构做了进一步的改进,减少依赖,其主要特性包括:
+ 采用容器统一管理对象
+ 支持Facade
+ 注解路由支持
+ 路由跨域请求支持
+ 配置和路由目录独立
+ 取消系统常量
+ 助手函数增强
+ 类库别名机制
+ 增加条件查询
+ 改进查询机制
+ 配置采用二级
+ 依赖注入完善
+ 支持`PSR-3`日志规范
+ 中间件支持V5.1.6+
+ Swoole/Workerman支持V5.1.18+
> ThinkPHP5的运行环境要求PHP5.6以上兼容PHP8.0。
## 安装
使用composer安装
~~~
composer create-project topthink/think tp
~~~
启动服务
~~~
cd tp
php think run
~~~
然后就可以在浏览器中访问
~~~
http://localhost:8000
~~~
更新框架
~~~
composer update topthink/framework
~~~
## 在线手册
+ [完全开发手册](https://www.kancloud.cn/manual/thinkphp5_1/content)
+ [升级指导](https://www.kancloud.cn/manual/thinkphp5_1/354155)
## 官方服务
+ [应用服务市场](https://market.topthink.com/)
+ [ThinkAPI——统一API服务](https://docs.topthink.com/think-api)
## 目录结构
初始的目录结构如下:
~~~
www WEB部署目录或者子目录
├─application 应用目录
│ ├─common 公共模块目录(可以更改)
│ ├─module_name 模块目录
│ │ ├─common.php 模块函数文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─view 视图目录
│ │ └─ ... 更多类库目录
│ │
│ ├─command.php 命令行定义文件
│ ├─common.php 公共函数文件
│ └─tags.php 应用行为扩展定义文件
├─config 应用配置目录
│ ├─module_name 模块配置目录
│ │ ├─database.php 数据库配置
│ │ ├─cache 缓存配置
│ │ └─ ...
│ │
│ ├─app.php 应用配置
│ ├─cache.php 缓存配置
│ ├─cookie.php Cookie配置
│ ├─database.php 数据库配置
│ ├─log.php 日志配置
│ ├─session.php Session配置
│ ├─template.php 模板引擎配置
│ └─trace.php Trace配置
├─route 路由定义目录
│ ├─route.php 路由定义
│ └─... 更多
├─public WEB目录对外访问目录
│ ├─index.php 入口文件
│ ├─router.php 快速测试文件
│ └─.htaccess 用于apache的重写
├─thinkphp 框架系统目录
│ ├─lang 语言文件目录
│ ├─library 框架类库目录
│ │ ├─think Think类库包目录
│ │ └─traits 系统Trait目录
│ │
│ ├─tpl 系统模板目录
│ ├─base.php 基础定义文件
│ ├─console.php 控制台入口文件
│ ├─convention.php 框架惯例配置文件
│ ├─helper.php 助手函数文件
│ ├─phpunit.xml phpunit配置文件
│ └─start.php 框架入口文件
├─extend 扩展类库目录
├─runtime 应用的运行时目录(可写,可定制)
├─vendor 第三方类库目录Composer依赖库
├─build.php 自动生成定义文件(参考)
├─composer.json composer 定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行入口文件
~~~
> 可以使用php自带webserver快速测试
> 切换到根目录后启动命令php think run
## 命名规范
`ThinkPHP5`遵循PSR-2命名规范和PSR-4自动加载规范并且注意如下规范
### 目录和文件
* 目录不强制规范,驼峰和小写+下划线模式均支持;
* 类库、函数文件统一以`.php`为后缀;
* 类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致;
* 类名和类文件名保持一致,统一采用驼峰法命名(首字母大写);
### 函数和类、属性命名
* 类的命名采用驼峰法,并且首字母大写,例如 `User``UserType`,默认不需要添加后缀,例如`UserController`应该直接命名为`User`
* 函数的命名使用小写字母和下划线(小写字母开头)的方式,例如 `get_client_ip`
* 方法的命名使用驼峰法,并且首字母小写,例如 `getUserName`
* 属性的命名使用驼峰法,并且首字母小写,例如 `tableName``instance`
* 以双下划线“__”打头的函数或方法作为魔法方法例如 `__call``__autoload`
### 常量和配置
* 常量以大写字母和下划线命名,例如 `APP_PATH``THINK_PATH`
* 配置参数以小写字母和下划线命名,例如 `url_route_on``url_convert`
### 数据表和字段
* 数据表和字段采用小写加下划线方式命名,并注意字段名不要以下划线开头,例如 `think_user` 表和 `user_name`字段,不建议使用驼峰和中文作为数据表字段命名。
## 参与开发
请参阅 [ThinkPHP5 核心框架包](https://github.com/top-think/framework)。
## 版权信息
ThinkPHP遵循Apache2开源协议发布并提供免费使用。
本项目包含的第三方源码和二进制文件之版权信息另行标注。
版权所有Copyright © 2006-2018 by ThinkPHP (http://thinkphp.cn)
All rights reserved。
ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。
更多细节参阅 [LICENSE.txt](LICENSE.txt)

1
application/.htaccess Normal file
View File

@@ -0,0 +1 @@
deny from all

View File

@@ -0,0 +1,115 @@
<?php
namespace app\admin\controller;
use think\Controller;
class Admin extends Common
{
//获取管理员列表
public function get_admin_list()
{
$user_name = input('user_name', '');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('admin')->get_admin_list($user_name, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取 管理员 详情
public function admin_info()
{
$login_token = input('login_token', 0);
$reslut = model('Admin')->admin_info($login_token);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//获取 管理员 详情
public function add_admin()
{
$user_name = input('user_name', '');
$password = input('password', '');
$re_password = input('re_password', '');
$reslut = model('Admin')->add_admin($user_name, $password, $re_password);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//修改管理员密码
public function edit_admin_password()
{
$aid = input('aid', 0);
$old_password = input('old_password', '');
$password = input('new_password', '');
$re_password = input('re_password', '');
$phone = input('phone', '');
$reslut = model('Admin')->edit_admin_password($aid, $old_password, $password, $re_password, $phone);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//修改管理员密码
public function edit_admin_auth()
{
$aid = input('aid', 0);
$auth = input('auth', '');
$reslut = model('Admin')->edit_admin_auth($aid, $auth);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//获取管理员详情
public function get_admin_info()
{
$aid = input('aid', 0);
$reslut = model('Admin')->get_admin_info($aid);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//获取管理员详情
public function delete_admin()
{
$aid = input('aid', 0);
$reslut = model('Admin')->delete_admin($aid);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
public function get_all_system_menu_list()
{
$aid = input('aid', 0);
$reslut = model('SystemMenu')->get_all_system_menu_list($aid);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//获取管理员日志
public function get_admin_log_list(){
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Admin')->get_admin_log_list($page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//退出登录
public function quit_admin_login(){
$aid = $this->aid;
$reslut = model('Admin')->quit_admin_login($aid);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//清除登录token
public function clear_admin_token()
{
$super_aid = $this->aid;
$aid = input('aid', 0);
$reslut = model('Admin')->clear_admin_token($super_aid, $aid);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
}

View File

@@ -0,0 +1,50 @@
<?php
namespace app\admin\controller;
use think\Controller;
use think\facade\Request;
class Agora extends Common
{
//获取音乐列表
public function agora_song_list()
{
$aid = input('aid', 0);
$song_name = input('song_name', 0);
$singer = input('singer', 0);
$order = input('order', 'aid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Agora')->agora_song_list($aid, $song_name, $singer, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//同步歌曲
public function synchro_song(){
$key_name = "admin:agora:synchro_song";
redis_lock_exit($key_name);
$reslut = model('Agora')->synchro_song();
redis_unlock($key_name);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//增量歌曲
public function increment_song(){
$key_name = "admin:agora:increment_song";
redis_lock_exit($key_name);
$reslut = model('Agora')->increment_song();
redis_unlock($key_name);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
}

View File

@@ -0,0 +1,206 @@
<?php
namespace app\admin\controller;
use think\Controller;
class ApiTask extends Controller
{
//监控宝箱状态 设置5s 监控一次
public function control_box()
{
$key_name = "admin:cli:control_box";
$tid = input('tid', 0);
$is_reset = input('is_reset', 0);
redis_lock_exit($key_name,20);
$reslut = model('admin/box')->control_generate_box($tid, $is_reset);
redis_unlock($key_name);
if($is_reset){
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}else{
echo date('Y-m-d H:i:s') . "监控奖池 执行成功" . $reslut['data'] . "\r\n";
}
}
//清理房间当天热度
public function clear_room_hot_value(){
$key_name = "admin:cli:clear_room_hot_value";
redis_lock_exit($key_name);
$reslut = model('api/room')->clear_room_hot_value();
redis_unlock($key_name);
echo date('Y-m-d H:i:s') . "清除房间当天热度 执行成功"." \r\n";
}
//爵位到期监控
public function close_user_nobility(){
$key_name = "admin:ApiTask:close_user_nobility";
redis_lock_exit($key_name,20);
$reslut = model('api/Nobility')->user_nobility_over_time();
redis_unlock($key_name);
echo date('Y-m-d H:i:s') . "爵位到期监控 执行成功"." \r\n";
}
//定时清除用户关系
public function close_user_relation(){
$key_name = "admin:cli:close_user_relation";
redis_lock_exit($key_name);
$reslut = model('api/DatingRoom')->close_user_relation();
redis_unlock($key_name);
// echo date('Y-m-d H:i:s') . "定时清除用户关系 执行成功"." \r\n";
}
//定时结束唱歌时间
public function colse_room_song_user_status(){
$key_name = "admin:cli:colse_room_song_user_status";
redis_lock_exit($key_name);
$reslut = model('api/KtvRoom')->colse_room_song_user_status();
redis_unlock($key_name);
// echo date('Y-m-d H:i:s') . "定时结束唱歌时间 执行成功"." \r\n";
}
//定时清理到期私密小屋
public function close_room_privacy_status(){
$key_name = "api:cli:close_room_privacy_status";
redis_lock_exit($key_name);
$reslut = model('api/DatingRoom')->close_room_privacy_status();
redis_unlock($key_name);
echo date('Y-m-d H:i:s') . "监控私密小屋倒计时 执行成功" . "\r\n";
}
//定时清理到期心动连线
public function close_room_dating_stage(){
$key_name = "admin:cli:close_room_dating_stage";
redis_lock_exit($key_name);
$reslut = model('api/DatingRoom')->close_room_dating_stage();
redis_unlock($key_name);
echo date('Y-m-d H:i:s') . "监控心动连线倒计时 执行成功" . "\r\n";
}
//定时清理到期拍卖活动监控成功
public function close_auction_pm(){
$key_name = "admin:cli:close_auction_pm";
redis_lock_exit($key_name);
$data = model('api/AuctionRoom')->close_auction_pm();
redis_unlock($key_name);
echo date('Y-m-d H:i:s') . "定时清理到期拍卖活动 执行成功" . "\r\n";
}
//定时清理酒吧房掉麦
public function close_room_date_micro(){
$key_name = "admin:cli:close_room_date_micro";
redis_lock_exit($key_name);
$data = model('api/PubRoom')->close_room_date_micro();
redis_unlock($key_name);
echo date('Y-m-d H:i:s') . "定时清理酒吧房掉麦 执行成功" . "\r\n";
}
//清理过期装扮
public function clear_user_decorate()
{
$key_name = "admin:cli:clear_user_decorate";
redis_lock_exit($key_name);
$reslut = model('Decorate')->clear_user_decorate();
redis_unlock($key_name);
echo date('Y-m-d H:i:s') . "清理过期装扮 执行成功" . "\r\n";
}
//清理空房间机器人
public function auto_clear_robot_room()
{
$key_name = "admin:cli:auto_clear_robot_room";
redis_lock_exit($key_name);
$reslut = model('api/room')->auto_clear_robot_room();
redis_unlock($key_name);
echo date('Y-m-d H:i:s') . "清理空房间机器人 执行成功" . "\r\n";
}
//每日签到删除处理
public function del_user_day_sign_log()
{
$key_name = "admin:cli:del_user_day_sign_log";
redis_lock_exit($key_name);
$reslut = model("api/UserSign")->del_user_day_sign_log();
redis_unlock($key_name);
echo date('Y-m-d H:i:s') . "每日签到删除处理 执行成功" . "\r\n";
}
//获取上周排行榜
public function last_week_rank(){
$key_name = "admin:cli:last_week_rank";
redis_lock_exit($key_name);
$reslut = model('api/gift')->last_week_rank1();
redis_unlock($key_name);
echo date('Y-m-d H:i:s') . "获取上周排行榜 执行成功" . "\r\n";
}
//结算上周房间流水
public function statistics_room_last_week_earnings(){
$key_name = "admin:cli:statistics_room_last_week_earnings";
redis_lock_exit($key_name);
$reslut = model('api/RoomWages')->statistics_room_last_week_earnings(1);
redis_unlock($key_name);
echo date('Y-m-d H:i:s') . "结算上周房间流水 执行成功" . "\r\n";
}
//结算上周公会流水
public function statistics_guild_last_week_earnings(){
$key_name = "admin:cli:statistics_guild_last_week_earnings";
redis_lock_exit($key_name);
$reslut = model('api/RoomWages')->statistics_guild_last_week_earnings(1);
redis_unlock($key_name);
echo date('Y-m-d H:i:s') . "结算上周公会流水 执行成功" . "\r\n";
}
//房间工资结算
public function batch_give_room_subsidy(){
$key_name = "admin:cli:batch_give_room_subsidy";
redis_lock_exit($key_name);
$reslut = model('api/RoomWages')->batch_give_room_subsidy();
redis_unlock($key_name);
echo date('Y-m-d H:i:s') . "结算上周房间流水 执行成功" . "\r\n";
}
//公会工资结算
public function batch_give_guild_subsidy(){
$key_name = "admin:cli:batch_give_guild_subsidy";
redis_lock_exit($key_name);
$reslut = model('api/RoomWages')->batch_give_guild_subsidy();
redis_unlock($key_name);
echo date('Y-m-d H:i:s') . "结算上周房间流水 执行成功" . "\r\n";
}
//监控练仙传说
public function create_monster_log(){
$key_name = "admin:cli:create_monster_log";
redis_lock_exit($key_name,1,1);
$reslut = model('api/Monster')->create_monster_log();
redis_unlock($key_name);
if($reslut['code'] == 201){
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}else{
echo date('Y-m-d H:i:s') . "监控练仙传说 执行成功" . $reslut['data'] . "\r\n";
}
}
//盲盒巡乐会自动结束
public function close_blind_box()
{
$key_name = "api:cli:close_blind_box";
redis_lock_exit($key_name);
$reslut = model('api/BlindBox')->close_blind_box();
redis_unlock($key_name);
echo date('Y-m-d H:i:s') . "盲盒巡乐会自动结束 执行成功\r\n";
}
//盲盒巡乐会自动结束
public function blind_box_reward()
{
$key_name = "api:cli:blind_box_reward";
redis_lock_exit($key_name);
$reslut = model('api/BlindBox')->blind_box_reward();
redis_unlock($key_name);
echo date('Y-m-d H:i:s') . "盲盒巡乐会结束奖励 执行成功\r\n";
}
}

View File

@@ -0,0 +1,230 @@
<?php
namespace app\admin\controller;
use think\captcha\Captcha;
use think\Controller;
use think\Db;
class Apip extends Controller
{
public function initialize()
{
header('Access-Control-Allow-Origin: *');
add_operation(1, 0); //用户行为日志
}
public function login()
{
$captcha = input('captcha');
$username = input('username');
$password = input('password');
if (empty($captcha)) {
return ajaxReturn(201, '验证码不能为空');
}
if (!captcha_check($captcha)) {
// 验证失败
return ajaxReturn(201, '验证码错误');
}
if (empty($username)) {
return ajaxReturn(201, '用户名不能为空');
}
if (empty($password)) {
return ajaxReturn(201, '密码不能为空');
}
$map = [];
$map[] = ['user_name', '=', $username];
$map[] = ['is_delete', '=', 1];
// $map[] = ['password', '=', md5($password)];
$info = db::name('admin')->where($map)->find();
if (empty($info)) {
return ajaxReturn(201, '用户名不存在');
} else {
$admin_open_sms_code = $info['open_sms_code'];
$surplus_time = time() - $info['update_time'];
if($info['error_num'] >= 3 && $surplus_time < 3600){
return ajaxReturn(201, '账号已锁定,一小时内无法登录');
}
if (md5($password) != $info['password']) {
$update_err = [];
$update_err['update_time'] = time();
if($info['error_num'] >= 3) {
// return ajaxReturn(201, '账号已锁定,一小时内无法登录');
// $update_err['status'] = 2;
}
db::name('admin')->where('aid',$info['aid'])->inc('error_num',1)->update($update_err);
return ajaxReturn(201, '密码错误');
}
$ip_address = request()->ip();
// $ip_address = '211.94.238.248';
$address = ip_to_position($ip_address);
$province = $address['province'];
$city = $address['city'];
//该用户是否已退出
if($info['aid'] != 1 || $admin_open_sms_code == 0) {
if(!empty($info['login_token'])){
if($ip_address != $info['ip']){
// return ajaxReturn(201, '该账号已被其他人登录');
}
}
}
//发送短信
if(empty($info['phone'])){
$mobile = db::name('admin')->where('aid', 1)->value('phone');
}else{
$mobile = $info['phone'];
}
$province_time = $province . $city .', 时间 '.date('Y-m-d H:i:s');
$content = '【语音安全监控】你的账号'.$info['user_name'].'正在被登录登录IP'.$ip_address.',登录位置:'.$province_time;
$login_token = generateRandom(32);
// if ($info['aid'] == 1) {
// $login_token = $info['login_token'];
// }
$data = [];
$data['aid'] = $info['aid'];
$data['login_token'] = $login_token;
$data['ip'] = $ip_address;
$data['province'] = $address['province'];
$data['city'] = $city;
$data['error_num'] = 0;
$data['update_time'] = time();
$data['token_validity_time'] = time() + (60*60*12);
$reslut = db::name('admin')->update($data);
if (!$reslut) {
return ajaxReturn(201, '登录失败', '');
} else {
$show_mobile = substr_replace($mobile,'****',3,4);
$base64_mobile = $this->base64_encode_mobile($mobile);
if($admin_open_sms_code == 1) {
$data = ['uid' => $info['aid'], 'login_token' => '', 'is_has_warn' => 2, 'show_mobile' => $show_mobile, 'mobile' => $base64_mobile, 'need_sms_code' => 1];
} else {
$data = ['uid' => $info['aid'], 'login_token' => $login_token, 'is_has_warn' => 2, 'need_sms_code' => 0];
}
return ajaxReturn(200, '登录成功', $data);
}
}
}
public function verify()
{
$config = [
'codeSet' => '0123456789',
// 验证码字体大小
'fontSize' => 30,
// 验证码位数
'length' => 4,
// 关闭验证码杂点
'useNoise' => false,
];
$captcha = new Captcha($config);
return $captcha->entry();
}
public function test()
{
$file = request()->file('file');
$file_category_name = input('file_category', 'all');
$reslut = model('Upload')->qiniu_upload($file, $file_category_name);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
private function send_smsbao_msg($mobile, $content){
$config = get_uncache_system_config();
//短信宝
// $url = "https://dx.ipyy.net/smsJson.aspx?action=send&userid=&account=" . $config['huaxin_account'] . "&password=" . $config['huaxin_password'] . "&mobile=" . $mobile . "&content=" . urlencode($content) . "&sendTime=&extno=";
$url = "https://api.smsbao.com/sms?u=".$config['smsbao_account']."&p=".md5($config['smsbao_password'])."&m=".$mobile."&c=".urlencode($content) ."&g=";
$result = myCurl($url);
$result_arr = json_decode($result, true);
if ($result_arr == 0) {
return ['code' => 200, 'msg' => '发送成功', 'data' => null];
} else {
return ['code' => 201, 'msg' => '发送失败', 'data' => null];
}
}
public function get_mobile_code()
{
$mobile = input('mobile', '');
$captcha = input('captcha', '');
if (empty($captcha)) {
return ajaxReturn(201, '验证码不能为空');
}
if (!captcha_check($captcha)) {
// 验证失败
return ajaxReturn(201, '验证码错误');
}
$mobile = $this->base64_decode_mobile($mobile);
$key_name = "admin:cli:get_mobile_code";
redis_lock_exit($key_name);
$result = model('api/sms')->send_sms_admin($mobile);
redis_unlock($key_name);
return ajaxReturn($result['code'], $result['msg'], $result['data']);
}
public function sms_login()
{
$aid = input('uid', '');
$mobile = input('mobile', '');
$sms_code = input('sms_code', '');
if(empty($sms_code)) {
return ajaxReturn(201, '短信验证码不能为空');
}
if(empty($aid)) {
return ajaxReturn(201, '管理员账号不能为空');
}
if($aid != 1) {
return ajaxReturn(201, '非验证码管理员');
}
$mobile = $this->base64_decode_mobile($mobile);
$result = model('api/sms')->verification_code_admin($mobile, $sms_code);
if($result['code'] == 201) {
return ajaxReturn($result['code'], $result['msg'], $result['data']);
}
$map = [];
$map[] = ['aid', '=', $aid];
$map[] = ['is_delete', '=', 1];
$info = db::name('admin')->where($map)->find();
if($info['phone'] !== $mobile) {
return ajaxReturn(201, '账号错误');
}
$ip_address = request()->ip();
$login_token = generateRandom(32);
$data = [];
$data['aid'] = $info['aid'];
$data['login_token'] = $login_token;
$data['update_time'] = time();
$data['ip'] = $ip_address;
$data['token_validity_time'] = time()+7200;
$reslut = db::name('admin')->update($data);
if($reslut) {
$data = ['uid' => $info['aid'], 'login_token' => $login_token, 'is_has_warn' => 1];
return ajaxReturn(200, '登录成功', $data);
}
return ajaxReturn(201, '登录失败', $data);
}
//手机号
public function base64_decode_mobile($mobile)
{
$mobile = base64_decode($mobile);
$mobile_arr = explode('_', $mobile);
return $mobile_arr[1];
}
//手机号转换数据流
public function base64_encode_mobile($mobile)
{
$rand_code = 'scsy';
$rand_mobile = $rand_code . '_' . $mobile;
return base64_encode($rand_mobile);
}
}

View File

@@ -0,0 +1,143 @@
<?php
namespace app\admin\controller;
use think\Controller;
use think\facade\Request;
class BlindBox extends Common
{
//获取盲盒礼物
public function get_blind_box_gift_list()
{
$tid = input('tid', 0);
$result = model('BlindBox')->get_blind_box_gift_list($tid);
return ajaxReturn($result['code'], $result['msg'], $result['data']);
}
public function get_gift_list()
{
$result = model('BlindBox')->get_gift_list();
return ajaxReturn($result['code'], $result['msg'], $result['data']);
}
//获取列表
public function get_config_list()
{
$pattern_id = input('pattern_id', 0);
$gid = input('gid', '');
$page = input('page', 1);
$limit = input('limit', 20);
$result = model('BlindBox')->get_config_list($pattern_id, $gid, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $result['data']['count'];
$data['data'] = $result['data']['list'];
return json($data);
}
//添加限定礼物配置
public function add_config(){
$data = input('post.');
$result = model('BlindBox')->add_config($data);
return ajaxReturn($result['code'], $result['msg'], $result['data']);
}
//限定礼物配置详情
public function get_config_info(){
$id = input('id', 0);
$result = model('BlindBox')->get_config_info($id);
return ajaxReturn($result['code'], $result['msg'], $result['data']);
}
//限定礼物修改
public function edit_config(){
$data = input('post.');
$result = model('BlindBox')->edit_config($data);
return ajaxReturn($result['code'], $result['msg'], $result['data']);
}
//移除封禁
public function del_config(){
$id = input('id', 0);
$result = model('BlindBox')->del_config($id);
return ajaxReturn($result['code'], $result['msg'], $result['data']);
}
//获取阶段列表
public function get_stage_list()
{
$pattern_id = input('pattern_id', 0);
$page = input('page', 1);
$limit = input('limit', 20);
$result = model('BlindBox')->get_stage_list($pattern_id, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $result['data']['count'];
$data['data'] = $result['data']['list'];
return json($data);
}
//阶段详情
public function get_stage_info(){
$id = input('id', 0);
$result = model('BlindBox')->get_stage_info($id);
return ajaxReturn($result['code'], $result['msg'], $result['data']);
}
//阶段修改
public function edit_stage(){
$data = input('post.');
$result = model('BlindBox')->edit_stage($data);
return ajaxReturn($result['code'], $result['msg'], $result['data']);
}
//获取期数列表
public function get_term_list()
{
$status = input('status', 0);
$gid = input('gid', '');
$page = input('page', 1);
$limit = input('limit', 20);
$result = model('BlindBox')->get_term_list($status, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $result['data']['count'];
$data['data'] = $result['data']['list'];
return json($data);
}
//添加期数
public function add_term(){
$data = input('post.');
$result = model('BlindBox')->add_term($data);
return ajaxReturn($result['code'], $result['msg'], $result['data']);
}
//期数详情
public function get_term_info(){
$id = input('id', 0);
$result = model('BlindBox')->get_term_info($id);
return ajaxReturn($result['code'], $result['msg'], $result['data']);
}
//期数修改
public function edit_term(){
$data = input('post.');
$result = model('BlindBox')->edit_term($data);
return ajaxReturn($result['code'], $result['msg'], $result['data']);
}
//移除期数
public function del_term(){
$id = input('id', 0);
$result = model('BlindBox')->del_term($id);
return ajaxReturn($result['code'], $result['msg'], $result['data']);
}
public function open_term(){
$id = input('id', 0);
$result = model('BlindBox')->open_term($id);
return ajaxReturn($result['code'], $result['msg'], $result['data']);
}
}

View File

@@ -0,0 +1,46 @@
<?php
namespace app\admin\controller;
use think\Controller;
use think\facade\Request;
class Block extends Common
{
//获取列表
public function get_block_list()
{
$type = input('type', 0);
$type_text = input('type_text', '');
$is_delete = input('is_delete', 0);
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Block')->get_block_list($type, $type_text, $is_delete, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//添加封禁
public function add_block(){
$aid = $this->aid;
$data = input('post.');
$reslut = model('Block')->add_block($aid, $data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//移除封禁
public function del_block(){
$id = input('id', 0);
$reslut = model('Block')->del_block($id);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
}

View File

@@ -0,0 +1,339 @@
<?php
namespace app\admin\controller;
use think\Controller;
use think\facade\Request;
class Box extends Common
{
//获取宝箱列表
public function get_box_type_list()
{
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Box')->get_box_type_list($page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
public function get_box_count_type_list()
{
$reslut = model('Box')->get_box_count_type_list();
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['data'] = $reslut['data']['list'];
return json($data);
}
public function get_box_person_type_list()
{
$reslut = model('Box')->get_box_person_type_list();
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['data'] = $reslut['data']['list'];
return json($data);
}
public function get_box_common_type_list()
{
$reslut = model('Box')->get_box_common_type_list();
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取房间信息
public function get_box_type_info()
{
$tid = input('tid', 0);
$reslut = model('Box')->get_box_type_info($tid);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//添加类型
public function add_box_type()
{
$data = Request::only(['type_name', 'show_name', 'open_price', 'consume', 'open_status']);
$reslut = model('Box')->add_box_type($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//编辑类型
public function edit_box_type()
{
$data = Request::only(['tid', 'type_name', 'show_name', 'open_price', 'consume', 'rate', 'open_status']);
$reslut = model('Box')->edit_box_type($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//获取宝箱列表
public function get_box_config_list()
{
$tid = input('tid', 0);
$gid = input('gid', 0);
$gift_name = input('gift_name', '');
$gift_price = input('gift_price', 0);
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Box')->get_box_config_list($tid, $gid, $gift_name, $gift_price, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
$data['totalData'] = $reslut['data']['totalData'];
return json($data);
}
//获取礼物列表
public function get_gift_list()
{
$reslut = model('Gift')->gift_list(0, "", 0, 0, 0, 1, 2, 'gift_price', 'asc', 1, 99999, 1);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']['list']);
}
//添加宝箱信息
public function add_box_config()
{
$tid = input('tid', 0);
$gid = input('gid', 0);
$num = input('num', 0);
$open_num_obtain = input('open_num_obtain',0);
$is_public_screen = input('is_public_screen');
$is_public_server = input('is_public_server');
//二级密码
$pass = input('secondary_password', '');
$check_pass = model('admin/admin')->check_secondary_password($pass);
if($check_pass['code'] == 201){
return ajaxReturn($check_pass['code'], $check_pass['msg'], $check_pass['data']);
}
$reslut = model('box')->add_box_config($tid, $gid, $num, $open_num_obtain, $is_public_screen, $is_public_server);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//获取详情
public function get_box_config_info()
{
$bid = input('bid');
$reslut = model('box')->get_box_config_info($bid);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//修改宝箱信息
public function edit_box_config()
{
$bid = input('bid');
$gid = input('gid');
$num = input('num');
$accumulate_price = input('accumulate_price',0);
$accumulate_rate = input('accumulate_rate',0);
$open_num_obtain = input('open_num_obtain',0);
$is_public_screen = input('is_public_screen');
$is_public_server = input('is_public_server');
//二级密码
$pass = input('secondary_password', '');
$check_pass = model('admin/admin')->check_secondary_password($pass);
if($check_pass['code'] == 201){
return ajaxReturn($check_pass['code'], $check_pass['msg'], $check_pass['data']);
}
$reslut = model('box')->edit_box_config($bid, $gid, $num, $open_num_obtain, $accumulate_price, $accumulate_rate, $is_public_screen, $is_public_server);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//删除宝箱信息
public function delete_box_config()
{
$bid = input('bid');
//二级密码
$pass = input('pass', '');
$check_pass = model('admin/admin')->check_secondary_password($pass);
if($check_pass['code'] == 201){
return ajaxReturn($check_pass['code'], $check_pass['msg'], $check_pass['data']);
}
$reslut = model('box')->delete_box_config($bid);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//批量删除宝箱信息
public function batch_delete_box_config(){
//二级密码
$pass = input('pass', '');
$check_pass = model('admin/admin')->check_secondary_password($pass);
if($check_pass['code'] == 201){
return ajaxReturn($check_pass['code'], $check_pass['msg'], $check_pass['data']);
}
$data = input('info');
$reslut = model('box')->batch_delete_box_config($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//查看每期奖池列表
public function get_box_log_list()
{
$tid = input('tid', 0);
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Box')->get_box_log_list($tid, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取用户开奖记录
public function get_user_box_log_list()
{
$uid = input('uid', 0);
$bl_id = input('bl_id', 0);
$gid = input('gid', 0);
$tid = input('tid', 0);
$start = input('start', '');
$end = input('end', '');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Box')->get_user_box_log_list($uid, $bl_id, $gid, $tid, $start, $end, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
$data['totalRow'] = $reslut['data']['totalRow'];
return json($data);
}
//获取用户开奖记录
public function get_user_box_count_list()
{
$uid = input('uid', 0);
$out_amount = input('out_amount', 0);
$last_login_device = input('last_login_device','');
$profit = input('profit',0);
$tid = input('tid',0);
$add_time = input('add_time','');
$order = input('order', 'a.update_time');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Box')->get_user_box_count_list($uid, $out_amount, $last_login_device, $profit, $tid, $add_time, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
$data['totalRow'] = $reslut['data']['totalRow'];
return json($data);
}
//获取用户开奖记录
public function get_box_give_gift_list()
{
$uid = input('uid', 0);
$gid = input('gid', 0);
$gift_name = input('gift_name', '');
$give_status = input('give_status',0);
$deduction_status = input('deduction_status',0);
$start = input('start', '');
$give = input('give', '');
$deduction = input('deduction', '');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('BoxGiveGift')->get_box_give_gift_list($uid, $gid, $gift_name, $give_status, $deduction_status, $start, $give, $deduction, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//添加
public function add_give_gift()
{
$data = Request::only(['uid', 'tid', 'gid']);
//二级密码
$pass = input('secondary_password', '');
$check_pass = model('admin/admin')->check_secondary_password($pass);
if($check_pass['code'] == 201){
return ajaxReturn($check_pass['code'], $check_pass['msg'], $check_pass['data']);
}
$reslut = model('BoxGiveGift')->add_give_gift($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
public function cancel_give_gift()
{
$id = input('id', 0);
$reslut = model('BoxGiveGift')->cancel_give_gift($id);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//用户个池统计
public function get_box_person_log_list() {
$uid = input('user_id', 0);
$page = input('page', 1);
$limit = input('limit', 20);
$box_type = input('tid',0);
$reslut = model('Box')->get_box_person_log_list($box_type, $uid, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//清空积攒金额
public function accumulate_del(){
$reslut = model('Box')->accumulate_del();
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//获取房间开奖统计
public function get_room_box_count_list(){
$uid = input('uid',0);
$out_amount = input('out_amount','');
$tid = input('tid',0);
$add_time = input('add_time','');
$order = input('order', 'a.update_time');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Box')->get_room_box_count_list($uid, $out_amount, $tid, $add_time, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
$data['totalRow'] = $reslut['data']['totalRow'];
return json($data);
}
//获取房间开奖统计
public function get_room_box_counts_list(){
$uid = input('uid',0);
$out_amount = input('out_amount','');
$order = input('order', 'a.profit');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Box')->get_room_box_counts_list($uid, $out_amount, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
$data['totalRow'] = $reslut['data']['totalRow'];
return json($data);
}
}

View File

@@ -0,0 +1,307 @@
<?php
namespace app\admin\controller;
use think\Controller;
use think\Db;
class Capital extends Common
{
//获取资金改变类型
public function get_change_type()
{
$data = model('UserMoneyLog')->ChangeTypeLable();
return ajaxReturn(200, '', $data);
}
//获取资金类型
public function get_money_type()
{
$data = model('UserMoneyLog')->MoneyTypeLable();
return ajaxReturn(200, '', $data);
}
//获取资金日志列表
public function user_money_log()
{
$uid = input('uid', 0);
$nick_name = input('nick_name', 0);
$change_type = input('change_type', 0);
$money_type = input('money_type', '');
$change_value = input('change_value', '');
$from_id = input('from_id', 0);
$from_uid = input('from_uid', 0);
$order = input('order', 'a.log_id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Capital')->user_money_log($uid, $nick_name, $change_type, $money_type, $change_value, $from_id, $from_uid, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
$data['totalRow'] = $reslut['data']['totalRow'];
return json($data);
}
//获取充值订单
public function user_recharge()
{
$rid = input('rid', 0);
$order_sn = input('order_sn', 0);
$uid = input('uid', 0);
$nick_name = input('nick_name', '');
$money = input('money', '');
$pay_type = input('pay_type', 0);
$pay_status = input('pay_status', 0);
$start = input('start', '');
$end = input('end', '');
$order = input('order', 'a.rid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Capital')->user_recharge($rid, $order_sn, $uid, $nick_name, $money, $pay_type, $pay_status, $start, $end, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
$data['totalRow'] = $reslut['data']['totalRow'];
return json($data);
}
//获取提现订单 列表
public function user_withdrawal()
{
$wid = input('wid', 0);
$order_sn = input('order_sn', 0);
$uid = input('uid', 0);
$nick_name = input('nick_name', '');
$money = input('money', '');
$alipay_name = input('alipay_name', 0);
$status = input('status', 0);
$alipay_account = input('alipay_account', 0);
$order = input('order', 'a.wid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$withdrawal_type = input('withdrawal_type', 0);
$bank_card_number = input('bank_card_number', '');
$type = input('type', 0);
$deal_type = input('deal_type', 0);
$reslut = model('Capital')->user_withdrawal($wid, $order_sn, $uid, $nick_name, $money, $alipay_name, $status, $alipay_account, $order, $sort, $page, $limit,$withdrawal_type,$bank_card_number,$type,$deal_type);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
$data['totalRow'] = $reslut['data']['totalRow'];
return json($data);
}
//修改提现订单
public function user_withdrawal_edit()
{
$wid = input('wid', 0);
$status = input('status');
$remarke = input('remarke');
$deal_type = input('deal_type',0);
$data = model('Capital')->user_withdrawal_edit($wid, $status, $remarke, $deal_type);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//修改提现订单
public function user_withdrawal_edit_bank()
{
$wid = input('wid', 0);
$status = input('status');
$remarke = input('remarke');
$withd_type = input('withd_type',0);
$transfer_type = input('transfer_type',0);
$key_name = "api:user_withdrawal_edit_ss7" ;
redis_lock_exit($key_name,3);
$data = model('Capital')->user_withdrawal_edit_bank($wid, $status, $remarke,$withd_type,$transfer_type);
redis_unlock($key_name);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取提现订单详情
public function user_withdrawal_info()
{
$wid = input('wid', 0);
$reslut = model('Capital')->user_withdrawal_info($wid);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['data'] = $reslut['data'];
return json($data);
}
//获取兑换记录 列表
public function user_exchange()
{
$eid = input('eid', 0);
$uid = input('uid', 0);
$nick_name = input('nick_name', 0);
$money = input('money', '');
$integral = input('integral', '');
$order = input('order', 'a.eid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Capital')->user_exchange($eid, $uid, $nick_name, $money, $integral, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
$data['totalRow'] = $reslut['data']['totalRow'];
return json($data);
}
//获取用户赠送礼物记录 列表
public function user_send_gift()
{
$uid = input('uid', 0);
$room_id = input('room_id', 0);
$room_uid = input('room_uid', 0);
$receive_uid = input('receive_uid', '');
$gid = input('gid', '');
$gift_name = input('gift_name', 0);
$gift_from_type = input('gift_from_type', 0);
$is_tester = input('is_tester', 0);
$start = input('start', '');
$end = input('end', '');
$order = input('order', 'a.sid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Capital')->user_send_gift($uid, $room_id, $room_uid, $receive_uid, $gid, $gift_name, $gift_from_type, $is_tester, $start, $end, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
$data['totalRow'] = $reslut['data']['totalRow'];
return json($data);
}
//获取房间流水 列表
public function room_money_log()
{
$rid = input('rid', 0);
$room_number = input('room_number', 0);
$room_name = input('room_name', '');
$time1 = input('time1', '');
$time2 = input('time2', 0);
$order = input('order', 'a.sid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Capital')->room_money_log($rid, $room_number, $room_name, $time1, $time2, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
$data['totalRow'] = $reslut['data']['totalRow'];
return json($data);
}
//获取房间流水 列表
public function room_account_log()
{
$rid = input('rid', 0);
$room_number = input('room_number', 0);
$room_name = input('room_name', '');
$time1 = input('time1', '');
$time2 = input('time2', 0);
$order = input('order', 'a.sid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$cate_id = input('cate_id', 0);
$reslut = model('Capital')->room_account_log($rid, $room_number, $room_name, $time1, $time2, $order, $sort, $cate_id, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//财务统计
public function financial_statistics(){
$uid = input('uid', 0);
$start = input('time1', '');
$end = input('time2', '');
$reslut = model('Capital')->financial_statistics($uid, $start, $end);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//提现提交云账号
public function sumbit_yun()
{
$password = input('password', '');
$wid = input('wid', 0);
$key_name = "admin:capital:sumbit_yun:wid:" . $wid;
redis_lock_exit($key_name);
$result = model('Capital')->submit_yun($wid, $password);
redis_unlock($key_name);
ajaxReturn($result['code'], $result['msg'], $result['data']);
}
}

View File

@@ -0,0 +1,371 @@
<?php
namespace app\admin\controller;
use think\Controller;
class Cli extends Common
{
//关闭陪玩订单
public function close_palyer_order()
{
$key_name = "admin:cli:close_palyer_order";
redis_lock_exit($key_name);
$reslut = model('UserPlayerOrder')->close_palyer_order();
echo $reslut;
redis_unlock($key_name);
}
//清理过期装扮
public function clear_user_decorate()
{
$key_name = "admin:cli:clear_user_decorate";
redis_lock_exit($key_name);
$reslut = model('Decorate')->clear_user_decorate();
echo $reslut;
redis_unlock($key_name);
}
//监听结束房间PK状态 可以5秒执行一次 最好每秒执行一次
public function close_room_pk()
{
$key_name = "admin:cli:close_room_pk";
redis_lock_exit($key_name);
$reslut = model('api/Room')->close_room_pk();
redis_unlock($key_name);
// return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
echo date('Y-m-d H:i:s') . "监控房间PK 执行成功\r\n";
}
//刷新麦位信息 websocket 服务调用
public function push_micro_data()
{
$rid = input('rid', 0);
$push_data = [];
$push_data['code'] = 301;
$push_data['msg'] = "房间麦位信息";
$data = model('api/room')->get_room_micro_info($rid);
$push_data['data'] = $data['data'];
model('api/WebSocketPush')->send_to_group($rid, $push_data);
}
//用户退出房间 websokcet 服务调用
public function user_enter_room()
{
$rid = input('rid', 0);
$uid = input('uid', 0);
$key_name = "admin:cli:user_quit_room:rid:$rid:uid:$uid";
// error_log("进入直播间:$rid----$uid---\r\n", 3, "my-errors.log");
redis_lock_exit($key_name);
$reslut = model('api/room')->user_enter_room($uid, $rid);
redis_unlock($key_name);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//用户退出房间 websokcet 服务调用
public function user_quit_room()
{
$rid = input('rid', 0);
$uid = input('uid', 0);
// error_log("退出直播间:$rid----$uid---\r\n", 3, "my-errors.log");
$key_name = "admin:cli:user_quit_room:rid:$rid:uid:$uid";
redis_lock_exit($key_name);
$reslut = model('api/room')->quit_room($uid, $rid);
redis_unlock($key_name);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//监控宝箱状态 设置5s 监控一次
public function control_box()
{
$key_name = "admin:cli:control_box";
$tid = input('tid', 0);
$is_reset = input('is_reset', 0);
redis_lock_exit($key_name,20);
$reslut = model('admin/box')->control_generate_box($tid, $is_reset);
redis_unlock($key_name);
if($is_reset){
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}else{
echo date('Y-m-d H:i:s') . "监控奖池 执行成功" . $reslut['data'] . "\r\n";
}
}
//监控宝箱状态 设置5s 监控一次
public function controls_box()
{
$key_name = "admin:cli:control_box";
$tid = input('tid', 0);
$is_reset = input('is_reset', 0);
//二级密码
$pass = input('pass', '');
$check_pass = model('admin/admin')->check_secondary_password($pass);
if($check_pass['code'] == 201){
return ajaxReturn($check_pass['code'], $check_pass['msg'], $check_pass['data']);
}
redis_lock_exit($key_name,20);
$reslut = model('admin/box')->control_generate_box($tid, $is_reset);
redis_unlock($key_name);
if($is_reset){
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}else{
echo date('Y-m-d H:i:s') . "监控奖池 执行成功" . $reslut['data'] . "\r\n";
}
}
//监控宝箱状态 设置5s 监控一次
public function control_boxs()
{
$key_name = "admin:cli:control_boxs";
$tid = input('tid', 0);
$is_reset = input('is_reset', 0);
redis_lock_exit($key_name,20);
$reslut = model('admin/box')->control_generate_boxs($tid, $is_reset);
redis_unlock($key_name);
if($is_reset){
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}else{
echo date('Y-m-d H:i:s') . "监控奖池 执行成功" . $reslut['data'] . "\r\n";
}
}
//监控个人宝箱状态 设置5s 监控一次
// public function person_control_box()
// {
// $tid = input('tid',0);
// $key_name = "admin:cli:person_control_box:".$tid;
// redis_lock_exit($key_name,600);
// $reslut = model('admin/box')->control_person_box($tid);
// redis_unlock($key_name);
// echo date('Y-m-d H:i:s') . "监控奖池 执行成功" . $reslut['data'] . "\r\n";
// }
//清理房间当天热度
public function clear_room_hot_value(){
$key_name = "admin:cli:clear_room_hot_value";
redis_lock_exit($key_name);
$reslut = model('api/room')->clear_room_hot_value();
redis_unlock($key_name);
echo date('Y-m-d H:i:s') . "清除房间当天热度 执行成功"." \r\n";
}
//监控个人宝箱状态 设置5s 监控一次
// public function control_user_box()
// {
// $tid = input('tid',0);
// $uid = input('uid',0);
// $key_name = "admin:cli:control_user_box:".$tid.':'.$uid;
// redis_lock_exit($key_name);
// $reslut = model('admin/box')->control_user_box($uid,$tid);
// redis_unlock($key_name);
// echo date('Y-m-d H:i:s') . "监控奖池 执行成功" . $reslut['data'] . "\r\n";
// }
public function user_clear_box(){
$tid = input('tid',0);
$key_name = "admin:cli:user_clear_box";
redis_lock_exit($key_name);
$reslut = model('admin/box')->user_clear_box($tid);
redis_unlock($key_name);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
public function control_accumulate_box(){
$key_name = "admin:cli:control_accumulate_box";
redis_lock_exit($key_name);
$reslut = model('admin/box')->control_accumulate_box();
redis_unlock($key_name);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
public function control_user_box(){
$key_name = "admin:cli:control_user_box";
redis_lock_exit($key_name);
$reslut = model('admin/box')->control_user_box();
redis_unlock($key_name);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//异步推送送礼物
public function async_push_message()
{
$reslut = model('api/AsyncPushMessage')->send_message();
}
/*******************************定时任务*************************************/
//定时查询签约是否结束进行解约
public function close_user_sign_contract(){
$key_name = "admin:cli:close_user_sign_contract";
redis_lock_exit($key_name);
$reslut = model('api/UserSignContract')->close_user_sign_contract();
redis_unlock($key_name);
}
//定时清理到期心动连线
public function close_room_dating_stage(){
$key_name = "admin:cli:close_room_dating_stage";
redis_lock_exit($key_name);
$reslut = model('api/DatingRoom')->close_room_dating_stage();
redis_unlock($key_name);
echo date('Y-m-d H:i:s') . "监控心动连线倒计时 执行成功" . $reslut['code'] . "\r\n";
}
//定时清理到期私密小屋
public function close_room_privacy_status(){
$key_name = "api:cli:close_room_privacy_status";
redis_lock_exit($key_name);
$reslut = model('api/DatingRoom')->close_room_privacy_status();
redis_unlock($key_name);
echo date('Y-m-d H:i:s') . "监控私密小屋倒计时 执行成功" . $reslut['code'] . "\r\n";
}
//定时更新到期游客记录
public function close_room_visitor(){
$key_name = "admin:cli:close_room_visitor";
redis_lock_exit($key_name);
$reslut = model('api/RoomVisitor')->close_room_visitor();
redis_unlock($key_name);
}
//定时结束唱歌时间
public function colse_room_song_user_status(){
$key_name = "admin:cli:colse_room_song_user_status";
redis_lock_exit($key_name);
$reslut = model('api/KtvRoom')->colse_room_song_user_status();
redis_unlock($key_name);
}
//定时清除用户关系
public function close_user_relation(){
$key_name = "admin:cli:close_user_relation";
redis_lock_exit($key_name);
$reslut = model('api/DatingRoom')->close_user_relation();
redis_unlock($key_name);
}
//统计上周房间流水
public function statistics_room_last_week_earnings(){
$type = input('type', 0);
$key_name = "admin:cli:statistics_room_last_week_earnings:type:".$type;
redis_lock_exit($key_name);
$reslut = model('api/RoomSubsidy')->statistics_room_last_week_earnings($type);
redis_unlock($key_name);
}
//发送用户收益
public function give_user_room_week_earnings(){
$type = input('type', 0);
$key_name = "admin:cli:give_user_room_week_earnings:type:".$type;
redis_lock_exit($key_name);
$reslut = model('api/RoomSubsidy')->give_user_room_week_earnings($type);
redis_unlock($key_name);
}
//统计用户收益
public function gives_user_room_week_earnings(){
$type = input('type', 0);
$key_name = "admin:cli:gives_user_room_week_earnings:type:".$type;
redis_lock_exit($key_name);
$reslut = model('api/RoomSubsidy')->gives_user_room_week_earnings($type);
redis_unlock($key_name);
}
//统计上周公会流水
public function statistics_guild_last_week_earnings(){
$type = input('type', 0);
$key_name = "admin:cli:statistics_guild_last_week_earnings:type:".$type;
redis_lock_exit($key_name);
$reslut = model('api/GuildSubsidy')->statistics_guild_last_week_earnings($type);
redis_unlock($key_name);
}
//统计公会长收益
public function gives_user_guild_week_earnings(){
$type = input('type', 0);
$key_name = "admin:cli:gives_user_guild_week_earnings:type:".$type;
redis_lock_exit($key_name);
$reslut = model('api/GuildSubsidy')->gives_user_guild_week_earnings($type);
redis_unlock($key_name);
}
//定时关闭没有主持房间
public function close_room_status(){
$key_name = "admin:cli:close_room_status";
redis_lock_exit($key_name);
$reslut = model('api/RoomMicro')->close_room_status();
redis_unlock($key_name);
}
//到期会员清除
public function close_user_vip(){
$key_name = "admin:cli:close_user_vip";
redis_lock_exit($key_name);
$reslut = model('api/Vip')->close_user_vip();
redis_unlock($key_name);
}
//解约用户每天降低身价
public function relieve_user_sign_contract(){
$key_name = "admin:cli:relieve_user_sign_contract";
redis_lock_exit($key_name);
$reslut = model('api/UserSignContract')->relieve_user_sign_contract();
redis_unlock($key_name);
}
//监控仲夏夜梦曲
public function create_sprite_log(){
$key_name = "admin:cli:create_sprite_log";
redis_lock_exit($key_name,1,1);
$reslut = model('api/Sprite')->create_sprite_log();
redis_unlock($key_name);
if($reslut['code'] == 201){
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}else{
echo date('Y-m-d H:i:s') . "监控仲夏夜梦曲 执行成功" . $reslut['data'] . "\r\n";
}
}
//监控仲夏夜梦曲结算用户投票
public function close_user_sprite(){
$key_name = "admin:cli:close_user_sprite";
redis_lock_exit($key_name,1,1);
$reslut = model('api/Sprite')->close_user_sprite();
redis_unlock($key_name);
if($reslut['code'] == 201){
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}else{
echo date('Y-m-d H:i:s') . "监控仲夏夜梦曲结算用户投票 执行成功" . $reslut['data'] . "\r\n";
}
}
public function close_auction_pm(){
$key_name = "admin:cli:close_auction_pm";
$data = model('api/AuctionRoom')->close_auction_pm();
redis_unlock($key_name);
return ajaxReturn($data['code'], $data['msg'], $data['data']);
}
}

View File

@@ -0,0 +1,93 @@
<?php
namespace app\admin\controller;
use think\Controller;
use think\Db;
class Common extends Controller
{
public $aid;
public function initialize()
{
header('Access-Control-Allow-Origin: *');
// ajaxReturn(301, '系统维护');
$login_token = input('login_token', 0);
$reslut = model('Admin')->check_login_token($login_token);
if ($reslut['code'] == 201) {
return ajaxReturn(301, $reslut['msg'], $reslut['data']);
} else {
$this->aid = $reslut['data'];
}
$check_ip = $this->check_ip();
if($check_ip['code'] == 201){
db::name('admin')->where('aid', $this->aid)->update(['login_token' => '']);
return ajaxReturn(301, $check_ip['msg'], $check_ip['data']);
}
$header = request()->header();
if(!isset($header['referer'])){
return ajaxReturn(301, '登录失效', $reslut['data']);
}
add_operation(1, $this->aid); //用户行为日志
}
public function check_login_status()
{
$user_name = Db::name("admin")->where(array("aid" => $this->aid))->value("user_name");
$data['data'] = $user_name;
$check_ip = $this->check_ip();
if($check_ip['code'] == 201){
db::name('admin')->where('aid', $this->aid)->update(['login_token' => '']);
return ajaxReturn(301, $check_ip['msg'], $check_ip['data']);
}
ajaxReturn(1, '登录成功', $data);
}
public function get_menu_list()
{
$data = model('SystemMenu')->getSystemInit($this->aid);
return json($data);
}
//限制ip
public function check_ip(){
$check_ip = request()->ip();
if($check_ip){
// $check_ip = explode('.',$check_ip);
// $check_ip = $check_ip[0].'.'.$check_ip[1];
// $ip = array(
// '61.52',
// '219.157',
// '113.137',
// '117.37',
// '123.149',
// '125.41',
// '115.60',
// '113.141',
// '221.15',
// '36.46',
// '113.137',
// '123.53',
// '1.198',
// '111.18',
// '1.193',
// '119.137',
// '111.19'
// );
// if(!in_array($check_ip,$ip)){
// return ['code' => 201, 'msg' => 'ip不匹配无法登陆', 'data'=>null];
// }
$check_ips = has_ip();
if(!$check_ips){
return ['code' => 201, 'msg' => 'ip不匹配无法登陆', 'data'=>null];
}
}else{
return ['code' => 201, 'msg' => 'ip不匹配无法登陆', 'data'=>null];
}
return ['code' => 200, 'msg' => 'ip可登陆', 'data'=>null];
}
}

View File

@@ -0,0 +1,78 @@
<?php
namespace app\admin\controller;
use think\Controller;
class Config extends Common
{
//获取系统配置
public function config_list()
{
$cid = input('cid', 0);
$key_name = input('key_name', 0);
$order = input('order', 'cid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('config')->config_list($cid,$key_name,$order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取 配置 详情
public function config_info()
{
$cid = input('cid', 0);
$data = model('config')->config_info($cid);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//编辑 配置
public function edit_config()
{
$data = input('post.');
$data = model('config')->edit_config($data);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//添加 配置
public function add_config()
{
$data = input('post.');
$data = model('config')->add_config($data);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除 配置
public function del_config()
{
$cid = input('cid', 0);
$data = model('config')->del_config($cid);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
}

View File

@@ -0,0 +1,265 @@
<?php
namespace app\admin\controller;
use think\Controller;
use think\Request;
class Decorate extends Common
{
//获取装扮列表
public function get_decorate_list()
{
$title = input('title', '');
$type = input('type', 0);
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('decorate')->get_decorate_list($title, $type, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取装扮列表
public function get_decorates_list()
{
$reslut = model('decorate')->get_decorates_list();
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['data'] = $reslut['data']['list'];
return json($data);
}
//修改装扮信息
public function edit_decorate_info()
{
$did = input('did', 0);
$title = input('title', ''); //所属分类
$type = input('type', 0); //装扮类型
$file_type = input('file_type', 1);
$base_image = input('base_image', '');
$play_image = input('play_image', '');
$plays_image = input('plays_image', '');
$show_status = input('show_status', 0); //所属分类
$day = input('day', 0);
$price = input('price', 0);
$is_buy = input('is_buy', 1);
$data = model('decorate')->edit_decorate_info($did, $title, $type, $base_image, $play_image, $show_status, $day, $price, $file_type, $plays_image,$is_buy);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//添加装扮
public function add_decorate_info()
{
$title = input('title', ''); //所属分类
$type = input('type', 0); //装扮类型
$file_type = input('file_type', 1);
$base_image = input('base_image', '');
$play_image = input('play_image', '');
$plays_image = input('plays_image', '');
$day = input('day', 0);
$price = input('price', 0);
$show_status = input('show_status', 0);
$is_buy = input('is_buy', 1);
$data = model('decorate')->add_decorate_info($title, $type, $base_image, $play_image, $day, $price, $show_status, $file_type, $plays_image,$is_buy);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取装扮信息
public function get_decorate_info()
{
$did = input('did', 0);
$data = model('decorate')->get_decorate_info($did);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除装扮
public function delete_decorate_info()
{
$did = input('did', 0);
$data = model('decorate')->delete_decorate_info($did);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取用户装扮列表
public function get_user_decorate_list()
{
$uid = input('uid', 0);
$did = input('did', 0);
$type = input('type', 0);
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('decorate')->get_user_decorate_list($uid, $did, $type, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//赠送用户装扮
public function give_user_decorate()
{
$did = input('did', 0);
$day = input('day', 0);
$uid = input('uid', 0);
$data = model('decorate')->give_user_decorate($uid, $did, $day);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除用户赠送装扮
public function delete_user_decorate()
{
$udid = input('udid', 0);
$data = model('decorate')->delete_user_decorate($udid);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//用户头像装扮列表
public function get_head_decorate_list(){
$reslut = model('decorate')->get_head_decorate_list();
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['data'] = $reslut['data']['list'];
return json($data);
}
//用户坐骑装扮列表
public function get_mount_decorate_list(){
$reslut = model('decorate')->get_mount_decorate_list();
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['data'] = $reslut['data']['list'];
return json($data);
}
public function get_cp_tx_list(){
$reslut = model('decorate')->get_cp_tx_list();
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['data'] = $reslut['data']['list'];
return json($data);
}
//用户cp资料装扮列表
public function get_wind_decorate_list(){
$reslut = model('decorate')->get_wind_decorate_list();
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取装扮价位列表
public function get_decorate_price_list()
{
$did = input('did', 0);
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('decorate')->get_decorate_price_list($did, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//修改装扮价位信息
public function edit_decorate_price()
{
$id = input('id', 0);
$price = input('price', 0);
$day = input('day', 0);
$data = model('decorate')->edit_decorate_price($id, $price, $day);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//添加装扮价位
public function add_decorate_price()
{
$did = input('did', 0);
$price = input('price', 0);
$day = input('day', 0);
$data = model('decorate')->add_decorate_price($did, $price, $day);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取装扮价位信息
public function decorate_price_info()
{
$id = input('id', 0);
$data = model('decorate')->decorate_price_info($id);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除装扮价位
public function del_decorate_price()
{
$id = input('id', 0);
$data = model('decorate')->del_decorate_price($id);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
}

View File

@@ -0,0 +1,68 @@
<?php
namespace app\admin\controller;
use think\Controller;
class Envelope extends Common
{
//发红包列表
public function give_red_envelope_list(){
$id = input('id', 0);
$tid = input('tid', 0);
$type = input('type', 0);
$uid = input('uid', 0);
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Envelope')->give_red_envelope_list($id, $tid, $type, $uid, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
$data['totalRow'] = $reslut['data']['totalRow'];
return json($data);
}
//发红包
public function give_red_envelope(){
$tid = input('tid', 0);
$aid = $this->aid;
$num = input('num', 10);
$secondary_password = input('secondary_password', '');
$reslut = model('Envelope')->give_red_envelope($aid, $tid, $num, $secondary_password);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//抢红包记录
public function get_user_red_envelope_log_list(){
$rid = input('rid', 0);
$room_number = input('room_number', 0);
$room_name = input('room_name', '');
$uid = input('uid', 0);
$eid = input('eid', 0);
$tid = input('tid', 0);
$time1 = input('time1', '');
$time2 = input('time2', 0);
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Envelope')->get_user_red_envelope_log_list($rid, $room_number, $room_name, $uid, $eid, $tid, $time1, $time2, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
$data['totalRow'] = $reslut['data']['totalRow'];
return json($data);
}
}

View File

@@ -0,0 +1,178 @@
<?php
namespace app\admin\controller;
use think\Controller;
class Gift extends Common
{
//获取礼物列表
public function gift_list()
{
$gid = input('gid', 0);
$gift_name = input('gift_name', 0);
$gift_price = input('gift_price', '');
$is_public_screen = input('is_public_screen', '');
$is_public_server = input('is_public_server', '');
$is_show = input('is_show', '');
$is_can_buy = input('is_can_buy', '');
$type = input('type', 0);
$order = input('order', 'gid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Gift')->gift_list($gid, $gift_name, $gift_price, $is_public_screen, $is_public_server, $is_show, $is_can_buy, $order, $sort, $page, $limit, $type);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取 礼物 详情
public function gift_info()
{
$gid = input('gid', 0);
$data = model('Gift')->gift_info($gid);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//编辑 礼物
public function edit_gift()
{
$data = input('post.');
//二级密码
$pass = input('secondary_password', '');
$check_pass = model('admin/admin')->check_secondary_password($pass);
if($check_pass['code'] == 201){
return ajaxReturn($check_pass['code'], $check_pass['msg'], $check_pass['data']);
}
unset($data['secondary_password']);
$data = model('Gift')->edit_gift($data);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//添加 礼物
public function add_gift()
{
$data = input('post.');
$data = model('Gift')->add_gift($data);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除 礼物
public function del_gift()
{
$bid = input('gid', 0);
$data = model('Gift')->del_gift($bid);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//批量删除礼物
public function batch_delete_gift(){
$data = input('info');
$reslut = model('Gift')->batch_delete_gift($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//礼物位置
public function get_gift_position_list(){
$order = input('order', 'id');
$sort = input('sort', 'asc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Gift')->get_gift_position_list($order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取
public function get_privacy_gift_list()
{
$gid = input('gid', 0);
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Gift')->get_privacy_gift_list($gid, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取 详情
public function get_privacy_gift_info()
{
$id = input('id', 0);
$reslut = model('Gift')->get_privacy_gift_info($id);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//编辑
public function edit_privacy_gift()
{
$data = input('post.');
$reslut = model('Gift')->edit_privacy_gift($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//添加
public function add_privacy_gift()
{
$data = input('post.');
$reslut = model('Gift')->add_privacy_gift($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//删除
public function del_privacy_gift()
{
$id = input('id', 0);
$reslut = model('Gift')->del_privacy_gift($id);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//获取
public function get_optional_gift_list()
{
$gid = input('gid', 0);
$order = input('order', 'gid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Gift')->get_optional_gift_list($gid, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
}

View File

@@ -0,0 +1,313 @@
<?php
namespace app\admin\controller;
use think\Controller;
class Guild extends Common
{
//获取公会列表
public function guild_list()
{
$id = input('id', 0);
$guild_name = input('guild_name', 0);
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$jie_shan = input('jie_shan', 2);;
$reslut = model('Guild')->guild_list($id, $guild_name, $order, $sort, $page, $limit , $jie_shan);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取 公会 详情
public function guild_info()
{
$id = input('id', 0);
$reslut = model('Guild')->guild_info($id);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//编辑 公会
public function edit_guild()
{
$data = input('post.');
$reslut = model('Guild')->edit_guild($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//添加 公会
public function add_guild()
{
$data = input('post.');
$reslut = model('Guild')->add_guild($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//删除 公会
public function del_guild()
{
$bid = input('id', 0);
$reslut = model('Guild')->del_guild($bid);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//批量删除公会
public function batch_delete_guild(){
$data = input('info');
$reslut = model('Guild')->batch_delete_guild($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//用户公会信息
public function user_guild_info(){
$id = input('id', 0);
$reslut = model('Guild')->user_guild_info($id);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//编辑用户公会信息
public function edit_user_guild(){
$data = input('post.');
$reslut = model('Guild')->edit_user_guild($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//设置公会是否显示
public function set_is_show()
{
$id = input('id', 0);
$is_show = input('is_show', 0);
if(!in_array($is_show, [1,2])) {
ajaxReturn(201, '显示参数错误', '');
}
$result = model('Guild')->set_is_show($id, $is_show);
ajaxReturn($result['code'], $result['msg'], $result['data']);
}
//公会成员
public function get_user_guild_list(){
$id = input('id', 0);
$uid = input('uid', 0);
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Guild')->get_user_guild_list($id, $uid, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//公会流水排行
public function get_guild_rank_list(){
$id = input('id', 0);
$start = input('start', '');
$end = input('end', '');
$page = input('page', 1);
$limit = input('limit', 15);
$order = input('order', 'b.total_gift_total_price');
$sort = input('sort', 'desc');
$result = model('Guild')->get_guild_rank_list($id, $start, $end, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $result['data']['count'];
$data['data'] = $result['data']['list'];
// $data['totalRow'] = $result['data']['totalRow'];
return json($data);
}
//公会成员流水排行
public function get_guild_user_rank_list(){
$guild_id = input('guild_id', 0);
$uid = input('uid', 0);
$start = input('start', '');
$end = input('end', '');
$page = input('page', 1);
$limit = input('limit', 15);
$order = input('order', 'b.total_gift_total_price');
$sort = input('sort', 'desc');
$result = model('Guild')->get_guild_user_rank_list($guild_id, $uid, $start, $end, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $result['data']['count'];
$data['data'] = $result['data']['list'];
// $data['totalRow'] = $result['data']['totalRow'];
return json($data);
}
//公会房间流水排行
public function get_guild_room_rank_list(){
$guild_id = input('guild_id', 0);
$room_number = input('room_number', 0);
$start = input('start', '');
$end = input('end', '');
$page = input('page', 1);
$limit = input('limit', 15);
$order = input('order', 'b.total_gift_total_price');
$sort = input('sort', 'desc');
$result = model('Guild')->get_guild_room_rank_list($guild_id, $room_number, $start, $end, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $result['data']['count'];
$data['data'] = $result['data']['list'];
// $data['totalRow'] = $result['data']['totalRow'];
return json($data);
}
//工会流水
public function get_guild_money_list()
{
$guild_id = input('guild_id', 0);
$start = input('start', '');
$end = input('end', '');
$page = input('page', 1);
$limit = input('limit', 15);
$order = input('order', 'a.add_time');
$sort = input('sort', 'desc');
$result = model('GuildMoneyLog')->get_list($guild_id,$start, $end, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $result['data']['count'];
$data['data'] = $result['data']['list'];
$data['totalRow'] = $result['data']['totalRow'];
return json($data);
}
//工会房间流水
public function get_guild_room_money_list()
{
$guild_id = input('guild_id', 0);
$rid = input('rid', 0);
$start = input('start', '');
$end = input('end', '');
$page = input('page', 1);
$limit = input('limit', 15);
$order = input('order', 'a.add_time');
$sort = input('sort', 'desc');
$result = model('GuildMoneyLog')->get_guild_room_money_log_list($guild_id,$rid, $start, $end, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $result['data']['count'];
$data['data'] = $result['data']['list'];
$data['totalRow'] = $result['data']['totalRow'];
return json($data);
}
//获取工会房间
public function get_guild_room_list()
{
$guild_id = input('guild_id', 0);
$data = model('GuildMoneyLog')->get_guild_room_list_by_guild_id($guild_id);
ajaxReturn(200, '获取数据成功', $data);
}
//获取列表
public function give_guild_subsidy_list()
{
$guild_id = input('guild_id', 0);
$uid = input('uid', 0);
$is_fa = input('is_fa', 0);
$start = input('start', '');
$order = input('order', 'id');
$sort = input('sort', 'desc');
$belong_week = input('belong_week', '');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Guild')->give_guild_subsidy_list($guild_id, $uid, $is_fa, $order, $sort, $page, $limit, $belong_week);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['totalRow'] = $reslut['data']['totalRow'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//批量结算
public function batch_give_guild_subsidy(){
//二级密码
$pass = input('pass', '');
$check_pass = model('admin/admin')->check_secondary_password($pass);
if($check_pass['code'] == 201){
return ajaxReturn($check_pass['code'], $check_pass['msg'], $check_pass['data']);
}
$reslut = model('Guild')->batch_give_guild_subsidy();
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//补贴详情
public function get_give_guild_subsidy_info(){
$id = input('id', 0);
$reslut = model('Guild')->get_give_guild_subsidy_info($id);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//修改补贴
public function edit_give_guild_subsidy(){
//二级密码
$pass = input('secondary_password', '');
$check_pass = model('admin/admin')->check_secondary_password($pass);
if($check_pass['code'] == 201){
return ajaxReturn($check_pass['code'], $check_pass['msg'], $check_pass['data']);
}
$id = input('id', 0);
$user_earnings = input('user_earnings', 0);
$reslut = model('Guild')->edit_give_guild_subsidy($id, $user_earnings);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//解散公会
public function diss_guild(){
$guild_id = input('guild_id', '');
$reslut = model('Guild')->diss_guild($guild_id);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//解散公会
public function guild_combine(){
$cancel_guild_id = input('cancel_guild_id', 0);
$join_guild_id = input('join_guild_id', 0);
$reslut = model('Guild')->guild_combine($cancel_guild_id,$join_guild_id);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
}

View File

@@ -0,0 +1,45 @@
<?php
namespace app\admin\controller;
use think\Controller;
use think\facade\Request;
class Message extends Common
{
public function get_message_list()
{
$smid = input('smid', 0);
$title = input('title', '');
$order = input('order', 'smid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Message')->get_message_list($smid, $title, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
public function get_message_info()
{
$smid = input('smid', 0);
$reslut = model('Message')->get_message_info($smid);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
public function add_message()
{
$data = Request::only(['title', 'content']);
$reslut = model('Message')->add_message($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
public function edit_message()
{
$data = Request::only(['smid', 'title', 'content', 'is_show']);
$reslut = model('Message')->edit_message($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
}

View File

@@ -0,0 +1,142 @@
<?php
namespace app\admin\controller;
use think\Controller;
class Monster extends Common
{
//获取列表
public function get_monster_list()
{
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Monster')->get_monster_list($order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取详情
public function get_monster_info()
{
$id = input('id', 0);
$reslut = model('Monster')->get_monster_info($id);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//编辑
public function edit_monster()
{
$data = input('post.');
//二级密码
$pass = input('secondary_password', '');
$check_pass = model('admin/admin')->check_secondary_password($pass);
if($check_pass['code'] == 201){
return ajaxReturn($check_pass['code'], $check_pass['msg'], $check_pass['data']);
}
$reslut = model('Monster')->edit_monster($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//获取礼物列表
public function get_gift_list()
{
$reslut = model('Monster')->get_gift_list();
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取列表
public function get_monster_multiple_list()
{
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Monster')->get_monster_multiple_list($order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取详情
public function get_monster_multiple_info()
{
$id = input('id', 0);
$reslut = model('Monster')->get_monster_multiple_info($id);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//编辑
public function edit_monster_multiple()
{
$data = input('post.');
$reslut = model('Monster')->edit_monster_multiple($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//获取列表
public function get_monster_log(){
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Monster')->get_monster_log($order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
$data['totalRow'] = $reslut['data']['totalRow'];
return json($data);
}
//获取列表
public function get_user_monster_log(){
$mid = input('mid', 0);
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Monster')->get_user_monster_log($mid, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取列表
public function get_user_monster_win_log(){
$mid = input('mid', 0);
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Monster')->get_user_monster_win_log($mid, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
}

View File

@@ -0,0 +1,259 @@
<?php
namespace app\admin\controller;
use think\Controller;
class Multiple extends Common
{
//获取类型列表
public function get_gift_multiple_type_list()
{
$id = input('id', 0);
$name = input('name', 0);
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Multiple')->get_gift_multiple_type_list($id, $name, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取 类型 详情
public function get_gift_multiple_type_info()
{
$id = input('id', 0);
$reslut = model('Multiple')->get_gift_multiple_type_info($id);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//编辑 类型
public function edit_gift_multiple_type()
{
$data = input('post.');
$reslut = model('Multiple')->edit_gift_multiple_type($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//添加 类型
public function add_gift_multiple_type()
{
$data = input('post.');
$reslut = model('Multiple')->add_gift_multiple_type($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//删除 类型
public function del_gift_multiple_type()
{
$id = input('id', 0);
$reslut = model('Multiple')->del_gift_multiple_type($id);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//获取倍率列表
public function get_gift_multiple_rate_list()
{
$pid = input('pid', 0);
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Multiple')->get_gift_multiple_rate_list($pid, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取倍率详情
public function get_gift_multiple_rate_info()
{
$id = input('id', 0);
$reslut = model('Multiple')->get_gift_multiple_rate_info($id);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//编辑
public function edit_gift_multiple_rate()
{
$data = input('post.');
$reslut = model('Multiple')->edit_gift_multiple_rate($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//添加
public function add_gift_multiple_rate()
{
$data = input('post.');
$reslut = model('Multiple')->add_gift_multiple_rate($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//删除
public function del_gift_multiple_rate()
{
$id = input('id', 0);
$reslut = model('Multiple')->del_gift_multiple_rate($id);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//获取
public function get_user_send_gift_rate_list()
{
$uid = input('uid', 0);
$room_id = input('room_id', 0);
$room_uid = input('room_uid', 0);
$receive_uid = input('receive_uid', '');
$gid = input('gid', '');
$gift_name = input('gift_name', 0);
$start = input('start', '');
$end = input('end', '');
$order = input('order', 'a.sid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Multiple')->get_user_send_gift_rate_list($uid, $room_id, $room_uid, $receive_uid, $gid, $gift_name, $start, $end, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
$data['totalRow'] = $reslut['data']['totalRow'];
return json($data);
}
//获取列表
public function room_subsidy()
{
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Multiple')->room_subsidy($order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取详情
public function room_subsidy_info()
{
$id = input('id', 0);
$reslut = model('Multiple')->room_subsidy_info($id);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['data'] = $reslut['data'];
return json($data);
}
//添加
public function add_room_subsidy()
{
$type = input('type', 1);
$level_name = input('level_name', '');
$total_gift_price = input('total_gift_price', 0);
$money = input('money', 0);
$data = model('Multiple')->add_room_subsidy($level_name, $total_gift_price, $money, $type);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//修改
public function edit_room_subsidy()
{
$id = input('id', 0);
$type = input('type', 1);
$level_name = input('level_name', '');
$total_gift_price = input('total_gift_price', 0);
$money = input('money', 0);
$data = model('Multiple')->edit_room_subsidy($id, $level_name, $total_gift_price, $money, $type);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取列表
public function give_room_subsidy_list()
{
$room_number = input('room_number', 0);
$uid = input('uid', 0);
$is_delete = input('is_delete', 0);
$start = input('start', '');
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Multiple')->give_room_subsidy_list($room_number, $uid, $is_delete, $order, $sort, $page, $limit, $start);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//批量结算
public function batch_give_room_subsidy(){
//二级密码
$pass = input('pass', '');
$check_pass = model('admin/admin')->check_secondary_password($pass);
if($check_pass['code'] == 201){
return ajaxReturn($check_pass['code'], $check_pass['msg'], $check_pass['data']);
}
$data = input('info');
$reslut = model('Multiple')->batch_give_room_subsidy($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//补贴详情
public function get_give_room_subsidy_info(){
$id = input('id', 0);
$reslut = model('Multiple')->get_give_room_subsidy_info($id);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//修改补贴
public function edit_give_room_subsidy(){
//二级密码
$pass = input('secondary_password', '');
$check_pass = model('admin/admin')->check_secondary_password($pass);
if($check_pass['code'] == 201){
return ajaxReturn($check_pass['code'], $check_pass['msg'], $check_pass['data']);
}
$id = input('id', 0);
$user_earnings = input('user_earnings', 0);
$reslut = model('Multiple')->edit_give_room_subsidy($id, $user_earnings);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//删除
public function room_subsidy_del()
{
$id = input('id', 0);
$data = model('Multiple')->room_subsidy_del($id);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
}

View File

@@ -0,0 +1,81 @@
<?php
namespace app\admin\controller;
use think\Controller;
use think\facade\Request;
class NewBox extends Common
{
//获取宝箱列表
public function get_new_box_list()
{
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('NewBox')->get_new_box_list($page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取房间信息
public function get_new_box_info()
{
$tid = input('id', 0);
$reslut = model('NewBox')->get_new_box_info($tid);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//编辑类型
public function edit_new_box()
{
$data = Request::only(['id', 'gid', 'total_amount','new_box_status']);
$reslut = model('NewBox')->edit_new_box($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//期数列表
public function get_new_box_log()
{
$page = input('page', 1);
$page_limit = input('limit', 15);
$nb_id = input('nb_id', 0);
$status = input('status', 0);
$reslut = model('NewBox')->get_new_box_log($nb_id, $status, $page, $page_limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//开奖记录
public function get_user_new_box_log()
{
$page = input('page', 1);
$page_limit = input('limit', 15);
$nb_id = input('nbl_id', 0);
$start_time = input('start_time', '');
$end_time = input('end_time', '');
$uid = input('uid', 0);
$reslut = model('NewBox')->get_user_new_box_log($uid, $nb_id, $start_time, $end_time, $page, $page_limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
$data['totalData'] = $reslut['data']['totalData'];
return json($data);
}
}

View File

@@ -0,0 +1,182 @@
<?php
namespace app\admin\controller;
use think\Controller;
class Nobility extends Common
{
//获取列表
public function get_nobility_list()
{
$order = input('order', 'lid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Nobility')->get_nobility_list($order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取详情
public function nobility_info()
{
$lid = input('lid', 0);
$data = model('Nobility')->nobility_info($lid);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//编辑
public function edit_nobility()
{
$data = input('post.');
//二级密码
// $pass = input('secondary_password', '');
// $check_pass = model('admin/admin')->check_secondary_password($pass);
// if($check_pass['code'] == 201){
// return ajaxReturn($check_pass['code'], $check_pass['msg'], $check_pass['data']);
// }
// unset($data['secondary_password']);
$data = model('Nobility')->edit_nobility($data);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取权限列表
public function get_nobility_power_list()
{
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Nobility')->get_nobility_power_list($order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//权限详情
public function nobility_power_info(){
$id = input('id', 0);
$data = model('Nobility')->nobility_power_info($id);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//编辑
public function edit_nobility_power()
{
$data = input('post.');
$data = model('Nobility')->edit_nobility_power($data);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取用户爵位列表
public function get_user_nobility_list()
{
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Nobility')->get_user_nobility_list($order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//列表
public function get_nobility_decorate_list()
{
$lid = input('lid', 0);
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Nobility')->get_nobility_decorate_list($lid, $order,$sort,$page,$limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取详情
public function nobility_decorate_info()
{
$id = input('id', 0);
$data = model('Nobility')->nobility_decorate_info($id);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//添加信息
public function add_nobility_decorate()
{
$lid = input('lid', 0);
$did = input('decorate_id', 0);
$day_num = input('day_num', 0);
$data = model('Nobility')->add_nobility_decorate($lid, $did, $day_num);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//修改信息
public function edit_nobility_decorate()
{
$id = input('id', 0);
$did = input('decorate_id', 0);
$day_num = input('day_num', 0);
$data = model('Nobility')->edit_nobility_decorate($id, $did,$day_num);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除
public function del_nobility_decorate()
{
$id = input('id', 0);
$data = model('Nobility')->del_nobility_decorate($id);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
}

View File

@@ -0,0 +1,238 @@
<?php
namespace app\admin\controller;
use think\Controller;
class Play extends Common
{
//游戏列表
public function game_list()
{
$gid = input('gid', 0);
$game_name = input('game_name', 0);
$is_show = input('is_show', '');
$order = input('order', 'gid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Play')->game_list($gid, $game_name, $is_show, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取 游戏 详情
public function game_info()
{
$gid = input('gid', 0);
$data = model('Play')->game_info($gid);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//编辑 游戏
public function edit_game()
{
$data = input('post.');
$data = model('Play')->edit_game($data);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//添加 游戏
public function add_game()
{
$data = input('post.');
$data = model('Play')->add_game($data);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除 游戏
public function del_game()
{
$gid = input('gid', 0);
$data = model('Play')->del_game($gid);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//游戏等级 列表
public function game_skill_level_list()
{
$lid = input('lid', 0);
$gid = input('gid', '');
$game_level_name = input('game_level_name', 0);
$order = input('order', 'a.lid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Play')->game_skill_level_list($lid, $gid, $game_level_name, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取 游戏等级 详情
public function game_skill_level_info()
{
$lid = input('lid', 0);
$data = model('Play')->game_skill_level_info($lid);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//编辑 游戏等级
public function edit_game_skill_level()
{
$data = input('post.');
$data = model('Play')->edit_game_skill_level($data);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//添加 游戏等级
public function add_game_skill_level()
{
$data = input('post.');
$data = model('Play')->add_game_skill_level($data);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除 游戏等级
public function del_game_skill_level()
{
$lid = input('lid', 0);
$data = model('Play')->del_game_skill_level($lid);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//游戏等级 列表
public function player_list()
{
$uid = input('uid', 0);
$nick_name = input('nick_name', '');
$sex = input('sex', 0);
$special_uid = input('special_uid', 0);
$gid = input('gid', 0);
$real_name = input('real_name', 0);
$is_top = input('is_top', 0);
$is_recommend = input('is_recommend', 0);
$is_business = input('is_business', 0);
$status = input('status', 0);
$order = input('order', 'a.pid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Play')->player_list($uid, $nick_name, $sex, $special_uid, $gid, $real_name, $is_top, $is_recommend, $is_business, $status, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取 陪玩主播 详情
public function player_info()
{
$pid = input('pid', 0);
$data = model('Play')->player_info($pid);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//编辑 陪玩主播
public function edit_player()
{
$data = input('post.');
$data = model('Play')->edit_player($data);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除 陪玩主播
public function del_player()
{
$pid = input('pid', 0);
$data = model('Play')->del_player($pid);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
// 陪玩订单 列表
public function player_order_list()
{
$order_sn = input('order_sn', 0);
$uid = input('uid', '');
$player_uid = input('player_uid', 0);
$price = input('price', 0);
$service_rate = input('service_rate', 0);
$status = input('status', 0);
$is_over = input('is_over', 0);
$order = input('order', '');
$sort = input('sort', '');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Play')->player_order_list($order_sn, $uid, $player_uid, $price, $service_rate, $status, $is_over, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取 陪玩订单 详情
public function player_order_info()
{
$oid = input('oid', 0);
$data = model('Play')->player_order_info($oid);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
}

View File

@@ -0,0 +1,49 @@
<?php
namespace app\admin\controller;
class Relation extends Common
{
//获取列表
public function get_list()
{
$page = input('page', 1);
$page_limit = input('limit', 10);
return model('admin/Relation')->get_list($page, $page_limit);
}
//添加
public function add()
{
$name = input('name', '');
$color = input('color', '');
$day = input('day', 0);
$result = model('admin/Relation')->add($name, $color, $day);
ajaxReturn($result['code'], $result['msg'], $result['data']);
}
//获取信息
public function get_info()
{
$id = input('id', 0);
$result = model('admin/Relation')->get_info($id);
ajaxReturn($result['code'], $result['msg'], $result['data']);
}
//编辑
public function edit()
{
$id = input('id', 0);
$name = input('name', '');
$color = input('color', '');
$day = input('day', 0);
$result = model('admin/Relation')->edit($id, $name, $color, $day);
ajaxReturn($result['code'], $result['msg'], $result['data']);
}
//删除
public function del()
{
$id = input('id', 0);
$result = model('admin/Relation')->del($id);
ajaxReturn($result['code'], $result['msg'], $result['data']);
}
}

View File

@@ -0,0 +1,133 @@
<?php
namespace app\admin\controller;
use think\Controller;
class Report extends Common
{
//获取举报列表
public function report_list()
{
$uid = input('uid', 0);
$to_uid = input('to_uid', 0);
$nick_name = input('nick_name', '');
$to_nick_name = input('to_nickname', '');
$order = input('order', 'rid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Report')->report_list($uid, $to_uid,$nick_name, $to_nick_name, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取举报详情
public function report_info()
{
$rid = input('rid', 0);
$data = model('Report')->report_info($rid);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//处理举报信息
public function edit_user_info()
{
$rid = input('rid', 0);
$status = input('status', '');
$data = model('Report')->edit_user_info($rid,$status);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除举报信息
public function del_Report()
{
$rid = input('rid', 0);
$data = model('Report')->del_Report($rid);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//举报类型 列表
public function report_type_list()
{
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Report')->report_type_list($order,$sort,$page,$limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取举报类型详情
public function report_type_info()
{
$id = input('id', 0);
$data = model('Report')->report_type_info($id);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//添加 举报类型信息
public function add_report_type()
{
$type_name = input('type_name', '');
$data = model('Report')->add_report_type($type_name);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//修改 举报类型信息
public function edit_report_type()
{
$id = input('id', 0);
$type_name = input('type_name', '');
$data = model('Report')->edit_report_type($id,$type_name);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除举报类型
public function del_report_type()
{
$id = input('id', 0);
$data = model('Report')->del_report_type($id);
if ($data['code'] == 0) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
}

View File

@@ -0,0 +1,692 @@
<?php
namespace app\admin\controller;
use think\Controller;
use think\facade\Request;
class Room extends Common
{
//获取房间列表
public function get_room_list()
{
$data = Request::only(['rid', 'room_number', 'room_owner_uid', 'room_name', 'tid', 'cate_id', 'is_hot', 'is_top', 'is_online', 'room_status', 'is_delete', 'is_earnings']);
$order = input('order', 'rid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Room')->get_room_list($data, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//添加房间
public function add_room()
{
$data = Request::only(['xq_type', 'room_owner_uid', 'room_number', 'room_background_id', 'cate_id', 'room_cover', 'tid', 'room_name', 'room_intro', 'hot_value', 'is_pretty', 'is_top', 'is_hot', 'is_need_password', 'room_password', 'room_status', 'is_online', 'is_delete','accumulate_rate']);
$reslut = model('Room')->add_room($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//修改房间信息
public function edit_room_info()
{
$data = Request::only(['xq_type', 'rid', 'cate_id', 'room_number', 'room_cover', 'tid', 'room_name', 'room_background_id', 'room_intro', 'hot_value', 'pretty_room_number', 'is_top', 'is_hot', 'is_need_password', 'room_password', 'room_status', 'is_online', 'is_delete', 'sort', 'accumulate_rate','is_look','is_show_dial', 'envelope_rate', 'is_earnings', 'is_show_room','robot_num']);
$reslut = model('Room')->edit_room_info($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//获取房间信息
public function get_room_info()
{
$rid = input('rid', 0);
$reslut = model('Room')->get_room_info($rid);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//删除房间
public function room_del()
{
$rid = input('rid', 0);
$data = model('Room')->room_del($rid);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取房间列表
public function get_room_visitor_list()
{
$data = Request::only(['rid', 'uid', 'is_micro']);
$order = input('order', 'vid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Room')->get_room_visitor_list($data, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取房间分类列表
public function room_cate_list()
{
$cate_id = input('cate_id', 0);
$category_name = input('category_name', 0);
$order = input('order', 'cate_id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Room')->room_cate_list($cate_id, $category_name, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取房间分类详情
public function get_room_cate_info()
{
$cate_id = input('cate_id', 0);
$reslut = model('Room')->get_room_cate_info($cate_id);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['data'] = $reslut['data'];
return json($data);
}
//修改房间分类
public function room_cate_edit()
{
$cate_id = input('cate_id', 0);
$category_name = input('category_name', '');
$tid = input('tid', 0);
$sort = input('sort', 0);
$data = model('Room')->room_cate_edit($cate_id, $tid, $category_name, $sort);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//添加房间分类
public function add_room_cate()
{
$category_name = input('category_name', '');
$tid = input('tid', 0);
$sort = input('sort', 0);
$data = model('Room')->add_room_cate($tid, $category_name, $sort);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除房间分类
public function room_cate_del()
{
$cate_id = input('cate_id', 0);
$data = model('Room')->room_cate_del($cate_id);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取房间类型列表
public function get_room_type_list()
{
$tid = input('tid', 0);
$type_name = input('type_name', 0);
$order = input('order', 'tid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Room')->get_room_type_list($tid, $type_name, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取房间类型详情
public function get_room_type_info()
{
$tid = input('tid', 0);
$reslut = model('Room')->get_room_type_info($tid);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['data'] = $reslut['data'];
return json($data);
}
//修改房间类型
public function edit_room_type_info()
{
$tid = input('tid', 0);
$type_name = input('type_name', '');
$data = model('Room')->edit_room_type_info($tid, $type_name);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//添加房间类型
public function add_room_type()
{
$type_name = input('type_name', '');
$data = model('Room')->add_room_type($type_name);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除房间类型
public function room_type_del()
{
$tid = input('tid', 0);
$data = model('Room')->room_type_del($tid);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取房间背景列表
public function room_background_list()
{
$bid = input('bid', 0);
$image_name = input('image_name', 0);
$order = input('order', 'bid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Room')->room_background_list($bid, $image_name, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取房间背景详情
public function background_info()
{
$bid = input('bid', 0);
$reslut = model('Room')->background_info($bid);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['data'] = $reslut['data'];
return json($data);
}
//添加房间背景
public function add_room_background()
{
$image_name = input('image_name');
$image_url = input('image_url');
$image_size = input('image_size');
$status = input('status');
$data = model('Room')->add_room_background($image_name, $image_url, $image_size, $status);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//修改房间背景
public function edit_room_background()
{
$bid = input('bid', 0);
$image_name = input('image_name');
$image_url = input('image_url');
$image_size = input('image_size');
$status = input('status');
$data = model('Room')->edit_room_background($bid, $image_name, $image_url, $image_size, $status);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除房间背景
public function room_background_del()
{
$bid = input('bid', 0);
$data = model('Room')->room_background_del($bid);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取房间表情列表
public function room_emoji_list()
{
$eid = input('eid', 0);
$emoji_type = input('emoji_type', 0);
$type = input('type'); //1非交互表情2交互表情
$name = input('name'); //图片名称
$order = input('order', 'eid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Room')->room_emoji_list($eid, $type, $name, $emoji_type, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取房间表情详情
public function room_emoji_info()
{
$eid = input('eid', 0);
$reslut = model('Room')->room_emoji_info($eid);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['data'] = $reslut['data'];
return json($data);
}
//添加房间表情
public function add_room_emoji()
{
$emoji_type = input('emoji_type', 1);
$nid = input('nid', 0);
$type = input('type');
$name = input('name');
$pid = input('pid');
$image = input('image');
$second = input('second');
$result = input('result');
$show_status = input('show_status');
$sort = input('sort');
$data = model('Room')->add_room_emoji($pid, $type, $name, $emoji_type, $nid, $image, $second, $result, $show_status, $sort);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//修改房间表情
public function edit_room_emoji()
{
$eid = input('eid', 0);
$emoji_type = input('emoji_type', 1);
$nid = input('nid', 0);
$type = input('type');
$pid = input('pid');
$name = input('name');
$image = input('image');
$second = input('second');
$result = input('result');
$show_status = input('show_status');
$sort = input('sort');
$data = model('Room')->edit_room_emoji($eid, $pid, $type, $name, $emoji_type, $nid, $image, $second, $result, $show_status, $sort);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除房间表情
public function del_room_emoji()
{
$eid = input('eid', 0);
$data = model('Room')->del_room_emoji($eid);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取房间音乐列表
public function room_music_list()
{
$mid = input('mid', 0);
$music_name = input('music_name', 0);
$singer = input('singer', 0);
$order = input('order', 'mid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Room')->room_music_list($mid, $music_name, $singer, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取房间音乐
public function music_info()
{
$mid = input('mid', 0);
$reslut = model('Room')->music_info($mid);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['data'] = $reslut['data'];
return json($data);
}
//添加房间音乐
public function add_room_music()
{
$music_name = input('music_name');
$singer = input('singer');
$music_url = input('music_url');
$music_size = input('music_size');
$status = input('status');
$music_type = input('music_type');
$data = model('Room')->add_room_music($music_name, $singer, $music_url, $music_size, $status, $music_type);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//修改房间音乐
public function edit_room_music()
{
$mid = input('mid', 0);
$music_name = input('music_name');
$singer = input('singer');
$music_url = input('music_url');
$music_size = input('music_size');
$status = input('status');
$music_type = input('music_type');
$data = model('Room')->edit_room_music($mid, $music_name, $singer, $music_url, $music_size, $status, $music_type);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除房间音乐
public function room_music_del()
{
$mid = input('mid', 0);
$data = model('Room')->room_music_del($mid);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取列表
public function room_subsidy()
{
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Room')->room_subsidy($order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取详情
public function room_subsidy_info()
{
$id = input('id', 0);
$reslut = model('Room')->room_subsidy_info($id);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['data'] = $reslut['data'];
return json($data);
}
//添加
public function add_room_subsidy()
{
$type = input('type', 1);
$level_name = input('level_name', '');
$total_gift_price = input('total_gift_price', 0);
$money = input('money', 0);
$data = model('Room')->add_room_subsidy($level_name, $total_gift_price, $money, $type);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//修改
public function edit_room_subsidy()
{
$id = input('id', 0);
$type = input('type', 1);
$level_name = input('level_name', '');
$total_gift_price = input('total_gift_price', 0);
$money = input('money', 0);
$data = model('Room')->edit_room_subsidy($id, $level_name, $total_gift_price, $money, $type);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除
public function room_subsidy_del()
{
$id = input('id', 0);
$data = model('Room')->room_subsidy_del($id);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取列表
public function give_room_subsidy_list()
{
$room_number = input('room_number', 0);
$owner_uid = input('owner_uid', 0);
$is_fa = input('is_fa', 0);
$belong_week = input('belong_week', '');
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Room')->give_room_subsidy_list($room_number, $owner_uid, $is_fa, $order, $sort, $page, $limit, $belong_week);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
$data['totalRow'] = $reslut['data']['totalRow'];
return json($data);
}
//批量结算
public function batch_give_room_subsidy(){
//二级密码
$pass = input('pass', '');
$check_pass = model('admin/admin')->check_secondary_password($pass);
if($check_pass['code'] == 201){
return ajaxReturn($check_pass['code'], $check_pass['msg'], $check_pass['data']);
}
$data = input('info');
$reslut = model('Room')->batch_give_room_subsidy($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//补贴详情
public function get_give_room_subsidy_info(){
$id = input('id', 0);
$reslut = model('Room')->get_give_room_subsidy_info($id);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//房间明细
public function room_week_earnings_info(){
$id = input('id', 0);
$reslut = model('Room')->room_week_earnings_log_info($id);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//修复
public function room_week_earnings_log_edit(){
$data = input();
$reslut = model('Room')->room_week_earnings_log_edit($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//修改补贴
public function edit_give_room_subsidy(){
//二级密码
$pass = input('secondary_password', '');
$check_pass = model('admin/admin')->check_secondary_password($pass);
if($check_pass['code'] == 201){
return ajaxReturn($check_pass['code'], $check_pass['msg'], $check_pass['data']);
}
$id = input('id', 0);
$user_earnings = input('user_earnings', 0);
$reslut = model('Room')->edit_give_room_subsidy($id, $user_earnings);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//检测房间
public function check_room(){
$rid = input('rid', 0);
$reslut = model('room')->check_room($rid);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//清理房间异常麦位
public function check_room_micro(){
$rid = input('rid', 0);
$reslut = model('room')->check_room_micro($rid);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//获取举报列表
public function room_apply_list()
{
$page = input('page', 1);
$limit = input('limit', 20);
$room_owner_uid = input('room_owner_uid', 0);
$room_number = input('room_number', 0);
$apply_status = input('apply_status', 0);
$reslut = model('Room')->room_apply_list($room_owner_uid,$room_number,$apply_status,$page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
public function room_apply_info(){
$id = input('id', 0);
$reslut = model('room')->room_apply_info($id);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
public function room_apply_edit(){
$data = input();
$reslut = model('room')->room_apply_edit($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//踢禁记录
public function out_forbid_log(){
$data = Request::only(['operator_uid', 'uid', 'room_number', 'pay_type', 'start', 'end']);
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('room')->out_forbid_log($data,$page,$limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
public function jie_word(){
$fid = input('fid', '');
$reslut = model('room')->jie_word($fid);
return json($reslut);
}
}

View File

@@ -0,0 +1,198 @@
<?php
namespace app\admin\controller;
use think\Controller;
class Sprite extends Common
{
//获取列表
public function get_monster_list()
{
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Sprite')->get_monster_list($order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取详情
public function get_monster_info()
{
$id = input('id', 0);
$reslut = model('Sprite')->get_monster_info($id);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//编辑
public function edit_monster()
{
$data = input('post.');
//二级密码
$pass = input('secondary_password', '');
$check_pass = model('admin/admin')->check_secondary_password($pass);
if($check_pass['code'] == 201){
return ajaxReturn($check_pass['code'], $check_pass['msg'], $check_pass['data']);
}
$reslut = model('Sprite')->edit_monster($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//获取礼物列表
public function get_gift_list()
{
$reslut = model('Gift')->gift_list(0, "", 0, 0, 0, 1, 0, 'gift_price', 'asc', 1, 99999, 1);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']['list']);
}
//获取列表
public function get_monster_multiple_list()
{
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Sprite')->get_monster_multiple_list($order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取详情
public function get_monster_multiple_info()
{
$id = input('id', 0);
$reslut = model('Sprite')->get_monster_multiple_info($id);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//编辑
public function edit_monster_multiple()
{
$data = input('post.');
$reslut = model('Sprite')->edit_monster_multiple($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//获取列表
public function get_monster_log(){
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Sprite')->get_monster_log($order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
$data['totalRow'] = $reslut['data']['totalRow'];
return json($data);
}
//获取列表
public function get_user_monster_log(){
$mid = input('mid', 0);
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Sprite')->get_user_monster_log($mid, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取列表
public function get_user_monster_win_log(){
$mid = input('mid', 0);
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Sprite')->get_user_monster_win_log($mid, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取列表
public function get_monster_gift_list()
{
$order = input('order', 'a.id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Sprite')->get_monster_gift_list($order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取详情
public function get_monster_gift_info()
{
$id = input('id', 0);
$reslut = model('Sprite')->get_monster_gift_info($id);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//编辑
public function edit_monster_gift()
{
$data = input('post.');
//二级密码
$pass = input('secondary_password', '');
$check_pass = model('admin/admin')->check_secondary_password($pass);
if($check_pass['code'] == 201){
return ajaxReturn($check_pass['code'], $check_pass['msg'], $check_pass['data']);
}
$reslut = model('Sprite')->edit_monster_gift($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//获取列表
public function get_exchange_sprite_list()
{
$uid = input('uid', 0);
$room_number = input('room_number', 0);
$start = input('time1', '');
$end = input('time2', '');
$order = input('order', 'a.id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Sprite')->get_exchange_sprite_list($uid, $order, $sort, $page, $limit, $room_number, $start, $end);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
$data['totalRow'] = $reslut['data']['totalRow'];
return json($data);
}
}

View File

@@ -0,0 +1,113 @@
<?php
namespace app\admin\controller;
use think\Controller;
use think\Request;
class Statistics extends Common
{
//首页基础数据
public function welcome_data()
{
$reslut = model('Statistics')->welcome_data();
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//打赏礼物数据根据天
public function get_send_gift_data_by_day()
{
$reslut = model('Statistics')->get_send_gift_data_by_day();
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//打赏礼物数据根据小时
public function get_send_gift_data_by_hour()
{
$reslut = model('Statistics')->get_send_gift_data_by_hour();
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//打赏礼物数据根据小时
public function get_room_type_date()
{
$reslut = model('Statistics')->get_room_type_date();
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//充值排行统计
public function get_recharge_rank_list()
{
$uid = input('uid', 0);
$time_section = input('time_section', '');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Statistics')->get_recharge_rank_list($uid, $time_section, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//送礼排行统计
public function get_send_gift_rank_list()
{
$uid = input('uid', 0);
$time_section = input('time_section', '');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Statistics')->get_send_gift_rank_list($uid, $time_section, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//收礼排行统计
public function get_receive_gift_rank_list()
{
$uid = input('uid', 0);
$time_section = input('time_section', '');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Statistics')->get_receive_gift_rank_list($uid, $time_section, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//陪玩排行统计
public function get_player_order_rank_list()
{
$uid = input('uid', 0);
$time_section = input('time_section', '');
$order = input('order', 'order_num');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Statistics')->get_player_order_rank_list($uid, $time_section, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//用户消费排行统计
public function get_user_consume_rank_list()
{
$uid = input('uid', 0);
$time_section = input('time_section', '');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Statistics')->get_user_consume_rank_list($uid, $time_section, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
}

View File

@@ -0,0 +1,439 @@
<?php
namespace app\admin\controller;
use think\Controller;
class Ueditor extends Common
{
public $web_site = "";
public function initialize()
{
// $this->web_site = config('bosUrl') . "/";
}
public function index()
{
// header('Access-Control-Allow-Origin: *'); //设置http://www.baidu.com允许跨域访问
// header('Access-Control-Allow-Headers: X-Requested-With,X_Requested_With'); //设置允许的跨域header
// date_default_timezone_set("Asia/chongqing");
// error_reporting(E_ERROR);
// header("Content-Type: text/html; charset=utf-8");
$path = str_replace('public', "", $_SERVER['DOCUMENT_ROOT']);
$config_json_path = $path . "/config/ueditconfig.json";
$CONFIG = json_decode(preg_replace("/\/\*[\s\S]+?\*\//", "", file_get_contents($config_json_path)), true);
$action = input('action');
switch ($action) {
case 'config':
// header("content:application/json;chartset=uft-8");
$result = json_encode($CONFIG);
break;
/* 上传图片 */
case 'uploadimage':
$fieldName = $CONFIG['imageFieldName'];
$result = $this->upFile($fieldName);
break;
/* 上传涂鸦 */
case 'uploadscrawl':
$config = array(
"pathFormat" => $CONFIG['scrawlPathFormat'],
"maxSize" => $CONFIG['scrawlMaxSize'],
"allowFiles" => $CONFIG['scrawlAllowFiles'],
"oriName" => "scrawl.png",
);
$fieldName = $CONFIG['scrawlFieldName'];
$base64 = "base64";
$result = $this->upBase64($config, $fieldName);
break;
/* 上传视频 */
case 'uploadvideo':
$fieldName = $CONFIG['videoFieldName'];
$result = $this->upFile($fieldName);
break;
/* 上传文件 */
case 'uploadfile':
$fieldName = $CONFIG['fileFieldName'];
$result = $this->upFile($fieldName);
break;
/* 列出图片 */
case 'listimage':
$allowFiles = $CONFIG['imageManagerAllowFiles'];
$listSize = $CONFIG['imageManagerListSize'];
$path = $CONFIG['imageManagerListPath'];
$get = $_GET;
$result = $this->fileList($allowFiles, $listSize, $get);
break;
/* 列出文件 */
case 'listfile':
$allowFiles = $CONFIG['fileManagerAllowFiles'];
$listSize = $CONFIG['fileManagerListSize'];
$path = $CONFIG['fileManagerListPath'];
$get = $_GET;
$result = $this->fileList($allowFiles, $listSize, $get);
break;
/* 抓取远程文件 */
case 'catchimage':
$config = array(
"pathFormat" => $CONFIG['catcherPathFormat'],
"maxSize" => $CONFIG['catcherMaxSize'],
"allowFiles" => $CONFIG['catcherAllowFiles'],
"oriName" => "remote.png",
);
$fieldName = $CONFIG['catcherFieldName'];
/* 抓取远程图片 */
$list = array();
isset($_POST[$fieldName]) ? $source = $_POST[$fieldName] : $source = $_GET[$fieldName];
foreach ($source as $imgUrl) {
$info = json_decode($this->saveRemote($config, $imgUrl), true);
array_push($list, array(
"state" => $info["state"],
"url" => $info["url"],
"size" => $info["size"],
"title" => htmlspecialchars($info["title"]),
"original" => htmlspecialchars($info["original"]),
"source" => htmlspecialchars($imgUrl),
));
}
$result = json_encode(array(
'state' => count($list) ? 'SUCCESS' : 'ERROR',
'list' => $list,
));
break;
default:
$result = json_encode(array(
'state' => '请求地址出错',
));
break;
}
/* 输出结果 */
if (isset($_GET["callback"])) {
if (preg_match("/^[\w_]+$/", $_GET["callback"])) {
echo htmlspecialchars($_GET["callback"]) . '(' . $result . ')';
} else {
echo json_encode(array(
'state' => 'callback参数不合法',
));
}
} else {
echo $result;
die();
}
}
//上传文件
private function upFile($fieldName)
{
$file = request()->file($fieldName);
$reslut = model('Upload')->single_file_upload($file, "onepage");
// dump($reslut);exit;
$data = [];
if ($reslut['code'] == 200) {
$data = array(
'state' => 'SUCCESS',
'url' => $reslut['data']['http_image_path'],
'title' => "image",
'original' => $reslut['data']['image_path'],
'type' => '',
'size' => $reslut['data']['size'],
);
} else {
$data = array(
'state' => "上传错误",
);
}
return json_encode($data);
/*
$reslut = model('api/BaiduBce')->admin_uedit_upload('content', $file);
if ($reslut['code'] == 1) {
$data = array(
'state' => 'SUCCESS',
'url' => $this->web_site . $reslut['data']['bosPath'],
'title' => $reslut['data']['title'],
'original' => $this->web_site . $reslut['data']['original'],
'type' => $reslut['data']['type'],
'size' => $reslut['data']['size'],
);
} else {
$data = array(
'state' => $reslut['data'],
);
}
return json_encode($data);
*/
/*
$file = request()->file($fieldName);
$info = $file->validate(['size' => 1567800000, 'ext' => 'jpg,gif,png,jpeg,mp4,mp3'])->move('uploads/uedit/');
if ($info) { //上传成功
$fname = '/uploads/uedit/' . str_replace('\\', '/', $info->getSaveName());
$imgArr = explode(',', 'jpg,gif,png,jpeg,bmp,ttf,tif');
$imgExt = strtolower($info->getExtension());
$isImg = in_array($imgExt, $imgArr);
// if($isImg){//如果是图片,开始处理
// $image = Image::open($file);
// $thumbnail = 1;
// $water = 1;
// //在这里你可以根据你需要调用ThinkPHP5的图片处理方法了
// if($water == 1){//文字水印
// $image->text('df81.com','./public/font/4.ttf',180,'#ff0000')->save('.'.$fname);
// }
// if($water ==2 ){//图片水印
// $image->water('./public/img/df81.png',9,100)->save('.'.$fname);
// }
// if($thumbnail == 1){//生成缩略图
// $image->thumb(500,500,1)->save('.'.$fname);
// }
// }
$data = array(
'state' => 'SUCCESS',
'url' => $this->web_site . $fname,
'title' => $info->getFilename(),
'original' => $this->web_site . $info->getFilename(),
'type' => '.' . $info->getExtension(),
'size' => $info->getSize(),
);
} else {
$data = array(
'state' => $info->getError(),
);
}
return json_encode($data);
*/
}
//列出图片
private function fileList($allowFiles, $listSize, $get)
{
$dirname = './uploads/uedit/';
$allowFiles = substr(str_replace(".", "|", join("", $allowFiles)), 1);
/* 获取参数 */
$size = isset($get['size']) ? htmlspecialchars($get['size']) : $listSize;
$start = isset($get['start']) ? htmlspecialchars($get['start']) : 0;
$end = $start + $size;
/* 获取文件列表 */
$path = $dirname;
$files = $this->getFiles($path, $allowFiles);
if (!count($files)) {
return json_encode(array(
"state" => "no match file",
"list" => array(),
"start" => $start,
"total" => count($files),
));
}
/* 获取指定范围的列表 */
$len = count($files);
for ($i = min($end, $len) - 1, $list = array(); $i < $len && $i >= 0 && $i >= $start; $i--) {
$list[] = $files[$i];
}
/* 返回数据 */
$result = json_encode(array(
"state" => "SUCCESS",
"list" => $list,
"start" => $start,
"total" => count($files),
));
return $result;
}
/*
* 遍历获取目录下的指定类型的文件
* @param $path
* @param array $files
* @return array
*/
private function getFiles($path, $allowFiles, &$files = array())
{
if (!is_dir($path)) {
return null;
}
if (substr($path, strlen($path) - 1) != '/') {
$path .= '/';
}
$handle = opendir($path);
while (false !== ($file = readdir($handle))) {
if ($file != '.' && $file != '..') {
$path2 = $path . $file;
if (is_dir($path2)) {
$this->getFiles($path2, $allowFiles, $files);
} else {
if (preg_match("/\.(" . $allowFiles . ")$/i", $file)) {
$files[] = array(
'url' => substr($path2, 1),
'mtime' => filemtime($path2),
);
}
}
}
}
return $files;
}
//抓取远程图片
private function saveRemote($config, $fieldName)
{
$imgUrl = htmlspecialchars($fieldName);
$imgUrl = str_replace("&amp;", "&", $imgUrl);
//http开头验证
if (strpos($imgUrl, "http") !== 0) {
$data = array(
'state' => '链接不是http链接',
);
return json_encode($data);
}
//获取请求头并检测死链
$heads = get_headers($imgUrl);
if (!(stristr($heads[0], "200") && stristr($heads[0], "OK"))) {
$data = array(
'state' => '链接不可用',
);
return json_encode($data);
}
//格式验证(扩展名验证和Content-Type验证)
$fileType = strtolower(strrchr($imgUrl, '.'));
if (!in_array($fileType, $config['allowFiles']) || stristr($heads['Content-Type'], "image")) {
$data = array(
'state' => '链接contentType不正确',
);
return json_encode($data);
}
//打开输出缓冲区并获取远程图片
ob_start();
$context = stream_context_create(
array('http' => array(
'follow_location' => false, // don't follow redirects
))
);
readfile($imgUrl, false, $context);
$img = ob_get_contents();
ob_end_clean();
preg_match("/[\/]([^\/]*)[\.]?[^\.\/]*$/", $imgUrl, $m);
$dirname = './public/uploads/remote/';
$file['oriName'] = $m ? $m[1] : "";
$file['filesize'] = strlen($img);
$file['ext'] = strtolower(strrchr($config['oriName'], '.'));
$file['name'] = uniqid() . $file['ext'];
$file['fullName'] = $dirname . $file['name'];
$fullName = $file['fullName'];
//检查文件大小是否超出限制
if ($file['filesize'] >= ($config["maxSize"])) {
$data = array(
'state' => '文件大小超出网站限制',
);
return json_encode($data);
}
//创建目录失败
if (!file_exists($dirname) && !mkdir($dirname, 0777, true)) {
$data = array(
'state' => '目录创建失败',
);
return json_encode($data);
} else if (!is_writeable($dirname)) {
$data = array(
'state' => '目录没有写权限',
);
return json_encode($data);
}
//移动文件
if (!(file_put_contents($fullName, $img) && file_exists($fullName))) { //移动失败
$data = array(
'state' => '写入文件内容错误',
);
return json_encode($data);
} else { //移动成功
$data = array(
'state' => 'SUCCESS',
'url' => $this->web_site . substr($file['fullName'], 1),
'title' => $file['name'],
'original' => $this->web_site . $file['oriName'],
'type' => $file['ext'],
'size' => $file['filesize'],
);
}
return json_encode($data);
}
/*
* 处理base64编码的图片上传
* 例如:涂鸦图片上传
*/
private function upBase64($config, $fieldName)
{
$base64Data = $_POST[$fieldName];
$img = base64_decode($base64Data);
$dirname = './uploads/uedit/scrawl/';
$file['filesize'] = strlen($img);
$file['oriName'] = $config['oriName'];
$file['ext'] = strtolower(strrchr($config['oriName'], '.'));
$file['name'] = uniqid() . $file['ext'];
$file['fullName'] = $dirname . $file['name'];
$fullName = $file['fullName'];
//检查文件大小是否超出限制
if ($file['filesize'] >= ($config["maxSize"])) {
$data = array(
'state' => '文件大小超出网站限制',
);
return json_encode($data);
}
//创建目录失败
if (!file_exists($dirname) && !mkdir($dirname, 0777, true)) {
$data = array(
'state' => '目录创建失败',
);
return json_encode($data);
} else if (!is_writeable($dirname)) {
$data = array(
'state' => '目录没有写权限',
);
return json_encode($data);
}
//移动文件
if (!(file_put_contents($fullName, $img) && file_exists($fullName))) { //移动失败
$data = array(
'state' => '写入文件内容错误',
);
} else { //移动成功
$data = array(
'state' => 'SUCCESS',
'url' => $this->web_site . substr($file['fullName'], 1),
'title' => $file['name'],
'original' => $this->web_site . $file['oriName'],
'type' => $file['ext'],
'size' => $file['filesize'],
);
}
return json_encode($data);
}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace app\admin\controller;
use think\Controller;
use think\Request;
class Upload extends Common
{
public function file_upload()
{
$file = request()->file('file');
$file_category_name = input('file_category', 'all');
$reslut = model('Upload')->single_file_upload($file, $file_category_name);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
}

View File

@@ -0,0 +1,308 @@
<?php
namespace app\admin\controller;
use think\Controller;
use think\facade\Request;
class User extends Common
{
//获取用户列表
public function get_user_list()
{
$uid = input('uid', 0);
$pid = input('pid', 0);
$user_name = input('user_name', '');
$nick_name = input('nick_name', '');
$special_uid = input('special_uid',0);
$last_login_device = input('last_login_device','');
$is_can_recharge = input('is_can_recharge', 0);
$is_sign = input('is_sign', 0);
$is_real = input('is_real', 0);
$order = input('order', 'uid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$integral_min = input('integral_min',0);
$integral_max = input('integral_max',0);
$is_sys_tester = input('is_sys_tester',2);
$reslut = model('User')->get_user_list($uid, $pid, $user_name, $nick_name, $special_uid, $last_login_device, $is_can_recharge, $is_sign, $is_real, $order, $sort, $page, $limit,$integral_min,$integral_max,$is_sys_tester);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
$data['totalRow'] = $reslut['data']['totalRow'];
return json($data);
}
//获取用户列表
public function get_write_user_list()
{
$uid = input('uid', 0);
$pid = input('pid', 0);
$user_name = input('user_name', '');
$nick_name = input('nick_name', '');
$special_uid = input('special_uid',0);
$last_login_device = input('last_login_device','');
$is_can_recharge = input('is_can_recharge', 0);
$is_sign = input('is_sign', 0);
$is_real = input('is_real', 0);
$order = input('order', 'uid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$integral_min = input('integral_min',0);
$integral_max = input('integral_max',0);
$reslut = model('User')->get_write_user_list($uid, $pid, $user_name, $nick_name, $special_uid, $last_login_device, $is_can_recharge, $is_sign, $is_real, $order, $sort, $page, $limit,$integral_min,$integral_max);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
$data['totalRow'] = $reslut['data']['totalRow'];
return json($data);
}
//获取用户资料
public function get_user_info()
{
$uid = input('uid', 0);
$reslut = model('User')->get_user_info($uid);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
// $data = model('User')->get_user_info($uid);
// if ($data['code'] == 0) {
// return ajaxReturn(201, $data['msg'], $data['data']);
// } else {
// return ajaxReturn(200, $data['msg'], $data['data']);
// }
}
//修改用户资料
public function edit_user_info()
{
$uid = input('uid', 0);
$nick_name = input('nick_name', '');
$sex = input('sex', 0);
$login_status = input('login_status', 0);
$is_tester = input('is_tester',0);
$is_sign = input('is_sign', 0);
$is_can_recharge = input('is_can_recharge', 0);
$special_uid = input('special_uid', '');
$is_real = input('is_real', 2);
$is_look_rank = input('is_look_rank', '');
$room_owner_commission = input('room_owner_commission', '');
$room_owner_lucky_commission = input('room_owner_lucky_commission','');
$real_name = input('real_name', '');
$card_id = input('card_id', '');
$data = model('User')->edit_user_info($uid, $nick_name, $sex, $login_status, $is_tester, $is_sign, $is_can_recharge, $special_uid, $is_real,$is_look_rank,$room_owner_commission,$room_owner_lucky_commission,$real_name,$card_id);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//修改用户资料
public function lu_edit_user_info()
{
$uid = input('uid', 0);
$nick_name = input('nick_name', '');
$sex = input('sex', 0);
$head_pic = input('head_pic', '');
$data = model('User')->lu_edit_user_info($uid, $nick_name, $sex, $head_pic);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//修改用户资金
public function edit_user_money()
{
$uid = input('uid', 0);
$money_type = input('money_type', '');
$change_value = input('change_value', 0);
$secondary_password = input('secondary_password','');
$remarks = input('remarks', '');
//二级密码
$check_pass = model('admin/admin')->check_secondary_password($secondary_password);
if($check_pass['code'] == 201){
return ajaxReturn($check_pass['code'], $check_pass['msg'], $check_pass['data']);
}
$reslut = model('User')->edit_user_money($uid, $change_value, $money_type, $secondary_password, $remarks, $this->aid);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//恢复注销用户
public function edit_user_write()
{
$uid = input('uid', 0);
$login_status = input('login_status', '');
$secondary_password = input('secondary_password','');
//二级密码
$check_pass = model('admin/admin')->check_secondary_password($secondary_password);
if($check_pass['code'] == 201){
return ajaxReturn($check_pass['code'], $check_pass['msg'], $check_pass['data']);
}
$reslut = model('User')->edit_user_write($uid, $login_status, $this->aid);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//修改用户密码
public function edit_user_password()
{
$data = Request::only(['uid', 'password']);
$reslut = model('User')->edit_user_password($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//修改用户密码
public function edit_user_passwords()
{
$data = Request::only(['uid', 'trade_password']);
$reslut = model('User')->edit_user_passwords($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//获取用户背包列表
public function get_user_gift_pack()
{
$pid = input('pid', 0);
$uid = input('uid', 0);
$nick_name = input('nick_name', '');
$gid = input('gid', 0);
$order = input('order', 'pid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('User')->get_user_gift_pack($pid, $uid, $nick_name, $gid, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//删除用户背包礼物
public function del_user_gift_pack()
{
//return ajaxReturn(201, '功能暂已停用', null);
$pid = input('pid', 0);
$reslut = model('User')->del_user_gift_pack($pid);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//清除用户地阶奖池累消
public function gold_consume_del(){
$reslut = model('User')->gold_consume_del();
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//清除用户天阶奖池累消
public function drill_consume_del(){
$reslut = model('User')->drill_consume_del();
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//清除用户天阶奖池累消
public function silver_consume_del(){
$reslut = model('User')->silver_consume_del();
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//清空所有背包礼物
public function user_gift_pack_del_all(){
return ajaxReturn(201, '功能暂已停用', null);
$reslut = model('User')->user_gift_pack_del_all();
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//清空用户token
public function clear_user_token(){
$type = input('type', 0);
$uid = input('uid', 0);
$reslut = model('User')->clear_user_token($uid, $type);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//幸运摩天奖励发放
public function motian_fa(){
$key_name = "api:user:motian_fa";
redis_lock_exit($key_name,100);
$reslut = model('User')->yesterday_motian_award();
redis_unlock($key_name);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
public function get_mo_tian_log(){
$uid = input('uid', 0);
$gid = input('gid', 0);
$gift_name = input('gift_name', '');
$level = input('level', '');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('user')->get_mo_tian_log($uid, $gid, $gift_name,$level,$page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//批量生成测试账号
public function batch_create_test_account(){
$key_name = "admin:batch_create_test_account";
redis_lock_exit($key_name);
$reslut = model('api/UserLogin')->batch_create_test_account();
redis_unlock($key_name);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
}

View File

@@ -0,0 +1,31 @@
<?php
namespace app\admin\controller;
use think\Controller;
class UserPack extends Common
{
//获取系统配置
public function add_user_pack_gift()
{
$password = input('secondary_password', '');
$aid = $this->aid;
$uid = input('uid', 0);
$num = input('num', 0);
$gid = input('gid', 0);
$res = model('Admin')->check_secondary_password($password);
if($res['code'] == 201) {
return ajaxReturn(201, '二级密码错误', null);
}
$result = model('UserPack')->add_user_pack_gift($aid, $uid, $gid, $num);
return ajaxReturn($result['code'], $result['msg'], null);
}
}

View File

@@ -0,0 +1,51 @@
<?php
namespace app\admin\controller;
use think\Controller;
use think\facade\Request;
class Userzone extends Common
{
//获取举报列表
public function user_zone_list()
{
$uid = input('uid', 0);
$nick_name = input('nick_name', '');
$content = input('content', '');
$show_status = input('show_status', '');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Userzone')->user_zone_list($uid, $nick_name, $content, $show_status, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//审核说说信息
// public function zone_examine()
// {
// $zid = input('zid', 0);
// $show_status = input('show_status', 0);
// $reslut = model('Userzone')->zone_examine($zid, $show_status);
// return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
// }
public function get_zone_info()
{
$zid = input('zid', 0);
$reslut = model('Userzone')->get_zone_info($zid);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//编辑说说
public function edit_zone()
{
$data = Request::only(['zid', 'is_recommend', 'show_status']);
$reslut = model('Userzone')->edit_zone($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
}

View File

@@ -0,0 +1,872 @@
<?php
namespace app\admin\controller;
use think\Controller;
// 网站管理
class Website extends Common
{
//获取轮播图 列表
public function get_banner_list()
{
$uid = input('uid', 0);
$room_number = input('room_number', 0);
$room_name = input('room_name', '');
$order = input('order', 'uid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Website')->get_banner_list($uid, $room_number, $room_name, $order, $sort,$page,$limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//修改轮播图信息
public function edit_banner_info()
{
$bid = input('bid', 0);
$image = input('image', 0);
$aid = input('aid', '');
$type = input('type', '');
$show_status = input('show_status', '');
$sort = input('sort', '');
$data = model('Website')->edit_banner_info($bid, $image, $aid, $type,$show_status, $sort);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//添加轮播图
public function add_banner()
{
$data = input('post.');
$data = model('Website')->add_banner($data);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取房间信息
public function get_banner_info()
{
$bid = input('bid', 0);
$data = model('Website')->get_banner_info($bid);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除轮播图
public function banner_del()
{
$bid = input('bid', 0);
$data = model('Website')->banner_del($bid);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取充值可选 列表
public function can_recharge_list()
{
$crid = input('crid', 0);
$order = input('order', 'crid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Website')->can_recharge_list($crid,$order,$sort,$page,$limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//修改 充值可选
public function edit_recharge_info()
{
$crid = input('crid', 0);
$money = input('money', 0);
$integral = input('integral', '');
$data = model('Website')->edit_recharge_info($crid, $money, $integral);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//添加 充值可选
public function add_recharge()
{
$data = input('post.');
$data = model('Website')->add_recharge($data);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取 充值可选 信息
public function get_recharge_info()
{
$crid = input('crid', 0);
$data = model('Website')->get_recharge_info($crid);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除 充值可选
public function recharge_del()
{
$crid = input('crid', 0);
$data = model('Website')->recharge_del($crid);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//用户建议 列表
public function suggest_list()
{
$id = input('id', 0);
$uid = input('uid', 0);
$nickanme = input('nickanme', 0);
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Website')->suggest_list($id,$uid,$nickanme,$order,$sort,$page,$limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//获取 建议 信息
public function get_suggest_info()
{
$id = input('id', 0);
$data = model('Website')->get_suggest_info($id);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//修改 建议状态
public function edit_suggest_info()
{
$id = input('id', 0);
$is_deal = input('is_deal', 0);
$data = model('Website')->edit_suggest_info($id, $is_deal);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除 建议
public function suggest_del()
{
$id = input('id', 0);
$data = model('Website')->suggest_del($id);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//用户等级列表
public function user_level_list()
{
$lid = input('lid', 0);
$type = input('type', 0);
$type_name = input('type_name', 0);
$order = input('order', 'lid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Website')->user_level_list($lid,$type,$type_name,$order,$sort,$page,$limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//添加 用户等级
public function add_user_level()
{
$data = input('post.');
$data = model('Website')->add_user_level($data);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取 用户等级
public function get_user_level()
{
$lid = input('lid', 0);
$data = model('Website')->get_user_level($lid);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//修改 用户等级
public function edit_user_level()
{
$data = input('post.');
$data = model('Website')->edit_user_level($data);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除 用户等级
public function user_level_del()
{
$lid = input('lid', 0);
$data = model('Website')->user_level_del($lid);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//守护类型 列表
public function guard_type_list()
{
$gid = input('gid', 0);
$guard_name = input('guard_name', 0);
$order = input('order', 'gid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Website')->guard_type_list($gid,$guard_name,$order,$sort,$page,$limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//添加 守护类型
public function add_guard_type()
{
$data = input('post.');
$data = model('Website')->add_guard_type($data);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取 守护类型
public function get_guard_type()
{
$gid = input('gid', 0);
$data = model('Website')->get_guard_type($gid);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//修改 守护类型
public function edit_guard_type()
{
$data = input('post.');
$data = model('Website')->edit_guard_type($data);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除 守护类型
public function guard_type_del()
{
$gid = input('gid', 0);
$data = model('Website')->guard_type_del($gid);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取 守护类型 l列表
public function get_guard_type_list()
{
$data = model('Website')->get_guard_type_list();
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//守护价格 列表
public function guard_price_list()
{
$id = input('id', 0);
$order = input('order', 'a.id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Website')->guard_price_list($id,$order,$sort,$page,$limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//添加 守护价格
public function add_guard_price()
{
$data = input('post.');
$data = model('Website')->add_guard_price($data);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取 守护价格详情
public function get_guard_price()
{
$id = input('id', 0);
$data = model('Website')->get_guard_price($id);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//修改 守护价格
public function edit_guard_price()
{
$data = input('post.');
$data = model('Website')->edit_guard_price($data);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除 守护价格
public function guard_price_del()
{
$id = input('id', 0);
$data = model('Website')->guard_price_del($id);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//特效 列表
public function special_effects_list()
{
$sid = input('sid', 0);
$type = input('type', 0);
$effects_name = input('effects_name', 0);
$is_can_buy = input('is_can_buy', 0);
$is_show = input('is_show', 0);
$order = input('order', 'sid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Website')->special_effects_list($sid,$type,$effects_name,$is_can_buy,$is_show,$order,$sort,$page,$limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//添加 特效
public function add_special_effects()
{
$data = input('post.');
$data = model('Website')->add_special_effects($data);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取 特效详情
public function get_special_effects()
{
$sid = input('sid', 0);
$data = model('Website')->get_special_effects($sid);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//修改 特效
public function edit_special_effects()
{
$data = input('post.');
$data = model('Website')->edit_special_effects($data);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除 特效
public function special_effects_del()
{
$sid = input('sid', 0);
$data = model('Website')->special_effects_del($sid);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取 特效价格 列表
public function get_special_effects_list()
{
$data = model('Website')->get_special_effects_list();
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//特效价格 列表
public function special_effects_price()
{
$spid = input('spid', 0);
$day = input('day', 0);
$sell_price = input('sell_price', 0);
$effects_name = input('effects_name', 0);
$order = input('order', 'a.spid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Website')->special_effects_price($spid,$day,$sell_price,$effects_name,$order,$sort,$page,$limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//添加 特效价格
public function add_special_effects_price()
{
$data = input('post.');
$data = model('Website')->add_special_effects_price($data);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取 特效价格 详情
public function get_special_effects_price()
{
$spid = input('spid', 0);
$data = model('Website')->get_special_effects_price($spid);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//修改 特效价格
public function edit_special_effects_price()
{
$data = input('post.');
$data = model('Website')->edit_special_effects_price($data);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除 特效价格
public function special_effects_price_del()
{
$spid = input('spid', 0);
$data = model('Website')->special_effects_price_del($spid);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//单页信息 列表
public function page_list()
{
$order = input('order', 'aid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Website')->page_list($order,$sort,$page,$limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//添加 单页信息
public function add_page()
{
$data = input('post.');
$data = model('Website')->add_page($data);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取 单页信息 详情
public function get_page()
{
$aid = input('aid', 0);
$data = model('Website')->get_page($aid);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//修改 单页信息
public function edit_page()
{
$data = input('post.');
$data = model('Website')->edit_page($data);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除 单页信息
public function page_del()
{
$aid = input('aid', 0);
$data = model('Website')->page_del($aid);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取列表
public function pay_way_list()
{
$pay_type = input('pay_type', 0);
$status = input('status', '');
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Website')->pay_way_list($pay_type, $status, $order, $sort,$page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//修改
public function edit_pay_way()
{
$data = input('post.');
$reslut = model('Website')->edit_pay_way($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//添加
public function add_pay_way()
{
$data = input('post.');
$reslut = model('Website')->add_pay_way($data);
return ajaxReturn($reslut['code'], $reslut['msg'], $reslut['data']);
}
//获取信息
public function get_pay_way_info()
{
$id = input('id', 0);
$data = model('Website')->get_pay_way_info($id);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除
public function pay_way_del()
{
$id = input('id', 0);
$data = model('Website')->pay_way_del($id);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取 列表
public function auction_price_list()
{
$id = input('id', 0);
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Website')->auction_price_list($id,$order,$sort,$page,$limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//修改
public function edit_auction_price_info()
{
$id = input('id', 0);
$price = input('price', 0);
$data = model('Website')->edit_auction_price_info($id, $price);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//添加
public function add_auction_price()
{
$data = input('post.');
$data = model('Website')->add_auction_price($data);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取 信息
public function get_auction_price_info()
{
$id = input('id', 0);
$data = model('Website')->get_auction_price_info($id);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除
public function auction_price_del()
{
$id = input('id', 0);
$data = model('Website')->auction_price_del($id);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//CP特权列表
public function coupling_privilege_list()
{
$id = input('id', 0);
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Website')->coupling_privilege_list($id,$order,$sort,$page,$limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//添加 CP特权
public function add_coupling_privilege()
{
$data = input('post.');
$data = model('Website')->add_coupling_privilege($data);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//获取 CP特权
public function get_coupling_privilege_info()
{
$id = input('id', 0);
$data = model('Website')->get_coupling_privilege_info($id);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//修改 CP特权
public function edit_coupling_privilege()
{
$data = input('post.');
$data = model('Website')->edit_coupling_privilege($data);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//删除 CP特权
public function coupling_privilege_del()
{
$id = input('id', 0);
$data = model('Website')->coupling_privilege_del($id);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//客服信息
public function support_staff(){
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('Website')->support_staff($order,$sort,$page,$limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
return json($data);
}
//客服详情
public function support_staff_info()
{
$id = input('id', 0);
$data = model('Website')->support_staff_info($id);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
//客服信息编辑
public function support_staff_edit(){
$id = input('id', 0);
$image = input('image', '');
$content = input('content', '');
$contents = input('contents', '');
$data = model('Website')->support_staff_edit($id,$image, $content, $contents);
if ($data['code'] == 201) {
return ajaxReturn(201, $data['msg'], $data['data']);
} else {
return ajaxReturn(200, $data['msg'], $data['data']);
}
}
}

View File

@@ -0,0 +1,341 @@
<?php
namespace app\admin\model;
use think\Db;
use think\Model;
class Admin extends Model
{
protected $pk = 'aid';
protected $auto = ['update_time'];
protected $insert = [
'add_time',
'system_menu_id_list' => 0,
'is_delete' => 1,
'delete_time' => 0,
];
protected $update = ['update_time'];
protected function setPasswordAttr($value)
{
return md5($value);
}
protected function setAddTimeAttr()
{
return time();
}
protected function setUpdateTimeAttr()
{
return time();
}
public function check_login_token($login_token)
{
if (empty($login_token)) {
return ['code' => 201, 'msg' => '登录失效', 'data' => ''];
}
$map = [];
$map[] = ['login_token', '=', $login_token];
$map[] = ['is_delete', '=', 1];
$user_info = db::name('admin')->where($map)->find();
if (empty($user_info)) {
return ['code' => 201, 'msg' => '登录失效', 'data' => ''];
} else {
if(time() > $user_info['token_validity_time']){
Db::name('admin')->where('aid', $user_info['aid'])->update(['login_token' => '', 'update_time' => time()]);
return ['code' => 201, 'msg' => '登录失效', 'data' => ''];
} else {
if($user_info['token_validity_time'] <= (time() + 3600)) {
Db::name('admin')->where('aid', $user_info['aid'])->update(['token_validity_time' => time() + 7200, 'update_time' => time()]);
}
}
return ['code' => 200, 'msg' => '登录成功', 'data' => $user_info['aid']];
}
}
//获取管理员信息
public function admin_info($login_token)
{
if (empty($login_token)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => ''];
}
$info = db::name('admin')->where(['login_token' => $login_token])->field('user_name')->find();
return ['code' => 200, 'msg' => '获取成功', 'data' => $info];
}
public function add_admin($user_name, $password, $re_password)
{
$map = [];
$map[] = ['user_name', '=', $user_name];
$admin_info = db::name('admin')->where($map)->find();
if (!empty($admin_info)) {
return ['code' => 201, 'msg' => '用户名已存在', 'data' => ''];
}
$res = check_password_format($password);
if($res['code'] == 201) {
return $res;
}
if ($password != $re_password) {
return ['code' => 201, 'msg' => '两次密码不一致', 'data' => ''];
}
$phone = input('phone', '');
$open_sms_code = input('open_sms_code', 2);
if($open_sms_code == 1) {
if(empty($phone)) {
return ['code' => 201, 'msg' => '手机号不能为空', 'data' => ''];
}
if(!isMobile($phone)) {
return ['code' => 201, 'msg' => '手机号格式错误', 'data' => ''];
}
$admin_info = Db::name('admin')->where(['phone' => $phone, 'is_delete' => 1])->find();
if($admin_info) {
return ['code' => 201, 'msg' => '手机号已绑定', 'data' => ''];
}
}
$data = [];
$data['user_name'] = $user_name;
$data['password'] = $password;
$data['phone'] = $phone;
$data['open_sms_code'] = $open_sms_code;
$validate = validate('admin/admin');
$reslut = $validate->scene('adminAdd')->check($data);
if ($reslut !== true) {
return ['code' => 201, 'msg' => $validate->getError(), 'data' => null];
}
$Admin = model('admin/admin');
$reslut = $Admin->save($data);
if ($reslut) {
return ['code' => 200, 'msg' => '添加成功', 'data' => ''];
} else {
return ['code' => 201, 'msg' => '修改失败', 'data' => ''];
}
}
//修改管理员密码
public function edit_admin_password($aid, $old_password, $password, $re_password, $phone)
{
$admin_info = db::name('admin')->where(['aid' => $aid])->find();
if (empty($admin_info)) {
return ['code' => 201, 'msg' => '信息不存在', 'data' => ''];
}
if (md5($old_password) != $admin_info['password']) {
return ['code' => 201, 'msg' => '原始密码错误', 'data' => ''];
}
$res = check_password_format($password);
if($res['code'] == 201) {
return $res;
}
if ($password != $re_password) {
return ['code' => 201, 'msg' => '两次密码不一致', 'data' => ''];
}
$data = [];
$open_sms_code = input('open_sms_code', 2);
if($open_sms_code == 1) {
if(empty($phone)) {
return ['code' => 201, 'msg' => '手机号不能为空', 'data' => ''];
}
if(!isMobile($phone)) {
return ['code' => 201, 'msg' => '手机号格式错误', 'data' => ''];
}
$admin_info = Db::name('admin')->where(['phone' => $phone, 'is_delete' => 1])->where('aid', 'neq', $aid)->find();
if($admin_info) {
return ['code' => 201, 'msg' => '手机号已绑定', 'data' => ''];
}
}
$data['password'] = md5($password);
$validate = validate('admin/admin');
$reslut = $validate->scene('adminEditPassword')->check($data);
if ($reslut !== true) {
return ['code' => 201, 'msg' => $validate->getError(), 'data' => null];
}
if($phone != $admin_info['phone']){
$data['phone'] = $phone;
}
$data['open_sms_code'] = $open_sms_code;
$data['update_time'] = time();
$reslut = Db::name('admin')->where('aid', $aid)->update($data);
if ($reslut) {
return ['code' => 200, 'msg' => '修改成功', 'data' => ''];
} else {
return ['code' => 201, 'msg' => '修改失败', 'data' => ''];
}
}
//修改管理员权限
public function edit_admin_auth($aid, $auth)
{
$system_menu_id_list = implode(',', $auth);
$data = [];
$data['system_menu_id_list'] = $system_menu_id_list;
$data['update_time'] = time();
$res = db::name('admin')->where(['aid' => $aid])->update($data);
if ($res) {
return ['code' => 200, 'msg' => '修改成功', 'data' => ''];
} else {
return ['code' => 201, 'msg' => '修改失败', 'data' => ''];
}
}
//获取管理员列表
public function get_admin_list($user_name, $page, $page_limit)
{
$map = [];
$map[] = ['is_delete', '=', 1];
if (!empty($user_name)) {
$map[] = ['user_name', 'like', '%' . $user_name . '%'];
}
$list = db::name('admin')->where($map)->order('aid', 'asc')->page($page, $page_limit)->select();
$data = [];
$data['count'] = db::name('admin')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
public function get_admin_info($aid)
{
$admin_info = db::name('admin')->find($aid);
return ['code' => 200, 'msg' => '获取成功', 'data' => $admin_info];
}
public function delete_admin($aid)
{
if ($aid == 1) {
return ['code' => 201, 'msg' => '总管理员禁止删除', 'data' => null];
}
$data = [];
$data['is_delete'] = 2;
$data['delete_time'] = time();
$data['update_time'] = time();
$res = db::name('admin')->where(['aid' => $aid])->update($data);
if ($res) {
return ['code' => 200, 'msg' => '删除成功', 'data' => ''];
} else {
return ['code' => 201, 'msg' => '删除失败', 'data' => ''];
}
}
//管理员日志
public function get_admin_log_list($page, $page_limit){
$map = [];
$map[] = ['type', '=', 1];
$list = db::name('operation')->where($map)->order('op_id','desc')->page($page, $page_limit)->select();
foreach ($list as $k => &$v) {
$v['user_name'] = db::name('admin')->where('aid', $v['id'])->value('user_name');
if(strpos($v['url'],'admin/box/get_box_type_list')){
$v['operate_name'] = '宝箱礼物列表';
}else if(strpos($v['url'],'admin/box/get_box_log_list')){
$v['operate_name'] = '每期奖池列表';
}else if(strpos($v['url'],'admin/box/edit_box_config')){
$v['operate_name'] = '修改宝箱信息';
}else if(strpos($v['url'],'admin/box/delete_box_config')){
$v['operate_name'] = '删除宝箱信息';
}else if(strpos($v['url'],'admin/box/add_give_gift')){
$v['operate_name'] = '添加礼物补发';
}else if(strpos($v['url'],'admin/box/cancel_give_gift')){
$v['operate_name'] = '取消礼物补发';
}else if(strpos($v['url'],'admin/box/get_box_give_gift_list')){
$v['operate_name'] = '礼物补发列表';
}else if(strpos($v['url'],'admin/user/get_user_list')){
$v['operate_name'] = '用户列表';
}else if(strpos($v['url'],'admin/user/edit_user_info')){
$v['operate_name'] = '修改用户信息';
}else if(strpos($v['url'],'admin/user/edit_user_money')){
$v['operate_name'] = '修改用户资金';
}else if(strpos($v['url'],'admin/user/edit_user_password')){
$v['operate_name'] = '修改用户密码';
}else if(strpos($v['url'],'admin/user/gold_consume_del')){
$v['operate_name'] = '清除地阶累消';
}else if(strpos($v['url'],'admin/user/drill_consume_del')){
$v['operate_name'] = '清除天阶累消';
}else if(strpos($v['url'],'admin/user/get_user_gift_pack')){
$v['operate_name'] = '用户背包列表';
}else if(strpos($v['url'],'admin/user/del_user_gift_pack')){
$v['operate_name'] = '删除用户背包礼物';
}else if(strpos($v['url'],'admin/config/config_list')){
$v['operate_name'] = '系统配置列表';
}else if(strpos($v['url'],'admin/config/edit_config')){
$v['operate_name'] = '修改配置信息';
}else if(strpos($v['url'],'admin/config/del_config')){
$v['operate_name'] = '删除配置信息';
}else if(strpos($v['url'],'admin/config/add_config')){
$v['operate_name'] = '添加配置信息';
}else if(strpos($v['url'],'admin/Admin/get_admin_log_list')){
$v['operate_name'] = '管理员日志';
}else if(strpos($v['url'],'admin/Admin/get_admin_list')){
$v['operate_name'] = '管理员列表';
}else if(strpos($v['url'],'admin/Admin/add_admin')){
$v['operate_name'] = '增加管理员';
}else if(strpos($v['url'],'admin/Admin/edit_admin_password')){
$v['operate_name'] = '修改管理员密码';
}else if(strpos($v['url'],'admin/Admin/edit_admin_auth')){
$v['operate_name'] = '修改管理员权限';
}else if(strpos($v['url'],'admin/Admin/delete_admin')){
$v['operate_name'] = '删除管理员';
}
}
$data = [];
$data['count'] = db::name('operation')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
public function quit_admin_login($aid){
if(empty($aid)){
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$map = [];
$map[] = ['aid','=', $aid];
$admin_info = db::name('admin')->where($map)->find();
if(!$admin_info){
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$map = [];
$map[] = ['aid', '=', $aid];
$update_data = [];
$update_data['login_token'] = '';
$reslut = db::name('admin')->where($map)->update($update_data);
if(!$reslut){
return ['code' => 201, 'msg' => '退出失败', 'data' => null];
}
return ['code' => 200, 'msg' => '退出成功', 'data' => null];
}
//二级密码校验
public function check_secondary_password($pass){
if(empty($pass)){
return ['code' => 201, 'msg' => '二级密码不能为空', 'data' => null];
}
$pass_word = secondary_password();
if(md5($pass) != $pass_word){
return ['code' => 201, 'msg' => '二级密码错误', 'data' => null];
}else{
return ['code' => 200, 'msg' => '成功', 'data' => null];
}
}
//清除登录状态
public function clear_admin_token($super_aid, $aid)
{
if($super_aid != 1) {
return ['code' => 201, 'msg' => '无权限操作', 'data' => null];
}
$result = Db::name('admin')->where('aid', $aid)->update(['login_token' => '', 'error_num' => 0, 'status' => 1, 'update_time' => time()]);
if($result) {
return ['code' => 200, 'msg' => '处理成功', 'data' => null];
}
return ['code' => 201, 'msg' => '处理失败', 'data' => null];
}
}

View File

@@ -0,0 +1,33 @@
<?php
namespace app\admin\model;
use think\Model;
class AdminComModel extends Model
{
public function append_add_update_time($data, $add_time = true, $update_time = true)
{
if ($add_time) {
$data['add_time'] = time();
}
if ($update_time) {
$data['update_time'] = time();
}
return $data;
}
public function append_add_time($data)
{
$data['add_time'] = time();
return $data;
}
public function append_update_time($data)
{
$data['update_time'] = time();
return $data;
}
}

View File

@@ -0,0 +1,103 @@
<?php
namespace app\admin\model;
use think\Db;
use think\Model;
class Agora extends Model
{
protected $insert = [
'add_time',
];
protected $update = ['update_time'];
protected function setAddTimeAttr()
{
return time();
}
protected function setUpdateTimeAttr()
{
return time();
}
//获取房间音乐列表
public function agora_song_list($aid, $song_name, $singer, $order, $sort, $page = 1, $limit = 20)
{
$map = [];
if (!empty($aid)) {
$map[] = ['aid', '=', $aid];
}
if (!empty($song_name)) {
$map[] = ['song_name', 'like', '%' . $song_name . '%'];
}
if (!empty($singer)) {
$map[] = ['singer', 'like', '%' . $singer . '%'];
}
$map[] = ['is_delete', '=', 1];
$song_list = db::name('agora_song')->where($map)->order($order, $sort)->page($page, $limit)->select();
$data = [];
$data['count'] = db::name('agora_song')->where($map)->count();
$data['list'] = $song_list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//同步歌曲
public function synchro_song(){
//查看当前数据库存留歌曲
$song = db::name('agora_song')->where('is_delete',1)->order('aid desc')->limit(1)->find();
if(empty($song)){
$datas = model('api/Agora')->agora_song_list(0, 1000, 0);
}else{
$datas = model('api/Agora')->agora_song_list(0, 1000, $song['song_code']);
}
if(empty($datas['data']['list'])){
return ['code' => 201, 'msg' => '暂无更多歌曲', 'data' => null];
}
$data = [];
$data_array = [];
foreach ($datas['data']['list'] as $k => $v){
$data['song_code'] = $v['songCode'];
$data['song_name'] = $v['name'];
$data['singer'] = $v['singer'];
$data['poster'] = $v['poster'];
$data['duration'] = $v['duration'];
$data['type'] = $v['type'];
$data['release_time'] = strtotime($v['releaseTime']);
$data['status'] = $v['status'];
$data['add_time'] = time();
if(!empty($v['mv'])){
$data['mv'] = json_encode($v['mv'],true);
}
$data_array[] = $data;
}
// dump($data_array);exit;
$result = db::name('agora_song')->insertAll($data_array);
if($result){
return ['code' => 200, 'msg' => '更新成功', 'data' => null];
}else{
return ['code' => 201, 'msg' => '更新失败', 'data' => null];
}
}
//增量歌曲
public function increment_song(){
//查看当前数据库存留歌曲
$song = db::name('agora_song')->where('is_delete', 1)->order('aid desc')->limit(1)->find();
if(empty($song)){
return ['code' => 201, 'msg' => '请先去同步歌曲', 'data' => null];
}else{
$datas = model('api/Agora')->agora_new_song_list(1, 1000, $song['add_time']);
}
dump($datas);exit;
}
}

View File

@@ -0,0 +1,488 @@
<?php
namespace app\admin\model;
use think\Model;
use think\Db;
class BlindBox extends Model
{
//盲盒礼物列表
public function get_blind_box_gift_list($tid)
{
$tid = 102;
$map = [];
$map[] = ['a.tid', '=', $tid];
$list = db::name('box_config')->alias('a')
->leftJoin('gift b', 'a.gid = b.gid')
->field('b.gid,b.gift_name,b.gift_price,a.num')
->where($map)->order('b.gift_price desc')
->select();
return ['code' => 200, 'msg' => '获取数据成功', 'data' => $list];
}
//获取所有不可购买礼物
public function get_gift_list()
{
$tid = 102;
$map = [];
$map[] = ['is_show', '=', 1];
$map[] = ['is_delete', '=', 1];
$map[] = ['is_can_buy', '=', 2];
$list = db::name('gift')
->field('gid,gift_name,gift_price')
->where($map)->order('gift_price desc')
->select();
return ['code' => 200, 'msg' => '获取数据成功', 'data' => $list];
}
//限定礼物配置
public function get_config_list($stage, $gid, $page = 1, $limit = 20)
{
$map = [];
if(!empty($stage)){
$map[] = ['a.stage', '=', $stage];
}
$list = db::name('blind_box_config')->alias('a')
->leftJoin('gift b', 'a.gid = b.gid')
->leftJoin('box_type c', 'a.tid = c.tid')
->leftJoin('box_config d', 'a.tid = d.tid and a.gid = d.gid')
->leftJoin('blind_box_stage e', 'a.stage = e.stage')
->field('a.*,b.gift_name,b.gift_price,b.base_image,c.show_name,d.num,e.stage_name')
->where($map)->order('id desc')
->page($page, $limit)->select();
foreach ($list as $k => &$v) {
$total_bind_num = Db::name('blind_box_config')->where('stage', $v['stage'])->sum('bind_rate');
$v['base_image'] = localpath_to_netpath($v['base_image']);
if($total_bind_num > 0) {
$v['bind_rate'] = bcmul(bcdiv($v['bind_rate'], $total_bind_num,4), 100, 2) . '%';
} else {
$v['bind_rate'] = '50%';
}
}
$data = [];
$data['count'] = db::name('blind_box_config')->alias('a')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//添加配置
public function add_config($data)
{
if(empty($data['stage'])) {
return ['code' => 201, 'msg' => '请选择阶段', 'data' => null];
}
if(empty($data['gid'])) {
return ['code' => 201, 'msg' => '请选择限定礼物', 'data' => null];
}
if(empty($data['time_long'])) {
return ['code' => 201, 'msg' => '请输入限定礼物增加时长', 'data' => null];
}
$map = [];
$map[] = ['is_delete', '=', 1];
$map[] = ['stage', '=', $data['stage']];
$map[] = ['gid', '=', $data['gid']];
$info = db::name('blind_box_config')->where($map)->find();
if($info){
return ['code' => 201, 'msg' => '限定礼物已添加', 'data' => null];
}
Db::startTrans();
try {
//添加
$insert = [];
$insert['stage'] = $data['stage'];
$insert['gid'] = $data['gid'];
$insert['time_long'] = $data['time_long'];
$insert['tid'] = 102;
$insert['add_time'] = time();
$insert['bind_rate'] = $data['bind_rate'];
$reslut = db::name('blind_box_config')->insert($insert);
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 edit_config($data)
{
if(empty($data['stage'])) {
return ['code' => 201, 'msg' => '请选择阶段', 'data' => null];
}
if(empty($data['gid'])) {
return ['code' => 201, 'msg' => '请选择限定礼物', 'data' => null];
}
if(empty($data['time_long'])) {
return ['code' => 201, 'msg' => '请输入限定礼物增加时长', 'data' => null];
}
$map = [];
$map[] = ['is_delete', '=', 1];
$map[] = ['gid', '=', $data['gid']];
$map[] = ['stage', '=', $data['stage']];
$map[] = ['id', 'neq', $data['id']];
$info = db::name('blind_box_config')->where($map)->find();
if($info){
return ['code' => 201, 'msg' => '限定礼物已添加', 'data' => null];
}
Db::startTrans();
try {
//添加
$insert = [];
$insert['stage'] = $data['stage'];
$insert['gid'] = $data['gid'];
$insert['time_long'] = $data['time_long'];
$insert['update_time'] = time();
$insert['bind_rate'] = $data['bind_rate'];
$reslut = db::name('blind_box_config')->where('id', $data['id'])->update($insert);
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 get_config_info($id)
{
$map = [];
$map[] = ['id', '=', $id];
$config_info = db::name('blind_box_config')->where($map)->find();
if (empty($config_info)) {
return ['code' => 201, 'msg' => '信息不存在', 'data' => ''];
}
return ['code' => 200, 'msg' => '获取成功', 'data' => $config_info];
}
public function del_config($id)
{
$map = [];
$map[] = ['id', '=', $id];
$config_info = db::name('blind_box_config')->where($map)->find();
if (empty($config_info)) {
return ['code' => 201, 'msg' => '信息不存在', 'data' => ''];
}
Db::startTrans();
try {
$result = db::name('blind_box_config')->where('id', $id)->delete();
if(!$result){
Db::rollback();
return ['code' => 201, 'msg' => '删除失败', 'data' => null];
}
Db::commit();
return ['code' => 200, 'msg' => '删除成功', 'data' => null];
} catch (\Exception $e) {
dump($e);
// 回滚事务
Db::rollback();
return ['code' => 201, 'msg' => '删除失败', 'data' => null];
}
}
//阶段列表
public function get_stage_list($pattern_id, $page = 1, $limit = 20)
{
$map = [];
if ($pattern_id) {
$map[] = ['pattern_id', '=', $pattern_id];
}
$list = db::name('blind_box_stage')->alias('a')
->leftJoin('gift b', 'a.gid = b.gid')
->leftJoin('gift c', 'a.gid_r = c.gid')
->field('a.*,b.gift_name,b.gift_price,b.base_image,c.gift_price as gift_price_r,c.gift_name as gift_name_r')
->where($map)->order('id desc')
->page($page, $limit)->select();
foreach ($list as &$v) {
$v['base_image'] = localpath_to_netpath($v['base_image']);
}
$data = [];
$data['count'] = db::name('blind_box_stage')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
public function edit_stage($data)
{
if(empty($data['num'])) {
if ($data['id'] != 1) {
return ['code' => 201, 'msg' => '请输入阶段数量', 'data' => null];
}
}
if (empty($data['gid'])) {
return ['code' => 201, 'msg' => '请选择奖励礼物', 'data' => null];
}
$map = [];
$map[] = ['num', '=', $data['num']];
$map[] = ['id', 'neq', $data['id']];
$info = db::name('blind_box_stage')->where($map)->find();
if($info){
return ['code' => 201, 'msg' => '阶段数量已添加', 'data' => null];
}
Db::startTrans();
try {
//添加
$insert = [];
$insert['num'] = $data['num'];
$insert['update_time'] = time();
$insert['gid'] = $data['gid'];
$insert['gid_r'] = $data['gid_r'];
$reslut = db::name('blind_box_stage')->where('id', $data['id'])->update($insert);
if(!$reslut){
Db::rollback();
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
}
Db::commit();
return ['code' => 200, 'msg' => '修改成功', 'data' => null];
} catch (\Exception $e) {
// 回滚事务
Db::rollback();
dump($e);
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
}
}
//获取阶段信息
public function get_stage_info($id)
{
$map = [];
$map[] = ['id', '=', $id];
$config_info = db::name('blind_box_stage')->where($map)->find();
if (empty($config_info)) {
return ['code' => 201, 'msg' => '信息不存在', 'data' => ''];
}
return ['code' => 200, 'msg' => '获取成功', 'data' => $config_info];
}
//获取期数
public function get_term_list($status, $page = 1, $limit = 20)
{
$map = [];
$map[] = ['a.is_delete', '=', 1];
if ($status) {
$map[] = ['a.status', '=', $status];
}
$list = db::name('blind_box_term')->alias('a')
->leftJoin('box_type b', 'a.tid = b.tid')
->field('a.*,b.show_name')
->where($map)->order('id desc')
->page($page, $limit)->select();
$data = [];
$data['count'] = db::name('blind_box_term')->alias('a')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//添加期数
public function add_term($data)
{
if(empty($data['time_long'])) {
return ['code' => 201, 'msg' => '请输入时长', 'data' => null];
}
$map = [];
$map[] = ['status', '=', 1];
$map[] = ['is_delete', '=', 1];
$info = db::name('blind_box_term')->where($map)->find();
if($info){
return ['code' => 201, 'msg' => '已存在未开启活动,请勿重新添加', 'data' => null];
}
try {
//添加
$insert = [];
$insert['time_long'] = $data['time_long'];
$insert['tid'] = 102;
$insert['add_time'] = time();
$result = db::name('blind_box_term')->insert($insert);
return ['code' => 200, 'msg' => '添加成功', 'data' => null];
} catch (\Exception $e) {
dump($e);
return ['code' => 201, 'msg' => '添加失败', 'data' => null];
}
}
//修改期数
public function edit_term($data)
{
$term_info = Db::name('blind_box_term')->find($data['id']);
if(empty($term_info)){
return ['code' => 201, 'msg' => '信息不存在', 'data' => null];
}
if ($term_info['status'] != 1) {
return ['code' => 201, 'msg' => '该期已启用,无法修改', 'data' => null];
}
if(empty($data['time_long'])) {
return ['code' => 201, 'msg' => '请输入活动时长', 'data' => null];
}
try {
//添加
$insert = [];
$insert['time_long'] = $data['time_long'];
$insert['update_time'] = time();
$result = db::name('blind_box_term')->where('id', $data['id'])->update($insert);
return ['code' => 200, 'msg' => '修改成功', 'data' => null];
} catch (\Exception $e) {
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
}
}
//获取期数信息
public function get_term_info($id)
{
$map = [];
$map[] = ['id', '=', $id];
$config_info = db::name('blind_box_term')->where($map)->find();
if (empty($config_info)) {
return ['code' => 201, 'msg' => '信息不存在', 'data' => ''];
}
return ['code' => 200, 'msg' => '获取成功', 'data' => $config_info];
}
public function del_term($id)
{
$map = [];
$map[] = ['id', '=', $id];
$term_info = db::name('blind_box_term')->where($map)->find();
if (empty($term_info)) {
return ['code' => 201, 'msg' => '期数不存在', 'data' => ''];
}
if ($term_info['status'] != 1) {
return ['code' => 201, 'msg' => '该期已启用,无法删除', 'data' => null];
}
try {
$result = db::name('blind_box_term')->where('id', $id)->update(['is_delete' => 2, 'delete_time' => time()]);
return ['code' => 200, 'msg' => '删除成功', 'data' => null];
} catch (\Exception $e) {
dump($e);
return ['code' => 201, 'msg' => '删除失败', 'data' => null];
}
}
//开启活动
public function open_term($id)
{
$map = [];
$map[] = ['id', '=', $id];
$map[] = ['is_delete', '=', 1];
$term_info = db::name('blind_box_term')->where($map)->find();
if (empty($term_info)) {
return ['code' => 201, 'msg' => '期数不存在', 'data' => ''];
}
if ($term_info['status'] != 1) {
return ['code' => 201, 'msg' => '该期已启用,无法开启', 'data' => null];
}
$map = [];
$map[] = ['is_delete', '=', 1];
$map[] = ['status', '=', 2];
$has_open_term = db::name('blind_box_term')->where($map)->find();
if($has_open_term){
return ['code' => 201, 'msg' => '已有进行中的期数,请勿重复开启', 'data' => null];
}
//获取锁定礼物
$lock_gift_list = db::name('blind_box_config')
->where('tid', 102)
->select();
$lock_gid_arr = [];
$lock_stage_gid_list = [];
foreach($lock_gift_list as $v) {
if ($v['stage'] > 0) {
if($v['bind_rate'] > 0) {
for($i=1; $i<=$v['bind_rate']; $i++) {
$lock_gid_arr[$v['stage']][] = $v['gid'];
}
} else {
$lock_gid_arr[$v['stage']][] = $v['gid'];
}
$lock_stage_gid_list[$v['stage'] . '-' . $v['gid']] = $v;
}
}
$stage_list = Db::name('blind_box_stage')->order('stage asc')->select();
$params = [];
foreach ($stage_list as $v) {
$stage = $v['stage'];
$gid_arr = $lock_gid_arr[$v['stage']] ?? [];
if (empty($gid_arr)) {
return ['code' => 201, 'msg' => '阶段' . $stage . '未配置礼物', 'data' => null];
}
shuffle($gid_arr);
$gid = $gid_arr[array_rand($gid_arr)];
$gid_info = $lock_stage_gid_list[$stage . '-' . $gid] ?? [];
if (empty($gid_info)) {
return ['code' => 201, 'msg' => '阶段' . $stage . '未配置礼物', 'data' => null];
}
$temp = [
'term_id' => $id,
'gid' => $gid,
'num' => $v['num'],
'multi' => $v['multi'],
'time_long' => $gid_info['time_long'],
'stage' => $v['stage'],
'add_time' => time(),
'pattern_id' => $v['pattern_id'],
'reward_gid' => $v['gid'],
'reward_gid_r' => $v['gid_r'],
];
$params[] = $temp;
}
$end_time = $term_info['time_long'] * 60;
$end_time = $end_time + time();
$update_data = [
'status' => 2,
'start_time' => time(),
'end_time' => $end_time,
'real_end_time' => $end_time,
'update_time' => time(),
'pattern_id' => 1,
];
Db::startTrans();
try {
Db::name('blind_box_term')->where('id', $id)->update($update_data);
Db::name('blind_box_term_params')->insertAll($params);
Db::commit();
$push_data = [
'code' => 312,
'msg' => '盲盒巡乐开始',
'data' => [
'term_id' => $id,
'over_time' => $term_info['time_long'] * 60
]
];
model('api/WebSocketPush')->send_to_all($push_data);
return ['code' => 200, 'msg' => '开启成功', 'data' => null];
} catch (\Exception $e) {
Db::rollback();
// dump($e);
// 回滚事务
return ['code' => 201, 'msg' => '开启失败', 'data' => null];
}
}
}

View File

@@ -0,0 +1,214 @@
<?php
namespace app\admin\model;
use think\Model;
use think\Db;
class Block extends Model
{
public function get_block_list($type, $type_text, $is_delete, $page = 1, $limit = 20)
{
$map = [];
if(!empty($type)){
$map[] = ['type', '=', $type];
}
if(!empty($type_text)){
$map[] = ['type_text', '=', $type_text];
}
if(!empty($is_delete)){
$map[] = ['is_delete', '=', $is_delete];
}
$map[] = ['is_delete', '=', 1];
$list = db::name('block')->where($map)->order('id desc')->page($page, $limit)->select();
foreach ($list as $k => &$v) {
}
$data = [];
$data['count'] = db::name('block')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
public function add_block($aid, $data)
{
if(empty($data['type_text'])){
return ['code' => 201, 'msg' => '封禁内容不能为空', 'data' => null];
}
// if(empty($data['block_note'])){
// return ['code' => 201, 'msg' => '封禁原因不能为空', 'data' => null];
// }
// if(empty($data['block_time'])){
// return ['code' => 201, 'msg' => '封禁截止日期不能为空', 'data' => null];
// }
// $block_time = $data['block_time'];
// $data['block_time'] = strtotime($data['block_time']);
$map = [];
$map[] = ['is_delete', '=', 1];
$map[] = ['type', '=', $data['type']];
$map[] = ['type_text', '=', $data['type_text']];
$info = db::name('block')->where($map)->find();
if($info){
return ['code' => 201, 'msg' => '当前封禁内容已添加', 'data' => null];
}
Db::startTrans();
try {
//添加
$insert = [];
$insert['aid'] = $aid;
$insert['type'] = $data['type'];
$insert['type_text'] = $data['type_text'];
// $insert['block_time'] = $data['block_time'];
// $insert['block_note'] = $data['block_note'];
$insert['add_time'] = time();
$reslut = db::name('block')->insert($insert);
if(!$reslut){
Db::rollback();
return ['code' => 201, 'msg' => '添加失败', 'data' => null];
}
Db::commit();
return ['code' => 200, 'msg' => '添加成功', 'data' => null];
} catch (\Exception $e) {
dump($e);
// 回滚事务
Db::rollback();
return ['code' => 201, 'msg' => '添加失败', 'data' => null];
}
}
public function del_block($id)
{
$map = [];
$map[] = ['id', '=', $id];
$block_info = db::name('block')->where($map)->find();
if (empty($block_info)) {
return ['code' => 201, 'msg' => '信息不存在', 'data' => ''];
}
Db::startTrans();
try {
//删除封禁
$update = [];
$update['is_delete'] = 2;
$update['update_time'] = time();
$reslut = db::name('block')->where('id', $id)->update($update);
if(!$reslut){
Db::rollback();
return ['code' => 201, 'msg' => '解封失败', 'data' => null];
}
Db::commit();
return ['code' => 200, 'msg' => '解封成功', 'data' => null];
} catch (\Exception $e) {
dump($e);
// 回滚事务
Db::rollback();
return ['code' => 201, 'msg' => '解封失败', 'data' => null];
}
}
//定时任务 房间解禁
public function close_room_unfreeze(){
$now_time = time();
$map = [];
$map[] = ['room_status', '=', 2];
$map[] = ['block_time', '<=', $now_time];
$block_room_list = db::name('room')->where($map)->select();
if($block_room_list){
foreach ($block_room_list as $k => $v){
Db::startTrans();
try {
//解禁房间
$update = [];
$update['room_status'] = 1;
$update['block_time'] = 0;
$update['block_note'] = '';
$update['update_time'] = $now_time;
$reslut = db::name('room')->where('rid', $v['rid'])->update($update);
if(!$reslut){
Db::rollback();
}
//删除解禁记录
$where = [];
$where[] = ['rid', '=', $v['rid']];
$where[] = ['is_delete', '=', 1];
$update = [];
$update['is_delete'] = 2;
$update['update_time'] = $now_time;
$reslut = db::name('room_block_log')->where($where)->update($update);
if(!$reslut){
Db::rollback();
}
Db::commit();
} catch (\Exception $e) {
dump($e);
// 回滚事务
Db::rollback();
}
}
}
return true;
}
//定时任务 用户解禁
public function close_user_unfreeze(){
$now_time = time();
$map = [];
$map[] = ['is_delete', '=', 1];
$map[] = ['block_time', '<=', $now_time];
$block_user_list = db::name('block')->where($map)->select();
if($block_user_list){
foreach ($block_user_list as $k => $v){
Db::startTrans();
try {
if($v['type'] == 2){//解封账号
$map = [];
$map[] = ['user_name', '=', $v['type_text']];
$update = [];
$update['login_status'] = 1;
$update['update_time'] = time();
$reslut = db::name('user')->where($map)->update($update);
if(!$reslut){
Db::rollback();
}
}
//解封记录
$update = [];
$update['is_delete'] = 2;
$update['update_time'] = time();
$reslut = db::name('block')->where('id', $v['id'])->update($update);
if(!$reslut){
Db::rollback();
}
Db::commit();
} catch (\Exception $e) {
dump($e);
// 回滚事务
Db::rollback();
}
}
}
return true;
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,119 @@
<?php
namespace app\admin\model;
use think\Model;
use think\Db;
class BoxGiveGift extends Model
{
protected $pk = 'id';
protected $auto = ['update_time'];
protected $insert = [
'add_time',
];
protected $update = ['update_time'];
protected function setAddTimeAttr()
{
return time();
}
protected function setUpdateTimeAttr()
{
return time();
}
public function get_box_give_gift_list($uid, $gid, $gift_name, $give_status, $deduction_status, $start, $give, $deduction, $page = 1, $limit = 20)
{
$map = [];
if (!empty($uid)) {
$map[] = ['a.uid', '=', $uid];
}
if (!empty($gid)) {
$map[] = ['a.gid', '=', $gid];
}
if(!empty($gift_name)){
$map[] = ['b.gift_name', 'like', '%'.$gift_name.'%'];
}
if(!empty($give_status)){
$map[] = ['a.give_status', '=', $give_status];
}
if(!empty($deduction_status)){
$map[] = ['a.deduction_status', '=', $deduction_status];
}
if(!empty($start)){
$map[] = ['a.add_time', '>=', strtotime($start)];
}
if(!empty($give)){
$map[] = ['a.give_time', '>=',strtotime($give)];
}
if(!empty($deduction)){
$map[] = ['a.deduction_time', '>=', strtotime($deduction)];
}
$list = db::name('box_give_gift')->alias('a')->join('yy_gift b', 'a.gid = b.gid')->field('a.*, b.gift_name, b.gift_price, b.base_image')->where($map)->order('id', 'desc')->page($page, $limit)->select();
foreach ($list as $k => &$v) {
$user_info = db::name('user')->field('uid,user_name,nick_name,base64_nick_name')->where('uid', $v['uid'])->find();
$box_type_info = db::name('box_type')->find($v['tid']);
$v['type_name'] = $box_type_info['type_name'];
$v['rid'] = db::name('room')->where('rid',$v['rid'])->value('room_number');
// $gift_info = db::name('gift')->find($v['gid']);
// if (!empty($gift_info)) {
// $v['gift_name'] = $gift_info['gift_name'];
// $v['gift_price'] = $gift_info['gift_price'];
// $v['base_image'] = localpath_to_netpath($gift_info['base_image']);
// } else {
// $v['gift_name'] = '';
// $v['gift_price'] = 0;
// }
$v['base_image'] = localpath_to_netpath($v['base_image']);
$v['user_name'] = $user_info['user_name'];
$v['nick_name'] = mb_convert_encoding(base64_decode($user_info['base64_nick_name']), 'UTF-8', 'UTF-8');
}
$data = [];
$data['list'] = $list;
$totalRowData = db::name('box_give_gift')->alias('a')->join('yy_gift b', 'a.gid = b.gid')->field('count(1) as count,SUM(a.num) as num')->where($map)->find();
$data['count'] = $totalRowData['count'];
unset($totalRowData['count']);
//dump($totalRowData);
$data['totalRow'] = $totalRowData;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
public function add_give_gift($data)
{
$data['num'] = 1;
$validate = validate('admin/BoxGiveGift');
$reslut = $validate->scene('adminAdd')->check($data);
if ($reslut !== true) {
return ['code' => 201, 'msg' => $validate->getError(), 'data' => null];
}
$BoxGiveGift = model('admin/BoxGiveGift');
$reslut = $BoxGiveGift->save($data);
if ($reslut) {
return ['code' => 200, 'msg' => '添加成功', 'data' => ''];
} else {
return ['code' => 201, 'msg' => '添加失败', 'data' => ''];
}
}
public function cancel_give_gift($id)
{
$give_gift = db::name('box_give_gift')->find($id);
if($give_gift['is_admin'] == 2){
return ['code' => 201, 'msg' => '厅主发放不能删除', 'data' => ''];
}
$map = [];
$map[] = ['id', '=', $id];
$map[] = ['give_status', '=', 1];
$data = [];
$data['give_status'] = 3;
$data['canel_time'] = time();
$reslut = db::name('box_give_gift')->where($map)->update($data);
if (!$reslut) {
return ['code' => 201, 'msg' => '更新失败', 'data' => ''];
}
return ['code' => 200, 'msg' => '更新成功', 'data' => ''];
}
}

View File

@@ -0,0 +1,26 @@
<?php
namespace app\admin\model;
use think\Model;
class BoxType extends Model
{
protected $pk = 'tid';
protected $auto = ['update_time'];
protected $insert = [
'add_time',
];
protected $update = ['update_time'];
protected function setAddTimeAttr()
{
return time();
}
protected function setUpdateTimeAttr()
{
return time();
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,128 @@
<?php
namespace app\admin\model;
use think\Model;
use think\Db;
class Config extends Model
{
//获取配置参数
public function get_system_config($key = "")
{
$config = Db::name('config')->cache(10)->order('sort desc')->select();
$config_data = [];
foreach ($config as $k => $v) {
$config_data[$v['key_title']] = $v['key_value'];
}
if (empty($key)) {
return $config_data;
} else {
if (!isset($config_data[$key]) || $config_data[$key] == "") {
return ajaxReturn(201, '配置参数:' . $key . '不存在', null);
}
return $config_data[$key];
}
}
//无缓存获取配置参数
public function get_uncache_system_config($key = "")
{
$config = Db::name('config')->order('sort desc')->select();
$config_data = [];
foreach ($config as $k => $v) {
$config_data[$v['key_title']] = $v['key_value'];
}
if (empty($key)) {
return $config_data;
} else {
if (!isset($config_data[$key]) || $config_data[$key] == "") {
return ajaxReturn(201, '配置参数:' . $key . '不存在', null);
}
return $config_data[$key];
}
}
//配置列表
public function config_list($cid, $key_name, $order, $sort, $page = 1, $limit = 20)
{
$map = [];
if (!empty($cid)) {
$map[] = ['cid', '=', $cid];
}
if (!empty($key_name)) {
$map[] = ['key_name|key_value', 'like', '%' . $key_name . '%'];
}
$map[] = ['is_delete', '=', 1];
$list = db::name('config')->where($map)->order($order, $sort)->page($page, $limit)->select();
$data = [];
$data['count'] = db::name('config')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//编辑配置
public function edit_config($data)
{
if (empty($data)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$info = db::name('config')->find($data['cid']);
if (empty($info)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$update_data = [];
// $update_data['key_title'] = $data['key_title'];
// $update_data['key_name'] = $data['key_name'];
$update_data['key_value'] = $data['key_value'];
$update_data['key_desc'] = $data['key_desc'];
$update_data['update_time'] = time();
$reslut = db::name('config')->where(['cid' => $data['cid']])->update($update_data);
if (!$reslut) {
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
} else {
return ['code' => 200, 'msg' => '修改成功', 'data' => null];
}
}
//添加配置
public function add_config($data)
{
$add_data = [];
$add_data['key_title'] = $data['key_title'];
$add_data['key_name'] = $data['key_name'];
$add_data['key_value'] = $data['key_value'];
$add_data['key_desc'] = $data['key_desc'];
$add_data['update_time'] = time();
$reslut = db::name('config')->insert($add_data);
if (!$reslut) {
return ['code' => 201, 'msg' => '添加失败', 'data' => null];
} else {
return ['code' => 200, 'msg' => '添加成功', 'data' => null];
}
}
//获取配置信息
public function config_info($cid)
{
if (empty($cid)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$gift_info = db::name('config')->where(['cid' => $cid])->find();
return ['code' => 200, 'msg' => '获取成功', 'data' => $gift_info];
}
//删除配置
public function del_config($cid)
{
return ['code' => 201, 'msg' => '操作已禁止', 'data' => null];
if (empty($cid)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$reslut = db::name('config')->where(['cid' => $cid])->delete();
if ($reslut) {
return ['code' => 200, 'msg' => '删除成功', 'data' => null];
} else {
return ['code' => 201, 'msg' => '删除失败', 'data' => null];
}
}
}

View File

@@ -0,0 +1,502 @@
<?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];
}
}
}

View File

@@ -0,0 +1,201 @@
<?php
namespace app\admin\model;
use think\Db;
use think\Model;
class Envelope extends Model
{
//发红包列表
public function give_red_envelope_list($id, $tid, $type, $uid, $order, $sort, $page, $limit){
$map = [];
if(!empty($id)){
$map[] = ['id', '=', $id];
}
if(!empty($tid)){
$map[] = ['tid', '=', $tid];
}
if(!empty($type)){
$map[] = ['type', '=', $type];
}
if(!empty($uid)){
$map[] = ['uid', '=', $uid];
}
$map[] = ['is_delete', '=', 1];
$list = db::name('red_envelope')->where($map)->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v){
$v['envelope_price'] = $v['money'] - $v['price'];
}
$data = [];
$data['count'] = db::name('red_envelope')->where($map)->count();
$data['list'] = $list;
$totalRowData = db::name('red_envelope')->where($map)->field('SUM(money) as money,SUM(price) as price,SUM(money - price) as envelope_price')->find();
$data['totalRow'] = $totalRowData;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//发红包
public function give_red_envelope($aid, $tid, $num, $secondary_password){
if(empty($tid)){
return ['code' => 201, 'msg' => '尚未选择红包类型', 'data' => null];
}
if($num < 1){
return ['code' => 201, 'msg' => '红包数量不能小于1', 'data' => null];
}
if(empty($secondary_password)){
return ['code' => 201, 'msg' => '二级密码不能为空', 'data' => null];
}else{
if($secondary_password != '147369'){
return ['code' => 201, 'msg' => '二级密码错误', 'data' => null];
}
}
$config = get_system_config();
//红包功能是否已关
if($tid == 1){
if($config['open_silver_envelope'] != 1){
return ['code' => 201, 'msg' => '该功能已关闭', 'data' => null];
}
}else if($tid == 2){
if($config['open_gold_envelope'] != 1){
return ['code' => 201, 'msg' => '该功能已关闭', 'data' => null];
}
}else if($tid == 3){
if($config['open_drill_envelope'] != 1){
return ['code' => 201, 'msg' => '该功能已关闭', 'data' => null];
}
}
//红包是否正在进行
$map = [];
$map[] = ['tid', '=', $tid];
$map[] = ['is_finish', '=', 2];
$map[] = ['is_delete', '=', 1];
$map[] = ['is_stop', '=', 2];
$envelope_info = db::name('red_envelope')->where($map)->find();
if($envelope_info){
return ['code' => 201, 'msg' => '该红包尚未结束', 'data' => null];
}
//该种类红包是否存在
$map = [];
$map[] = ['id', '=', $tid];
$envelope_type_info = db::name('envelope_type')->where($map)->find();
if(!$envelope_type_info){
return ['code' => 201, 'msg' => '该红包类型不存在', 'data' => null];
}
Db::startTrans();
try {
$insert_data = [];
$insert_data['tid'] = $tid;
$insert_data['uid'] = $aid;
$insert_data['type'] = 1;
$insert_data['money'] = $envelope_type_info['price'];
$insert_data['price'] = $insert_data['money'] * (1 - $config['envelope_rate']);
$insert_data['num'] = $num;
$insert_data['open_num'] = 0;
$insert_data['add_time'] = time();
$envelope_id = db::name('red_envelope')->insertGetId($insert_data);
if(!$envelope_id){
Db::rollback();
return ['code' => 201, 'msg' => "请重试", 'data' => null];
}
//生成红包金额队列
$redis = connectionRedis();
if($tid == 1){
$key_name = "silver:envelope:key:name:". $envelope_id;
}else if($tid == 2){
$key_name = "gold:envelope:key:name:" . $envelope_id;
}else if($tid == 3){
$key_name = "drill:envelope:key:name:" . $envelope_id;
}
$redis->del($key_name);
$envelope_price_array = model('api/Envelope')->red_envelope_create_money(1, 500, $num, $insert_data['price']);
$envelope_insert_data = $envelope_price_array;
array_unshift($envelope_insert_data, $key_name);
call_user_func_array([$redis, 'rPush'], $envelope_insert_data);
Db::commit();
$push_all_envelope_data = [];
$push_all_envelope_data['type'] = $tid;
$push_all_envelope_data['type_name'] = $envelope_type_info['type_name'];
$push_all_envelope_data['num'] = $num;
$push_all_envelope_data['second'] = 10;
//推送socket
$push_data = [];
$push_data['code'] = 410;
$push_data['msg'] = "发红包开始数据播报";
$push_data['data'] = $push_all_envelope_data;
model('api/WebSocketPush')->send_to_all($push_data);
return ['code' => 200, 'msg' => '成功', 'data' => null];
} catch (\Exception $e) {
// 回滚事务
dump($e);
Db::rollback();
return ['code' => 201, 'msg' => '失败', 'data' => null];
}
}
//抢红包记录
public function get_user_red_envelope_log_list($rid, $room_number, $room_name, $uid, $eid, $tid, $time1, $time2, $order, $sort, $page, $limit){
$map = [];
if(!empty($rid)){
$map[] = ['a.rid', '=', $rid];
}
if(!empty($room_number)){
$map[] = ['c.room_number', '=', $room_number];
}
if(!empty($room_name)){
$map[] = ['c.room_name', 'like', '%'. $room_name .'%'];
}
if(!empty($uid)){
$map[] = ['a.uid', '=', $uid];
}
if(!empty($eid)){
$map[] = ['a.eid', '=', $eid];
}
if(!empty($tid)){
$map[] = ['a.tid', '=', $tid];
}
if (!empty($time1)) {
$time1 = strtotime($time1);
$map[] = ['a.add_time', '>=', $time1];
}
if (!empty($time2)) {
$time2 = strtotime($time2);
$map[] = ['a.add_time', '<=', $time2];
}
$list = db::name('user_red_envelope_log')->alias('a')->join('yy_user b', 'a.uid = b.uid')->join('yy_room c', 'a.rid = c.rid')->field('a.id,a.uid,a.rid,a.tid,a.eid,a.money,a.price,a.envelope_price,a.snatch_price,a.room_price,a.add_time,a.is_lucky,b.base64_nick_name,c.base64_room_name,c.room_name,c.room_number')->where($map)->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v){
$v['nick_name'] = mb_convert_encoding(base64_decode($v['base64_nick_name']), 'UTF-8', 'UTF-8');
$v['room_name'] = mb_convert_encoding(base64_decode($v['base64_room_name']), 'UTF-8', 'UTF-8');
}
$data = [];
$data['count'] = db::name('user_red_envelope_log')->alias('a')->join('yy_user b', 'a.uid = b.uid')->join('yy_room c', 'a.rid = c.rid')->where($map)->count();
$data['list'] = $list;
$totalRowData = db::name('user_red_envelope_log')->alias('a')->join('yy_user b', 'a.uid = b.uid')->join('yy_room c', 'a.rid = c.rid')->field('count(a.id) as count,SUM(a.snatch_price) as snatch_price,SUM(a.room_price) as room_price')->where($map)->find();
unset($totalRowData['count']);
$data['totalRow'] = $totalRowData;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
}

View File

@@ -0,0 +1,324 @@
<?php
namespace app\admin\model;
use think\Db;
use think\Model;
class Gift extends Model
{
//礼物列表
public function gift_list($gid, $gift_name, $gift_price, $is_public_screen, $is_public_server, $is_show, $is_can_buy, $order, $sort, $page = 1, $limit = 20, $type)
{
$map = [];
if (!empty($gid)) {
$map[] = ['gid', '=', $gid];
}
if (!empty($gift_name)) {
$map[] = ['gift_name', 'like', '%' . $gift_name . '%'];
}
if (!empty($gift_price)) {
$map[] = ['gift_price', '=', $gift_price];
}
if (!empty($is_public_screen)) {
$map[] = ['is_public_screen', '=', $is_public_screen];
}
if (!empty($is_public_server)) {
$map[] = ['is_public_server', '=', $is_public_server];
}
if (!empty($is_show)) {
$map[] = ['is_show', '=', $is_show];
}
if (!empty($is_can_buy)) {
$map[] = ['is_can_buy', '=', $is_can_buy];
}
if(!empty($type)){
$map[] = ['type', '=', $type];
}
$map[] = ['is_delete', '=', 1];
$list = db::name('gift')->where($map)->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v) {
$v['base_image'] = localpath_to_netpath($v['base_image']);
}
$data = [];
$data['count'] = db::name('gift')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//编辑礼物
public function edit_gift($data)
{
if (empty($data)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$room_info = db::name('gift')->find($data['gid']);
if (empty($room_info)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
// dump($data);exit;
$update_data = [];
$update_data['type'] = $data['type'];
$update_data['gift_type'] = $data['gift_type'];
$update_data['gift_name'] = $data['gift_name'];
$update_data['gift_price'] = $data['gift_price'];
$update_data['base_image'] = $data['base_image'];
$update_data['file_type'] = $data['file_type'];
if($data['file_type'] == 1){
$update_data['play_image'] = $data['play_image'];
}else{
$update_data['play_image'] = $data['plays_image'];
}
$update_data['nid'] = $data['nid'];
$update_data['mid'] = $data['mid'];
$update_data['position'] = $data['position'];
$update_data['pendant_image'] = $data['pendant_image'];
$update_data['is_public_screen'] = $data['is_public_screen'];
$update_data['is_public_server'] = $data['is_public_server'];
$update_data['is_show'] = $data['is_show'];
$update_data['is_can_buy'] = $data['is_can_buy'];
$update_data['sort'] = $data['sort'];
$update_data['update_time'] = time();
$update_data['tag_name'] = trim($data['tag_name']);
$reslut = db::name('gift')->where(['gid' => $data['gid']])->update($update_data);
if (!$reslut) {
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
} else {
return ['code' => 200, 'msg' => '修改成功', 'data' => null];
}
}
//添加礼物
public function add_gift($data)
{
$add_data = [];
$add_data['type'] = $data['type'];
$add_data['gift_type'] = $data['gift_type'];
$add_data['gift_name'] = $data['gift_name'];
$add_data['gift_price'] = $data['gift_price'];
$add_data['base_image'] = $data['base_image'];
$add_data['file_type'] = $data['file_type'];
// $add_data['play_image'] = $data['play_image'];
if($data['file_type'] == 1){
$add_data['play_image'] = $data['play_image'];
}else{
$add_data['play_image'] = $data['plays_image'];
}
$add_data['nid'] = $data['nid'];
$add_data['mid'] = $data['mid'];
$add_data['position'] = $data['position'];
$add_data['pendant_image'] = $data['pendant_image'];
$add_data['is_public_screen'] = $data['is_public_screen'];
$add_data['is_public_server'] = $data['is_public_server'];
$add_data['is_show'] = $data['is_show'];
$add_data['is_can_buy'] = $data['is_can_buy'];
$add_data['sort'] = $data['sort'];
$add_data['update_time'] = time();
$add_data['add_time'] = time();
$add_data['tag_name'] = trim($data['tag_name']);
$reslut = db::name('gift')->insert($add_data);
if (!$reslut) {
return ['code' => 201, 'msg' => '添加失败', 'data' => null];
} else {
return ['code' => 200, 'msg' => '添加成功', 'data' => null];
}
}
//获取礼物信息
public function gift_info($gid)
{
if (empty($gid)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$gift_info = db::name('gift')->where(['gid' => $gid])->find();
$gift_info['http_base_image'] = localpath_to_netpath($gift_info['base_image']);
$gift_info['http_play_image'] = localpath_to_netpath($gift_info['play_image']);
$gift_info['pendant_image_path'] = localpath_to_netpath($gift_info['pendant_image']);
$gift_info['plays_image'] = $gift_info['play_image'];
return ['code' => 200, 'msg' => '获取成功', 'data' => $gift_info];
}
//删除礼物
public function del_gift($gid)
{
if (empty($gid)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
if($gid == 37 || $gid == 38 || $gid == 36){
return ['code' => 201, 'msg' => '该礼物无法删除', 'data' => null];
}
$reslut = db::name('gift')->where(['gid' => $gid])->update(['is_delete' => 2, 'delete_time' => time()]);
if (!$reslut) {
return ['code' => 201, 'msg' => '删除失败', 'data' => null];
} else {
return ['code' => 200, 'msg' => '删除成功', 'data' => null];
}
}
//批量删除礼物
public function batch_delete_gift($data){
if(empty($data)){
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$gid_list = [];
foreach ($data as $k => $v){
if(in_array($v['gid'], [36,37,38])) {
['code' => 201, 'msg' => '包含不能删除礼物', 'data' => null];
}
$gid_list[] = $v['gid'];
}
$map = [];
$map[] = ['gid', 'in', $gid_list];
$date = [];
$date['is_delete'] = 2;
$date['delete_time'] = time();
$reslut = db::name('gift')->where($map)->update($date);
if($reslut){
return ['code' => 200, 'msg' => '删除成功', 'data' => null];
}else{
return ['code' => 201, 'msg' => '删除失败', 'data' => null];
}
}
//列表
public function get_gift_position_list($order, $sort, $page = 1, $limit = 20)
{
$list = db::name('gift_position')->order($order, $sort)->page($page, $limit)->select();
$data = [];
$data['count'] = db::name('gift_position')->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//列表
public function get_privacy_gift_list($gid, $order, $sort, $page = 1, $limit = 20)
{
$map = [];
if (!empty($gid)) {
$map[] = ['a.gid', '=', $gid];
}
$map[] = ['a.is_delete', '=', 1];
// $map[] = ['b.is_gift_debris', '=', 2];
$list = db::name('room_privacy_gift')->alias('a')->join('yy_gift b', 'a.gid = b.gid')->field('b.*, a.id, a.duration')->where($map)->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v) {
$v['base_image'] = localpath_to_netpath($v['base_image']);
}
$data = [];
$data['count'] = db::name('room_privacy_gift')->alias('a')->join('yy_gift b', 'a.gid = b.gid')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//编辑礼物
public function edit_privacy_gift($data)
{
if (empty($data)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$room_info = db::name('room_privacy_gift')->find($data['id']);
if (empty($room_info)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$map = [];
$map[] = ['gid', '=', $data['gid']];
$map[] = ['id', 'neq', $data['id']];
$map[] = ['is_delete', '=', 1];
$room_privacy_gift = db::name('room_privacy_gift')->where($map)->find();
if($room_privacy_gift){
return ['code' => 201, 'msg' => '该礼物已添加过', 'data' => null];
}
// dump($data);exit;
$update_data = [];
$update_data['gid'] = $data['gid'];
$update_data['duration'] = $data['duration'];
$update_data['update_time'] = time();
$reslut = db::name('room_privacy_gift')->where(['id' => $data['id']])->update($update_data);
if (!$reslut) {
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
} else {
return ['code' => 200, 'msg' => '修改成功', 'data' => null];
}
}
//添加
public function add_privacy_gift($data)
{
$map = [];
$map[] = ['gid', '=', $data['gid']];
$map[] = ['is_delete', '=', 1];
$room_privacy_gift = db::name('room_privacy_gift')->where($map)->find();
if($room_privacy_gift){
return ['code' => 201, 'msg' => '该礼物已添加过', 'data' => null];
}
$add_data = [];
$add_data['gid'] = $data['gid'];
$add_data['duration'] = $data['duration'];
$add_data['update_time'] = time();
$add_data['add_time'] = time();
$reslut = db::name('room_privacy_gift')->insert($add_data);
if (!$reslut) {
return ['code' => 201, 'msg' => '添加失败', 'data' => null];
} else {
return ['code' => 200, 'msg' => '添加成功', 'data' => null];
}
}
//获取信息
public function get_privacy_gift_info($id)
{
if (empty($id)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$gift_info = db::name('room_privacy_gift')->where(['id' => $id])->find();
return ['code' => 200, 'msg' => '获取成功', 'data' => $gift_info];
}
//删除礼物
public function del_privacy_gift($id)
{
if (empty($id)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$reslut = db::name('room_privacy_gift')->where(['id' => $id])->update(['is_delete' => 2, 'update_time' => time()]);
if (!$reslut) {
return ['code' => 201, 'msg' => '删除失败', 'data' => null];
} else {
return ['code' => 200, 'msg' => '删除成功', 'data' => null];
}
}
//可选礼物列表
public function get_optional_gift_list($gid, $order, $sort, $page, $limit){
$config = get_uncache_system_config();
$map = [];
$map[] = ['type', '=', 1];
$map[] = ['is_show', '=', 1];
$map[] = ['is_can_buy', '=', 1];
// $map[] = ['is_gift_debris', '=', 2];
if(!empty($config['cp_gift_id'])){
$map[] = ['gid', 'neq', $config['cp_gift_id']];
}
$list = db::name('gift')->where($map)->select();
$data = [];
$data['count'] = db::name('gift')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
}

View File

@@ -0,0 +1,823 @@
<?php
namespace app\admin\model;
use think\Db;
use think\Model;
class Guild extends Model
{
//公会列表
public function guild_list($id, $guild_name, $order, $sort, $page = 1, $limit = 20,$jie_shan=2)
{
$map = [];
if (!empty($id)) {
$map[] = ['a.id|a.guild_special_id', '=', $id];
}
$start_time = input('start', '');
$end_time = input('end', '');
if(empty($start_time)) {
$start_time = strtotime(date('Ymd'));
} else {
$start_time = strtotime($start_time);
}
if(empty($end_time)) {
$end_time = time();
} else {
$end_time = strtotime($end_time);
}
$build_sql = db::name('room_guild_charm_count_day')
->field('guild_id,SUM(amount) as total_gift_total_price')
->where('add_time', 'between', [$start_time, $end_time])
->group('guild_id')->buildSql();
if($jie_shan==2){
$map[] = ['is_delete', '=', 1];
}else{
$map[] = ['is_delete', '=', 2];
}
$list = db::name('guild')->alias('a')
->join($build_sql.'b', 'a.id = b.guild_id', 'LEFT')
->field('a.id, a.guild_name, a.base64_guild_name, a.cover, b.total_gift_total_price, a.add_time,a.update_time,a.is_show,a.guild_special_id')
->where($map)->order('b.total_gift_total_price', 'desc')->page($page, $limit)->select();
foreach ($list as $k => &$v) {
$v['guild_name'] = mb_convert_encoding(base64_decode($v['base64_guild_name']), 'UTF-8', 'UTF-8');
$v['cover'] = localpath_to_netpath($v['cover']);
$v['total_gift_total_price'] = empty($v['total_gift_total_price']) ? 0 : $v['total_gift_total_price'];
}
$data = [];
$data['count'] = db::name('guild')->alias('a')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//编辑公会
public function edit_guild($data)
{
if (empty($data)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$user_info = db::name('user')->find($data['uid']);
if(!$user_info){
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$guild_info = db::name('guild')->find($data['id']);
if (empty($guild_info)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
Db::startTrans();
try {
//是否修改会长
if($data['uid'] != $guild_info['uid']){
$map = [];
$map[] = ['uid', '=', $data['uid']];
$map[] = ['status', '=', 1];
$map[] = ['is_delete', '=', 1];
$guild_infos = db::name('user_guild')->where($map)->find();
if($guild_infos){
return ['code' => 201, 'msg' => '该用户已加入公会', 'data' => null];
}
if(empty($user_info['real_name']) || empty($user_info['card_id'])) {
return ['code' => 201, 'msg' => '请先实名认证', 'data' => null];
}
//将之前会长退出公会
$update_data = [];
$update_data['is_delete'] = 2;
$update_data['update_time'] = time();
$reslut = db::name('user_guild')->where('uid',$guild_info['uid'])->update($update_data);
if(!$reslut){
Db::rollback();
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
}
$update_data = [];
$update_data['is_deacon'] = 2;
$update_data['update_time'] = time();
$reslut = db::name('user')->where('uid', $guild_info['uid'])->update($update_data);
if(!$reslut){
Db::rollback();
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
}
//新会长进入公会
//该用户是否有房间
$rid = 0;
$room_info = db::name('room')->where('room_owner_uid',$data['uid'])->find();
if($room_info){
$rid = $room_info['rid'];
}
//加入公会
$insert_data = [];
$insert_data['uid'] = $data['uid'];
$insert_data['guild_id'] = $data['id'];
$insert_data['rid'] = $rid;
$insert_data['card_id'] = $user_info['card_id'];
$insert_data['status'] = 1;
$insert_data['add_time'] = time();
$insert_data['is_deacon'] = 1;
$insert_data['is_show_room'] = 1;
$reslut = db::name('user_guild')->insertGetId($insert_data);
if(!$reslut){
Db::rollback();
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
}
$update_data = [];
$update_data['is_deacon'] = 1;
$update_data['update_time'] = time();
$reslut = db::name('user')->where('uid', $data['uid'])->update($update_data);
if(!$reslut){
Db::rollback();
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
}
}
$data['guild_special_id'] = trim($data['guild_special_id']);
if(!empty($data['guild_special_id'])){
if(!preg_match("/^[1-9][0-9]*$/" ,$data['guild_special_id']) || ($data['guild_special_id'] <= 1000)){
return ['code' => 201, 'msg' => '请输入至少4位正整数!', 'data' => null];
}
if(!empty($data['guild_special_id'])){
$is_exists = db::name('guild')->where([['id','<>',$data['id']]])->where(['guild_special_id|uid'=>trim($data['guild_special_id'])])->find();
if($is_exists){
Db::rollback();
return ['code' => 201, 'msg' => '该靓号已经存在其它公会!', 'data' => null];
}
}
}else{
$data['guild_special_id'] = "";
}
$update_data = [];
$update_data['uid'] = $data['uid'];
$update_data['guild_name'] = $data['guild_name'];
$update_data['base64_guild_name'] = base64_encode($data['guild_name']);
$update_data['cover'] = $data['cover'];
$update_data['money'] = $data['money'];
$update_data['update_time'] = time();
$update_data['guild_special_id'] = $data['guild_special_id'];
$update_data['intro'] = trim($data['intro']);
$reslut = db::name('guild')->where(['id' => $data['id']])->update($update_data);
if (!$reslut) {
Db::rollback();
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
}
Db::commit();
return ['code' => 200, 'msg' => '修改成功', 'data' => null];
} catch (\Exception $e) {
// 回滚事务
dump($e);
Db::rollback();
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
}
}
//添加公会
public function add_guild($data)
{
$user_info = db::name('user')->find($data['uid']);
if(!$user_info){
return ['code' => 201, 'msg' => '该用户不存在', 'data' => null];
}
if(empty($user_info['real_name']) || empty($user_info['card_id'])) {
return ['code' => 201, 'msg' => '请先实名认证', 'data' => null];
}
$map = [];
$map[] = ['uid', '=', $data['uid']];
$map[] = ['status', '=', 1];
$map[] = ['is_delete', '=', 1];
$guild_info = db::name('user_guild')->where($map)->find();
if($guild_info){
return ['code' => 201, 'msg' => '该用户已有公会', 'data' => null];
}
Db::startTrans();
try {
$data['guild_special_id'] = trim($data['guild_special_id']);
if(!empty($data['guild_special_id'])){
if(!preg_match("/^[1-9][0-9]*$/" ,$data['guild_special_id']) || ($data['guild_special_id'] <= 1000)){
return ['code' => 201, 'msg' => '请输入至少4位正整数!', 'data' => null];
}
if(!empty($data['guild_special_id'])){
$is_exists = db::name('guild')->where(['guild_special_id|uid'=>trim($data['guild_special_id'])])->find();
if($is_exists){
Db::rollback();
return ['code' => 201, 'msg' => '该靓号已经存在其它公会!', 'data' => null];
}
}
}else{
$data['guild_special_id'] = "";
}
//添加公会
$add_data = [];
$add_data['uid'] = $data['uid'];
$add_data['guild_name'] = $data['guild_name'];
$add_data['base64_guild_name'] = base64_encode($data['guild_name']);
$add_data['cover'] = $data['cover'];
$add_data['money'] = 0;
$add_data['num'] = 1;
$add_data['add_time'] = time();
$add_data['guild_special_id'] = $data['guild_special_id'];
$add_data['intro'] = trim($data['intro']);
$guild_id = db::name('guild')->insertGetId($add_data);
if (!$guild_id) {
return ['code' => 201, 'msg' => '添加失败', 'data' => null];
}
//该用户是否有房间
$rid = 0;
$room_info = db::name('room')->where('room_owner_uid',$data['uid'])->find();
if($room_info){
$rid = $room_info['rid'];
}
//加入公会
$insert_data = [];
$insert_data['uid'] = $data['uid'];
$insert_data['guild_id'] = $guild_id;
$insert_data['rid'] = $rid;
$insert_data['card_id'] = $user_info['card_id'];
$insert_data['status'] = 1;
$insert_data['add_time'] = time();
$insert_data['is_deacon'] = 1;
$insert_data['is_show_room'] = 1;
$reslut = db::name('user_guild')->insertGetId($insert_data);
if(!$reslut){
Db::rollback();
return ['code' => 201, 'msg' => '添加失败', 'data' => null];
}
$update_data = [];
$update_data['is_deacon'] = 1;
$update_data['update_time'] = time();
$reslut = db::name('user')->where('uid', $data['uid'])->update($update_data);
if(!$reslut){
Db::rollback();
return ['code' => 201, 'msg' => '添加失败', 'data' => null];
}
Db::commit();
return ['code' => 200, 'msg' => '添加成功', 'data' => null];
} catch (\Exception $e) {
// 回滚事务
dump($e);
Db::rollback();
return ['code' => 201, 'msg' => '添加失败', 'data' => null];
}
}
//获取公会信息
public function guild_info($id)
{
if (empty($id)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$gift_info = db::name('guild')->where(['id' => $id])->find();
$gift_info['http_base_image'] = localpath_to_netpath($gift_info['cover']);
return ['code' => 200, 'msg' => '获取成功', 'data' => $gift_info];
}
//删除公会
public function del_guild($id)
{
if (empty($id)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$gid_info = db::name('guild')->where('id', $id)->find();
if(!$gid_info){
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$reslut = db::name('guild')->where(['id' => $id])->update(['is_delete' => 2, 'update_time' => time()]);
if (!$reslut) {
return ['code' => 201, 'msg' => '删除失败', 'data' => null];
} else {
return ['code' => 200, 'msg' => '删除成功', 'data' => null];
}
}
//批量删除公会
public function batch_delete_guild($data){
if(empty($data)){
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$gid_list = [];
foreach ($data as $k => $v){
$gid_list[] = $v['gid'];
}
$map = [];
$map[] = ['id', 'in', $gid_list];
$date = [];
$date['is_delete'] = 2;
$date['delete_time'] = time();
$reslut = db::name('guild')->where($map)->update($date);
if($reslut){
return ['code' => 200, 'msg' => '删除成功', 'data' => null];
}else{
return ['code' => 201, 'msg' => '删除失败', 'data' => null];
}
}
//公会用户详情
public function get_user_guild_list($id, $uid, $order, $sort, $page = 1, $limit = 20){
$map = [];
if(!empty($uid)){
$map[] = ['a.uid', '=', $uid];
}
// dump($id);exit;
$map[] = ['a.guild_id', '=', $id];
$map[] = ['a.status', '=', 1];
$map[] = ['a.is_delete', '=', 1];
$list = db::name('user_guild')->alias('a')->join('yy_user b', 'a.uid = b.uid')->field('a.*,b.nick_name,b.base64_nick_name')->where($map)->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v) {
$v['nick_name'] = mb_convert_encoding(base64_decode($v['base64_nick_name']), 'UTF-8', 'UTF-8');
}
$data = [];
$data['count'] = db::name('user_guild')->alias('a')->join('yy_user b', 'a.uid = b.uid')->field('a.*')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//设置显示状态
public function set_is_show($id, $is_show)
{
$info = Db::name('guild')->find($id);
if(empty($info)) {
return ['code' => 201, 'msg' => '数据不存在', 'data' => ''];
}
$result = Db::name('guild')->where('id', $id)->update(['is_show' => $is_show, 'update_time' => time()]);
return ['code' => 200, 'msg' => '设置成功', 'data' => ''];
}
//用户公会信息
public function user_guild_info($id){
$user_guild_info = db::name('user_guild')->where('id', $id)->where('status', 1)->where('is_delete', 1)->find();
if(!$user_guild_info){
return ['code' => 201, 'msg' => '该用户信息不存在', 'data' => null];
}
return ['code' => 200, 'msg' => '获取成功', 'data' => $user_guild_info];
}
//编辑用户公会信息
public function edit_user_guild($data){
if(empty($data['id'])){
return ['code' => 201, 'msg' => '参数错误', 'data' => ''];
}
$user_guild_info = db::name('user_guild')->where('id', $data['id'])->where('status', 1)->where('is_delete', 1)->find();
if(!$user_guild_info){
return ['code' => 201, 'msg' => '该用户信息不存在', 'data' => null];
}
if($user_guild_info['is_deacon'] == 1){
// return ['code' => 201, 'msg' => '无法修改会长信息', 'data' => null];
}
$update = [];
$update['is_show_room'] = $data['is_show_room'];
$update['update_time'] = time();
$result = db::name('user_guild')->where('id', $data['id'])->update($update);
if($result){
return ['code' => 200, 'msg' => '编辑成功', 'data' => null];
}else{
return ['code' => 201, 'msg' => '编辑失败', 'data' => null];
}
}
//公会排行列表
public function get_guild_rank_list($id, $start, $end, $order, $sort, $page = 1, $limit = 20)
{
$map = [];
if (!empty($id)) {
$map[] = ['a.id', '=', $id];
}
$where = [];
if(!empty($start)) {
$where[] = ['add_time', '>=', strtotime($start)];
}
if(!empty($end)) {
$where[] = ['add_time', '<=', strtotime($end)];
}
$map[] = ['a.is_delete', '=', 1];
$build_sql = db::name('room_guild_charm_count_day')->field('guild_id,SUM(amount) as total_gift_total_price,add_time')->where($where)->group('guild_id')->buildSql();
$list = db::name('guild')->alias('a')->join($build_sql.'b', 'a.id = b.guild_id', 'LEFT')->field('a.*,b.total_gift_total_price')->where($map)->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v) {
$v['guild_name'] = mb_convert_encoding(base64_decode($v['base64_guild_name']), 'UTF-8', 'UTF-8');
$v['cover'] = localpath_to_netpath($v['cover']);
if(empty($v['total_gift_total_price'])){
$v['total_gift_total_price'] = 0;
}
}
$data = [];
$data['count'] = db::name('guild')->alias('a')->join($build_sql.'b', 'a.id = b.guild_id', 'LEFT')->where($map)->count();
$data['list'] = $list;
// $totalRowData = Db::name('guild')->alias('a')->join($build_sql.'b', 'a.id = b.guild_id', 'LEFT')->field('total_gift_total_price')->where($map)->find();
// $data['totalRow'] = $totalRowData;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//公会用户列表
public function get_guild_user_rank_list($guild_id, $uid, $start, $end, $order, $sort, $page = 1, $limit = 20)
{
$map = [];
if (!empty($uid)) {
$map[] = ['a.uid', '=', $uid];
}
$where = [];
if(!empty($start)) {
$where[] = ['add_time', '>=', strtotime($start)];
}
if(!empty($end)) {
$where[] = ['add_time', '<=', strtotime($end)];
}
$map[] = ['a.guild_id', '=', $guild_id];
$map[] = ['a.status', '=', 1];
$map[] = ['a.is_delete', '=', 1];
$build_sql = db::name('user_guild_charm_count_day')->field('uid,SUM(amount) as total_gift_total_price,add_time')->where($where)->group('uid')->buildSql();
$list = db::name('user_guild')->alias('a')->join($build_sql.'b', 'a.uid = b.uid', 'LEFT')->join('yy_user c', 'a.uid = c.uid')->field('a.*,b.total_gift_total_price,c.base64_nick_name,c.head_pic')->where($map)->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v) {
$v['nick_name'] = mb_convert_encoding(base64_decode($v['base64_nick_name']), 'UTF-8', 'UTF-8');
$v['head_pic'] = localpath_to_netpath($v['head_pic']);
if(empty($v['total_gift_total_price'])){
$v['total_gift_total_price'] = 0;
}
}
$data = [];
$data['count'] = db::name('user_guild')->alias('a')->join($build_sql.'b', 'a.uid = b.uid', 'LEFT')->join('yy_user c', 'a.uid = c.uid')->where($map)->count();
$data['list'] = $list;
// $totalRowData = Db::name('guild')->alias('a')->join($build_sql.'b', 'a.id = b.guild_id', 'LEFT')->field('total_gift_total_price')->where($map)->find();
// $data['totalRow'] = $totalRowData;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//公会房间列表
public function get_guild_room_rank_list($guild_id, $room_number, $start, $end, $order, $sort, $page = 1, $limit = 20)
{
$map = [];
if (!empty($room_number)) {
$map[] = ['c.room_number', '=', $room_number];
}
$where = [];
if(!empty($start)) {
$where[] = ['add_time', '>=', strtotime($start)];
}
if(!empty($end)) {
$where[] = ['add_time', '<=', strtotime($end)];
}
$map[] = ['a.guild_id', '=', $guild_id];
$map[] = ['a.status', '=', 1];
$map[] = ['a.is_delete', '=', 1];
$map[] = ['a.rid', '>', 0];
$build_sql = db::name('room_guild_charm_count_day')->field('rid,SUM(amount) as total_gift_total_price,add_time')->where($where)->group('rid')->buildSql();
$list = db::name('user_guild')->alias('a')->join($build_sql.'b', 'a.rid = b.rid', 'LEFT')->join('yy_room c', 'a.rid = c.rid')->field('a.*,b.total_gift_total_price,c.base64_room_name,c.room_cover,c.room_number')->where($map)->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v) {
$v['room_name'] = mb_convert_encoding(base64_decode($v['base64_room_name']), 'UTF-8', 'UTF-8');
$v['room_cover'] = localpath_to_netpath($v['room_cover']);
if(empty($v['total_gift_total_price'])){
$v['total_gift_total_price'] = 0;
}
}
$data = [];
$data['count'] = db::name('user_guild')->alias('a')->join($build_sql.'b', 'a.rid = b.rid', 'LEFT')->join('yy_room c', 'a.rid = c.rid')->where($map)->count();
$data['list'] = $list;
// $totalRowData = Db::name('guild')->alias('a')->join($build_sql.'b', 'a.id = b.guild_id', 'LEFT')->field('total_gift_total_price')->where($map)->find();
// $data['totalRow'] = $totalRowData;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//获取列表
public function give_guild_subsidy_list($guild_id, $uid, $is_fa, $order, $sort, $page, $limit, $belong_week){
$map = [];
if(!empty($guild_id)){
$map[] = ['guild_id', '=', $guild_id];
}
if(!empty($uid)){
$map[] = ['guild_uid_id', '=', $uid];
}
if(!empty($is_fa)){
$map[] = ['is_fa', '=', $is_fa];
}
// if(!empty($is_delete)){
// $map[] = ['is_delete', '=', $is_delete];
// }
// if(!empty($start)){
// $now_time = strtotime($start);
// $last_week = strtotime('-1 week last sunday', $now_time);
// $map[] = ['last_week_time', '=', $last_week];
// }else{
// $now_time = time();
// $last_week = strtotime('-1 week last sunday', $now_time);
// $map[] = ['last_week_time', '=', $last_week];
// }
if(!empty($belong_week)){
$map[] = ['belong_week', '=', $belong_week];
}
$map[] = ['type', '=', 1];
$list = db::name('guild_week_earnings_log')->where($map)->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v){
$guild_info = db::name('guild')->find($v['guild_id']);
$v['guild_name'] = mb_convert_encoding(base64_decode($guild_info['base64_guild_name']), 'UTF-8', 'UTF-8');
$user_info = db::name('user')->find($v['guild_uid_id']);
$v['nick_name'] = mb_convert_encoding(base64_decode($user_info['base64_nick_name']), 'UTF-8', 'UTF-8');
}
$data = [];
$data['count'] = db::name('guild_week_earnings_log')->where($map)->count();
$totalRowData = db::name('guild_week_earnings_log')->field('SUM(change_value) as change_value,SUM(earnings) as earnings')->where($map)->find();
$data['totalRow'] = $totalRowData;
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//批量结算
// public function batch_give_guild_subsidy($data){
// if(empty($data)){
// return ['code' => 201, 'msg' => '参数异常', 'data' => null];
// }
// $gid_list = [];
// foreach ($data as $k => $v){
// if(in_array($v['is_delete'], [2])) {
// ['code' => 201, 'msg' => '批量结算中包含已发放的', 'data' => null];
// }
// $gid_list[] = $v['id'];
// }
// try {
// Db::startTrans();
// $map = [];
// $map[] = ['id', 'in', $gid_list];
// $map[] = ['is_delete', '=', 1];
// $list = db::name('user_guild_week_earnings')->where($map)->select();
// if(!empty($list)){
// foreach ($list as $k => $v){
// if($v['user_earnings'] > 0){
// $reslut = model('admin/User')->change_user_money_by_uid($v['uid'], $v['user_earnings'], 1, 39, '公会补贴收益', $v['uid'], 0, 0);
// if ($reslut['code'] == 201) {
// Db::rollback();
// return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null];
// }
// }
// $reslut = db::name('user_guild_week_earnings')->where('id', $v['id'])->update(['is_delete' => 2, 'update_time' => time()]);
// if (!$reslut) {
// Db::rollback();
// return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null];
// }
// }
// }
// // 提交事务
// Db::commit();
// return ['code' => 200, 'msg' => "发放成功", 'data' => null];
// } catch (\Exception $e) {
// // 回滚事务
// // dump($e);
// Db::rollback();
// return ['code' => 201, 'msg' => "发放失败", 'data' => null];
// }
// }
public function batch_give_guild_subsidy(){
$week_start = date('Y-m-d', strtotime("last week Monday"));
$week_end = date('Y-m-d', strtotime("last week Sunday"));
$balance_week = $week_start."-".$week_end;
// $week_start = date('Y-m-d', strtotime("this week Monday"));
// $week_end = date('Y-m-d', strtotime("this week Sunday"));
// $balance_week = $week_start."-".$week_end;
$is_had_deal = db::name('guild_week_earnings_log')->where(['is_delete'=>1,'belong_week'=>$balance_week,'is_fa'=>2])->find();
if(empty($is_had_deal)){
return ['code' => 201, 'msg' => "没有要结算的工资", 'data' => null];
}
try {
db::name('guild_week_earnings_log')->where(['is_delete'=>1,'belong_week'=>$balance_week,'is_fa'=>2])->update(['is_delete'=>2,'update_time'=>time()]);
//推入队列
$redis = connectionRedis();
$redis->rPush('balance_guild_wages_date',$balance_week);
//推入事务逻辑
// $data = model('api/RoomWages')->batch_give_guild_subsidy($balance_week);
// if($data['code'] != 200){
// return ['code' => 200, 'msg' =>$data['msg'], 'data' => null];
// }
return ['code' => 200, 'msg' => "发放成功", 'data' => null];
} catch (\Exception $e) {
// 回滚事务
Db::rollback();
return ['code' => 201, 'msg' => "发放失败", 'data' => null];
}
}
//补贴详情
public function get_give_guild_subsidy_info($id){
if(empty($id)){
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$user_guild_week_earnings = db::name('user_guild_week_earnings')->where('id', $id)->find();
if(!$user_guild_week_earnings){
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
return ['code' => 200, 'msg' => '获取成功', 'data' => $user_guild_week_earnings];
}
//修改补贴
public function edit_give_room_subsidy($id, $user_earnings){
if(empty($id)){
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$user_guild_week_earnings = db::name('user_guild_week_earnings')->where('id', $id)->find();
if(!$user_guild_week_earnings){
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
if($user_earnings < 0){
return ['code' => 201, 'msg' => '收益不能小于0', 'data' => null];
}
if($user_guild_week_earnings['is_delete'] == 2){
return ['code' => 201, 'msg' => '该收益已结算,无法编辑', 'data' => null];
}
$update = [];
$update['user_earnings'] = $user_earnings;
$update['update_time'] = time();
$reslut = db::name('user_guild_week_earnings')->where('id', $id)->update($update);
if($reslut){
return ['code' => 200, 'msg' => '编辑成功', 'data' => null];
}else{
return ['code' => 201, 'msg' => '编辑失败', 'data' => null];
}
}
//解散公会
public function diss_guild($guild_id){
$guild_info = db::name('guild')->where(['id'=>$guild_id,'is_delete'=>1])->find();
if(empty($guild_info)){
return ['code' => 201, 'msg' => '公会不存在!', 'data' => null];
}
try {
Db::startTrans();
//成员解散
db::name('user_guild')->where(['guild_id'=>$guild_id,'status'=>1,'is_delete'=>1])->update(['is_delete'=>2,'quit_type'=>3,'quit_time'=>time()]);
//退会
$update_data = [];
$update_data['is_deacon'] = 2;
$update_data['update_time'] = time();
$reslut = db::name('user')->where('uid', $guild_info['uid'])->update($update_data);
//解散公会
db::name('guild')->where('id',$guild_id)->update(['is_delete'=>2,'is_show'=>2,'num'=>0,'guild_special_id'=>""]);
Db::commit();
return ['code' => 200, 'msg' => '解散成功!', 'data' => null];
}catch (\Exception $e) {
// 回滚事务
Db::rollback();
return ['code' => 201, 'msg' => '解散失败', 'data' => null];
}
}
//公会合并
public function guild_combine($cancel_guild_id,$join_guild_id){
$guild_info1 = db::name('guild')->where(['id'=>$cancel_guild_id,'is_delete'=>1])->find();
if(empty($guild_info1)){
return ['code' => 201, 'msg' => '被解散公会不存在!', 'data' => null];
}
$guild_info2 = db::name('guild')->where(['id'=>$join_guild_id,'is_delete'=>1])->find();
if(empty($guild_info2)){
return ['code' => 201, 'msg' => '并入公会不存在!', 'data' => null];
}
try {
Db::startTrans();
//a公会成员人数统计
$num = db::name('user_guild')->where(['guild_id'=>$cancel_guild_id,'status'=>1,'is_delete'=>1])->count("*");
//将a公会成员加入b公会
$s_date = date('Y-m-d H:i:s');
db::name('user_guild')->where(['guild_id'=>$cancel_guild_id,'status'=>1,'is_delete'=>1])->update(['guild_id'=>$join_guild_id,'is_deacon'=>2,'remarks'=>"{$s_date}公会id:{$cancel_guild_id}合并到公会id:{$join_guild_id}"]);
db::name('guild')->where(['id'=>$join_guild_id,'is_delete'=>1])->inc('num',$num)->update(['update_time'=>time()]);
//取消a公会 工会长身份
$update_data = [];
$update_data['is_deacon'] = 2;
$update_data['update_time'] = time();
$reslut = db::name('user')->where('uid', $guild_info1['uid'])->update($update_data);
db::name('guild')->where(['id'=>$cancel_guild_id])->update(['guild_special_id'=>"",'num'=>0,'is_delete'=>2,'is_show'=>2]);
Db::commit();
return ['code' => 200, 'msg' => '合并成功!', 'data' => null];
}catch (\Exception $e) {
Db::rollback();
return ['code' => 201, 'msg' => '合并失败', 'data' => null];
}
}
}

View File

@@ -0,0 +1,147 @@
<?php
namespace app\admin\model;
use think\Db;
use think\Model;
class GuildMoneyLog extends Model
{
//公会流水列表
public function get_list($guild_id, $start, $end, $page = 1, $limit = 20)
{
$map = [];
if($guild_id) {
$map[] = ['a.room_guild_id', '=', $guild_id];
}
if($start) {
$map[] = ['a.add_time', '>=', strtotime($start)];
}
if($end) {
$map[] = ['a.add_time', '<=', strtotime($end)];
}
$map[] = ['a.room_guild_id', '>', 0];
// dump($map);die;
$list = db::name('user_send_gift')->alias('a')
->field('a.*,b.room_name,b.room_number,b.room_owner_uid,c.guild_name,c.base64_guild_name,c.uid')
->leftJoin('yy_room b', 'a.rid = b.rid')
->leftJoin('yy_guild c', 'a.room_guild_id = c.id')
->where($map)->order('a.add_time', 'desc')->page($page, $limit)->select();
$uid_arr = $receive_uid_arr = [];
foreach ($list as $val) {
$uid_arr[] = $val['uid'];
$receive_uid_arr[] = $val['receive_uid'];
}
$uid_arr = array_merge($uid_arr, $receive_uid_arr);
$user_list = Db::name('user')->whereIn('uid', $uid_arr)->column('nick_name', 'uid');
foreach ($list as $k => &$v) {
$v['guild_name'] = mb_convert_encoding(base64_decode($v['base64_guild_name']), 'UTF-8', 'UTF-8');
$v['send_nick_name'] = $user_list[$v['uid']] ?? '';
$v['receive_nick_name'] = $user_list[$v['receive_uid']] ?? '';
}
$data = [];
$data['count'] = db::name('user_send_gift')->alias('a')->where($map)->count();
$data['list'] = $list;
$gift_total_price = Db::name('user_send_gift')->alias('a')->where($map)->sum('gift_total_price');
$totalRowData = ['gift_total_price' => $gift_total_price];
$data['totalRow'] = $totalRowData;
// $data['totalRow'] = ['gift_total_price' => strval($gift_total_price)];
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
public function get_guild_room_money_log_list($guild_id, $rid, $start, $end, $page, $limit)
{
$rid_arr = [];
if($rid) {
$rid_arr = [$rid];
}
// else {
// $rid_arr = $this->get_guild_room_list($guild_id);
// }
// dump($rid_arr);die;
$map = [];
if(!empty($rid_arr)) {
$map[] = ['a.rid', 'in', $rid_arr];
}
if($start) {
$map[] = ['a.add_time', '>=', strtotime($start)];
}
if($end) {
$map[] = ['a.add_time', '<=', strtotime($end)];
}
if($guild_id > 0) {
$map[] = ['a.room_guild_id', '=', $guild_id];
}
$map[] = ['a.room_guild_id', '>', 0];
$list = db::name('user_send_gift')->alias('a')
->field('a.*,b.room_name,b.base64_room_name,b.room_number,b.room_owner_uid,c.guild_name,c.base64_guild_name,c.uid')
->leftJoin('yy_room b', 'a.rid = b.rid')
->leftJoin('yy_guild c', 'a.room_guild_id = c.id')
->where($map)->order('a.add_time', 'desc')->page($page, $limit)->select();
$uid_arr = $receive_uid_arr = [];
foreach ($list as $val) {
$uid_arr[] = $val['uid'];
$receive_uid_arr[] = $val['receive_uid'];
}
$uid_arr = array_merge($uid_arr, $receive_uid_arr);
$user_list = Db::name('user')->whereIn('uid', $uid_arr)->column('nick_name', 'uid');
foreach ($list as $k => &$v) {
$v['guild_name'] = mb_convert_encoding(base64_decode($v['base64_guild_name']), 'UTF-8', 'UTF-8');
$v['send_nick_name'] = $user_list[$v['uid']] ?? '';
$v['receive_nick_name'] = $user_list[$v['receive_uid']] ?? '';
$v['room_name'] = mb_convert_encoding(base64_decode($v['base64_room_name']), 'UTF-8', 'UTF-8');
}
$data = [];
$data['count'] = db::name('user_send_gift')->alias('a')->where($map)->count();
$data['list'] = $list;
$totalRowData = Db::name('user_send_gift')->alias('a')
->field('SUM(gift_total_price) as gift_total_price, SUM(room_owner_profit) as room_owner_profit')
->where($map)->find();
$data['totalRow'] = $totalRowData;
// $data['totalRow'] = ['gift_total_price' => strval($gift_total_price)];
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//获取工会签约房间列表
public function get_guild_room_list($guild_id = 0, $is_move = 0)
{
$map = [];
if($guild_id) {
$map[] = ['guild_id', '=', $guild_id];
}
if($is_move) {
$map[] = ['is_delete', '=', $is_move];
}
$map[] = ['status', '=', 1];
$uid = Db::name('user_guild')->where($map)->column('uid');
$uid_arr = Db::name('user')->where(['uid' => $uid, 'is_sign' => 1])->column('uid');
$rid_arr = Db::name('room')->where(['room_owner_uid' => $uid_arr, 'room_status' => 1])->column('rid');
return $rid_arr;
}
//获取工会签约房间列表
public function get_guild_room_list_by_guild_id($guild_id)
{
$map = [
['a.guild_id', '=', $guild_id],
['a.status', '=', 1],
['b.is_sign', '=', 1],
];
$list = Db::name('user_guild')->alias('a')
->leftJoin('yy_user b', 'a.uid = b.uid')
->leftJoin('yy_room c', 'a.uid = c.room_owner_uid')
->field('a.is_delete,c.rid,c.base64_room_name')
->where($map)
->select();
foreach ($list as &$val) {
$val['room_name'] = mb_convert_encoding(base64_decode($val['base64_room_name']), 'UTF-8', 'UTF-8');
$val['is_delete_title'] = $val['is_delete'] == 1 ? '未离开' : '离开';
}
return $list;
}
}

View File

@@ -0,0 +1,271 @@
<?php
namespace app\admin\model;
use think\Model;
class Jpush extends Model
{
public $client;
public $message_data;
public function __construct()
{
$config = get_system_config();
$this->client = new \JPush\Client($config['jpush_app_key'], $config['jpush_master_secret']);
$this->message_data[1000] = '系统消息';
$this->message_data[1001] = '情缘消息';
$this->message_data[1002] = '陪玩订单消息';
}
//全体推送
public function push_all_notification_message($platform, $title, $message, $data = [])
{
if (empty($this->message_data[$data['code']])) {
return ['code' => 201, 'msg' => '消息类型不存在', 'data' => null];
}
// 完整的推送示例
// 这只是使用样例,不应该直接用于实际生产环境中 !!
try {
$response = $this->client->push();
if ($platform == 1) {
$response = $response->setPlatform(array('ios'));
} elseif ($platform == 2) {
$response = $response->setPlatform(array('android'));
} elseif ($platform == 3) {
$response = $response->setPlatform(array('ios', 'android'));
}
// 一般情况下,关于 audience 的设置只需要调用 addAlias、addTag、addTagAnd 或 addRegistrationId
// 这四个方法中的某一个即可,这里仅作为示例,当然全部调用也可以,多项 audience 调用表示其结果的交集
// 即是说一般情况下,下面三个方法和没有列出的 addTagAnd 一共四个,只适用一个便可满足大多数的场景需求
// ->addAlias('alias')
// ->addTag(array('tag1', 'tag2'))
// ->addRegistrationId($registration_id)
$response = $response->addAllAudience()
->iosNotification($message, array(
'title' => $title,
//'sound' => 'sound.caf',
// 'badge' => '+1',
// 'content-available' => true,
// 'mutable-content' => true,
//'category' => '',
'extras' => $data,
))
->androidNotification($message, array(
'title' => $title,
// 'builder_id' => 2,
'extras' => $data
))
->options(array(
// sendno: 表示推送序号,纯粹用来作为 API 调用标识,
// API 返回时被原样返回,以方便 API 调用方匹配请求与返回
// 这里设置为 100 仅作为示例
// 'sendno' => 100,
// time_to_live: 表示离线消息保留时长(秒)
// 推送当前用户不在线时,为该用户保留多长时间的离线消息,以便其上线时再次推送。
// 默认 86400 1 天),最长 10 天。设置为 0 表示不保留离线消息,只有推送当前在线的用户可以收到
// 这里设置为 1 仅作为示例
// 'time_to_live' => 1,
// apns_production: 表示APNs是否生产环境
// True 表示推送生产环境False 表示要推送开发环境;如果不指定则默认为推送开发环境
'apns_production' => false,
// big_push_duration: 表示定速推送时长(分钟),又名缓慢推送,把原本尽可能快的推送速度,降低下来,
// 给定的 n 分钟内均匀地向这次推送的目标用户推送。最大值为1400.未设置则不是定速推送
// 这里设置为 1 仅作为示例
// 'big_push_duration' => 1
))
->setSmsMessage(array(
'delay_time' => 60,
'signid' => 154,
'temp_id' => 1,
'temp_para' => array(
'code' => 357
),
'active_filter' => false
))
->send();
//print_r($response);
return ['code' => 200, 'msg' => '推送成功', 'data' => null];
} catch (\JPush\Exceptions\APIConnectionException $e) {
// try something here
//print $e;
return ['code' => 201, 'msg' => '推送失败', 'data' => null];
} catch (\JPush\Exceptions\APIRequestException $e) {
// try something here
// print $e;
return ['code' => 201, 'msg' => '推送失败', 'data' => null];
}
}
//个人推送
public function push_notification_message($uid, $title, $message, $data = [])
{
if (empty($this->message_data[$data['code']])) {
return ['code' => 201, 'msg' => '消息类型不存在', 'data' => null];
}
$uid = strval($uid);
// 完整的推送示例
// 这只是使用样例,不应该直接用于实际生产环境中 !!
try {
$response = $this->client->push()
->setPlatform(array('ios', 'android'));
// 一般情况下,关于 audience 的设置只需要调用 addAlias、addTag、addTagAnd 或 addRegistrationId
// 这四个方法中的某一个即可,这里仅作为示例,当然全部调用也可以,多项 audience 调用表示其结果的交集
// 即是说一般情况下,下面三个方法和没有列出的 addTagAnd 一共四个,只适用一个便可满足大多数的场景需求
// ->addAlias('alias')
// ->addTag(array('tag1', 'tag2'))
// ->addRegistrationId($registration_id)
//->addAllAudience()
$response = $response->addAlias($uid)
->setNotificationAlert($message)
->iosNotification($message, array(
'sound' => 'sound.caf',
// 'badge' => '+1',
// 'content-available' => true,
// 'mutable-content' => true,
'category' => 'jiguang',
'extras' => $data,
))
->androidNotification($message, array(
'title' => $title,
// 'builder_id' => 2,
'extras' => $data,
))
->message($message, array(
'title' => $title,
// 'content_type' => 'text',
'extras' => $data,
))->options(array(
// sendno: 表示推送序号,纯粹用来作为 API 调用标识,
// API 返回时被原样返回,以方便 API 调用方匹配请求与返回
// 这里设置为 100 仅作为示例
// 'sendno' => 100,
// time_to_live: 表示离线消息保留时长(秒)
// 推送当前用户不在线时,为该用户保留多长时间的离线消息,以便其上线时再次推送。
// 默认 86400 1 天),最长 10 天。设置为 0 表示不保留离线消息,只有推送当前在线的用户可以收到
// 这里设置为 1 仅作为示例
// 'time_to_live' => 1,
// apns_production: 表示APNs是否生产环境
// True 表示推送生产环境False 表示要推送开发环境;如果不指定则默认为推送开发环境
'apns_production' => false,
// big_push_duration: 表示定速推送时长(分钟),又名缓慢推送,把原本尽可能快的推送速度,降低下来,
// 给定的 n 分钟内均匀地向这次推送的目标用户推送。最大值为1400.未设置则不是定速推送
// 这里设置为 1 仅作为示例
// 'big_push_duration' => 1
))
->setSmsMessage(array(
'delay_time' => 60,
'signid' => 154,
'temp_id' => 1,
'temp_para' => array(
'code' => 357
),
'active_filter' => false
))
->send();
print_r($response);
} catch (\JPush\Exceptions\APIConnectionException $e) {
// try something here
//print $e;
return ['code' => 201, 'msg' => '推送失败', 'data' => null];
} catch (\JPush\Exceptions\APIRequestException $e) {
// try something here
// print $e;
return ['code' => 201, 'msg' => '推送失败', 'data' => null];
}
}
//推送APP内消息
public function push_message($uid, $title, $message, $data = [])
{
if (empty($this->message_data[$data['code']])) {
return ['code' => 201, 'msg' => '消息类型不存在', 'data' => null];
}
// 完整的推送示例
// 这只是使用样例,不应该直接用于实际生产环境中 !!
try {
$response = $this->client->push()
->setPlatform(array('ios', 'android'));
// 一般情况下,关于 audience 的设置只需要调用 addAlias、addTag、addTagAnd 或 addRegistrationId
// 这四个方法中的某一个即可,这里仅作为示例,当然全部调用也可以,多项 audience 调用表示其结果的交集
// 即是说一般情况下,下面三个方法和没有列出的 addTagAnd 一共四个,只适用一个便可满足大多数的场景需求
// ->addAlias('alias')
// ->addTag(array('tag1', 'tag2'))
// ->addRegistrationId($registration_id)
//->addAllAudience()
$response = $response->addAlias($uid)
->message($message, array(
'title' => $title,
// 'content_type' => 'text',
'extras' => $data,
))
->options(array(
// sendno: 表示推送序号,纯粹用来作为 API 调用标识,
// API 返回时被原样返回,以方便 API 调用方匹配请求与返回
// 这里设置为 100 仅作为示例
// 'sendno' => 100,
// time_to_live: 表示离线消息保留时长(秒)
// 推送当前用户不在线时,为该用户保留多长时间的离线消息,以便其上线时再次推送。
// 默认 86400 1 天),最长 10 天。设置为 0 表示不保留离线消息,只有推送当前在线的用户可以收到
// 这里设置为 1 仅作为示例
// 'time_to_live' => 1,
// apns_production: 表示APNs是否生产环境
// True 表示推送生产环境False 表示要推送开发环境;如果不指定则默认为推送开发环境
'apns_production' => false,
// big_push_duration: 表示定速推送时长(分钟),又名缓慢推送,把原本尽可能快的推送速度,降低下来,
// 给定的 n 分钟内均匀地向这次推送的目标用户推送。最大值为1400.未设置则不是定速推送
// 这里设置为 1 仅作为示例
// 'big_push_duration' => 1
))
->setSmsMessage(array(
'delay_time' => 60,
'signid' => 154,
'temp_id' => 1,
'temp_para' => array(
'code' => 357
),
'active_filter' => false
))
->send();
print_r($response);
} catch (\JPush\Exceptions\APIConnectionException $e) {
// try something here
//print $e;
return ['code' => 201, 'msg' => '推送失败', 'data' => null];
} catch (\JPush\Exceptions\APIRequestException $e) {
// try something here
// print $e;
return ['code' => 201, 'msg' => '推送失败', 'data' => null];
}
}
}

View File

@@ -0,0 +1,142 @@
<?php
namespace app\admin\model;
use think\Model;
use think\Db;
class Message extends Model
{
protected $pk = 'smid';
protected $auto = ['update_time'];
protected $insert = [
'add_time',
];
protected $update = ['update_time'];
protected function setAddTimeAttr()
{
return time();
}
protected function setUpdateTimeAttr()
{
return time();
}
public function get_message_list($smid, $title, $order, $sort, $page, $limit)
{
$map = [];
if (!empty($smid)) {
$map[] = ['smid', '=', $smid];
}
if (!empty($title)) {
$map[] = ['title', 'like', '%' . $title . '%'];
}
$user_list = db::name('message')->where($map)->order($order, $sort)->page($page, $limit)->select();
$data = [];
$data['count'] = db::name('message')->where($map)->count();
$data['list'] = $user_list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
public function get_message_info($smid)
{
$map = [];
$map[] = ['smid', '=', $smid];
$info = db::name('message')->where($map)->find();
return ['code' => 200, 'msg' => '获取成功', 'data' => $info];
}
// public function add_message($datas)
// {
// set_time_limit(0);
// ini_set('memory_limit', '1024M');
// $validate = validate('message');
// $reslut = $validate->scene('adminAdd')->check($datas);
// if ($reslut !== true) {
// return ['code' => 201, 'msg' => $validate->getError(), 'data' => null];
// }
// $message = model('message');
// $reslut = $message->save($datas);
// $smid = $message->smid;
// if ($reslut) {
// //批量增加用户消息
// $uid_list = db::name('user')->column('uid');
// $now_time = time();
// $insert_data = [];
// foreach ($uid_list as $k => $v) {
// $data = [];
// $data['type'] = 1;
// $data['id'] = $smid;
// $data['uid'] = $v;
// $data['title'] = $datas['title'];
// $data['content'] = $datas['content'];
// $data['is_read'] = 1;
// $data['read_time'] = 0;
// $data['add_time'] = $now_time;
// $data['update_time'] = $now_time;
// $insert_data[] = $data;
// // if (count($insert_data) % 2000 == 0) {
// // db::name('user_message')->insertAll($insert_data);
// // }
// }
// if (!empty($insert_data)) {
// db::name('user_message')->insertAll($insert_data);
// }
// return ['code' => 200, 'msg' => '添加成功', 'data' => ''];
// } else {
// return ['code' => 201, 'msg' => '添加失败', 'data' => ''];
// }
// }
public function add_message($data)
{
set_time_limit(0);
ini_set('memory_limit', '1024M');
$validate = validate('message');
$reslut = $validate->scene('adminAdd')->check($data);
if ($reslut !== true) {
return ['code' => 201, 'msg' => $validate->getError(), 'data' => null];
}
$message = model('message');
$reslut = $message->save($data);
$smid = $message->smid;
$data1 = $data;
if ($reslut) {
//队列插入数据
$redis = connectionRedis();
$redis->rPush('admin_add_message111',$smid.'-61116-'.$data1['title'].'-61116-'.$data1['content']);
return ['code' => 200, 'msg' => '添加成功', 'data' => ''];
} else {
return ['code' => 201, 'msg' => '添加失败', 'data' => ''];
}
}
public function edit_message($data)
{
$validate = validate('message');
$reslut = $validate->scene('adminEdit')->check($data);
if ($reslut !== true) {
return ['code' => 201, 'msg' => $validate->getError(), 'data' => null];
}
$reslut = model('message')->isUpdate(true)->save($data);
if (!$reslut) {
return ['code' => 201, 'msg' => '编辑失败', 'data' => ''];
} else {
$update_data = [];
$update_data['title'] = $data['title'];
$update_data['content'] = $data['content'];
$update_data['is_show'] = $data['is_show'];
db::name('user_message')->where(['smid' => $data['smid']])->update($update_data);
return ['code' => 200, 'msg' => '编辑成功', 'data' => ''];
}
}
}

View File

@@ -0,0 +1,244 @@
<?php
namespace app\admin\model;
use think\Db;
use think\Model;
class Monster extends Model
{
//列表
public function get_monster_list($order, $sort, $page = 1, $limit = 20)
{
$list = db::name('Monster')->order($order, $sort)->page($page, $limit)->select();
$total_num = db::name('Monster')->sum('num');
foreach ($list as $k => &$v) {
$gift_info = db::name('gift')->where('gid', $v['gid'])->find();
$v['gift_name'] = $gift_info['gift_name'];
$v['base_image'] = localpath_to_netpath($gift_info['base_image']);
$v['gift_price'] = $gift_info['gift_price'];
$v['rate'] = round(($v['num']/$total_num), 6) * 100;
$v['rate'] .= '%';
}
$data = [];
$data['count'] = db::name('Monster')->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//获取礼物列表
public function get_gift_list(){
$map = [];
// $map[] = ['gid', 'not in', [36,37,38]];
$map[] = ['type', '=', 1];
$map[] = ['is_show','=',1];
$map[] = ['is_delete', '=', 1];
$list = db::name('gift')->where($map)->order('gift_price asc')->select();
foreach ($list as $k => &$v) {
$v['base_image'] = localpath_to_netpath($v['base_image']);
}
$data = [];
$data['count'] = db::name('gift')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//编辑
public function edit_monster($data)
{
if (empty($data)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$monster_info = db::name('Monster')->find($data['id']);
if (empty($monster_info)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$map = [];
$map[] = ['gid', '=', $data['gid']];
$map[] = ['type', '=', 1];
$map[] = ['is_show','=',1];
$map[] = ['is_delete', '=', 1];
$gift_info = db::name('gift')->where($map)->find();
if(!$gift_info){
return ['code' => 201, 'msg' => '配置礼物不存在', 'data' => null];
}
if($monster_info['multiple'] * 10 != $gift_info['gift_price']){
return ['code' => 201, 'msg' => '配置礼物的价格必须为倍数的10倍', 'data' => null];
}
Db::startTrans();
try {
$update_data = [];
$update_data['type_name'] = $data['type_name'];
// $update_data['multiple'] = $data['multiple'];
$update_data['gid'] = $data['gid'];
$update_data['num'] = $data['num'];
$update_data['update_time'] = time();
$reslut = db::name('Monster')->where(['id' => $data['id']])->update($update_data);
if (!$reslut) {
Db::rollback();
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
}
Db::commit();
return ['code' => 200, 'msg' => '修改成功', 'data' => null];
} catch (\Exception $e) {
// 回滚事务
dump($e);
Db::rollback();
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
}
}
//获取信息
public function get_monster_info($id)
{
if (empty($id)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$monster_info = db::name('Monster')->where(['id' => $id])->find();
return ['code' => 200, 'msg' => '获取成功', 'data' => $monster_info];
}
//列表
public function get_monster_multiple_list($order, $sort, $page = 1, $limit = 20)
{
$list = db::name('monster_multiple')->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v) {
}
$data = [];
$data['count'] = db::name('monster_multiple')->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//编辑
public function edit_monster_multiple($data)
{
if (empty($data)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$monster_info = db::name('monster_multiple')->find($data['id']);
if (empty($monster_info)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
Db::startTrans();
try {
$update_data = [];
$update_data['multiple'] = $data['multiple'];
$update_data['update_time'] = time();
$reslut = db::name('monster_multiple')->where(['id' => $data['id']])->update($update_data);
if (!$reslut) {
Db::rollback();
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
}
Db::commit();
return ['code' => 200, 'msg' => '修改成功', 'data' => null];
} catch (\Exception $e) {
// 回滚事务
dump($e);
Db::rollback();
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
}
}
//获取信息
public function get_monster_multiple_info($id)
{
if (empty($id)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$monster_info = db::name('monster_multiple')->where(['id' => $id])->find();
return ['code' => 200, 'msg' => '获取成功', 'data' => $monster_info];
}
//列表
public function get_monster_log($order, $sort, $page = 1, $limit = 20)
{
$list = db::name('monster_log')->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v) {
$v['type_name'] = '暂未开奖';
$v['gid'] = 0;
$v['gift_name'] = '';
$v['base_image'] = '';
$v['gift_price'] = 0;
if($v['is_delete'] == 2){
$gift_info = db::name('Monster')->alias('a')->join('yy_gift b', 'a.gid = b.gid')->field('b.gid,b.gift_name,b.base_image,b.gift_price,a.type_name')->where('a.type', $v['win_type'])->find();
$v['gid'] = $gift_info['gid'];
$v['gift_name'] = $gift_info['gift_name'];
$v['base_image'] = localpath_to_netpath($gift_info['base_image']);
$v['gift_price'] = $gift_info['gift_price'];
$v['type_name'] = $gift_info['type_name'];
}
}
$data = [];
$data['count'] = db::name('monster_log')->count();
$data['list'] = $list;
$totalRowData = db::name('monster_log')->field('count(1) as count,SUM(out_amount) as out_amount,SUM(in_amount) as in_amount')->find();
unset($totalRowData['count']);
$data['totalRow'] = $totalRowData;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//列表
public function get_user_monster_log($mid, $order, $sort, $page = 1, $limit = 20)
{
$list = db::name('user_monster_log')->where('mid', $mid)->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v) {
$user_info = db::name('user')->where('uid', $v['uid'])->field('uid,nick_name,base64_nick_name,head_pic')->find();
$v['nick_name'] = mb_convert_encoding(base64_decode($user_info['base64_nick_name']), 'UTF-8', 'UTF-8');
$v['head_pic'] = localpath_to_netpath($user_info['head_pic']);
$v['type_name'] = db::name('Monster')->where('type', $v['type'])->value('type_name');
}
$data = [];
$data['count'] = db::name('user_monster_log')->where('mid', $mid)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//列表
public function get_user_monster_win_log($mid, $order, $sort, $page = 1, $limit = 20)
{
$list = db::name('user_monster_win_log')->where('mid', $mid)->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v) {
$user_info = db::name('user')->where('uid', $v['uid'])->field('uid,nick_name,base64_nick_name,head_pic')->find();
$v['nick_name'] = mb_convert_encoding(base64_decode($user_info['base64_nick_name']), 'UTF-8', 'UTF-8');
$v['head_pic'] = localpath_to_netpath($user_info['head_pic']);
$v['type_name'] = db::name('Monster')->where('type', $v['win_type'])->value('type_name');
$gift_info = db::name('gift')->where('gid', $v['win_gid'])->field('gid,gift_name,base_image,gift_price')->find();
$v['gift_name'] = $gift_info['gift_name'];
$v['base_image'] = localpath_to_netpath($gift_info['base_image']);
$v['gift_price'] = $gift_info['gift_price'];
}
$data = [];
$data['count'] = db::name('user_monster_win_log')->where('mid', $mid)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
}

View File

@@ -0,0 +1,575 @@
<?php
namespace app\admin\model;
use think\Db;
use think\Model;
class Multiple extends Model
{
//类型列表
public function get_gift_multiple_type_list($id, $name, $order, $sort, $page = 1, $limit = 20)
{
$map = [];
if (!empty($id)) {
$map[] = ['id', '=', $id];
}
if (!empty($name)) {
$map[] = ['name', 'like', '%' . $name . '%'];
}
$map[] = ['is_delete', '=', 1];
$list = db::name('gift_multiple_type')->where($map)->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v) {
}
$data = [];
$data['count'] = db::name('gift_multiple_type')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//编辑类型
public function edit_gift_multiple_type($data)
{
if (empty($data)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$info = db::name('gift_multiple_type')->find($data['id']);
if (empty($info)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$update_data = [];
$update_data['name'] = $data['name'];
$update_data['update_time'] = time();
$reslut = db::name('gift_multiple_type')->where(['id' => $data['id']])->update($update_data);
if (!$reslut) {
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
} else {
return ['code' => 200, 'msg' => '修改成功', 'data' => null];
}
}
//添加类型
public function add_gift_multiple_type($data)
{
$add_data = [];
$add_data['name'] = $data['name'];
$add_data['update_time'] = time();
$add_data['add_time'] = time();
$reslut = db::name('gift_multiple_type')->insert($add_data);
if (!$reslut) {
return ['code' => 201, 'msg' => '添加失败', 'data' => null];
} else {
return ['code' => 200, 'msg' => '添加成功', 'data' => null];
}
}
//获取类型信息
public function get_gift_multiple_type_info($id)
{
if (empty($id)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$info = db::name('gift_multiple_type')->where(['id' => $id])->find();
return ['code' => 200, 'msg' => '获取成功', 'data' => $info];
}
//删除类型
public function del_gift_multiple_type($id)
{
if (empty($id)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$reslut = db::name('gift_multiple_type')->where(['id' => $id])->update(['is_delete' => 2, 'update_time' => time()]);
if (!$reslut) {
return ['code' => 201, 'msg' => '删除失败', 'data' => null];
} else {
return ['code' => 200, 'msg' => '删除成功', 'data' => null];
}
}
//列表
public function get_gift_multiple_rate_list($pid, $order, $sort, $page = 1, $limit = 20)
{
set_time_limit(0);
ini_set('memory_limit', '1024M');
$redis = connectionRedis();
$map = [];
if (!empty($pid)) {
$map[] = ['pid', '=', $pid];
}
$map[] = ['is_delete', '=', 1];
$count = db::name('gift_multiple_rate')->where($map)->sum('rate_num');
$list = db::name('gift_multiple_rate')->where($map)->order($order, $sort)->page($page, $limit)->select();
$total_unopen_num = 0;
$total_open_num = 0;
foreach ($list as $k => &$v) {
$v['rate'] = round(($v['rate_num']/$count),6)*100;
$v['rate'] = $v['rate'].'%';
$un_redis_list = [];
if(in_array($v['pid'],$un_redis_list)){
$v['unopen_num'] = $v['rate_num'];
$v['open_num'] = $v['rate_num'];
}else{
$keyname = "multiple:list:type:".$v['pid'];
$redis_data_list = $redis->Lrange($keyname, 0, -1);
$redis_gift_data = [];
foreach ($redis_data_list as $a => $b) {
$gift_data = explode('-', $b);
if (empty($redis_gift_data[$gift_data[1]])) {
$redis_gift_data[$gift_data[1]] = 1;
} else {
$redis_gift_data[$gift_data[1]]++;
}
}
if (empty($redis_gift_data[$v['multiple']])) {
$v['unopen_num'] = 0;
} else {
$v['unopen_num'] = $redis_gift_data[$v['multiple']];
}
// $total_unopen_num += $v['unopen_num'];
$sum_num = $count;
if(count($redis_data_list) > $sum_num){
$count_redis_data_list = count($redis_data_list);
$place = ceil($count_redis_data_list/$sum_num);
$v['open_num'] = $v['rate_num']*$place - $v['unopen_num'];
}else{
$v['open_num'] = $v['rate_num'] - $v['unopen_num'];
}
// $total_open_num += $v['open_num'];
}
}
$data = [];
$data['count'] = db::name('gift_multiple_rate')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//编辑
public function edit_gift_multiple_rate($data)
{
if (empty($data)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$info = db::name('gift_multiple_rate')->find($data['id']);
if (empty($info)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$map = [];
$map[] = ['multiple', '=', $data['multiple']];
$map[] = ['pid', 'neq', $info['pid']];
$map[] = ['is_delete', '=', 1];
$gift_multiple_rate = db::name('gift_multiple_rate')->where($map)->find();
if($gift_multiple_rate){
return ['code' => 201, 'msg' => '该倍率已添加过', 'data' => null];
}
// dump($data);exit;
$update_data = [];
$update_data['multiple'] = $data['multiple'];
$update_data['rate_num'] = $data['rate_num'];
$update_data['update_time'] = time();
$reslut = db::name('gift_multiple_rate')->where(['id' => $data['id']])->update($update_data);
if (!$reslut) {
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
} else {
return ['code' => 200, 'msg' => '修改成功', 'data' => null];
}
}
//添加
public function add_gift_multiple_rate($data)
{
$map = [];
$map[] = ['pid', '=', $data['pid']];
$map[] = ['multiple', '=', $data['multiple']];
$map[] = ['is_delete', '=', 1];
$gift_multiple_rate = db::name('gift_multiple_rate')->where($map)->find();
if($gift_multiple_rate){
return ['code' => 201, 'msg' => '该倍率已添加过', 'data' => null];
}
$add_data = [];
$add_data['pid'] = $data['pid'];
$add_data['multiple'] = $data['multiple'];
$add_data['rate_num'] = $data['rate_num'];
$add_data['update_time'] = time();
$add_data['add_time'] = time();
$reslut = db::name('gift_multiple_rate')->insert($add_data);
if (!$reslut) {
return ['code' => 201, 'msg' => '添加失败', 'data' => null];
} else {
return ['code' => 200, 'msg' => '添加成功', 'data' => null];
}
}
//获取信息
public function get_gift_multiple_rate_info($id)
{
if (empty($id)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$info = db::name('gift_multiple_rate')->where(['id' => $id])->find();
return ['code' => 200, 'msg' => '获取成功', 'data' => $info];
}
//删除
public function del_gift_multiple_rate($id)
{
if (empty($id)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$reslut = db::name('gift_multiple_rate')->where(['id' => $id])->update(['is_delete' => 2, 'update_time' => time()]);
if (!$reslut) {
return ['code' => 201, 'msg' => '删除失败', 'data' => null];
} else {
return ['code' => 200, 'msg' => '删除成功', 'data' => null];
}
}
//
public function get_user_send_gift_rate_list($uid, $room_id, $room_uid, $receive_uid, $gid, $gift_name, $start, $end, $order, $sort, $page = 1, $limit = 20)
{
$map = [];
if (!empty($uid)) {
$map[] = ['a.uid', '=', $uid];
}
if (!empty($room_id)) {
$map[] = ['c.room_number', '=', $room_id];
}
if (!empty($room_uid)) {
$map[] = ['a.room_uid', '=', $room_uid];
}
if (!empty($receive_uid)) {
$map[] = ['a.receive_uid', '=', $receive_uid];
}
if (!empty($gid)) {
$map[] = ['a.gid', '=', $gid];
}
if (!empty($gift_name)) {
$map[] = ['a.gift_name', 'like', '%' . $gift_name . '%'];
}
if (!empty($start)) {
$map[] = ['a.add_time', '>=', strtotime($start)];
}
if (!empty($end)) {
$map[] = ['a.add_time', '<=', strtotime($end)];
}
if (empty($order)) {
$order = 'a.sid';
}
if (empty($sort)) {
$sort = 'desc';
}
$list = db::name('user_send_gift_rate')
->alias('a')->join('yy_user b', 'a.uid = b.uid')->join('yy_room c', 'a.rid = c.rid')
->field('a.*,b.nick_name,c.room_name')->where($map)->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => $v) {
$list[$k]['user_nick_name'] = $v['uid'] . '-' . $v['nick_name'];
}
$data = [];
$data['list'] = $list;
$totalRowData = db::name('user_send_gift_rate')->alias('a')->join('yy_user b', 'a.uid = b.uid')->join('yy_room c', 'a.rid = c.rid')->field('count(a.sid) as count,SUM(a.gift_num) as gift_num,SUM(a.gift_total_price) as gift_total_price,SUM(a.win_price) as win_price,SUM(a.room_owner_profit) as room_owner_profit, SUM(a.room_host_profit) as room_host_profit, SUM(a.receiver_profit) as receiver_profit')->where($map)->find();
$data['count'] = $totalRowData['count'];
unset($totalRowData['count']);
//dump($totalRowData);
$data['totalRow'] = $totalRowData;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//获取列表
public function room_subsidy($order, $sort, $page, $limit)
{
$map = [];
$map[] = ['is_delete', '=', 1];
$list = db::name('room_subsidy_lucky')->where($map)->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v){
if($v['type'] == 2){
$v['money'] = $v['money'].'%';
}
}
$data = [];
$data['count'] = db::name('room_subsidy_lucky')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//删除
public function room_subsidy_del($id)
{
$del = db::name('room_subsidy_lucky')->where(['id' => $id])->update(['is_delete' => 2]);
if ($del) {
return ['code' => 200, 'msg' => '删除成功', 'data' => null];
} else {
return ['code' => 201, 'msg' => '删除失败', 'data' => null];
}
}
//获取
public function room_subsidy_info($id)
{
if (empty($id)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$room_subsidy_info = db::name('room_subsidy_lucky')->find($id);
return ['code' => 200, 'msg' => '获取成功', 'data' => $room_subsidy_info];
}
//修改
public function edit_room_subsidy($id, $level_name, $total_gift_price, $money, $type)
{
if (empty($id)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$arr = [];
$arr['type'] = $type;
$arr['level_name'] = $level_name;
$arr['total_gift_price'] = $total_gift_price;
$arr['money'] = $money;
$arr['update_time'] = time();
$upd = db::name('room_subsidy_lucky')->where(['id' => $id])->update($arr);
if ($upd) {
return ['code' => 200, 'msg' => '修改成功', 'data' => null];
} else {
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
}
}
//添加
public function add_room_subsidy($level_name, $total_gift_price, $money, $type)
{
$arr = [];
$arr['type'] = $type;
$arr['level_name'] = $level_name;
$arr['total_gift_price'] = $total_gift_price;
$arr['money'] = $money;
$arr['add_time'] = time();
$add = db::name('room_subsidy_lucky')->insert($arr);
if ($add) {
return ['code' => 200, 'msg' => '添加成功', 'data' => null];
} else {
return ['code' => 201, 'msg' => '添加失败', 'data' => null];
}
}
//获取列表
public function give_room_subsidy_list($room_number, $uid, $is_delete, $order, $sort, $page, $limit, $start){
$map = [];
if(!empty($room_number)){
$rid = db::name('room')->where('room_number', $room_number)->value('rid');
$map[] = ['rid', '=', $rid];
}
if(!empty($uid)){
$map[] = ['uid', '=', $uid];
}
if(!empty($is_delete)){
$map[] = ['is_delete', '=', $is_delete];
}
if(!empty($start)){
$now_time = strtotime($start);
$last_week = strtotime('-1 week last sunday', $now_time);
$map[] = ['last_week_time', '=', $last_week];
}else{
$now_time = time();
$last_week = strtotime('-1 week last sunday', $now_time);
$map[] = ['last_week_time', '=', $last_week];
}
$map[] = ['type', '=', 2];
$list = db::name('user_room_week_earnings')->where($map)->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v){
$room_info = db::name('room')->find($v['rid']);
$v['room_number'] = $room_info['room_number'];
$v['room_name'] = mb_convert_encoding(base64_decode($room_info['base64_room_name']), 'UTF-8', 'UTF-8');
$user_info = db::name('user')->find($v['uid']);
$v['nick_name'] = mb_convert_encoding(base64_decode($user_info['base64_nick_name']), 'UTF-8', 'UTF-8');
}
$data = [];
$data['count'] = db::name('user_room_week_earnings')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//批量结算
public function batch_give_room_subsidy($data){
if(empty($data)){
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$gid_list = [];
foreach ($data as $k => $v){
if(in_array($v['is_delete'], [2])) {
return ['code' => 201, 'msg' => '批量结算中包含已发放的', 'data' => null];
}
$gid_list[] = $v['id'];
}
Db::startTrans();
try {
$map = [];
$map[] = ['id', 'in', $gid_list];
$map[] = ['is_delete', '=', 1];
$list = db::name('user_room_week_earnings')->where($map)->select();
if(!empty($list)){
foreach ($list as $k => $v){
$reslut = model('admin/User')->change_user_money_by_uid($v['uid'], $v['user_earnings'], 1, 35, '房间幸运补贴收益', $v['uid'], 0, $v['rid']);
if ($reslut['code'] == 201) {
Db::rollback();
return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null];
}
$reslut = db::name('user_room_week_earnings')->where('id', $v['id'])->update(['is_delete' => 2, 'update_time' => time()]);
if (!$reslut) {
Db::rollback();
return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null];
}
}
}
// 提交事务
Db::commit();
return ['code' => 200, 'msg' => "发放成功", 'data' => null];
} catch (\Exception $e) {
// 回滚事务
Db::rollback();
return ['code' => 201, 'msg' => "发放失败", 'data' => null];
}
}
//补贴详情
public function get_give_room_subsidy_info($id){
if(empty($id)){
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$user_room_week_earnings = db::name('user_room_week_earnings')->where('id', $id)->find();
if(!$user_room_week_earnings){
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
return ['code' => 200, 'msg' => '获取成功', 'data' => $user_room_week_earnings];
}
//修改补贴
public function edit_give_room_subsidy($id, $user_earnings){
if(empty($id)){
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$user_room_week_earnings = db::name('user_room_week_earnings')->where('id', $id)->find();
if(!$user_room_week_earnings){
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
if($user_earnings < 0){
return ['code' => 201, 'msg' => '收益不能小于0', 'data' => null];
}
if($user_room_week_earnings['is_delete'] == 2){
return ['code' => 201, 'msg' => '该收益已结算,无法编辑', 'data' => null];
}
$update = [];
$update['user_earnings'] = $user_earnings;
$update['update_time'] = time();
$reslut = db::name('user_room_week_earnings')->where('id', $id)->update($update);
if($reslut){
return ['code' => 200, 'msg' => '编辑成功', 'data' => null];
}else{
return ['code' => 201, 'msg' => '编辑失败', 'data' => null];
}
}
//监控宝箱redis list 剩余宝箱数量 生成
//tid 宝箱类型
//is_reset 0不重置 1重置
public function control_gift_multiple($id = 0, $is_reset = 0)
{
set_time_limit(0);
ini_set('memory_limit', '1024M');
$redis = connectionRedis();
// dump($id);
// dump($is_reset);
// exit;
$map = [];
if (!empty($id)) {
$map[] = ['id', '=', $id];
}
$map[] = ['is_delete', '=', 1];
$gift_multiple_type_list = db::name('gift_multiple_type')->where($map)->select();
$list_len = 0;
foreach ($gift_multiple_type_list as $k => $v) {
$map = [];
$map[] = ['pid', '=', $v['id']];
$map[] = ['is_delete', '=', 1];
$gift_multiple_rate_list = Db::name('gift_multiple_rate')->where($map)->select();
$keyname = "multiple:list:type:" . $v['id'];
if ($is_reset == 1) {
$redis->del($keyname); //如果重置则删除原队列
}
//剩余开奖次数少于5000 则补充下一期奖池
if ($redis->llen($keyname) < 500) {
$insert_data = [];
$total_gift_value = 0;
foreach ($gift_multiple_rate_list as $m => $n) {
//更新添加次数
for ($q = 0; $q < $n['rate_num']; $q++) {
$insert_data[] = $n['multiple'];
}
}
shuffle($insert_data);
if (!empty($gift_multiple_rate_list)) {
//插入期日志表
$data = [];
$data['pid'] = $v['id'];
$data['total_num'] = count($insert_data);
$data['open_num'] = 0;
$data['config_text'] = json_encode($gift_multiple_rate_list);
$data['add_time'] = time();
$data['update_time'] = time();
$bl_id = db::name('gift_multiple_log')->insertGetId($data);
foreach ($insert_data as $p => $q) {
$insert_data[$p] = $bl_id . '-' . $insert_data[$p];
}
// shuffle($insert_data);
array_unshift($insert_data, $keyname);
call_user_func_array([$redis, 'rPush'], $insert_data);
}
}
$list_len = $redis->llen($keyname);
//echo date('Y-m-d H:i:s') . " " . $keyname . "宝箱剩余数量:$list_len" . "\r\n";
}
return ['code' => 200, 'msg' => '生成成功', 'data' => "剩余数量: $list_len"];
}
}

View File

@@ -0,0 +1,153 @@
<?php
namespace app\admin\model;
use think\Model;
use think\Db;
class NewBox extends Model
{
public function get_new_box_list(){
$map = [];
$map[] = ['a.is_delete', '=', 1];
$list = db::name('new_box')
->alias('a')
->join('yy_gift b', 'a.gid = b.gid')
->field('a.*,b.gift_name,b.gift_price,b.base_image')
->where($map)
->order('a.id', 'desc')->select();
foreach($list as &$val) {
$val['base_image'] = localpath_to_netpath($val['base_image']);
}
$data = [];
$data['count'] = db::name('new_box')->alias('a')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
public function edit_new_box($data)
{
if(empty($data['total_amount'])) {
return ['code' => 201, 'msg' => '请输入金额', 'data' => ''];
}
if(ceil($data['total_amount']) != $data['total_amount']) {
return ['code' => 201, 'msg' => '总金额必须是整数', 'data' => ''];
}
$total_amount = $data['total_amount'];
if(ceil($total_amount/10) != ($total_amount/10)) {
return ['code' => 201, 'msg' => '总金额必须是10的倍数', 'data' => ''];
}
$gid = $data['gid'];
if(empty($gid)) {
return ['code' => 201, 'msg' => '请选择礼物', 'data' => ''];
}
$count = Db::name('new_box')->where(['gid' => $gid, 'is_delete' => 1])->where('id','neq', $data['id'])->find();
if($count) {
return ['code' => 201, 'msg' => '该礼物已配置奖池,请重新选择礼物', 'data' => ''];
}
$gift_price = Db::name('gift')->where('gid', $gid)->value('gift_price');
if($data['total_amount'] < $gift_price) {
// return ['code' => 201, 'msg' => '总金额小于礼物价值', 'data' => ''];
}
$reslut = model('new_box')->isUpdate(true)->save($data);
if (!$reslut) {
return ['code' => 201, 'msg' => '编辑失败', 'data' => ''];
} else {
return ['code' => 200, 'msg' => '编辑成功', 'data' => ''];
}
}
//获取房间信息
public function get_new_box_info($tid)
{
$box_type_info = db::name('new_box')->where(['id' => $tid])->find();
if(empty($box_type_info)) {
return ['code' => 201, 'msg' => '数据不存在', 'data' => null];
}
$gift_info = Db::name('gift')->find($box_type_info['gid']);
if(empty($gift_info)) {
return ['code' => 201, 'msg' => '礼物数据不存在', 'data' => null];
}
$box_type_info['gift_name'] = $gift_info['gift_name'];
$box_type_info['gift_price'] = $gift_info['gift_price'];
return ['code' => 200, 'msg' => '获取成功', 'data' => $box_type_info];
}
//开奖期数
public function get_new_box_log($nb_id, $status, $page, $page_limit)
{
$map = [];
if($nb_id) {
$map[] = ['nb_id', '=', $nb_id];
}
if($status) {
$map[] = ['status', '=', $status];
}
$list = db::name('new_box_log')
->alias('a')
->join('yy_gift b', 'a.gid = b.gid')
->join('yy_user c', 'a.win_uid = c.uid', 'left')
->field('a.*,b.gift_name,b.gift_price,b.base_image,c.base64_nick_name')
->where($map)
->page($page, $page_limit)
->order('a.id', 'desc')->select();
foreach($list as &$val) {
if($val['base64_nick_name']) {
$val['nick_name'] = mb_convert_encoding(base64_decode($val['base64_nick_name']), 'UTF-8', 'UTF-8');
} else {
$val['nick_name'] = '未中奖';
}
}
$data = [];
$data['count'] = db::name('new_box_log')->alias('a')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//开奖记录
public function get_user_new_box_log($uid, $nbl_id, $start_time, $end_time, $page, $page_limit)
{
$map = [];
if($nbl_id) {
$map[] = ['a.nbl_id', '=', $nbl_id];
}
if($uid) {
$map[] = ['a.uid', '=', $uid];
}
if($start_time) {
$map[] = ['a.add_time', '>=', strtotime($start_time)];
}
if($end_time) {
$map[] = ['a.add_time', '<', strtotime($end_time)];
}
$list = db::name('user_new_box_log')
->alias('a')
->join('yy_new_box_log b', 'a.nbl_id = b.id')
->join('yy_user c', 'a.uid = c.uid', 'left')
->join('yy_gift d', 'b.gid = d.gid', 'left')
->field('a.*,d.gift_name,d.base_image,c.base64_nick_name,c.head_pic')
->where($map)
->page($page, $page_limit)
->order('a.id', 'desc')->select();
foreach($list as &$val) {
$val['nick_name'] = mb_convert_encoding(base64_decode($val['base64_nick_name']), 'UTF-8', 'UTF-8');
$val['head_pic'] = localpath_to_netpath($val['head_pic']);
$val['base_image'] = localpath_to_netpath($val['base_image']);
}
$data = [];
$data['count'] = db::name('user_new_box_log')->alias('a')->where($map)->count();
$total_pay_amount = db::name('user_new_box_log')->alias('a')->where($map)->sum('pay_amount');
$totalRowData['pay_amount'] = $total_pay_amount;
$data['totalData'] = $totalRowData;
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
}

View File

@@ -0,0 +1,251 @@
<?php
namespace app\admin\model;
use think\Db;
use think\Model;
class Nobility extends Model
{
//列表
public function get_nobility_list($order, $sort, $page = 1, $limit = 20)
{
$map = [];
$map[] = ['is_delete', '=', 1];
$list = db::name('nobility')->where($map)->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v) {
$v['image'] = localpath_to_netpath($v['image']);
}
$data = [];
$data['count'] = db::name('nobility')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//编辑
public function edit_nobility($data)
{
if (empty($data)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$nobility_info = db::name('nobility')->find($data['lid']);
if (empty($nobility_info)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$update_data = [];
// $update_data['level'] = $data['level'];
$update_data['name'] = $data['name'];
$update_data['image'] = $data['image'];
// $update_data['change_value'] = $data['change_value'];
// $update_data['images'] = $data['images'];
$update_data['pay_price'] = $data['pay_price'];
$update_data['renew_price'] = $data['renew_price'];
$update_data['pay_coin'] = $data['pay_coin'];
$update_data['renew_coin'] = $data['renew_coin'];
// $update_data['play_image'] = $data['play_image'];
// $update_data['is_public_server'] = $data['is_public_server'];
// $update_data['is_kick'] = $data['is_kick'];
// $update_data['is_show_rank'] = $data['is_show_rank'];
// $update_data['is_freedom_micro'] = $data['is_freedom_micro'];
// $update_data['is_look_visitor'] = $data['is_look_visitor'];
$update_data['day_num'] = $data['day_num'];
$update_data['update_time'] = time();
$reslut = db::name('nobility')->where(['lid' => $data['lid']])->update($update_data);
if (!$reslut) {
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
} else {
return ['code' => 200, 'msg' => '修改成功', 'data' => null];
}
}
//获取信息
public function nobility_info($lid)
{
if (empty($lid)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$gift_info = db::name('nobility')->where(['lid' => $lid])->find();
$gift_info['image'] = localpath_to_netpath($gift_info['image']);
// $gift_info['images'] = localpath_to_netpath($gift_info['images']);
// $gift_info['http_play_image'] = localpath_to_netpath($gift_info['play_image']);
return ['code' => 200, 'msg' => '获取成功', 'data' => $gift_info];
}
//权限列表
public function get_nobility_power_list($order, $sort, $page = 1, $limit = 20)
{
$map = [];
$list = db::name('nobility_power')->where($map)->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v) {
$v['image'] = localpath_to_netpath($v['image']);
}
$data = [];
$data['count'] = db::name('nobility_power')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//获取信息
public function nobility_power_info($id)
{
if (empty($id)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$gift_info = db::name('nobility_power')->where(['id' => $id])->find();
$gift_info['image'] = localpath_to_netpath($gift_info['image']);
$gift_info['images'] = localpath_to_netpath($gift_info['images']);
return ['code' => 200, 'msg' => '获取成功', 'data' => $gift_info];
}
//编辑
public function edit_nobility_power($data)
{
if (empty($data)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$nobility_info = db::name('nobility_power')->find($data['id']);
if (empty($nobility_info)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$update_data = [];
$update_data['name'] = $data['name'];
$update_data['image'] = $data['image'];
$update_data['images'] = $data['images'];
$update_data['content'] = $data['content'];
$update_data['update_time'] = time();
$reslut = db::name('nobility_power')->where(['id' => $data['id']])->update($update_data);
if (!$reslut) {
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
} else {
return ['code' => 200, 'msg' => '修改成功', 'data' => null];
}
}
//用户爵位列表
public function get_user_nobility_list($order, $sort, $page = 1, $limit = 20)
{
$map = [];
$map[] = ['a.is_delete', '=', 1];
$map[] = ['a.status', '=', 1];
$list = db::name('user_nobility')->alias('a')->join('yy_user b', 'a.uid = b.uid')->join('yy_nobility c', 'c.lid = a.lid')->field('a.id, b.uid, b.nick_name, b.base64_nick_name, b.head_pic, c.name, a.add_time, a.update_time')->where($map)->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v) {
$v['nick_name'] = mb_convert_encoding(base64_decode($v['base64_nick_name']), 'UTF-8', 'UTF-8');
$v['head_pic'] = localpath_to_netpath($v['head_pic']);
}
$data = [];
$data['count'] = db::name('user_nobility')->alias('a')->join('yy_user b', 'a.uid = b.uid')->join('yy_nobility c', 'c.lid = a.lid')->field('a.id')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//列表
public function get_nobility_decorate_list($lid, $order, $sort, $page = 1, $limit = 20)
{
$map = [];
$map[] = ['a.is_delete', '=', 1];
$map[] = ['a.lid', '=', $lid];
$banner_list = db::name('nobility_decorate')->alias('a')->join('yy_decorate b', 'a.did = b.did')->field('a.*,b.title,b.type,b.base_image')->where($map)->order($order, $sort)->select();
foreach ($banner_list as $k => &$v){
$v['base_image'] = localpath_to_netpath($v['base_image']);
}
$data = [];
$data['count'] = db::name('nobility_decorate')->alias('a')->join('yy_decorate b', 'a.did = b.did')->field('a.*,b.title,b.type,b.base_image')->where($map)->count();
$data['list'] = $banner_list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//获取
public function nobility_decorate_info($id)
{
if (empty($id)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$report_type = db::name('nobility_decorate')->find($id);
$report_type['decorate_id'] = $report_type['did'];
return ['code' => 200, 'msg' => '获取成功', 'data' => $report_type];
}
//添加
public function add_nobility_decorate($lid, $did, $day_num)
{
if(empty($lid) || empty($did)){
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
// if($day_num < 1){
// return ['code' => 201, 'msg' => '天数不能小于1天', 'data' => null];
// }
$decorate_info = db::name('decorate')->where('did', $did)->find();
// if($decorate_info['type'] == 2){
// $type = 4;
// }else if($decorate_info['type'] == 2){
// $type = 2;
// }else if($decorate_info['type'] == 3){
// $type = 3;
// }elseif($decorate_info['type'] == 4){
// $type = 6;
// }
$arr = [];
$arr['lid'] = $lid;
$arr['did'] = $did;
$arr['type'] = $decorate_info['type'];
// $arr['day_num'] = $day_num;
$arr['add_time'] = time();
$arr['update_time'] = time();
$add = db::name('nobility_decorate')->insert($arr);
if ($add) {
return ['code' => 200, 'msg' => '添加成功', 'data' => null];
} else {
return ['code' => 201, 'msg' => '添加失败', 'data' => null];
}
}
//修改
public function edit_nobility_decorate($id, $did, $day_num = 0)
{
if (empty($id)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
// if($day_num < 1){
// return ['code' => 201, 'msg' => '天数不能小于1天', 'data' => null];
// }
$decorate_info = db::name('decorate')->where('did', $did)->find();
// if($decorate_info['type'] == 1){
// $type = 4;
// }else if($decorate_info['type'] == 2){
// $type = 2;
// }else if($decorate_info['type'] == 3){
// $type = 3;
// }elseif($decorate_info['type'] == 4){
// $type = 6;
// }
$type = $decorate_info['type'];
$upd = db::name('nobility_decorate')->where(['id' => $id])->update(['did' => $did, 'type' => $type, 'day_num' => $day_num, 'update_time' => time()]);
if ($upd) {
return ['code' => 200, 'msg' => '修改成功', 'data' => null];
} else {
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
}
}
//删除
public function del_nobility_decorate($id)
{
$del = db::name('nobility_decorate')->where(['id' => $id])->update(['is_delete' => 2, 'update_time' => time()]);
if ($del) {
return ['code' => 200, 'msg' => '删除成功', 'data' => null];
} else {
return ['code' => 201, 'msg' => '删除失败', 'data' => null];
}
}
}

View File

@@ -0,0 +1,419 @@
<?php
namespace app\admin\model;
use think\Db;
use think\Model;
class Play extends Model
{
//游戏列表
public function game_list($gid, $game_name, $is_show, $order, $sort, $page = 1, $limit = 20)
{
$map = [];
if (!empty($gid)) {
$map[] = ['gid', '=', $gid];
}
if (!empty($game_name)) {
$map[] = ['game_name', 'like', '%' . $game_name . '%'];
}
if (!empty($is_show)) {
$map[] = ['is_show', '=', $is_show];
}
$map[] = ['is_delete', '=', 1];
$list = db::name('game')->where($map)->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v) {
$game_level = db::name('game_skill_level')->field('game_level_name')->where(['gid' => $v['gid']])->select();
$str = '';
foreach ($game_level as $m => $n) {
$str .= $n['game_level_name'] . ',';
}
$v['game_level_name'] = $str;
$v['game_ico1'] = localpath_to_netpath($v['game_ico1']);
$v['game_ico2'] = localpath_to_netpath($v['game_ico2']);
$v['game_ico'] = localpath_to_netpath($v['game_ico']);
$v['cover_image'] = localpath_to_netpath($v['cover_image']);
$v['skill_image'] = localpath_to_netpath($v['skill_image']);
}
$data = [];
$data['count'] = db::name('game')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//编辑游戏
public function edit_game($data)
{
if (empty($data)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$game = db::name('game')->find($data['gid']);
if (empty($game)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$update_data = [];
$update_data['game_name'] = $data['game_name'];
$update_data['game_ico'] = $data['game_ico'];
$update_data['game_ico1'] = $data['game_ico1'];
$update_data['game_ico2'] = $data['game_ico2'];
$update_data['cover_image'] = $data['cover_image'];
$update_data['skill_image'] = $data['skill_image'];
$update_data['is_show'] = $data['is_show'];
$update_data['sort'] = $data['sort'];
$update_data['update_time'] = time();
$reslut = db::name('game')->where(['gid' => $data['gid']])->update($update_data);
if (!$reslut) {
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
} else {
return ['code' => 200, 'msg' => '修改成功', 'data' => null];
}
}
//添加游戏
public function add_game($data)
{
$update_data['game_name'] = $data['game_name'];
$update_data['game_ico'] = $data['game_ico'];
$update_data['game_ico1'] = $data['game_ico1'];
$update_data['game_ico2'] = $data['game_ico2'];
$update_data['cover_image'] = $data['cover_image'];
$update_data['skill_image'] = $data['skill_image'];
$update_data['is_show'] = $data['is_show'];
$update_data['sort'] = $data['sort'];
$update_data['update_time'] = time();
$update_data['add_time'] = time();
$reslut = db::name('game')->insert($update_data);
if (!$reslut) {
return ['code' => 201, 'msg' => '添加失败', 'data' => null];
} else {
return ['code' => 200, 'msg' => '添加成功', 'data' => null];
}
}
//获取游戏信息
public function game_info($gid)
{
if (empty($gid)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$info = db::name('game')->where(['gid' => $gid])->find();
$info['http_game_ico'] = localpath_to_netpath($info['game_ico']);
$info['http_game_ico1'] = localpath_to_netpath($info['game_ico1']);
$info['http_game_ico2'] = localpath_to_netpath($info['game_ico2']);
$info['http_cover_image'] = localpath_to_netpath($info['cover_image']);
$info['http_skill_image'] = localpath_to_netpath($info['skill_image']);
return ['code' => 200, 'msg' => '获取成功', 'data' => $info];
}
//删除游戏
public function del_game($gid)
{
if (empty($gid)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$reslut = db::name('game')->where(['gid' => $gid])->update(['is_delete' => 2, 'delete_time' => time()]);
if (!$reslut) {
return ['code' => 201, 'msg' => '删除失败', 'data' => null];
} else {
return ['code' => 200, 'msg' => '删除成功', 'data' => null];
}
}
//游戏等级列表
public function game_skill_level_list($lid, $gid, $game_level_name, $order, $sort, $page = 1, $limit = 20)
{
$map = [];
if (!empty($lid)) {
$map[] = ['a.lid', '=', $lid];
}
if (!empty($game_level_name)) {
$map[] = ['a.game_level_name', 'like', '%' . $game_level_name . '%'];
}
if (!empty($gid)) {
$map[] = ['a.gid', '=', $gid];
}
$map[] = ['a.is_delete', '=', 1];
$list = db::name('game_skill_level')->where($map)->alias('a')
->join('yy_game b', 'a.gid = b.gid')
->field(
'a.*,b.game_name'
)->where($map)->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v) {
$v['gid_game_name'] = $v['gid'] . '-' . $v['game_name'];
}
$data = [];
$data['count'] = db::name('game_skill_level')->where($map)->alias('a')
->join('yy_game b', 'a.gid = b.gid')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//编辑游戏等级
public function edit_game_skill_level($data)
{
if (empty($data)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$game = db::name('game_skill_level')->find($data['lid']);
if (empty($game)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$update_data = [];
$update_data['gid'] = $data['gid'];
$update_data['game_level_name'] = $data['game_level_name'];
$update_data['update_time'] = time();
$reslut = db::name('game_skill_level')->where(['lid' => $data['lid']])->update($update_data);
if (!$reslut) {
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
} else {
return ['code' => 200, 'msg' => '修改成功', 'data' => null];
}
}
//添加游戏等级
public function add_game_skill_level($data)
{
$add_data = [];
$update_data['gid'] = $data['gid'];
$update_data['game_level_name'] = $data['game_level_name'];
$update_data['update_time'] = time();
$update_data['add_time'] = time();
$reslut = db::name('game_skill_level')->insert($update_data);
if (!$reslut) {
return ['code' => 201, 'msg' => '添加失败', 'data' => null];
} else {
return ['code' => 200, 'msg' => '添加成功', 'data' => null];
}
}
//获取游戏等级信息
public function game_skill_level_info($lid)
{
if (empty($lid)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$info = db::name('game_skill_level')->where(['lid' => $lid])->find();
return ['code' => 200, 'msg' => '获取成功', 'data' => $info];
}
//删除 游戏等级
public function del_game_skill_level($lid)
{
if (empty($lid)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$reslut = db::name('game_skill_level')->where(['lid' => $lid])->update(['is_delete' => 2, 'delete_time' => time()]);
if (!$reslut) {
return ['code' => 201, 'msg' => '删除失败', 'data' => null];
} else {
return ['code' => 200, 'msg' => '删除成功', 'data' => null];
}
}
//陪玩主播 列表
public function player_list($uid, $nick_name, $sex, $special_uid, $gid, $real_name, $is_top, $is_recommend, $is_business, $status, $order, $sort, $page = 1, $limit = 20)
{
$map = [];
if (!empty($uid)) {
$map[] = ['a.uid', '=', $uid];
}
if (!empty($nick_name)) {
$map[] = ['b.nick_name', 'like', '%' . $nick_name . '%'];
}
if (!empty($sex)) {
$map[] = ['b.sex', '=', $sex];
}
if (!empty($special_uid)) {
$map[] = ['b.special_uid', '=', $special_uid];
}
if (!empty($gid)) {
$map[] = ['a.gid', '=', $gid];
}
if (!empty($real_name)) {
$map[] = ['b.real_name', 'like', '%' . $real_name . '%'];
}
if (!empty($is_top)) {
$map[] = ['a.is_top', '=', $is_top];
}
if (!empty($is_recommend)) {
$map[] = ['a.is_recommend', '=', $is_recommend];
}
if (!empty($is_business)) {
$map[] = ['a.is_business', '=', $is_business];
}
if (!empty($status)) {
$map[] = ['a.status', '=', $status];
}
$list = db::name('user_player')
->alias('a')
->join('yy_user b', 'a.uid = b.uid')
->field('a.*,b.nick_name,b.sex,b.special_uid,b.real_name')
->where($map)->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v) {
$game_name = db::name('game')->where(['gid' => $v['gid']])->value('game_name');
$game_skill_level = db::name('game_skill_level')->where(['lid' => $v['lid']])->value('game_level_name');
$v['game_level_name'] = $game_name . '-' . $game_skill_level;
$v['cover_image'] = localpath_to_netpath($v['cover_image']);
$v['skill_image'] = localpath_to_netpath($v['skill_image']);
}
$data = [];
$data['count'] = db::name('user_player')->alias('a')
->join('yy_user b', 'a.uid = b.uid')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//编辑 陪玩主播
public function edit_player($data)
{
if (empty($data)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$info = db::name('user_player')->find($data['pid']);
if (empty($info)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$update_data = [];
$update_data['price'] = $data['price'];
$update_data['skill_image'] = $data['skill_image'];
$update_data['cover_image'] = $data['cover_image'];
$update_data['introduction'] = $data['introduction'];
$update_data['is_top'] = $data['is_top'];
$update_data['is_recommend'] = $data['is_recommend'];
$update_data['is_business'] = $data['is_business'];
$update_data['flag'] = $data['flag'];
$update_data['remarks'] = $data['remarks'];
$update_data['status'] = $data['status'];
$update_data['update_time'] = time();
if ($data['status'] != $info['status']) {
$update_data['deal_time'] = time();
}
$user_info = db::name('user')->find($info['uid']);
if ($update_data['status'] == 2) {
$player_game_list = explode(',', $user_info['player_game_list']);
$player_game_list[] = $info['gid'];
$player_game_list = array_unique($player_game_list);
$user_data = [];
$user_data['is_player'] = 2;
$user_data['player_game_list'] = trim(implode(',', $player_game_list), ',');
db::name('user')->where('uid', $info['uid'])->update($user_data);
} else {
$player_game_list = explode(',', $user_info['player_game_list']);
if (!empty($player_game_list)) {
$key_array = array_keys($player_game_list, $info['gid']);
if (!empty($key_array)) {
unset($player_game_list[$key_array[0]]);
$player_game_list = array_unique($player_game_list);
$user_data = [];
$user_data['is_player'] = 2;
$user_data['player_game_list'] = trim(implode(',', $player_game_list), ',');
db::name('user')->where('uid', $info['uid'])->update($user_data);
}
}
}
$reslut = db::name('user_player')->where(['pid' => $data['pid']])->update($update_data);
if (!$reslut) {
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
} else {
return ['code' => 200, 'msg' => '修改成功', 'data' => null];
}
}
//获取 陪玩主播 信息
public function player_info($pid)
{
if (empty($pid)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$info = db::name('user_player')->where(['pid' => $pid])->find();
$info['cover_image'] = localpath_to_netpath($info['cover_image']);
$info['skill_image'] = localpath_to_netpath($info['skill_image']);
$info['sound'] = localpath_to_netpath($info['sound']);
$user = db::name('user')->where(['uid' => $info['uid']])->find();
$info['nickname_real_name'] = $user['nick_name'] . '-' . $user['real_name'];
return ['code' => 200, 'msg' => '获取成功', 'data' => $info];
}
//删除 陪玩主播
public function del_player($pid)
{
if (empty($pid)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$reslut = db::name('user_player')->where(['pid' => $pid])->delete();
if (!$reslut) {
return ['code' => 201, 'msg' => '删除失败', 'data' => null];
} else {
return ['code' => 200, 'msg' => '删除成功', 'data' => null];
}
}
//陪玩订单 列表
public function player_order_list($order_sn, $uid, $player_uid, $price, $service_rate, $status, $is_over, $order, $sort, $page = 1, $limit = 20)
{
$map = [];
if (!empty($order_sn)) {
$map[] = ['order_sn', '=', $order_sn];
}
if (!empty($uid)) {
$map[] = ['uid', '=', $uid];
}
if (!empty($player_uid)) {
$map[] = ['player_uid', '=', $player_uid];
}
if (!empty($price)) {
$map[] = ['price', '=', $price];
}
if (!empty($service_rate)) {
$map[] = ['service_rate', '=', $service_rate];
}
if (!empty($status)) {
$map[] = ['status', '=', $status];
}
if (!empty($is_over)) {
$map[] = ['is_over', '=', $is_over];
}
if (empty($order)) {
$order = 'oid';
}
if (empty($sort)) {
$sort = 'desc';
}
$list = db::name('user_player_order')->where($map)->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v) {
$v['game_name'] = db::name('game')->where(['gid' => $v['gid']])->value('game_name');
$u_nickname = db::name('user')->where(['uid' => $v['uid']])->value('nick_name');
$p_nickname = db::name('user')->where(['uid' => $v['player_uid']])->value('nick_name');
$v['uid_nickname'] = $v['uid'] . '-' . $u_nickname;
$v['player_uid_nickname'] = $v['player_uid'] . '-' . $p_nickname;
}
$data = [];
$data['count'] = db::name('user_player_order')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//获取 陪玩订单 信息
public function player_order_info($oid)
{
if (empty($oid)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$info = db::name('user_player_order')->where(['oid' => $oid])->find();
$u_nickname = db::name('user')->where(['uid' => $info['uid']])->value('nick_name');
$p_nickname = db::name('user')->where(['uid' => $info['player_uid']])->value('nick_name');
$info['uid_nickname'] = $info['uid'] . '-' . $u_nickname;
$info['player_uid_nickname'] = $info['player_uid'] . '-' . $p_nickname;
$info['game_name'] = db::name('game')->where(['gid' => $info['gid']])->value('game_name');
return ['code' => 200, 'msg' => '获取成功', 'data' => $info];
}
}

View File

@@ -0,0 +1,118 @@
<?php
namespace app\admin\model;
use think\Db;
class Relation extends AdminComModel
{
//获取数据
public function get_list($page = 1, $page_limit = 15)
{
$list = Db::name('relation')->where('is_delete', 1 )
->order('id', 'desc')
->page($page, $page_limit)->select();
$count = Db::name('relation')->count();
$data = [];
$data['code'] = 0;
$data['msg'] = '获取数据成功';
$data['data'] = $list;
$data['count'] = $count;
return json($data);
}
//添加
public function add($name, $color, $day)
{
if (empty($name) || empty($color) || empty($day)) {
return ['code' => 201, 'msg' => '参数错误', 'data' => null];
}
$type = input('type', 0);
if(empty($type)) {
return ['code' => 201, 'msg' => '请选择类型', 'data' => null];
}
$info = Db::name('relation')
->where('name', $name)
->where('is_delete', 1)
->where('type', $type)
->find();
if ($info) {
return ['code' => 201, 'msg' => '话题已存在', 'data' => null];
}
$data = $this->append_add_update_time([
'name' => $name,
'color' => $color,
'day' => $day,
'type' => $type,
]);
try {
Db::name('relation')->insert($data);
return ['code' => 200, 'msg' => '添加成功', 'data' => null];
} catch (\Exception $e) {
return ['code' => 201, 'msg' => '添加失败', 'data' => null];
}
}
//获取信息
public function get_info($id)
{
$info = Db::name('relation')->find($id);
if (empty($info)) {
return ['code' => 201, 'msg' => '数据不存在', 'data' => null];
}
return ['code' => 200, 'msg' => '获取数据成功', 'data' => $info];
}
//编辑
public function edit($id, $name, $color, $day)
{
if (empty($id)) {
return ['code' => 201, 'msg' => '参数ID错误', 'data' => null];
}
if (empty($name) || empty($color) || empty($day)) {
return ['code' => 201, 'msg' => '参数错误', 'data' => null];
}
$type = input('type', 0);
if(empty($type)) {
return ['code' => 201, 'msg' => '请选择类型', 'data' => null];
}
$info = Db::name('relation')
->where('name', $name)
->where('is_delete', 1)
->where('id', 'neq', $id)
->where('type', $type)
->find();
if ($info) {
return ['code' => 201, 'msg' => '话题已存在', 'data' => null];
}
$result = Db::name('relation')->where('id', $id)
->update([
'name' => $name,
'color' => $color,
'day' => $day,
'update_time' => time(),
'type' => $type,
]);
if ($result) {
return ['code' => 200, 'msg' => '修改成功', 'data' => null];
} else {
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
}
}
//删除
public function del($id)
{
$info = Db::name('relation')->find( $id);
if (empty($info)) {
return ['code' => 201, 'msg' => '数据不存在', 'data' => null];
}
$result = Db::name('relation')->where('id', $id)
->update(['is_delete' => 2, 'update_time' => time()]);
if ($result) {
return ['code' => 200, 'msg' => '删除成功', 'data' => null];
}
return ['code' => 201, 'msg' => '删除失败', 'data' => null];
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace app\admin\model;
use think\Db;
class ReloadDb
{
private static $time = null;
/**
* 检测或执行主动重连
* @author andy3513
* @param int $timeout 超时时间
* @param array $config 连接参数
*/
public static function init($timeout = 7200,$config = []){
$time = time();
if(null === self::$time){
self::$time = $time;
}
$exprie = $time - self::$time;
if($exprie >= $timeout){
Db::connect($config, true);
self::$time = $time;
}
}
}

View File

@@ -0,0 +1,149 @@
<?php
namespace app\admin\model;
use think\Db;
use think\Model;
class Report extends Model
{
//获取举报列表
public function report_list($uid, $to_uid, $nick_name, $to_nick_name, $order, $sort, $page = 1, $limit = 20)
{
$map = [];
if (!empty($uid)) {
$map[] = ['a.uid', '=', $uid];
}
if (!empty($to_uid)) {
$map[] = ['a.to_uid', '=', $to_uid];
}
if (!empty($nick_name)) {
$map[] = ['b.nick_name', 'like', '%' . $nick_name . '%'];
}
$list = db::name('user_report')
->alias('a')->join('yy_user b', 'a.uid = b.uid')
->field('a.*,b.nick_name')->where($map)->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v) {
$list[$k]['user_nick_name'] = $v['uid'] . '-' . $v['nick_name'];
$to_nick_name = db::name('user')->where(['uid' => $v['to_uid']])->value('nick_name');
$list[$k]['to_nick_name'] = $v['to_uid'] . '-' . $to_nick_name;
$list[$k]['to_nick_name'] = $v['to_uid'] . '-' . $to_nick_name;
$list[$k]['type_name'] = db::name('report_type')->where(['id' => $v['type_id']])->value('type_name');
$image_data = explode(',', $v['image']);
$v['image_list'] = [];
if (!empty($image_data)) {
foreach ($image_data as $m => $n) {
$v['image_list'][] = localpath_to_netpath($n);
}
}
}
$data = [];
$data['count'] = db::name('user_report')->alias('a')->join('yy_user b', 'a.uid = b.uid')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//获取举报详情
public function report_info($rid)
{
if (empty($rid)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$room_type_info = db::name('user_report')->find($rid);
$room_type_info['uid_name'] = db::name('user')->where(['uid' => $room_type_info['uid']])->value('nick_name');
$room_type_info['to_uid_name'] = db::name('user')->where(['uid' => $room_type_info['to_uid']])->value('nick_name');
return ['code' => 200, 'msg' => '获取成功', 'data' => $room_type_info];
}
//修改举报信息
public function edit_user_info($rid, $status)
{
if (empty($rid)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$upd = db::name('user_report')->where(['rid' => $rid])->update(['status' => $status, 'update_time' => time(), 'deal_time' => time()]);
if ($upd) {
return ['code' => 200, 'msg' => '修改成功', 'data' => null];
} else {
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
}
}
//删除举报信息
public function del_Report($rid)
{
$del = db::name('user_report')->where(['rid' => $rid])->delete();
if ($del) {
return ['code' => 200, 'msg' => '删除成功', 'data' => null];
} else {
return ['code' => 201, 'msg' => '删除失败', 'data' => null];
}
}
//举报类型 列表
public function report_type_list($order, $sort, $page = 1, $limit = 20)
{
$map[] = ['is_delete', '=', 1];
$banner_list = db::name('report_type')->where($map)->order($order, $sort)->select();
$data = [];
$data['count'] = db::name('report_type')->where($map)->count();
$data['list'] = $banner_list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//获取举报类型
public function report_type_info($id)
{
if (empty($id)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$report_type = db::name('report_type')->find($id);
return ['code' => 200, 'msg' => '获取成功', 'data' => $report_type];
}
//添加举报类型
public function add_report_type($type_name)
{
$arr = [];
$arr['type_name'] = $type_name;
$arr['add_time'] = time();
$arr['update_time'] = time();
$add = db::name('report_type')->insert($arr);
if ($add) {
return ['code' => 200, 'msg' => '添加成功', 'data' => null];
} else {
return ['code' => 201, 'msg' => '添加失败', 'data' => null];
}
}
//修改举报类型
public function edit_report_type($id, $type_name)
{
if (empty($id)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$upd = db::name('report_type')->where(['id' => $id])->update(['type_name' => $type_name, 'update_time' => time()]);
if ($upd) {
return ['code' => 200, 'msg' => '修改成功', 'data' => null];
} else {
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
}
}
//删除举报类型
public function del_report_type($id)
{
$del = db::name('report_type')->where(['id' => $id])->update(['is_delete' => 2, 'delete_time' => time()]);
if ($del) {
return ['code' => 200, 'msg' => '删除成功', 'data' => null];
} else {
return ['code' => 201, 'msg' => '删除失败', 'data' => null];
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,383 @@
<?php
namespace app\admin\model;
use think\Db;
use think\Model;
class Sprite extends Model
{
//列表
public function get_monster_list($order, $sort, $page = 1, $limit = 20)
{
$list = db::name('Sprite')->order($order, $sort)->page($page, $limit)->select();
$total_num = db::name('Sprite')->sum('num');
foreach ($list as $k => &$v) {
$v['rate'] = round($v['num']/$total_num, 6)*100;
$v['rate'] = $v['rate'].'%';
$gift_info = db::name('gift')->where('gid', $v['gid'])->find();
$v['gift_name'] = $gift_info['gift_name'];
$v['base_image'] = localpath_to_netpath($gift_info['base_image']);
$v['gift_price'] = $gift_info['gift_price'];
}
$data = [];
$data['count'] = db::name('Sprite')->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//编辑
public function edit_monster($data)
{
if (empty($data)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$monster_info = db::name('Sprite')->find($data['id']);
if (empty($monster_info)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
Db::startTrans();
try {
$update_data = [];
// $update_data['multiple'] = $data['multiple'];
$update_data['gid'] = $data['gid'];
$update_data['num'] = $data['num'];
$update_data['update_time'] = time();
$reslut = db::name('Sprite')->where(['id' => $data['id']])->update($update_data);
if (!$reslut) {
Db::rollback();
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
}
Db::commit();
return ['code' => 200, 'msg' => '修改成功', 'data' => null];
} catch (\Exception $e) {
// 回滚事务
dump($e);
Db::rollback();
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
}
}
//获取信息
public function get_monster_info($id)
{
if (empty($id)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$monster_info = db::name('Sprite')->where(['id' => $id])->find();
return ['code' => 200, 'msg' => '获取成功', 'data' => $monster_info];
}
//列表
public function get_monster_multiple_list($order, $sort, $page = 1, $limit = 20)
{
$list = db::name('sprite_multiple')->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v) {
}
$data = [];
$data['count'] = db::name('sprite_multiple')->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//编辑
public function edit_monster_multiple($data)
{
if (empty($data)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$monster_info = db::name('sprite_multiple')->find($data['id']);
if (empty($monster_info)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
Db::startTrans();
try {
$update_data = [];
$update_data['multiple'] = $data['multiple'];
$update_data['update_time'] = time();
$reslut = db::name('sprite_multiple')->where(['id' => $data['id']])->update($update_data);
if (!$reslut) {
Db::rollback();
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
}
Db::commit();
return ['code' => 200, 'msg' => '修改成功', 'data' => null];
} catch (\Exception $e) {
// 回滚事务
dump($e);
Db::rollback();
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
}
}
//获取信息
public function get_monster_multiple_info($id)
{
if (empty($id)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$monster_info = db::name('sprite_multiple')->where(['id' => $id])->find();
return ['code' => 200, 'msg' => '获取成功', 'data' => $monster_info];
}
//列表
public function get_monster_log($order, $sort, $page = 1, $limit = 20)
{
$list = db::name('sprite_log')->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v) {
$v['type_name'] = '暂未开奖';
$v['gid'] = 0;
$v['gift_name'] = '';
$v['base_image'] = '';
$v['gift_price'] = 0;
if($v['is_delete'] == 2){
if($v['is_evil_wind'] == 2){
$v['type_name'] = db::name('sprite')->where('id', $v['win_type'])->value('type_name');
$v['wind_type_name'] = '单号';
}else{
if($v['win_type'] == 1){
$where = [];
$where[] = ['id', 'in', [1,2]];
$type_name_arr = db::name('sprite')->where($where)->column('type_name');
$type_name_arr = implode(',', $type_name_arr);
$v['type_name'] = $type_name_arr;
$v['wind_type_name'] = '双号';
}else if($v['win_type'] == 2){
$where = [];
$where[] = ['id', 'in', [1,3]];
$type_name_arr = db::name('sprite')->where($where)->column('type_name');
$type_name_arr = implode(',', $type_name_arr);
$v['type_name'] = $type_name_arr;
$v['wind_type_name'] = '双号';
}else if($v['win_type'] == 3){
$where = [];
$where[] = ['id', 'in', [1,4]];
$type_name_arr = db::name('sprite')->where($where)->column('type_name');
$type_name_arr = implode(',', $type_name_arr);
$v['type_name'] = $type_name_arr;
$v['wind_type_name'] = '双号';
}else if($v['win_type'] == 4){
$where = [];
$where[] = ['id', 'in', [1,5]];
$type_name_arr = db::name('sprite')->where($where)->column('type_name');
$type_name_arr = implode(',', $type_name_arr);
$v['type_name'] = $type_name_arr;
$v['wind_type_name'] = '双号';
}else if($v['win_type'] == 5){
$where = [];
$where[] = ['id', 'in', [2,3]];
$type_name_arr = db::name('sprite')->where($where)->column('type_name');
$type_name_arr = implode(',', $type_name_arr);
$v['type_name'] = $type_name_arr;
$v['wind_type_name'] = '双号';
}else if($v['win_type'] == 6){
$where = [];
$where[] = ['id', 'in', [2,4]];
$type_name_arr = db::name('sprite')->where($where)->column('type_name');
$type_name_arr = implode(',', $type_name_arr);
$v['type_name'] = $type_name_arr;
$v['wind_type_name'] = '双号';
}else if($v['win_type'] == 7){
$where = [];
$where[] = ['id', 'in', [2,5]];
$type_name_arr = db::name('sprite')->where($where)->column('type_name');
$type_name_arr = implode(',', $type_name_arr);
$v['type_name'] = $type_name_arr;
$v['wind_type_name'] = '双号';
}else if($v['win_type'] == 8){
$where = [];
$where[] = ['id', 'in', [3,4]];
$type_name_arr = db::name('sprite')->where($where)->column('type_name');
$type_name_arr = implode(',', $type_name_arr);
$v['type_name'] = $type_name_arr;
$v['wind_type_name'] = '双号';
}else if($v['win_type'] == 9){
$where = [];
$where[] = ['id', 'in', [3,5]];
$type_name_arr = db::name('sprite')->where($where)->column('type_name');
$type_name_arr = implode(',', $type_name_arr);
$v['type_name'] = $type_name_arr;
$v['wind_type_name'] = '双号';
}else{
$where = [];
$where[] = ['id', 'in', [4,5]];
$type_name_arr = db::name('sprite')->where($where)->column('type_name');
$type_name_arr = implode(',', $type_name_arr);
$v['type_name'] = $type_name_arr;
$v['wind_type_name'] = '双号';
}
}
}
}
$data = [];
$data['count'] = db::name('sprite_log')->count();
$data['list'] = $list;
$totalRowData = db::name('sprite_log')->field('count(1) as count,SUM(out_amount) as out_amount,SUM(in_amount) as in_amount')->find();
unset($totalRowData['count']);
$data['totalRow'] = $totalRowData;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//列表
public function get_user_monster_log($mid, $order, $sort, $page = 1, $limit = 20)
{
$list = db::name('user_sprite_log')->where('mid', $mid)->where('is_close', 1)->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v) {
$user_info = db::name('user')->where('uid', $v['uid'])->field('uid,nick_name,base64_nick_name,head_pic')->find();
$v['nick_name'] = mb_convert_encoding(base64_decode($user_info['base64_nick_name']), 'UTF-8', 'UTF-8');
$v['head_pic'] = localpath_to_netpath($user_info['head_pic']);
$v['type_name'] = db::name('sprite')->where('type', $v['type'])->value('type_name');
}
$data = [];
$data['count'] = db::name('user_sprite_log')->where('mid', $mid)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//列表
public function get_user_monster_win_log($mid, $order, $sort, $page = 1, $limit = 20)
{
$list = db::name('user_sprite_win_log')->where('mid', $mid)->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v) {
$user_info = db::name('user')->where('uid', $v['uid'])->field('uid,nick_name,base64_nick_name,head_pic')->find();
$v['nick_name'] = mb_convert_encoding(base64_decode($user_info['base64_nick_name']), 'UTF-8', 'UTF-8');
$v['head_pic'] = localpath_to_netpath($user_info['head_pic']);
// $v['type_name'] = db::name('sprite')->where('type', $v['win_type'])->value('type_name');
// $v['multiple'] = db::name('sprite')->where('type', $v['win_type'])->value('multiple');
$gift_info = db::name('gift')->where('gid', $v['win_gid'])->field('gid,gift_name,base_image,gift_price')->find();
$v['gift_name'] = $gift_info['gift_name'];
$v['base_image'] = localpath_to_netpath($gift_info['base_image']);
$v['gift_price'] = $gift_info['gift_price'];
// $v['multiple_price'] = $v['multiple'] * $v['price'];
}
$data = [];
$data['count'] = db::name('user_sprite_win_log')->where('mid', $mid)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//列表
public function get_monster_gift_list($order, $sort, $page = 1, $limit = 20)
{
$list = db::name('sprite_gift')->alias('a')->join('yy_gift b', 'a.gid = b.gid')->field('a.id, a.gid, b.gift_name, b.base_image, b.gift_price, a.update_time')->order($order, $sort)->page($page, $limit)->select();
foreach ($list as $k => &$v) {
$v['base_image'] = localpath_to_netpath($v['base_image']);
}
$data = [];
$data['count'] = db::name('sprite_gift')->alias('a')->join('yy_gift b', 'a.gid = b.gid')->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//获取信息
public function get_monster_gift_info($id)
{
if (empty($id)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$monster_info = db::name('sprite_gift')->where(['id' => $id])->find();
return ['code' => 200, 'msg' => '获取成功', 'data' => $monster_info];
}
//编辑
public function edit_monster_gift($data){
if (empty($data)) {
return ['code' => 201, 'msg' => '参数异常', 'data' => null];
}
$monster_gift_info = db::name('sprite_gift')->find($data['id']);
if (empty($monster_gift_info)) {
return ['code' => 201, 'msg' => '参数异常1', 'data' => null];
}
Db::startTrans();
try {
$update_data = [];
// $update_data['multiple'] = $data['multiple'];
// $update_data['gid'] = $data['gid'];
$update_data['gid'] = $data['gid'];
$update_data['update_time'] = time();
$reslut = db::name('sprite_gift')->where(['id' => $data['id']])->update($update_data);
if (!$reslut) {
Db::rollback();
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
}
Db::commit();
return ['code' => 200, 'msg' => '修改成功', 'data' => null];
} catch (\Exception $e) {
// 回滚事务
dump($e);
Db::rollback();
return ['code' => 201, 'msg' => '修改失败', 'data' => null];
}
}
//列表
public function get_exchange_sprite_list($uid, $order, $sort, $page = 1, $limit = 20, $room_number, $start, $end)
{
$map = [];
if(!empty($uid)){
$map[] = ['a.uid', '=', $uid];
}
if(!empty($room_number)){
$rid = db::name('room')->where('room_number', $room_number)->value('rid');
if(!empty($rid)){
$map[] = ['a.rid', '=', $rid];
}
}
if (!empty($start)) {
$map[] = ['a.add_time', '>=', strtotime($start)];
}
if (!empty($end)) {
$map[] = ['a.add_time', '<=', strtotime($end)];
}
$list = db::name('user_exchange_sprite_log')->alias('a')->join('yy_user b', 'a.uid = b.uid')->where($map)->field('a.id, a.uid, a.rid, b.base64_nick_name, b.head_pic, a.airship, a.add_time')->order($order, $sort)->page($page, $limit)->select();
// $gift_info = db::name('gift')->where('gid', 40)->find();
foreach ($list as $k => &$v) {
$base64_room_name = db::name('room')->where('rid', $v['rid'])->value('base64_room_name');
$v['room_name'] = mb_convert_encoding(base64_decode($base64_room_name), 'UTF-8', 'UTF-8');
$v['nick_name'] = mb_convert_encoding(base64_decode($v['base64_nick_name']), 'UTF-8', 'UTF-8');
$v['head_pic'] = localpath_to_netpath($v['head_pic']);
// $v['gift_name'] = $gift_info['gift_name'];
// $v['base_image'] = localpath_to_netpath($gift_info['base_image']);
// $v['gift_price'] = $gift_info['gift_price'];
}
$data = [];
$data['count'] = db::name('user_exchange_sprite_log')->alias('a')->join('yy_user b', 'a.uid = b.uid')->where($map)->count();
$data['list'] = $list;
$totalRowData = db::name('user_exchange_sprite_log')->alias('a')->join('yy_user b', 'a.uid = b.uid')->where($map)->field('SUM(a.airship) as airship')->find();
$data['totalRow'] = $totalRowData;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
}

View File

@@ -0,0 +1,391 @@
<?php
namespace app\admin\model;
use think\Model;
use think\Db;
class Statistics extends Model
{
//获取首页基础统计数据
public function welcome_data()
{
$data = [];
//获取系统会员总人数
$data['user_all_count'] = db::name('user')->count();
//今日会员新增总数
$data['user_today_count'] = db::name('user')->whereTime('add_time', 'today')->count();
//本周会员新增总数
$data['user_week_count'] = db::name('user')->whereTime('add_time', 'week')->count();
//获取系统订单总人数
$data['user_player_order_all_amount'] = db::name('user_player_order')->sum('total_amount');
//今日订单新增总数
$data['user_player_order_today_amount'] = db::name('user_player_order')->whereTime('add_time', 'today')->sum('total_amount');
//本周订单新增总数
$data['user_player_order_week_amount'] = db::name('user_player_order')->whereTime('add_time', 'week')->sum('total_amount');
//获取系统充值总人数
$data['user_recharge_all_amount'] = db::name('user_recharge')->where(['pay_status' => 2])->sum('money');
//今日充值新增总数
$data['user_recharge_today_amount'] = db::name('user_recharge')->where(['pay_status' => 2])->whereTime('add_time', 'today')->sum('money');
//本周充值新增总数
$data['user_recharge_week_amount'] = db::name('user_recharge')->where(['pay_status' => 2])->whereTime('add_time', 'week')->sum('money');
//获取系统打赏总人数
$data['user_send_gift_all_amount'] = db::name('user_send_gift')->sum('gift_total_price');
//今日打赏新增总数
$data['user_send_gift_today_amount'] = db::name('user_send_gift')->whereTime('add_time', 'today')->sum('gift_total_price');
//本周打赏新增总数
$data['user_send_gift_week_amount'] = db::name('user_send_gift')->whereTime('add_time', 'week')->sum('gift_total_price');
//充值总积分
$map = [];
$map[] = ['money_type', '=', 2];
$map[] = ['change_type', 'in', [1,9]];
$data['platform_recharge_integral_all_amount'] = db::name('user_money_log')->where($map)->sum('change_value');
//充值总余额
$map = [];
$map[] = ['money_type', '=', 1];
$map[] = ['change_type', 'in', [1]];
$data['platform_recharge_money_all_amount'] = db::name('user_money_log')->where($map)->sum('change_value');
//用户总余额
$data['user_all_money'] = db::name('user')->sum('money');
//用户总积分
$data['user_all_integral'] = db::name('user')->sum('integral');
//背包礼物总价值
$map = [];
$map[] = ['a.num', '>', 0];
$map[] = ['a.is_tester', '=', 1];
$data['pack_gift_all_amount'] = db::name('user_gift_pack')->alias('a')->join('yy_gift b', 'a.gid = b.gid')->where($map)->sum('a.num*b.gift_price');
//总支出
$map = [];
$map[] = ['box_type', 'in', [4,5,6]];
$data['all_out_amount'] = db::name('user_box_count')->where($map)->sum('out_amount');
//总收入
$data['all_in_amount'] = db::name('user_box_count')->where($map)->sum('in_amount');
//总盈亏
$data['all_profit'] = $data['all_in_amount'] - $data['all_out_amount'];
//总爆率
if($data['all_out_amount'] > 0){
$data['all_rate'] = round($data['all_in_amount']/$data['all_out_amount'],6);
}else{
$data['all_rate'] = 0;
}
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//获取打赏金额每天统计
public function get_send_gift_data_by_day()
{
//购买
$sql = "SELECT FROM_UNIXTIME(add_time, '%Y-%m-%d') AS atime,sum(gift_total_price) as gift_total_price
FROM yy_user_send_gift where gift_from_type=1 GROUP BY atime ORDER BY atime desc LIMIT 0,72";
$list = Db::query($sql);
$gift_data1 = [];
foreach ($list as $k => $v) {
$gift_data1[$v['atime']] = $v['gift_total_price'];
}
//背包
$sql = "SELECT FROM_UNIXTIME(add_time, '%Y-%m-%d') AS atime,sum(gift_total_price) as gift_total_price
FROM yy_user_send_gift where gift_from_type=2 GROUP BY atime ORDER BY atime desc LIMIT 0,72";
$list = Db::query($sql);
$gift_data2 = [];
foreach ($list as $k => $v) {
$gift_data2[$v['atime']] = $v['gift_total_price'];
}
$now_hour = strtotime(date('Y-m-d'));
$x_data = [];
$y_data1 = [];
$y_data2 = [];
$y_data3 = [];
for ($i = 0; $i < 72; $i++) {
$l_hour = date('Y-m-d', $now_hour - $i * 24 * 3600);
$x_data[$i] = $l_hour;
if (!empty($gift_data1[$l_hour])) {
$y_data2[$i] = $gift_data1[$l_hour];
} else {
$y_data2[$i] = 0;
}
if (!empty($gift_data2[$l_hour])) {
$y_data3[$i] = $gift_data2[$l_hour];
} else {
$y_data3[$i] = 0;
}
$y_data1[$i] = $y_data2[$i] + $y_data3[$i];
}
$data = [];
$data['x_data'] = array_reverse($x_data);
$data['y_data1'] = array_reverse($y_data1);
$data['y_data2'] = array_reverse($y_data2);
$data['y_data3'] = array_reverse($y_data3);
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//获取打赏金额每小时统计
public function get_send_gift_data_by_hour()
{
//购买
$sql = "SELECT FROM_UNIXTIME(add_time, '%Y-%m-%d %H:00:00') AS atime,sum(gift_total_price) as gift_total_price
FROM yy_user_send_gift where gift_from_type=1 GROUP BY atime ORDER BY atime desc LIMIT 0,72";
$list = Db::query($sql);
$gift_data1 = [];
foreach ($list as $k => $v) {
$gift_data1[$v['atime']] = $v['gift_total_price'];
}
//背包
$sql = "SELECT FROM_UNIXTIME(add_time, '%Y-%m-%d %H:00:00') AS atime,sum(gift_total_price) as gift_total_price
FROM yy_user_send_gift where gift_from_type=2 GROUP BY atime ORDER BY atime desc LIMIT 0,72";
$list = Db::query($sql);
$gift_data2 = [];
foreach ($list as $k => $v) {
$gift_data2[$v['atime']] = $v['gift_total_price'];
}
$now_hour = strtotime(date('Y-m-d'));
$x_data = [];
$y_data1 = [];
$y_data2 = [];
$y_data3 = [];
for ($i = 0; $i < 72; $i++) {
$l_hour = date('Y-m-d', $now_hour - $i * 3600);
$x_data[$i] = $l_hour;
if (!empty($gift_data1[$l_hour])) {
$y_data2[$i] = $gift_data1[$l_hour];
} else {
$y_data2[$i] = 0;
}
if (!empty($gift_data2[$l_hour])) {
$y_data3[$i] = $gift_data2[$l_hour];
} else {
$y_data3[$i] = 0;
}
$y_data1[$i] = $y_data2[$i] + $y_data3[$i];
}
$data = [];
$data = [];
$data['x_data'] = array_reverse($x_data);
$data['y_data1'] = array_reverse($y_data1);
$data['y_data2'] = array_reverse($y_data2);
$data['y_data3'] = array_reverse($y_data3);
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//不同类型房间统计
public function get_room_type_date()
{
$room_type_list = db::name('room_type')->column('type_name', 'tid');
$sql = "SELECT tid,count(1) as count FROM `yy_room` GROUP BY tid";
$list = Db::query($sql);
$x_data = [];
$y_data = [];
foreach ($list as $k => $v) {
if (!empty($room_type_list[$v['tid']])) {
$x_data[$k] = $room_type_list[$v['tid']];
$y_data[$k]['name'] = $room_type_list[$v['tid']];
$y_data[$k]['value'] = $v['count'];
}
}
$data = [];
$data['x_data'] = $x_data;
$data['y_data'] = $y_data;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//陪玩订单数量统计
public function get_payer_order_date()
{
$game_list = db::name('game')->column('game_name', 'gid');
$sql = "SELECT gid,count(1) as count,sum(total_amount) AS total_amount FROM `yy_user_player_order` GROUP BY gid";
$list = Db::query($sql);
$x_data = [];
$y_data1 = [];
$y_data2 = [];
foreach ($list as $k => $v) {
if (!empty($game_list[$v['gid']])) {
$x_data[$k] = $game_list[$v['gid']];
$y_data1[$k]['name'] = $game_list[$v['gid']];
$y_data1[$k]['value'] = $v['count'];
$y_data2[$k]['name'] = $game_list[$v['gid']];
$y_data2[$k]['value'] = $v['total_amount'];
}
}
$data = [];
$data['x_data'] = $x_data;
$data['y_data1'] = $y_data1;
$data['y_data2'] = $y_data2;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
public function get_recharge_rank_list($uid, $time_section, $page, $limit)
{
$map = [];
if (!empty($uid)) {
$map[] = ['uid', '=', $uid];
}
$map[] = ['pay_status', '=', 2];
if (!empty($time_section)) {
$time_section = explode(' - ', $time_section);
if (count($time_section) != 2) {
return ['code' => 201, 'msg' => '时间区间异常', 'data' => null];
} else {
$start_time = $time_section[0];
$end_time = $time_section[1];
$start_time_time = strtotime($start_time);
$end_time_time = strtotime($end_time);
$map[] = ['add_time', 'between', [$start_time_time, $end_time_time]];
}
}
$list = db::name('user_recharge')->field('uid,sum(money) as total_money,sum(integral) as total_integral')->where($map)->group('uid')->order('total_money desc')->page($page, $limit)->select();
$where = [];
$where[] = ['uid', 'in', array_column($list, 'uid')];
$user_data = db::name('user')->where($where)->column('*', 'uid');
foreach ($list as $k => &$v) {
$v['nick_name'] = mb_convert_encoding(base64_decode($user_data[$v['uid']]['base64_nick_name']), 'UTF-8', 'UTF-8');
$v['head_pic'] = localpath_to_netpath($user_data[$v['uid']]['head_pic']);
}
$data = [];
$data['count'] = db::name('user_recharge')->where($map)->group('uid')->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
public function get_send_gift_rank_list($uid, $time_section, $page, $limit)
{
$map = [];
if (!empty($uid)) {
$map[] = ['uid', '=', $uid];
}
if (!empty($time_section)) {
$time_section = explode(' - ', $time_section);
if (count($time_section) != 2) {
return ['code' => 201, 'msg' => '时间区间异常', 'data' => null];
} else {
$start_time = $time_section[0];
$end_time = $time_section[1];
$start_time_time = strtotime($start_time);
$end_time_time = strtotime($end_time);
$map[] = ['add_time', 'between', [$start_time_time, $end_time_time]];
}
}
$list = db::name('user_send_gift')->field('uid,sum(gift_total_price) as total_gift_total_price,sum(gift_num) as total_gift_num')->where($map)->group('uid')->order('total_gift_total_price desc')->page($page, $limit)->select();
$where = [];
$where[] = ['uid', 'in', array_column($list, 'uid')];
$user_data = db::name('user')->where($where)->column('*', 'uid');
foreach ($list as $k => &$v) {
$v['nick_name'] = mb_convert_encoding(base64_decode($user_data[$v['uid']]['base64_nick_name']), 'UTF-8', 'UTF-8');
$v['head_pic'] = localpath_to_netpath($user_data[$v['uid']]['head_pic']);
}
$data = [];
$data['count'] = db::name('user_send_gift')->where($map)->group('uid')->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
public function get_receive_gift_rank_list($uid, $time_section, $page, $limit)
{
$map = [];
if (!empty($uid)) {
$map[] = ['receive_uid', '=', $uid];
}
if (!empty($time_section)) {
$time_section = explode(' - ', $time_section);
if (count($time_section) != 2) {
return ['code' => 201, 'msg' => '时间区间异常', 'data' => null];
} else {
$start_time = $time_section[0];
$end_time = $time_section[1];
$start_time_time = strtotime($start_time);
$end_time_time = strtotime($end_time);
$map[] = ['add_time', 'between', [$start_time_time, $end_time_time]];
}
}
$list = db::name('user_send_gift')->field('receive_uid,sum(receiver_profit) as total_gift_total_price,sum(gift_num) as total_gift_num')->where($map)->group('receive_uid')->order('total_gift_total_price desc')->page($page, $limit)->select();
$where = [];
$where[] = ['uid', 'in', array_column($list, 'receive_uid')];
$user_data = db::name('user')->where($where)->column('*', 'uid');
foreach ($list as $k => &$v) {
$v['nick_name'] = mb_convert_encoding(base64_decode($user_data[$v['receive_uid']]['base64_nick_name']), 'UTF-8', 'UTF-8');
$v['head_pic'] = localpath_to_netpath($user_data[$v['receive_uid']]['head_pic']);
}
$data = [];
$data['count'] = db::name('user_send_gift')->where($map)->group('receive_uid')->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
public function get_player_order_rank_list($uid, $time_section, $order, $sort, $page, $limit)
{
$map = [];
if (!empty($uid)) {
$map[] = ['player_uid', '=', $uid];
}
$map[] = ['status', '=', 3];
$map[] = ['is_over', '=', 1];
if (!empty($time_section)) {
$time_section = explode(' - ', $time_section);
if (count($time_section) != 2) {
return ['code' => 201, 'msg' => '时间区间异常', 'data' => null];
} else {
$start_time = $time_section[0];
$end_time = $time_section[1];
$start_time_time = strtotime($start_time);
$end_time_time = strtotime($end_time);
$map[] = ['add_time', 'between', [$start_time_time, $end_time_time]];
}
}
$list = db::name('user_player_order')->field('uid,sum(total_amount) as total_total_amount,sum(num) as total_num')->where($map)->group('player_uid')->order('total_total_amount desc')->page($page, $limit)->select();
$where = [];
$where[] = ['uid', 'in', array_column($list, 'uid')];
$user_data = db::name('user')->where($where)->column('*', 'uid');
foreach ($list as $k => &$v) {
$v['nick_name'] = mb_convert_encoding(base64_decode($user_data[$v['uid']]['base64_nick_name']), 'UTF-8', 'UTF-8');
$v['head_pic'] = localpath_to_netpath($user_data[$v['uid']]['head_pic']);
}
$data = [];
$data['count'] = db::name('user_player_order')->where($map)->group('uid')->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//用户消费排行统计
public function get_user_consume_rank_list($uid, $time_section, $page, $limit)
{
$map = [];
if (!empty($uid)) {
$map[] = ['uid', '=', $uid];
}
$map[] = ['money_type', '=', 1];
$map[] = ['change_value', '<', 0];
if (!empty($time_section)) {
$time_section = explode(' - ', $time_section);
if (count($time_section) != 2) {
return ['code' => 201, 'msg' => '时间区间异常', 'data' => null];
} else {
$start_time = $time_section[0];
$end_time = $time_section[1];
$start_time_time = strtotime($start_time);
$end_time_time = strtotime($end_time);
$map[] = ['add_time', 'between', [$start_time_time, $end_time_time]];
}
}
$list = db::name('user_money_log')->field('uid,ABS(SUM(change_value)) as total_change_value')->where($map)->group('uid')->order('total_change_value desc')->page($page, $limit)->select();
$where = [];
$where[] = ['uid', 'in', array_column($list, 'uid')];
$user_data = db::name('user')->where($where)->column('*', 'uid');
foreach ($list as $k => &$v) {
$v['nick_name'] = mb_convert_encoding(base64_decode($user_data[$v['uid']]['base64_nick_name']), 'UTF-8', 'UTF-8');
$v['head_pic'] = localpath_to_netpath($user_data[$v['uid']]['head_pic']);
}
$data = [];
$data['count'] = db::name('user_money_log')->where($map)->group('uid')->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
}

View File

@@ -0,0 +1,156 @@
<?php
namespace app\admin\model;
use think\Db;
use think\Model;
class SystemMenu extends Model
{
// 获取初始化数据
public function getSystemInit($aid = 0)
{
$homeInfo = [
'title' => '首页',
'href' => 'page/welcome.html',
];
$logoInfo = [
'title' => '后台 管理',
'image' => 'images/logo.png',
'href' => 'javascript:;',
];
$menuInfo = $this->getMenuList($aid);
$systemInit = [
'homeInfo' => $homeInfo,
'logoInfo' => $logoInfo,
'menuInfo' => $menuInfo,
];
return $systemInit;
}
// 获取菜单列表
private function getMenuList($aid)
{
$menuList = Db::name('system_menu')
->field('id,pid,title,icon,href,target')
->where('status', 1)
->where('type', 'in', [1, 2])
->order('sort', 'desc')
->select();
//超级管理员默认有所有权限
if ($aid != 1) {
$admin_info = db::name('admin')->find($aid);
if (empty($admin_info)) {
return ['code' => 201, 'msg' => '管理员信息不存在', 'data' => null];
}
$system_menu_id_list_data = explode(',', $admin_info['system_menu_id_list']);
foreach ($menuList as $k => &$v) {
if ($v['pid'] != 0) {
if (!in_array($v['id'], $system_menu_id_list_data)) {
unset($menuList[$k]);
}
}
}
}
$menuList = $this->buildMenuChild(0, $menuList);
return $menuList;
}
//递归获取子菜单
private function buildMenuChild($pid, $menuList)
{
$treeList = [];
foreach ($menuList as &$v) {
if ($pid == $v['pid']) {
$node = $v;
$child = $this->buildMenuChild($v['id'], $menuList);
if (!empty($child)) {
$node['child'] = $child;
}
// todo 后续此处加上用户的权限判断
$treeList[] = $node;
}
}
return $treeList;
}
public function get_all_system_menu_list($aid)
{
$menuList = Db::name('system_menu')
->field('id,pid,title,icon,href,target')
->where('status', 1)
->where('type', 'in', [1, 2])
->order('sort', 'desc')
->select();
$admin_info = db::name('admin')->find($aid);
if (empty($admin_info)) {
return ['code' => 201, 'msg' => '管理员信息不存在', 'data' => null];
}
$system_menu_id_list_data = explode(',', $admin_info['system_menu_id_list']);
$menu_data = [];
// dump($menuList);die;
foreach ($menuList as $k => &$v) {
// $v['is_show'] = 1; //有权限
// if (!in_array($v['id'], $system_menu_id_list_data) && $aid != 1) {
// $v['is_show'] = 2; //无权限
// }
$checked = false; //有权限
if (in_array($v['id'], $system_menu_id_list_data) ) {
$checked = true; //无权限
}
$v['checked'] = $checked;
$v['spread'] = true;
$menu_data[$v['id']] = $v;
}
foreach ($menu_data as $key => $val) {
if ($val['checked'] === true && $val['pid'] != 0) {
$menu_data[$val['pid']]['checked'] = false;
}
}
// dump($menu_data);die;
// dump($menu_data);die;
// $menuList = $this->buildMenuChild(0, $menuList);
$menuList = $this->_getManySonData($menu_data);
return ['code' => 200, 'msg' => '获取成功', 'data' => $menuList];
}
//树形创建
private function _getManySonData($data, $sonName = 'children')
{
$tree = [];
//第一步将分类id作为数组key,并创建children单元
foreach ($data as $key => $val) {
// dump($val);
$tree[$val['id']] = $val;
$tree[$val['id']][$sonName] = [];
}
//第二步利用引用将每个分类添加到父类children数组中这样一次遍历即可形成树形结构。
foreach ($tree as $key => $val) {
if ($val['pid'] != 0) {
$tree[$val['pid']][$sonName][] = &$tree[$key];
if ($tree[$key][$sonName] == null) {
unset($tree[$key][$sonName]); //如果children为空则删除该children元素可选
}
}
}
//第三步,删除无用的非根节点数据
foreach ($tree as $key => $val) {
if (isset($val['pid']) && $val['pid'] != 0) {
unset($tree[$key]);
}
}
$result = [];
foreach ($tree as $key => $val) {
$result[] = $val;
}
return $result;
}
}

View File

@@ -0,0 +1,208 @@
<?php
namespace app\admin\model;
use think\Model;
use Qiniu\Storage\UploadManager;
use Qiniu\Auth;
use think\facade\Env;
use Qcloud\Cos\Client;
class Upload extends Model
{
//单文件上传
public function single_file_upload($file, $file_category_name = 'all')
{
//判断上传方式
$config = get_system_config();
if ($config['file_upload_type'] == 1) {
$reslut = $this->local_upload($file, $file_category_name);
} elseif ($config['file_upload_type'] == 2) {
$reslut = $this->qiniu_upload($file, $file_category_name);
}elseif ($config['file_upload_type'] == 3) {
$reslut = $this->tencent_upload($file, $file_category_name);
}
return $reslut;
}
public function server_local_upload($filePath){
$config = get_system_config();
$accessKey = $config['qiniu_access_key'];
$secretKey = $config['qiniu_secret_key'];
$bucket = $config['qiniu_bucket_name'];
// 构建鉴权对象
$auth = new Auth($accessKey, $secretKey);
// 生成上传 Token
$token = $auth->uploadToken($bucket);
// 初始化 UploadManager 对象并进行文件的上传。
$uploadMgr = new UploadManager();
// 调用 UploadManager 的 putFile 方法进行文件的上传。
$local_filePath= Env::get('root_path')."/public/".$filePath;
list($ret, $err) = $uploadMgr->putFile($token, $filePath, $local_filePath);
if ($err !== null) {
return ['code' => 201, 'msg' => "上传失败", 'data' => null];
} else {
$data = [];
$data['image_path'] = $ret['key'];
$data['size'] = 0;
$data['http_image_path'] = localpath_to_netpath($ret['key']);
return ['code' => 200, 'msg' => "上传成功", 'data' => $data];
}
}
public function local_upload($file, $file_category_name = 'all')
{
// // 获取表单上传文件 例如上传了001.jpg
// 移动到框架应用根目录/uploads/ 目录下
$root_path = 'public/uploads/' . $file_category_name;
mkdirs($root_path); //创建文件
$info = $file->validate(['ext' => 'jpeg,jpg,png,gif,mp4,mp3,wgt,svga'])->move('./uploads/' . $file_category_name);
if ($info) {
$file_info = $info->getInfo();
// 成功上传后 获取上传信息
// 输出 jpg
// echo $info->getExtension();
// // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
// echo $info->getSaveName();
// // 输出 42a79759f284b767dfcb2a0197904287.jpg
// echo $info->getFilename();
$image_path = '/uploads/' . $file_category_name . '/' . $info->getSaveName(); //返回的地址
$image_path = str_replace("\\", "/", $image_path);
$img['image_path'] = $image_path;
$img['size'] = $file_info['size'];
$img['http_image_path'] = localpath_to_netpath($image_path);
return ['code' => 200, 'msg' => '上传成功', 'data' => $img];
} else {
return ['code' => 201, 'msg' => '上传失败', 'data' => null];
}
}
public function qiniu_upload($file, $file_category_name = 'all')
{
$config = get_system_config();
$accessKey = $config['qiniu_access_key'];
$secretKey = $config['qiniu_secret_key'];
$bucket = $config['qiniu_bucket_name'];
if (empty($file)) {
return ['code' => 201, 'msg' => '请上传文件', 'data' => null];
}
$validate_reslut = $file->validate(['ext' => 'jpeg,jpg,png,gif,mp4,mp3,wgt,svga'])->check();
if (!$validate_reslut) {
return ['code' => 201, 'msg' => '非法上传存储类型', 'data' => null];
}
$extension = strtolower(pathinfo($file->getInfo('name'), PATHINFO_EXTENSION));
$file_info = $file->getInfo();
// 构建鉴权对象
$auth = new Auth($accessKey, $secretKey);
// 生成上传 Token
$token = $auth->uploadToken($bucket);
// 要上传文件的本地路径
$filePath = $file_info['tmp_name'];
// 上传到存储后保存的文件名
$savename = date('Ymd') . '/' . md5(microtime(true)) . ".$extension";
$key = $file_category_name . '/' . $savename;
// 初始化 UploadManager 对象并进行文件的上传。
$uploadMgr = new UploadManager();
// 调用 UploadManager 的 putFile 方法进行文件的上传。
list($ret, $err) = $uploadMgr->putFile($token, $key, $filePath);
if ($err !== null) {
return ['code' => 201, 'msg' => "上传失败", 'data' => null];
} else {
$data = [];
$data['image_path'] = $ret['key'];
$data['size'] = $file_info['size'];
$data['http_image_path'] = localpath_to_netpath($ret['key']);
return ['code' => 200, 'msg' => "上传成功", 'data' => $data];
}
}
public function get_qiniu_upload_token()
{
$config = get_system_config();
$accessKey = $config['qiniu_access_key'];
$secretKey = $config['qiniu_secret_key'];
$bucket = $config['qiniu_bucket_name'];
$auth = new Auth($accessKey, $secretKey);
$token = $auth->uploadToken($bucket);
return ['code' => 200, 'msg' => '获取成功', 'data' => ['token' => $token]];
}
public function tencent_upload($file, $file_category_name = 'all')
{
$config = get_system_config();
$secretId = $config['tencent_secret_id'];
// $secretId = 111111;
$secretKey = $config['tencent_secret_key'];
$region = $config['tencent_territory'];
$bucket = $config['tencent_bucket_name'];
if (empty($file)) {
return ['code' => 201, 'msg' => '请上传文件', 'data' => null];
}
// dump($file);exit;
$validate_reslut = $file->validate(['ext' => 'jpeg,jpg,png,gif,mp4,mp3,wgt,svga'])->check();
// dump($file);exit;
if (!$validate_reslut) {
return ['code' => 201, 'msg' => '非法上传存储类型', 'data' => null];
}
$extension = strtolower(pathinfo($file->getInfo('name'), PATHINFO_EXTENSION));
$file_info = $file->getInfo();
// 构建鉴权对象
$cosClient = new Client(
array(
'region' => $region,
'schema' => 'https', //协议头部默认为http
'credentials'=> array(
'secretId' => $secretId ,
'secretKey' => $secretKey
)
)
);
// 要上传文件的本地路径
$filePath = $file_info['tmp_name'];
// 上传到存储后保存的文件名
$savename = date('Ymd') . '/' . md5(microtime(true)) . ".$extension";
$key = $file_category_name . '/' . $savename;
// 初始化 UploadManager 对象并进行文件的上传。
$file = fopen($filePath, "rb");
if ($file) {
$result = $cosClient->putObject(array(
'Bucket' => $bucket,
'Key' => $key,
'Body' => $file)
);
$data = [];
$data['image_path'] = $result['Key'];
$data['size'] = $file_info['size'];
$data['http_image_path'] = localpath_to_netpath($result['Key']);
$data['mp4_task_id'] = '';
$data['extension'] = $extension;
return ['code' => 200, 'msg' => "上传成功", 'data' => $data];
}else{
return ['code' => 201, 'msg' => "上传失败", 'data' => null];
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,10 @@
<?php
namespace app\admin\model;
use think\Model;
class UserGiftPack extends Model
{
}

View File

@@ -0,0 +1,20 @@
<?php
namespace app\admin\model;
use think\Model;
class UserGiftPackLog extends Model
{
public static function TypeLable()
{
//1系统赠送2宝箱获得3个人赠送
return [
'1' => '系统赠送',
'2' => '宝箱获得',
'3' => '个人打赏',
'4' => '玩法获取',
'5' => '盲盒巡音会获取',
];
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace app\admin\model;
use think\Model;
class UserMessage extends Model
{
protected $pk = 'mid';
public static function TypeLable()
{
return [
'1' => '系统消息',
'2' => '订单消息',
'3' => '情缘消息',
];
}
}

View File

@@ -0,0 +1,87 @@
<?php
namespace app\admin\model;
use think\Model;
class UserMoneyLog extends Model
{
protected $pk = 'log_id';
public static function ChangeTypeLable()
{
return [
'1' => '系统调节',
// '2' => '陪玩下单',
// '3' => '陪玩超时退款',
'4' => '礼物打赏',
// '5' => '陪玩接单',
'6' => '礼物收赏',
'7' => '礼物打赏厅主收益',
// '8' => '购买守护',
'9' => '余额充值',
// '10' => '陪玩订单取消退款',
'11' => '兑换消耗余额',
'12' => '兑换增加金币',
'13' => '提现',
// '14' => '推广用户充值返利',
'15' => '提现驳回',
'16' => '开宝箱',
'17' => '用户转赠',
// '18' => '发红包支出',
// '19' => '抢红包收入',
// '20' => '抢红包厅主流水',
'21' => '购买装扮',
'22' => '会员邀请收益',
'23' => '签约成功主持获得金币',
'24' => '拍卖签约扣除金币',
'25' => '制作人续约',
'26' => '前制作人获取签约用户被拍金币',
'27' => '新人签约唱歌获取金币',
'28' => '礼物打赏主持收益',
'29' => '幸运礼物打赏',
'30' => '幸运礼物返币',
'31' => '幸运礼物收赏',
'32' => '幸运礼物打赏厅主收益',
'33' => '幸运礼物打赏主持收益',
'34' => '房间补贴收益',
'35' => '幸运补贴收益',
'36' => '购买会员消费',
'37' => '更换邀请人消费',
'38' => '礼物打赏制作人收益',
'39' => '公会补贴收益',
'40' => '购买门票消费金币',
'41' => '获取门票',
'42' => '仲夏夜梦曲投入票数',
'43' => '新手签约奖励',
// '18' => '开箱获取欧皇钥匙',
// '19' => '消耗欧皇钥匙开箱',
// '18' => '兑换积攒池',
// '19' => '积攒池兑换'
'44' => '购买爵位',
'18' => '退出公会扣除',
'19' => '退出公会增加',
'52' => '抢头条',
'53' => '删除用户关系',
'61' => '龙蛋神谕投币',
'62' => '每日签到奖励',
'63' => '倍数玩法消费',
];
}
public static function MoneyTypeLable()
{
return [
'1' => '余额',
'2' => '金币',
'3' => '票数',
// '3' => '欧皇钥匙',
// '3' => '积攒金额'
];
}
}

View File

@@ -0,0 +1,82 @@
<?php
namespace app\admin\model;
use think\Model;
use think\Db;
class UserPack extends Model
{
//获取配置参数
public function add_user_pack_gift($aid, $uid, $gid, $num)
{
if($aid != 1) {
return ['code' => 201, 'msg' => '非超管用户不能向背包送礼物', 'data' => null];
}
$map = [];
$map[] = ['is_delete', '=', 1];
$map[] = ['is_show', '=', 1];
$map[] = ['is_can_buy', '=', 2];
$map[] = ['gid', '=', $gid];
$gift_info = Db::name('gift')->where($map)->find();
if(empty($gift_info)) {
return ['code' => 201, 'msg' => '礼物信息不存在', 'data' => null];
}
$user_info = Db::name('user')->find($uid);
if(empty($user_info)) {
return ['code' => 201, 'msg' => '用户信息不存在', 'data' => null];
}
$map = [];
$map[] = ['uid', '=', $uid];
$map[] = ['gid', '=', $gid];
$info = Db::name('user_gift_pack')->where($map)->find();
Db::startTrans();
try {
if($info) {
$data = [
'total_num' => $info['total_num'] + $num,
'num' => $info['num'] + $num,
'admin_id' => $aid,
'admin_add_num' => $info['admin_add_num'] + $num,
'update_time' => time(),
];
Db::name('user_gift_pack')->where('pid', $info['pid'])->update($data);
} else {
$data = [
'total_num' => $num,
'num' => $num,
'admin_id' => $aid,
'admin_add_num' => $num,
'update_time' => time(),
'add_time' => time(),
'gid' => $gid,
'uid' => $uid,
];
Db::name('user_gift_pack')->insert($data);
}
$insert_data = [
'uid' => $uid,
'type' => 5,
'gid' => $gid,
'change_num' => $num,
'after_num' => $num,
'gift_price' => $gift_info['gift_price'],
'total_gift_price' => $gift_info['gift_price'] * $num,
'remarks' => '平台补发',
'update_time' => time(),
'add_time' => time(),
'admin_id' => $aid,
];
Db::name('user_gift_pack_log')->insert($insert_data);
Db::commit();
return ['code' => 200, 'msg' => "修改成功", 'data' => null];
} catch (\Exception $e) {
// 回滚事务
dump($e);
Db::rollback();
return ['code' => 201, 'msg' => "请重试", 'data' => null];
}
}
}

View File

@@ -0,0 +1,29 @@
<?php
namespace app\admin\model;
use think\Model;
class UserPlayer extends Model
{
protected $auto = ['update_time'];
protected $insert = [
'add_time',
'order_duration' => 0,
'order_count' => 0,
'order_total_amount' => 0,
'service_rate' => 0,
'last_login_time' => 0,
'flag' => '',
'is_top' => 1,
'is_recommend' => 1,
'is_business' => 1,
'remarks' => '',
'status' => 1,
'deal_time' => 0,
];
protected $update = ['update_time'];
}

View File

@@ -0,0 +1,45 @@
<?php
namespace app\admin\model;
use think\Db;
use think\Model;
class UserPlayerOrder extends Model
{
public function close_palyer_order()
{
$player_order_close_max_time = get_system_config('player_order_close_max_time');
$close_time = time() - $player_order_close_max_time; //30分钟自动关闭订单
$map = [];
$map[] = ['status', '=', 1];
$map[] = ['is_over', '=', 1];
$map[] = ['add_time', '<', $close_time];
$list = db::name('user_player_order')->where($map)->select();
foreach ($list as $k => $v) {
Db::startTrans();
try {
$data = [];
$data['oid'] = $v['oid'];
$data['is_over'] = 2;
$data['over_close_time'] = time();
$reslut = db::name('user_player_order')->update($data);
if (!$reslut) {
Db::rollback();
return ['code' => 201, 'msg' => '请重试', 'data' => null];
}
//用户积分返回
$reslut = model('admin/User')->change_user_money_by_uid($v['uid'], $v['total_amount'], 2, 3, "陪玩订单超时退款:" . $v['order_sn'], $v['player_uid'], $v['oid']);
if ($reslut['code'] != 200) {
Db::rollback();
return ['code' => 201, 'msg' => '请重试', 'data' => null];
}
} catch (\Exception $e) {
// 回滚事务
Db::rollback();
return ['code' => 201, 'msg' => "请重试", 'data' => null];
}
}
return date('Y-m-d H:i:s') . 'success' . PHP_EOL;
}
}

View File

@@ -0,0 +1,46 @@
<?php
namespace app\admin\model;
use think\Model;
class UserRelation extends Model
{
protected $pk = 'rid';
protected $auto = ['update_time'];
protected $insert = [
'add_time',
'status' => 1,
'deal_time' => 0,
];
protected $update = ['update_time'];
protected function setAddTimeAttr()
{
return time();
}
protected function setUpdateTimeAttr()
{
return time();
}
public static function TypeLable()
{
return [
'1' => '情侣',
'2' => '师徒',
'3' => '守护',
];
}
public function get_relation_type_lable($type)
{
$data = $this->TypeLable();
if (empty($data[$type])) {
return '';
} else {
return $data[$type];
}
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace app\admin\model;
use think\Model;
class UserRelationApply extends Model
{
protected $pk = 'aid';
protected $auto = ['update_time'];
protected $insert = [
'add_time',
'status' => 1,
'deal_time' => 0,
];
protected $update = ['update_time'];
protected function setAddTimeAttr()
{
return time();
}
protected function setUpdateTimeAttr()
{
return time();
}
}

View File

@@ -0,0 +1,130 @@
<?php
namespace app\admin\model;
use think\Db;
use think\Model;
class Userzone extends Model
{
//获取举报列表
public function user_zone_list($uid, $nick_name, $content, $show_status, $page = 1, $limit = 20)
{
$map = [];
if (!empty($uid)) {
$map[] = ['a.uid', '=', $uid];
}
if (!empty($nick_name)) {
$map[] = ['b.nick_name', 'like', '%' . $nick_name . '%'];
}
if (!empty($content)) {
$map[] = ['a.content', 'like', '%' . $content . '%'];
}
if (!empty($show_status)) {
$map[] = ['a.show_status', '=', $show_status];
}
$list = db::name('user_zone')
->alias('a')->join('yy_user b', 'a.uid = b.uid')
->field('a.*,b.nick_name')->where($map)->page($page, $limit)->order("zid desc")->select();
foreach ($list as $k => &$v) {
$list[$k]['user_nick_name'] = $v['uid'] . '-' . $v['nick_name'];
$image_data = explode(',', $v['images']);
$v['image_list'] = [];
if (!empty($image_data)) {
foreach ($image_data as $m => $n) {
$v['image_list'][] = localpath_to_netpath($n);
}
}
$v['sound'] = localpath_to_netpath($v['sound']);
$v['video'] = localpath_to_netpath($v['video']);
}
$data = [];
$data['count'] = db::name('user_zone')->alias('a')->join('yy_user b', 'a.uid = b.uid')->where($map)->count();
$data['list'] = $list;
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
}
//审核发布说说
// public function zone_examine($zid, $show_status)
// {
// $map = [];
// $map[] = ['zid', '=', $zid];
// $zone_info = db::name('user_zone')->where($map)->find();
// if (empty($zone_info)) {
// return ['code' => 201, 'msg' => '说说不存在', 'data' => null];
// }
// if (!in_array($show_status, [1, 2, 3])) {
// return ['code' => 201, 'msg' => '审核状态参数错误', 'data' => null];
// }
// $data = [];
// $data['zid'] = $zid;
// $data['show_status'] = $show_status; //默认显示
// $data['update_time'] = time(); //默认显示
// $reslut = db::name('user_zone')->update($data);
// if ($reslut) {
// return ['code' => 200, 'msg' => '操作成功', 'data' => null];
// } else {
// return ['code' => 201, 'msg' => '操作失败', 'data' => null];
// }
// }
public function get_zone_info($zid)
{
$map = [];
$map[] = ['zid', '=', $zid];
$zone_info = db::name('user_zone')->where($map)->find();
if (empty($zone_info)) {
return ['code' => 201, 'msg' => '说说不存在', 'data' => null];
}
$user_info = db::name('user')->find($zone_info['uid']);
$zone_info['user_name'] = $user_info['user_name'];
$zone_info['nick_name'] = mb_convert_encoding(base64_decode($user_info['base64_nick_name']), 'UTF-8', 'UTF-8');
$zone_info['http_sound'] = localpath_to_netpath($zone_info['sound']);
$zone_info['http_video'] = localpath_to_netpath($zone_info['video']);
$zone_info['image_list'] = '';
if (!empty($zone_info['images'])) {
$image_data = explode(',', $zone_info['images']);
foreach ($image_data as $m => &$n) {
$n = localpath_to_netpath($n);
}
$zone_info['image_list']=join(',',$image_data);
}
return ['code' => 200, 'msg' => 'success', 'data' => $zone_info];
}
//审核发布说说
public function edit_zone($data)
{
$map = [];
$map[] = ['zid', '=', $data['zid']];
$zone_info = db::name('user_zone')->where($map)->find();
if (empty($zone_info)) {
return ['code' => 201, 'msg' => '说说不存在', 'data' => null];
}
if (!in_array($data['show_status'], [1, 2, 3])) {
return ['code' => 201, 'msg' => '审核状态参数错误', 'data' => null];
}
if (!in_array($data['is_recommend'], [1, 2])) {
return ['code' => 201, 'msg' => '推荐状态参数错误', 'data' => null];
}
$update_data = [];
$update_data['zid'] = $data['zid'];
$update_data['is_recommend'] = $data['is_recommend']; //默认显示
$update_data['show_status'] = $data['show_status']; //默认显示
$update_data['update_time'] = time(); //默认显示
$reslut = db::name('user_zone')->update($update_data);
if ($reslut) {
return ['code' => 200, 'msg' => '操作成功', 'data' => null];
} else {
return ['code' => 201, 'msg' => '操作失败', 'data' => null];
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,42 @@
<?php
namespace app\admin\validate;
use think\Validate;
class Admin extends Validate
{
/**
* 定义验证规则
* 格式:'字段名' => ['规则1','规则2'...]
*
* @var array
*/
protected $rule = [
'user_name' => 'require|unique:admin,user_name,,aid',
// 'password' => 'require|regex:[a-zA-Z0-9]{6,16}',
'password' => 'require',
];
/**
* 定义错误信息
* 格式:'字段名.规则名' => '错误信息'
*
* @var array
*/
protected $message = [
'user_name.require' => '用户名必须',
'user_name.unique' => '用户名已被占用',
'password.require' => '密码必须',
// 'password.regex' => '密码必须6-16位字母或者数字组成',
];
protected $scene = [
'adminEditPassword' => ['password'],
'adminAdd' => ['user_name', 'password'],
];
}

View File

@@ -0,0 +1,43 @@
<?php
namespace app\admin\validate;
use think\Validate;
class BoxGiveGift extends Validate
{
/**
* 定义验证规则
* 格式:'字段名' => ['规则1','规则2'...]
*
* @var array
*/
protected $rule = [
'uid' => 'require',
'tid' => 'require',
'gid' => 'require',
'num' => 'require',
];
/**
* 定义错误信息
* 格式:'字段名.规则名' => '错误信息'
*
* @var array
*/
protected $message = [
'uid.require' => '用户id必须',
'tid.require' => '类型必须',
'gid.require' => '礼物id必须',
'num.require' => '数量必须',
];
protected $scene = [
'adminAdd' => ['uid', 'tid', 'gid', 'num'],
];
}

View File

@@ -0,0 +1,41 @@
<?php
namespace app\admin\validate;
use think\Validate;
class BoxType extends Validate
{
/**
* 定义验证规则
* 格式:'字段名' => ['规则1','规则2'...]
*
* @var array
*/
protected $rule = [
'type_name' => 'require|length:1,20',
'open_price' => 'require',
'open_status' => 'require|in:1,2',
];
/**
* 定义错误信息
* 格式:'字段名.规则名' => '错误信息'
*
* @var array
*/
protected $message = [
'type_name.require' => '类型名称必须',
'type_name.length' => '类型名称长度必须1~200之间',
'open_price.require' => '单价必须',
'open_status.require' => '开启状态必须',
'open_status.in' => '开启状态参数错误',
];
protected $scene = [
'adminAdd' => ['type_name', 'open_price', 'open_status'],
'adminEdit' => ['type_name', 'open_price', 'open_status'],
];
}

View File

@@ -0,0 +1,36 @@
<?php
namespace app\admin\validate;
use think\Validate;
class Message extends Validate
{
/**
* 定义验证规则
* 格式:'字段名' => ['规则1','规则2'...]
*
* @var array
*/
protected $rule = [
'title' => 'require',
'content' => 'require',
];
/**
* 定义错误信息
* 格式:'字段名.规则名' => '错误信息'
*
* @var array
*/
protected $message = [
'title.require' => '标题必须',
'content.require' => '内容必须',
];
protected $scene = [
'adminAdd' => ['title', 'content'],
'adminEdit' => ['title', 'content'],
];
}

View File

@@ -0,0 +1,53 @@
<?php
namespace app\admin\validate;
use think\Validate;
class Room extends Validate
{
/**
* 定义验证规则
* 格式:'字段名' => ['规则1','规则2'...]
*
* @var array
*/
protected $rule = [
'room_name' => 'require|length:1,20',
'room_intro' => 'require|length:1,200',
'room_cover' => 'require',
'room_number' => 'require|number|unique:room',
'room_password' => 'regex:[A-Z0-9]{4}',
'room_owner_uid' => 'require',
'room_background_id' => 'require',
'cate_id' => 'require',
];
/**
* 定义错误信息
* 格式:'字段名.规则名' => '错误信息'
*
* @var array
*/
protected $message = [
'room_name.require' => '房间名必须',
'room_name.length' => '房间名长度必须1~200之间',
'room_cover.require' => '房间封面必须',
'room_number.require' => '房间号必须',
'room_number.number' => '房间号必须为纯数字',
'room_number.unique' => '房间号已存在',
'room_password.regex' => '房间密码必须4位数字或字母组合',
'room_owner_uid.require' => '厅主ID必须',
'room_background_id.require' => '房间背景图必须',
'cate_id.require' => '房间分类必须',
];
protected $scene = [
'adminAdd' => ['room_name', 'room_cover', 'room_number', 'room_password', 'room_owner_uid', 'room_background_id', 'cate_id'],
'adminEdit' => ['room_name', 'room_cover', 'room_number', 'room_password', 'room_background_id', 'cate_id'],
'apiEdit' => ['room_name', 'room_cover', 'room_password', 'room_background_id'],
'apiAdd' => ['room_name', 'room_cover', 'room_password', 'room_background_id', 'cate_id'],
];
}

View File

@@ -0,0 +1,74 @@
<?php
namespace app\admin\validate;
use think\Validate;
class User extends Validate
{
/**
* 定义验证规则
* 格式:'字段名' => ['规则1','规则2'...]
*
* @var array
*/
protected $rule = [
'user_name' => 'require|unique:user,user_name,,uid|mobile',
'password' => 'require|regex:[a-zA-Z0-9]{6,16}',
'trade_password' => 'require|regex:\d{6}',
'nick_name' => 'require|length:1,8',
'nick_name' => 'require',
'birthday' => 'require|regex:\d{4}-\d{2}-\d{2}',
'constellation' => 'require|in:白羊座,金牛座,双子座,巨蟹座,狮子座,处女座,天秤座,天蝎座,射手座,摩羯座,双鱼座,水瓶座',
'head_pic' => 'require',
'sex' => 'require|in:1,2',
'is_can_recharge' => 'require|in:1,2',
'is_sign' => 'require|in:1,2',
'login_status' => 'require|in:1,2',
'system' => 'require|in:0,1,2',
'special_uid' => 'unique:user,special_uid,,uid|integer',
];
/**
* 定义错误信息
* 格式:'字段名.规则名' => '错误信息'
*
* @var array
*/
protected $message = [
'user_name.require' => '用户名必须',
'user_name.unique' => '用户名已被占用',
'user_name.mobile' => '用户名必须是手机号码',
'password.require' => '密码必须',
'password.regex' => '密码必须6-16位字母或者数字组成',
'trade_password.require' => '交易密码必须',
'trade_password.regex' => '交易密码必须6数字组成',
'nick_name.require' => '用户昵称必须',
'nick_name.length' => '用户昵称必须1~8个字符',
'birthday.require' => '出生日期必须',
'birthday.regex' => '出生日期格式非法',
'constellation.require' => '请填写星座',
'constellation.in' => '星座类型错误',
'head_pic.require' => '用户头像必须',
'is_can_recharge.require' => '是否可代充状态必须',
'is_can_recharge.in' => '是否可代充状态非法',
'is_sign.require' => '是否签约状态必须',
'is_sign.in' => '是否签约状态非法',
'login_status.require' => '是否允许登录状态必须',
'login_status.in' => '是否允许登录状态非法',
'special_uid.unique' => '该靓号已占用',
'special_uid.integer' => '靓号格式错误',
];
protected $scene = [
'adminEdit' => ['nick_name', 'sex', 'login_status'],
'adminEditPassword' => ['password'],
'apiEditPassword' => ['password'],
'apiEditTradePassword' => ['trade_password'],
'apiAdd' => ['user_name', 'password'],
'apiEditInfo' => ['nick_name', 'birthday', 'constellation'],
];
}

View File

@@ -0,0 +1,50 @@
<?php
namespace app\admin\validate;
use think\Validate;
class UserPlayer extends Validate
{
/**
* 定义验证规则
* 格式:'字段名' => ['规则1','规则2'...]
*
* @var array
*/
protected $rule = [
'uid' => 'require',
'gid' => 'require',
'lid' => 'require',
'price' => 'require',
// 'price' => 'number|between:0,10000',
'skill_image' => 'require',
'cover_image' => 'require',
'sound' => 'require',
'sound_duration' => 'number|between:0,60',
'introduction' => 'require',
];
/**
* 定义错误信息
* 格式:'字段名.规则名' => '错误信息'
*
* @var array
*/
protected $message = [
// 'price.require' => '单价',
// 'price.between' => '单价设置范围0~10000',
'skill_image.require' => '请上传技能截图',
'cover_image.unique' => '请上传封面图',
'sound.require' => '语音介绍必须',
'sound_duration.number' => '语音介绍时长必须为数字',
'sound_duration.between' => '语音介绍时长范围最长60s',
'introduction.require' => '个人介绍必填',
];
protected $scene = [
'apiAdd' => ['uid', 'gid', 'lid', 'price', 'skill_image', 'cover_image', 'sound', 'sound_duration', 'introduction'],
'apiEdit' => ['uid','lid', 'price', 'skill_image', 'cover_image', 'sound', 'sound_duration', 'introduction'],
];
}

View File

@@ -0,0 +1,34 @@
<?php
namespace app\admin\validate;
use think\Validate;
class UserRelation extends Validate
{
protected $rule = [
'uid' => 'require',
'recived_uid' => 'require',
'type' => 'require|in:1,2,3'
];
/**
* 定义错误信息
* 格式:'字段名.规则名' => '错误信息'
*
* @var array
*/
protected $message = [
'uid.require' => 'uid必须',
'recived_uid.require' => 'recived_uid必须',
'type.require' => '关系类型必须',
'type.in' => '关系类型非法',
];
protected $scene = [
'apiAdd' => ['uid', 'recived_uid', 'type'],
'apiAdd' => ['uid', 'recived_uid', 'type'],
];
}

View File

@@ -0,0 +1,36 @@
<?php
namespace app\admin\validate;
use think\Validate;
class UserRelationApply extends Validate
{
protected $rule = [
'uid' => 'require',
'recived_uid' => 'require',
'type' => 'require|in:1,2,3',
'status' => 'in:1,2,3'
];
/**
* 定义错误信息
* 格式:'字段名.规则名' => '错误信息'
*
* @var array
*/
protected $message = [
'uid.require' => 'uid必须',
'recived_uid.require' => 'recived_uid必须',
'type.require' => '关系类型必须',
'type.in' => '关系类型非法',
'status.in' => '状态非法',
];
protected $scene = [
'apiAdd' => ['uid', 'recived_uid', 'type', 'status'],
'apiEdit' => ['status'],
];
}

View File

@@ -0,0 +1,31 @@
<?php
namespace app\admin\validate;
use think\Validate;
class UserZone extends Validate
{
protected $rule = [
'sound_duration' => 'number|between:0,60',
'content' => 'length:1,300',
];
/**
* 定义错误信息
* 格式:'字段名.规则名' => '错误信息'
*
* @var array
*/
protected $message = [
'sound_duration.number' => '声音长度参数非法',
'sound_duration.between' => '声音最大限制60s',
// 'content.require' => '请填写内容',
'content.length' => '内容字数超出限制',
];
protected $scene = [
'apiAdd' => ['sound_duration', 'content'],
];
}

View File

@@ -0,0 +1,29 @@
<?php
namespace app\admin\validate;
use think\Validate;
class UserZoneComment extends Validate
{
protected $rule = [
'content' => 'require|length:1,300',
];
/**
* 定义错误信息
* 格式:'字段名.规则名' => '错误信息'
*
* @var array
*/
protected $message = [
'content.require' => '请填写内容',
'content.length' => '内容字数超出限制',
];
protected $scene = [
'apiAdd' => ['content'],
];
}

View File

@@ -0,0 +1 @@
13132

View File

@@ -0,0 +1,77 @@
<?php
namespace app\anchor\controller;
use think\Controller;
use think\captcha\Captcha;
use think\DB;
class Apip extends Controller
{
public function initialize()
{
header('Access-Control-Allow-Origin: *');
add_operation(3, 0); //用户行为日志
}
public function login()
{
$captcha = input('captcha');
$username = input('username');
$password = input('password');
if (empty($captcha)) {
return ajaxReturn(201, '验证码不能为空');
}
// if (!captcha_check($captcha)) {
// // 验证失败
// return ajaxReturn(201, '验证码错误');
// }
if (empty($username)) {
return ajaxReturn(201, '用户名不能为空');
}
if (empty($password)) {
return ajaxReturn(201, '密码不能为空');
}
$map = [];
$map[] = ['user_name', '=', $username];
$map[] = ['password', '=', md5($password)];
$info = db::name('user')->where($map)->find();
if (empty($info)) {
return ajaxReturn(201, '用户名不存在');
} else {
if (md5($password) != $info['password']) {
return ajaxReturn(201, '密码错误');
}
if ($info['is_anchor'] != 2) {
return ajaxReturn(201, '普通用户无法登录');
}
$login_token = generateRandom(32);
$login_token = $info['login_token']; //防止用户APP掉线 此处不更新登录token
$data = [];
$data['uid'] = $info['uid'];
$data['login_token'] = $login_token;
$data['update_time'] = time();
$reslut = db::name('user')->update($data);
if (!$reslut) {
return ajaxReturn(201, '登录失败', '');
} else {
return ajaxReturn(200, '登录成功', $login_token);
}
}
}
public function verify()
{
$config = [
'codeSet' => '0123456789',
// 验证码字体大小
'fontSize' => 30,
// 验证码位数
'length' => 4,
// 关闭验证码杂点
'useNoise' => false,
];
$captcha = new Captcha($config);
return $captcha->entry();
}
}

View File

@@ -0,0 +1,51 @@
<?php
namespace app\anchor\controller;
use think\Controller;
use think\Request;
use think\DB;
class Capital extends Common
{
//获取房间流水 列表
public function room_money_log()
{
$rid = -1;
$room_info = Db::name("room")->where(array("room_owner_uid" => $this->uid))->find();
if (!empty($room_info)) {
$rid = $room_info['rid'];
}
$room_number = 0;
$room_name = '';
$time1 = input('time1', '');
$time2 = input('time2', 0);
$order = input('order', 'a.sid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$limit = input('limit', 20);
$reslut = model('admin/Capital')->room_money_log($rid, $room_number, $room_name, $time1, $time2, $order, $sort, $page, $limit);
$data = [];
$data['code'] = 0;
$data['msg'] = '获取成功';
$data['count'] = $reslut['data']['count'];
$data['data'] = $reslut['data']['list'];
$data['totalRow'] = $reslut['data']['totalRow'];
return json($data);
}
//获取资金改变类型
public function get_change_type()
{
$data = model('admin/UserMoneyLog')->ChangeTypeLable();
return ajaxReturn(200, '', $data);
}
//获取资金类型
public function get_money_type()
{
$data = model('admin/UserMoneyLog')->MoneyTypeLable();
return ajaxReturn(200, '', $data);
}
}

View File

@@ -0,0 +1,37 @@
<?php
namespace app\anchor\controller;
use think\Controller;
use think\Request;
use think\Db;
class Common extends Controller
{
public $uid;
public function initialize()
{
header('Access-Control-Allow-Origin: *');
// ajaxReturn(301, '系统维护');
$login_token = input('login_token', 0);
$reslut = model('User')->check_login_token($login_token);
if ($reslut['code'] == 201) {
return ajaxReturn(301, $reslut['msg'], $reslut['data']);
} else {
$this->uid = $reslut['data'];
}
add_operation(3, $this->uid); //用户行为日志
}
public function check_login_status()
{
$user_name = Db::name("user")->where(array("uid" => $this->uid))->value("user_name");
$data['data'] = $user_name;
ajaxReturn(1, '登录成功', $data);
}
public function get_menu_list()
{
$data = model('SystemMenu')->getSystemInit($this->uid);
return json($data);
}
}

View File

@@ -0,0 +1,10 @@
<?php
namespace app\anchor\model;
use think\Model;
class Capital extends Model
{
//
}

View File

@@ -0,0 +1,63 @@
<?php
namespace app\anchor\model;
use think\Db;
use think\Model;
class SystemMenu extends Model
{
// 获取初始化数据
public function getSystemInit($aid = 0)
{
$homeInfo = [
'title' => '首页',
'href' => '',
];
$logoInfo = [
'title' => '系统 管理',
'image' => 'images/logo.png',
];
$menuInfo = $this->getMenuList($aid);
$systemInit = [
'homeInfo' => $homeInfo,
'logoInfo' => $logoInfo,
'menuInfo' => $menuInfo,
];
return $systemInit;
}
// 获取菜单列表
private function getMenuList($aid)
{
$menuList = Db::name('system_menu_anchor')
->field('id,pid,title,icon,href,target')
->where('status', 1)
->where('type', 'in', [1, 2])
->order('sort', 'desc')
->select();
$menuList = $this->buildMenuChild(0, $menuList);
return $menuList;
}
//递归获取子菜单
private function buildMenuChild($pid, $menuList)
{
$treeList = [];
foreach ($menuList as &$v) {
if ($pid == $v['pid']) {
$node = $v;
$child = $this->buildMenuChild($v['id'], $menuList);
if (!empty($child)) {
$node['child'] = $child;
}
// todo 后续此处加上用户的权限判断
$treeList[] = $node;
}
}
return $treeList;
}
}

Some files were not shown because too many files have changed in this diff Show More