wanghongjun 9 months ago
parent
commit
85f105763e
  1. 51
      config/app.php
  2. 38
      config/cache.php
  3. 19
      config/captcha.php
  4. 14
      config/console.php
  5. 18
      config/cookie.php
  6. 8
      config/cron.php
  7. 62
      config/database.php
  8. 42
      config/filesystem.php
  9. 33
      config/gateway.php
  10. 16
      config/hashids.php
  11. 21
      config/jwt.php
  12. 32
      config/lang.php
  13. 45
      config/log.php
  14. 12
      config/middleware.php
  15. 8
      config/oss.php
  16. 6
      config/preview.php
  17. 39
      config/queue.php
  18. 45
      config/route.php
  19. 19
      config/session.php
  20. 159
      config/sms.php
  21. 10
      config/trace.php
  22. 45
      config/version.php
  23. 28
      config/view.php
  24. 7
      public/404.html
  25. 1
      public/assets/css/133.7f9367b6.css
  26. 1
      public/assets/css/173.fc941ab9.css
  27. 1
      public/assets/css/567.74d1a927.css
  28. 1
      public/assets/css/585.8fcf2825.css
  29. 1
      public/assets/css/687.d8d9e482.css
  30. 1
      public/assets/css/789.62ab164a.css
  31. 1
      public/assets/css/982.f6ad2033.css
  32. 10
      public/assets/css/app.c65eb857.css
  33. BIN
      public/assets/fonts/element-icons.f1a45d74.ttf
  34. BIN
      public/assets/fonts/element-icons.ff18efd1.woff
  35. BIN
      public/assets/img/404.42feab21.png
  36. BIN
      public/assets/img/h5.png
  37. BIN
      public/assets/img/invite.108c2fc8.png
  38. BIN
      public/assets/img/login-background.4d69904c.jpg
  39. BIN
      public/assets/img/logo.e8099414.png
  40. BIN
      public/assets/img/logo.png
  41. BIN
      public/assets/img/user-card-bg.f076172d.jpg
  42. 1
      public/assets/js/133.3a1dfa9e.js
  43. 1
      public/assets/js/173.9e08cf23.js
  44. 1
      public/assets/js/567.a6404721.js
  45. 1
      public/assets/js/585.dea7864f.js
  46. 1
      public/assets/js/647.d01223a0.js
  47. 1
      public/assets/js/687.70d7eca3.js
  48. 11
      public/assets/js/789.34f6ec0f.js
  49. 1
      public/assets/js/982.0e09100e.js
  50. 1
      public/assets/js/app.85372e4e.js
  51. 40
      public/assets/js/chunk-vendors.3d6e6243.js
  52. 2
      public/assets/js/peerjs.min.js
  53. BIN
      public/assets/media/calling.69742e4c.mp3
  54. BIN
      public/assets/media/guaduan.c0b3124b.mp3
  55. BIN
      public/assets/media/notify.3d49176d.mp3
  56. BIN
      public/assets/media/notify.7668dd76.ogg
  57. BIN
      public/assets/media/notify.e6953ff1.wav
  58. BIN
      public/favicon.ico
  59. 1
      public/index.html
  60. 32
      public/index.php
  61. 2
      public/robots.txt
  62. 19
      public/router.php
  63. 22
      public/sql/5.1.2 升 5.2 copy.sql
  64. 8
      public/sql/5.1.2 升 5.2.sql
  65. 23
      public/sql/5.2 升 5.3.sql
  66. 337
      public/sql/database.sql
  67. 0
      public/sql/test.txt
  68. 527
      public/static/common/css/audio.css
  69. 637
      public/static/common/css/main.css
  70. 0
      public/static/common/css/test.txt
  71. BIN
      public/static/common/img/camera-off.png
  72. BIN
      public/static/common/img/camera.png
  73. BIN
      public/static/common/img/chatarea.png
  74. BIN
      public/static/common/img/file_transfer.jpg
  75. BIN
      public/static/common/img/file_transfer.png
  76. BIN
      public/static/common/img/guaduan.png
  77. BIN
      public/static/common/img/jieting.png
  78. BIN
      public/static/common/img/moments.png
  79. BIN
      public/static/common/img/none.png
  80. BIN
      public/static/common/img/notice.png
  81. BIN
      public/static/common/img/speaker-off.png
  82. BIN
      public/static/common/img/speaker.png
  83. 0
      public/static/common/img/test.txt
  84. BIN
      public/static/common/img/tmall.png
  85. BIN
      public/static/common/img/uniapp.png
  86. BIN
      public/static/common/img/video.png
  87. BIN
      public/static/common/img/voice-off.png
  88. BIN
      public/static/common/img/voice.png
  89. 1075
      public/static/common/js/audio.js
  90. 1
      public/static/common/js/superVideo.js
  91. 0
      public/static/common/js/test.txt
  92. 1
      public/static/common/js/watermark.js
  93. 0
      public/static/common/test.txt
  94. BIN
      public/static/common/voice/calling.mp3
  95. BIN
      public/static/common/voice/guaduan.mp3
  96. 546
      public/static/css/main.css
  97. 4496
      public/static/docxjs/js/docx-preview.js
  98. 13
      public/static/docxjs/js/jszip.min.js
  99. 0
      public/static/docxjs/js/test.txt
  100. 0
      public/static/docxjs/test.txt

51
config/app.php

@ -0,0 +1,51 @@
<?php
// +----------------------------------------------------------------------
// | 应用设置
// +----------------------------------------------------------------------
return [
'app_name' =>env('app.name', 'Raingad-IM'),
'app_logo' =>env('app.logo', env('app.host', '')."/static/common/img/uniapp.png"),
'app_version' => env('app.version', '5.3.1'),
'app_release' =>env('app.release', '20241127'),
// 应用地址
'app_host' => env('app.host', ''),
// 应用的命名空间
'app_namespace' => '',
// 是否启用路由
'with_route' => true,
'app_express' => true,
// 默认应用
'default_app' => 'index',
// 默认时区
'default_timezone' => env('app.default_timezone', 'Asia/Shanghai'),
// 应用映射(自动多应用模式有效)
'app_map' => [],
// 域名绑定(自动多应用模式有效)
'domain_bind' => [],
// 禁止URL访问的应用列表(自动多应用模式有效)
'deny_app_list' => [],
// 异常页面的模板文件
'exception_tmpl' => app()->getThinkPath() . 'tpl/think_exception.tpl',
// 错误显示信息,非调试模式有效
'error_message' => '页面错误!请稍后再试~',
// 显示错误信息
'show_error_msg' => false,
'auto_multi_app' =>true,
//用户token加密用的秘钥
'aes_token_key' => env('AES_TOKEN_KEY', ''),
//用户LOGIN加密用的秘钥
'aes_login_key' => env('AES_LOGIN_KEY', ''),
//用户chat加密用的秘钥
'aes_chat_key' => env('AES_CHAT_KEY', ''),
// 接口加密用的秘钥
'app_id' => env('APP_ID', ''),
'app_secret' => env('APP_SECRET', ''),
'api_status' => env('APP_API_STATUS', true),
//thinkAPI的令牌
'thinkapi_token' => env('APP_THINKAPI_TOKEN', ''),
];

38
config/cache.php

@ -0,0 +1,38 @@
<?php
// +----------------------------------------------------------------------
// | 缓存设置
// +----------------------------------------------------------------------
return [
// 默认缓存驱动
'default' => env('cache.driver', 'redis'),
// 缓存连接方式配置
'stores' => [
'file' => [
// 驱动方式
'type' => 'File',
// 缓存保存目录
'path' => '',
// 缓存前缀
'prefix' => '',
// 缓存有效期 0表示永久缓存
'expire' => 0,
// 缓存标签前缀
'tag_prefix' => 'tag:',
// 序列化机制 例如 ['serialize', 'unserialize']
'serialize' => [],
],
'redis' => [
// 驱动方式
'type' => 'redis',
'host' =>env('redis.host', '127.0.0.1'),
'port' => env('redis.port', '6379'),
'password' => env('redis.password', ''),
// 缓存前缀
'prefix' => env('redis.prefix', ''),
]
// 更多的缓存连接
],
];

19
config/captcha.php

@ -0,0 +1,19 @@
<?php
return [
// 验证码字符集合
'codeSet' => '2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY',
// 验证码字体大小(px)
'fontSize' => 20,
// 是否画混淆曲线
'useCurve' => false,
// 验证码图片高度
'imageH' => 40,
// 验证码图片宽度
'imageW' => 150,
// 验证码位数
'length' => 4,
// 验证成功后是否重置
'reset' => true
];

14
config/console.php

@ -0,0 +1,14 @@
<?php
// +----------------------------------------------------------------------
// | 控制台配置
// +----------------------------------------------------------------------
return [
// 指令定义
'commands' => [
'queue:work' => think\queue\command\Work::class,
'queue:listen' => think\queue\command\Listen::class,
'queue:Restart' => think\queue\command\Restart::class,
'task' => task\command\Task::class,
'worker:gateway' => app\worker\command\GatewayWorker::class
],
];

18
config/cookie.php

@ -0,0 +1,18 @@
<?php
// +----------------------------------------------------------------------
// | Cookie设置
// +----------------------------------------------------------------------
return [
// cookie 保存时间
'expire' => 0,
// cookie 保存路径
'path' => '/',
// cookie 有效域名
'domain' => '',
// cookie 启用安全传输
'secure' => false,
// httponly设置
'httponly' => false,
// 是否使用 setcookie
'setcookie' => true,
];

8
config/cron.php

@ -0,0 +1,8 @@
<?php
return [
'tasks' => [
\app\common\task\ClearMessage::class, //定时清理消息
\app\common\task\SetAtRead::class, //定时清理@消息
]
];

62
config/database.php

@ -0,0 +1,62 @@
<?php
return [
// 默认使用的数据库连接配置
'default' => env('database.driver', 'mysql'),
// 自定义时间查询规则
'time_query_rule' => [],
// 自动写入时间戳字段
// true为自动识别类型 false关闭
// 字符串则明确指定时间字段类型 支持 int timestamp datetime date
'auto_timestamp' => true,
// 时间字段取出后的默认时间格式
'datetime_format' => 'Y-m-d H:i:s',
// 数据库连接配置信息
'connections' => [
'mysql' => [
// 数据库类型
'type' => env('database.type', 'mysql'),
// 服务器地址
'hostname' => env('database.hostname', '127.0.0.1'),
// 数据库名
'database' => env('database.database', ''),
// 用户名
'username' => env('database.username', 'root'),
// 密码
'password' => env('database.password', ''),
// 端口
'hostport' => env('database.hostport', '3306'),
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => env('database.charset', 'utf8'),
// 数据库表前缀
'prefix' => env('database.prefix', ''),
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'deploy' => 0,
// 数据库读写是否分离 主从式有效
'rw_separate' => false,
// 读写分离后 主服务器数量
'master_num' => 1,
// 指定从服务器序号
'slave_no' => '',
// 是否严格检查字段是否存在
'fields_strict' => true,
// 是否需要断线重连
'break_reconnect' => false,
// 监听SQL
'trigger_sql' => env('app_debug', true),
// 开启字段缓存
'fields_cache' => false,
// 字段缓存路径
'schema_cache_path' => app()->getRuntimePath() . 'schema' . DIRECTORY_SEPARATOR,
],
// 更多的数据库配置信息
],
];

42
config/filesystem.php

@ -0,0 +1,42 @@
<?php
return [
// 默认磁盘
'default' => env('filesystem.driver', 'local'),
// 磁盘列表
'disks' => [
'local' => [
'type' => 'local',
'root' => app()->getRootPath() . 'public/storage',
],
// 更多的磁盘配置信息
'aliyun' => [
'type' => 'aliyun',
'accessId' => env('filesystem.aliyun_accessId',''),
'accessSecret' => env('filesystem.aliyun_accessSecret',''),
'bucket' => env('filesystem.aliyun_bucket',''),
'endpoint' => env('filesystem.aliyun_endpoint',''),
'url' => env('filesystem.aliyun_url',''),//不要斜杠结尾,此处为URL地址域名。
],
'qiniu' => [
'type' => 'qiniu',
'accessKey' => env('filesystem.qiniu_accessKey',''),
'secretKey' => env('filesystem.qiniu_secretKey',''),
'bucket' => env('filesystem.qiniu_bucket',''),
'url' => env('filesystem.qiniu_url',''),//不要斜杠结尾,此处为URL地址域名。
],
'qcloud' => [
'type' => 'qcloud',
'region' => env('filesystem.qcloud_region',''),//bucket 所属区域 英文
'appId' => env('filesystem.qcloud_appId',''), // 域名中数字部分
'secretId' => env('filesystem.qcloud_secretId',''),
'secretKey' => env('filesystem.qcloud_secretKey',''),
'bucket' => env('filesystem.qcloud_bucket',''),
'timeout' => 60,
'connect_timeout' => 60,
'cdn' => env('filesystem.qcloud_cdn',''),
'scheme' => 'https',
'read_from_cdn' => false,
]
],
];

33
config/gateway.php

@ -0,0 +1,33 @@
<?php
return [
// 扩展自身需要的配置
'protocol' => 'websocket', // 协议 支持 tcp udp unix http websocket text
'host' => '0.0.0.0', // 监听地址
'port' => env('worker_port',8282), // 监听端口
'socket' => '', // 完整监听地址
'context' => [], // socket 上下文选项
'register_deploy' => env('worker_register_deploy',true), // 是否需要部署register
'businessWorker_deploy' => true, // 是否需要部署businessWorker
'gateway_deploy' => true, // 是否需要部署gateway
// Register配置
'registerAddress' => env('worker_register_address','127.0.0.1:1236'),
// Gateway配置
'name' => env('worker_name','pushGateWay'),
'count' => env('worker_count',1),
'lanIp' => env('worker_lan_ip','127.0.0.1'),
'startPort' => env('worker_start_port',2300),
'daemonize' => false,
'pingInterval' => 20,
'pingNotResponseLimit' => 0,
'pingData' => '{"type":"ping"}',
// BusinsessWorker配置
'businessWorker' => [
'name' => 'BusinessWorker',
'count' => 1,
'eventHandler' => 'app\worker\Events',
],
];

16
config/hashids.php

@ -0,0 +1,16 @@
<?php
/**
* tpAdmin [a web admin based ThinkPHP5]
*
* @author yuan1994 <tianpian0805@gmail.com>
* @link http://tpadmin.yuan1994.com/
* @copyright 2016 yuan1994 all rights reserved.
* @license http://www.apache.org/licenses/LICENSE-2.0
*/
return [
// Hashids 的配置项
'length' => 12, // 加密字符串长度
'salt' => 'raingads', // 加密盐值
'alphabet' => '', // 字符仓库,不填写默认为扩展里的字符仓库
];

21
config/jwt.php

@ -0,0 +1,21 @@
<?php
return [
'secret' => env('JWT_SECRET'),
//Asymmetric key
'public_key' => env('JWT_PUBLIC_KEY'),
'private_key' => env('JWT_PRIVATE_KEY'),
'password' => env('JWT_PASSWORD'),
//JWT time to live
'ttl' => env('JWT_TTL', 60),
//Refresh time to live
'refresh_ttl' => env('JWT_REFRESH_TTL', 20160),
//JWT hashing algorithm
'algo' => env('JWT_ALGO', 'HS256'),
//token获取方式,数组靠前值优先
'token_mode' => ['header', 'cookie', 'param'],
//黑名单后有效期
'blacklist_grace_period' => env('BLACKLIST_GRACE_PERIOD', 10),
'blacklist_storage' => thans\jwt\provider\storage\Tp5::class,
];

32
config/lang.php

@ -0,0 +1,32 @@
<?php
// +----------------------------------------------------------------------
// | 多语言设置
// +----------------------------------------------------------------------
return [
// 默认语言
'default_lang' => env('lang.default_lang', 'zh-cn'),
// 允许的语言列表
'allow_lang_list' => [],
// 多语言自动侦测变量名
'detect_var' => 'lang',
// 是否使用Cookie记录
'use_cookie' => true,
// 多语言cookie变量
'cookie_var' => 'think_lang',
// 扩展语言包
'extend_list' => [
'zh-cn' => [
app()->getBasePath() . 'lang/zh_cn.php',
],
'en-en' => [
app()->getBasePath() . 'lang/en_en.php',
],
],
// Accept-Language转义为对应语言包名称
'accept_language' => [
'zh-hans-cn' => 'zh-cn',
],
// 是否支持语言分组
'allow_group' => true,
];

45
config/log.php

@ -0,0 +1,45 @@
<?php
// +----------------------------------------------------------------------
// | 日志设置
// +----------------------------------------------------------------------
return [
// 默认日志记录通道
'default' => env('log.channel', 'file'),
// 日志记录级别
'level' => [],
// 日志类型记录的通道 ['error'=>'email',...]
'type_channel' => [],
// 关闭全局日志写入
'close' => false,
// 全局日志处理 支持闭包
'processor' => null,
// 日志通道列表
'channels' => [
'file' => [
// 日志记录方式
'type' => 'File',
// 日志保存目录
'path' => '',
// 单文件日志写入
'single' => false,
// 独立日志级别
'apart_level' => [],
// 最大日志文件数量
'max_files' => 0,
// 使用JSON格式记录
'json' => false,
// 日志处理
'processor' => null,
// 关闭通道日志写入
'close' => false,
// 日志输出格式化
'format' => '[%s][%s] %s',
// 是否实时写入
'realtime_write' => false,
],
// 其它日志通道配置
],
];

12
config/middleware.php

@ -0,0 +1,12 @@
<?php
// 中间件配置
return [
// 别名或分组
'alias' => [
'checkAuth'=>app\common\middleware\CheckAuth::class,
'manageAuth'=>app\common\middleware\ManageAuth::class,
'apiAuth'=>app\common\middleware\ApiAuth::class,
],
// 优先级设置,此数组中的中间件会按照数组中的顺序优先执行
'priority' => [],
];

8
config/oss.php

@ -0,0 +1,8 @@
<?php
return [
'accessKeyId'=>env('oss.accesskeyid', ''),
'accessKeySecret'=>env('oss.accesskeysecret', ''),
'endpoint'=>env('oss.endpoint', ''),
'bucket'=>env('oss.bucket', ''),
'ossUrl'=>env('oss.ossurl', '')
];

6
config/preview.php

@ -0,0 +1,6 @@
<?php
return [
'own'=>env('preview.own', ''),
'yzdcs'=>env('preview.yzdcs', ''),
'keycode'=>env('preview.keycode', ''),
];

39
config/queue.php

@ -0,0 +1,39 @@
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: yunwuxin <448901948@qq.com>
// +----------------------------------------------------------------------
return [
'default' => 'sync',
'connections' => [
'sync' => [
'type' => 'sync',
],
'database' => [
'type' => 'database',
'queue' => 'default',
'table' => 'jobs',
'connection' => null,
],
'redis' => [
'type' => 'redis',
'queue' => 'default',
'host' => '127.0.0.1',
'port' => 6379,
'password' => '',
'select' => 0,
'timeout' => 0,
'persistent' => false,
],
],
'failed' => [
'type' => 'none',
'table' => 'failed_jobs',
],
];

45
config/route.php

@ -0,0 +1,45 @@
<?php
// +----------------------------------------------------------------------
// | 路由设置
// +----------------------------------------------------------------------
return [
// pathinfo分隔符
'pathinfo_depr' => '/',
// URL伪静态后缀
'url_html_suffix' => 'html',
// URL普通方式参数 用于自动生成
'url_common_param' => true,
// 是否开启路由延迟解析
'url_lazy_route' => false,
// 是否强制使用路由
'url_route_must' => false,
// 合并路由规则
'route_rule_merge' => false,
// 路由是否完全匹配
'route_complete_match' => false,
// 访问控制器层名称
'controller_layer' => 'controller',
// 空控制器名
'empty_controller' => 'Error',
// 是否使用控制器后缀
'controller_suffix' => false,
// 默认的路由变量规则
'default_route_pattern' => '[\w\.]+',
// 是否开启请求缓存 true自动缓存 支持设置请求缓存规则
'request_cache_key' => false,
// 请求缓存有效期
'request_cache_expire' => null,
// 全局请求缓存排除规则
'request_cache_except' => [],
// 默认控制器名
'default_controller' => 'Index',
// 默认操作名
'default_action' => 'index',
// 操作方法后缀
'action_suffix' => '',
// 默认JSONP格式返回的处理方法
'default_jsonp_handler' => 'jsonpReturn',
// 默认JSONP处理方法
'var_jsonp_handler' => 'callback',
];

19
config/session.php

@ -0,0 +1,19 @@
<?php
// +----------------------------------------------------------------------
// | 会话设置
// +----------------------------------------------------------------------
return [
// session name
'name' => 'PHPSESSID',
// SESSION_ID的提交变量,解决flash上传跨域
'var_session_id' => '',
// 驱动方式 支持file cache
'type' => 'file',
// 存储连接标识 当type使用cache的时候有效
'store' => null,
// 过期时间
'expire' => 9*3600,
// 前缀
'prefix' => '',
];

159
config/sms.php

@ -0,0 +1,159 @@
<?php
// +----------------------------------------------------------------------
// | 胜家云 [ SingKa Cloud ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2020 https://www.singka.net All rights reserved.
// +----------------------------------------------------------------------
// | 宁波晟嘉网络科技有限公司
// +----------------------------------------------------------------------
// | Author: ShyComet <shycomet@qq.com>
// +----------------------------------------------------------------------
return [
'driver' => 'aliyun', // 驱动器
'aliyun' => [
'version' => '2017-05-25',
'host' => 'dysmsapi.aliyuncs.com',
'scheme' => 'http',
'region_id' => 'cn-hangzhou',
'access_key' => '',
'access_secret' => '',
'sign_name' => '',
'actions' => [
'register' => [
'actions_name' => '注册验证',
'template_id' => 'SMS_53115055',
],
'login' => [
'actions_name' => '登录验证',
'template_id' => 'SMS_53115057',
],
'changePassword' => [
'actions_name' => '修改密码',
'template_id' => 'SMS_53115053',
],
'changeUserinfo' => [
'actions_name' => '变更信息',
'template_id' => 'SMS_53115052',
],
],
],
'ucloud' => [
'public_key' => '',
'private_key' => '',
'project_id' => '',
'base_url' => 'https://api.ucloud.cn',
'sign_name' => '',
'actions' => [
'register' => [
'actions_name' => '注册验证',
'template_id' => 'UTA1910164E29F4',
],
'login' => [
'actions_name' => '登录验证',
'template_id' => 'UTA1910164E29F4',
],
'changePassword' => [
'actions_name' => '修改密码',
'template_id' => 'UTA1910164E29F4',
],
'changeUserinfo' => [
'actions_name' => '变更信息',
'template_id' => 'UTA1910164E29F4',
],
],
],
'qcloud' => [
'appid' => '',
'appkey' => '',
'sign_name' => '',
'actions' => [
'register' => [
'actions_name' => '注册验证',
'template_id' => '566198',
],
'login' => [
'actions_name' => '登录验证',
'template_id' => '566197',
],
'changePassword' => [
'actions_name' => '修改密码',
'template_id' => '566199',
],
'changeUserinfo' => [
'actions_name' => '变更信息',
'template_id' => '566200',
],
],
],
'qiniu' => [
'AccessKey' => '',
'SecretKey' => '',
'actions' => [
'register' => [
'actions_name' => '注册验证',
'template_id' => '1246849772845797376',
],
'login' => [
'actions_name' => '登录验证',
'template_id' => '1246849654881001472',
],
'changePassword' => [
'actions_name' => '修改密码',
'template_id' => '1246849964902977536',
],
'changeUserinfo' => [
'actions_name' => '变更信息',
'template_id' => '1246849860733243392',
],
],
],
'upyun' => [
'id' => '',
'token' => '',
'apiurl' => '',
'actions' => [
'register' => [
'actions_name' => '注册验证',
'template_id' => '2591',
],
'login' => [
'actions_name' => '登录验证',
'template_id' => '2592',
],
'changePassword' => [
'actions_name' => '修改密码',
'template_id' => '2590',
],
'changeUserinfo' => [
'actions_name' => '变更信息',
'template_id' => '2589',
],
],
],
'huawei' => [
'url' => '',
'appKey' => '',
'appSecret' => '',
'sender' => '',
'signature' => '',
'statusCallback' => '',
'actions' => [
'register' => [
'actions_name' => '注册验证',
'template_id' => '2591',
],
'login' => [
'actions_name' => '登录验证',
'template_id' => '2592',
],
'changePassword' => [
'actions_name' => '修改密码',
'template_id' => '2590',
],
'changeUserinfo' => [
'actions_name' => '变更信息',
'template_id' => '2589',
],
],
]
];

10
config/trace.php

@ -0,0 +1,10 @@
<?php
// +----------------------------------------------------------------------
// | Trace设置 开启调试模式后有效
// +----------------------------------------------------------------------
return [
// 内置Html和Console两种方式 支持扩展
'type' => 'Html',
// 读取的日志通道名
'channel' => '',
];

45
config/version.php

@ -0,0 +1,45 @@
<?php
# app_name 应用名称,所有的安装包都是用该名称命名,不能用中文!!!!!!!!!!!!
# VERSION:移动端app版本信息
# RELEASE:根据该参数确定版本,版本比移动罐的版本大就会提示更新,苹果和ios通过这个检测
# UPDATE_TYPE :forcibly 强制更新, solicit弹窗确认更新, silent 静默更新
# UPDATE_INFO :更新说明,换行用\n
return [
'app_name'=>env('app.name', 'Raingad-IM'), //在.env中配置
'andriod' => [
'version' => env('app.version', '5.3.1'), //在.env中配置
'release' => env('app.release', '20241127'), //在.env中配置
'url' =>env('app.andriod_webclip',''),
'update_info' => '1.优化界面,消息操作更直观\n2.增加群聊管理标识\n3.增加视频封面以及比例自动计算\n4.修复若干BUG',
'update_type' => 'solicit',
],
'ios' => [
'version' => '5.2.2',
'release' => '20241118',
'url' => env('app.ios_webclip',''),
'update_info' => '暂无',
'update_type' => 'solicit',
],
'windows' => [
'version' => '5.5.2',
'release' => '20250107',
'url' => env('app.win_webclip',''),
'update_info' => '1.lemon-imui本地化,消息底部检测',
'update_type' => 'solicit',
],
'mac' => [
'version' => '4.0.0',
'release' => '20240323',
'url' => env('app.mac_webclip',''),
'update_info' => '1.修复了一些bug\n2.优化了一些功能',
'update_type' => 'solicit',
],
'serve' => [
'version' => '5.2.2',
'release' => '20241118',
'url' => '',
'update_info' => '1.增加聊天记录查看\n2.增加系统公告,移动端首页滚动提醒\n3.增加群聊支持单个人禁言,支持新成员查看历史聊天记录\n4.优化移动端输入框,解决ios低版本H5问题\n5.修复若干BUG',
'update_type' => 'solicit',
],
];

28
config/view.php

@ -0,0 +1,28 @@
<?php
// +----------------------------------------------------------------------
// | 模板设置
// +----------------------------------------------------------------------
return [
// 模板引擎类型使用Think
'type' => 'Think',
// 默认模板渲染规则 1 解析为小写+下划线 2 全部转换小写 3 保持操作方法
'auto_rule' => 1,
// 模板目录名
'view_dir_name' => 'view',
// 模板后缀
'view_suffix' => 'html',
// 模板文件名分隔符
'view_depr' => DIRECTORY_SEPARATOR,
// 模板引擎普通标签开始标记
'tpl_begin' => '{',
// 模板引擎普通标签结束标记
'tpl_end' => '}',
// 标签库标签开始标记
'taglib_begin' => '{',
// 标签库标签结束标记
'taglib_end' => '}',
'tpl_replace_string' => [
'__STATIC__'=>'/static',
]
];

7
public/404.html

@ -0,0 +1,7 @@
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>

1
public/assets/css/133.7f9367b6.css

@ -0,0 +1 @@
.error-wrapper{position:absolute;top:40%;left:50%;transform:translate(-50%,-50%)}.error-wrapper .error-content .pic-error{float:left;width:120%;overflow:hidden;opacity:0;animation-name:slideUp;animation-duration:.5s;animation-delay:.3s;animation-fill-mode:forwards}.error-wrapper .error-content .pic-error img{width:100%;height:100%}.error-wrapper .error-content .bullshit{position:relative;float:left;width:300px;padding:30px 0;overflow:hidden}.error-wrapper .error-content .bullshit-oops{margin-bottom:20px;font-size:32px;font-weight:700;line-height:40px;color:#175cff;opacity:0;animation-name:slideUp;animation-duration:.5s;animation-fill-mode:forwards}.error-wrapper .error-content .bullshit-headline{margin-bottom:10px;font-size:20px;font-weight:700;line-height:24px;color:#222;opacity:0;animation-name:slideUp;animation-duration:.5s;animation-delay:.1s;animation-fill-mode:forwards}.error-wrapper .error-content .bullshit-info{margin-bottom:30px;font-size:13px;line-height:21px;color:rgba(0,0,0,.65);opacity:0;animation-name:slideUp;animation-duration:.5s;animation-delay:.2s;animation-fill-mode:forwards}.error-wrapper .error-content .bullshit-return-home{display:block;float:left;width:110px;height:36px;font-size:14px;line-height:36px;color:#fff;text-align:center;cursor:pointer;background:#175cff;border-radius:100px;opacity:0;animation-name:slideUp;animation-duration:.5s;animation-delay:.3s;animation-fill-mode:forwards}@keyframes slideUp{0%{opacity:0;transform:translateY(60px)}to{opacity:1;transform:translateY(0)}}

1
public/assets/css/173.fc941ab9.css

@ -0,0 +1 @@
.group-box[data-v-79495ffc]{display:flex;flex-direction:column;height:calc(100vh - 104px);background:#fff;border:1px solid #e6e6e6}.group-box .group-box-header[data-v-79495ffc]{display:flex;justify-content:space-between;align-items:center;padding:0 15px;height:60px;border-bottom:1px solid #e6e6e6}.group-box .group-box-list[data-v-79495ffc]{flex:1;overflow:auto}.group-box .group-box-page[data-v-79495ffc]{padding-top:15px;height:48px}.chat-item[data-v-79495ffc]{display:flex;align-items:center;padding:10px;cursor:pointer}.chat-item.active[data-v-79495ffc],.chat-item[data-v-79495ffc]:hover{background:#f5f5f5}.chat-item .chat-avatar[data-v-79495ffc]{margin-right:10px}.chat-item .chat-avatar img[data-v-79495ffc]{width:44px;height:44px;border-radius:50%}.chat-item .chat-content[data-v-79495ffc]{flex-grow:1;display:flex;flex-direction:column}.chat-item .chat-content .chat-message[data-v-79495ffc]{margin-top:5px}.chat-item .chat-content .chat-name[data-v-79495ffc]{font-weight:700;margin-right:10px}.chat-item .chat-time[data-v-79495ffc]{font-size:12px;color:#999}.group-user-box[data-v-79495ffc]{border-left:none}.member-list[data-v-79495ffc]{display:flex;justify-content:flex-start;flex-wrap:wrap;padding:20px 0 20px 20px}.member-list .member-item[data-v-79495ffc]{display:flex;align-items:center;flex-wrap:wrap;padding:10px;width:200px;border:1px solid #eee;border-radius:8px;margin-right:20px;margin-bottom:20px}.member-list .member-item[data-v-79495ffc]:last-child{margin-right:0}.member-list .member-item .member-avatar[data-v-79495ffc]{margin-right:10px}.member-list .member-item .member-avatar img[data-v-79495ffc]{width:44px;height:44px;border-radius:50%}.member-list .member-item .member-content[data-v-79495ffc]{flex-grow:1;display:flex;justify-content:space-between}.member-list .member-item .member-content .member-header[data-v-79495ffc]{display:flex;align-items:flex-start;flex-direction:column}.member-list .member-item .member-content .member-header .member-name[data-v-79495ffc]{font-weight:700;margin-right:10px}.member-list .member-item .member-content .member-header .member-role[data-v-79495ffc]{font-size:12px;color:#999}.member-list .member-item .member-content .member-actions[data-v-79495ffc]{display:flex;justify-content:flex-end}.mt-3[data-v-79495ffc]{margin-top:3px}[data-v-79495ffc] .el-card__body{padding:0!important}

1
public/assets/css/567.74d1a927.css

@ -0,0 +1 @@
.main-file-item{height:calc(100vh - 102px)}

1
public/assets/css/585.8fcf2825.css

@ -0,0 +1 @@
.item-background p[data-v-3f58b2b1]{color:#999;line-height:1.8}.welcome .logo[data-v-3f58b2b1]{text-align:center}.welcome .logo img[data-v-3f58b2b1]{vertical-align:bottom;width:80px;height:80px;margin-bottom:20px}.welcome .logo h2[data-v-3f58b2b1]{font-size:24px;font-weight:400;display:flex;align-items:center;justify-content:center}.tips[data-v-3f58b2b1]{margin-top:20px}.tips-item[data-v-3f58b2b1]{display:flex;align-items:center;justify-content:center;padding-bottom:10px}.tips-item-icon[data-v-3f58b2b1]{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-size:18px;margin-right:20px;color:var(--el-color-primary);background:hsla(0,0%,71%,.1)}.tips-item-message[data-v-3f58b2b1]{flex:1;font-size:14px}.actions[data-v-3f58b2b1]{text-align:center;margin:20px 0 20px 0}.stop-task[data-v-3f58b2b1]:hover{color:#f56c6c}.start-task[data-v-3f58b2b1]{color:#409eff}.task-name[data-v-3f58b2b1]{font-weight:600}.task-log[data-v-3f58b2b1]{background:#000;color:#fff;white-space:break-spaces;letter-spacing:1px}

1
public/assets/css/687.d8d9e482.css

File diff suppressed because one or more lines are too long

1
public/assets/css/789.62ab164a.css

@ -0,0 +1 @@
.avater-components .el-avatar--square{border-radius:8px}.avatar{height:24px}.logo-center[data-v-1956f8c4]{display:inline-block}.user-img[data-v-1956f8c4]{margin-right:8px;vertical-align:middle}.search-lists[data-v-1956f8c4]{padding:5px 0;height:200px;overflow:auto}.colleagues-list[data-v-1956f8c4]{padding:5px 0;display:block;margin-left:0;display:flex!important;align-items:center!important;align-content:center}.xh-user[data-v-1956f8c4]{color:#333;font-size:12px}.xh-user__hd[data-v-1956f8c4]{padding:0 15px;height:40px;line-height:40px;border-bottom:1px solid #c2c2c2}.xh-user__bd[data-v-1956f8c4]{padding:10px 12px}.xh-user__ft[data-v-1956f8c4]{padding:5px 12px;background:#f7f8fa;border-top:1px solid #c2c2c2}.xh-user__ft .el-button[data-v-1956f8c4]{font-size:12px}.select-info[data-v-1956f8c4]{display:inline-block;width:calc(100% - 30px)}.select-info--num[data-v-1956f8c4]{color:#175cff}.el-checkbox-group[data-v-1956f8c4]{overflow-x:hidden}.el-checkbox[data-v-1956f8c4] .el-checkbox__label{color:#333;display:flex;align-items:center;margin-right:10px}.all-check[data-v-1956f8c4]{padding:5px 0;display:flex;align-items:center}.search-input[data-v-1956f8c4] .el-input__inner{background-color:#f4f4f4;border:none}.wk-user-select[data-v-f3dcf9b2]{box-sizing:border-box;height:32px;position:relative;border-radius:4px;font-size:13px;background-color:#fff;border:1px solid #e6e6e6;color:#333;padding:0 20px 0 5px;cursor:pointer}.wk-user-select .user-item[data-v-f3dcf9b2]{padding:3px 15px 3px 5px;background-color:#f3f7ff;border-radius:4px;margin:3px;max-width:80px;position:relative}.wk-user-select .user-item.is-hide[data-v-f3dcf9b2]{background-color:#f2f2f2;color:#999}.wk-user-select .user-placeholder[data-v-f3dcf9b2]{color:#ddd;line-height:32px;cursor:pointer}.wk-user-select .delete-icon[data-v-f3dcf9b2]{color:#999;cursor:pointer;position:absolute;top:6px;right:2px}.wk-user-select .delete-icon[data-v-f3dcf9b2]:hover{color:#175cff}.wk-user-select[data-v-f3dcf9b2]:hover{border-color:#c0c4cc}.wk-user-select.is_disabled[data-v-f3dcf9b2]{background-color:#f5f7fa;border-color:#e4e7ed;cursor:not-allowed}.wk-user-select.is_disabled .user-item[data-v-f3dcf9b2]{background-color:rgba(240,244,248,.918);color:#c0c4cc;cursor:not-allowed}.wk-user-select.is_disabled .delete-icon[data-v-f3dcf9b2],.wk-user-select.is_disabled .user-placeholder[data-v-f3dcf9b2]{color:#c0c4cc;cursor:not-allowed}.wk-user-select.is_valid[data-v-f3dcf9b2]:hover{border-color:#c0c4cc}.wk-user-select.is_focus[data-v-f3dcf9b2]{border-color:#175cff!important}.el-select__tags[data-v-f3dcf9b2]{padding-right:30px}.el-icon-more[data-v-f3dcf9b2]{position:absolute;top:3px;right:20px;padding:6px 10px;font-size:12px;background-color:#f3f7ff;color:#666;border-radius:4px}.el-icon-more[data-v-f3dcf9b2]:hover{background-color:#175cff;color:#fff}.el-icon-arrow-up[data-v-f3dcf9b2]{position:absolute;top:calc(50% - 7px);right:5px;color:#c0c4cc;font-size:14px;transition:transform .3s;transform:rotate(180deg);cursor:pointer}.el-icon-arrow-up.is-reverse[data-v-f3dcf9b2]{transform:rotate(0deg)}[data-v-5a260d74] .avatar-uploader .el-upload{border:1px dashed #d9d9d9;border-radius:6px;cursor:pointer;position:relative;overflow:hidden}[data-v-5a260d74] .avatar-uploader .el-upload:hover{border-color:#409eff}[data-v-5a260d74] .avatar-uploader-icon{font-size:28px;color:#8c939d;width:120px;height:120px;line-height:120px;text-align:center}.avatar[data-v-5a260d74]{width:120px;height:120px;display:block}

1
public/assets/css/982.f6ad2033.css

File diff suppressed because one or more lines are too long

10
public/assets/css/app.c65eb857.css

File diff suppressed because one or more lines are too long

BIN
public/assets/fonts/element-icons.f1a45d74.ttf

Binary file not shown.

BIN
public/assets/fonts/element-icons.ff18efd1.woff

Binary file not shown.

BIN
public/assets/img/404.42feab21.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
public/assets/img/h5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

BIN
public/assets/img/invite.108c2fc8.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
public/assets/img/login-background.4d69904c.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 312 KiB

BIN
public/assets/img/logo.e8099414.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
public/assets/img/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
public/assets/img/user-card-bg.f076172d.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

1
public/assets/js/133.3a1dfa9e.js

@ -0,0 +1 @@
"use strict";(self["webpackChunkRaingad_IM"]=self["webpackChunkRaingad_IM"]||[]).push([[133],{4133:function(s,t,a){a.r(t),a.d(t,{default:function(){return c}});var l=function(){var s=this,t=s._self._c;return t("div",{staticClass:"error-wrapper"},[t("div",{staticClass:"error-content"},[t("el-row",{attrs:{gutter:15}},[t("el-col",{attrs:{xs:24,sm:24,md:12,lg:12,xl:12}},[t("div",{staticClass:"pic-error"},[t("img",{attrs:{src:a(5456),alt:"401"}})])]),t("el-col",{attrs:{xs:24,sm:24,md:12,lg:12,xl:12}},[t("div",{staticClass:"bullshit"},[t("div",{staticClass:"bullshit-oops"},[s._v("抱歉!")]),t("div",{staticClass:"bullshit-headline"},[s._v(s._s(s.msg))]),t("div",{staticClass:"bullshit-info"},[s._v(s._s(s.des))]),t("a",{staticClass:"bullshit-return-home",attrs:{href:"#/"}},[s._v("返回首页")])])])],1)],1)])},e=[],i={name:"Page404",data(){return{msg:"当前页面不存在...",des:""}},mounted(){let s=this.$route.query;this.msg=s.msg,""==this.msg&&(this.des="请检查您输入的网址是否正确,或点击下面的按钮返回首页!")}},r=i,n=a(1001),u=(0,n.Z)(r,l,e,!1,null,null,null),c=u.exports},5456:function(s,t,a){s.exports=a.p+"assets/img/404.42feab21.png"}}]);

1
public/assets/js/173.9e08cf23.js

File diff suppressed because one or more lines are too long

1
public/assets/js/567.a6404721.js

@ -0,0 +1 @@
"use strict";(self["webpackChunkRaingad_IM"]=self["webpackChunkRaingad_IM"]||[]).push([[567],{7567:function(t,e,n){n.r(e),n.d(e,{default:function(){return d}});var i=function(){var t=this,e=t._self._c;return e("div",{staticClass:"pd-20 main-file-item"},[e("fileItems",{attrs:{isAll:1}})],1)},s=[],l=n(4773),a={components:{fileItems:l.Z},data(){return{}},methods:{openFolder(t){this.active=t.id}}},u=a,r=n(1001),c=(0,r.Z)(u,i,s,!1,null,null,null),d=c.exports}}]);

1
public/assets/js/585.dea7864f.js

File diff suppressed because one or more lines are too long

1
public/assets/js/647.d01223a0.js

File diff suppressed because one or more lines are too long

1
public/assets/js/687.70d7eca3.js

File diff suppressed because one or more lines are too long

11
public/assets/js/789.34f6ec0f.js

File diff suppressed because one or more lines are too long

1
public/assets/js/982.0e09100e.js

File diff suppressed because one or more lines are too long

1
public/assets/js/app.85372e4e.js

File diff suppressed because one or more lines are too long

40
public/assets/js/chunk-vendors.3d6e6243.js

File diff suppressed because one or more lines are too long

2
public/assets/js/peerjs.min.js

File diff suppressed because one or more lines are too long

BIN
public/assets/media/calling.69742e4c.mp3

Binary file not shown.

BIN
public/assets/media/guaduan.c0b3124b.mp3

Binary file not shown.

BIN
public/assets/media/notify.3d49176d.mp3

Binary file not shown.

BIN
public/assets/media/notify.7668dd76.ogg

Binary file not shown.

BIN
public/assets/media/notify.e6953ff1.wav

Binary file not shown.

BIN
public/favicon.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

1
public/index.html

@ -0,0 +1 @@
<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>IM即时聊天</title><link rel="stylesheet" href="//at.alicdn.com/t/c/font_3565944_4mjwnqbwizx.css"><script src="./assets/js/peerjs.min.js"></script><script defer="defer" src="assets/js/chunk-vendors.3d6e6243.js"></script><script defer="defer" src="assets/js/app.85372e4e.js"></script><link href="assets/css/app.c65eb857.css" rel="stylesheet"></head><body><div id="app"></div></body></html>

32
public/index.php

@ -0,0 +1,32 @@
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2019 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
// [ 应用入口文件 ]
namespace think;
require __DIR__ . '/../vendor/autoload.php';
header('Access-Control-Allow-Origin:*');
// 响应类型
header('Access-Control-Allow-Methods:*');
// 响应头设置
header('Access-Control-Allow-Headers:x-requested-with,X_Requested_With,content-type,Authorization,clientId,sessionId,cid,X-Im-AppId,X-Im-Sign,X-Im-TimeStamp,Accept-Language');
// 定义配置文件目录和应用目录同级
define('CONF_PATH', __DIR__.'/../config/');
define('PUBLIC_PATH', __DIR__.'/');
define('PACKAGE_PATH', __DIR__.'/unpackage/');
// 执行HTTP应用并响应
$http = (new App())->http;
$response = $http->run();
$response->send();
$http->end($response);

2
public/robots.txt

@ -0,0 +1,2 @@
User-agent: *
Disallow:

19
public/router.php

@ -0,0 +1,19 @@
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2019 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
// $Id$
if (is_file($_SERVER["DOCUMENT_ROOT"] . $_SERVER["SCRIPT_NAME"])) {
return false;
} else {
$_SERVER["SCRIPT_FILENAME"] = __DIR__ . '/index.php';
require __DIR__ . "/index.php";
}

22
public/sql/5.1.2 升 5.2 copy.sql

@ -0,0 +1,22 @@
-- 升级说明
-- 增加群聊禁言到期时间,好友上限,群聊上限。
-- 更新最新的版本需要更新一下配置文件,进入后台重新保存一下基础设置和聊天设置,否则配置信息不完整
CREATE TABLE `yu_emoji` (
`id` int(11) NOT NULL,
`user_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户id,0为系统',
`type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '类型',
`name` varchar(255) DEFAULT NULL COMMENT '名称',
`src` varchar(255) DEFAULT NULL COMMENT '链接',
`create_time` int(11) NOT NULL DEFAULT '0',
`update_time` int(11) NOT NULL DEFAULT '0',
`delete_time` int(11) NOT NULL DEFAULT '0',
`status` tinyint(1) NOT NULL DEFAULT '1'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='表情表';
--
-- 表的索引 `yu_emoji`
--
ALTER TABLE `yu_emoji`
ADD PRIMARY KEY (`id`);

8
public/sql/5.1.2 升 5.2.sql

@ -0,0 +1,8 @@
-- 升级说明
-- 增加群聊禁言到期时间,好友上限,群聊上限。
-- 更新最新的版本需要更新一下配置文件,进入后台重新保存一下基础设置和聊天设置,否则配置信息不完整
ALTER TABLE `yu_group_user` ADD `no_speak_time` INT(11) NOT NULL DEFAULT '0' COMMENT '禁言到期时间' AFTER `is_top`;
ALTER TABLE `yu_user` ADD `friend_limit` INT(11) NOT NULL DEFAULT '0' COMMENT '好友上限' AFTER `setting`;
ALTER TABLE `yu_user` ADD `group_limit` INT(11) NOT NULL DEFAULT '0' COMMENT '群聊上限' AFTER `setting`;

23
public/sql/5.2 升 5.3.sql

@ -0,0 +1,23 @@
-- 升级说明
-- 增加群聊禁言到期时间,好友上限,群聊上限。
-- 更新最新的版本需要更新一下配置文件,进入后台重新保存一下基础设置和聊天设置,否则配置信息不完整
CREATE TABLE `yu_emoji` (
`id` int(11) NOT NULL,
`user_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户id,0为系统',
`type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '类型',
`name` varchar(255) DEFAULT NULL COMMENT '名称',
`src` varchar(255) DEFAULT NULL COMMENT '链接',
`file_id` INT(11) NOT NULL DEFAULT '0' COMMENT '文件id',
`create_time` int(11) NOT NULL DEFAULT '0',
`update_time` int(11) NOT NULL DEFAULT '0',
`delete_time` int(11) NOT NULL DEFAULT '0',
`status` tinyint(1) NOT NULL DEFAULT '1'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='表情表';
--
-- 表的索引 `yu_emoji`
--
ALTER TABLE `yu_emoji`
ADD PRIMARY KEY (`id`);

337
public/sql/database.sql

@ -0,0 +1,337 @@
--
-- 数据库: `im`
--
-- --------------------------------------------------------
--
-- 表的结构 `yu_config`
--
CREATE TABLE `yu_config` (
`id` int(11) NOT NULL,
`name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`value` json DEFAULT NULL,
`create_user` int(11) NOT NULL DEFAULT '0',
`update_time` int(11) NOT NULL DEFAULT '0',
`create_time` int(11) NOT NULL DEFAULT '0',
`remark` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`status` tinyint(1) NOT NULL DEFAULT '1'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='配置表';
--
-- 转存表中的数据 `yu_config`
--
INSERT INTO `yu_config` (`id`, `name`, `value`, `create_user`, `update_time`, `create_time`, `remark`, `status`) VALUES
(1, 'sysInfo', '{\"logo\": \"\", \"name\": \"Raingad-IM\", \"state\": \"1\", \"regauth\": \"0\", \"regtype\": \"2\", \"runMode\": \"1\", \"ipregion\": \"1\", \"closeTips\": \"系统升级维护中,请稍候再试!\", \"description\": \"一款基于vue2.0的即时通信系统\", \"registerInterval\": \"600\"}', 0, 1688462862, 1688462862, NULL, 1),
(2, 'chatInfo', '{\"stun\": \"\", \"online\": \"1\", \"webrtc\": \"0\", \"dbDelMsg\": \"1\", \"msgClear\": \"1\", \"redoTime\": \"120\", \"stunPass\": \"\", \"stunUser\": \"\", \"groupChat\": \"1\", \"simpleChat\": \"1\", \"autoAddUser\": {\"status\": \"0\", \"welcome\": \"你好啊,欢迎来到Raingad-IM\", \"user_ids\": [\"1\", \"2\", \"3\"], \"user_items\": [\"1\", \"2\", \"3\"]}, \"msgClearDay\": \"30\", \"autoAddGroup\": {\"name\": \"春游交流\", \"status\": \"0\", \"userMax\": \"100\", \"owner_uid\": \"1\", \"owner_info\": [{\"id\": \"1\", \"avatar\": \"", \"user_id\": \"1\", \"realname\": \"管理员\"}]}, \"groupUserMax\": \"0\", \"sendInterval\": \"0\"}', 0, 1688463300, 1688463300, NULL, 1),
(3, 'smtp', '{\"addr\": \"xiekunyu@sss.com\", \"host\": \"smtp.exmail.qq.com\", \"pass\": \"ssss\", \"port\": \"465\", \"sign\": \"Raingad-IM\", \"security\": \"ssl\"}', 0, 1688464072, 1688464072, NULL, 1),
(4, 'fileUpload', '{\"disk\": \"local\", \"size\": \"50\", \"qiniu\": {\"url\": \"\", \"bucket\": \"\", \"accessKey\": \"\", \"secretKey\": \"\"}, \"aliyun\": {\"url\": \"\", \"bucket\": \"\", \"accessId\": \"\", \"endpoint\": \"\", \"accessSecret\": \"\"}, \"qcloud\": {\"cdn\": \"\", \"appId\": \"\", \"bucket\": \"\", \"region\": \"\", \"secretId\": \"\", \"secretKey\": \"\"}, \"fileExt\": [\"jpg\", \"jpeg\", \"ico\", \"webp\", \"bmp\", \"gif\", \"pdf\", \"mp3\", \"wav\", \"wmv\", \"amr\", \"mp4\", \"3gp\", \"avi\", \"m2v\", \"mkv\", \"mov\", \"ppt\", \"pptx\", \"doc\", \"docx\", \"xls\", \"xlsx\", \"txt\", \"md\", \"hevc\", \"png\", \"KLKV\"], \"preview\": \"\"}', 0, 1688464130, 1688464130, NULL, 1),
(5, 'compass', '{\"list\": [], \"mode\": 1, \"status\": 0}', 0, 1688464130, 1688464130, NULL, 1);
-- --------------------------------------------------------
--
-- 表的结构 `yu_file`
--
CREATE TABLE `yu_file` (
`file_id` int(11) NOT NULL,
`cate` tinyint(1) NOT NULL DEFAULT '9' COMMENT '文件分类',
`file_type` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '文件类型',
`parent_id` int(11) NOT NULL DEFAULT '0' COMMENT '父Id',
`name` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '名称',
`src` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '链接',
`size` int(11) DEFAULT '0' COMMENT '大小',
`ext` varchar(16) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '文件后缀',
`md5` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'md5',
`user_id` int(11) NOT NULL DEFAULT '0' COMMENT '创建人',
`create_time` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`update_time` int(11) NOT NULL DEFAULT '0' COMMENT '更新时间',
`delete_time` int(11) NOT NULL DEFAULT '0' COMMENT '删除时间',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态',
`is_lock` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否锁定'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='文件库';
-- --------------------------------------------------------
--
-- 表的结构 `yu_friend`
--
CREATE TABLE `yu_friend` (
`friend_id` int(11) NOT NULL,
`friend_user_id` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '好友ID',
`nickname` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '好友备注',
`is_invite` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否为邀请方',
`is_top` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否置顶',
`is_notice` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否消息提醒',
`create_user` int(11) NOT NULL DEFAULT '0',
`update_time` int(11) NOT NULL DEFAULT '0',
`create_time` int(11) NOT NULL DEFAULT '0',
`delete_time` int(11) NOT NULL DEFAULT '0',
`remark` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '申请备注',
`status` tinyint(1) NOT NULL DEFAULT '1'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='联系人置顶表';
-- --------------------------------------------------------
--
-- 表的结构 `yu_group`
--
CREATE TABLE `yu_group` (
`group_id` int(11) NOT NULL,
`name` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '团队名称',
`name_py` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '团队的拼音',
`avatar` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '群聊头像',
`level` tinyint(1) NOT NULL DEFAULT '1' COMMENT '等级',
`create_user` int(11) NOT NULL DEFAULT '0' COMMENT '创建人',
`create_time` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`owner_id` int(11) NOT NULL DEFAULT '0' COMMENT '拥有者',
`is_public` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否公开',
`notice` mediumtext COLLATE utf8mb4_unicode_ci COMMENT '公告',
`setting` mediumtext COLLATE utf8mb4_unicode_ci COMMENT '设置',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态',
`delete_time` int(11) NOT NULL DEFAULT '0' COMMENT '删除时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- --------------------------------------------------------
--
-- 表的结构 `yu_group_user`
--
CREATE TABLE `yu_group_user` (
`id` int(11) NOT NULL,
`group_id` int(11) NOT NULL DEFAULT '0' COMMENT '团队Id',
`user_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户Id',
`role` tinyint(1) NOT NULL DEFAULT '2' COMMENT '角色 1拥有者,2管理员,3成员',
`invite_id` int(11) NOT NULL DEFAULT '0' COMMENT '邀请人',
`create_time` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`unread` int(11) NOT NULL DEFAULT '0' COMMENT '群未读消息',
`is_notice` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1是否提醒',
`is_top` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否置顶',
`no_speak_time` int(11) NOT NULL DEFAULT '0' COMMENT '禁言到期时间',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态 0 ,未同意邀请,1,同意',
`delete_time` int(11) NOT NULL DEFAULT '0' COMMENT '删除时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- --------------------------------------------------------
--
-- 表的结构 `yu_message`
--
CREATE TABLE `yu_message` (
`msg_id` int(11) NOT NULL,
`id` varchar(36) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '消息id',
`from_user` int(11) NOT NULL DEFAULT '0' COMMENT '发送者',
`to_user` int(11) NOT NULL DEFAULT '0' COMMENT '接受收者',
`content` text COLLATE utf8mb4_unicode_ci COMMENT '消息内容,如果为文件或图片就是url',
`chat_identify` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '标识 :a与b聊天,b与a聊天。记录 a-b',
`type` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'text' COMMENT '消息类型:text、file、image...',
`is_group` tinyint(1) NOT NULL DEFAULT '0' COMMENT '群聊消息',
`is_read` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否阅读',
`is_last` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否是最后一条消息',
`create_time` int(13) NOT NULL DEFAULT '0' COMMENT '发送时间',
`is_undo` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否撤回',
`at` text COLLATE utf8mb4_unicode_ci COMMENT '提醒某人',
`pid` int(11) DEFAULT '0' COMMENT '引用id',
`file_id` int(11) NOT NULL DEFAULT '0' COMMENT '文件id',
`file_cate` tinyint(1) NOT NULL DEFAULT '0' COMMENT '文件类型',
`file_size` int(11) NOT NULL DEFAULT '0' COMMENT '文件大小',
`file_name` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '文件名称',
`extends` json DEFAULT NULL COMMENT '消息扩展内容',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态',
`del_user` text COLLATE utf8mb4_unicode_ci COMMENT '已删除成员'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- --------------------------------------------------------
--
-- 表的结构 `yu_emoji`
--
CREATE TABLE `yu_emoji` (
`id` int(11) NOT NULL,
`user_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户id,0为系统',
`type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '类型',
`name` varchar(255) DEFAULT NULL COMMENT '名称',
`src` varchar(255) DEFAULT NULL COMMENT '链接',
`file_id` INT(11) NOT NULL DEFAULT '0' COMMENT '文件id',
`create_time` int(11) NOT NULL DEFAULT '0',
`update_time` int(11) NOT NULL DEFAULT '0',
`delete_time` int(11) NOT NULL DEFAULT '0',
`status` tinyint(1) NOT NULL DEFAULT '1'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='表情表';
--
-- 表的结构 `yu_user`
--
CREATE TABLE `yu_user` (
`user_id` int(11) NOT NULL,
`account` char(32) COLLATE utf8mb4_unicode_ci NOT NULL,
`realname` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`password` char(32) COLLATE utf8mb4_unicode_ci NOT NULL,
`salt` varchar(4) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '加密盐',
`avatar` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '头像',
`email` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '电子邮箱',
`sex` tinyint(1) NOT NULL DEFAULT '2' COMMENT '性别,0女,1男,2未知',
`role` tinyint(1) NOT NULL DEFAULT '0' COMMENT '角色,0无角色,1超管,2普管',
`motto` text COLLATE utf8mb4_unicode_ci COMMENT '个性签名',
`remark` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
`name_py` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '名字的拼音',
`cs_uid` int(11) NOT NULL DEFAULT '0' COMMENT '客服ID',
`setting` json DEFAULT NULL COMMENT '用户设置',
`friend_limit` int(11) NOT NULL DEFAULT '0' COMMENT '好友上限',
`group_limit` int(11) NOT NULL DEFAULT '0' COMMENT '群聊上限',
`create_time` int(11) UNSIGNED NOT NULL COMMENT '创建时间',
`update_time` int(11) UNSIGNED DEFAULT NULL,
`login_count` mediumint(8) UNSIGNED DEFAULT '0' COMMENT '登录次数',
`is_auth` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否认证',
`last_login_time` int(11) UNSIGNED DEFAULT '0' COMMENT '最后登录时间',
`last_login_ip` char(15) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '最后登录Ip\n',
`register_ip` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '注册IP',
`delete_time` int(11) UNSIGNED NOT NULL DEFAULT '0',
`status` tinyint(1) UNSIGNED DEFAULT '1'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=COMPACT;
--
-- 转存表中的数据 `yu_user`
--
INSERT INTO `yu_user` (`user_id`, `account`, `realname`, `password`, `salt`, `avatar`, `email`, `sex`, `role`, `motto`, `remark`, `name_py`, `cs_uid`, `setting`, `friend_limit`, `group_limit`, `create_time`, `update_time`, `login_count`, `is_auth`, `last_login_time`, `last_login_ip`, `register_ip`, `delete_time`, `status`) VALUES
(1, 'administrator', '管理员', '2cb4ecb7fd5295685e275edc7d44e02e', 'srww', NULL, 'service@kais.com', 1, 1, NULL, '', 'guanliyuan', 0, '{\"theme\": \"default\", \"isVoice\": \"true\", \"sendKey\": \"1\", \"avatarCricle\": \"false\", \"hideMessageName\": \"false\", \"hideMessageTime\": \"false\"}', 0, 0, 1222907803, 1702625051, 300, 0, 1730704229, '171.212.121.209', NULL, 0, 1),
(2, '13800000002', '熊大', '2cb4ecb7fd5295685e275edc7d44e02e', 'srww', NULL, 'lllll@bchn', 2, 0, '我是测试', '', 'xiongda', 0, '{\"theme\": \"default\", \"isVoice\": \"true\", \"sendKey\": \"1\", \"avatarCricle\": \"true\", \"hideMessageName\": \"true\", \"hideMessageTime\": \"true\"}', 0, 0, 1555341865, 1730171777, 14886, 0, 1730704870, '125.80.141.99', NULL, 0, 1),
(3, '13800000003', '熊二', '2cb4ecb7fd5295685e275edc7d44e02e', 'srww', NULL, '12345@qq.com', 0, 0, '', '', 'xionger', 0, '{\"theme\": \"blue\", \"isVoice\": \"true\", \"sendKey\": \"1\", \"avatarCricle\": \"false\", \"hideMessageName\": \"false\", \"hideMessageTime\": \"false\"}', 0, 0, 1557933999, 1728161315, 1217, 0, 1730697701, '103.121.164.134', NULL, 0, 1),
(4, '13800000004', '喜洋洋', '2cb4ecb7fd5295685e275edc7d44e02e', 'srww', NULL, 'xiyangyang@qq.com', 1, 0, '', '', 'xiyangyang', 0, '{\"theme\": \"blue\", \"isVoice\": \"true\", \"sendKey\": \"1\", \"avatarCricle\": \"true\", \"hideMessageName\": \"true\", \"hideMessageTime\": \"true\"}', 0, 0, 1604587165, 1730142085, 834, 0, 1730643800, '180.91.180.120', NULL, 0, 1),
(5, '13800000005', '灰太狼', '2cb4ecb7fd5295685e275edc7d44e02e', 'srww', NULL, 'huitailang@qq.com', 1, 0, NULL, '', 'huitailang', 0, '{\"theme\": \"default\", \"isVoice\": \"true\", \"sendKey\": \"1\", \"avatarCricle\": \"true\", \"hideMessageName\": \"true\", \"hideMessageTime\": \"true\"}', 0, 0, 1604587246, 1711360067, 859, 0, 1730692491, '1.199.39.24', NULL, 0, 1),
(6, '13800000006', '奥特曼', '2cb4ecb7fd5295685e275edc7d44e02e', 'srww', NULL, 'aoteman@qq.com', 1, 0, '', '', 'aoteman', 0, '{\"theme\": \"blue\", \"isVoice\": \"true\", \"sendKey\": \"1\", \"avatarCricle\": \"true\", \"hideMessageName\": \"true\", \"hideMessageTime\": \"false\"}', 0, 0, 1604587295, 1729431591, 824, 0, 1730688234, '120.224.39.54', NULL, 0, 1),
(7, '13800000007', '孙悟空', '2cb4ecb7fd5295685e275edc7d44e02e', 'srww', NULL, 'sunwukong@qq.com', 1, 0, '', '', 'sunwukong', 0, '{\"theme\": \"default\", \"isVoice\": \"true\", \"sendKey\": \"1\", \"avatarCricle\": \"false\", \"hideMessageName\": \"true\", \"hideMessageTime\": \"false\"}', 0, 0, 1604587347, 1728972288, 761, 0, 1730703214, '115.60.18.127', NULL, 0, 1),
(8, '13800000008', '猪八戒', '2cb4ecb7fd5295685e275edc7d44e02e', 'srww', NULL, 'zhubajie@qq.com', 1, 0, '', '', 'zhubajie', 0, '{\"theme\": \"default\", \"isVoice\": \"false\", \"sendKey\": \"1\", \"avatarCricle\": \"true\", \"hideMessageName\": \"false\", \"hideMessageTime\": \"true\"}', 0, 0, 1604587378, 1726480311, 894, 0, 1730705108, '120.211.148.44', NULL, 0, 1),
(9, '13800000009', '唐三藏', '2cb4ecb7fd5295685e275edc7d44e02e', 'srww', NULL, 'tangsanzang@qq.com', 0, 0, '', '', 'tangsanzang', 0, '{\"theme\": \"blue\", \"isVoice\": \"true\", \"sendKey\": \"1\", \"avatarCricle\": \"true\", \"hideMessageName\": \"false\", \"hideMessageTime\": \"false\"}', 0, 0, 1604587409, 1723078304, 1147, 0, 1730462811, '120.228.7.21', NULL, 0, 1),
(10, '13800000010', '沙悟净', '2cb4ecb7fd5295685e275edc7d44e02e', 'srww', NULL, 'sss', 2, 0, '', '', 'shawujing', 0, '{\"theme\": \"blue\", \"isVoice\": \"true\", \"sendKey\": \"1\", \"avatarCricle\": \"true\", \"hideMessageName\": \"true\", \"hideMessageTime\": \"false\"}', 0, 0, 1604587409, 1727523988, 818, 0, 1730689889, '120.224.39.54', NULL, 0, 1),
(11, '13800000011', '刘备', '2cb4ecb7fd5295685e275edc7d44e02e', 'srww', NULL, 'liubei@kaishanlaw.com', 1, 0, '', '', 'hongbaolai', 0, '{\"theme\": \"blue\", \"isVoice\": \"true\", \"sendKey\": \"2\", \"avatarCricle\": \"false\", \"hideMessageName\": \"false\", \"hideMessageTime\": \"false\"}', 0, 0, 1555341865, 1724836138, 861, 0, 1730703374, '115.60.18.127', NULL, 0, 1),
(12, '13800000012', '关羽', '2cb4ecb7fd5295685e275edc7d44e02e', 'srww', NULL, 'gggg', 1, 0, '', '', 'guanyu', 0, '{\"theme\": \"blue\", \"isVoice\": \"true\", \"sendKey\": \"1\", \"avatarCricle\": \"false\", \"hideMessageName\": \"false\", \"hideMessageTime\": \"false\"}', 0, 0, 1557933999, 1730285557, 781, 0, 1730686560, '120.224.39.54', NULL, 0, 1),
(13, '13800000013', '张飞', '2cb4ecb7fd5295685e275edc7d44e02e', 'srww', NULL, 'i', 1, 0, '', '', 'zhangfei', 0, '{\"theme\": \"default\", \"isVoice\": \"true\", \"sendKey\": \"1\", \"avatarCricle\": \"false\", \"hideMessageName\": \"false\", \"hideMessageTime\": \"false\"}', 0, 0, 1604587165, 1729275843, 641, 0, 1730702978, '115.60.18.127', NULL, 0, 1),
(14, '13800000014', '赵云', '2cb4ecb7fd5295685e275edc7d44e02e', 'srww', '', 'zhaoyun@qq.com', 1, 0, '', '', 'zhaoyun', 0, '{\"theme\": \"default\", \"isVoice\": \"true\", \"sendKey\": \"1\", \"avatarCricle\": \"true\", \"hideMessageName\": \"true\", \"hideMessageTime\": \"false\"}', 0, 0, 1604587246, 1730374373, 662, 0, 1730688783, '124.135.239.79', NULL, 0, 1),
(15, '13800000015', '曹操', '2cb4ecb7fd5295685e275edc7d44e02e', 'srww', NULL, 'caocao@qq.com', 1, 0, '', '', 'caocao', 0, '{\"theme\": \"blue\", \"isVoice\": \"true\", \"sendKey\": \"1\", \"avatarCricle\": \"true\", \"hideMessageName\": \"false\", \"hideMessageTime\": \"false\"}', 0, 0, 1604587295, 1720255912, 800, 0, 1730703843, '220.173.180.106', NULL, 0, 1),
(16, '13800000016', '司马懿', '2cb4ecb7fd5295685e275edc7d44e02e', 'srww', NULL, 'simayi@qq.com', 2, 0, '', '', 'simayi', 0, '{\"theme\": \"default\", \"isVoice\": \"true\", \"sendKey\": \"1\", \"avatarCricle\": \"true\", \"hideMessageName\": \"false\", \"hideMessageTime\": \"false\"}', 0, 0, 1604587347, 1711527030, 781, 0, 1730703600, '218.57.140.131', NULL, 0, 1),
(17, '13800000017', '孙权', '2cb4ecb7fd5295685e275edc7d44e02e', 'srww', NULL, 'sunquan@qq.com', 1, 0, 'fv', '', 'sunquan', 0, '{\"theme\": \"default\", \"isVoice\": \"true\", \"sendKey\": \"1\", \"avatarCricle\": \"true\", \"hideMessageName\": \"true\", \"hideMessageTime\": \"true\"}', 0, 0, 1604587378, 1714396067, 713, 0, 1730598894, '39.148.72.199', NULL, 0, 1),
(18, '13800000018', '周瑜', '2cb4ecb7fd5295685e275edc7d44e02e', 'srww', NULL, 'zhouyu@qq.com', 1, 0, '12121', '', 'zhouyu', 0, '{\"theme\": \"default\", \"isVoice\": \"true\", \"sendKey\": \"1\", \"avatarCricle\": \"true\", \"hideMessageName\": \"false\", \"hideMessageTime\": \"false\"}', 0, 0, 1604587409, 1714437700, 786, 0, 1730700668, '222.71.91.18', NULL, 0, 1),
(19, '13800000019', '诸葛亮', '2cb4ecb7fd5295685e275edc7d44e02e', 'srww', NULL, 'zhugeliang@qq.com', 0, 0, '', '', 'zhugeliang', 0, '{\"theme\": \"blue\", \"isVoice\": \"true\", \"sendKey\": \"1\", \"avatarCricle\": \"false\", \"hideMessageName\": \"false\", \"hideMessageTime\": \"false\"}', 0, 0, 1604587378, 1730705058, 883, 0, 1730688482, '222.212.4.43', NULL, 0, 1),
(20, '13800000020', '吕布', '2cb4ecb7fd5295685e275edc7d44e02e', 'srww', NULL, 'lvbu@qq.com', 0, 0, '', '', 'lvbu', 0, '{\"theme\": \"default\", \"isVoice\": \"true\", \"sendKey\": \"1\", \"avatarCricle\": \"true\", \"hideMessageName\": \"false\", \"hideMessageTime\": \"false\"}', 0, 0, 1604587409, 1729935411, 1750, 0, 1730014387, '101.44.83.192', NULL, 0, 1);
--
-- 转储表的索引
--
--
-- 表的索引 `yu_config`
--
ALTER TABLE `yu_config`
ADD PRIMARY KEY (`id`);
--
-- 表的索引 `yu_file`
--
ALTER TABLE `yu_file`
ADD PRIMARY KEY (`file_id`);
--
-- 表的索引 `yu_friend`
--
ALTER TABLE `yu_friend`
ADD PRIMARY KEY (`friend_id`);
--
-- 表的索引 `yu_group`
--
ALTER TABLE `yu_group`
ADD PRIMARY KEY (`group_id`);
--
-- 表的索引 `yu_group_user`
--
ALTER TABLE `yu_group_user`
ADD PRIMARY KEY (`id`);
--
-- 表的索引 `yu_message`
--
ALTER TABLE `yu_message`
ADD PRIMARY KEY (`msg_id`);
--
-- 表的索引 `yu_emoji`
--
ALTER TABLE `yu_emoji`
ADD PRIMARY KEY (`id`);
--
-- 表的索引 `yu_user`
--
ALTER TABLE `yu_user`
ADD PRIMARY KEY (`user_id`),
ADD UNIQUE KEY `account` (`account`) USING BTREE,
ADD KEY `accountpassword` (`account`,`password`);
--
-- 在导出的表使用AUTO_INCREMENT
--
--
-- 使用表AUTO_INCREMENT `yu_config`
--
ALTER TABLE `yu_config`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;
--
-- 使用表AUTO_INCREMENT `yu_file`
--
ALTER TABLE `yu_file`
MODIFY `file_id` int(11) NOT NULL AUTO_INCREMENT;
--
-- 使用表AUTO_INCREMENT `yu_friend`
--
ALTER TABLE `yu_friend`
MODIFY `friend_id` int(11) NOT NULL AUTO_INCREMENT;
--
-- 使用表AUTO_INCREMENT `yu_group`
--
ALTER TABLE `yu_group`
MODIFY `group_id` int(11) NOT NULL AUTO_INCREMENT;
--
-- 使用表AUTO_INCREMENT `yu_group_user`
--
ALTER TABLE `yu_group_user`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- 使用表AUTO_INCREMENT `yu_message`
--
ALTER TABLE `yu_message`
MODIFY `msg_id` int(11) NOT NULL AUTO_INCREMENT;
--
-- 使用表AUTO_INCREMENT `yu_emoji`
--
ALTER TABLE `yu_emoji`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- 使用表AUTO_INCREMENT `yu_user`
--
ALTER TABLE `yu_user`
MODIFY `user_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=21;
COMMIT;

0
public/sql/test.txt

527
public/static/common/css/audio.css

@ -0,0 +1,527 @@
#yAudio{
width:600px;
margin:15% auto;
}
.yAudio {
display: flex;
width: 100%;
color: #333;
font-family: Arial, Helvetica, sans-serif;
overflow: hidden;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
line-height: normal;
position: relative;
--theme-color: #d72630;
}
.yAudio .yAudio-artword {
width: 160px;
height: 160px;
margin-right: 15px;
}
.yAudio .yAudio-artword .yAudio-figure {
display: block;
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
.yAudio .yAudio-artword .yAudio-pic {
display: block;
width: 100%;
height: 100%;
object-fit: cover;
}
.yAudio .yAudio-content {
flex: 1;
}
.yAudio .yAudio-content .yAudio-header {
display: flex;
align-items: center;
padding: 5px 0 7px;
}
.yAudio .yAudio-content .yAudio-play {
width: 38px;
height: 38px;
border-radius: 50%;
color: #fff;
background-color: var(--theme-color);
margin-right: 5px;
cursor: not-allowed;
position: relative;
}
.yAudio.load .yAudio-content .yAudio-play {
cursor: pointer;
}
.yAudio .yAudio-content .yAudio-play svg {
position: absolute;
top: 8px;
left: 10px;
width: 22px;
height: 22px;
}
.yAudio .yAudio-content .yAudio-play svg path {
fill: #fff;
}
.yAudio .yAudio-content .yAudio-play__pause,
.yAudio.play .yAudio-content .yAudio-play__playing {
visibility: visible;
}
.yAudio .yAudio-content .yAudio-play__playing,
.yAudio.play .yAudio-content .yAudio-play__pause {
visibility: hidden;
}
.yAudio .yAudio-content .yAudio-play__playing {
left: 8px;
}
.yAudio .yAudio-content .yAudio-container {
flex: 1;
}
.yAudio .yAudio-content .yAudio-author {
font-size: 12px;
color: #999;
font-weight: 300;
margin: 0;
}
.yAudio .yAudio-content .yAudio-title {
font-size: 15px;
margin: 0;
}
.yAudio .yAudio-content .yAudio-time {
color: #ccc;
font-size: 12px;
font-weight: 100;
line-height: 1;
}
.yAudio .yAudio-content .yAudio-main {
width: 100%;
position: relative;
}
.yAudio .yAudio-content .yAudio-waveform {
width: 100%;
height: 60px;
cursor: pointer;
opacity: 0.8;
transform: scaleY(0);
transform-origin: left 75%;
transition: all 0.3s ease-out;
position: relative;
}
.yAudio .yAudio-content .yAudio-waveform::before {
content: '';
position: absolute;
top: 0;
left: var(--bar-left);
width: 1px;
height: 100%;
opacity: 0;
background-color: var(--theme-color);
transition: opacity 0.3s ease-out;
}
.yAudio .yAudio-content .yAudio-waveform:hover,
.yAudio.start .yAudio-content .yAudio-waveform,
.yAudio .yAudio-content .yAudio-waveform:hover::before {
opacity: 1;
}
.yAudio.load .yAudio-content .yAudio-waveform {
transform: scaleY(1);
}
.yAudio .yAudio-content .yAudio-waveform .yAudio-pro {
position: absolute;
top: 0;
left: 0;
width: 0;
height: 60px;
overflow: hidden;
background-color: transparent;
}
.yAudio .yAudio-content .yAudio-current,
.yAudio .yAudio-content .yAudio-total {
position: absolute;
top: 28px;
color: #fff;
padding: 3px 2px;
font-size: 12px;
line-height: 1;
transform: scale(0.9);
opacity: 0;
background-color: rgba(50, 50, 50, 0.91);
}
.yAudio .yAudio-content .yAudio-current {
left: 0;
z-index: 9;
color: var(--theme-color);
transition: opacity 0.3s linear;
}
.yAudio.start .yAudio-content .yAudio-current {
opacity: 1;
}
.yAudio .yAudio-content .yAudio-total {
color: #999;
right: 0;
}
.yAudio.load .yAudio-content .yAudio-total {
opacity: 1;
animation: opacity 0.6s linear;
}
.yAudio .yAudio-content .yAudio-comments {
width: 100%;
position: relative;
}
.yAudio .yAudio-content .yAudio-wrapper {
position: absolute;
top: -15px;
left: 0;
width: 100%;
height: 12px;
cursor: pointer;
}
.yAudio .yAudio-content .yAudio-wrapper__item {
position: absolute;
top: 0;
left: 10px;
width: 12px;
height: 12px;
background-color: #222;
background-repeat: no-repeat;
background-size: cover;
}
.yAudio .yAudio-content .yAudio-wrapper__item.current {
border-radius: 50%;
box-shadow: 1px 2px 6px #6c6c6c;
z-index: 9;
}
.yAudio .yAudio-content .yAudio-popover {
display: flex;
width: 100%;
height: 30px;
line-height: 30px;
font-size: 12px;
box-sizing: border-box;
transition: all 0.3s ease-out;
}
.yAudio .yAudio-content .yAudio-popover-wrapper {
position: absolute;
top: 4px;
left: 0;
line-height: 1;
opacity: 0;
transition: top 0.25s, opacity 0.25s;
}
.yAudio
.yAudio-content
.yAudio-wrapper.active
~ .yAudio-popover
.yAudio-popover-wrapper {
top: 7px;
opacity: 1;
}
.yAudio .yAudio-content .yAudio-popover-wrapper__user {
display: block;
float: left;
color: var(--theme-color);
padding: 0 8px;
text-decoration: none;
position: relative;
}
.yAudio .yAudio-content .yAudio-popover-wrapper__user::before {
content: '';
display: block;
position: absolute;
top: -12px;
left: 0;
width: 1px;
height: 200%;
background-image: linear-gradient(
rgba(255, 85, 0, 0.95),
rgba(255, 85, 0, 0.1)
);
}
.yAudio
.yAudio-content
.yAudio-popover-wrapper.right
.yAudio-popover-wrapper__user {
float: right;
}
.yAudio .yAudio-content .yAudio-popover-wrapper.right,
.yAudio
.yAudio-content
.yAudio-popover-wrapper.right
.yAudio-popover-wrapper__user::before {
right: 0;
left: auto;
}
.yAudio .yAudio-content .yAudio-popover-wrapper__comment {
color: #666;
float: left;
margin: 0;
}
.yAudio .yAudio-content .yAudio-comments-from {
width: 100%;
height: 0;
opacity: 0;
padding: 5px 5px 5px 25px;
background-color: #f2f2f2;
border: 1px solid #e5e5e5;
box-sizing: border-box;
overflow: hidden;
position: relative;
transition: all 0.3s ease-out;
}
.yAudio.start .yAudio-content .yAudio-comments-from,
.yAudio.comment .yAudio-content .yAudio-comments-from {
opacity: 1;
height: 32px;
}
.yAudio .yAudio-content .yAudio-comments-from::before {
content: '';
position: absolute;
top: 6px;
left: 6px;
width: 19px;
height: 19px;
background-image: linear-gradient(135deg, #846170, #70929c);
}
.yAudio .yAudio-content .yAudio-comments-from__input {
width: 100%;
height: 20px;
border-radius: 0 4px 4px 0;
padding: 0 9px;
font-size: 12px;
outline: none;
cursor: pointer;
border: 1px solid #e5e5e5;
border-left: none;
box-sizing: border-box;
}
.yAudio .yAudio-content .yAudio-footer {
position: relative;
box-sizing: border-box;
margin-top: 10px;
}
.yAudio .yAudio-content .yAudio-list {
border-radius: 0 0 4px 4px;
border: 1px solid #f2f2f2;
font-size: 12px;
overflow: hidden;
}
.yAudio .yAudio-content .yAudio-list-container {
max-height: 150px;
overflow-y: hidden;
transition: max-height 0.3s;
}
.yAudio .yAudio-content .yAudio-list-container.active {
overflow-y: scroll;
max-height: 300px;
}
.yAudio .yAudio-content .yAudio-list-wrapper {
margin: 0;
padding: 0;
transition: all 0.6s;
}
.yAudio .yAudio-content .yAudio-list-wrapper__item {
width: 100%;
height: 30px;
display: flex;
align-items: center;
padding: 0 5px;
box-sizing: border-box;
color: #ccc;
cursor: not-allowed;
border-bottom: 1px solid #f2f2f2;
transition: all 0.3s;
}
.yAudio .yAudio-content .yAudio-list-wrapper__item:last-child {
border-bottom: none;
}
.yAudio .yAudio-content .yAudio-list-wrapper__item.active,
.yAudio .yAudio-content .yAudio-list-wrapper__item:hover,
.yAudio .yAudio-content .yAudio-more:hover {
background-color: #f2f2f2;
}
.yAudio .yAudio-content .yAudio-list-wrapper__item-img {
display: block;
width: 20px;
height: 20px;
margin-right: 5px;
opacity: 0.5;
transition: all 0.3s;
}
.yAudio .yAudio-content .yAudio-list-wrapper__item-number {
margin-right: 5px;
font-size: 12px;
line-height: 1;
color: #ccc;
transition: all 0.3s;
}
.yAudio .yAudio-content .yAudio-list-wrapper__item-content {
flex: 1;
font-size: 0;
}
.yAudio .yAudio-content .yAudio-list-wrapper__item-user,
.yAudio .yAudio-content .yAudio-list-wrapper__item-title {
display: inline-block;
font-size: 12px;
line-height: 1;
margin-right: 5px;
}
.yAudio .yAudio-content .yAudio-list-wrapper__item-title {
color: #ccc;
transition: all 0.3s;
}
.yAudio .yAudio-content .yAudio-list-bar {
position: absolute;
top: 4px;
right: 4px;
width: 6px;
height: 30px;
background-color: #ccc;
border-radius: 6px;
opacity: 0;
transition: opacity 0.6s;
}
.yAudio .yAudio-content .yAudio-list-bar.active,
.yAudio .yAudio-content .yAudio-list-container.active:hover .yAudio-list-bar {
opacity: 1;
}
.yAudio .yAudio-content .yAudio-more {
text-align: center;
padding: 5px 10px;
color: #999;
border: none;
font-size: 12px;
cursor: pointer;
}
.yAudio.load .yAudio-content .yAudio-list-wrapper__item {
color: #999;
cursor: pointer;
}
.yAudio.load .yAudio-content .yAudio-list-wrapper__item-img {
opacity: 1;
}
.yAudio.load .yAudio-content .yAudio-list-wrapper__item-number,
.yAudio.load .yAudio-content .yAudio-list-wrapper__item-title {
color: #333;
}
.yAudio
.yAudio-content
.yAudio-list-wrapper__item.isload
.yAudio-list-wrapper__item-number,
.yAudio
.yAudio-content
.yAudio-list-wrapper__item.isload
.yAudio-list-wrapper__item-title,
.yAudio
.yAudio-content
.yAudio-list-wrapper__item.isload
.yAudio-list-wrapper__item-user {
color: #b5b5b5;
}
.yAudio
.yAudio-content
.yAudio-list-wrapper__item.isload
.yAudio-list-wrapper__item-img {
opacity: 0.5;
}
.yAudio
.yAudio-content
.yAudio-list-wrapper__item.active
.yAudio-list-wrapper__item-number
.yAudio
.yAudio-content
.yAudio-list-wrapper__item.active
.yAudio-list-wrapper__item-user,
.yAudio
.yAudio-content
.yAudio-list-wrapper__item.active
.yAudio-list-wrapper__item-title {
color: var(--theme-color);
}
.yAudio
.yAudio-content
.yAudio-list-wrapper__item.active
.yAudio-list-wrapper__item-img {
opacity: 1;
}
.yAudio .yAudio-content .yAudio-list-container.active::-webkit-scrollbar {
width: 0;
height: 0;
}
@keyframes opacity {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}

637
public/static/common/css/main.css

@ -0,0 +1,637 @@
@font-face {
font-family: 'iconfont'; /* project id 1867770 */
src: url('https://at.alicdn.com/t/font_1867770_5pzef3csvso.eot');
src: url('https://at.alicdn.com/t/font_1867770_5pzef3csvso.eot?#iefix') format('embedded-opentype'),
url('https://at.alicdn.com/t/font_1867770_5pzef3csvso.woff2') format('woff2'),
url('https://at.alicdn.com/t/font_1867770_5pzef3csvso.woff') format('woff'),
url('https://at.alicdn.com/t/font_1867770_5pzef3csvso.ttf') format('truetype'),
url('https://at.alicdn.com/t/font_1867770_5pzef3csvso.svg#iconfont') format('svg');
}
.sv-target video {
background-color: #000000;
}
.sv-font {
font-family: 'iconfont';
}
.sv-pic-pic {
color: #ffffff;
font-size: 20px;
margin-right: 6px;
}
.sv-play {
color: #ffffff;
font-size: 20px;
}
.sv-fontBtn {
color: #ffffff;
font-size: 20px;
}
.sv-next {
color: #ffffff;
font-size: 20px;
}
.sv-fullScreen {
color: #ffffff;
font-size: 20px;
}
.sv-cancelFull {
color: #ffffff;
font-size: 20px;
}
.sv-target {
position: relative;
}
.sv-control {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 54px;
background-color: rgba(0, 0, 0, 0.5);
display: flex;
flex-direction: row;
justify-content: space-between;
}
.sv-play-container {
height: 100%;
/* background-color: royalblue; */
display: flex;
flex-direction: row;
padding-right: 10px;
}
.sv-control-r {
height: 100%;
/* background-color: royalblue; */
display: flex;
flex-direction: row;
padding-left: 10px;
padding-right: 10px;
}
.sv-play-container button.sv-playBtn {
background: none;
border: none;
cursor: pointer;
padding: 0 10px;
outline: none;
color: inherit;
text-align: inherit;
font: inherit;
line-height: inherit;
margin-left: 10px;
}
.sv-control-r button.showMute {
background: none;
border: none;
cursor: pointer;
padding: 0 10px;
outline: none;
color: inherit;
text-align: inherit;
font: inherit;
line-height: inherit;
position: relative;
}
.sv-time {
height: 100%;
color: #ffffff;
display: flex;
flex-direction: row;
align-items: center;
font-size: 12px;
}
.sv-time-split {
padding: 0 4px;
}
.sv-mutePanel {
position: absolute;
top: -120px;
left: 0;
width: 20px;
height: 80px;
background-color: rgba(0, 0, 0, 0.8);
display: flex;
flex-direction: column;
padding: 16px 6px;
border-radius: 4px;
}
.sv-mute-num {
width: 100%;
height: 20px;
background-color: transparent;
color: #ffffff;
font-size: 12px;
text-align: center;
margin-bottom: 4px;
}
.sv-mute-slider {
flex: 1;
width: 3px;
background-color: #ffffff;
margin: 0 auto;
position: relative;
display: flex;
flex-direction: column-reverse;
}
.sv-mute-sliderRange {
width: 100%;
background-color: #00a1d6;
}
.sv-control-r button.sv-mute-button {
position: absolute;
top: 0;
left: -4.5px;
width: 12px;
height: 12px;
border-radius: 50%;
z-index: 10;
background-color: #00a1d6;
border: 0;
cursor: pointer;
outline: none;
}
.sv-progressBar {
position: absolute;
top: 0;
left: 2%;
width: 96%;
height: 2px;
background-color: hsla(0,0%,100%,.2);
border-radius: 4px;
cursor: pointer;
}
.sv-cacheProgress {
width: 0%;
height: 100%;
background-color: #7a7878;
border-radius: 4px;
}
.sv-progressNum {
width: 0%;
height: 100%;
position: absolute;
top: 0;
left: 0;
border-radius: 4px;
background-color: #00a1d6;
}
.sv-progressBtn {
position: absolute;
left: 0%;
top: -7px;
width: 16px;
height: 16px;
border-radius: 50%;
background-color: rgba(0, 161, 214, 0.5);
cursor: pointer;
}
.sv-progressBtn>div {
width: 10px;
height: 10px;
border-radius: 50%;
background-color: #00a1d6;
margin-top: 2.6px;
margin-left: 2.8px;
}
.hide {
display: none!important;
}
.sv-full-screen {
position: fixed!important;
width: 100%!important;
height: 100%!important;
left: 0!important;
top: 0!important;
margin: 0!important;
padding: 0!important;
}
.sv-loading{
/* width: 60px;
height: 60px; */
position: absolute;
left: 48%;
top: 48%;
}
.sv-loading span{
display: inline-block;
width: 4px;
height: 100%;
border-radius: 4px;
background: #00a1d6;
-webkit-animation: load 1s ease infinite;
animation: load 1s ease infinite;
}
@-webkit-keyframes load{
0%,100%{
height: 20px;
background: #00a1d6;
}
50%{
height: 40px;
margin: -15px 0;
background: lightblue;
}
}
.sv-loading span:nth-child(2){
-webkit-animation-delay:0.2s;
animation-delay:0.2s;
}
.sv-loading span:nth-child(3){
-webkit-animation-delay:0.4s;
animation-delay:0.4s;
}
.sv-loading span:nth-child(4){
-webkit-animation-delay:0.6s;
animation-delay:0.6s;
}
.sv-loading span:nth-child(5){
-webkit-animation-delay:0.8s;
animation-delay:0.8s;
}
/* 弹幕 */
.sv-brrage {
position: absolute;
padding: 4px;
background-color: transparent;
display: flex;
flex-direction: row;
white-space: nowrap;
width: auto;
word-wrap: break-word;
max-width: 500px;
min-width: 100px;
}
.sv-brrage-center {
text-shadow: rgb(0, 0, 0) 1px 0px 1px, rgb(0, 0, 0) 0px 1px 1px, rgb(0, 0, 0) 0px -1px 1px, rgb(0, 0, 0) -1px 0px 1px;
}
/* 画中画 */
.sv-picinpic {
position: absolute;
z-index: 22;
position: absolute;
top: 20px;
right: 20px;
white-space: nowrap;
height: 36px;
padding: 0 12px;
overflow: visible;
border-radius: 2px;
border-radius: 18px;
background: #2b2b2b;
background: rgba(43,43,43,.8);
color: #fff;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
font-size: 14px;
cursor: pointer;
}
.sv-picinpic:hover {
background: linear-gradient(90deg,#4ca9c7 0,#03bbf7)!important
}.sv-el-control-style {
padding-right: 10px;
padding-left: 10px;
height: 100%;
display: flex;
flex-direction: row;
}
.sv-nextBtn {
background: none;
border: none;
cursor: pointer;
outline: none;
text-align: inherit;
}
.sv-speedBtn {
background: none;
border: none;
cursor: pointer;
outline: none;
text-align: inherit;
position: relative;
}
.sv-speedBtn .sv-speed-btn {
position: absolute;
bottom: 54px;
left: -10px;
padding: 10px;
border-radius: 4px;
background-color: rgba(0, 0, 0, 0.8);
/* box-sizing: border-box;
border: 1px solid #ffffff; */
}
.sv-speedBtn .sv-speed-btn ul {
padding: 0;
margin: 0;
}
.sv-speedBtn .sv-speed-btn ul li {
list-style: none;
font-size: 12px;
line-height: 20px;
cursor: pointer;
}
.sv-speedBtn .sv-speed-btn ul li:hover{
color: #00a1d6;
}
.sv-active{
color: #00a1d6!important;
}
.sv-control-c {
height: 100%;
}
/* 弹幕控件 */
.sv-barrage {
display: flex;
flex-direction: row;
align-items: center;
height: 100%;
position: relative;
}
.sv-barrage-a {
height: 26px;
}
.sv-barrage-input {
height: 17px;
outline: none;
padding: 6px 30px;
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
border-top: 1px solid #333333;
border-left: 1px solid #333333;
border-bottom: 1px solid #333333;
border-right: 1px solid #00a1d6;
background: none;
font-size: 12px;
color: #fff;
}
.sv-barrage-button {
height: 31px;
background-color: #00a1d6;
color: #fff;
width: 60px;
min-width: 60px;
text-align: center;
cursor: pointer;
box-sizing: border-box;
border-top: 1px solid #333333;
border-right: 1px solid #333333;
border-bottom: 1px solid #333333;
border-left: 1px solid #00a1d6;
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
outline: none;
vertical-align: middle;
}
.sv-barrage-button:hover{
background-color: #03bbf7;
border-left: 1px solid #03bbf7;
}
.sv-barrage-font {
position: absolute;
left: 6px;
top: 16px;
cursor: pointer;
}
.sv-apanel {
position: absolute;
bottom: 54px;
left: -10px;
padding: 10px;
border-radius: 4px;
background-color: rgba(0, 0, 0, 0.8);
width: 200px;
height: 100px;
display: flex;
flex-direction: column;
color: #fff;
z-index: 99999;
}
.sv-apanel-item {
display: flex;
flex-direction: column;
overflow: hidden;
}
.sv-apanel-item span {
font-size: 12px;
}
.sv-apanel-item ul {
margin: 0;
padding: 0;
margin-top: 8px;
}
.sv-apanel-item ul li {
list-style: none;
background-color: #fff;
display: block;
width: 20px;
height: 20px;
margin: 4px;
float: left;
cursor: pointer;
}
.activeColor{
box-sizing: border-box;
border: 2px solid #ffff;
}
.videoContainer {
width: 100%;
height: calc(100vh - 4px);
margin: 0;
padding: 0;
}
body{
background-color: #f5f5f5;color: #5F5F5F;margin: 0; padding: 0; height: 100%;
}
.container {
text-align: center;
font-size: 72px;
margin-top: 20%;
}
/*zoom-marker*/
.picview { width:50%; margin:auto auto auto auto; height:800px; overflow:hidden; }
.picview img{position:absolute; left: 30%; top:20%; width:500px; z-index:1; }
.zoom-marker{cursor: pointer;z-index:2;}
/* pptview */
.pptview{
width: 100%;
height: 100vh;
position: relative;
display: flex;
}
.slide-box{
margin: 0px auto;
position: relative;
}
#all_slides_warpper{
position: absolute;
left: 10px;
right: 10px;
top: 10px;
bottom: 10px;
padding: 0px;
max-width: 900px;
left: 50% !important;
transform: translateX(-50%);
/* margin:50px 100px; */
/* height: inherit !important; */
height: auto !important;
}
#all_slides_warpper .slide{
border-radius: 0px;
-webkit-transform-origin: 0 0;
}
.not-in-wap #all_slides_warpper .slide-box{
margin-bottom: 20px;
/* top: 50%;
transform: translateY(-50%); */
}
.not-in-wap #all_slides_warpper .slide{
/* margin: 0px auto; */
margin: 0px;
top: 0px !important;
left: 0px !important;
/* top: 50% !important;
transform: translateY(-50%); */
}
.is-in-wap #all_slides_warpper .slide-box{
margin-bottom: 10px;
}
.is-in-wap #all_slides_warpper .slide{
display: block !important;
}
.is-in-wap .slide-page-toolbar{display: none;}
.not-in-wap .main-slide-fscreen{
left: 0px !important;
}
.total-page-point{
border-color: #FF8040;
box-shadow: 0 0 0 2px #ff8040;
}
.slide-play-btn{
display: none;
opacity: 0.6;
position: absolute;
font-size: 45px;
/* top: 36%;
left: 90px; */
transform: scale(1) !important;
z-index: 999999;
color: #ff8040;
top: 50%;
left: 50%;
margin-left: -22.5px;
margin-top: -22.5px;
}
.slide-play-btn:hover{
opacity: 0.8;
cursor: pointer;
}
/* 全屏 */
.output-fscreen .slide-page-toolbar{
left: 45%;
}
.output-fscreen .slide-left-icon{
left: 0px;
width: 150px;
}
.output-fscreen .slide-right-icon{
width: 150px;
}
.text-preview{
width: 900px;
min-height: 600px;
padding: 15px;
background: #fff;
margin: 15px auto;
border-radius: 6px;
font-size: 18px;
font-weight: 600;
color: #000 !important;
}
.text-preview #file-content{
white-space: pre-wrap;
}
@media (max-width: 768px) {
.text-preview{
width: 90% !important;
}
.not-in-wap #left_slides_bar{display: none !important;}
.not-in-wap .slide-left-icon{left: 0px;}
#all_slides_warpper{left: 10px !important;top:10px !important;transform: translateX(0);}
/* .slide-page-toolbar{display: none;} */
}
@media (max-width: 900px) {
.text-preview{
width: 90% !important;
}
#all_slides_warpper{left: 10px !important;top:10px !important;transform: translateX(0);}
/* .slide-page-toolbar{display: none;} */
.docx-wrapper{
padding:10px !important;
}
.docx-wrapper>section.docx{
width: 100% !important;
height: 100% !important;
margin: 0px !important;
padding: 10px !important;
}
#yAudio{
width: 100% !important;
}
.yAudio{
flex-wrap: wrap !important;
justify-content: center !important;
}
.yAudio-content{
padding:30px !important;
}
}

0
public/static/common/css/test.txt

BIN
public/static/common/img/camera-off.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

BIN
public/static/common/img/camera.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
public/static/common/img/chatarea.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
public/static/common/img/file_transfer.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
public/static/common/img/file_transfer.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
public/static/common/img/guaduan.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
public/static/common/img/jieting.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
public/static/common/img/moments.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
public/static/common/img/none.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 B

BIN
public/static/common/img/notice.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

BIN
public/static/common/img/speaker-off.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
public/static/common/img/speaker.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

0
public/static/common/img/test.txt

BIN
public/static/common/img/tmall.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

BIN
public/static/common/img/uniapp.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
public/static/common/img/video.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 610 KiB

BIN
public/static/common/img/voice-off.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

BIN
public/static/common/img/voice.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

1075
public/static/common/js/audio.js

File diff suppressed because one or more lines are too long

1
public/static/common/js/superVideo.js

File diff suppressed because one or more lines are too long

0
public/static/common/js/test.txt

1
public/static/common/js/watermark.js

@ -0,0 +1 @@
eval(function(p,a,c,k,e,r){e=function(c){return(c<62?'':e(parseInt(c/62)))+((c=c%62)>35?String.fromCharCode(c+29):c.toString(36))};if('0'.replace(0,e)==0){while(c--)r[e(c)]=k[c];k=[function(e){return r[e]||e}];e=function(){return'([3-9a-hk-wzA-Z]|1\\w)'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(a(1a,O){7(D X===\'a\'&&X.amd){X([],O())}c 7(D Y===\'Z\'&&Y.1b){Y.1b=O()}c{1a[\'u\']=O()}}(this,a(){4 u={};4 3={E:\'1c\',1d:\'mask_div_id\',1e:"测试水印",f:20,g:20,h:0,k:0,m:50,n:50,1g:\'微软雅黑\',1h:\'black\',1i:\'18px\',1j:0.15,o:1k,p:1k,v:15,1l:0,1m:0,1n:1o,P:Q,};4 w=a(d){7(s.z===1&&D s[0]==="Z"){4 9=s[0]||{};R(8 in 9){7(9[8]&&3[8]&&9[8]===3[8])1q;c 7(9[8]||9[8]===0)3[8]=9[8]}}4 q=l.F(3.E);q&&q.10&&q.10.1r(q);4 A=l.F(3.1n);4 e=A?A:l.body;4 G=S.1s(e.scrollWidth,e.clientWidth);4 H=S.1s(e.scrollHeight,e.clientHeight);4 11=s[0]||{};4 t=e;4 B=0;4 C=0;7(11.1l||11.1m){7(t){B=t.1t||0;C=t.1u||0;3.f=3.f+C;3.g=3.g+B}}c{7(t){B=t.1t||0;C=t.1u||0}}4 b=l.F(3.E);4 r=1o;7(!b){b=l.1v(\'1w\');b.id=3.E;b.setAttribute(\'6\',\'pointer-events: 1y !1z; 1A: 1B !1z\');7(D b.1C===\'a\'){r=b.1C({mode:\'open\'})}c{r=b}4 T=e.children;4 12=S.floor(S.random()*(T.z-1));7(T[12]){e.insertBefore(b,T[12])}c{e.13(b)}}c 7(b.r){r=b.r}3.k=U((G-3.f)/(3.o+3.m));4 14=U((G-3.f-3.o*3.k)/(3.k));3.m=14?3.m:14;4 I;3.h=U((H-3.g)/(3.p+3.n));4 16=U((H-3.g-3.p*3.h)/(3.h));3.n=16?3.n:16;4 J;7(A){I=3.f+3.o*3.k+3.m*(3.k-1);J=3.g+3.p*3.h+3.n*(3.h-1)}c{I=C+3.f+3.o*3.k+3.m*(3.k-1);J=B+3.g+3.p*3.h+3.n*(3.h-1)}4 x;4 y;R(4 i=0;i<3.h;i++){7(A){y=B+3.g+(H-J)/2+(3.n+3.p)*i}c{y=3.g+(H-J)/2+(3.n+3.p)*i}R(4 j=0;j<3.k;j++){7(A){x=C+3.f+(G-I)/2+(3.o+3.m)*j}c{x=3.f+(G-I)/2+(3.o+3.m)*j}4 5=l.1v(\'1w\');4 1D=l.createTextNode(3.1e);5.13(1D);5.id=3.1d+i+j;5.6.webkitTransform="K(-"+3.v+"L)";5.6.MozTransform="K(-"+3.v+"L)";5.6.msTransform="K(-"+3.v+"L)";5.6.OTransform="K(-"+3.v+"L)";5.6.transform="K(-"+3.v+"L)";5.6.visibility="";5.6.position="absolute";5.6.left=x+\'V\';5.6.top=y+\'V\';5.6.overflow="hidden";5.6.zIndex="9999999";5.6.opacity=3.1j;5.6.fontSize=3.1i;5.6.fontFamily=3.1g;5.6.color=3.1h;5.6.textAlign="center";5.6.width=3.o+\'V\';5.6.height=3.p+\'V\';5.6.1A="1B";5.6[\'-ms-user-select\']="1y";r.13(5)}}1E 1F=d.P===undefined?3.P:d.P;7(1F){17.1G(e,18);17.1G(l.F(\'1c\').r,18)}};4 1H=a(){7(s.z===1&&D s[0]==="Z"){4 9=s[0]||{};R(8 in 9){7(9[8]&&3[8]&&9[8]===3[8])1q;c 7(9[8]||9[8]===0)3[8]=9[8]}}4 q=l.F(3.E);4 1I=q.10;1I.1r(q)};4 M;u.init=a(d){M=d;w(d);N.1J(\'onload\',a(){w(d)});N.1J(\'resize\',a(){w(d)})};u.load=a(d){M=d;w(d)};u.remove=a(){1H()};4 1K=a(W){7((M&&W.z===1)||W.z===1&&W[0].removedNodes.z>=1){w(M)}};1E 19=N.19||N.WebKitMutationObserver||N.MozMutationObserver;4 17=new 19(1K);4 18={\'childList\':Q,\'attributes\':Q,\'subtree\':Q,};return u}));',[],109,'|||defaultSettings|var|mask_div|style|if|key|src|function|otdiv|else|settings|watermark_hook_element|watermark_x|watermark_y|watermark_rows|||watermark_cols|document|watermark_x_space|watermark_y_space|watermark_width|watermark_height|watermark_element|shadowRoot|arguments|parentEle|watermark|watermark_angle|loadMark|||length|watermark_parent_element|page_offsetTop|page_offsetLeft|typeof|watermark_id|getElementById|page_width|page_height|allWatermarkWidth|allWatermarkHeight|rotate|deg|globalSetting|window|factory|monitor|true|for|Math|nodeList|parseInt|px|records|define|module|object|parentNode|setting|index|appendChild|temp_watermark_x_space||temp_watermark_y_space|watermarkDom|option|MutationObserver|root|exports|wm_div_id|watermark_prefix|watermark_txt||watermark_font|watermark_color|watermark_fontsize|watermark_alpha|100|watermark_parent_width|watermark_parent_height|watermark_parent_node|null||continue|removeChild|max|offsetTop|offsetLeft|createElement|div||none|important|display|block|attachShadow|oText|const|minotor|observe|removeMark|_parentElement|addEventListener|callback'.split('|'),0,{}))

0
public/static/common/test.txt

BIN
public/static/common/voice/calling.mp3

Binary file not shown.

BIN
public/static/common/voice/guaduan.mp3

Binary file not shown.

546
public/static/css/main.css

@ -0,0 +1,546 @@
@font-face {
font-family: 'iconfont';
/* project id 1867770 */
src: url('https://at.alicdn.com/t/font_1867770_5pzef3csvso.eot');
src: url('https://at.alicdn.com/t/font_1867770_5pzef3csvso.eot?#iefix') format('embedded-opentype'), url('https://at.alicdn.com/t/font_1867770_5pzef3csvso.woff2') format('woff2'), url('https://at.alicdn.com/t/font_1867770_5pzef3csvso.woff') format('woff'), url('https://at.alicdn.com/t/font_1867770_5pzef3csvso.ttf') format('truetype'), url('https://at.alicdn.com/t/font_1867770_5pzef3csvso.svg#iconfont') format('svg');
}
.sv-target video {
background-color: #000;
}
.sv-font {
font-family: 'iconfont';
}
.sv-pic-pic {
color: #ffffff;
font-size: 20px;
margin-right: 6px;
}
.sv-play {
color: #ffffff;
font-size: 20px;
}
.sv-fontBtn {
color: #ffffff;
font-size: 20px;
}
.sv-next {
color: #ffffff;
font-size: 20px;
}
.sv-fullScreen {
color: #ffffff;
font-size: 20px;
}
.sv-cancelFull {
color: #ffffff;
font-size: 20px;
}
.sv-target {
position: relative;
}
.sv-control {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 54px;
background-color: rgba(0, 0, 0, 0.5);
display: flex;
flex-direction: row;
justify-content: space-between;
}
.sv-play-container {
height: 100%;
/* background-color: royalblue; */
display: flex;
flex-direction: row;
padding-right: 10px;
}
.sv-control-r {
height: 100%;
/* background-color: royalblue; */
display: flex;
flex-direction: row;
padding-left: 10px;
padding-right: 10px;
}
.sv-play-container button.sv-playBtn {
background: none;
border: none;
cursor: pointer;
padding: 0 10px;
outline: none;
color: inherit;
text-align: inherit;
font: inherit;
line-height: inherit;
margin-left: 10px;
}
.sv-control-r button.showMute {
background: none;
border: none;
cursor: pointer;
padding: 0 10px;
outline: none;
color: inherit;
text-align: inherit;
font: inherit;
line-height: inherit;
position: relative;
}
.sv-time {
height: 100%;
color: #ffffff;
display: flex;
flex-direction: row;
align-items: center;
font-size: 12px;
}
.sv-time-split {
padding: 0 4px;
}
.sv-mutePanel {
position: absolute;
top: -120px;
left: 0;
width: 20px;
height: 80px;
background-color: rgba(0, 0, 0, 0.8);
display: flex;
flex-direction: column;
padding: 16px 6px;
border-radius: 4px;
}
.sv-mute-num {
width: 100%;
height: 20px;
background-color: transparent;
color: #ffffff;
font-size: 12px;
text-align: center;
margin-bottom: 4px;
}
.sv-mute-slider {
flex: 1;
width: 3px;
background-color: #ffffff;
margin: 0 auto;
position: relative;
display: flex;
flex-direction: column-reverse;
}
.sv-mute-sliderRange {
width: 100%;
background-color: #00a1d6;
}
.sv-control-r button.sv-mute-button {
position: absolute;
top: 0;
left: -4.5px;
width: 12px;
height: 12px;
border-radius: 50%;
z-index: 10;
background-color: #00a1d6;
border: 0;
cursor: pointer;
outline: none;
}
.sv-progressBar {
position: absolute;
top: 0;
left: 2%;
width: 96%;
height: 2px;
background-color: hsla(0, 0%, 100%, .2);
border-radius: 4px;
cursor: pointer;
}
.sv-cacheProgress {
width: 0%;
height: 100%;
background-color: #7a7878;
border-radius: 4px;
}
.sv-progressNum {
width: 0%;
height: 100%;
position: absolute;
top: 0;
left: 0;
border-radius: 4px;
background-color: #00a1d6;
}
.sv-progressBtn {
position: absolute;
left: 0%;
top: -7px;
width: 16px;
height: 16px;
border-radius: 50%;
background-color: rgba(0, 161, 214, 0.5);
cursor: pointer;
}
.sv-progressBtn>div {
width: 10px;
height: 10px;
border-radius: 50%;
background-color: #00a1d6;
margin-top: 2.6px;
margin-left: 2.8px;
}
.hide {
display: none!important;
}
.sv-full-screen {
position: fixed!important;
width: 100%!important;
height: 100%!important;
left: 0!important;
top: 0!important;
margin: 0!important;
padding: 0!important;
}
.sv-loading {
/* width: 60px;
height: 60px; */
position: absolute;
left: 48%;
top: 48%;
}
.sv-loading span {
display: inline-block;
width: 4px;
height: 100%;
border-radius: 4px;
background: #00a1d6;
-webkit-animation: load 1s ease infinite;
animation: load 1s ease infinite;
}
@-webkit-keyframes load {
0%,
100% {
height: 20px;
background: #00a1d6;
}
50% {
height: 40px;
margin: -15px 0;
background: lightblue;
}
}
.sv-loading span:nth-child(2) {
-webkit-animation-delay: 0.2s;
animation-delay: 0.2s;
}
.sv-loading span:nth-child(3) {
-webkit-animation-delay: 0.4s;
animation-delay: 0.4s;
}
.sv-loading span:nth-child(4) {
-webkit-animation-delay: 0.6s;
animation-delay: 0.6s;
}
.sv-loading span:nth-child(5) {
-webkit-animation-delay: 0.8s;
animation-delay: 0.8s;
}
/* 弹幕 */
.sv-brrage {
position: absolute;
padding: 4px;
background-color: transparent;
display: flex;
flex-direction: row;
white-space: nowrap;
width: auto;
word-wrap: break-word;
max-width: 500px;
min-width: 100px;
}
.sv-brrage-center {
text-shadow: rgb(0, 0, 0) 1px 0px 1px, rgb(0, 0, 0) 0px 1px 1px, rgb(0, 0, 0) 0px -1px 1px, rgb(0, 0, 0) -1px 0px 1px;
}
/* 画中画 */
.sv-picinpic {
position: absolute;
z-index: 22;
position: absolute;
top: 20px;
right: 20px;
white-space: nowrap;
height: 36px;
padding: 0 12px;
overflow: visible;
border-radius: 2px;
border-radius: 18px;
background: #2b2b2b;
background: rgba(43, 43, 43, .8);
color: #fff;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
font-size: 14px;
cursor: pointer;
}
.sv-picinpic:hover {
background: linear-gradient(90deg, #4ca9c7 0, #03bbf7)!important
}
.sv-el-control-style {
padding-right: 10px;
padding-left: 10px;
height: 100%;
display: flex;
flex-direction: row;
}
.sv-nextBtn {
background: none;
border: none;
cursor: pointer;
outline: none;
text-align: inherit;
}
.sv-speedBtn {
background: none;
border: none;
cursor: pointer;
outline: none;
text-align: inherit;
position: relative;
}
.sv-speedBtn .sv-speed-btn {
position: absolute;
bottom: 54px;
left: -10px;
padding: 10px;
border-radius: 4px;
background-color: rgba(0, 0, 0, 0.8);
/* box-sizing: border-box;
border: 1px solid #ffffff; */
}
.sv-speedBtn .sv-speed-btn ul {
padding: 0;
margin: 0;
}
.sv-speedBtn .sv-speed-btn ul li {
list-style: none;
font-size: 12px;
line-height: 20px;
cursor: pointer;
}
.sv-speedBtn .sv-speed-btn ul li:hover {
color: #00a1d6;
}
.sv-active {
color: #00a1d6!important;
}
.sv-control-c {
height: 100%;
}
/* 弹幕控件 */
.sv-barrage {
display: flex;
flex-direction: row;
align-items: center;
height: 100%;
position: relative;
}
.sv-barrage-a {
height: 26px;
}
.sv-barrage-input {
height: 17px;
outline: none;
padding: 6px 30px;
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
border-top: 1px solid #333333;
border-left: 1px solid #333333;
border-bottom: 1px solid #333333;
border-right: 1px solid #00a1d6;
background: none;
font-size: 12px;
color: #fff;
}
.sv-barrage-button {
height: 31px;
background-color: #00a1d6;
color: #fff;
width: 60px;
min-width: 60px;
text-align: center;
cursor: pointer;
box-sizing: border-box;
border-top: 1px solid #333333;
border-right: 1px solid #333333;
border-bottom: 1px solid #333333;
border-left: 1px solid #00a1d6;
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
outline: none;
vertical-align: middle;
}
.sv-barrage-button:hover {
background-color: #03bbf7;
border-left: 1px solid #03bbf7;
}
.sv-barrage-font {
position: absolute;
left: 6px;
top: 16px;
cursor: pointer;
}
.sv-apanel {
position: absolute;
bottom: 54px;
left: -10px;
padding: 10px;
border-radius: 4px;
background-color: rgba(0, 0, 0, 0.8);
width: 200px;
height: 100px;
display: flex;
flex-direction: column;
color: #fff;
z-index: 99999;
}
.sv-apanel-item {
display: flex;
flex-direction: column;
overflow: hidden;
}
.sv-apanel-item span {
font-size: 12px;
}
.sv-apanel-item ul {
margin: 0;
padding: 0;
margin-top: 8px;
}
.sv-apanel-item ul li {
list-style: none;
background-color: #fff;
display: block;
width: 20px;
height: 20px;
margin: 4px;
float: left;
cursor: pointer;
}
.activeColor {
box-sizing: border-box;
border: 2px solid #ffff;
}
#videoContainer {
width: 800px;
height: 500px;
margin-left: auto;
margin-right: auto;
margin-top: 100px;
}
body {
background-color: #00000089;
color: #5F5F5F;
margin: 0;
padding: 0;
height: 100%;
overflow: hidden;
}
.container {
text-align: center;
font-size: 72px;
margin-top: 20%;
}
/*zoom-marker*/
.picview {
width: 50%;
margin: auto auto auto auto;
height: 800px;
overflow: hidden;
}
.picview img {
position: absolute;
left: 30%;
top: 20%;
width: 500px;
z-index: 1;
}
.zoom-marker {
cursor: pointer;
z-index: 2;
}

4496
public/static/docxjs/js/docx-preview.js

File diff suppressed because it is too large

13
public/static/docxjs/js/jszip.min.js

File diff suppressed because one or more lines are too long

0
public/static/docxjs/js/test.txt

0
public/static/docxjs/test.txt

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

Loading…
Cancel
Save