1525 Commits

Author SHA1 Message Date
f259bab4ed 礼物墙 展示数据修正 2026-01-19 09:16:55 +08:00
878f9f8ff7 礼物墙 展示数据修正 2026-01-19 09:16:40 +08:00
8575a04639 退公会 流水展示 2026-01-19 09:04:48 +08:00
be9dee86dc bug修改-关禁闭 2026-01-17 23:38:36 +08:00
c93d05a1a3 封禁 token删除缓存 2026-01-17 23:12:04 +08:00
75c4a27556 bug修改-关禁闭 2026-01-17 23:05:26 +08:00
d04e6d7303 bug修改 2026-01-17 22:56:47 +08:00
8cc3cb3217 校验数值 2026-01-17 20:50:03 +08:00
1276c4e8d5 抽盘加参数校验 2026-01-17 18:46:25 +08:00
c5a622148f bug修改 2026-01-17 18:41:21 +08:00
69e3570600 签约身价变为负数修改 2026-01-17 17:55:59 +08:00
a1010ff2c7 bug修改 2026-01-17 16:09:14 +08:00
e7b14d20f1 参与竞拍 天空之境 2026-01-17 16:04:58 +08:00
3a120b55cb bug修改 2026-01-17 15:54:51 +08:00
761fc6e86f 首充 2026-01-17 14:39:59 +08:00
f66f3a2247 首充 2026-01-17 14:36:41 +08:00
b570510602 bug修改 2026-01-17 14:32:43 +08:00
373a8ecedd 钻石兑换金币记录 2026-01-17 11:48:16 +08:00
90b19f20b6 提交 2026-01-17 00:07:51 +08:00
0e6afcaab9 天空之镜加概率限制 2026-01-16 23:55:07 +08:00
30461d6986 天空之镜加概率限制 2026-01-16 23:53:06 +08:00
aaea1c429a 上麦助力 2026-01-16 23:03:56 +08:00
7d327edd21 登录检测 2026-01-16 22:47:21 +08:00
b7ec1b1eda 脚踩星光列表 2026-01-16 22:41:31 +08:00
7e04e72070 脚踩星光列表 2026-01-16 22:16:25 +08:00
43e69a2895 后台盲盒转盘数据查询时间限制。 2026-01-16 22:09:23 +08:00
446076cc2e 盲盒转盘加限制,加控盘逻辑 2026-01-16 22:01:36 +08:00
13cdbb56ee 盲盒转盘加限制,加控盘逻辑 2026-01-16 21:38:35 +08:00
d6ea318358 盲盒随机算法 随机函数更换修改 2026-01-16 19:27:07 +08:00
487f0277fd 盲盒随机算法 随机函数更换修改 2026-01-16 19:21:47 +08:00
2046e61c1b 盲盒随机算法 随机函数更换修改 2026-01-16 19:17:18 +08:00
34ea8ac762 盲盒随机算法 随机函数更换修改 2026-01-16 19:16:38 +08:00
bad55084a1 盲盒随机算法 随机函数更换修改 2026-01-16 19:14:02 +08:00
405b632a8a model 调用的时候 加 api 2026-01-16 19:04:33 +08:00
59d646925f 送礼盲盒点亮 2026-01-16 18:01:36 +08:00
8922fa93f3 房间流水展示 2026-01-16 17:10:05 +08:00
e29f4bd4df 盲盒期数修改。 2026-01-16 17:01:49 +08:00
08cd7af663 爆币补发 2026-01-16 16:23:52 +08:00
53964b5398 盲盒期数修改。 2026-01-16 15:51:44 +08:00
19bb1d742e 盲盒期数修改。 2026-01-16 15:32:23 +08:00
29e35435a6 房间排行榜给安卓补偿参数 2026-01-16 15:00:58 +08:00
b8b935c8b2 房间排行榜 2026-01-16 14:56:01 +08:00
50a7226864 盲盒期数修改。 2026-01-16 14:42:37 +08:00
522c240771 爆币流水记录 2026-01-16 14:08:20 +08:00
aa5ada0790 Merge remote-tracking branch 'origin/develop' into develop 2026-01-16 13:31:57 +08:00
14107d60e4 盲盒期数修改。 2026-01-16 13:31:49 +08:00
48066e7b13 开盲盒报错信息抛出 2026-01-16 13:19:05 +08:00
fcad79edf1 歌曲置顶切歌处理 2026-01-16 13:02:53 +08:00
91d19f413a 歌曲置顶切歌处理 2026-01-16 10:14:33 +08:00
b0b6ef72a5 bug 修改 2026-01-16 09:07:31 +08:00
9bec4ef093 酒吧房加测试代码判断 2026-01-16 09:00:55 +08:00
54abef6b56 工会设置 2026-01-15 06:36:17 +08:00
7ad88c1e98 群组进入ID 2026-01-15 06:25:02 +08:00
c83216aa23 酒吧房加测试代码判断 2026-01-15 05:59:00 +08:00
6f82b130c0 房间小时榜 和房间流水 2026-01-15 05:44:45 +08:00
f24de31a92 后台登录 2026-01-15 05:26:34 +08:00
b367d1a97d 设置自定你礼物 补偿iOS 没有传room_id 2026-01-15 05:12:10 +08:00
54bf441b6c 排行榜 2026-01-15 04:21:33 +08:00
2d392039ac 排行榜 2026-01-15 04:14:58 +08:00
4b379b7e53 收礼处理 礼物墙 2026-01-15 01:12:15 +08:00
dd2c676ecc 酒吧房加测试代码判断 2026-01-15 01:06:47 +08:00
1d6b09e20e 收礼处理 礼物墙 2026-01-14 23:29:58 +08:00
abae40397c 收礼处理 礼物墙 2026-01-14 23:28:22 +08:00
3a8ccf4c35 上线前新需求:加客服接口 公会退出 费用发给公会长 2026-01-14 23:00:09 +08:00
885d1a631a 用户收益 金币扣除 2026-01-14 22:59:24 +08:00
6b08d327ec 金币扣除使用行级锁 和礼物墙处理 2026-01-14 22:13:01 +08:00
097b719937 注册给金币和实名去掉 2026-01-14 18:39:06 +08:00
0ac1fc2b46 酒吧房更换背景 2026-01-14 17:57:02 +08:00
699d6d4245 上线前新需求:加客服接口 公会退出 费用发给公会长 2026-01-14 17:33:05 +08:00
767f51d1d6 上线前新需求:加客服接口 公会退出 费用发给公会长 2026-01-14 17:25:37 +08:00
06983dfe46 测试:bug处理 2026-01-14 16:33:41 +08:00
8bcee346ff 送盲盒 2026-01-14 14:58:49 +08:00
a588175a9e 送盲盒 2026-01-14 14:06:22 +08:00
2d9edc4c78 注册送金币关掉了 2026-01-14 12:22:46 +08:00
2c45e0b38f 送盲盒 数据整合 2026-01-14 11:31:33 +08:00
824fc52717 测试:bug处理 2026-01-14 01:03:09 +08:00
5002913d70 优化队列 2026-01-13 23:46:59 +08:00
aa0615974b 优化队列 2026-01-13 23:41:55 +08:00
4765a738c0 Revert "优化队列"
This reverts commit bea3dcd873.
2026-01-13 22:16:57 +08:00
1806a6a38a 优化队列 2026-01-13 21:22:53 +08:00
515955f65d 优化队列 2026-01-13 20:29:40 +08:00
bea3dcd873 优化队列 2026-01-13 20:27:18 +08:00
7eb9d49ede 酒吧房约他 开小房间 2026-01-13 19:37:26 +08:00
8f96b4cae3 酒吧房约他 开小房间 2026-01-13 18:22:52 +08:00
c083b0576f 单人送礼 直插数据库,多人送礼队列 2026-01-13 17:33:03 +08:00
5822832ab3 单人送礼 直插数据库,多人送礼队列 2026-01-13 17:19:41 +08:00
1623277e26 单人送礼 直插数据库,多人送礼队列 2026-01-13 17:13:16 +08:00
ffbf0c0f37 测试:bug处理 2026-01-13 17:07:24 +08:00
4d528e0e72 测试:bug处理 2026-01-13 15:47:19 +08:00
a6ac190358 系统消息未读数处理 2026-01-13 15:37:30 +08:00
49728c6fcb 设置自定礼物 2026-01-13 15:21:57 +08:00
dc5eba281e 注册实名 和 cp回礼 2026-01-13 15:04:49 +08:00
fd1a88cdf6 酒吧房 抱麦后选择礼物在上麦 传参 type = 2 直接上麦不做排麦处理 2026-01-13 14:47:34 +08:00
c21d6ed238 登录注册获取设备号和系统 2026-01-13 14:36:40 +08:00
401c3f8842 小时榜 2026-01-13 14:12:11 +08:00
7f266b4b15 Merge remote-tracking branch 'origin/develop' into develop 2026-01-13 14:02:04 +08:00
4eaa1efdbf 优化:Give_Gift 表查询处理 2026-01-13 14:01:57 +08:00
2624aa6c56 发头条 2026-01-13 12:42:01 +08:00
74db686f47 优化:Give_Gift 表查询处理 2026-01-13 11:21:18 +08:00
6582f9ca96 队列错误 添加到数据库 2026-01-13 10:54:31 +08:00
4aa09e49a9 登录就充值一百万 2026-01-13 10:28:13 +08:00
6c1cd57e6a 登录就模拟实名 2026-01-13 10:11:48 +08:00
094221ab2b 酒吧房约他 创建房间拦截 2026-01-13 09:47:04 +08:00
8ef22d87a2 优化:Give_Gift 表查询处理 2026-01-13 09:38:47 +08:00
a42ae7a94f 注册虚假实名 2026-01-13 09:19:51 +08:00
c2b49aad9f 优化:巡乐会结束时间限制调整 2026-01-13 08:53:52 +08:00
1903774cdf 送礼盲盒 2026-01-12 21:29:33 +08:00
ce2bf4c7ce 优化:Give_Gift 表查询处理 2026-01-12 21:21:11 +08:00
8d995cb5b4 幸运币 2026-01-12 21:18:55 +08:00
059703b1f4 幸运币 2026-01-12 20:54:58 +08:00
dc9d6671a4 幸运币 2026-01-12 20:40:38 +08:00
a4ee889127 优化:Give_Gift 表查询处理 2026-01-12 20:22:30 +08:00
9f8e25948a 优化:Give_Gift 表查询处理 2026-01-12 20:16:46 +08:00
46821425a8 优化:Give_Gift 表查询处理 2026-01-12 20:12:15 +08:00
48625c4845 优化:Give_Gift 表查询处理 2026-01-12 20:08:48 +08:00
0447163694 优化:Give_Gift 表查询处理 2026-01-12 20:02:18 +08:00
323c800751 优化:Give_Gift 表查询处理 2026-01-12 19:57:37 +08:00
f45b60c9d3 优化:Give_Gift 表查询处理 2026-01-12 19:56:04 +08:00
aaa1837502 优化:Give_Gift 表查询处理 2026-01-12 19:49:30 +08:00
9a27bb7014 清除数据删除 2026-01-12 19:33:33 +08:00
96ff53bbea 优化:Give_Gift 表查询处理 2026-01-12 18:56:02 +08:00
29f7626fc8 优化:Give_Gift 表查询处理 2026-01-12 18:51:03 +08:00
0b687e6712 bug修改:公会群主错误修改 2026-01-12 17:45:48 +08:00
b22c9af6a6 优化:钱包表更换。 2026-01-12 14:58:35 +08:00
bc0f052359 K歌房 点歌限制和点歌搜索 2026-01-12 14:43:28 +08:00
64d0812adb 巡乐会开始时间调整,30秒调成20秒 2026-01-12 14:09:05 +08:00
a3109f6ab4 排行榜 2026-01-12 11:40:04 +08:00
903496c893 房间排行榜 2026-01-12 11:33:40 +08:00
a198a31755 房间排行榜 2026-01-12 11:14:26 +08:00
8b5a368b17 房间排行榜 2026-01-12 11:11:51 +08:00
6c051fa8e7 房间排行榜 2026-01-12 11:08:47 +08:00
98a94385a3 房间排行榜 2026-01-12 11:01:34 +08:00
a0b16e8f72 房间排行榜 2026-01-12 10:59:59 +08:00
ae1421c495 房间排行榜 2026-01-12 10:58:39 +08:00
74759b5599 房间排行榜 2026-01-12 10:57:17 +08:00
d7838b772a 房间排行榜 2026-01-12 10:55:03 +08:00
fa350cb505 房间排行榜 2026-01-12 10:50:47 +08:00
fe830e1a52 房间排行榜 2026-01-12 10:47:22 +08:00
8b3c6e45ef 房间排行榜 2026-01-12 10:40:26 +08:00
36e8fec12f 房间排行榜 2026-01-12 10:39:12 +08:00
963df499b9 房间排行榜 2026-01-12 10:36:08 +08:00
7d77ba7745 房间排行榜 2026-01-12 10:33:49 +08:00
f0bc7ec9ed 房间排行榜 2026-01-12 10:32:24 +08:00
377392b9dd 房间排行榜 2026-01-12 10:31:07 +08:00
1057fadb57 用户找回 2026-01-12 10:18:34 +08:00
97e6c41725 房间排行榜 2026-01-12 09:21:48 +08:00
90c4ec7346 排行榜 2026-01-09 20:20:20 +08:00
c22414b2fd 排行榜 2026-01-09 20:13:54 +08:00
9a95595dd8 排行榜 2026-01-09 20:12:17 +08:00
be15b70885 线上bug修改 2026-01-09 20:08:04 +08:00
57a0c4f21d 排行榜 2026-01-09 19:46:01 +08:00
53e01f61ad 排行榜 2026-01-09 19:42:11 +08:00
5e37cddc82 排行榜 2026-01-09 19:13:31 +08:00
446af258b9 排行榜 2026-01-09 19:10:58 +08:00
35deebd0f8 排行榜 2026-01-09 19:09:22 +08:00
e753695146 排行榜 2026-01-09 19:08:19 +08:00
4152f46504 排行榜 2026-01-09 18:45:04 +08:00
e293cacd44 排行榜 2026-01-09 18:27:00 +08:00
fbfc0975dd 排行榜 2026-01-09 18:24:44 +08:00
d8a299e4a2 排行榜 2026-01-09 18:23:56 +08:00
4d284c4328 排行榜 2026-01-09 18:14:41 +08:00
413ff05221 排行榜 2026-01-09 18:12:03 +08:00
334dca1b5d 排行榜 2026-01-09 18:09:05 +08:00
23bcf3f864 排行榜 2026-01-09 18:05:58 +08:00
a6bf88c22d 排行榜 2026-01-09 18:04:19 +08:00
737fb817d3 排行榜 2026-01-09 18:03:29 +08:00
40879dd516 排行榜 2026-01-09 18:01:43 +08:00
280d4be22b 排行榜 2026-01-09 18:00:02 +08:00
dd3622adf0 排行榜 2026-01-09 17:59:03 +08:00
fc543ed9c1 排行榜 2026-01-09 17:58:15 +08:00
26e4b4ac82 排行榜 2026-01-09 17:57:16 +08:00
0660edfeeb 排行榜 2026-01-09 17:55:40 +08:00
ffb073bf92 排行榜 2026-01-09 17:54:37 +08:00
155a66d84c 排行榜 2026-01-09 17:53:33 +08:00
c9b1d4c541 排行榜 2026-01-09 17:52:02 +08:00
598dd3c471 排行榜 2026-01-09 17:51:18 +08:00
bd5cf6a0c5 排行榜 2026-01-09 17:50:39 +08:00
e4c73706bb 排行榜 2026-01-09 17:45:07 +08:00
8b9fd4d927 排行榜 2026-01-09 17:39:46 +08:00
31c9d2a325 提现bug修改 2026-01-09 16:29:56 +08:00
77c7e300f5 酒吧房类型修改 2026-01-09 16:12:31 +08:00
55e48b5e13 房间流水统计 2026-01-09 15:10:29 +08:00
42785f219f 房间流水统计 2026-01-09 15:08:30 +08:00
5bc428b5f1 房间流水统计 2026-01-09 15:06:01 +08:00
9c7dbe9b4d 房间流水统计 2026-01-09 15:01:15 +08:00
843b16f5cd 房间流水统计 2026-01-09 14:57:44 +08:00
ce4e9ff0d7 房间流水统计 2026-01-09 14:53:43 +08:00
46c4671920 酒吧房类型修改 2026-01-09 14:48:21 +08:00
8e59118d68 房间流水统计 2026-01-09 14:47:00 +08:00
727132bef1 房间流水统计 2026-01-09 14:39:29 +08:00
9066ea946f 酒吧房类型修改 2026-01-09 14:38:07 +08:00
d091589dac 房间流水统计 2026-01-09 14:35:40 +08:00
bcafb4fae6 房间流水统计 2026-01-09 11:28:20 +08:00
c6ca1094bf 测试数据 2026-01-09 10:30:45 +08:00
f509962c9b 送礼记录往后放 2026-01-09 10:21:02 +08:00
ae8f35f54e 小黑屋心动值 2026-01-09 09:10:53 +08:00
7e6fdad0cf 用户流水拆分 分金币和钻石存储 2026-01-08 20:35:37 +08:00
e859b65659 切换酒吧房 room_info 数据 2026-01-08 19:02:18 +08:00
feb8dff689 私密小屋 送礼增加时长 2026-01-08 18:57:11 +08:00
dae88e5ae6 换麦 2026-01-08 18:34:02 +08:00
3c8aa521ae 上麦推送自由礼物 2026-01-08 18:08:28 +08:00
f7239cd9d4 酒吧房不允许嘉宾直接换麦 2026-01-08 18:00:08 +08:00
9c9af7ce1f 酒吧房不允许嘉宾直接换麦 2026-01-08 17:52:28 +08:00
965718a18e 换麦 2026-01-08 17:43:37 +08:00
716dcb810e 换麦 2026-01-08 17:39:43 +08:00
8536183aad 换麦 2026-01-08 17:27:44 +08:00
6e3b88c61c 换麦 推送麦位时间 2026-01-08 17:24:26 +08:00
bfbdcb8708 抱麦 2026-01-08 17:20:05 +08:00
b7f782db4a 动态打赏 2026-01-08 17:06:55 +08:00
d5c597db92 动态打赏 2026-01-08 16:56:28 +08:00
f392b8c2ae 充值 2026-01-08 16:27:34 +08:00
ae30b71aed 苹果商家版本不验证首页token 2026-01-08 15:48:08 +08:00
9144f06859 苹果商家版本不验证首页token 2026-01-08 15:30:27 +08:00
74c496efbe 苹果商家版本不验证首页token 2026-01-08 15:18:05 +08:00
eddb1e2fc0 酒吧房点击用户头像 2026-01-08 15:08:20 +08:00
7e64fe73a9 酒吧房点击用户头像 2026-01-08 14:29:25 +08:00
d81c2c977d 房间内流水详情 2026-01-08 14:22:06 +08:00
fcf5dcf94a 房间内流水详情 2026-01-08 14:14:38 +08:00
e1c45ea6cf 房间内流水详情 2026-01-08 14:11:37 +08:00
5495e82905 房间内流水详情 2026-01-08 14:09:44 +08:00
805bbf9d00 房间内流水详情 2026-01-08 14:08:05 +08:00
db01e57029 房间内流水详情 2026-01-08 14:06:05 +08:00
f4c8c1ac9c 房间内流水详情 2026-01-08 12:01:54 +08:00
c04bcb7072 房间内流水详情 2026-01-08 11:59:42 +08:00
52893ee84f 任务列表统计 修改 2026-01-08 11:13:19 +08:00
a6a844ade0 小黑屋 不展示小时榜 2026-01-08 09:39:40 +08:00
b3e63d74ac 进入酒吧房 2026-01-08 09:35:28 +08:00
05aedf2231 退出酒吧房小黑屋 通知另一个人也退出 2026-01-08 09:31:25 +08:00
971d11c27d 实名去掉身份证号前后的空格 2026-01-08 09:26:45 +08:00
b79dc9236c Merge remote-tracking branch 'origin/develop' into develop 2026-01-08 09:18:09 +08:00
24abbba56d 实名认证优化 2026-01-08 09:17:45 +08:00
89992325e5 私密小屋 到期推送退出 2026-01-08 09:10:00 +08:00
d4201cf3a6 房间流水详情 2026-01-07 20:58:27 +08:00
94f6521907 房间流水详情 2026-01-07 20:48:40 +08:00
16db1ccf1f 房间流水详情 2026-01-07 20:38:58 +08:00
cd4e70b4d7 房间流水详情 2026-01-07 20:32:29 +08:00
ff52c3fee9 房间流水详情 2026-01-07 20:30:42 +08:00
d60e9cb0e0 房间流水详情 2026-01-07 20:15:37 +08:00
3087e7aa6a 房间送礼信息 和 进入小黑屋 2026-01-07 20:12:49 +08:00
92cf24a9dd 修改错误记录 2026-01-07 19:25:11 +08:00
7b428dc9ab 公会拦截实名认证修改 2026-01-07 19:15:50 +08:00
14fc8ce0a3 酒吧房:->相关接口提交-接口bug修改 2026-01-07 19:05:28 +08:00
f8efd223ee 酒吧房:->相关接口提交-接口bug修改 2026-01-07 18:55:06 +08:00
227ad92a2f 推送消息加换行 2026-01-07 18:49:29 +08:00
05915ae64a 推送消息加换行 2026-01-07 18:48:03 +08:00
b5834b4c33 推送消息加换行 2026-01-07 18:46:04 +08:00
136a819ccf 推送消息加换行 2026-01-07 18:44:54 +08:00
2249223d31 设置麦位时长 2026-01-07 18:17:03 +08:00
bf214611c3 全撩 2026-01-07 18:14:20 +08:00
174c9fd7b3 Merge remote-tracking branch 'origin/develop' into develop 2026-01-07 17:59:09 +08:00
1291553ed9 酒吧房:->相关接口提交-接口bug修改 2026-01-07 17:59:02 +08:00
fff27c609b 送礼异步操作数据完整性过滤 2026-01-07 17:52:15 +08:00
c25ea4edc4 优化:用户钱包操作方法修改。---后台用户列表修改 2026-01-07 17:40:43 +08:00
fac55d0614 酒吧房 麦位用户到期 下麦 2026-01-07 17:36:11 +08:00
519ba46165 优化:用户钱包操作方法修改。---后台用户列表修改 2026-01-07 17:33:37 +08:00
040f3312fa 优化:用户钱包操作方法修改。---后台用户列表修改 2026-01-07 17:28:50 +08:00
9612381897 优化:用户钱包操作方法修改。---后台用户列表修改 2026-01-07 17:27:23 +08:00
2d2aaf3372 优化:用户钱包操作方法修改。---后台用户列表修改 2026-01-07 17:25:55 +08:00
778e067540 优化:用户钱包操作方法修改。---后台用户列表修改 2026-01-07 17:23:35 +08:00
13dfbd7e0c 优化:用户钱包操作方法修改。---后台用户列表修改 2026-01-07 17:20:13 +08:00
6f883cabdc 进入房间的时候 参数 2026-01-07 17:13:19 +08:00
9eebfd8268 优化:用户钱包操作方法修改。---后台用户列表修改 2026-01-07 17:07:20 +08:00
1cedc4d547 Merge remote-tracking branch 'origin/develop' into develop 2026-01-07 17:00:45 +08:00
b7538b0340 优化:用户钱包操作方法修改。 2026-01-07 17:00:37 +08:00
5b467fca78 酒吧房设置选礼物 2026-01-07 16:59:27 +08:00
3cc5ee00b8 Merge remote-tracking branch 'origin/develop' into develop 2026-01-07 16:56:36 +08:00
da10e294ae 优化:用户钱包操作方法修改。 2026-01-07 16:56:28 +08:00
1c17ec17ce 酒吧房设置选礼物 2026-01-07 16:46:07 +08:00
eeba316880 优化:用户钱包操作方法修改。 2026-01-07 16:44:54 +08:00
95768638ac 酒吧房上麦选礼物 2026-01-07 16:39:58 +08:00
99c95a92e1 酒吧房上麦选礼物 2026-01-07 16:37:26 +08:00
40af6214b2 签约用户资金变动修改 2026-01-07 15:41:10 +08:00
9095851f33 bug修改 2026-01-07 15:36:44 +08:00
ac4897f0ac bug修改 2026-01-07 15:15:14 +08:00
38732a626a 金币钻石日志 2026-01-07 15:00:34 +08:00
726d1c7c55 修改房间信息 后清除房间信息缓存 2026-01-07 14:45:00 +08:00
f4edac6ef5 转币5分钟限制 2026-01-07 14:39:24 +08:00
fb9963d49f 转币5分钟限制 2026-01-07 14:13:19 +08:00
53d38e816c 转币5分钟限制 2026-01-07 13:59:52 +08:00
f11fc0a099 创建新钱包和钻石兑换5分钟限制 2026-01-07 13:57:24 +08:00
12b6d1b866 用户的金币钻石流水记录 2026-01-07 13:24:40 +08:00
8791579969 Merge remote-tracking branch 'origin/develop' into develop 2026-01-07 12:28:20 +08:00
d1f5dbf5e9 盲盒转盘错误修改 2026-01-07 12:28:14 +08:00
d1d07197f1 酒吧 小黑屋 流水记录在酒吧房 2026-01-07 11:53:15 +08:00
b46bef67df 酒吧房 约他 2026-01-06 20:44:50 +08:00
8ee7b255f3 酒吧房:->相关接口提交-盲盒转盘-送礼接口修改 2026-01-06 20:11:56 +08:00
38705cc76a 酒吧房 约他 2026-01-06 19:57:31 +08:00
5a76970fb4 酒吧房上麦的时候 选择礼物和时间 2026-01-06 19:42:28 +08:00
33bc871529 酒吧房上麦的时候 选择礼物和时间 2026-01-06 19:37:41 +08:00
71f24f26c8 进入房间 和room_info lit_list里面加end_time 2026-01-06 19:13:45 +08:00
dd71e57903 进入房间 和room_info 撩他信息更新 2026-01-06 19:02:26 +08:00
fef69f0640 撩他礼物推送 2026-01-06 18:54:33 +08:00
d96931c7e5 酒吧房:->相关接口提交-撩TA接口 2026-01-06 18:37:32 +08:00
5ffe2fc3df 酒吧房:->相关接口提交-撩TA接口 2026-01-06 18:21:45 +08:00
132e9df303 送礼优化 相关 2026-01-06 17:40:13 +08:00
581122b4d9 酒吧房:->相关接口提交-撩TA接口 2026-01-06 17:39:20 +08:00
88682f65ce 酒吧房:->相关接口提交-bug修改 2026-01-06 15:20:23 +08:00
de17f54160 酒吧房:->相关接口提交-bug修改 2026-01-06 14:58:23 +08:00
fcf19e80a4 酒吧房:->相关接口提交-bug修改 2026-01-06 14:41:42 +08:00
41f10bc387 酒吧房:->相关接口提交-bug修改 2026-01-06 11:57:03 +08:00
8221bfb85b 线上bug修改-任务统计 2026-01-06 11:13:15 +08:00
a701321417 线上bug修改-任务统计 2026-01-06 10:33:36 +08:00
ff961f42ee 线上bug修改-任务统计 2026-01-06 09:41:21 +08:00
a3f6327739 酒吧房:->相关接口提交-bug修改 2026-01-05 20:44:50 +08:00
0d758d8587 酒吧房:->相关接口提交-bug修改 2026-01-05 19:48:27 +08:00
499f9407b6 酒吧房:->相关接口提交-bug修改 2026-01-05 18:56:05 +08:00
d1cdb23175 酒吧房:->相关接口提交-bug修改 2026-01-05 18:29:46 +08:00
cb6516bfea 酒吧房:->相关接口提交-bug修改 2026-01-05 18:19:28 +08:00
ba78531cbe Merge branch 'develop_test' into develop 2026-01-05 15:44:58 +08:00
b30efada95 酒吧房相关 2026-01-05 15:43:02 +08:00
203aeb3842 酒吧房:->相关接口提交-麦位结束脚本提交 2026-01-05 15:24:50 +08:00
c2765a0260 酒吧房相关 2026-01-05 15:16:42 +08:00
c0a175092f 酒吧房:->相关接口提交 2026-01-05 14:25:31 +08:00
a6bc94af50 每日任务领取金币统计 2026-01-05 11:22:05 +08:00
7373d66506 酒吧房:->相关接口提交 2026-01-04 19:00:02 +08:00
07ed282141 评论 评论 和点歌置顶 2026-01-04 11:49:34 +08:00
3972716675 酒吧房:->礼物类型设置 2026-01-04 11:38:38 +08:00
0e80ab61a2 装备降身卡购买修改 2026-01-04 11:13:21 +08:00
20071a4f40 管理端动态回复 2026-01-04 09:24:39 +08:00
3c5db83d4c 记录装扮列表日志打印输出 2026-01-03 20:50:23 +08:00
c1c79075d1 Merge remote-tracking branch 'origin/develop' into develop 2026-01-03 18:51:37 +08:00
0aa351cd63 调整装扮列表 2026-01-03 18:51:30 +08:00
624a9478de 在虚拟麦位的用户 在房间在线列表处理 2026-01-03 17:33:13 +08:00
2865e800e6 交友房结束 2026-01-03 17:11:48 +08:00
928f86011a room_info修改 2026-01-03 17:04:25 +08:00
4086c8282f Merge remote-tracking branch 'origin/develop' into develop 2026-01-03 16:48:21 +08:00
005533fd27 动态评论回复添加 2026-01-03 16:48:11 +08:00
f5e8fad6bd 拍卖房在线用户 2026-01-03 16:26:16 +08:00
5c6b6e028b 在线列表 拍卖房处理 2026-01-03 16:18:58 +08:00
f1acf8db53 广告位调整 2026-01-03 16:12:31 +08:00
93b21b4ee0 房间在线列表处理 2026-01-03 15:53:03 +08:00
891087cf7a 道具商城调整。 2026-01-03 14:51:53 +08:00
618623432a Merge remote-tracking branch 'origin/develop' into develop 2026-01-03 14:48:48 +08:00
165e0565b5 道具商城调整。 2026-01-03 14:48:42 +08:00
630e67693f 后台封禁 让登录失效 2026-01-03 14:17:47 +08:00
fce818807e 获取系统消息 字段减少 2026-01-03 13:49:50 +08:00
4a254d9f28 k歌房 有已点歌曲 但是没有正在演唱的歌 置顶解决 2026-01-03 12:55:04 +08:00
52d41e9e36 交友结束 部分逻辑修改 2026-01-03 11:31:23 +08:00
34b74335c2 Merge remote-tracking branch 'origin/develop' into develop 2026-01-03 10:58:43 +08:00
1119e366ee bug修改。 2026-01-03 10:58:37 +08:00
632527da5c 交友结束 部分逻辑修改 2026-01-03 10:55:49 +08:00
78c06adaf8 群成员列表加搜索功能 2026-01-03 10:20:11 +08:00
8d6beb7884 进入小房间 房主信息返回null 修改 2026-01-02 18:13:17 +08:00
68d1fe3cf6 Merge remote-tracking branch 'origin/develop' into develop 2026-01-02 17:57:10 +08:00
93e7cb60e8 新礼物列表接口修改提交 2026-01-02 17:57:04 +08:00
569bdbf4ce 房间在线列表报错处理 2026-01-02 17:40:24 +08:00
f54a9b6728 群聊禁言 2026-01-02 17:27:13 +08:00
686f24e090 礼物列表新建控制器和方法 2026-01-02 17:14:40 +08:00
09147525a0 群聊禁言 2026-01-02 16:51:33 +08:00
149546ee8e Merge remote-tracking branch 'origin/develop' into develop 2026-01-02 16:22:40 +08:00
1535a5cc33 巡乐会bug修改 2026-01-02 16:22:34 +08:00
9539bc069e 送礼失败 回滚 2026-01-02 16:10:35 +08:00
d5703bd99a 交友结束 3分钟不操作卡无关系 2026-01-02 15:52:45 +08:00
821ec4183f 送礼异步处理 2026-01-02 15:42:12 +08:00
b1ff156a6c 巡乐会bug修改 2026-01-02 15:21:15 +08:00
df06595007 巡乐会bug修改 2026-01-02 15:07:25 +08:00
2a7179abe5 进入房间 推送在线 歌手上传自己的歌曲 同名去掉限制 2026-01-02 14:21:10 +08:00
4be7ddc1c2 线上bug修改 2026-01-02 12:36:46 +08:00
c438fb049e 禁言 2025-12-31 19:54:43 +08:00
70d5e2fc80 禁言关了 2025-12-31 19:46:09 +08:00
3824fae695 隐藏房间 上麦取消隐藏 功能关闭 点歌删除 2025-12-31 17:59:03 +08:00
55161e242e 数据清洗接口提交 2025-12-31 15:21:02 +08:00
fbcc2a0483 公会合并测试 2025-12-31 14:11:27 +08:00
befc1bf41e 公会合并测试 2025-12-31 14:02:49 +08:00
55abd48d30 公会合并测试 2025-12-31 13:44:40 +08:00
7a6695c7ed 公会合并测试 2025-12-31 13:39:20 +08:00
239815839a 退出公会提出群聊 2025-12-31 13:20:40 +08:00
a385776538 退出公会提出群聊 2025-12-31 12:59:17 +08:00
96822cf248 点歌列表 添加用户code 2025-12-31 12:16:38 +08:00
35a90fef3b 房间是否显示 后台 2025-12-31 11:46:03 +08:00
67ae480665 房间是否显示 后台 2025-12-31 11:43:00 +08:00
5420a24800 房间是否显示 后台 2025-12-31 11:33:12 +08:00
002f20af78 切换练歌房 后台不验权限 2025-12-31 11:29:31 +08:00
30ad1e720d 房间是否显示 后台 2025-12-31 11:27:50 +08:00
999a5603be 房间是否显示 后台 2025-12-31 11:25:59 +08:00
ffa9cc98ed 房间是否显示 后台 2025-12-31 11:12:22 +08:00
f81b84cf39 房间是否显示 后台 2025-12-31 11:11:43 +08:00
c366cc34b0 房间是否显示 后台 2025-12-31 11:10:09 +08:00
98be6cc43e Merge remote-tracking branch 'origin/develop' into develop 2025-12-31 10:51:10 +08:00
9dba7647c5 切换练歌房 后台不验权限 2025-12-31 10:50:54 +08:00
7f55f1997a Merge remote-tracking branch 'origin/develop' into develop 2025-12-31 10:50:34 +08:00
88ebe674de 房间是否显示 前台添加 2025-12-31 10:50:27 +08:00
cedc621e95 练歌房 不支持手机端切换 2025-12-31 10:45:11 +08:00
4187931abd 内侧房间不让进 2025-12-31 10:40:31 +08:00
a8b3d30ac6 房间是否显示 前台添加 2025-12-31 10:12:17 +08:00
f439929e6d Merge remote-tracking branch 'origin/develop' into develop 2025-12-31 03:19:45 +08:00
b68db7b6c5 每日12点统计用户数据 2025-12-31 03:19:22 +08:00
ffd2769bad 房间在线列表优化 2025-12-31 03:12:59 +08:00
150aa8f5c7 未实名不能收礼 2025-12-31 02:05:35 +08:00
bb68bdd25b 异步更新数据 2025-12-30 23:49:48 +08:00
b3e52f9c3d bug修改 2025-12-30 23:35:09 +08:00
07c71c04ba bug修改 2025-12-30 22:58:02 +08:00
358dd0f2b7 bug修改 2025-12-30 22:14:42 +08:00
a1324cf390 Merge remote-tracking branch 'origin/develop' into develop 2025-12-30 19:58:01 +08:00
c0509263d4 任务记录统计提交 2025-12-30 19:57:54 +08:00
f5187c013e 苹果用户 上架版本更新 2025-12-30 19:31:56 +08:00
33e9b3612a 苹果用户 上架版本更新 2025-12-30 18:37:19 +08:00
0fe00cf140 测试bug修改 2025-12-30 18:36:12 +08:00
0d2bdb5f18 收礼用户必须实名 2025-12-30 18:34:32 +08:00
9e3ef5090a 测试bug修改 2025-12-30 18:17:18 +08:00
7a8a6ed462 测试bug修改 2025-12-30 18:05:07 +08:00
3cd1ab90d6 测试bug修改 2025-12-30 17:59:03 +08:00
fd2809c1a8 room_info信息 2025-12-30 17:53:29 +08:00
b47dc76429 红包配置信息接口 2025-12-30 17:35:23 +08:00
0dcc0bfa80 修改房间拍卖模式 清除缓存 2025-12-30 17:34:20 +08:00
f05205b3c1 修改房间拍卖模式 清除缓存 2025-12-30 17:32:16 +08:00
4cdbc6a7cc 提现返回状态兼容。 2025-12-30 16:59:34 +08:00
7b827874e0 Merge remote-tracking branch 'origin/develop' into develop 2025-12-30 16:45:37 +08:00
8538410fec 用户实名注册限制
邀请收益规则调整
新手任务领取限制
红包功能调整
元旦换肤
2025-12-30 16:45:30 +08:00
def606d3a0 修改房间拍卖模式 清除缓存 2025-12-30 16:13:46 +08:00
454816959c 分表数据 2025-12-30 16:11:14 +08:00
ed923cd0bf 分表数据 2025-12-30 15:25:58 +08:00
2f5457107c 进入房间保持心条 修改为在线 2025-12-30 11:38:43 +08:00
f8e7ff1d52 分表 2025-12-30 11:37:21 +08:00
6dc429ec36 节日主题更换接口提交 2025-12-30 09:34:36 +08:00
51338300c5 Merge remote-tracking branch 'origin/develop' into develop 2025-12-29 22:15:58 +08:00
87290ab4c9 未完成任务数量 查询优化 2025-12-29 22:15:52 +08:00
479fd37014 修改房间信息 缓存清除 2025-12-29 20:40:04 +08:00
a2f11a319e 钻石兑换金币 2025-12-29 20:24:37 +08:00
48b217fce0 钻石兑换金币 2025-12-29 20:19:26 +08:00
3cf0f68569 钻石兑换金币 2025-12-29 20:08:22 +08:00
7a8faf7ae9 钻石兑换金币 2025-12-29 20:06:39 +08:00
73094e132d 钻石兑换金币 2025-12-29 19:02:01 +08:00
0b8655e5d2 Merge remote-tracking branch 'origin/develop' into develop 2025-12-29 18:52:44 +08:00
705018e3e8 公会流水bug修改 2025-12-29 18:52:25 +08:00
a17697056a 签约 2025-12-29 17:04:13 +08:00
793804fe45 修改用户信息 清除缓存的用户信息 2025-12-29 16:52:19 +08:00
805a665392 公会后台-流水修改 2025-12-29 15:44:55 +08:00
19a846c274 公会后台-流水修改 2025-12-29 15:38:15 +08:00
0499b8c98d 公会后台-流水修改 2025-12-29 15:34:11 +08:00
69daeb15ee Merge remote-tracking branch 'origin/develop' into develop 2025-12-29 15:26:41 +08:00
316b916052 修改用户信息 清除缓存的用户信息 2025-12-29 15:26:27 +08:00
81f44d4a81 Merge remote-tracking branch 'origin/develop' into develop 2025-12-29 15:26:20 +08:00
797c6c1e62 背包数据 2025-12-29 12:51:51 +08:00
7f0fbadb51 背包数据 2025-12-29 12:50:45 +08:00
50396ae5e4 背包数据 2025-12-29 12:44:49 +08:00
0f0907b534 背包数据 2025-12-29 12:43:02 +08:00
bfc40fb248 背包数据 2025-12-29 12:42:17 +08:00
8df95110cf 背包数据 2025-12-29 12:40:10 +08:00
6cde21fe2d 用户背包 2025-12-29 12:39:04 +08:00
2ab9208236 用户背包 2025-12-29 11:23:36 +08:00
32a8b351df Revert "bug修改"
This reverts commit 63b64dfb18.
2025-12-29 10:36:48 +08:00
84273faee1 房间内点击用户信息 2025-12-29 10:32:43 +08:00
674e026c29 Merge remote-tracking branch 'origin/develop' into develop 2025-12-28 21:51:26 +08:00
85a3776ab0 公会流水展示修改。 2025-12-28 21:51:19 +08:00
b695ef4209 雪花算法 2025-12-26 18:46:06 +08:00
fccdfb1c0a 公会流水展示修改。 2025-12-26 18:07:06 +08:00
56cfdea96e 通知签约上级徒弟48小时后到期 2025-12-26 16:30:52 +08:00
9522170898 Merge remote-tracking branch 'origin/develop' into develop 2025-12-26 15:29:37 +08:00
d787e3941a 通知签约上级徒弟48小时后到期 2025-12-26 15:29:31 +08:00
50ff822b10 苹果充值 1999.00 2025-12-26 15:25:35 +08:00
bf5333937e Merge remote-tracking branch 'origin/develop' into develop 2025-12-26 15:16:38 +08:00
7b3fff03c4 通知签约上级徒弟48小时后到期 2025-12-26 15:16:29 +08:00
fd8e4c7c79 雪花算法 2025-12-26 14:26:01 +08:00
8f7ea8b289 任务bug修改 2025-12-26 14:02:32 +08:00
f9de7a3a06 雪花算法 2025-12-26 11:47:14 +08:00
8307b6c83d 公会流水清洗更换 2025-12-26 10:17:33 +08:00
36f4187ada 用户详情 加家族成员-解约 2025-12-25 16:49:55 +08:00
5a72687aee Merge remote-tracking branch 'origin/develop' into develop 2025-12-25 16:29:20 +08:00
7d8b0d766c 用户详情 加家族成员 2025-12-25 16:29:14 +08:00
f9539d9675 礼物列表缓存 2025-12-25 16:28:50 +08:00
434caca2b0 礼物列表缓存 2025-12-25 16:20:02 +08:00
9fca28c57f token 缓存信息放到5表里 2025-12-25 15:15:46 +08:00
877c4cfcb4 幸运币加提示字段 2025-12-25 14:49:41 +08:00
769b5af542 师徒任务bug修改-任务24 2025-12-25 13:01:25 +08:00
5b0eac6db6 师徒任务bug修改-任务24 2025-12-25 12:50:41 +08:00
20e68f280d Merge remote-tracking branch 'origin/develop' into develop 2025-12-25 12:33:08 +08:00
7d2c35c4c7 师徒任务bug修改-任务24 2025-12-25 12:32:47 +08:00
8e032deff2 在嘉宾麦上 然后上主持麦 2025-12-25 11:48:29 +08:00
4b68ed4ca1 在嘉宾麦上 然后上主持麦 2025-12-25 11:47:14 +08:00
58621423f1 修改用户信息后清除用户信息缓存 2025-12-25 11:38:16 +08:00
843693f4f9 修改用户信息后清除用户信息缓存 2025-12-25 09:59:16 +08:00
a45d928567 修改房间类型后清楚房间信息缓存 2025-12-25 09:54:41 +08:00
440ff3b11f 苹果支付生成订单 和支付金额 2025-12-25 09:47:02 +08:00
2143a7d6c8 苹果支付生成订单 和支付金额 2025-12-25 09:38:28 +08:00
82df081fd0 苹果支付生成订单 和支付金额 2025-12-25 09:08:23 +08:00
89c86fc21d 苹果支付生成订单 和支付金额 2025-12-25 09:01:12 +08:00
e3e51f222d 苹果支付生成订单 和支付金额 2025-12-25 08:59:01 +08:00
eab06a9b10 苹果支付生成订单 和支付金额 2025-12-24 20:42:04 +08:00
d87d469aa3 苹果支付生成订单 和支付金额 2025-12-24 20:38:09 +08:00
c5d1a2f893 Merge remote-tracking branch 'origin/develop' into develop 2025-12-24 20:22:00 +08:00
136802fa48 师徒任务bug修改 2025-12-24 20:21:54 +08:00
6488f65bd3 苹果支付生成订单 和支付金额 2025-12-24 19:41:01 +08:00
545ce25703 交友换麦 在离线处理 2025-12-24 19:02:13 +08:00
3003b489a3 Merge remote-tracking branch 'origin/develop' into develop 2025-12-24 18:13:08 +08:00
60d800ba0d 爵位bug修改 2025-12-24 18:13:00 +08:00
25635b0e46 数据缓存处理 2025-12-24 17:17:06 +08:00
2fb87137dd 数据缓存处理 2025-12-24 17:15:43 +08:00
16134c993a 数据缓存处理 2025-12-24 17:14:24 +08:00
d672397e35 数据缓存处理 2025-12-24 17:13:14 +08:00
3831baa37a 数据缓存处理 2025-12-24 17:11:48 +08:00
20a8ff5e98 数据缓存处理 2025-12-24 17:05:32 +08:00
fa35040a88 数据缓存处理 2025-12-24 17:00:06 +08:00
d3d461e316 数据缓存处理 2025-12-24 16:57:16 +08:00
ae518ca9e5 数据缓存处理 2025-12-24 16:47:12 +08:00
3ad46c624b 数据缓存处理 2025-12-24 16:41:01 +08:00
6c311abb98 数据缓存处理 2025-12-24 16:33:34 +08:00
f3e692f3fc 数据缓存处理 2025-12-24 16:21:07 +08:00
0dfccdd617 公会流水清洗修改 2025-12-24 16:14:24 +08:00
6466b0cab7 Merge remote-tracking branch 'origin/develop' into develop 2025-12-24 12:21:01 +08:00
fc0f6cd725 提现bug修改 2025-12-24 12:20:55 +08:00
270714928b 练歌房 最后一首歌 切歌后处理 2025-12-24 09:56:03 +08:00
53e5e52203 盲盒转盘落包,加推送。 2025-12-23 18:39:37 +08:00
58d77b1e1a 盲盒转盘落包,加推送。 2025-12-23 18:36:35 +08:00
ee59c5ccff Merge remote-tracking branch 'origin/develop' into develop 2025-12-23 18:34:37 +08:00
b63184ce52 盲盒转盘落包,加推送。 2025-12-23 18:34:31 +08:00
ef86241ad4 腾讯群组 邀请好友和删除好友 修改为管理员 2025-12-23 17:23:09 +08:00
28b4c9bb76 幸运币全麦送 修改 2025-12-23 16:44:38 +08:00
697512c46d Merge remote-tracking branch 'origin/develop' into develop 2025-12-23 16:20:03 +08:00
63b64dfb18 bug修改 2025-12-23 16:19:57 +08:00
018865fcac 上架审核版本 和用户 使用版本比对 2025-12-23 14:11:23 +08:00
ea876dba28 上架审核版本 和用户 使用版本比对 2025-12-23 14:10:29 +08:00
c95410311d 清理房间离线超过1小时的用户 2025-12-23 02:14:56 +08:00
242ae07d2a 清理房间离线超过1小时的用户 2025-12-23 02:08:14 +08:00
5fca7b9e06 发送短信 ip限制 2025-12-23 01:59:20 +08:00
bae8b3158d 幸运币不要特效 2025-12-23 01:24:29 +08:00
c2d6df9384 支付回调不走高防 2025-12-23 01:12:08 +08:00
c860344609 拍卖结束 拍卖下麦 2025-12-23 01:10:27 +08:00
1e02332678 Merge remote-tracking branch 'origin/develop' into develop 2025-12-22 22:23:43 +08:00
d13dae6746 房间改为,非审核直接通过。 2025-12-22 22:23:36 +08:00
2860daef6e 拍卖结束 拍卖下麦 2025-12-22 20:43:29 +08:00
bf02aaad14 小时榜 2025-12-22 19:25:38 +08:00
d03e1285e4 小时榜 2025-12-22 19:23:15 +08:00
a60937297b 小时榜 2025-12-22 19:17:50 +08:00
f0898345a1 拍卖 2025-12-22 19:14:25 +08:00
41be4738da Merge remote-tracking branch 'origin/develop' into develop 2025-12-22 17:59:09 +08:00
b8a55853d5 加幸运币统计字段-前端加幸运值统计 2025-12-22 17:58:41 +08:00
7664fd812d 完善抢红包逻辑 2025-12-22 17:52:31 +08:00
702f09d0de 完善抢红包逻辑 2025-12-22 17:43:32 +08:00
7c002eab1d 抢红包 麦上用户 可抢 2025-12-22 17:16:20 +08:00
fe83b67ef4 幸运币 不参与各种礼物设置 2025-12-22 16:58:31 +08:00
9bfcc77d1c 爆币 2025-12-22 16:09:09 +08:00
5e66113357 爆币 2025-12-22 15:35:09 +08:00
9429cf17c1 爆币 2025-12-22 15:16:27 +08:00
48f6ce44ab 加幸运币统计字段-前端加幸运值统计 2025-12-22 14:37:41 +08:00
4ba205e565 加幸运币统计字段-修改-错误修改 2025-12-22 14:25:34 +08:00
2efcfd069c 加幸运币统计字段-修改-错误修改 2025-12-22 14:22:25 +08:00
901fe0dbc2 加幸运币统计字段-修改 2025-12-22 11:52:31 +08:00
88d21d0a6a 加幸运币统计字段-修改 2025-12-22 10:00:36 +08:00
1e69aa94a7 Merge remote-tracking branch 'origin/develop' into develop 2025-12-22 09:44:41 +08:00
5dde1fa795 加幸运币统计字段 2025-12-22 09:44:34 +08:00
6f32ca2b08 爆币 2025-12-22 09:13:52 +08:00
8191237775 爆币 2025-12-21 20:59:41 +08:00
b9d876437a 爆币 2025-12-21 20:57:14 +08:00
0624562dda 爆币 2025-12-21 20:54:12 +08:00
694483f526 爆币 2025-12-21 20:10:18 +08:00
0630170a72 Merge remote-tracking branch 'origin/develop' into develop 2025-12-21 20:01:54 +08:00
bf3b69da7d 爆币后台接口开发提交 2025-12-21 20:01:47 +08:00
cc922eceb8 爆币 2025-12-21 19:58:30 +08:00
43c188e8a9 爆币 2025-12-21 19:22:46 +08:00
33450890aa 爆币 2025-12-21 19:08:05 +08:00
6e81a0942f 爆币 2025-12-21 18:18:18 +08:00
58865a984a 爆币 2025-12-21 18:13:54 +08:00
444a2c59e8 爆币 2025-12-21 18:06:39 +08:00
604d60eb71 爆币 2025-12-21 17:32:55 +08:00
95bb00e2cc 爆币 2025-12-21 17:28:11 +08:00
92a2fb10cd 爆币 2025-12-21 17:16:54 +08:00
e0d854b1fd 爆币 2025-12-21 17:15:13 +08:00
e2b55a4f28 爆币 2025-12-21 17:12:37 +08:00
f318e54a3a 爆币 2025-12-21 17:11:25 +08:00
685bca8bdb 爆币 2025-12-21 17:10:26 +08:00
73b3808dec 爆币 2025-12-21 17:09:46 +08:00
400461fd5a 爆币 2025-12-21 17:08:57 +08:00
763b1b1892 爆币 2025-12-21 17:05:55 +08:00
f81440882b 爆币 2025-12-21 17:03:05 +08:00
c661018a1e 爆币 2025-12-21 16:58:11 +08:00
bdb738a47f 爆币 2025-12-21 16:50:56 +08:00
e71d01c5a0 爆币 2025-12-21 16:47:39 +08:00
051d6589e9 爆币 2025-12-21 16:39:53 +08:00
f9f0d01948 爆币 2025-12-21 16:04:34 +08:00
4f32f98ad2 任务排序调整 2025-12-21 12:01:28 +08:00
5cff222264 盲盒转盘-岁月之城,时空之旅,抽奖结果转落包。
-特效限制添加-加开启状态判断
2025-12-21 10:13:58 +08:00
c68bb44650 临时加-限制特定用户抽中巡乐会主奖品-调试 2025-12-20 20:18:02 +08:00
4b5eb28781 临时加-限制特定用户抽中巡乐会主奖品-调试 2025-12-20 19:39:31 +08:00
32815cc578 临时加-限制特定用户抽中巡乐会主奖品 2025-12-20 19:35:28 +08:00
ff5222e333 后台用户列表排序修改。 2025-12-20 18:42:00 +08:00
3e90c1ae38 加 删除过期的公会申请记录 脚本。 2025-12-20 15:06:14 +08:00
9210cf9635 盲盒转盘-岁月之城,时空之旅,抽奖结果转落包。
-特效限制添加-修改
2025-12-20 14:35:46 +08:00
2cf309e082 盲盒转盘-岁月之城,时空之旅,抽奖结果转落包。
-特效限制添加
2025-12-20 09:56:58 +08:00
8cfe127c32 盲盒转盘-岁月之城,时空之旅,抽奖结果转落包。
-修改背包收入修改
2025-12-20 09:29:38 +08:00
690bc258d0 盲盒转盘-岁月之城,时空之旅,抽奖结果转落包。
-修改:is_sued默认成1 防止推送
2025-12-19 18:48:16 +08:00
cd69ab6b73 盲盒转盘-岁月之城,时空之旅,抽奖结果转落包。 2025-12-19 18:40:29 +08:00
1c2b981649 退出房间 申请上麦清理 2025-12-19 17:48:42 +08:00
301b7c6d5c 房间内用户列表 2025-12-19 17:34:12 +08:00
d470264617 短信验证码 保存7天 2025-12-19 16:04:15 +08:00
0c989521d6 短信验证码 保存7天 2025-12-19 16:01:51 +08:00
eb76e324e9 短信验证码 校验处理 2025-12-19 15:45:27 +08:00
1d6152acb4 手机号换绑 2025-12-19 15:20:09 +08:00
e12e8c4ad2 修改腾讯群组消息发送 2025-12-19 11:55:34 +08:00
94184b89a8 修改手机号 2025-12-19 11:41:48 +08:00
9d68d429f6 Merge remote-tracking branch 'origin/develop' into develop 2025-12-18 19:17:39 +08:00
86e91af96f 后台任务领取统计 bug 修改 2025-12-18 19:17:32 +08:00
b6e669ac9d 练歌房抱麦 2025-12-18 19:00:44 +08:00
7323ed2028 练歌房抱麦 2025-12-18 18:52:41 +08:00
f1e9b82471 系统降身价 2025-12-18 18:21:06 +08:00
f2dc348994 系统降身价 2025-12-18 18:17:00 +08:00
cfadaf4326 系统降身价 2025-12-18 18:15:31 +08:00
df4e3aabdf 敏感词 2025-12-18 17:47:21 +08:00
3b531033bf 敏感词 2025-12-18 17:45:56 +08:00
5db7367438 练歌房 踢下麦 2025-12-18 17:20:59 +08:00
bf0e187e71 爵位加user_code 2025-12-18 16:33:35 +08:00
e9eaedd14d 任务统计提交 2025-12-18 16:30:46 +08:00
3c3c332d05 用户找回 2025-12-18 15:44:50 +08:00
81621fe62c 用户找回 2025-12-18 15:25:05 +08:00
1b3f562bb0 短信验证码登录防止多次提交 2025-12-18 14:07:31 +08:00
e6ed912f42 公会邀请加 结算比例调整 2025-12-17 18:26:20 +08:00
2155ce1d4e bug修改 2025-12-17 16:46:04 +08:00
a6724faa99 Merge remote-tracking branch 'origin/develop' into develop 2025-12-17 16:45:58 +08:00
2121a0a28b 认证处理 2025-12-17 16:45:44 +08:00
3c37a5c481 bug修改 2025-12-17 13:04:04 +08:00
d514f39dc3 bug修改 2025-12-17 12:57:36 +08:00
aa498d682a Merge remote-tracking branch 'origin/develop' into develop 2025-12-17 11:44:38 +08:00
5ec94fda56 系统设置开发 2025-12-17 11:44:32 +08:00
8ed22d99be 退出房间 处理 2025-12-17 11:18:32 +08:00
6065183faf Merge remote-tracking branch 'origin/develop' into develop 2025-12-17 11:16:15 +08:00
d2f9c457ad 云账号-银行卡提现功能提交 2025-12-17 11:16:08 +08:00
cbaf8a6d2c 小时榜修理 2025-12-17 10:44:08 +08:00
a462d63bc5 测试代码提交 2025-12-17 10:31:41 +08:00
794ea56b09 退出房间处理 2025-12-17 09:55:04 +08:00
52c34275f5 退出房间处理 2025-12-17 09:48:28 +08:00
e4528232ed Merge remote-tracking branch 'origin/develop' into develop 2025-12-16 20:53:44 +08:00
fc42e14b75 测试代码提交 2025-12-16 20:53:37 +08:00
0af34072ff 实名认证 未完成二次实名数据修改 2025-12-16 19:57:36 +08:00
2ba8392f2c 修改密码失败 提示特殊化 2025-12-16 18:40:05 +08:00
97c5322446 新加首次创建房间任务。 2025-12-16 17:40:34 +08:00
aa3db1f068 后台-添加房间功能跳过审核-调试 2025-12-16 17:21:20 +08:00
6c29963372 后台-添加房间功能跳过审核-调试 2025-12-16 17:16:05 +08:00
c1e22c5fe1 后台-添加房间功能跳过审核-调试 2025-12-16 17:14:57 +08:00
c55716196c 后台-添加房间功能跳过审核-调试 2025-12-16 17:14:07 +08:00
122ba13243 后台-添加房间功能跳过审核-每日任务首次创建房间完成任务节点移动到审核通过 2025-12-16 17:02:45 +08:00
6135f82944 Merge remote-tracking branch 'origin/develop' into develop 2025-12-16 16:56:51 +08:00
dcf926e496 后台-添加房间功能跳过审核 2025-12-16 16:56:43 +08:00
04349ae7f0 每日任务 练歌房 2025-12-16 16:54:45 +08:00
1502709a9f 钻石兑换金币 最少钻石限制 2025-12-16 16:45:40 +08:00
19d2b6c9f6 后台-添加房间功能 2025-12-16 16:18:19 +08:00
287b108ce6 后台-添加房间功能 2025-12-16 16:15:55 +08:00
4ccee5f8ac Merge remote-tracking branch 'origin/develop' into develop 2025-12-16 16:14:32 +08:00
cda159929c 后台-添加房间功能 2025-12-16 16:14:26 +08:00
375867a2ea 情侣任务 2025-12-16 16:11:21 +08:00
c4cea0c231 后台-添加房间功能 2025-12-16 15:56:41 +08:00
a4409b0bb3 提现加 新人限制 2025-12-16 15:28:56 +08:00
78d7ae8279 情侣任务 2025-12-16 15:06:58 +08:00
820468263f 每日任务 练歌房 2025-12-16 14:58:26 +08:00
5722486bc5 Merge remote-tracking branch 'origin/develop' into develop 2025-12-16 14:26:23 +08:00
d1b20bdcd4 未领取奖励任务数量接口提交-调整 2025-12-16 14:26:14 +08:00
071bb6a399 绑定银行卡数据校验 2025-12-16 14:06:27 +08:00
e681918ca0 未领取奖励任务数量接口提交-心跳返回值 2025-12-16 12:38:19 +08:00
235b795eb8 未领取奖励任务数量接口提交-心跳返回值 2025-12-16 11:44:09 +08:00
817a1ad59b 未领取奖励任务数量接口提交 2025-12-16 11:35:40 +08:00
ffaf75bb72 任务显示加锁字段 2025-12-16 10:57:25 +08:00
8058605a0b 删除动态删掉对应的引用 话题 用户删除后 修改昵称 动态不删 2025-12-16 10:20:00 +08:00
4f2ddedc5d 删除动态 顺便删除引用的话题记录 2025-12-16 09:49:53 +08:00
32ba6cbf08 系统降身价 2025-12-16 09:31:07 +08:00
8f72278eaa 签约成交后 签约价格 计入流水中 2025-12-15 22:13:18 +08:00
326a819f72 线上-bug修改 2025-12-15 15:42:11 +08:00
d9626c6a59 线上-bug修改 2025-12-15 15:23:13 +08:00
4ca0bbd84d 版本号比对 2025-12-15 10:06:20 +08:00
ca48f2682c 实名信息 2025-12-15 09:14:30 +08:00
f8855c7191 充值任务 2025-12-15 09:10:16 +08:00
0937ceac6b 任务功能提交-测试-bug修改 2025-12-13 00:37:51 +08:00
2b4b3509e8 任务功能提交-测试-bug修改-每日完成师徒任务 2025-12-12 23:15:01 +08:00
ebb341fef2 cp任务 2025-12-12 23:11:10 +08:00
bfb7fdb2e8 师徒任务 卡关系 2025-12-12 22:01:26 +08:00
5d6d8af442 进入房间 下其他房间 2025-12-12 21:46:38 +08:00
fc102dceb2 Merge remote-tracking branch 'origin/develop' into develop 2025-12-12 21:18:11 +08:00
3e3d0c7e20 任务功能提交-测试-bug修改-第一次加入工会任务添加 2025-12-12 21:18:05 +08:00
483e985e94 Cp 任务 2025-12-12 20:45:57 +08:00
ff916aec3d Cp 任务 2025-12-12 20:41:35 +08:00
728ab6c908 任务功能提交-测试-bug修改 2025-12-12 20:41:18 +08:00
8bbf624a8c Cp 任务 2025-12-12 20:40:53 +08:00
1f1a9c52a7 Merge remote-tracking branch 'origin/develop' into develop 2025-12-12 20:22:13 +08:00
6fea1aa312 任务功能提交-测试-bug修改 2025-12-12 20:22:07 +08:00
d6eb1c19fd 点歌列表 2025-12-12 20:14:50 +08:00
cd12717f46 Merge remote-tracking branch 'origin/develop' into develop 2025-12-12 20:14:32 +08:00
aa88579e82 任务功能提交-测试-bug修改 2025-12-12 20:14:22 +08:00
0ca96dc673 个人中心 2025-12-12 19:56:42 +08:00
c999f5af2b Merge remote-tracking branch 'origin/develop' into develop 2025-12-12 19:52:48 +08:00
816cc9241e 任务功能提交-测试-bug修改 2025-12-12 19:52:41 +08:00
515493258b 师徒任务 2025-12-12 19:33:56 +08:00
f4a25cf20e 任务功能提交-测试-bug修改 2025-12-12 19:09:21 +08:00
b1b1acb181 每天执行 2025-12-12 19:05:17 +08:00
949195555d Merge remote-tracking branch 'origin/develop' into develop 2025-12-12 18:59:43 +08:00
5bf22491d5 任务功能提交-测试-bug修改 2025-12-12 18:59:38 +08:00
6be3116c35 bug 修改 2025-12-12 18:56:43 +08:00
70434c181c Merge remote-tracking branch 'origin/develop' into develop 2025-12-12 18:56:14 +08:00
14b45c638c 任务功能提交-测试-bug修改 2025-12-12 18:56:08 +08:00
4e4f702273 任务功能提交-测试-bug修改 2025-12-12 18:55:50 +08:00
3cca2d34ed bug 修改 2025-12-12 18:46:36 +08:00
b810d7d584 bug 修改 2025-12-12 18:45:56 +08:00
b4e01723b7 任务功能提交-测试-bug修改 2025-12-12 18:35:16 +08:00
217c8d21ea 任务功能提交-测试-bug修改 2025-12-12 18:27:36 +08:00
c6d936baa9 任务功能提交-测试-bug修改 2025-12-12 18:09:07 +08:00
d3289ed24e Merge remote-tracking branch 'origin/develop' into develop 2025-12-12 18:04:33 +08:00
b7d7938736 任务功能提交-测试-bug修改 2025-12-12 18:04:27 +08:00
28751fea44 bug 修改 2025-12-12 17:56:26 +08:00
93482c3d95 任务功能提交-测试-bug修改 2025-12-12 17:43:19 +08:00
2621912c8b 任务功能提交-历史数据脚本处理 2025-12-12 16:25:22 +08:00
b5af9ac3a3 Merge remote-tracking branch 'origin/develop' into develop 2025-12-12 15:38:35 +08:00
5baaf177f0 任务功能提交-情侣任务 2025-12-12 15:37:09 +08:00
088e0ae163 cp任务 2025-12-12 15:31:43 +08:00
d6d9c30561 Merge remote-tracking branch 'origin/develop' into develop 2025-12-12 15:23:29 +08:00
378a1cf11b 任务功能提交-情侣任务 2025-12-12 15:23:20 +08:00
8988b9a135 cp任务 2025-12-12 14:26:22 +08:00
a14df3b0e8 任务功能提交-每日签到功能开发-签到礼物发放 2025-12-12 14:24:38 +08:00
72b6c9eefe 任务功能提交-每日签到功能开发-签到礼物发放 2025-12-12 12:48:04 +08:00
ce5dbf7976 任务功能提交-每日签到功能开发-签到礼物发放 2025-12-12 12:46:47 +08:00
c26ba285fb 任务功能提交-每日签到功能开发-签到礼物发放 2025-12-12 12:31:25 +08:00
7217063ca3 cp任务 2025-12-12 12:16:32 +08:00
b67e093605 任务功能提交-每日签到功能开发-签到礼物发放 2025-12-12 12:13:10 +08:00
afa0e019a0 任务功能提交-每日签到功能开发-签到礼物发放 2025-12-12 12:04:55 +08:00
c6a078dd16 任务功能提交-每日签到功能开发-签到礼物发放 2025-12-12 12:03:17 +08:00
da7b4f565b 任务功能提交-每日签到功能开发-签到礼物发放 2025-12-12 11:56:38 +08:00
c37179e908 任务功能提交-每日签到功能开发-签到礼物发放 2025-12-12 11:50:38 +08:00
fa133911b8 任务功能提交-每日签到功能开发-签到礼物发放 2025-12-12 11:38:09 +08:00
68f574b10b 任务功能提交-每日签到功能开发 2025-12-12 10:42:09 +08:00
38fb2eb501 任务功能提交-每日签到功能开发 2025-12-12 10:32:25 +08:00
cb90a2c6a2 任务功能提交-联调-修改错误 2025-12-11 20:47:25 +08:00
3f99248479 任务功能提交-联调-修改错误 2025-12-11 20:40:32 +08:00
bee75bc5e6 任务功能提交-联调-修改错误 2025-12-11 20:33:22 +08:00
75eceaa656 任务功能提交-联调-修改错误 2025-12-11 20:28:32 +08:00
624bae5acd 任务功能提交-联调-修改错误 2025-12-11 20:17:22 +08:00
95b6f4ce4d Merge remote-tracking branch 'origin/develop' into develop 2025-12-11 20:07:52 +08:00
bd3ffd9a0a 任务功能提交-联调-修改错误 2025-12-11 20:07:44 +08:00
d608172252 完成师徒任务 2025-12-11 19:55:56 +08:00
93c49ecda0 任务功能提交-联调-修改错误 2025-12-11 19:54:42 +08:00
d42c37bd0e Merge remote-tracking branch 'origin/develop' into develop 2025-12-11 19:46:55 +08:00
a61753d3c7 完成师徒任务 2025-12-11 19:46:45 +08:00
7b33568abd Merge remote-tracking branch 'origin/develop' into develop 2025-12-11 19:46:25 +08:00
8b7c48fe00 任务功能提交-联调-修改错误 2025-12-11 19:46:19 +08:00
910ab76e2e 跳转师徒任务房间 2025-12-11 19:20:21 +08:00
9c2111ba9f Merge remote-tracking branch 'origin/develop' into develop 2025-12-11 19:16:30 +08:00
18eab7ea4c 任务功能提交-联调-修改错误 2025-12-11 19:16:19 +08:00
77e328147d 跳转师徒任务房间 2025-12-11 19:09:28 +08:00
3ae792815c Merge remote-tracking branch 'origin/develop' into develop 2025-12-11 19:08:12 +08:00
0a09b16e71 任务功能提交-联调-错误修改 2025-12-11 19:08:06 +08:00
a2383add23 跳转师徒任务房间 2025-12-11 18:57:17 +08:00
f67acd0866 跳转师徒任务房间 2025-12-11 18:47:38 +08:00
72c64f7a98 任务功能提交-联调-提交 2025-12-11 18:41:01 +08:00
f628def5f4 任务功能提交-联调-提交 2025-12-11 18:39:11 +08:00
51764f4f53 任务功能提交-联调-提交 2025-12-11 18:30:33 +08:00
0fbe7a1f54 再约期间重新签约 师徒特殊任务21 22 23 删除 2025-12-11 17:55:06 +08:00
7c5b155b15 任务功能提交-联调-提交 2025-12-11 17:34:27 +08:00
6858bd95d5 任务功能提交-联调-提交 2025-12-11 17:28:57 +08:00
bd2c8bd5b2 Merge remote-tracking branch 'origin/develop' into develop 2025-12-11 17:12:22 +08:00
d57faa5166 任务功能提交-联调-提交 2025-12-11 17:12:15 +08:00
b54d1c3ffb 再约期间重新签约 师徒特殊任务21 22 23 删除 2025-12-11 16:44:42 +08:00
99a2c368e3 首页搜索 2025-12-11 16:34:26 +08:00
4f1092131f 首页搜索 2025-12-11 16:13:59 +08:00
ebefea922b Cp排行榜 排名修改 2025-12-11 16:08:50 +08:00
fc3a2eed01 修复首页重复数据 2025-12-11 15:46:04 +08:00
4d90900227 特殊的 21 22 23 任务的生成 2025-12-11 15:36:56 +08:00
032f99ef79 特殊的 21 22 23 任务数据处理 2025-12-11 15:29:35 +08:00
8b473b95d6 搜索 2025-12-11 14:07:33 +08:00
f6869b0941 邀请徒弟完成任务 2025-12-11 13:27:24 +08:00
4723ad2e2d 师徒任务跳转房间 2025-12-11 13:05:49 +08:00
c7d3aa4059 师徒任务跳转房间 2025-12-11 13:00:42 +08:00
60134a68f7 用户信息瘦身,歌手等级报错修改 2025-12-11 11:11:45 +08:00
2b625d176c 任务功能提交-联调-改错 2025-12-11 11:11:02 +08:00
f67b530117 任务功能提交-联调-改错 2025-12-11 11:04:40 +08:00
8822b40d57 任务功能提交-联调-改错 2025-12-11 10:59:21 +08:00
34ee7081e9 任务功能提交-联调。 2025-12-11 10:57:45 +08:00
ec1abadae1 Merge remote-tracking branch 'origin/develop' into develop 2025-12-11 10:03:45 +08:00
1a01ec66e5 任务功能提交。 2025-12-11 10:03:37 +08:00
b2f535be6e 生日选择 不能小于18 岁 创建房间校验修改 2025-12-11 09:27:05 +08:00
b21bc68610 任务功能提交。 2025-12-11 09:26:35 +08:00
eba24310bc 任务 2025-12-11 09:00:56 +08:00
e1d54f287a 任务功能提交。 2025-12-10 19:16:20 +08:00
348f373d9e 任务功能提交。 2025-12-10 19:14:41 +08:00
ede2764fc7 任务功能提交。 2025-12-10 19:13:10 +08:00
f0eb51edd9 任务功能提交。 2025-12-10 19:11:05 +08:00
5589f3a55b Merge remote-tracking branch 'origin/develop' into develop 2025-12-10 18:44:44 +08:00
51ab47a3f6 任务功能提交。 2025-12-10 18:44:16 +08:00
89eb41d8c1 家族成员收入 2025-12-10 16:17:33 +08:00
d261d7ff65 任务功能提交。 2025-12-10 14:05:30 +08:00
671c659076 登录 2025-12-10 12:18:17 +08:00
fe12eed9e9 购买装扮bug修改 2025-12-10 10:56:30 +08:00
05bafb3458 公会bug修改 2025-12-10 10:44:27 +08:00
e733aa1317 公会后台修改 2025-12-10 10:38:33 +08:00
23e469673f Merge remote-tracking branch 'origin/develop' into develop 2025-12-10 10:27:20 +08:00
d9ac47c2c1 公会后台修改 2025-12-10 10:27:13 +08:00
77aaf97c9c 注销登录 2025-12-10 10:11:33 +08:00
5f77e537f2 首页列表 2025-12-10 10:06:19 +08:00
0eaf84fbb3 注销验证码 交友结束完善 2025-12-10 09:56:00 +08:00
7c077e9e44 线上bug修改 2025-12-10 09:41:05 +08:00
619b7c36af 房间用户列表 2025-12-09 20:29:19 +08:00
742cd5aef2 房间用户列表 2025-12-09 20:21:36 +08:00
1687640191 房间用户列表 2025-12-09 20:14:23 +08:00
f72d5782ed 房间用户列表 2025-12-09 20:09:29 +08:00
000d802def 房间用户列表 2025-12-09 20:06:48 +08:00
750275ddd6 房间用户列表 2025-12-09 20:05:25 +08:00
3d47b350bb 房间用户列表 2025-12-09 20:03:50 +08:00
f1feaea496 房间用户列表 2025-12-09 19:59:51 +08:00
9fbc544a85 房间用户列表 2025-12-09 19:55:56 +08:00
b29b9bbcd9 房间用户列表 2025-12-09 19:51:20 +08:00
2726aa852d 房间用户列表 2025-12-09 19:46:23 +08:00
41c90c615b 房间用户列表 2025-12-09 19:43:01 +08:00
6edee924c7 房间用户列表 2025-12-09 19:34:01 +08:00
dd8ec0d7df 房间用户列表 2025-12-09 19:19:22 +08:00
a3f0a0cd83 房间用户列表 2025-12-09 19:08:21 +08:00
156d2ed368 房间用户列表 2025-12-09 18:50:09 +08:00
7ae760c78a 房间用户列表 2025-12-09 18:48:34 +08:00
3e66125e3e 房间用户列表 2025-12-09 18:39:42 +08:00
e967900ce0 房间用户列表 2025-12-09 18:26:22 +08:00
58a4dade1a 房间用户列表 2025-12-09 18:01:44 +08:00
d31b8e1960 房间用户列表 2025-12-09 18:00:28 +08:00
65abf4fb59 房间用户列表 2025-12-09 17:54:22 +08:00
e199c6bc4c 房间用户列表 2025-12-09 17:38:24 +08:00
9a316a2699 房间用户列表 2025-12-09 17:35:21 +08:00
27ab27296f 房间用户列表 2025-12-09 17:23:52 +08:00
16c8ec2856 房间用户列表 2025-12-09 17:20:57 +08:00
9fe9906f7d 房间用户列表 2025-12-09 17:16:53 +08:00
78f7f5ff75 房间用户列表 2025-12-09 17:10:42 +08:00
672a43a599 房间用户列表 2025-12-09 16:56:03 +08:00
f4800b9d9d 房间用户列表 2025-12-09 16:54:26 +08:00
a7236605e4 房间用户列表 2025-12-09 16:50:15 +08:00
2d55d2cbf8 房间用户列表 2025-12-09 16:47:58 +08:00
1ca65ed7ba 房间用户列表 2025-12-09 15:31:35 +08:00
be28f83d8b Merge remote-tracking branch 'origin/develop' into develop 2025-12-08 18:38:16 +08:00
35cc69be3c 新增需求变更:---首页新人推荐房间 2025-12-08 18:38:08 +08:00
4ea5a630a1 管理端 标签修改 2025-12-08 18:13:07 +08:00
b5be581786 管理端 标签修改 2025-12-08 18:08:15 +08:00
dcc373fe2a 新增需求变更:---首页新人推荐房间 2025-12-08 18:03:52 +08:00
ea03bf88bc 新增需求变更:---首页新人推荐房间 2025-12-08 17:46:24 +08:00
f548dfa335 新增需求变更:---首页新人推荐房间 2025-12-08 17:30:25 +08:00
d41c57fafc Merge remote-tracking branch 'origin/develop' into develop 2025-12-08 17:18:12 +08:00
d594dcbf1b 新增需求变更:---错误修改
公会如果调整了个人收益,需要再用户的系统通知哪里发送一个消息,公会调整了你的 收益 为 XX,  您是否同意  拒绝(默认24小时,24小时内 没同意,默认拒绝)在这个期间  按照他原有的进行计算,同意了就按照公会给的进行计算
2025-12-08 17:18:04 +08:00
4a383afa03 签约房间主持邀请上签约 2025-12-08 17:09:40 +08:00
4111014542 Merge remote-tracking branch 'origin/develop' into develop 2025-12-08 16:58:51 +08:00
844f22f17a 新增需求变更:---错误修改
公会如果调整了个人收益,需要再用户的系统通知哪里发送一个消息,公会调整了你的 收益 为 XX,  您是否同意  拒绝(默认24小时,24小时内 没同意,默认拒绝)在这个期间  按照他原有的进行计算,同意了就按照公会给的进行计算
2025-12-08 16:58:40 +08:00
dceca03fbf 签约房间主持邀请上签约麦用户拒绝 2025-12-08 16:56:31 +08:00
6c09ba626d 新增需求变更:---过期脚本编写
公会如果调整了个人收益,需要再用户的系统通知哪里发送一个消息,公会调整了你的 收益 为 XX,  您是否同意  拒绝(默认24小时,24小时内 没同意,默认拒绝)在这个期间  按照他原有的进行计算,同意了就按照公会给的进行计算
2025-12-08 16:44:55 +08:00
7349789c9a Merge remote-tracking branch 'origin/develop' into develop 2025-12-08 16:18:08 +08:00
99369fc8cc 新增需求变更:
公会如果调整了个人收益,需要再用户的系统通知哪里发送一个消息,公会调整了你的 收益 为 XX,  您是否同意  拒绝(默认24小时,24小时内 没同意,默认拒绝)在这个期间  按照他原有的进行计算,同意了就按照公会给的进行计算
2025-12-08 16:18:01 +08:00
8336217944 首页房间排行和默认选择类型 2025-12-08 16:17:24 +08:00
dfe5fe96ec 首页房间排行和默认选择类型 2025-12-08 16:15:41 +08:00
49dd2afc03 首页房间排行和默认选择类型 2025-12-08 16:05:54 +08:00
d3de53715d 首页房间排行和默认选择类型 2025-12-08 16:04:30 +08:00
ec181d951f 新增需求变更:
公会如果调整了个人收益,需要再用户的系统通知哪里发送一个消息,公会调整了你的 收益 为 XX,  您是否同意  拒绝(默认24小时,24小时内 没同意,默认拒绝)在这个期间  按照他原有的进行计算,同意了就按照公会给的进行计算
2025-12-08 15:38:27 +08:00
7484817c82 注销 不能注册 2025-12-08 12:06:53 +08:00
c10f055585 注销 和创建房间 2025-12-08 10:42:58 +08:00
e4c3f572e5 歌手等级修改 2025-12-08 09:34:27 +08:00
5c0ab3b64c 后台-道具类型判断修改 2025-12-07 17:14:31 +08:00
71ce9595e3 装扮-降身卡 2025-12-07 16:39:47 +08:00
bc60c3b9b9 首页 房间标签重新排序 2025-12-07 16:38:42 +08:00
e2e27e386d Merge remote-tracking branch 'origin/develop' into develop 2025-12-07 12:22:35 +08:00
5820fed771 爵位购买修改-升级金币折算逻辑添加 2025-12-07 12:22:28 +08:00
f0d4efa6f2 进入房间 2025-12-07 10:47:07 +08:00
046f4cace3 爵位专属礼物类型修改 2025-12-07 10:11:13 +08:00
89a4fdc7c9 Merge remote-tracking branch 'origin/develop' into develop 2025-12-07 09:12:25 +08:00
505cf70f4c 歌手认证修改。 2025-12-07 09:12:17 +08:00
683816d3ec 购买爵位 2025-12-06 19:02:31 +08:00
828a29d0ee 保持心跳检测 2025-12-06 18:37:19 +08:00
bbcb4a7a8c 保持心跳检测 2025-12-06 18:01:37 +08:00
3b4a407d8a 保持心跳检测 2025-12-06 17:50:13 +08:00
be6383bd65 进入房间 2025-12-06 17:41:10 +08:00
d28167401b 进入房间 2025-12-06 16:44:31 +08:00
8aabd01f0b 进入房间 2025-12-06 15:48:47 +08:00
5c991b161a 真爱榜 2025-12-06 14:41:32 +08:00
2f91d9f144 真爱榜 2025-12-06 14:34:11 +08:00
3231be78fd 真爱榜 2025-12-06 12:12:28 +08:00
996fca617b Merge remote-tracking branch 'origin/develop' into develop 2025-12-06 11:37:30 +08:00
d0203ecc8b 工会后台修改 2025-12-06 11:37:20 +08:00
7ddfd45eec 内侧进入房间 2025-12-06 11:12:23 +08:00
d456099f56 签约到期 2025-12-06 09:44:39 +08:00
77edc04069 用户在离开修正 2025-12-06 09:36:21 +08:00
ab0b23539e 工会后台修改 2025-12-06 09:19:22 +08:00
d6005ffe1f Merge remote-tracking branch 'origin/develop' into develop 2025-12-06 00:16:26 +08:00
7aa07a0486 工会修改兼容以前数据 2025-12-06 00:16:17 +08:00
c503b7a1d5 用户在离开修正 2025-12-05 23:16:41 +08:00
bed754f8b5 进入房间 内侧账号不可进入其他房间 2025-12-05 22:33:39 +08:00
76af99f47e 足迹排序 2025-12-05 22:07:17 +08:00
eb15a69649 Merge remote-tracking branch 'origin/develop' into develop 2025-12-05 21:30:43 +08:00
c6c4be30ce 工会修改兼容以前数据 2025-12-05 21:30:33 +08:00
1460a2c788 系统维护中 2025-12-05 20:47:00 +08:00
020174c99b 签约结束 2025-12-05 18:28:28 +08:00
140d09f276 签约结束 2025-12-05 18:13:37 +08:00
f25774338f 签约结束 2025-12-05 18:02:07 +08:00
1a40974ee2 工会相关 2025-12-05 17:39:33 +08:00
3df68b3c74 主页 我的工会 2025-12-05 17:26:32 +08:00
2ba055d5e9 主页 我的工会 2025-12-05 17:11:31 +08:00
a88a83f2b0 登录ip 2025-12-05 16:55:48 +08:00
c2cae98437 点唱转换签约下麦 2025-12-05 15:52:42 +08:00
fe168eba18 点唱转换签约下麦 2025-12-05 15:48:03 +08:00
0dca064fe8 点唱转换签约下麦 2025-12-05 15:45:02 +08:00
384f631cd6 点唱转换签约下麦 2025-12-05 15:43:43 +08:00
ac708c793d 点唱转换签约下麦 2025-12-05 15:38:20 +08:00
bca8131370 下麦 2025-12-05 15:33:10 +08:00
53cc460514 测试:- 歌手认证列表 2025-12-05 15:29:26 +08:00
3702c0710f Merge remote-tracking branch 'origin/develop' into develop 2025-12-05 15:24:02 +08:00
7d97217190 测试:- 购买爵位价格bug修改 2025-12-05 15:23:51 +08:00
fb3d7f9fc9 签约结束后 再出价阻挡 2025-12-05 15:21:37 +08:00
bc24d6abad 签约结束后 再出价阻挡 2025-12-05 15:19:00 +08:00
301a09ccf0 签约结束后 再出价阻挡 2025-12-05 15:06:51 +08:00
59c5fb1575 定时任务 注释完善 2025-12-05 15:02:43 +08:00
4c51486726 房间信息 头条 2025-12-05 14:55:44 +08:00
095c1a28fb 签约到期处理 2025-12-05 14:47:44 +08:00
30a774baf9 歌手换麦 2025-12-05 00:08:35 +08:00
689897fd6c 拍卖和签约 只能 主持抱麦 2025-12-04 22:44:49 +08:00
890e71e2eb 拍卖和签约 只能 主持抱麦 2025-12-04 22:42:20 +08:00
409f9fb04b 踢下拍卖位 2025-12-04 22:31:03 +08:00
4cc6af9805 抱上麦 申请处理 2025-12-04 22:28:53 +08:00
a888de758d 拍卖中不能下麦 2025-12-04 22:18:53 +08:00
019cb8e737 拍卖中不能下麦 2025-12-04 22:06:51 +08:00
a732eaa2d5 拍卖中不能下麦 2025-12-04 21:56:26 +08:00
0fd272bf37 修改房间背景 2025-12-04 20:38:53 +08:00
0d36a906ff 在房间内离线超过24小时 清理出房间 2025-12-04 19:42:43 +08:00
ffe6768c0a 修改房间类型为练歌房判断 2025-12-04 19:18:18 +08:00
92b9053c3a 出价列表 2025-12-04 19:04:02 +08:00
40f05adca5 测试:- 任务bug修改 2025-12-04 18:57:41 +08:00
38673d4eb4 测试:- 任务bug修改 2025-12-04 18:52:53 +08:00
7f4fd3d68f 测试:- 房间举报bug修改 2025-12-04 18:21:55 +08:00
c507f5ed1a 徒弟收益按时间处理 2025-12-04 17:46:38 +08:00
2fd4e58d52 进入房间 补发一条在线 2025-12-04 15:30:57 +08:00
a9cfaf86b9 Merge remote-tracking branch 'origin/develop' into develop 2025-12-04 15:29:57 +08:00
584b86048c 测试:- 爵位续费限制问题处理 2025-12-04 15:29:48 +08:00
f886dcbb8d 拍卖 2025-12-04 14:51:09 +08:00
550b1e4fd9 测试:- 爵位续费限制-错误修改 2025-12-04 14:25:38 +08:00
1f49b8d6e9 测试:- 爵位续费限制-价格处理。 2025-12-04 14:18:57 +08:00
8285462258 Merge remote-tracking branch 'origin/develop' into develop 2025-12-04 12:20:28 +08:00
0fdf551e0a 测试:- 爵位续费限制。 2025-12-04 12:20:19 +08:00
fde96159fd 家族收益 2025-12-04 11:40:33 +08:00
d361b1157e 家族成员收益 2025-12-04 11:39:04 +08:00
748821467f 我的家族 2025-12-04 11:31:02 +08:00
0fac85c05d 进入房间 拍卖位用户信息 2025-12-04 10:42:37 +08:00
a09c17bd60 群组信息 2025-12-03 20:10:37 +08:00
2c96fb6a0e 群组信息 2025-12-03 20:03:26 +08:00
a166932694 群组信息 2025-12-03 19:58:03 +08:00
1da84f7f7a 群组信息 2025-12-03 19:57:01 +08:00
5475c6805e 群组信息 2025-12-03 19:56:23 +08:00
e200b46379 群组信息 2025-12-03 19:51:04 +08:00
2a74cc71c8 工会修改 2025-12-03 19:32:07 +08:00
929fb8cdc3 切歌 2025-12-03 18:55:12 +08:00
16855049b8 切歌 2025-12-03 18:54:04 +08:00
a274636bec 出价 2025-12-03 18:41:06 +08:00
ba2e6943a0 出价 2025-12-03 18:39:20 +08:00
d1482d0271 房间内电用户头像 2025-12-03 17:45:14 +08:00
df3f668f11 出价换麦 2025-12-03 17:40:33 +08:00
44caa72ca8 出价换麦 2025-12-03 17:33:03 +08:00
e7d3121215 测试:-CP空间的时间有问题,经验值达到最高级时,会出现 负 当前所有经验(65) 2025-12-03 17:31:07 +08:00
51946d5300 出价换麦 2025-12-03 17:29:32 +08:00
0a832692b2 出价换麦 2025-12-03 17:26:00 +08:00
5262a62b82 Merge remote-tracking branch 'origin/develop' into develop 2025-12-03 17:13:43 +08:00
8fe9e6f2f3 测试:-工会修改 2025-12-03 17:13:33 +08:00
9192b58ff5 踢下麦 2025-12-03 17:13:33 +08:00
2b6add741d 踢下麦 2025-12-03 17:09:31 +08:00
da78a50621 下麦 2025-12-03 17:06:36 +08:00
57d6bfb72a 下麦 2025-12-03 16:58:15 +08:00
01177ce7ca 测试:-盲盒转盘加签约返佣逻辑 2025-12-03 16:44:00 +08:00
e3d5b8cd37 1058 处理 2025-12-03 16:41:26 +08:00
a984de992b 房间信息 2025-12-03 16:33:05 +08:00
3422c0931c Merge remote-tracking branch 'origin/develop' into develop 2025-12-03 15:53:34 +08:00
b2b9d9133a 测试:-公会bug修改 2025-12-03 15:53:25 +08:00
d0eb2d4cf1 师父抽佣 2025-12-03 15:42:44 +08:00
4a13de59ff 测试:-公会后台登录修改-歌手等级修改 2025-12-03 15:35:42 +08:00
4590503029 歌手等级 2025-12-03 15:04:21 +08:00
5b4101db1a 抱上麦 推送在离线 2025-12-03 14:55:05 +08:00
0bfa4e6c3a 进入房间 保持心跳 2025-12-03 14:46:14 +08:00
2e819654fb 进入房间 保持心跳 2025-12-03 14:39:56 +08:00
1e5bf47891 Merge remote-tracking branch 'origin/develop' into develop 2025-12-03 14:37:04 +08:00
e0b4c7cf7e 测试:-公会后台登录修改-系统信息修改 2025-12-03 14:36:56 +08:00
12b62fe679 我的家族 2025-12-03 14:23:07 +08:00
7c9c82b208 修改 房间类型 2025-12-03 14:19:58 +08:00
1ed607a1db 修改 房间类型 2025-12-03 13:05:57 +08:00
1d2cb34dd0 修改 房间类型 2025-12-03 12:50:50 +08:00
4ed322e636 出价换麦处理 2025-12-03 12:44:11 +08:00
05b230f811 签约到期处理 2025-12-03 12:27:14 +08:00
df52882ff9 师傅麦位不能下麦 2025-12-03 12:17:02 +08:00
dbe3557ca8 家族 2025-12-03 12:09:10 +08:00
89cfa4ca63 家族 2025-12-03 11:48:30 +08:00
77f5c059f0 测试:-公会后台登录修改-加入公会审核修改 2025-12-03 11:43:24 +08:00
435915ef2e 创建群组 2025-12-03 11:40:26 +08:00
e2ee2c8338 进入房间 子进程发送特效 2025-12-03 11:01:28 +08:00
3a202fb50f 进入房间 子进程发送特效 2025-12-03 10:58:51 +08:00
ca511768f3 进入房间 子进程发送特效 2025-12-03 10:55:25 +08:00
83f404cb9e 退出房间 2025-12-03 10:44:31 +08:00
a92b5d85f6 测试异步 2025-12-03 10:28:05 +08:00
05db9b6f02 测试异步 2025-12-03 10:15:19 +08:00
be7dc27d20 测试:-公会后台登录修改 2025-12-03 10:01:20 +08:00
2d5645813b 进入房间 cp特效延时1秒推送 2025-12-03 09:55:50 +08:00
496c7307dc 进入房间 cp特效延时1秒推送 2025-12-03 09:46:29 +08:00
02a5988800 在离线 2025-12-02 19:32:46 +08:00
4595d759a4 在离线 2025-12-02 19:32:10 +08:00
dc468b0a2f 在离线 2025-12-02 19:28:24 +08:00
7b5f017c49 在离线 2025-12-02 19:18:21 +08:00
e078824070 在离线 2025-12-02 19:14:36 +08:00
c4b03097bf 在离线 2025-12-02 19:08:07 +08:00
6f9d80c744 Merge remote-tracking branch 'origin/develop' into develop 2025-12-02 18:48:31 +08:00
8ce5e3f473 测试:-公会修改 2025-12-02 18:48:22 +08:00
f3104f30a8 在离线 2025-12-02 17:30:33 +08:00
4acf42aba3 在离线 2025-12-02 17:24:33 +08:00
68ff1ae76d 在离线 2025-12-02 17:19:06 +08:00
22b7bf3b8c 在离线 2025-12-02 17:16:47 +08:00
422938b03d 退出房间 2025-12-02 16:53:20 +08:00
963e6c9da6 测试:-歌手认证成功后,需要推送消息提醒用户已认证成功 (32) 2025-12-02 16:51:23 +08:00
f1da50de78 Merge remote-tracking branch 'origin/develop' into develop 2025-12-02 16:47:03 +08:00
abf611d725 测试:-歌手认证成功后,需要推送消息提醒用户已认证成功 (32) 2025-12-02 16:46:53 +08:00
a82ef834b4 在离线状态查询 2025-12-02 16:43:43 +08:00
48f0c44fba 在离线状态查询 2025-12-02 16:33:35 +08:00
263cbe1bdc 歌手认证列表时间处理 2025-12-02 16:05:22 +08:00
bbc58d5752 出价换麦 2025-12-02 15:59:48 +08:00
b99ef24a2e 签约房 退出下麦 2025-12-02 15:43:10 +08:00
6d98047dc4 签约开始 2025-12-02 15:36:17 +08:00
c794c8c1f7 同意上麦 2025-12-02 15:28:12 +08:00
21d5951455 抱麦 2025-12-02 15:24:46 +08:00
17788c162c 抱麦 2025-12-02 15:19:34 +08:00
bde8bd5d69 身价配置 2025-12-02 15:05:06 +08:00
768d3c9484 保持心跳 2025-12-02 14:30:43 +08:00
485da90f42 切前后台 废弃 没用了 2025-12-02 12:17:43 +08:00
258ba5e5c2 离线 2025-12-02 12:14:57 +08:00
c6fc8163a9 离线 2025-12-02 12:04:22 +08:00
dfa38ac51b 离线 2025-12-02 12:02:51 +08:00
27bbd59fb5 离线 2025-12-02 11:54:16 +08:00
2586346b73 离线 2025-12-02 11:51:49 +08:00
ef8b93c8d1 离线 2025-12-02 11:31:51 +08:00
3ad2731dba 退出房间 2025-12-01 18:34:47 +08:00
0779bfce73 退出房间 2025-12-01 18:30:54 +08:00
bcd691bbf4 退出房间 2025-12-01 18:25:03 +08:00
97dbbb1eb6 退出房间 2025-12-01 18:11:20 +08:00
6ab1491301 退出房间 2025-12-01 18:01:21 +08:00
2043893065 进入房间 2025-12-01 17:33:24 +08:00
d6e5e75f40 进入房间 2025-12-01 17:25:04 +08:00
3f303cf069 签约结束 2025-12-01 16:59:32 +08:00
efaef64481 签约结束 2025-12-01 16:48:05 +08:00
c0da472500 续约 2025-12-01 15:14:56 +08:00
c310c4d833 签约结束身价增加 2025-12-01 15:03:05 +08:00
4f48725e65 续约 2025-12-01 14:55:08 +08:00
37b511006d 续约 2025-12-01 14:43:48 +08:00
b1f6879334 出价 2025-12-01 12:41:12 +08:00
6a3b885438 出价 2025-12-01 12:27:15 +08:00
fa268d3145 下麦 2025-12-01 11:04:06 +08:00
da5d277a02 下麦 2025-12-01 10:47:31 +08:00
331addd004 cp 收礼 2025-12-01 10:40:29 +08:00
a4224b6524 房间内点击用 用户头像 2025-12-01 10:33:11 +08:00
b6356f5fd2 房间内点击用 用户头像 2025-12-01 09:47:21 +08:00
8a53e8aeaf 房间内点击用 用户头像 2025-12-01 09:42:49 +08:00
0fd40b7a2d 家族 2025-12-01 09:32:54 +08:00
a6053adc7c 家族 2025-11-28 18:43:18 +08:00
76a7a1fec7 二签 2025-11-28 18:41:18 +08:00
48970d2117 二签 2025-11-28 18:04:39 +08:00
3b24126cdf 上麦 2025-11-28 17:05:27 +08:00
fedc496263 换麦 2025-11-28 17:02:51 +08:00
dd81f497a9 上麦 2025-11-28 16:56:59 +08:00
315558a00c 上麦 2025-11-28 16:52:02 +08:00
672df01ee4 上麦 2025-11-28 16:35:32 +08:00
debbb4ad5c 出价涨身价 2025-11-28 16:02:52 +08:00
691146a3a4 出价涨身价 2025-11-28 15:32:30 +08:00
23931f7afc 出价涨身价 2025-11-28 15:30:55 +08:00
bf05496a17 出价涨身价 2025-11-28 15:29:53 +08:00
fefbf22fa1 出价涨身价 2025-11-28 15:27:33 +08:00
19794dfe4e 出价 2025-11-28 15:19:30 +08:00
2e60b43a22 出价 2025-11-28 15:06:29 +08:00
5d152e1b0e 出价金币 2025-11-28 14:38:48 +08:00
65704e0e8e 下麦 2025-11-28 14:35:38 +08:00
d5f6e8a2a2 抱麦 2025-11-28 14:14:46 +08:00
e71546fb90 房间内点头像查看信息 2025-11-28 14:06:58 +08:00
bc66d40f88 修改房间类型 2025-11-28 11:48:12 +08:00
edcc78affd 延时 2025-11-28 11:29:11 +08:00
30deb1ab92 结束 2025-11-28 11:27:05 +08:00
b696040549 我的家族 签约过期 2025-11-28 11:24:08 +08:00
ee6b07ee98 开始签约 2025-11-28 10:50:54 +08:00
09e3933b80 才艺列表 2025-11-28 10:28:15 +08:00
4355262512 才艺列表 2025-11-28 10:26:22 +08:00
35f304dec7 抱麦 2025-11-28 10:11:24 +08:00
79458797d0 room_info 房间类型判断 2025-11-28 09:52:09 +08:00
cccb38ea7b 签约开始的结束时间推送 2025-11-28 09:30:29 +08:00
037c9bdb71 在线列表 2025-11-28 09:24:16 +08:00
9e67b9c1ff 同意上麦 2025-11-27 19:06:30 +08:00
a5351df13d 同意上麦 2025-11-27 19:04:50 +08:00
feb1224774 结束签约 2025-11-27 18:49:44 +08:00
8b5e003713 抱麦 2025-11-27 18:39:41 +08:00
a126eac997 出价后 麦位问题处理 2025-11-27 18:34:07 +08:00
6d75474d17 签约 相关 参数调整 2025-11-27 18:00:27 +08:00
87eb493259 下麦 2025-11-27 17:15:42 +08:00
fc674262af 上麦 2025-11-27 16:58:42 +08:00
f04fa2166f 约定时间 2025-11-27 16:40:43 +08:00
1fac081547 进入房间 签约信息 2025-11-27 16:32:41 +08:00
1c84efb0a1 签约延时 2025-11-27 15:51:58 +08:00
216a2c4010 抱麦处理互娱房 7、8号麦位问题 2025-11-27 15:13:27 +08:00
df812236c4 抱麦处理互娱房 7、8号麦位问题 2025-11-27 14:57:19 +08:00
0f867666e7 续签 收礼返佣 2025-11-27 11:48:53 +08:00
7c950d0a0e 巡乐会bug修改 2025-11-27 09:55:16 +08:00
ef0814b850 签约房-装扮-降身卡功能开发-后台-添加价格字段 2025-11-26 19:00:28 +08:00
17e50b95f8 签约房-装扮-降身卡功能开发-后台-添加价格字段 2025-11-26 18:53:36 +08:00
f23ed45309 测试登录加万能验证码 2025-11-26 18:34:51 +08:00
ba7c97f03e 测试登录加万能验证码 2025-11-26 18:30:39 +08:00
02f39cc02f 家族 2025-11-26 18:09:58 +08:00
06a01e4908 Merge remote-tracking branch 'origin/develop' into develop 2025-11-26 18:03:25 +08:00
5d9ee030b8 测试登录加万能验证码 2025-11-26 18:03:13 +08:00
ad6b12bc4d 身价 2025-11-26 17:52:04 +08:00
c5c0819374 身价 2025-11-26 17:37:33 +08:00
74fa6796a1 家族相关 2025-11-26 17:34:14 +08:00
b3ea7f1b2c Merge remote-tracking branch 'origin/develop' into develop 2025-11-26 17:20:40 +08:00
83e18a669a 家族相关 2025-11-26 17:20:30 +08:00
c1c008b036 签约房-签约师傅每日返还任务-调试-修改任务数量 2025-11-26 17:20:14 +08:00
ecf69fcf34 签约房-签约师傅每日返还任务-调试-修改任务数量 2025-11-26 17:13:56 +08:00
e9d65a1bc3 签约房-签约师傅每日返还任务-调试 2025-11-26 17:10:18 +08:00
0c0f71a181 签约房-签约师傅每日返还任务-调试 2025-11-26 16:46:17 +08:00
3508c844f2 签约房-签约师傅每日返还任务 2025-11-26 16:43:30 +08:00
11afdf93aa 签约房-签约师傅每日返还任务 2025-11-26 16:37:20 +08:00
b42bc92366 签约房-装扮-降身卡功能开发-个人装扮-降身卡使用 2025-11-26 16:05:01 +08:00
b5501cd6e8 签约房-装扮-降身卡功能开发-个人装扮 2025-11-26 15:15:19 +08:00
8dbbe1e2b3 签约房相关 2025-11-26 11:36:08 +08:00
acfda2f044 验证码登录加绕过 2025-11-26 11:01:10 +08:00
aa96a2d805 验证码登录加绕过 2025-11-26 10:58:36 +08:00
f0aca7ec79 签约房-装扮-降身卡功能开发-h5调整 购买 2025-11-26 10:55:47 +08:00
5f71a0df80 签约房-装扮-降身卡功能开发-h5调整 2025-11-26 10:22:57 +08:00
82a078cae1 签约房-装扮-降身卡功能开发-后台-添加师傅字段 2025-11-25 18:57:05 +08:00
a0fcc3b8dd Merge remote-tracking branch 'origin/develop' into develop 2025-11-25 18:29:54 +08:00
3d17e38bb0 签约房-装扮-降身卡功能开发 2025-11-25 18:29:45 +08:00
5618d9e80c 签约房 上麦 抱麦 收礼涨身价 2025-11-25 17:10:19 +08:00
aebef67454 签约房-装扮-降身卡添加 2025-11-25 15:22:39 +08:00
4fff67edaa cp 互娱房间处理 2025-11-25 09:06:34 +08:00
72c7e76280 cp 互娱房间处理 2025-11-24 19:06:13 +08:00
ea405b6d11 cp 升级抽盘处理 2025-11-24 18:19:32 +08:00
b040bf5f68 公会后台登录修改 兼容 admin 2025-11-24 17:53:45 +08:00
c3670ec2b0 公会后台登录修改 兼容 admin 2025-11-24 17:32:09 +08:00
384355f52c 公会后台登录修改 2025-11-24 16:51:35 +08:00
a6054e3db3 cp 等级升级 装扮挂件和特效修改 2025-11-24 15:06:58 +08:00
ca8dca40fe cp 等级升级 装扮挂件和特效修改 2025-11-24 14:47:54 +08:00
99c499df82 cp 等级升级 装扮挂件和特效修改 2025-11-24 14:36:02 +08:00
6f43c6d4ac cp 等级升级 装扮挂件和特效修改 2025-11-22 19:01:20 +08:00
b797c69cc1 cp 等级升级 装扮挂件和特效修改 2025-11-22 18:23:55 +08:00
42e61ca469 cp空间 2025-11-22 18:07:34 +08:00
8110ea2f53 cp空间 2025-11-22 17:56:15 +08:00
5975e892bb cp空间 2025-11-22 16:20:47 +08:00
e1afb178a7 房间内在线列表,点歌房 2025-11-22 16:08:20 +08:00
a66c0608d8 CP组合进入房间触发 特效 2025-11-22 15:49:46 +08:00
755a0c9af4 CP 空间礼物记录 2025-11-22 15:24:04 +08:00
ab99ecff49 CP 空间礼物记录 2025-11-22 15:18:21 +08:00
9b5e1bed0e CP 空间礼物记录 2025-11-22 14:51:28 +08:00
ccfb0c0f30 公会判断是否加入接口调整 2025-11-22 14:24:11 +08:00
7064f1e523 Merge remote-tracking branch 'origin/develop' into develop 2025-11-22 11:49:19 +08:00
fb743edee2 公会判断是否加入接口调整 2025-11-22 11:49:04 +08:00
7f1ac47668 CP 空间挂件 2025-11-22 11:27:22 +08:00
7413753d63 CP 空间日志分页 2025-11-22 11:12:27 +08:00
d40d71ab68 公会邀请信息处理-加入公会成功系统推送 2025-11-22 10:16:41 +08:00
c7a514e313 公会邀请信息处理 2025-11-22 10:07:21 +08:00
cb07adc207 公会邀请信息处理 2025-11-22 09:19:13 +08:00
0bba1504eb cp装扮修改 2025-11-21 19:03:01 +08:00
10b3a01513 cp装扮修改 2025-11-21 18:35:38 +08:00
bdb727e28a cp装扮修改 2025-11-21 18:32:29 +08:00
56a7730da4 用户装扮详情 修改 2025-11-21 18:09:17 +08:00
1c54c137f2 用户装扮详情 修改 2025-11-21 18:08:02 +08:00
5df65a5cc4 用户装扮详情 修改-断点去除 2025-11-21 18:00:19 +08:00
7d1a3e4fc9 用户装扮详情 修改 2025-11-21 17:59:46 +08:00
9045dbf219 cp装扮修改 2025-11-21 17:54:02 +08:00
06059ac9cc 用户装扮详情 修改 2025-11-21 17:46:39 +08:00
2b79407e37 用户装扮详情 修改 2025-11-21 17:45:00 +08:00
1d191dae3a Merge remote-tracking branch 'origin/develop' into develop 2025-11-21 17:29:37 +08:00
94529c0102 用户装扮详情 修改 2025-11-21 17:29:26 +08:00
8d9659d0fa cp装扮修改 2025-11-21 17:23:50 +08:00
10370f0da5 用户装扮详情 修改 2025-11-21 16:50:43 +08:00
81a09aadc3 cp装扮修改 2025-11-21 16:11:22 +08:00
f57f6c3474 cp装扮修改 2025-11-21 16:08:38 +08:00
195c99cf97 cp装扮修改 2025-11-21 15:49:11 +08:00
a9d155e9e0 cp装扮修改 2025-11-21 15:47:48 +08:00
c3e7867823 cp装扮修改 2025-11-21 15:37:01 +08:00
f840bd89b0 cp装扮修改 2025-11-21 15:33:32 +08:00
a1b15f79f2 cp装扮修改 2025-11-21 15:17:20 +08:00
79d1549e99 cp装扮修改 2025-11-21 14:56:44 +08:00
251569b117 Merge remote-tracking branch 'origin/develop' into develop 2025-11-21 14:54:01 +08:00
75626066b0 装扮调整 2025-11-21 14:53:50 +08:00
8f4975eb22 歌手等级图标 2025-11-21 14:15:46 +08:00
626df0fd65 拍卖关系创建 2025-11-21 14:11:58 +08:00
8e726d8670 歌手认证等级图标 2025-11-21 12:02:28 +08:00
aa061a126d 歌手认证等级图标 2025-11-21 11:45:10 +08:00
f1f01d8a62 歌手认证等级图标 2025-11-21 11:42:25 +08:00
31917a4aad 歌手认证等级图标 2025-11-21 11:32:09 +08:00
81897a34b4 邀请加入公会功能--受邀申请处理 2025-11-21 11:15:16 +08:00
afb6ee48f7 邀请加入公会功能添加 2025-11-21 09:45:09 +08:00
e0c5846462 挚友列表 2025-11-20 17:15:33 +08:00
e4b605d738 挚友列表 2025-11-20 17:03:38 +08:00
bca0247363 Merge remote-tracking branch 'origin/develop' into develop 2025-11-20 16:39:08 +08:00
57904ee568 工会后台-房间详情接口-房间状态修改接口提交 2025-11-20 16:38:59 +08:00
53a6cd4c80 挚友列表 2025-11-20 16:24:18 +08:00
4aa8bbcc4a 挚友列表 2025-11-20 16:17:47 +08:00
4d22a41ec4 挚友列表 2025-11-20 16:12:19 +08:00
9ad44c621e 挚友列表 2025-11-20 16:10:47 +08:00
82387abf4e 装扮分类暂停-注释不用的 2025-11-20 16:03:40 +08:00
4f036119c8 挚友列表 2025-11-20 15:55:53 +08:00
10289a7bf3 挚友列表 2025-11-20 15:53:59 +08:00
90b85bc40a 挚友列表 2025-11-20 15:33:52 +08:00
eb40faf08e 挚友 2025-11-20 15:08:59 +08:00
86fa4b8fa2 挚友 2025-11-20 15:07:27 +08:00
4a67312897 cp 相互送礼 等级处理 2025-11-20 10:37:08 +08:00
aaff62d46c 登录注销处理 2025-11-20 09:28:40 +08:00
f876d121c3 用户CP 组成 2025-11-19 18:15:14 +08:00
497a4d9717 用户主页 我的页面添加用户CP信息 2025-11-19 18:05:06 +08:00
4ab363301a 用户主页 我的页面添加用户CP信息 2025-11-19 18:02:41 +08:00
c79b047a55 房间内点击用户头像 数据更新 2025-11-19 17:33:58 +08:00
8ac4357d33 房间内点击用户头像 数据更新 2025-11-19 17:14:34 +08:00
38795fe94c 房间内点击用户头像 数据更新 2025-11-19 16:49:58 +08:00
b8d5dc1ebe 装扮连表加搜索 2025-11-19 16:19:19 +08:00
e1aaaacdda 管理端CP等级 2025-11-19 15:16:20 +08:00
658257bc0a 管理端CP等级 2025-11-19 14:57:30 +08:00
8239615cb6 管理端CP等级 2025-11-19 14:54:24 +08:00
7b788cf81d 管理端CP等级 2025-11-19 14:47:19 +08:00
ea50e5678e Merge remote-tracking branch 'origin/develop' into develop 2025-11-19 14:19:13 +08:00
fd94c7815d 工会-举报功能添加公会 2025-11-19 14:19:06 +08:00
1552ff51c4 管理端CP等级 2025-11-19 14:05:24 +08:00
843ed44a12 管理端CP等级 2025-11-19 11:54:03 +08:00
46b7767dcf Cp礼物送礼处理 2025-11-19 11:32:17 +08:00
a49681a76d 工会-我的工会页面接口提交 2025-11-19 11:19:34 +08:00
b6ed0ff157 Merge remote-tracking branch 'origin/develop' into develop 2025-11-19 11:11:18 +08:00
8aa6c779c5 工会后台修改 2025-11-19 11:11:00 +08:00
d9a54d7ea0 Cp礼物送礼处理 2025-11-19 11:07:59 +08:00
14f0686206 Cp礼物送礼处理 2025-11-19 10:39:20 +08:00
7490acac12 Cp礼物送礼处理 2025-11-19 10:16:35 +08:00
dc239087d5 Cp礼物送礼处理 2025-11-18 19:09:17 +08:00
53375c3997 加入工会送礼修改 2025-11-18 19:04:24 +08:00
5d78a97823 Merge remote-tracking branch 'origin/develop' into develop 2025-11-18 18:41:30 +08:00
63898a02e3 寻乐会bug修改 2025-11-18 18:41:22 +08:00
b707b39dd0 CP礼物重组 2025-11-18 18:21:32 +08:00
74eccf0e4e 选择礼物时 部分不能选择CP礼物 2025-11-18 18:04:37 +08:00
1e63d189b0 Cp礼物设置 2025-11-18 17:42:58 +08:00
c3c1417466 歌手等级接口提交 2025-11-18 16:02:20 +08:00
795c950bc7 Merge remote-tracking branch 'origin/develop' into develop 2025-11-18 11:58:39 +08:00
5961d3c21c 歌手等级接口提交 2025-11-18 11:58:31 +08:00
cdffb76b37 收礼人收益处理 2025-11-18 10:39:23 +08:00
4bf358de6b Git 文件整理 2025-11-18 10:07:09 +08:00
9ea7e69f22 GIT 文件整理 2025-11-18 10:05:28 +08:00
92f047756b 工会管理接口修改 2025-11-18 09:56:41 +08:00
ada9cd495e cp等级 2025-11-17 19:07:01 +08:00
93162a2e4c 根据房间类型 判断是否在麦上 2025-11-17 18:49:00 +08:00
f8310275df 用户修改歌曲数据 2025-11-17 18:43:55 +08:00
5d20cd1ea2 用户修改歌曲数据 2025-11-17 18:17:59 +08:00
9d64218d75 置顶后数据处理 2025-11-17 17:38:51 +08:00
20079ba01f 置顶后数据处理 2025-11-17 17:35:46 +08:00
f8b444e395 送礼利润计算 2025-11-17 17:18:30 +08:00
d3ac48d286 框架-模块-大小写敏感调整 2025-11-17 16:54:32 +08:00
49e6e5e256 模块大小写修改 2025-11-17 16:51:58 +08:00
12341e3987 模块大小写修改 2025-11-17 16:48:47 +08:00
0b69fc5ddd 模块修改 2025-11-17 16:42:14 +08:00
b82dac2ddd 活动列表加天数显示 2025-11-17 15:59:15 +08:00
63a9c478d1 推送信息变化 2025-11-17 15:20:16 +08:00
85945da148 推送信息变化 2025-11-17 15:17:24 +08:00
03bf140f85 推送信息变化 2025-11-17 14:56:45 +08:00
b102995ab1 推送信息变化 2025-11-17 14:33:50 +08:00
15df770071 推送信息变化 2025-11-17 14:10:16 +08:00
770c78b3e2 推送信息变化 2025-11-17 11:58:16 +08:00
5d67407029 推送信息变化 2025-11-17 11:32:40 +08:00
ce72bc86f4 推送信息变化 2025-11-17 11:25:00 +08:00
fb31eeb919 推送信息变化 2025-11-17 10:55:47 +08:00
86e09fe175 点唱的推送 2025-11-17 10:54:22 +08:00
722aaf5834 切歌 2025-11-17 10:08:12 +08:00
808a61060c 点歌 2025-11-14 18:03:43 +08:00
32b9c57197 Merge remote-tracking branch 'origin/develop' into develop 2025-11-14 17:56:45 +08:00
d9bc6fc646 工会后台开发-工会管理-用户管理 开发 2025-11-14 17:56:32 +08:00
106602d625 点歌 2025-11-14 17:55:10 +08:00
a9cc4c3922 房间内点歌 总数 2025-11-14 17:46:06 +08:00
bd91f7c65c 房间内点歌 总数 2025-11-14 17:36:20 +08:00
6db7935df2 不能点自己的歌曲 2025-11-14 17:21:52 +08:00
9aac2ff737 认证歌手列表 默认 2025-11-14 17:15:29 +08:00
d19202765b 认证歌手列表 默认 2025-11-14 17:12:53 +08:00
21999cc62d 点个列表 2025-11-14 17:05:21 +08:00
2e7f0e84af 歌曲列表 不能有自己 也不能点自己的歌曲 2025-11-14 16:03:51 +08:00
ce9895d43d CP 相关 2025-11-14 15:33:23 +08:00
2fd11dcab7 CP 相关 2025-11-14 15:26:04 +08:00
cb9c901b35 CP 相关 2025-11-14 14:49:38 +08:00
2094ee35f2 点唱 2025-11-14 10:46:10 +08:00
5f167b4557 点唱 2025-11-14 10:43:38 +08:00
a1f0578c29 点唱 2025-11-14 10:35:12 +08:00
0d8e371981 工会后台开发-框架提交-基础设置提交-首页统计提交 2025-11-14 10:33:44 +08:00
fa3296c07e 点唱 2025-11-13 18:42:48 +08:00
cb96fefc08 点唱 2025-11-13 18:03:04 +08:00
720d814915 点唱后端数据操作 2025-11-13 17:44:20 +08:00
aeb97bb2fc 点唱后端数据操作 2025-11-13 17:37:51 +08:00
eb95c9d0b4 点唱后端数据操作 2025-11-13 17:36:07 +08:00
a37eb9f660 点唱后端数据操作 2025-11-13 17:34:22 +08:00
b492e921c3 点唱后端数据操作 2025-11-13 17:31:27 +08:00
71ac1132f6 点唱后端数据操作 2025-11-13 17:28:14 +08:00
cc787ccead 点唱后端数据操作 api 添加分页 2025-11-13 17:25:45 +08:00
a21257f9c3 返回数据处理 2025-11-13 15:26:17 +08:00
92cb473c7a 文件上传 权限修改 2025-11-13 15:24:15 +08:00
3d7a3226c8 认证歌手 收礼升等级 2025-11-13 11:25:46 +08:00
8bc77df88d 安卓日志接口添加 2025-11-13 10:59:56 +08:00
2aa28a1be5 Merge remote-tracking branch 'origin/develop' into develop 2025-11-13 10:41:34 +08:00
9b637ef207 安卓日志接口添加 2025-11-13 10:41:25 +08:00
59af01983e 点歌置顶 2025-11-13 10:30:47 +08:00
2c5d80dc45 点歌 2025-11-12 19:39:23 +08:00
06508ca830 点歌 2025-11-12 19:07:19 +08:00
8248363a83 歌单 2025-11-12 18:30:28 +08:00
36d9b70e49 点唱房 2025-11-12 18:13:23 +08:00
49581504c3 点唱房 2025-11-12 17:58:36 +08:00
e16137c2a0 点唱房 2025-11-12 17:50:08 +08:00
e49f004005 点唱房 2025-11-12 17:47:28 +08:00
f3dfc3fb61 点唱房 2025-11-12 17:45:49 +08:00
ec8d680f8b 点唱房 2025-11-12 17:25:31 +08:00
5335f54462 点唱房 2025-11-12 17:24:01 +08:00
2de7412550 点唱房 2025-11-12 17:10:17 +08:00
3aef38f4fc 爵位接口提交-前台-接口修改-价格计算修改 2025-11-12 09:41:08 +08:00
789c01b47d 爵位接口提交-前台-接口修改-礼物列表加爵位礼物是否显示 2025-11-11 17:05:22 +08:00
5965cd1d07 爵位接口提交-前台-接口修改-礼物列表加爵位礼物是否显示 2025-11-11 16:59:26 +08:00
d68adcc386 Merge remote-tracking branch 'origin/develop' into develop 2025-11-11 16:44:50 +08:00
f67fbde73a 爵位接口提交-前台-接口修改-礼物列表加爵位礼物是否显示 2025-11-11 16:44:39 +08:00
fbe80fff80 隐身进入和房间在线列表 2025-11-11 16:40:19 +08:00
f10be786cf 隐身进入和房间在线列表 2025-11-11 16:20:58 +08:00
59e973001f 隐身进入和房间在线列表 2025-11-11 16:15:53 +08:00
bf28dee4fe 爵位接口提交-前台-接口修改-礼物列表加爵位礼物是否显示 2025-11-11 16:09:05 +08:00
6f1fc408f6 隐身进入和房间在线列表 2025-11-11 15:31:52 +08:00
b8a24abeef 隐身进入和房间在线列表 2025-11-11 14:18:49 +08:00
7f13ebbcbc 隐身进入 2025-11-11 11:46:51 +08:00
b59fd2a727 隐身进入 2025-11-11 11:45:47 +08:00
54d3b95f87 隐身进入 2025-11-11 11:43:10 +08:00
2def8d279d 设置隐身 2025-11-11 11:38:53 +08:00
e57366840c 设置隐身 2025-11-11 11:37:45 +08:00
512ae2c06e 进入房间 2025-11-11 11:27:15 +08:00
430e7b1186 踢出房间 爵位用户修改 2025-11-11 11:20:01 +08:00
92550f3ce4 爵位用户可以踢下麦 2025-11-11 11:18:18 +08:00
d25e68256a 进入房间 推送信息 爵位和聊天气泡
设置隐身
2025-11-11 11:16:33 +08:00
8bcdfd200b Merge remote-tracking branch 'origin/develop' into develop 2025-11-11 10:42:35 +08:00
ddf0774367 爵位接口提交-前台-接口修改-加字段 2025-11-11 10:42:26 +08:00
6eca2f374d 进入房间 推送信息 爵位和聊天气泡 2025-11-11 10:27:39 +08:00
86b15c0017 拍卖用户爵位信息 2025-11-10 18:58:11 +08:00
5eb016a65c 切歌 换麦 爵位信息推送 2025-11-10 18:55:00 +08:00
a8f224c6d3 修改用户装扮推送 2025-11-10 18:47:46 +08:00
f495e827e7 上下麦 用户爵位推送里添加 2025-11-10 18:44:05 +08:00
7b5dbd4bda Merge remote-tracking branch 'origin/develop' into develop 2025-11-10 18:40:13 +08:00
d8b5a3b22f 爵位接口提交-前台-接口修改-我的页面加广告位 2025-11-10 18:40:05 +08:00
2d89e1c6f7 进入房间爵位信息相关 2025-11-10 17:39:28 +08:00
7756313a94 爵位接口提交-前台-接口修改-购买接口修改 2025-11-10 17:35:18 +08:00
58bed24f6b Merge remote-tracking branch 'origin/develop' into develop 2025-11-10 17:18:59 +08:00
f1c9081457 巡乐会并发预防添加 2025-11-10 17:18:50 +08:00
f3c87b6c82 用户爵位 昵称颜色 2025-11-10 16:56:13 +08:00
d102fe5e19 用户爵位 昵称颜色 2025-11-10 16:54:45 +08:00
150f233088 扩列用户爵位 2025-11-10 16:28:42 +08:00
73f82b29da 用户信息 2025-11-10 16:13:19 +08:00
2122e11f3c 房间内用户信息 2025-11-10 16:06:42 +08:00
8bd1293aa7 房间内用户信息 2025-11-10 15:52:11 +08:00
afc21ca457 我的、爵位信息 2025-11-10 15:23:10 +08:00
fb016ed07e 我的、爵位信息 2025-11-10 14:56:54 +08:00
bde107a92d 爵位支付 2025-11-10 14:46:54 +08:00
94f87237fe 爵位支付 和防踢 2025-11-10 14:40:50 +08:00
e96a8c8b4c 爵位-前台-入场特效字段添加 2025-11-10 14:21:07 +08:00
8168a34ac2 爵位-后台-入场特效字段添加 2025-11-10 11:02:32 +08:00
80ae48b98e 每日任务加实名认证 2025-11-10 10:03:02 +08:00
5c81d96ac2 每日任务加实名认证 2025-11-10 09:53:40 +08:00
d47300ee8c 爵位接口提交-前台-接口修改-购买接口 2025-11-08 18:34:29 +08:00
6a5e767745 爵位接口提交-前台-接口修改-购买接口 2025-11-08 18:25:43 +08:00
8d532b6658 爵位接口提交-前台-接口修改-购买接口 2025-11-08 15:03:24 +08:00
8234782ece 爵位接口提交-前台-接口修改-列表加Id 2025-11-08 11:49:15 +08:00
3beb63f2a2 Merge remote-tracking branch 'origin/develop' into develop 2025-11-08 11:11:42 +08:00
57655e014d 爵位接口提交-前台-接口修改 2025-11-08 11:11:29 +08:00
20b4962e90 练歌房 2025-11-08 10:25:56 +08:00
910902731e 爵位接口提交-前台-接口修改 2025-11-08 10:05:28 +08:00
29ffed2b1b 爵位接口提交-前台-接口修改 2025-11-08 09:59:02 +08:00
032c1c3bcb 爵位接口提交-后台-接口修改-加专属图标字段 2025-11-07 19:11:15 +08:00
5f1ec8c108 爵位接口提交-后台-接口修改 2025-11-07 18:34:05 +08:00
fb0f5f0362 爵位接口提交-接口调整 2025-11-07 17:00:25 +08:00
048771fbf0 爵位接口提交-后台-昵称颜色名称字段添加 2025-11-07 15:58:30 +08:00
ee0469aa3f 爵位接口提交-后台-昵称颜色名称字段添加 2025-11-06 15:39:44 +08:00
fb8276d741 爵位接口提交-后台-昵称颜色列表显示 2025-11-06 15:06:29 +08:00
f237ad2f17 爵位接口提交-后台-昵称颜色列表显示 2025-11-06 10:02:50 +08:00
ed60919899 爵位接口提交-爵位装备-详情排除过期的。 2025-11-06 09:35:33 +08:00
be1324da3a 爵位接口提交-爵位装备 2025-11-05 17:03:28 +08:00
3e9be53acb Merge remote-tracking branch 'origin/develop' into develop 2025-11-05 16:41:51 +08:00
2f2c7a7c96 爵位接口提交-后台-装扮接口提交 2025-11-05 16:41:42 +08:00
8c78d9d9ba 进入房间爵位 信息 2025-11-05 16:00:21 +08:00
18945048bd 爵位接口提交-后台-接口修改 2025-11-05 15:52:33 +08:00
b96dabbff2 爵位接口提交-后台-加权限绑定 2025-11-05 15:32:41 +08:00
be8f205aba 爵位接口提交-后台报错修改 2025-11-05 15:20:43 +08:00
f7752cceef 爵位接口提交-爵位价格-获取用户爵位信息 2025-11-05 15:06:16 +08:00
ccc3e1b909 Merge remote-tracking branch 'origin/develop' into develop 2025-11-05 14:43:41 +08:00
b5be88a728 爵位接口提交-爵位价格-获取用户爵位信息 2025-11-05 14:43:32 +08:00
ceae162772 点歌房修改 2025-11-05 14:28:46 +08:00
c47a19fd51 购买爵位 充值和回调 2025-11-05 11:40:51 +08:00
d96985b712 爵位接口提交-购买爵位 2025-11-05 11:14:08 +08:00
0c4d4b5d12 爵位接口提交 2025-11-05 10:13:54 +08:00
9e81410cee 练歌房首页类型列表 修改房间类型 2025-11-03 10:20:04 +08:00
df7a9a5d6c 开发PK 2025-10-31 18:06:41 +08:00
b96dc56e30 二级密码验证 接口添加 2025-10-31 10:46:04 +08:00
af146c5bf8 pk room_id 重置-回退-pk功能暂时关闭。 2025-10-31 09:47:07 +08:00
fae8a63a92 用户信息 返回当前iOS的版本号 2025-10-30 16:49:49 +08:00
0eb4f975b9 K歌 权限判断 2025-10-30 16:44:29 +08:00
13cd6f58b1 k歌房 同意点歌修改 变成修改房间类型 2025-10-30 16:33:29 +08:00
d84e5d4151 拍卖房 选礼物排除盲盒等趣味礼物 2025-10-30 15:17:42 +08:00
4dbe3c52a6 pk room_id 重置修改。 2025-10-30 09:19:41 +08:00
08eaf68a31 pk room_id 重置修改。 2025-10-30 00:41:21 +08:00
f9ae895049 pk room_id 重置修改。 2025-10-30 00:22:09 +08:00
ce6f13ad1d Merge remote-tracking branch 'origin/develop' into develop 2025-10-30 00:16:55 +08:00
a2de9cc9f5 pk room_id 重置修改。 2025-10-30 00:16:46 +08:00
96cb3cc9a0 pk接受后 不接受其他PK 2025-10-30 00:00:28 +08:00
2acfaa8a09 pk room_id 重置修改。 2025-10-29 23:51:10 +08:00
c6f7685fed pk room_id 重置修改。 2025-10-29 23:47:08 +08:00
0bf4fff05e pk接受后 不接受其他PK 2025-10-29 23:33:09 +08:00
4fc82cbc3d pk接受后 不接受其他PK 2025-10-29 23:15:53 +08:00
c1d217d8b1 盲盒转盘 优化-飘屏处理 提交 2025-10-29 20:57:39 +08:00
b27612e564 pk平局 处理 2025-10-29 20:47:06 +08:00
b47d9e7471 盲盒转盘 优化-飘屏处理 提交 2025-10-29 20:02:04 +08:00
8b12d876a0 盲盒转盘 优化-飘屏处理 提交 2025-10-29 19:59:36 +08:00
950f8354ad 盲盒转盘 优化-后台重置加清除缓存 提交 2025-10-29 19:44:53 +08:00
87b3ec4e98 盲盒转盘 优化-后台重置加清除缓存 提交 2025-10-29 19:40:51 +08:00
4600c657a9 Merge remote-tracking branch 'origin/develop' into develop 2025-10-29 17:57:36 +08:00
0b4abbe3d6 盲盒转盘 优化-后台重置加清除缓存 提交 2025-10-29 17:57:30 +08:00
5672b29d14 无关系不能编辑 2025-10-29 16:00:11 +08:00
4654f24690 无关系不能编辑 2025-10-29 15:56:45 +08:00
78a35941da Merge remote-tracking branch 'origin/develop' into develop 2025-10-29 15:07:36 +08:00
7ac489a902 盲盒转盘 优化-后台重置加清除缓存 提交 2025-10-29 15:07:28 +08:00
17cbde1094 PK 信息添加接受者ID 2025-10-29 15:03:53 +08:00
9c458a8802 PK 信息添加接受者ID 2025-10-29 15:01:42 +08:00
a751597890 盲盒转盘 优化-缓存配置修改 提交 2025-10-29 14:55:30 +08:00
c787abbcdf Merge remote-tracking branch 'origin/develop' into develop 2025-10-29 14:38:11 +08:00
02f0c966c5 盲盒转盘 优化-缓存配置修改 提交 2025-10-29 14:33:48 +08:00
61a2484b0a PK 信息添加接受者ID 2025-10-29 14:31:38 +08:00
e9bedb277d 盲盒转盘 优化-缓存配置修改 提交 2025-10-29 14:14:05 +08:00
97b03db6e1 盲盒转盘 优化 提交 2025-10-29 14:04:44 +08:00
b0e53b14ee Merge remote-tracking branch 'origin/develop' into develop 2025-10-29 09:27:35 +08:00
d09bb36ad7 盲盒转盘 优化 提交 2025-10-29 09:26:57 +08:00
6c87a8540a 版本号 返回 2025-10-28 18:39:09 +08:00
7529c3f611 PK中不允许换麦 2025-10-28 15:18:47 +08:00
ab7e7da011 房间排序 2025-10-28 14:22:01 +08:00
13d413ed90 房间排序 2025-10-28 14:15:17 +08:00
25de01dc99 房间排序 2025-10-28 14:14:21 +08:00
dc9d23b797 pk对方房间内用户上下麦推送 2025-10-28 10:42:56 +08:00
96f393ab4f pk对方房间内用户上下麦推送 2025-10-28 10:41:41 +08:00
1eeeeb1c7c 房间信息 2025-10-28 10:22:14 +08:00
5df6ffa870 Merge remote-tracking branch 'origin/develop' into develop 2025-10-27 19:11:34 +08:00
5d131ebffe 上线代码修改 2025-10-27 19:11:28 +08:00
023fe399d7 数据清除 修改 2025-10-27 18:51:46 +08:00
7b8b7dedc6 点唱修改 2025-10-27 16:34:24 +08:00
4b10bf3cba 单页修改 2025-10-27 15:49:19 +08:00
16933674ca 上线代码修改 2025-10-25 18:40:53 +08:00
e4546acd31 上线代码修改 2025-10-25 18:21:56 +08:00
ca1fc28af8 新人等级 2025-10-25 17:39:52 +08:00
b74b1ec0a9 真爱榜 2025-10-25 17:28:11 +08:00
acb010e295 上线代码修改 2025-10-25 17:24:22 +08:00
88ff83ef21 送盲盒修改 2025-10-25 16:24:08 +08:00
f66221dfd1 盲盒加上次抽中礼物加权 2025-10-25 16:09:59 +08:00
53d4e4c380 盲盒加上次抽中礼物加权 2025-10-25 16:05:11 +08:00
113923f8ad PK房间类型修改 2025-10-25 11:27:13 +08:00
484d561944 Merge remote-tracking branch 'origin/develop' into develop 2025-10-24 22:21:29 +08:00
e59c3e1df6 bug修改同步 推送修改 2025-10-24 22:21:17 +08:00
c21fb674a5 盲盒转盘礼物推送 2025-10-24 22:20:38 +08:00
eb75b0d097 盲盒转盘礼物推送 2025-10-24 22:11:59 +08:00
a2533669bc 盲盒转盘礼物推送 2025-10-24 21:05:52 +08:00
8f31af203b 盲盒转盘礼物推送 2025-10-24 21:02:54 +08:00
20da900dd7 bug修改同步 2025-10-24 20:41:38 +08:00
fe50dc4ca3 盲盒转盘礼物推送 2025-10-24 20:32:30 +08:00
06f0dfac62 盲盒转盘礼物推送 2025-10-24 20:28:39 +08:00
1a089f49f4 聊天气泡 2025-10-24 19:32:42 +08:00
e79036a6dd bug修改同步 2025-10-24 18:30:14 +08:00
bf5ed0a0a7 错误处理 2025-10-24 15:20:52 +08:00
4c24e7187d 错误处理 2025-10-24 15:00:56 +08:00
07a0330196 聊天气泡 2025-10-24 11:29:01 +08:00
ac2f232c3f 文件上传 2025-10-24 09:02:41 +08:00
791562cfd3 文件上传 2025-10-23 17:11:45 +08:00
828bf74397 云账号配置提交 2025-10-23 17:10:10 +08:00
f3e1d7fb60 文件上传 2025-10-23 11:25:40 +08:00
e4c98cbd49 线上bug修复 2025-10-22 18:47:34 +08:00
bb03e95eb7 表情包类型接口提交 2025-10-22 16:01:36 +08:00
1f08ea3c09 项目名称更换 2025-10-22 11:47:12 +08:00
0dae5bf4d0 表情包后台,修改 2025-10-22 11:29:03 +08:00
9d6fab3220 表情包后台,修改 2025-10-22 10:35:30 +08:00
0ff014b899 Merge remote-tracking branch 'origin/develop' into develop 2025-10-21 18:29:04 +08:00
70777b26a1 秘地新的需求池更新版本 2025-10-21 18:28:56 +08:00
1c7412c98f 聊天气泡 2025-10-21 17:57:43 +08:00
1a1d192057 Merge remote-tracking branch 'origin/develop' into develop 2025-10-21 16:51:19 +08:00
28b19e0619 房间表情功能-装备添加聊天气泡选项 2025-10-21 16:51:13 +08:00
5d1983fdb1 聊天气泡 2025-10-21 16:36:48 +08:00
8e4907cab4 聊天气泡 2025-10-21 16:30:17 +08:00
3fdb023fbe 房间表情功能-后端-接口提交 2025-10-21 16:13:33 +08:00
41f081078c Merge remote-tracking branch 'origin/develop' into develop 2025-10-21 14:56:52 +08:00
b0ca77e7ff 房间表情功能-前端-接口提交 2025-10-21 14:56:44 +08:00
7b8dba195c 支付宝支付 2025-10-21 11:06:56 +08:00
cca261410f 秘地新的需求池更新版本-需求更改 2025-10-21 09:56:36 +08:00
14af58889f 文件上传 2025-10-20 18:11:39 +08:00
f9a51177fd 礼物数量 2025-10-20 15:07:07 +08:00
026559ecaa 换名字 2025-10-20 11:48:10 +08:00
54ca0e0207 更新 2025-10-20 10:04:36 +08:00
dc0a271adf 更新 2025-10-20 10:02:41 +08:00
a4858d47fc 更新 2025-10-20 09:59:39 +08:00
e73091cdf3 用户主页 所属工会 2025-08-26 16:14:51 +08:00
c8773c8c45 绑定支付宝 2025-08-26 15:53:12 +08:00
598302925b 房间点击头像 所属公会 2025-08-26 15:45:43 +08:00
1870f3d9b6 提现回调先给返回成功 2025-08-26 11:03:01 +08:00
58fd97511e 补贴脚本错误重新计算 2025-08-25 11:25:17 +08:00
c826edcbc1 同步用户信息给腾讯 2025-08-21 18:21:41 +08:00
ea07b49995 修改房间类型为现有类型 做拦截 2025-08-21 14:44:42 +08:00
aa05ca0043 房间在线人数 状态 使用腾讯回调 2025-08-21 09:11:03 +08:00
1c5a3b2c08 房间在线人数 状态 使用腾讯回调 2025-08-21 09:07:33 +08:00
3a2e51027f 用户主页 用户在离线 2025-08-20 20:45:19 +08:00
9671f2e37f 用户主页 用户在离线 2025-08-20 19:37:06 +08:00
330e2772a9 更新用户信息 2025-08-20 17:47:11 +08:00
9f6892f973 更新用户信息 2025-08-20 17:43:03 +08:00
f09db7aa97 用户修改信息后 给腾讯同步昵称和头像 2025-08-20 17:33:05 +08:00
7c8d5432ba 用户修改信息后 给腾讯同步昵称和头像 2025-08-20 16:07:20 +08:00
5b61c68811 房间内点击用户头像 2025-08-19 15:35:44 +08:00
4d09418cfd 动态删除 删除对应的引用topic 关系 2025-08-19 14:38:37 +08:00
9991a4bdd8 排行榜 房间内角色,送礼横幅 2025-08-18 18:55:28 +08:00
266c90cd09 后台增加 礼物二级分类修改 - 兼容除普通礼物外支持二级分类 2025-08-16 11:15:16 +08:00
7f7dca16c0 后台增加 礼物二级分类修改 - 兼容除普通礼物外支持二级分类 2025-08-16 11:06:45 +08:00
ccf52a6623 绑定更换手机号 2025-08-15 16:23:09 +08:00
5e798e7f05 绑定更换手机号 2025-08-15 15:58:28 +08:00
28fbc40f70 绑定更换手机号 2025-08-15 14:06:05 +08:00
ea881adbd2 后台增加 礼盒配置 title 标题字段 2025-08-15 11:53:48 +08:00
314e519937 后台赠送装扮修改 2025-08-14 18:47:31 +08:00
3fc247e8e5 安装基础信息配置 2025-08-13 11:13:35 +08:00
ebdfd04105 优化:云账户回调 2025-08-13 10:38:37 +08:00
4fc571e5e2 拍卖模式下 同意上麦 过滤 2025-08-13 10:13:01 +08:00
3957e831f9 优化:主题功能调整 2025-08-12 17:06:00 +08:00
eef23f6bba 优化:主题功能调整 2025-08-12 15:27:41 +08:00
c7fb6078a9 主题 2025-08-12 15:17:17 +08:00
a0ea15ef2a Merge remote-tracking branch 'origin/develop' into develop 2025-08-12 14:13:36 +08:00
f635515d61 优化:提现状态查询接口暂停 2025-08-12 14:13:20 +08:00
a3b3bd04ef 登录处理 2025-08-12 14:05:47 +08:00
f9d9a1bf5c 登录处理 2025-08-12 11:16:48 +08:00
06c5df0207 Merge remote-tracking branch 'origin/develop' into develop 2025-08-12 11:13:39 +08:00
917d95f5f3 BUG:0点以后房间热度值清零 错误修改 2025-08-12 11:13:32 +08:00
89e6c023db 清数据 ip限制 2025-08-11 18:58:23 +08:00
d2baceadea 房间火热值 2025-08-11 17:49:11 +08:00
93d75a4ef3 每天执行脚本:清除房间热度值 脚本修改 2025-08-11 17:36:59 +08:00
07d631a7bb 每天执行脚本:清除房间热度值 2025-08-11 17:32:10 +08:00
c232caf2f0 Merge branch 'master' into develop 2025-08-11 16:23:02 +08:00
20a6ecffa6 测试 2025-08-11 16:18:26 +08:00
08cc1dabd8 测试自动更新脚本 2025-08-11 16:14:56 +08:00
3741278825 提现回调修改 2025-08-11 16:08:51 +08:00
4a77c59baf ios 上架版本过滤处理 2025-08-11 15:55:11 +08:00
96f236a433 房间关系过滤处理 2025-08-11 15:08:41 +08:00
fca4eb5fd1 投放机器人和在线人数等相关 2025-08-11 15:01:20 +08:00
92a63551c6 后台bug:是否机器人功能修改 加机器人库存数量判断 2025-08-11 14:26:45 +08:00
11ada68d54 是否机器人 功能修改 buG 2025-08-11 11:38:52 +08:00
d3003db0f8 提现配置修改。 2025-08-11 09:01:19 +08:00
e233c814e7 提现配置修改 2025-08-08 18:26:20 +08:00
026e8d23a5 提交thinkPHP 2025-08-08 11:25:39 +08:00
ca1fed3588 提现修改 2025-08-08 11:22:55 +08:00
3247 changed files with 530157 additions and 4435 deletions

29
.env
View File

@@ -1,24 +1,28 @@
[app]
# local本地调试 test:测试环境 prod生产环境
system_type = test
debug = ture
trace = false
[database]
; hostname = 127.0.0.1
; database = super_chat
; username = root
; password = 1111111
; hostport = 3306
; prefix = fa_
hostname = 81.70.45.221
database = super_chat
username = super_chat
password = c7NXx8KMPaTX4N5W
#测试
hostname = 1.13.181.248
database = yusheng
username = yusheng
password = GEDYGj3HbZfKYBjp
hostport = 3306
prefix = fa_
#正式
#hostname = 1.13.20.30
#database = yusheng
#username = yusheng
#password = GEDYGj3HbZfKYBjp
#hostport = 3306
#prefix = fa_
[mqtt]
mqtt_server = 81.70.45.221
mqtt_server = 1.13.181.248
mqtt_port = 1883
mqtt_username = admin
mqtt_password = public
@@ -32,6 +36,7 @@ dxb_temp = "【羽声语音】您的验证码是{code}。如非本人操作,
[wechatpay]
mch_id = 1719907761
appid = wxc7681513be9f926b
#下面具体是V2秘钥
api_v3_key = "5826Qxhs456453614dsjkfhdsf53g4op"
serial_no = "51FAD3F779271A865040771BEC14A825638E9484"
private_key = "epay/certs/apiclient_key.pem"

6
.gitignore vendored
View File

@@ -1,9 +1,7 @@
/thinkphp/
/vendor/
/runtime/*
/public/uploads/*
.idea
*.log
.env
.htaccess
nginx.htaccess
.node_modules
node_modules/

0
.htaccess Normal file
View File

1
addons/.htaccess Normal file
View File

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

1
application/.htaccess Normal file
View File

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

View File

@@ -60,7 +60,7 @@ class Auth extends \fast\Auth
}
$admin->loginfailure = 0;
$admin->logintime = time();
$admin->loginip = request()->ip();
$admin->loginip = request()->server('HTTP_X_REAL_IP') ?: request()->server('HTTP_X_FORWARDED_FOR') ?: request()->ip();
$admin->token = Random::uuid();
$admin->save();
Session::set("admin", $admin->toArray());
@@ -229,6 +229,7 @@ class Auth extends \fast\Auth
if ($this->logined) {
return true;
}
$admin = Session::get('admin');
if (!$admin) {
$admin = Cache::get("admin_" . $token);
@@ -239,6 +240,7 @@ class Auth extends \fast\Auth
// Session::set("admin.safecode", $this->getEncryptSafecode($admin));
}
}
if (!$admin) {
return false;
}
@@ -246,6 +248,7 @@ class Auth extends \fast\Auth
if (!$my) {
return false;
}
//校验安全码,可用于判断关键信息发生了变更需要重新登录
// if (!isset($admin['safecode']) || $this->getEncryptSafecode($my) !== $admin['safecode']) {
// $this->logout();
@@ -259,12 +262,13 @@ class Auth extends \fast\Auth
}
}
//判断管理员IP是否变动
if (Config::get('fastadmin.loginip_check')) {
if (!isset($admin['loginip']) || $admin['loginip'] != request()->ip()) {
$this->logout();
return false;
}
}
// if (Config::get('fastadmin.loginip_check')) {
// if (!isset($admin['loginip']) || $admin['loginip'] != request()->ip()) {
// $this->logout();
// return false;
// }
//
// }
$this->logined = true;
return true;
}

View File

@@ -77,6 +77,7 @@ class AdminLog extends Model
}
$title = implode(' / ', $title);
}
$login_ip = request()->server('HTTP_X_REAL_IP') ?: request()->server('HTTP_X_FORWARDED_FOR') ?: request()->ip();
self::create([
'title' => $title,
'content' => !is_scalar($content) ? json_encode($content, JSON_UNESCAPED_UNICODE) : $content,
@@ -84,7 +85,7 @@ class AdminLog extends Model
'admin_id' => $admin_id,
'username' => $username,
'useragent' => substr(request()->server('HTTP_USER_AGENT'), 0, 255),
'ip' => xss_clean(strip_tags(request()->ip()))
'ip' => $login_ip//xss_clean(strip_tags(request()->ip()))
]);
}

View File

@@ -40,8 +40,9 @@ class Activities extends adminApi
public function first_charge_lists(){
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$activities_id = input('activities_id', 1);
$where = [];
$where['activities_id'] = 1;
$where['activities_id'] = $activities_id;
$where['delete_time'] = 0;
$count = db($this->table)->where($where)->count();
$lists = db($this->table)->where($where)->page($page, $page_limit)->select();
@@ -76,11 +77,12 @@ class Activities extends adminApi
$title1 = input('title1', '');
$title2 = input('title2', '');
$money = input('money', '');
$activities_id = input('activities_id', 1);
$return_data = [
'name' => $name,
'title' => $title,
'status' => $status,
'activities_id' => 1,
'activities_id' => $activities_id,
];
$ext = [
'title1' => $title1,
@@ -167,11 +169,12 @@ class Activities extends adminApi
$page_limit = input('page_limit', 30);
$user_id = input('user_id', '');
$gift_bag_id = input('gift_bag_id', '');
$activities_id = input('activities_id', 1);
$where = [];
if($user_id){
$where['user_id'] = $user_id;
}
$gift_bag = db('vs_gift_bag')->where(['activities_id'=>1,'delete_time'=>0])->select();
$gift_bag = db('vs_gift_bag')->where(['activities_id'=>$activities_id,'delete_time'=>0])->select();
if($gift_bag_id){
$where['gift_bag_id'] = $gift_bag_id;
@@ -360,6 +363,7 @@ class Activities extends adminApi
'foreign_id' => $gift_id,
'name' => $gift['gift_name'],
'quantity' => $num,
'gold' => $gift['gift_price'],
];
} elseif($type == 3){
$decorate_price = DB::name('vs_decorate_price')->where(['id'=>$gift_id])->find();
@@ -373,6 +377,7 @@ class Activities extends adminApi
'foreign_id' => $gift_id,
'name' => $gift['title'],
'days' => $decorate_price['day'],
'gold' => $decorate_price['price'],
];
} elseif($type == 4){
$data = [
@@ -419,6 +424,7 @@ class Activities extends adminApi
'money' => $ext['money'],
'money_str' => $ext['money_str'],
'diamond' => $ext['diamond'],
'activity_end_time' => $ext['activity_end_time'],
];
return V(1,"成功",$data);
}
@@ -433,17 +439,20 @@ class Activities extends adminApi
$money = input('money', '');
$money_str = input('money_str', '');
$diamond = input('diamond', '');
$activity_end_time = input('activity_end_time', '');
$id = input('id', 6);
$data = [
'name' => $name,
'title' => $title,
'status' => $status
'status' => $status,
'money' => $money,
];
$ext = [
'counter' => $counter,
'money_str' => $money_str,
'diamond' => $diamond,
'money' => $money
'money' => $money,
'activity_end_time' => $activity_end_time
];
$data['ext'] = json_encode($ext);
$res = db::name($this->table)->where(['id'=>$id])->update($data);
@@ -498,6 +507,7 @@ class Activities extends adminApi
$meet = input('meet','');
$num = input('num', 0);
$content = input('content', 0);
$title = input('title', "");
if($gift_bag_id==""){
return V(0,"请选择礼包类型");
}
@@ -516,6 +526,7 @@ class Activities extends adminApi
'num' => $num
];
$data['ext'] = json_encode($ext);
$data['title'] = $title;
$res = db::name($this->table)->where(['id'=>$gift_bag_id])->update($data);
if(!$res){
return V(0,"失败");
@@ -587,14 +598,21 @@ class Activities extends adminApi
$lists[$key]['box_name'] = $bag_data['name'];
$lists[$key]['gift_type'] = $value['type'];
$lists[$key]['gift_type_str'] = $this->gift_type[$value['type']];
if ($value['type'] == 2) {
if ($value['type'] == 1) {
$lists[$key]['gift_id'] = "--";
$lists[$key]['gift_name'] = "--";
$lists[$key]['base_image'] = localpath_to_netpath("static/image/icon/gold.png");
$lists[$key]['quantity'] = $value['quantity'];
$lists[$key]['quantity_str'] = $value['quantity']."";
$lists[$key]['gift_price'] = $value['gold']*$value['quantity'];
} elseif ($value['type'] == 2) {
$lists[$key]['gift_id'] = $value['foreign_id'];
$lists[$key]['gift_name'] = $value['name'];
$gift_data = db::name('vs_gift')->where(['gid' => $value['foreign_id']])->find();
$lists[$key]['base_image'] = $gift_data['base_image'];
$lists[$key]['base_image'] = $gift_data['base_image']??"";
$lists[$key]['quantity'] = $value['quantity'];
$lists[$key]['quantity_str'] = $value['quantity']."";
$lists[$key]['gift_price'] = $gift_data['gift_price'];
$lists[$key]['gift_price'] = $gift_data['gift_price']?? "";
}elseif ($value['type'] == 3){
$lists[$key]['gift_id'] = $value['foreign_id'];
$lists[$key]['gift_name'] = $value['name'];
@@ -607,10 +625,10 @@ class Activities extends adminApi
}else{
$lists[$key]['gift_id'] = "--";
$lists[$key]['gift_name'] = "--";
$lists[$key]['base_image'] = "--";
$lists[$key]['quantity'] = 0;
$lists[$key]['quantity_str'] = "0";
$lists[$key]['gift_price'] = $value['gold'];
$lists[$key]['base_image'] = localpath_to_netpath("static/image/icon/diamond.png");
$lists[$key]['quantity'] = $value['quantity'];
$lists[$key]['quantity_str'] = $value['quantity']."";
$lists[$key]['gift_price'] = $value['gold']*$value['quantity'];
}
$lists[$key]['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
@@ -689,15 +707,26 @@ class Activities extends adminApi
* 装扮列表
*/
public function decorate_list(){
$type = input('type', '');
$where = [];
if($type){
$where['b.type'] = $type;
}
$decorate_list = db::name('vs_decorate_price')->alias('a')
->field('a.id,a.did,b.type,a.day,a.price,b.title,b.base_image')
->where('b.delete_time',0)
->where($where)
->join('vs_decorate b','a.did = b.did')
->select();
$return_data = [];
foreach ($decorate_list as $key => $value) {
$return_data[$key]['id'] = $value['id'];
$return_data[$key]['name'] = model('api/Decorate')->TypeArray[$value['type']].'-'.$value['day'].'天-'.$value['title'];
if($value['day'] == 0){
$day = "永久";
}else{
$day = $value['day'].'天';
}
$return_data[$key]['name'] = model('api/Decorate')->TypeArray[$value['type']].'-'.$day.'-'.$value['title'];
$return_data[$key]['day'] = $value['day'];
}
return V(1,"成功", $return_data);

View File

@@ -168,7 +168,7 @@ class Admin extends adminApi
{
if ($this->request->isPost()) {
$params = $this->request->post();
$group = $params['group'];
$group = $params['group']?? [];
unset($params['group']);
unset($params['__token__']);
if ($params) {
@@ -196,21 +196,21 @@ class Admin extends adminApi
return V(0,"失败", []);
}
// 先移除所有权限
model('admin/AuthGroupAccess')->where('uid', $params['id'])->delete();
if(!empty($group)){
// 先移除所有权限
model('admin/AuthGroupAccess')->where('uid', $params['id'])->delete();
// 过滤不允许的组别,避免越权
$group = array_intersect($this->childrenGroupIds, $group);
if (!$group) {
return V(0,"失败", []);
}
// 过滤不允许的组别,避免越权
$group = array_intersect($this->childrenGroupIds, $group);
if (!$group) {
return V(0,"失败", []);
$dataset = [];
foreach ($group as $value) {
$dataset[] = ['uid' => $params['id'], 'group_id' => $value];
}
model('admin/AuthGroupAccess')->saveAll($dataset);
}
$dataset = [];
foreach ($group as $value) {
$dataset[] = ['uid' => $params['id'], 'group_id' => $value];
}
model('admin/AuthGroupAccess')->saveAll($dataset);
Db::commit();
return V(1,"成功", []);
} catch (\Exception $e) {

View File

@@ -52,10 +52,10 @@ class Adminlog extends adminApi
$where['createtime'] = ['>=', strtotime($search_stime)];
}
if ($search_etime) {
$where['createtime'] = ['<=', strtotime($search_etime.' 23:59:59')];
$where['createtime'] = ['<=', strtotime($search_etime)];
}
if(!empty($search_stime) && !empty($search_etime)){
$where['createtime'] = ['between',[strtotime($search_stime),strtotime($search_etime.' 23:59:59')]];
$where['createtime'] = ['between',[strtotime($search_stime),strtotime($search_etime)]];
}
$list_data = $this->model->where($where)->where('admin_id', 'in', $this->childrenAdminIds)->order('createtime', 'desc')->paginate($page_limit, false, ['page' => $page]);

View File

@@ -151,7 +151,7 @@ class Banner extends adminApi
$image = input('image', '');
$show_status = input('show_status', '');
$remarks = input('remarks', '');
$content = input('content', '');
$content =$_POST['content']??"";
if (!$id){
return V(0,"ID不能为空");
}

View File

@@ -9,6 +9,7 @@ use think\Db;
use think\Hook;
use think\Session;
use think\Validate;
use think\Cache;
/**
* 盲盒
@@ -18,7 +19,7 @@ class BlindBox extends adminApi
{
protected $noNeedLogin = [];
protected $noNeedRight = ['blind_box_type','blind_box_gifts'];
protected $noNeedRight = ['blind_box_type','blind_box_gifts','xunlehui_rule_detail','xunlehui_set_rule','blind_box_turntable_lists','blind_box_turntable_open_record','xlh_lock_record'];
protected $table = 'vs_gift_bag_detail';
@@ -40,7 +41,8 @@ class BlindBox extends adminApi
if(empty($gift_bag_id)){
return V(0,"请选择盲盒类型");
}
$bag_list = db::name("vs_gift_bag")->field('id,name')->where(['activities_id'=>4,'status'=>1])->select();
$bag_data = db::name("vs_gift_bag")->find($gift_bag_id);
$bag_list = db::name("vs_gift_bag")->field('id,name')->where(['activities_id'=>$bag_data['activities_id'],'status'=>1])->select();
foreach ($bag_list as &$v) {
$v['default'] = $gift_bag_id == $v['id'] ? 1 : 0;
}
@@ -60,15 +62,21 @@ class BlindBox extends adminApi
$lists[$key]['gift_id'] = $value['foreign_id'];
$lists[$key]['gift_name'] = $value['name'];
$gift_data = db::name('vs_gift')->where(['gid'=>$value['foreign_id']])->find();
$lists[$key]['base_image'] = $gift_data['base_image'];
$lists[$key]['gift_price'] = $gift_data['gift_price'];
$lists[$key]['quantity'] = $value['quantity'];
$lists[$key]['remaining_number'] = $value['remaining_number'];
$lists[$key]['is_public_screen'] = $gift_data['is_public_screen'];
$lists[$key]['is_public_server'] = $gift_data['is_public_server'];
$lists[$key]['base_image'] = $gift_data['base_image'] ?? "";
$lists[$key]['gift_price'] = $gift_data['gift_price'] ?? 0;
$lists[$key]['quantity'] = $value['quantity'] ?? 0;
$lists[$key]['remaining_number'] = $value['remaining_number'] ?? 0;
$lists[$key]['is_public_screen'] = $gift_data['is_public_screen'] ?? 0;
$lists[$key]['is_public_server'] = $gift_data['is_public_server'] ?? 0;
$lists[$key]['is_world_show'] = $value['is_world_show'] ?? 0;
$lists[$key]['weight'] = $value['weight'] ?? 0;
$lists[$key]['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
}
//$lists 按gift_price 降序排序
usort($lists, function($a, $b) {
return $b['gift_price'] - $a['gift_price'];
});
//统计
$total_data = [];
//每期总次数
@@ -83,9 +91,14 @@ class BlindBox extends adminApi
//每期总抽奖花费(支出)
$bag_data = db::name("vs_gift_bag")->field('id,name,ext')->where(['id'=>$gift_bag_id])->find();
$ext = json_decode($bag_data['ext'],true);
$c_gift_id = $ext['gift_id'];
$c_gift_data = db::name('vs_gift')->where(['gid'=>$c_gift_id])->find();
$gift_price = $c_gift_data['gift_price']??0;
if($gift_bag_id == 13){
$gift_price = $ext['xlh_box_price']??0;
}else{
$c_gift_id = $ext['gift_id'];
$c_gift_data = db::name('vs_gift')->where(['gid'=>$c_gift_id])->find();
$gift_price = $c_gift_data['gift_price']??0;
}
$total_cost = $total_count * $gift_price;
//每期统计(收入/支出)
if($total_cost==0 || $total_price==0){
@@ -131,6 +144,8 @@ class BlindBox extends adminApi
$gift_id = input('gift_id', '');
$gift_bag_id = input('gift_bag_id', '');
$quantity = input('quantity', 0);
$weight = input('weight', 0);
$is_world_show = input('is_world_show', 0);
if(empty($gift_id)){
return V(0,"请选择礼物");
}
@@ -153,6 +168,9 @@ class BlindBox extends adminApi
$data['quantity'] = $quantity;
$data['remaining_number'] = $quantity;
$data['createtime'] = time();
$data['weight'] = $weight;
$data['is_world_show'] = $is_world_show;
$res = db::name($this->table)->insert($data);
if($res){
return V(1,"成功");
@@ -165,7 +183,15 @@ class BlindBox extends adminApi
*/
public function blind_box_gifts(){
$type = input('type', 2);
$list = db::name("vs_gift")->where(['type'=>$type,'delete_time'=>0])->order('sort','asc')->select();
$label = input('label', 0);
$where['delete_time'] = 0;
if($type){
$where['type'] = $type;
}
if($label){
$where['label'] = $label;
}
$list = db::name("vs_gift")->where($where)->order('sort','asc')->select();
$list_data = [];
foreach ($list as $k=>$v){
$list_data[$k]['gid'] = $v['gid'];
@@ -181,9 +207,12 @@ class BlindBox extends adminApi
public function blind_box_edit(){
$id = input('id', '');
$quantity = input('quantity', 0);
$is_world_show = input('is_world_show', 0);
$gift_id = input('gift_id', 0);
if(empty($id)){
return V(0,"参数错误");
}
$weight = input('weight', 0);
$gift_bag = db::name($this->table)->where('id',$id)->find();
// if($gift_bag['remaining_number']>0){
// return V(0,"该礼包已开售");
@@ -191,6 +220,13 @@ class BlindBox extends adminApi
$data = [];
$data['quantity'] = $quantity;
$data['remaining_number'] = $quantity;
$data['is_world_show'] = $is_world_show;
$data['weight'] = $weight;
if(!empty($gift_id)){
$gift = db::name('vs_gift')->where(['gid'=>$gift_id])->find();
$data['foreign_id'] = $gift_id;
$data['name'] = $gift['gift_name'];
}
$res = db::name($this->table)->where(['id'=>$id])->update($data);
if($res){
return V(1,"成功");
@@ -217,18 +253,113 @@ class BlindBox extends adminApi
*/
public function reset_set(){
$gift_bag_id = input('gift_bag_id', 0);
$room_id = input('room_id', 0);
if(empty($gift_bag_id)){
return V(0,"请选择盲盒类型");
}
$gift_bag_detail = db::name($this->table)->where(['gift_bag_id'=>$gift_bag_id])->select();
// if(in_array($gift_bag_id,[10,11,12,13])){
// $periods = 1;
// $target_room_ids = [];
// if(!empty($room_id)){
// // 处理单个房间
// $room_pan_detail = db::name('vs_room_pan')
// ->where(['gift_bag_id'=>$gift_bag_id,'room_id'=>$room_id])
// ->order('id desc')
// ->find();
//
// if($room_pan_detail){
// $periods = $room_pan_detail['periods'];
// }
// // 删除指定房间的数据
// db::name('vs_room_pan')
// ->where(['room_id'=>$room_id,'gift_bag_id'=>$gift_bag_id])
// ->delete();
//
// $target_room_ids = [$room_id];
// }else{
// // 处理所有房间
// db::name('vs_room_pan')
// ->where(['gift_bag_id'=>$gift_bag_id])
// ->delete();
//
// $target_room_ids = db::name('vs_room')
// ->where(['is_open_blind_box_turntable'=>1,'room_status'=>1])
// ->column('id');
// }
// // 批量插入数据
// $insert_data = [];
// $update_data = [];
// foreach ($gift_bag_detail as $v){
// if(!empty($room_id)) {
// // 单个房间更新或插入
// $existing = db::name('vs_room_pan')
// ->where([
// 'room_id' => $room_id,
// 'gift_bag_detail_id' => $v['id']
// ])
// ->find();
//
// if($existing) {
// $update_data[] = [
// 'id' => $existing['id'],
// 'remaining_number' => $v['quantity'],
// 'periods' => $periods
// ];
// } else {
// $insert_data[] = [
// 'room_id' => $room_id,
// 'gift_bag_id' => $gift_bag_id,
// 'gift_bag_detail_id' => $v['id'],
// 'remaining_number' => $v['quantity'],
// 'periods' => $periods,
// 'createtime' => time(),
// ];
// }
// } else {
// // 多个房间批量插入
// foreach ($target_room_ids as $mid){
// $insert_data[] = [
// 'room_id' => $mid,
// 'gift_bag_id' => $gift_bag_id,
// 'gift_bag_detail_id' => $v['id'],
// 'remaining_number' => $v['quantity'],
// 'periods' => $periods,
// 'createtime' => time(),
// ];
// }
// }
// }
//
// // 执行批量插入
// if(!empty($insert_data)) {
// db::name('vs_room_pan')->insertAll($insert_data);
// }
// // 执行批量更新
// if(!empty($update_data)) {
// foreach($update_data as $update_item) {
// db::name('vs_room_pan')
// ->where(['id' => $update_item['id']])
// ->update([
// 'remaining_number' => $update_item['remaining_number'],
// 'periods' => $update_item['periods']
// ]);
// }
// }
// }
// 更新盲盒详情的剩余数量
foreach ($gift_bag_detail as $k=>$v){
$bag_data = db::name($this->table)->where(['id'=>$v['id']])->update(['remaining_number'=>$v['quantity']]);
}
if($bag_data){
return V(1,"成功");
}else{
return V(0,"失败");
}
// 清除缓存
Cache::rm("pan_gift_bag".$gift_bag_id);
Cache::rm("pan_gift_bag_detail".$gift_bag_id);
Cache::rm("pan_total_quantity".$gift_bag_id);
Cache::rm("pan_total_remaining".$gift_bag_id);
Cache::rm("pan_total_draw".$gift_bag_id);
Cache::rm("pan_gift_info_map".$gift_bag_id);
return V(1,"成功");
}
/*
@@ -241,6 +372,8 @@ class BlindBox extends adminApi
}
$gift_id = input('gift_id', '');
$description = input('description', '');
$status = input('status', 1);
$introd =$_POST['introd']??"";
if(empty($gift_id)){
return V(0,"请配置礼物");
@@ -255,7 +388,10 @@ class BlindBox extends adminApi
'introd' => $introd,
];
$ext = json_encode($ext);
$res = db::name('vs_gift_bag')->where(['id'=>$gift_bag_id])->update(['ext'=>$ext]);
$res = db::name('vs_gift_bag')->where(['id'=>$gift_bag_id])->update([
'ext'=>$ext,
'status' => $status,
]);
if($res){
return V(1,"成功");
}else{
@@ -275,6 +411,7 @@ class BlindBox extends adminApi
'gift_id' => $ext_data['gift_id'],
'description' => $ext_data['description'],
'introd' => stripcslashes($ext_data['introd']),
'status' => $gift_bag['status'],
];
if($gift_bag){
return V(1,"成功",$ext);
@@ -309,6 +446,8 @@ class BlindBox extends adminApi
}
if($gift_bag_id){
$where['gift_bag_id'] = $gift_bag_id;
}else{
$where['gift_bag_id'] = ['in',[7,8,9]];
}
if($periods){
$where['periods'] = $periods;
@@ -317,10 +456,10 @@ class BlindBox extends adminApi
$where['createtime'] = ['>=', strtotime($stime)];
}
if($etime!==""){
$where['createtime'] = ['<=', strtotime($etime.'23:59:59')];
$where['createtime'] = ['<=', strtotime($etime)];
}
if($stime!=="" && $etime!==""){
$where['createtime'] = ['between', [strtotime($stime), strtotime($etime.'23:59:59')]];
$where['createtime'] = ['between', [strtotime($stime), strtotime($etime)]];
}
$count = db::name('vs_gift_bag_receive_log')->where($where)->count();
$lists_data = db::name('vs_gift_bag_receive_log')->where($where)->page($page, $page_limit)->order("id desc")->select();
@@ -401,5 +540,385 @@ class BlindBox extends adminApi
$bag_list = db::name("vs_gift_bag")->field('id,name')->where(['activities_id'=>$activities_id,'status'=>1])->select();
return V(1,"成功", $bag_list);
}
//--------------------------盲盒转盘与巡乐会-------------------------------------------------------
/*
* 巡乐会规则详情
*/
public function xunlehui_rule_detail(){
$gift_bag_id = 13;
$gift_bag = db::name('vs_gift_bag')->where(['id'=>$gift_bag_id])->find();
$ext_data = json_decode($gift_bag['ext'],true);
$ext_data['introd'] = stripcslashes($ext_data['introd']);
$bag_list = db::name("vs_gift_bag")->field('id,name')->where(['activities_id'=>5,'status'=>1])->select();
foreach ($bag_list as &$value) {
$value['is_default'] = 0;
if($value['id'] == $ext_data['inlet_bag_id']){
$value['is_default'] = 1;
}
}
$ext_data['bag_list'] = $bag_list;
if($gift_bag){
return V(1,"成功",$ext_data);
}else{
return V(0,"失败");
}
}
/*
* 巡乐会规则设置
*/
public function xunlehui_set_rule(){
$gift_bag_id = 13;
$inlet_bag_id = input('inlet_bag_id', '');
$waiting_start_num = input('waiting_start_num', '');
$start_num = input('start_num', '');
$selected_gift_id = input('selected_gift_id', '');
$locking_gift_id = input('locking_gift_id', '');
$give_homeowner_gift_id = input('give_homeowner_gift_id', '');
$end_time = input('end_time', '');
$tow_no_locking_time = input('tow_no_locking_time', '');
$next_time = input('next_time', '');
$introd =$_POST['introd']??"";
$price = input('price', '');
if(empty($inlet_bag_id)){
return V(0,"请选择巡乐会绑定入口");
}
$ext =[
'inlet_bag_id' => $inlet_bag_id,
'gift_id' => $selected_gift_id,
'xlh_box_price' => $price,
'open_condition' => [
'waiting_start_num' => $waiting_start_num,
'start_num' => $start_num,
],
'locking_condition' => [
'selected_gift_id' => $selected_gift_id,
'locking_gift_id' => $locking_gift_id,
'give_homeowner_gift_id' => $give_homeowner_gift_id,
],
'locking_time' => [
'end_time' => $end_time,
'tow_no_locking_time' => $tow_no_locking_time,
'next_time' => $next_time,
],
'introd' => $introd,
];
$ext = json_encode($ext);
$res = db::name('vs_gift_bag')->where(['id'=>$gift_bag_id])->update(['ext'=>$ext]);
if($res){
//删除缓存
$cacheKey = "xlh_config_13";
cache::rm($cacheKey);
return V(1,"成功");
}else{
return V(0,"失败");
}
}
/*
* 盲盒转盘统计
*
*/
public function blind_box_turntable_lists(){
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$gift_id = input('gift_id', '');
$gift_name = input('gift_name', '');
$gift_bag_id = input('gift_bag_id', 10);
$room_id = input('room_id', '');
if(empty($gift_bag_id)){
return V(0,"请选择盲盒类型");
}
$room = db::name('vs_room')->where(['id'=>$room_id])->find();
if(empty($room)){
return V(0,"房间不存在");
}
if($room['is_open_blind_box_turntable'] !=1){
return V(0,"该房间未开启盲盒转盘");
}
$bag_data = db::name("vs_gift_bag")->find($gift_bag_id);
$bag_list = db::name("vs_gift_bag")->field('id,name')->where(['activities_id'=>$bag_data['activities_id'],'status'=>1])->select();
foreach ($bag_list as &$v) {
$v['default'] = $gift_bag_id == $v['id'] ? 1 : 0;
}
$where=[];
$where['gift_bag_id'] = $gift_bag_id;
if($gift_id!==''){
$where['foreign_id'] =$gift_id;
}
if($gift_name!==''){
$where['name'] = ['like', '%'.$gift_name.'%'];
}
$count = db::name($this->table)->where($where)->count();
$lists_data = db::name($this->table)->where($where)->page($page, $page_limit)->order("id desc")->select();
$lists = [];
$periods =1;
foreach ($lists_data as $key => $value) {
$lists[$key]['id'] = $value['id'];
$lists[$key]['gift_id'] = $value['foreign_id'];
$lists[$key]['gift_name'] = $value['name'];
$gift_data = db::name('vs_gift')->where(['gid'=>$value['foreign_id']])->find();
$lists[$key]['base_image'] = $gift_data['base_image'];
$lists[$key]['gift_price'] = $gift_data['gift_price'];
$lists[$key]['quantity'] = $value['quantity'];
$room_pan = db::name('vs_room_pan')->where(['room_id'=>$room_id,'gift_bag_detail_id'=>$value['id']])->find();
$lists[$key]['remaining_number'] = $room_pan['remaining_number'] ?? 0;
$lists[$key]['is_public_screen'] = $gift_data['is_public_screen'];
$lists[$key]['is_public_server'] = $gift_data['is_public_server'];
$lists[$key]['is_world_show'] = $value['is_world_show'];
$lists[$key]['weight'] = $value['weight'];
$lists[$key]['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
$periods = $room_pan['periods']??1;
}
//统计
$total_data = [];
//每期总次数
$total_count = db::name($this->table)->where(['gift_bag_id'=>$gift_bag_id])->sum('quantity');
//每期总礼物价值
$total_price_data = db::name($this->table)->alias('a')
->field('a.quantity,b.gift_price,b.gift_price * a.quantity as total_price')
->join('vs_gift b','a.foreign_id = b.gid')
->where(['a.gift_bag_id'=>$gift_bag_id])
->select();
$total_price = array_sum(array_column($total_price_data,'total_price'));
//每期总抽奖花费(支出)
$bag_data = db::name("vs_gift_bag")->field('id,name,ext')->where(['id'=>$gift_bag_id])->find();
$ext = json_decode($bag_data['ext'],true);
$c_gift_id = $ext['gift_id'];
$c_gift_data = db::name('vs_gift')->where(['gid'=>$c_gift_id])->find();
$gift_price = $c_gift_data['gift_price']??0;
$total_cost = $total_count * $gift_price;
//每期统计(收入/支出)
if($total_cost==0 || $total_price==0){
$profit_loss_ratio = 0;
}else{
$profit_loss_ratio =round(($total_price / $total_cost ),2);
}
//今天抽奖人数
$today_count_user = db::name('vs_gift_bag_receive_log')
->where(['gift_bag_id'=>$gift_bag_id,'createtime'=>['between',[strtotime(date('Y-m-d')),time()]]])
->group('user_id')
->count();
//今日抽奖总次数
$today_total_count = db::name('vs_gift_bag_receive_log')
->where(['gift_bag_id'=>$gift_bag_id,'createtime'=>['between',[strtotime(date('Y-m-d')),time()]]])
->count();
//今日抽奖收入
$today_total_price = db::name('vs_gift_bag_receive_log')
->where(['gift_bag_id'=>$gift_bag_id,'createtime'=>['between',[strtotime(date('Y-m-d')),time()]]])
->sum('bag_price');
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $lists,
'bag_list' => $bag_list,
'total_data' => [
'blind_box_turntable_periods' => $periods, //当前期数
'remaining_number' => db::name('vs_room_pan')->where(['room_id'=>$room_id,'gift_bag_id'=>$gift_bag_id])->sum('remaining_number')??'0',
'total_count' => $total_count,
'total_price' => $total_price,
'total_cost' => $total_cost,
'profit_loss_ratio' => $profit_loss_ratio,
'today_count_user' => $today_count_user,
'today_total_count' => $today_total_count,
'today_total_price' => $today_total_price,
]
];
return V(1,"成功", $return_data);
}
/*
* 盲盒转盘开奖记录
*
*/
public function blind_box_turntable_open_record(){
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$gift_id = input('gift_id', '');
$user_id = input('user_id', '');
$room_id = input('room_id', '');
$gift_bag_id = input('gift_bag_id', '');
$periods = input('periods', '');
$stime = input('stime', date('Y-m-d'));
$etime = input('etime', date('Y-m-d h:i:s', time()));
$where = [];
if($room_id){
$where['room_number'] = $room_id;
}
if($gift_id){
$where['gift_id'] = $gift_id;
}
if($user_id){
$user_id = db::name('user')->where('user_code', $user_id)->value('id');
$where['user_id'] = $user_id;
}
if($gift_bag_id){
$where['gift_bag_id'] = $gift_bag_id;
}else{
$where['gift_bag_id'] = ['in',[10,11,12]];
}
if($periods){
$where['periods'] = $periods;
}
if($stime!==""){
$where['createtime'] = ['>=', strtotime($stime)];
}
if($etime!==""){
$where['createtime'] = ['<=', strtotime($etime)];
}
if($stime!=="" && $etime!==""){
$where['createtime'] = ['between', [strtotime($stime), strtotime($etime)]];
}
$count = db::name('vs_gift_bag_receive_pan_log')->where($where)->count();
$lists_data = db::name('vs_gift_bag_receive_pan_log')->where($where)->page($page, $page_limit)->order("id desc")->select();
$lists = [];
foreach ($lists_data as $key => $value) {
$lists[$key]['id'] = $value['id'];
$lists[$key]['user_id'] = $value['user_id'];
$user = db::name('user')->where('id',$value['user_id'])->find();
$lists[$key]['user_name'] = "";
if($user){
$lists[$key]['user_name'] = $user['user_code'].'-'.$user['nickname'];
}
$lists[$key]['gift_user_id'] = $value['gift_user_id'];
$gift_user = db::name('user')->where('id',$value['gift_user_id'])->find();
$lists[$key]['gift_user_name'] = "";
if($gift_user){
$lists[$key]['gift_user_name'] = $gift_user['user_code'].'-'.$gift_user['nickname'];
}
$lists[$key]['gift_bag_type'] = db::name('vs_gift_bag')->where('id',$value['gift_bag_id'])->value('name');
$lists[$key]['periods'] = $value['periods'];
$room = db::name('vs_room')->where('id',$value['room_id'])->find();
$lists[$key]['room_name'] = "";
if($room){
$lists[$key]['room_name'] = $room['room_number']."-".$room['room_name'];
}
$lists[$key]['bag_price'] = $value['bag_price']*$value['num'];
$lists[$key]['gift_id'] = $value['gift_id'];
$lists[$key]['gift_name'] = db::name('vs_gift')->where('gid',$value['gift_id'])->value('gift_name');
$lists[$key]['gift_price'] = $value['gift_price'];
$lists[$key]['gift_num'] = $value['num'];
$lists[$key]['createtime'] = date('Y-m-d H:i:s',$value['createtime']);
}
$all_lists_data = db::name('vs_gift_bag_receive_pan_log')->where($where)->order("id desc")->select();
$total =0;
$total_gift_money = 0;
$total_money = 0;
foreach ($all_lists_data as $key => $value) {
$total += $value['num'];//总抽奖次数
$total_gift_money += $value['gift_price'] * $value['num']; //总礼物价值(收入)
$total_money += $value['bag_price'] * $value['num']; //总抽奖金额(支出)
}
//统计
if($total_gift_money==0 || $total_money==0){
$ratio = 0;
}else{
$ratio =round(($total_gift_money / $total_money),3);
}
//用户盈亏
$profit_loss = $total_gift_money - $total_money;
//平台盈亏
$platform_profit_loss = $total_money - $total_gift_money;
if($profit_loss==0 || $total_money==0){
$profit_loss_ratio = 0;
$platform_profit_loss_ratio = 0;
}else{
// 盈亏比
$profit_loss_ratio = round(($profit_loss / $total_money),3);
//平台盈亏比
$platform_profit_loss_ratio = round(($platform_profit_loss / $total_money),3);
}
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $lists,
'total_data' => [
'total' => $total,
'total_money' => $total_money,
'total_gift_money' => $total_gift_money,
'ratio' => $ratio,
'profit_loss' => $profit_loss,
'profit_loss_ratio' => $profit_loss_ratio,
'platform_profit_loss' => $platform_profit_loss,
'platform_profit_loss_ratio' => $platform_profit_loss_ratio,
]
];
return V(1,"成功", $return_data);
}
/*
* 寻乐会锁定记录
*
*/
public function xlh_lock_record(){
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$gift_id = input('gift_id', '');
$user_id = input('user_id', '');
$room_id = input('room_id', 0);
$periods = input('periods', '');
$where = [];
if($room_id){
$where['b.room_id'] = $room_id;
}
if($gift_id){
$where['b.gift_id'] = $gift_id;
}
if($user_id){
$user_id = db::name('user')->where('user_code', $user_id)->value('id');
$where['a.user_id'] = $user_id;
}
if($periods){
$where['b.periods'] = $periods;
}
$count = db::name('vs_room_pan_xlh_log')->alias('a')
->join('vs_room_pan_xlh b', 'a.xlh_id = b.id')
->where($where)->count();
$lists_data = db::name('vs_room_pan_xlh_log')->alias('a')
->join('vs_room_pan_xlh b', 'a.xlh_id = b.id')
->field('a.id,b.periods as periods,a.user_id,a.createtime,b.room_id,b.gift_id,b.num,a.is_send,b.pay_price,b.locking_gift_id')
->where($where)
->page($page, $page_limit)
->order("id desc")
->select();
$lists = [];
foreach ($lists_data as $key => $value) {
$lists[$key]['id'] = $value['id'];
$lists[$key]['periods'] = $value['periods'];
$user = db::name('user')->field('user_code,nickname')->where('id',$value['user_id'])->find();
$lists[$key]['user'] = $user['user_code']."-".$user['nickname'];
//支付价格
$lists[$key]['pay_price'] = $value['pay_price'];
$gift = db::name('vs_gift')->field('gid,gift_name,gift_price')->where('gid',$value['locking_gift_id'])->find();
$lists[$key]['gift_id'] = $value['locking_gift_id'];
$lists[$key]['gift_name'] = $gift['gift_name']??"";
$lists[$key]['gift_price'] = $gift['gift_price']??0;
$lists[$key]['locking_num'] = $value['num'];
$lists[$key]['is_send'] = $value['is_send'];
$lists[$key]['is_send_str'] = $value['is_send']==1?"":"";
$lists[$key]['createtime'] = date('Y-m-d H:i:s',$value['createtime']);
$room = db::name('vs_room')->where('id',$value['room_id'])->find();
$lists[$key]['room_name'] = "";
if($room){
$lists[$key]['room_name'] = $room['room_number']."-".$room['room_name'];
}
}
//今日锁定礼物数量
$today = strtotime(date('Y-m-d'));
$locking_num = db::name('vs_room_pan_xlh_log')->alias('a')
->join('vs_room_pan_xlh b', 'a.xlh_id = b.id')
->where('a.createtime','>=',$today)->where(['a.is_send'=>1])
->where($where)
->sum('a.num');
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $lists,
'locking_num' => $locking_num
];
return V(1,"成功", $return_data);
}
}

View File

@@ -39,7 +39,7 @@ class Decorate extends adminApi
$type = input('type', '');
$where = ['delete_time'=>0];
if($name){
$where['name'] = ['like', '%'.$name.'%'];
$where['title'] = ['like', '%'.$name.'%'];
}
if($type){
$where['type'] = $type;
@@ -51,15 +51,18 @@ class Decorate extends adminApi
$return_list[$k]['id'] = $v['did'];
$return_list[$k]['name'] = $v['title'];
$return_list[$k]['type'] = $v['type'];
$return_list[$k]['type_str'] = model('api/Decorate')->TypeArray[$v['type']];
$return_list[$k]['type_str'] = model('api/Decorate')->TypeArray[$v['type']] ?? "--";
$return_list[$k]['base_image'] = $v['base_image'];
$return_list[$k]['file_type'] = $v['file_type'];
$return_list[$k]['file_type_str'] = $v['file_type'] ? "SVGA" : "MP4";
$return_list[$k]['file_type_str'] = $v['file_type']==1 ? "SVGA" : "MP4";
$return_list[$k]['play_image'] = $v['play_image'];
$return_list[$k]['show_status'] = $v['show_status'];
$return_list[$k]['is_buy'] = $v['is_buy'];
$return_list[$k]['createtime'] = date('Y-m-d H:i:s', $v['createtime']);
$return_list[$k]['admin_name'] = db::name('admin')->where(['id'=>$v['admin_id']])->value('nickname')??"--";
$return_list[$k]['ext_value'] = $v['ext_value'] ?? 0;
$return_list[$k]['price'] = $v['price'] ?? 0;
$return_list[$k]['special_num'] = $v['special_num'] ?? '';
}
$return_data = [
@@ -86,12 +89,19 @@ class Decorate extends adminApi
$play_image = input('play_image', '');
//靓号
$special_num = input('special_num', '');
$ext_value = input('ext_value', '');
$price = input('price', 0);
if($title==""){
return V(0,"参数错");
}
if($type==""){
return V(0,"参数错");
}
if(in_array($type, [6,7,8])){
if($special_num==""){
return V(0,"请填写靓号");
}
}
$data = [
'title' => $title,
@@ -104,7 +114,9 @@ class Decorate extends adminApi
'special_num' => $special_num,
'createtime' => time(),
'updatetime' => time(),
'admin_id' => $admin_id
'admin_id' => $admin_id,
'ext_value' => $ext_value,
'price' => $price,
];
$id = db::name($this->table)->insertGetId($data);
if(!$id){
@@ -143,6 +155,13 @@ class Decorate extends adminApi
$file_type = input('file_type', 2);
$play_image = input('play_image', '');
$special_num = input('special_num', '');
$ext_value = input('ext_value', '');
$price = input('price', '');
if(in_array($type, [6,7,8])){
if($special_num==""){
return V(0,"请填写靓号");
}
}
$data = [];
if($title!=""){
$data['title'] = $title;
@@ -168,6 +187,12 @@ class Decorate extends adminApi
if($special_num!=""){
$data['special_num'] = $special_num;
}
if($ext_value!=""){
$data['ext_value'] = $ext_value;
}
if($price!=""){
$data['price'] = $price;
}
$data['updatetime'] = time();
$res = db::name($this->table)->where(['did'=>$did])->update($data);
if(!$res){
@@ -256,12 +281,20 @@ class Decorate extends adminApi
if($price==""){
return V(0,"参数错");
}
$decorate_data = db::name($this->table)->where(['did'=>$did,'day'=>$day])->find();
$decorate_data = db::name('vs_decorate_price')->where(['did'=>$did,'day'=>$day])->find();
if($decorate_data){
return V(0,"该价格已存在");
}
//计算折扣取整
$discount = round($price/$original_price, 2)*10;
if($price==0 || $original_price==0){
$discount = 0;
}else{
$discount = round($price/$original_price, 2)*10;
if($discount >= 10){
$discount = 0;
}
}
$data = [
'did' => $did,
'day' => $day,
@@ -327,6 +360,7 @@ class Decorate extends adminApi
$type = input('type', '');
$where = [];
if($user_id!=""){
$user_id = db::name('user')->where('user_code', $user_id)->value('id');
$where['user_id'] = $user_id;
}
if($did!=""){
@@ -340,9 +374,10 @@ class Decorate extends adminApi
$return_list = [];
foreach ($lists as $k=>$v){
$return_list[$k]['id'] = $v['udid'];
$return_list[$k]['user_name'] = $v['user_id']."-".db::name('user')->where(['id'=>$v['user_id']])->value('nickname');
$return_list[$k]['type'] = model('api/Decorate')->TypeArray[$v['type']];
if($v['type'] >= 6){
$user_data = db::name('user')->where(['id'=>$v['user_id']])->find();
$return_list[$k]['user_name'] = $user_data['user_code']."-".db::name('user')->where(['id'=>$v['user_id']])->value('nickname');
$return_list[$k]['type'] = model('api/Decorate')->TypeArray[$v['type']] ?? "";
if(in_array($v['type'], [6,7,8])){
$return_list[$k]['name'] = $v['special_num'];
}else{
@@ -373,18 +408,21 @@ class Decorate extends adminApi
public function give_decorate(){
$user_id = input('user_id', '');
$decorate_id = input('decorate_id', '');
$day = input('day', '');
$user = db::name('user')->where(['id'=>$user_id])->find();
$day = input('day', 0);
$user = db::name('user')->where(['user_code'=>$user_id])->find();
if(!$user){
return V(0,"用户不存在");
}
$user_id = $user['id'];
$decorate = db::name('vs_decorate')->where(['did'=>$decorate_id])->find();
if(!$decorate){
return V(0,"装扮不存在");
}
$decorate_price = db::name('vs_decorate_price')->where(['did'=>$decorate_id,'day'=>$day,'is_delete'=>1])->find();
if(!$decorate_price){
return V(0,"该装扮天数不存在");
if($decorate['type']!=12){
$decorate_price = db::name('vs_decorate_price')->where(['did'=>$decorate_id,'day'=>$day,'is_delete'=>1])->find();
if(!$decorate_price){
return V(0,"该装扮天数不存在");
}
}
$result = model('api/Decorate')->pay_decorate($user_id,$decorate_id,$day,2);
if($result['code'] == 1){

View File

@@ -4,6 +4,7 @@ namespace app\adminapi\controller;
use app\admin\model\AdminLog;
use app\common\controller\adminApi;
use think\Cache;
use think\Config;
use think\Db;
use think\Hook;
@@ -44,7 +45,12 @@ class Gift extends adminApi
}
}
if($type == 2){
$giftTypeData = db::name('vs_gift_label')->where('delete_time',0)->order("sort asc,id desc")->select();
$type_id = input('type_id', 0);
$where['delete_time'] = 0;
if(!empty($type_id)){
$where['tid'] = $type_id;
}
$giftTypeData = db::name('vs_gift_label')->where($where)->order("sort asc,id desc")->select();
foreach ($giftTypeData as $key => $value) {
$giftType[$key]['id'] = $value['id'];
$giftType[$key]['name'] = $value['name'];
@@ -94,6 +100,7 @@ class Gift extends adminApi
$lists[$key]['is_can_buy'] = $value['is_can_buy'];
$lists[$key]['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
$lists[$key]['updatetime'] = date('Y-m-d H:i:s', $value['updatetime']);
$lists[$key]['icon'] = $value['icon']??"";
}
$return_data = [
'page' =>$page,
@@ -121,6 +128,7 @@ class Gift extends adminApi
$is_can_buy = input('is_can_buy', 1);
$is_show = input('is_show', 1);
$sort = input('sort', 0);
$icon = input('icon', '');
if($gift_name==""){
return V(0,"礼物名称不能为空");
}
@@ -151,12 +159,19 @@ class Gift extends adminApi
'is_show' => $is_show,
'sort' => $sort,
'createtime' => time(),
'updatetime' => time()
'updatetime' => time(),
'icon' => $icon,
];
$id = db::name($this->table)->insertGetId($data);
if(!$id){
return V(0,"添加失败");
}
//删除缓存
$cache_key = 'gift_list_'.$label.'_1';
Cache::rm($cache_key);
$cache_key = 'gift_list_'.$label;
Cache::rm($cache_key);
return V(1,"成功",['id'=>$id]);
}
/*
@@ -191,6 +206,7 @@ class Gift extends adminApi
$is_can_buy = input('is_can_buy', '');
$is_show = input('is_show', '');
$sort = input('sort', '');
$icon = input('icon', '');
if($gid == ''){
return V(0,"ID不能为空");
}
@@ -240,10 +256,18 @@ class Gift extends adminApi
if($is_show){
$data['is_show'] = $is_show;
}
if($icon){
$data['icon'] = $icon;
}
$result = db::name($this->table)->where(['gid'=>$gid])->update($data);
if(!$result){
return V(0,"修改失败,礼物内容无更改");
}
//删除缓存
$cache_key = 'gift_list_'.$gift_data['label'].'_1';
Cache::rm($cache_key);
$cache_key = 'gift_list_'.$gift_data['label'];
Cache::rm($cache_key);
return V(1,"成功", ['id'=>$gid]);
}

View File

@@ -1,9 +1,11 @@
<?php
namespace app\adminapi\controller;
ini_set('memory_limit', '512M'); // 临时增加到512MB
use app\common\controller\adminApi;
use app\common\library\GiftTableManager;
use think\Db;
use think\Log;
class GiveGift extends adminApi
{
@@ -27,80 +29,119 @@ class GiveGift extends adminApi
$from_id = input('from_id', '');//礼物来源id
$gift_id = input('gift_id', '');//礼物id
$from = input('from', '');// 来源类型1聊天送礼物 2房间语聊送礼 3直播送礼 4动态打赏 5系统任务 6-cp房间送礼
$start_time = input('start_time', '');
$end_time = input('end_time', '');
$where=[];
//获取当前月份的开始时间和结束时间
$firstDay = date('Y-m-01');
$lastDay = date('Y-m-t 23:59:59');
$start_time = input('start_time', $firstDay);
$end_time = input('end_time', $lastDay);
$start_time = empty($start_time) ? $firstDay : $start_time;
$end_time = empty($end_time) ? $lastDay : $end_time;
$search_time = [];
$search_time = [strtotime($start_time), strtotime($end_time)];
$where = [];
$gwhere = [];
if($send_user != ''){
$user_id = db::name('user')->where('user_code', $send_user)->value('id');
$where['user_id'] = $user_id;
$gwhere['gg.user_id'] = $user_id;
}
if($gift_user != ''){
$gift_user_id = db::name('user')->where('user_code', $gift_user)->value('id');
$where['gift_user'] = $gift_user_id;
$gwhere['gg.gift_user'] = $gift_user_id;
}
if($from_id != ''){
$room_id = db::name('vs_room')->where('room_number', $from_id)->value('id');
if($room_id){
$where['from_id'] = $room_id;
$gwhere['gg.from_id'] = $room_id;
}else{
$where['from_id'] = $from_id;
$gwhere['gg.from_id'] = $from_id;
}
}
if($gift_id != ''){
$where['gift_id'] = $gift_id;
$gwhere['gg.gift_id'] = $gift_id;
}
if($from != ''){
$where['from'] = $from;
$gwhere['gg.from'] = $from;
}
// 时间筛选优化
if(!empty($start_time) && !empty($end_time)){
$where['createtime'] = ['between', [strtotime($start_time), strtotime($end_time.' 23:59:59')]];
} elseif(!empty($start_time)){
$where['createtime'] = ['>=', strtotime($start_time)];
} elseif(!empty($end_time)){
$where['createtime'] = ['<=', strtotime($end_time.' 23:59:59')];
if (!empty($start_time) || !empty($end_time)) {
if (!empty($start_time) && !empty($end_time)) {
$where['createtime'] = ['between', [strtotime($start_time), strtotime($end_time)]];
$gwhere['gg.createtime'] = ['between', [strtotime($start_time), strtotime($end_time)]];
} elseif (!empty($start_time)) {
$where['createtime'] = ['>=', strtotime($start_time)];
$gwhere['gg.createtime'] = ['>=', strtotime($start_time)];
} elseif (!empty($end_time)) {
$where['createtime'] = ['<=', strtotime($end_time)];
$gwhere['gg.createtime'] = ['<=', strtotime($end_time)];
}
}
$page_array = [];
$page_array = [
'page' => !empty($page)?$page:1,
'page_limit' => !empty($page_limit)?$page_limit:10,
];
$gift_list = model('Gift')->getGiftRecords($search_time,$where,$page_array);
//礼物总数
$gift_num = db::name('vs_give_gift')->where($where)->sum('number');
$gift_num = $gift_list['number'];
//总金额
$total_price = db::name('vs_give_gift')->where($where)->sum('total_price');
$total_price = $gift_list['total_price'];
//平台收益
$app_earning = 0;
//接收人收益
$receive_earning = 0;
//房主收益
$room_owner_earning = 0;
// 获取所有送礼记录
$list = db::name('vs_give_gift')->where($where)->order('id', 'desc')->select();
$gift_ids = array_column($list, 'id');
if (!empty($gift_ids)) {
$lists = $gift_list['lists'];
$count = $gift_list['count'];
// $lists = db::name('vs_give_gift')->where($where)->order('id', 'desc')->page($page, $page_limit)->select();
// $count = db::name('vs_give_gift')->where($where)->count();
$earning_list = [];
if(!empty($where)){
$tables = GiftTableManager::getTablesByTimeRange(
strtotime($start_time),
strtotime($end_time)
);
if(empty($tables)){
$tables[0] = "fa_vs_give_gift";
}
$table_name = substr($tables[0], 3);//截取可查询的表名
$earning_list = db::name('vs_give_gift_ratio_log')
->alias('egl')
->join($table_name.' gg', 'egl.give_gift_id = gg.id')
->where($gwhere) // 替换为实际的筛选条件
->field('egl.app_earning,egl.gift_user_earning,egl.room_owner_earning')
->select();
}else{
// 批量获取所有收益记录
$earning_list = db::name('vs_give_gift_ratio_log')
->where('give_gift_id', 'in', $gift_ids)
->field('app_earning,gift_user_earning,room_owner_earning')
->order('id', 'desc')
->select();
// 计算总收益
foreach ($earning_list as $earning) {
$app_earning += $earning['app_earning'];
$receive_earning += $earning['gift_user_earning'];
$room_owner_earning += $earning['room_owner_earning'];
}
}
$count = count($list);
$lists = $this->array_pagination($list, $page, $page_limit);
// 计算总收益
foreach ($earning_list as $earning) {
$app_earning += $earning['app_earning'];
$receive_earning += $earning['gift_user_earning'];
$room_owner_earning += $earning['room_owner_earning'];
}
// 提取所有需要关联查询的ID
$user_ids = array_merge(
array_column($lists, 'user_id'),
array_column($lists, 'gift_user')
);
$room_ids = array_filter(array_merge(
array_column($lists, 'room_id'),
array_column($lists, 'from_id')
));
// $room_ids = array_filter(array_merge(
// array_column($lists, 'room_id'),
// array_column($lists, 'from_id')
// ));
$room_ids = array_column($lists, 'from_id');
$gift_ids_list = array_column($lists, 'gift_id');
// 批量获取用户信息
@@ -132,7 +173,7 @@ class GiveGift extends adminApi
if (!empty($gift_ids_list)) {
$gift_list = db::name('vs_gift')
->where('gid', 'in', array_unique($gift_ids_list))
->field('gid,gift_name,gift_price')
->field('gid,gift_name,gift_price,type,label')
->select();
foreach ($gift_list as $gift) {
$gifts[$gift['gid']] = $gift;
@@ -165,8 +206,11 @@ class GiveGift extends adminApi
// 礼物信息
$gift_info = isset($gifts[$value['gift_id']]) ? $gifts[$value['gift_id']] : null;
$value['gift_name'] = $gift_info ? $gift_info['gift_name'].'-'.$value['gift_id'] : '';
$value['gift_price'] = $gift_info ? $gift_info['gift_price'] : 0;
if($gift_info && $gift_info['label']==2){
$value['gift_price'] ="未知(盲盒)";
}else{
$value['gift_price'] = $gift_info ? $gift_info['gift_price'] : 0;
}
// 房间信息处理
if($value['from'] == 1){
$value['room'] = '聊天送礼';
@@ -189,6 +233,8 @@ class GiveGift extends adminApi
$value['gift_user_earning'] = $earning_info ? $earning_info['gift_user_earning'] : 0;
$value['room_owner_earning'] = $earning_info ? $earning_info['room_owner_earning'] : 0;
}
//比例
$config = get_system_config();
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
@@ -199,7 +245,10 @@ class GiveGift extends adminApi
'total_price' => $total_price,
'app_earning' => round($app_earning,2) ,
'receive_earning' => round($receive_earning,2),
'room_owner_earning' => round($room_owner_earning,2)
'room_owner_earning' => round($room_owner_earning,2),
'app_earning_ratio' => 100 - $config['room_gift_ratio'] - $config['room_author_ratio'],
'receive_earning_ratio' => $config['room_gift_ratio'] ?? 0,
'room_owner_earning_ratio' => $config['room_author_ratio'] ?? 0,
]
];
return V(1,"成功", $return_data);
@@ -209,4 +258,5 @@ class GiveGift extends adminApi
$start = ($page - 1) * $limit;
return array_slice($array, $start, $limit);
}
}

View File

@@ -62,7 +62,7 @@ class Guild extends adminApi
// $where['createtime'] = ['between',[strtotime($search_stime),strtotime($search_etime.' 23:59:59')]];
// }
$count = db::name('vs_guild')->where($where)->count();
$data = db::name('vs_guild')->where($where)->page($page,$page_limit)->select();
$data = db::name('vs_guild')->where($where)->order('income desc')->page($page,$page_limit)->select();
$list = [];
foreach ($data as $k=>$v) {
$list[$k]['id'] = $v['id'];
@@ -82,14 +82,19 @@ class Guild extends adminApi
}
$list[$k]['guild_logo'] = $v['cover'];
//当日流水
$list[$k]['today_money'] = model('Guild')->getTodayMoney($v['id'],$search_stime,$search_etime);
$list[$k]['today_money'] = $v['income'];//model('Guild')->getTodayMoney($v['id'],$search_stime,$search_etime);
$list[$k]['is_show'] = $v['is_show'];
$list[$k]['is_show_str'] = $v['is_show'] == 1 ? '显示' : '隐藏';
$list[$k]['status'] = $v['status'];
$list[$k]['status_str'] = $v['status'] == 1 ? '正常' : '解散';
$list[$k]['createtime'] = date('Y-m-d H:i:s',$v['createtime']);
$list[$k]['updatetime'] = date('Y-m-d H:i:s',$v['updatetime']);
$list[$k]['user_id'] = $user['user_code'];
$list[$k]['user_id'] = $user['user_code']??"";
$list[$k]['intro'] = $v['intro'];
//幸运币流水
$list[$k]['lucky_coin'] = model('Guild')->getTodayMoneyLuckyCoin($v['id'],$search_stime,$search_etime);
//查询会长手机号和后台登录密码
$list[$k]['mobile'] = db::name('user')->where('id',$v['user_id'])->value('mobile');
}
// 数组按today_money 排序
usort($list, function($a, $b) {
@@ -102,7 +107,21 @@ class Guild extends adminApi
$reslut['list'] = $list;
return V(1,"成功", $reslut);
}
/*
* 工会显示状态修改
*/
public function guild_show_status_edit(){
$id = input('id',0);
$guild = model('Guild')->getOne(['id'=>$id]);
if (!$guild) {
return V(0, "数据不存在");
}
if ($guild) {
$status = $guild['is_show'] == 1 ? 0 : 1;
}
$res = db::name('vs_guild')->where('id',$id)->update(['is_show'=>$status]);;
return V(1,"成功", $res);
}
/**
* 工会添加
* @param guild_special_id 靓号 guild_special_id
@@ -154,6 +173,15 @@ class Guild extends adminApi
return V(0, "靓号已使用");
}
}
if(empty($request['guild_user_mobile'])){
return V(0, "请填写会长手机号");
}
if($request['guild_user_mobile'] != $user['mobile']){
return V(0, "请正确填写会长手机号");
}
if(empty($request['password'])){
return V(0, "请填写后台登录密码");
}
Db::startTrans();
try {
$data = [
@@ -170,7 +198,13 @@ class Guild extends adminApi
}
//会长是否有房间
$rid = 0;
$room_info = db::name('vs_room')->where('user_id', $user_id)->find();
$where = [
'user_id' => $user_id,
'delete_time' => 0
];
$where['apply_status'] = 2;//1待审核 2审核通过 3审核失败
$where['type_id'] = ['<>',6];
$room_info = db::name('vs_room')->where($where)->find();
if($room_info){
$rid = $room_info['id'];
}
@@ -180,8 +214,18 @@ class Guild extends adminApi
$insert_data['room_id'] = $rid;
$insert_data['status'] = 1;
$insert_data['is_deacon'] = 1;
$insert_data['apply_time'] = time();
$insert_data['createtime'] = time();
$insert_data['is_show_room'] = 1;
//结算比例
$configs = get_system_config();
//未加入工会的收益
$ratiogr = $configs['room_gift_ratio'];
//收益增加 加入工会的收益
$ratiog = $configs['room_gift_guild_ratio'];
//收礼人最终的收益比例
$ratio = $ratiogr + $ratiog;
$insert_data['settlement_ratio'] = $ratio;
$re = db::name('vs_guild_user')->insert($insert_data);
if (!$re) {
db::rollback();
@@ -193,6 +237,26 @@ class Guild extends adminApi
return V(0, $reslut['msg']);
}
model('api/Tencent')->send_group_system_notification('g'.$res, $request['guild_name'].'工会群聊创建成功');
//新功能
//创建基础信息数据
$boss_auth = db::name('user_auth')->where('mobile',$user['mobile'])->find();
$data = [
'guild_id' => $res,
'boss_mobile' => $request['guild_user_mobile'] ?? $user['mobile'],
'boss_name' => $boss_auth['real_name']?? '',
'createtime' => time(),
];
db::name('vs_guild_data')->insert($data);
//创建后台登录账号
$data = [
'guild_id' => $res,
'guild_name' => $request['guild_name'],
'username' => $request['guild_user_mobile'],
'password' => $request['password'],
'nickname' => $request['guild_name']."管理员",
];
model('guildadmin/Admin')->createAdmin($data);
db::commit();
return V(1,"成功", []);
} catch (\Exception $e) {
@@ -218,7 +282,7 @@ class Guild extends adminApi
return V(0, "该工会不存在");
}
if (!empty($request['guild_name'])) {
$guild_name = model('Guild')->getOne(['guild_name'=>$request['guild_name']]);
$guild_name = model('Guild')->getOne(['guild_name'=>$request['guild_name'],'delete_time'=>0]);
if (!empty($guild_name) && $guild_name['id'] != $request['id']) {
return V(0, "该工会名称已存在");
}
@@ -242,10 +306,10 @@ class Guild extends adminApi
if(isset($request['guild_name']) && $request['guild_name']){
$data['guild_name'] = $request['guild_name'];
}
if(isset($request['user_id']) && $request['user_id']){
$userID = db::name('user')->where('user_code',$request['user_id'])->value('id');
$data['user_id'] = $userID;
}
// if(isset($request['user_id']) && $request['user_id']){
// $userID = db::name('user')->where('user_code',$request['user_id'])->value('id');
// $data['user_id'] = $userID;
// }
if(isset($request['guild_logo']) && $request['guild_logo']){
$data['cover'] = $request['guild_logo'];
}
@@ -253,14 +317,56 @@ class Guild extends adminApi
$data['intro'] = $request['guild_desc'];
}
$res = model('Guild')->edit(['id' => $request['id']], $data);
if ($res) {
db::commit();
return V(1, "修改成功");
} else {
//新功能
//创建基础信息数据
$guild_data = db::name('vs_guild_data')->where('guild_id',$guild['id'])->find();
$user = db::name('user')->where('id',$guild['user_id'])->find();
if($request['guild_user_mobile'] != $user['mobile']){
db::rollback();
return V(0, "修改失败");
return V(0, "请正确填写会长手机号");
}
if(empty($guild_data)){
$boss_auth = db::name('user_auth')->where('mobile',$user['mobile'])->find();
$data = [
'guild_id' => $guild['id'],
'boss_mobile' => $request['guild_user_mobile'] ?? $user['mobile'],
'boss_name' => $boss_auth['real_name']?? '',
'createtime' => time(),
];
db::name('vs_guild_data')->insert($data);
}
$guildadmin = db::name('vs_guild_admin')->where('guild_id',$guild['id'])->order('id','asc')->find();
if(empty($guildadmin)){
//创建后台登录账号
$data = [
'guild_id' => $guild['id'],
'guild_name' => $guild['guild_name'],
'username' => $request['guild_user_mobile'],
'password' => $request['password'],
'nickname' => $request['guild_name']."管理员",
];
$res = model('guildadmin/Admin')->createAdmin($data);
if($res['code']==0){
db::rollback();
return V(0, $res['msg']);
}
}else{
$up_data =[];
if($request['guild_user_mobile'] != $guildadmin['username']){
db::rollback();
return V(0, "会长手机号填写错误");
}
if($request['password'] != ""){
$up_data['password'] = $request['password'];
}
$res = model('guildadmin/Admin')->edit($guildadmin['id'],$up_data);
if($res['code']==0){
db::rollback();
return V(0, $res['msg']);
}
}
db::commit();
return V(1, "修改成功");
} catch (\Exception $e) {
db::rollback();
return V(0, $e->getMessage());
@@ -288,9 +394,9 @@ class Guild extends adminApi
$res = model('Guild')->edit(['id'=>$id],['status'=>2,'delete_time'=>time()]);
if($res){
db('vs_guild_user')->where(['guild_id'=>$id,'quit_type'=>0])->update(['quit_type'=>3,'quit_time'=>time()]);
db('vs_guild_user')->where(['guild_id'=>$id,'quit_type'=>0])->update(['quit_type'=>3,'quit_time'=>time(),'delete_time'=>time()]);
//解散群
model('Tencent')->delete_group('g'.$id);
model('api/Tencent')->delete_group('g'.$id);
return V(1,"解散成功");
}else{
return V(0,"解散失败");
@@ -336,9 +442,9 @@ class Guild extends adminApi
$rum_lists[$k]['id']=$v['id'];
$rum_lists[$k]['user_id']=$v['user_id'];
$rum_lists[$k]['user_code']=model('api/Decorate')->user_decorate_detail($v['user_id'],6);
$rum_lists[$k]['nickname']=$user_info['nickname'];
$rum_lists[$k]['charm_level']=$user_info['charm_level'];
$rum_lists[$k]['wealth_level']=$user_info['wealth_level'];
$rum_lists[$k]['nickname']=$user_info['nickname']?? '';
$rum_lists[$k]['charm_level']=$user_info['charm_level']??0;
$rum_lists[$k]['wealth_level']=$user_info['wealth_level']??0;
//用户流水
$consumption_sql = db::name('vs_user_money_log')
->whereIn('change_type',$coin_consumption_type_array)
@@ -373,8 +479,8 @@ class Guild extends adminApi
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$guild_id = input('guild_id', 0);
$search_stime = input('search_stime','');
$search_etime = input('search_etime','');
$search_stime_str = input('search_stime','');
$search_etime_str = input('search_etime','');
$room_id = input('room_id', 0);
$where=['a.status'=>1];
$where=['a.room_id'=>['>',0]];
@@ -390,28 +496,87 @@ class Guild extends adminApi
}
$count = db::name($this->table_guild_user)->alias('a')
->join('vs_room b', 'a.room_id = b.id', 'left')
->where(['a.guild_id'=>$guild_id,'a.quit_type'=>['in',[0,3]]])->where($where)->count();
->where(['a.guild_id'=>$guild_id])->where($where)->count();
$list = db::name($this->table_guild_user)->alias('a')
->join('vs_room b', 'a.room_id = b.id', 'left')
->where(['a.guild_id'=>$guild_id,'a.quit_type'=>['in',[0,3]]])->where($where)->page($page, $page_limit)->select();
->where(['a.guild_id'=>$guild_id])->where($where)
// ->page($page, $page_limit)
->select();
if(!$list){
return V(0,"暂无数据");
}
$rum_lists = [];
//总流水
$total_consumption = 0;
foreach ($list as $k=>$v){
$search_stime = $search_stime_str;
$search_etime = $search_etime_str;
// $search_stime = date('Y-m-d H:i:s','1761554521');
// $search_etime = date('Y-m-d H:i:s','1766564906');
if($search_stime!=""){
if($v['apply_time'] && strtotime($search_stime) < $v['apply_time']) {
$search_stime = date('Y-m-d H:i:s',$v['apply_time']);
}
}else{
$search_stime = date('Y-m-d H:i:s',$v['apply_time']);
}
if($search_etime!=""){
if($v['quit_time'] && (strtotime($search_etime) > $v['quit_time'])){
$search_etime = date('Y-m-d H:i:s',$v['quit_time']);
}
}else{
if($v['quit_time']){
$search_etime = date('Y-m-d H:i:s',$v['quit_time']);
}else{
$search_etime = date('Y-m-d H:i:s',time());
}
}
$room_info = db::name('vs_room')->where(['id'=>$v['room_id']])->find();
$rum_lists[$k]['id']=$v['id'];
$rum_lists[$k]['room_id']=$v['room_id'];
$room_ids[] =$v['room_id'];
$rum_lists[$k]['room_code']= model('api/Decorate')->user_decorate_detail($v['room_id'], 7);
$rum_lists[$k]['room_name']=$room_info['room_name']?? '';
$rum_lists[$k]['room_cover']=$room_info['room_cover']?? '';
//房间流水
$rum_lists[$k]['consumption']= model('Room')->getRoomFlow($v['room_id'],$search_stime,$search_etime);
$rum_lists[$k]['add_time'] = date('Y-m-d H:i:s',$v['createtime']);
$total_consumption += $rum_lists[$k]['consumption'];
//幸运币统计
$where_lucky = [];
if($search_stime !== ''){
$where_lucky['createtime'] = ['>=', strtotime($search_stime)];
}
if($search_etime !== ''){
$where_lucky['createtime'] = ['<=', strtotime($search_etime)];
}
if(!empty($search_stime) && !empty($search_etime)){
$where_lucky['createtime'] = ['between',[strtotime($search_stime),strtotime($search_etime)]];
}
$rum_lists[$k]['lucky_coin'] = db::name('vs_room_luck_value')->where('room_id',$room_id)->where($where_lucky)->sum('luck_value');
}
usort($rum_lists, function($a, $b) {
return $b['consumption'] - $a['consumption'];
});
//分页
$rum_lists = array_slice($rum_lists, ($page-1)*$page_limit, $page_limit);
//幸运币统计
$where_lucky = [];
if($search_stime !== ''){
$where_lucky['createtime'] = ['>=', strtotime($search_stime)];
}
if($search_etime !== ''){
$where_lucky['createtime'] = ['<=', strtotime($search_etime)];
}
if(!empty($search_stime) && !empty($search_etime)){
$where_lucky['createtime'] = ['between',[strtotime($search_stime),strtotime($search_etime)]];
}
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'total_consumption' => $total_consumption,
'total_lucky_coin' => db::name('vs_room_luck_value')->whereIn('room_id',$room_ids)->where($where_lucky)->sum('luck_value'),
'count' => $count,
'lists' => $rum_lists
];
@@ -441,44 +606,44 @@ class Guild extends adminApi
$guild_id = input('guild_id', '');
$merge_guild_id = input('merge_guild_id', '');
//解散工会
$guild = model('Guild')->getOne(['id'=>$guild_id]);
$guild = model('Guild')->getOne(['guild_special_id'=>$guild_id]);
$merge_guild=model('Guild')->getOne(['guild_special_id'=>$merge_guild_id]);
if(empty($guild)){
return V(0,"该工会不存在");
}
if($guild['status'] == 2){
return V(0,"该工会已解散");
}
if(!$merge_guild_id){
return V(0,"参数错误");
}
if(empty($merge_guild)){
return V(0,"并入工会不存在");
}
$guild_id = $guild['id'];
$merge_guild_id = $merge_guild['id'];
db::startTrans();
try{
$res = model('Guild')->edit(['id'=>$guild_id],['status'=>2,'delete_time'=>time()]);
//并入工会
if(!$merge_guild_id){
db::rollback();
return V(0,"参数错误");
}
$merge_guild = model('Guild')->getOne(['id'=>$merge_guild_id]);
if(empty($merge_guild)){
db::rollback();
return V(0,"并入工会不存在");
}
$merge_guild_user = db('vs_guild_user')->where(['guild_id'=>$merge_guild_id,'quit_type'=>0])->select();
$merge_guild_user = db('vs_guild_user')->where(['guild_id'=>$guild_id,'quit_type'=>0,'status'=>1])->select();
foreach ($merge_guild_user as $key=>$value){
$res = db('vs_guild_user')->insert([
'user_id'=>$value['user_id'],
'guild_id'=>$merge_guild_id,
'room_id'=>$value['room_id'],
'coin'=>$value['coin'],
'status'=>$value['status'],
'is_deacon'=>$value['is_deacon'],
'is_show_room'=>$value['is_show_room'],
'remarks'=>$value['remarks'],
'apply_time'=>$value['apply_time'],
'remarks'=>"公会合并:从".$guild['guild_name']."合入".$merge_guild['guild_name'],
'settlement_ratio' =>$value['settlement_ratio'],
'apply_time'=>time(),
'createtime'=>time(),
]);
if(!$res){
db::rollback();
return V(0,"失败");
}
//更新公会人数
db('vs_guild')->where('id', $merge_guild_id)->setInc('num');
//拉用户进入工会群聊
$rid = 'g'.$merge_guild_id;
$reslut = model('api/Tencent')->add_group_member($rid, $value['user_id']);
@@ -489,7 +654,7 @@ class Guild extends adminApi
return V(0,"失败");
}
//解散群
model('Tencent')->delete_group('g'.$guild_id);
model('api/Tencent')->delete_group('g'.$guild_id);
db::commit();
return V(1,"成功");
} catch(\Exception $e) {
@@ -617,12 +782,14 @@ class Guild extends adminApi
$search_status_time = input('search_status_time', '');
$search_end_time = input('search_end_time', '');
$search_status = input('search_status', '');
$where = ['b.delete_time'=>0];
// $where = ['b.delete_time'=>0];
$where = [];
if($search_user_id){
$where['b.user_id'] = $search_user_id;
}
if($search_guild_id){
$where['a.guild_id'] = $search_guild_id;
//$where['a.guild_id'] = $search_guild_id;
$where['b.guild_special_id'] = $search_guild_id;
}
if($search_status_time){
$where['a.start_time'] = ['>=', $search_status_time];
@@ -640,7 +807,7 @@ class Guild extends adminApi
$lists_data = db::name($this->table_guild_subsidy)->alias('a')
->join('vs_guild b','a.guild_id = b.id')
->where($where)
->order('a.id desc')
->order('a.total_transaction desc')
->field('a.*,b.guild_name,b.user_id,b.guild_special_id')
->page($page,$page_limit)
->select();

View File

@@ -54,6 +54,15 @@ class Index extends adminApi
//总待付款笔数
$return_data['all_wait_pay_num'] = db::name('vs_user_recharge')->where('pay_status',1)->count();
//周实时收入金额
$return_data['week_money'] = db::name('vs_user_recharge')->where('pay_status',2)->whereTime('pay_time', 'week')->sum('money');
//上周收入金额
$return_data['last_week_money'] = db::name('vs_user_recharge')->where('pay_status',2)->whereTime('pay_time', 'last week')->sum('money');
//月收入金额
$return_data['month_money'] = db::name('vs_user_recharge')->where('pay_status',2)->whereTime('pay_time', 'month')->sum('money');
//上月收入金额
$return_data['last_month_money'] = db::name('vs_user_recharge')->where('pay_status',2)->whereTime('pay_time', 'last month')->sum('money');
//待办事项
//房间审核数
$return_data['room_audit_num'] = db::name('vs_room')->where('apply_status',1)->count();
@@ -114,17 +123,27 @@ class Index extends adminApi
$return_data['register_count'] = db::name('user')->where('status', 1)->where('is_robot', 0)->whereTime('createtime', 'today')->count();
//充值会员数
$return_data['recharge_count'] = db::name('vs_user_recharge')->where('pay_status',2)->group('user_id')->count();
//充值会员百分比
$return_data['recharge_count_percent'] = round(($return_data['recharge_count'] / $return_data['member_count']) * 100);
//未充值会员数
$return_data['no_recharge_count'] = $return_data['member_count'] - $return_data['recharge_count'];
$return_data['no_recharge_count_percent'] = round(($return_data['no_recharge_count'] / $return_data['member_count']) * 100);
//IOS用户数
$return_data['ios_count'] = db::name('user')->where('status', 1)->where('is_robot', 0)->where('system', 'iOS')->count();
$return_data['ios_count_percent'] = round(($return_data['ios_count'] / $return_data['member_count']) * 100);
//安卓用户数
$return_data['android_count'] = $return_data['member_count']-$return_data['ios_count'];
$return_data['android_count_percent'] = round(($return_data['android_count'] / $return_data['member_count']) * 100);
if(empty($return_data['member_count'])){
$return_data['recharge_count_percent'] = 0;
$return_data['no_recharge_count'] = 0;
$return_data['no_recharge_count_percent'] = 0;
$return_data['no_recharge_count'] = 0;
$return_data['ios_count_percent'] = 0;
$return_data['android_count'] = 0;
$return_data['android_count_percent'] = 0;
}else{
//充值会员百分比
$return_data['recharge_count_percent'] = round(($return_data['recharge_count'] / $return_data['member_count']) * 100);
//未充值会员数
$return_data['no_recharge_count'] = $return_data['member_count'] - $return_data['recharge_count'];
$return_data['no_recharge_count_percent'] = round(($return_data['no_recharge_count'] / $return_data['member_count']) * 100);
//IOS用户数
$return_data['ios_count'] = db::name('user')->where('status', 1)->where('is_robot', 0)->where('system', 'iOS')->count();
$return_data['ios_count_percent'] = round(($return_data['ios_count'] / $return_data['member_count']) * 100);
//安卓用户数
$return_data['android_count'] = $return_data['member_count']-$return_data['ios_count'];
$return_data['android_count_percent'] = round(($return_data['android_count'] / $return_data['member_count']) * 100);
}
//礼物打赏实时统计
//一个月内的礼物打赏

View File

@@ -243,6 +243,8 @@ class Inform extends adminApi
$from_info = db::name('vs_room')->where('id',$item['from_id'])->field('room_number as code,room_name as title')->find();
}elseif($item['report_type'] ==3){
$from_info = db::name('user_zone')->where('id',$item['from_id'])->field('content as title ,id as code')->find();
}elseif($item['report_type'] ==4){
$from_info = db::name('vs_guild')->where('id',$item['from_id'])->field('guild_name as title,id as code')->find();
}
$item['createtime'] = date('Y-m-d H:i:s', $item['createtime']);
$item['updatetime'] = date('Y-m-d H:i:s', $item['updatetime']);
@@ -253,7 +255,8 @@ class Inform extends adminApi
$item['report_type_str'] = [
1=>'用户',
2=>'房间',
3=>'动态'
3=>'动态',
4=>'公会'
][$item['report_type']];
}
@@ -307,5 +310,43 @@ class Inform extends adminApi
}
}
//安卓日志列表
public function android_log_list(){
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$count = db::name('vs_android_log')->where('delete_time',0)->count();
$list = db::name('vs_android_log')->where('delete_time',0)->order('id desc')->page($page, $page_limit)->select();
foreach ($list as &$item) {
$user_info = db::name('user')->where('id',$item['user_id'])->field('nickname,user_code')->find();
if($user_info){
$item['nickname'] = $user_info['user_code'] ."-".$user_info['nickname'];
}else{
$item['nickname'] = '';
}
$item['createtime'] = date('Y-m-d H:i:s', $item['createtime']);
}
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $list
];
return V(1,"成功", $return_data);
}
//安卓日志删除
public function android_log_delete(){
$id = input('id', '');
if($id){
$res = db::name('vs_android_log')->where('id',$id)->update(['delete_time'=>time()]);
if($res){
return V(1,"成功");
}
else{
return V(0,"失败");
}
}else{
return V(0,"ID不能为空");
}
}
}

View File

@@ -93,18 +93,19 @@ class Level extends adminApi
if(!$level_id){
return V(0,"添加失败");
}
//等级特权
$decorate = db::name("vs_decorate")->where(['did' => $gift_id, 'delete_time' => 0])->find();
if(empty($decorate)){
return V(0,"请选择等级特权");
}
if($gift_id){
if(!empty($gift_id)){
//等级特权
$decorate = db::name("vs_decorate")->where(['did' => $gift_id, 'delete_time' => 0])->find();
if(empty($decorate)){
return V(0,"请选择等级特权");
}
db::name('vs_wealth_level_rights')->insert([
'level_id' => $level_id,
'gift_id' => $gift_id,
'createtime' => time()
]);
}
return V(1,"成功", ['id'=>$level]);
}
/*
@@ -124,28 +125,28 @@ class Level extends adminApi
if($id == ''){
return V(0,"参数错误");
}
if($level){
if($level!=''){
$level_data['level'] = $level;
}
if($name){
if($name!=''){
$level_data['name'] = $name;
}
if($image){
if($image!=''){
$level_data['image'] = $image;
}
if($status){
if($status!=''){
$level_data['status'] = $status;
}
if($change_value){
if($change_value!=''){
$level_data['change_value'] = $change_value;
}
if($coins){
if($coins!=''){
$level_data['coins'] = $coins;
}
if($bg_image){
if($bg_image!=''){
$level_data['bg_image'] = $bg_image;
}
if($color){
if($color!=''){
$level_data['color'] = $color;
}
$level_data['updatetime'] = time();
@@ -163,6 +164,8 @@ class Level extends adminApi
}
}
}else{
db::name('vs_wealth_level_rights')->where(['level_id'=>$id])->delete();
}
$result = db::name($this->table_wealth_level)->where(['id'=>$id])->update($level_data);
if(!$result){

View File

@@ -0,0 +1,135 @@
<?php
namespace app\adminapi\controller;
use app\admin\model\AdminLog;
use app\common\controller\adminApi;
use think\Config;
use think\Db;
use think\Hook;
use think\Session;
use think\Validate;
/**
* 等级管理
* @internal
*/
class Lottery extends adminApi
{
protected $noNeedLogin = [];
protected $noNeedRight = [];
public function _initialize()
{
parent::_initialize();
}
/*
* 配置列表
*/
public function config_list(){
$list = db::name("bb_lottery_config")->order('sort desc')->select();
$list_data = [];
foreach ($list as $k=>$v){
$list_data[$k]['id'] = $v['id'];
$list_data[$k]['key'] = $v['key'];
$list_data[$k]['value'] = $v['value'];
$list_data[$k]['desc'] = $v['desc'];
$list_data[$k]['sort'] = $v['sort'];
}
return V(1,"成功", $list_data);
}
/*
* 配置设置
*/
public function config_set(){
$params = $this->request->post();
foreach ($params as $k=>$v){
$data = [
'value'=>$v,
];
db::name("bb_lottery_config")->where(['key'=>$k])->update($data);
}
return V(1,"成功");
}
/*
* 中奖记录
*/
public function record_list(){
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$stime = input('stime', '');
$etime = input('etime', '');
$where = [];
if($stime!==""){
$where['create_time'] = ['>=', strtotime($stime)];
}
if($etime!==""){
$where['create_time'] = ['<=', strtotime($etime)];
}
if($stime!=="" && $etime!==""){
$where['create_time'] = ['between', [strtotime($stime), strtotime($etime)]];
}
$count = db::name('bb_lottery_winner_record')->where($where)->count();
$lists_data = db::name('bb_lottery_winner_record')->field('id,uid as user_id,prize_type,prize_amount,pool_amount,ratio,release_amount,status,create_time as createtime')->where($where)->page($page, $page_limit)->order("id desc")->select();
foreach ($lists_data as $k=>$v){
$user_info = db::name('user')->where(['id'=>$v['user_id']])->find();
$lists_data[$k]['user_code'] = $user_info['user_code']??"";
$lists_data[$k]['nickname'] = $user_info['user_code']."-".$user_info['nickname'];
//奖项类型1-小奖 2-大奖
$lists_data[$k]['prize_type_str'] = $v['prize_type']==1?"小奖":"大奖";
//状态1-已发放 0-未发放'
$lists_data[$k]['status_str'] = $v['status']==1?"已发放":"未发放";
$lists_data[$k]['createtime'] = date("Y-m-d H:i:s", $v['createtime']);
}
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $lists_data,
'total_data' => [
]
];
return V(1,"成功", $return_data);
}
/*
* 实时统计
*/
public function realtime_statistics(){
$bb_config = db::name('bb_lottery_config')->field('key,value')->select();
$bb_config = array_column($bb_config, null, 'key');
// 循环奖池进度
//最新轮次
$latest_times = db::name('bb_lottery_pool_flow')->where(['pool_type'=>1])->max('times');
$pool_progress = db::name('bb_lottery_pool_flow')->where(['pool_type'=>1,'times'=>$latest_times])->count();//当前进度
$pool_total_amount = db::name('bb_lottery_pool_flow')->where(['pool_type'=>1,'times'=>$latest_times,'type'=>1])->sum('amount');
//获取配置表中奖池配置
$pool_progress_str = $pool_progress."/".$bb_config['small_pool_trigger_times']['value']."(".$pool_total_amount."金币)";
//蓄水池当前金额
$big_round = db::name('bb_lottery_pool_flow')->where(['pool_type'=>2])->max('times');
$bigAddGold = Db::name('bb_lottery_pool_flow')
->where(['pool_type' => 2, 'type' => 3, 'times' => $big_round])
->sum('amount') ?: 0;
//最近中奖用户
$last_winner_user_id = db::name('bb_lottery_winner_record')->where(['status'=>1])->order('id desc')->find();
if($last_winner_user_id){
$last_winner_user_info = db::name('user')->where(['id'=>$last_winner_user_id['uid']])->find();
$last_winner_user_text = "用户ID:".$last_winner_user_info['user_code']." 获得 ".$last_winner_user_id['prize_amount']." 金币 ".$last_winner_user_id['ratio']."%)";
}else{
$last_winner_user_text = "";
}
//平台累计收入
$platform_total_income = db::name('bb_lottery_pool_flow')->where(['type'=>4])->sum('amount');
$return_data=[
'pool_progress' => $pool_progress_str,
'pool_amount_now' => ($bigAddGold)."金币 ".(($bigAddGold)/$bb_config['big_pool_threshold']['value'])."%)",
'last_winner_user' => $last_winner_user_text,
'platform_total_income' => $platform_total_income." 金币",
];
return V(1,"成功", $return_data);
}
}

View File

@@ -0,0 +1,417 @@
<?php
namespace app\adminapi\controller;
use app\admin\model\AdminLog;
use app\common\controller\adminApi;
use think\Config;
use think\Db;
use think\Hook;
use think\Session;
use think\Validate;
/**
* 等级管理
* @internal
*/
class Nobility extends adminApi
{
protected $noNeedLogin = [];
protected $noNeedRight = [];
public function _initialize()
{
parent::_initialize();
}
//获取爵位列表
public function get_nobility_list()
{
$order = input('order', 'lid');
$sort = input('sort', 'desc');
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$count = db::name('vs_nobility')->where('delete_time', 0)->count();
$lists = db::name('vs_nobility')
->field('lid,name,image,images,pay_price,pay_price,renew_price,pay_coin,renew_coin,day,power_ids,nick_name_color,nick_name_color_name,createtime,updatetime,play_image,enter_image')
->where('delete_time', 0)
->order($order, $sort)
->page($page, $page_limit)
->select();
foreach ($lists as &$v) {
$v['createtime'] = $v['createtime'] ? date('Y-m-d H:i:s', $v['createtime']) : '--';
$v['updatetime'] = $v['updatetime'] ? date('Y-m-d H:i:s', $v['updatetime']) : '--';
$power_ids = $v['power_ids'] ? explode(',', $v['power_ids']) : [];
$v['power_ids_array'] = db::name('vs_nobility_power')
->field('id,name')
->where(['id'=>['in',$power_ids]])->select();
}
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $lists
];
return V(1,"成功", $return_data);
}
//添加爵位
public function add_nobility(){
$name = input('name', '');
$image = input('image', '');
$images = input('images', '');
$pay_price = input('pay_price', '');
$pay_coin = input('pay_coin', '');
$renew_price = input('renew_price', '');
$renew_coin = input('renew_coin', '');
$day = input('day', '');
$nick_name_color = input('nick_name_color', '');
$nick_name_color_name = input('nick_name_color_name', '');
$power_ids = input('power_ids', '');
$play_image = input('play_image', '');
$enter_image = input('enter_image', '');
if (empty($name)) {
return V(0, "请输入爵位名称");
}
$nobility_info = db::name('vs_nobility')->where('name', $name)->find();
if ($nobility_info) {
return V(0, "该爵位已存在");
}
$data = [
'name' => $name,
'image' => $image,
'images' => $images,
'pay_price' => $pay_price,
'pay_coin' => $pay_coin,
'renew_price' => $renew_price,
'renew_coin' => $renew_coin,
'play_image' => $play_image,
'enter_image' => $enter_image,
'day' => $day,
'nick_name_color' => $nick_name_color,
'nick_name_color_name' => $nick_name_color_name,
'createtime' => time(),
'power_ids' => $power_ids
];
$result = db::name('vs_nobility')->insert($data);
if ($result) {
return V(1, "添加成功");
} else {
return V(0, "添加失败");
}
}
//编辑爵位
public function edit_nobility(){
$name = input('name', '');
$image = input('image', '');
$images = input('images', '');
$pay_price = input('pay_price', '');
$pay_coin = input('pay_coin', '');
$renew_price = input('renew_price', '');
$renew_coin = input('renew_coin', '');
$day = input('day', '');
$nick_name_color = input('nick_name_color', '');
$nick_name_color_name = input('nick_name_color_name', '');
$power_ids = input('power_ids', '');
$play_image = input('play_image', '');
$enter_image = input('enter_image', '');
$lid = input('lid', '');
$nobility_info = db::name('vs_nobility')->where('lid', $lid)->find();
if (!$nobility_info) {
return V(0, "该爵位不存在");
}
$data = [];
if(!empty($name)){
$nobility_info_other = db::name('vs_nobility')->where(['lid'=>['neq', $lid], 'name'=>$name])->find();
if ($nobility_info_other) {
return V(0, "该爵位已存在");
}
$data['name'] = $name;
}
if(!empty($image)){
$data['image'] = $image;
}
if(!empty($images)){
$data['images'] = $images;
}
if(!empty($pay_price)){
$data['pay_price'] = $pay_price;
}
if(!empty($pay_coin)){
$data['pay_coin'] = $pay_coin;
}
if(!empty($renew_price)){
$data['renew_price'] = $renew_price;
}
if(!empty($renew_coin)){
$data['renew_coin'] = $renew_coin;
}
if(!empty($day)){
$data['day'] = $day;
}
if(!empty($nick_name_color)){
$data['nick_name_color'] = $nick_name_color;
}
if(!empty($nick_name_color_name)){
$data['nick_name_color_name'] = $nick_name_color_name;
}
if(!empty($power_ids)){
$data['power_ids'] = $power_ids;
}
if(!empty($play_image)){
$data['play_image'] = $play_image;
}
if(!empty($enter_image)){
$data['enter_image'] = $enter_image;
}
$data['updatetime'] = time();
$result = db::name('vs_nobility')->where('lid', $lid)->update($data);
if ($result) {
return V(1, "编辑成功");
} else {
return V(0, "编辑失败");
}
}
//删除爵位
public function del_nobility(){
$lid = input('lid', '');
$nobility_info = db::name('vs_nobility')->where('lid', $lid)->find();
if (!$nobility_info) {
return V(0, "该爵位不存在");
}
$result = db::name('vs_nobility')->where('lid', $lid)->update(['delete_time'=>time()]);
if ($result) {
return V(1, "删除成功");
} else {
return V(0, "删除失败");
}
}
//爵位权限列表
public function get_nobility_power_list(){
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$count = db::name('vs_nobility_power')->where('delete_time', 0)->count();
$lists = db::name('vs_nobility_power')
->field('id,name,content,image,images,createtime,updatetime')
->where('delete_time', 0)
->order($order, $sort)
->page($page, $page_limit)
->select();
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $lists
];
return V(1,"成功", $return_data);
}
//添加爵位权限
public function add_nobility_power(){
$name = input('name', '');
$content = input('content', '');
$image = input('image', '');
$images = input('images', '');
if (empty($name)) {
return V(0, "请输入爵位权限名称");
}
$nobility_power_info = db::name('vs_nobility_power')->where('name', $name)->find();
if ($nobility_power_info) {
return V(0, "该爵位权限已存在");
}
$data = [
'name' => $name,
'content' => $content,
'image' => $image,
'images' => $images,
'createtime' => time(),
];
$result = db::name('vs_nobility_power')->insert($data);
if ($result) {
return V(1, "添加成功");
} else {
return V(0, "添加失败");
}
}
//编辑爵位权限
public function edit_nobility_power(){
$name = input('name', '');
$content = input('content', '');
$image = input('image', '');
$images = input('images', '');
$id = input('id', '');
$nobility_power_info = db::name('vs_nobility_power')->where('id', $id)->find();
if (!$nobility_power_info) {
return V(0, "该爵位权限不存在");
}
$data = [];
if(!empty($name)){
$nobility_power_info_other = db::name('vs_nobility_power')->where(['id'=>['neq', $id], 'name'=>$name])->find();
if ($nobility_power_info_other) {
return V(0, "该爵位权限已存在");
}
$data['name'] = $name;
}
if(!empty($content)){
$data['content'] = $content;
}
if(!empty($image)){
$data['image'] = $image;
}
if(!empty($images)){
$data['images'] = $images;
}
$data['updatetime'] = time();
$result = db::name('vs_nobility_power')->where('id', $id)->update($data);
if ($result) {
return V(1, "编辑成功");
} else {
return V(0, "编辑失败");
}
}
//删除爵位权限
public function del_nobility_power(){
$id = input('id', '');
$nobility_power_info = db::name('vs_nobility_power')->where('id', $id)->find();
if (!$nobility_power_info) {
return V(0, "该爵位权限不存在");
}
$result = db::name('vs_nobility_power')->where('id', $id)->update(['delete_time'=>time()]);
if ($result) {
return V(1, "删除成功");
} else {
return V(0, "删除失败");
}
}
//用户爵位列表
public function get_user_nobility_list(){
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$count = db::name('vs_user_nobility')->where('delete_time', 0)->count();
$lists = db::name('vs_user_nobility')
->field('id,user_id,lid,end_time,createtime,updatetime')
->where('delete_time', 0)
->order($order, $sort)
->page($page, $page_limit)
->select();
foreach ($lists as &$list){
$list['user_code'] = db::name('user')->where('id', $list['user_id'])->value('user_code');
$list['user_nick_name'] = db::name('user')->where('id', $list['user_id'])->value('nickname');
$list['nick_name_color'] = db::name('vs_nobility')->where('lid', $list['lid'])->value('nick_name_color');
//头像
$list['user_avatar'] = db::name('user')->where('id', $list['user_id'])->value('avatar');
//爵位名称
$list['nobility_name'] = db::name('vs_nobility')->where('lid', $list['lid'])->value('name');
$list['createtime'] = $list['createtime'] ? date('Y-m-d H:i:s', $list['createtime']) : '--';
$list['updatetime'] = $list['updatetime'] ? date('Y-m-d H:i:s', $list['updatetime']) : '--';
}
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $lists
];
return V(1,"成功", $return_data);
}
//装扮添加
public function add_nobility_decorate(){
$lid = input('lid', '');
$dpid = input('dpid', '');
if (empty($lid)) {
return V(0, "请选择爵位");
}
if (empty($dpid)) {
return V(0, "请选择装扮");
}
$decorate_price = db::name('vs_decorate_price')->where(['id'=>$dpid])->find();
if (!$decorate_price) {
return V(0, "该装扮不存在");
}
$decorate = db::name('vs_decorate')->where(['did'=>$decorate_price['did']])->find();
if (!$decorate) {
return V(0, "该装扮不存在");
}
$nobility_dress_info = db::name('vs_nobility_decorate')
->where('delete_time', 0)
->where(['lid'=>$lid, 'dpid'=>$dpid])->find();
if ($nobility_dress_info) {
return V(0, "该爵位已添加该装扮");
}
$data = [
'lid' => $lid,
'did' => $decorate['did'],
'type' => $decorate['type'],
'dpid' => $dpid,
'day' => $decorate_price['day'],
'createtime' => time(),
];
$result = db::name('vs_nobility_decorate')->insert($data);
if ($result) {
return V(1, "添加成功");
} else {
return V(0, "添加失败");
}
}
//装扮列表
public function get_nobility_decorate_list(){
$order = input('order', 'id');
$sort = input('sort', 'desc');
$page = input('page', 1);
$lid = input('lid', '');
$page_limit = input('page_limit', 30);
$count = db::name('vs_nobility_decorate')->where('delete_time', 0)->count();
$lists = db::name('vs_nobility_decorate')
->field('id,lid,did,type,dpid,day,createtime,updatetime')
->where('delete_time', 0)
->where('lid', $lid)
->order($order, $sort)
->page($page, $page_limit)
->select();
$list = [];
foreach ($lists as $key =>$value){
$decorate = db::name('vs_decorate')->where('did', $value['did'])->find();
$list[$key]['id'] = $value['id'];
$list[$key]['lid'] = $value['lid'];
$list[$key]['did'] = $value['did'];
$list[$key]['dpid'] = $value['dpid'];
$list[$key]['decorate_name'] = $decorate['title'] ?? '';
$list[$key]['decorate_day'] = db::name('vs_decorate_price')->where('id', $value['dpid'])->value('day');
$list[$key]['decorate_type_name'] = model('api/Decorate')->TypeArray[$value['type']] ?? '';
$list[$key]['decorate_image'] = $decorate['base_image'] ?? '';
$list[$key]['createtime'] = $value['createtime'] ? date('Y-m-d H:i:s', $value['createtime']) : '--';
}
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $list
];
return V(1,"成功", $return_data);
}
//装扮删除
public function del_nobility_decorate(){
$id = input('id', '');
$nobility_decorate_info = db::name('vs_nobility_decorate')->where('id', $id)->find();
if (!$nobility_decorate_info) {
return V(0, "该爵位装扮不存在");
}
$result = db::name('vs_nobility_decorate')->where('id', $id)->update(['delete_time'=>time()]);
if ($result) {
return V(1, "删除成功");
} else {
return V(0, "删除失败");
}
}
}

View File

@@ -4,6 +4,8 @@ namespace app\adminapi\controller;
use app\admin\model\AdminLog;
use app\common\controller\adminApi;
use app\common\library\GiftTableManager;
use think\Cache;
use think\Config;
use think\Db;
use think\Hook;
@@ -71,14 +73,24 @@ class Room extends adminApi
$label_icon = input('label_icon', '');
$label_icon_room = input('label_icon_room', '');
$status = input('status', 1);
$default_index = input('default_index', 0);
$sort = input('sort', 99);
if($label_name == ''){
return V(0,"请输入房间标签名称");
}
if($default_index == 1){
$lebel_data = db::name($this->table_room_label)->where(['default_index'=>1])->find();
if($lebel_data){
db::name($this->table_room_label)->where(['id'=>$lebel_data['id']])->update(['default_index'=>0]);
}
}
$data = [
'label_name' => $label_name,
'label_icon' => $label_icon,
'label_icon_room' => $label_icon_room,
'status' => $status,
'default_index' => $default_index,
'sort' => $sort,
'updatetime' => time(),
'createtime' => time()
];
@@ -144,6 +156,8 @@ class Room extends adminApi
$label_icon = input('label_icon', '');
$label_icon_room = input('label_icon_room', '');
$status = input('status', 1);
$default_index = input('default_index', 0);
$sort = input('sort', 99);
if($label_id == ''){
return V(0,"标签ID不能为空");
}
@@ -171,6 +185,18 @@ class Room extends adminApi
if($status){
$data['status'] = $status;
}
if($default_index == 1){
$lebel_data = db::name($this->table_room_label)->where(['default_index'=>1])->find();
if($lebel_data){
db::name($this->table_room_label)->where(['id'=>$lebel_data['id']])->update(['default_index'=>0]);
}
}
$data['default_index'] = $default_index;
if($sort){
$data['sort'] = $sort;
}
$data['updatetime'] = time();
$result = db::name($this->table_room_label)->where(['id'=>$label_id])->update($data);
if(!$result){
@@ -186,7 +212,7 @@ class Room extends adminApi
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$search_name = input('search_name', '');
$where=[];
$where['deletetime'] = 0;
//标签名称
if($search_name!==''){
$where['label_name'] = ['like', '%'.$search_name.'%'];
@@ -196,6 +222,14 @@ class Room extends adminApi
foreach ($lists as $key => $value) {
$lists[$key]['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
}
$lists[]=[
'createtime' => '',
'deletetime' => 0,
'id' => -1,
'type_name' => '练歌房',
'status' => 1,
'sort' => 99
];
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
@@ -237,7 +271,7 @@ class Room extends adminApi
if(!$type_data){
return V(0,"房间类型不存在");
}
$result = db::name($this->table_room_type)->where(['id'=>$type_id])->delete();
$result = db::name($this->table_room_type)->where(['id'=>$type_id])->update(['deletetime'=>time()]);
if(!$result){
return V(0,"删除失败");
}
@@ -386,6 +420,12 @@ class Room extends adminApi
public function edit_relation(){
$relation_id = input('relation_id', '');
$name = input('name', '');
if($relation_id == 0){
if($name != '无'){
return V(0,'此关系不允许修改');
}
}
$type = input('type', '');
$is_open_movie = input('is_open_movie', 1);
$icon = input('icon', '');
@@ -425,6 +465,12 @@ class Room extends adminApi
$search_room_id = input('search_room_id', '');
$search_user_id = input('search_user_id', '');
$search_status = input('search_status', '');
$type_id = input('type_id', '');
$label_id = input('label_id', '');
$is_hot = input('is_hot', '');
$is_top = input('is_top', '');
$is_recommend = input('is_recommend', '');
$where=[];
//房间号
if($search_room_id!==''){
@@ -437,9 +483,30 @@ class Room extends adminApi
if($search_status!==''){
$where['room_status'] = $search_status;
}
if($type_id!==''){
if($type_id == -1){
$where['type_id'] = 1;
$where['label_id'] = 2;
}else{
$where['type_id'] = $type_id;
}
}else{
$where['type_id'] = ['<>',6];
}
if($label_id!==''){
$where['label_id'] = $label_id;
}
if($is_hot!==''){
$where['is_hot'] = $is_hot;
}
if($is_top!==''){
$where['is_top'] = $is_top;
}
if($is_recommend!==''){
$where['is_recommend'] = $is_recommend;
}
//房间列表只展示 审核通过的房间
$where['apply_status'] = 2;//1待审核 2审核通过 3审核失败
$where['type_id'] = ['<>',6];
$count = db::name($this->table)->where($where)->count();
$room_lists = db::name($this->table)->where($where)->page($page, $page_limit)->select();
$lists = [];
@@ -457,8 +524,14 @@ class Room extends adminApi
$lists[$key]['user_name'] = model('User')->where(['id'=>$value['user_id']])->value('nickname');
$lists[$key]['room_name'] = $value['room_name'];
$lists[$key]['room_cover'] = $value['room_cover'];
$lists[$key]['room_type_str'] = db::name($this->table_room_type)->where(['id'=>$value['type_id']])->value('type_name');
$lists[$key]['room_label_str'] = db::name($this->table_room_label)->where(['id'=>$value['label_id']])->value('label_name');
if($value['type_id']==1 && $value['label_id']==2){
$lists[$key]['room_type_str'] = "练歌房";
$lists[$key]['room_label_str'] = "练歌房";
$value['type_id']=-1;
}else{
$lists[$key]['room_type_str'] = db::name($this->table_room_type)->where(['id'=>$value['type_id']])->value('type_name');
$lists[$key]['room_label_str'] = db::name($this->table_room_label)->where(['id'=>$value['label_id']])->value('label_name');
}
$lists[$key]['is_recommend'] = $value['is_recommend'] != 1 ? '是' : '否';
$lists[$key]['is_top'] = $value['is_top'] != 1 ? '是' : '否';
$lists[$key]['is_hot'] = $value['is_hot'] != 1 ? '是' : '否';
@@ -468,6 +541,8 @@ class Room extends adminApi
$lists[$key]['guild_name'] = !empty($guild) ? $guild['guild_name'] : "";
$lists[$key]['room_status_str'] = model('Room')->room_status[$value['room_status']];
$lists[$key]['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
$lists[$key]['is_robot_num'] = $value['robot_num']==0 ? 1 : 2;
$lists[$key]['is_open_blind_box_turntable_str'] = $value['is_open_blind_box_turntable'] == 1 ? '是' : '否';
}
$return_data = [
'page' =>$page,
@@ -516,6 +591,7 @@ class Room extends adminApi
$room_data['room_type_str'] = db::name('vs_room_type')->where(['id'=>$room_data['type_id']])->value('type_name');
$room_data['liang'] = model('api/Decorate')->user_decorate_detail($room_data['id'],7);
$room_data['owner'] = db::name('user')->where(['id'=>$room_data['user_id']])->value('nickname');
$room_data['is_robot_num'] = $room_data['robot_num']==0 ? 2 : 1;
$room_data['guild_name'] = '';
$guild_id = db::name('vs_guild_user')->where('user_id',$room_data['user_id'])->value('guild_id');
if($guild_id){
@@ -586,6 +662,10 @@ class Room extends adminApi
}
$room_data['growth_week_subsidy'] = round($weekSubsidy, 2);
if($room_data['type_id']==1 && $room_data['label_id']==2){
$room_data['type_id']=-1;
}
return V(1,"成功", $room_data);
}
@@ -638,71 +718,72 @@ class Room extends adminApi
$page = input('page', 1);
$page_limit = input('page_limit', 10);
$type = input('type', 1);//1:全部流水 2:日流水 3:周流水 4:月流水
$stime = input('stime', '');
$etime = input('etime', '');
$firstDay = date('Y-m-01');
$lastDay = date('Y-m-t 23:59:59');
$begin_time_table = empty($stime) ? $firstDay : $stime;
$end_time_table = empty($etime) ? $lastDay : $etime;
if($room_id == ''){
return V(0,"参数错误");
}
if($type == 1){
$begin_time = 1748676768;//2025-06-00 15:32:48
$end_time = time();
$where['a.createtime'] = ['between', [$begin_time, $end_time]];
}elseif ($type == 2){
//日流水
$begin_time = strtotime(date('Y-m-d 00:00:00',time()));
$end_time = time();
$where['a.createtime'] = ['between', [$begin_time, $end_time]];
$params['from_id'] = $room_id;
$ext_params['start_time'] = strtotime($begin_time_table);
$ext_params['end_time'] = strtotime($end_time_table);
$params['page'] = $page;
$params['limit'] = $page_limit;
$res = model('api/GiveGiftBases')->getGiftRecords($params,$ext_params);
$list = $res['data'];
$count = $res['total'];
$list_data = [];
foreach ($list as &$value) {
$value['time'] = date('Y-m-d', $value['createtime']);
$value['sender_nickname'] = db::name('user')->where('id', $value['user_id'])->value('nickname');
$value['sender_avatar'] = db::name('user')->where('id', $value['user_id'])->value('avatar');
$value['receive_nickname'] = db::name('user')->where('id', $value['gift_user'])->value('nickname');
$value['receive_avatar'] = db::name('user')->where('id', $value['gift_user'])->value('avatar');
$value['gift_name'] = db::name('vs_gift')->where('gid', $value['gift_id'])->value('gift_name');
}
elseif ($type == 3){
//周流水
//周一
$begin_time = strtotime(date('Y-m-d 24:00:00',strtotime('-'.date('w').'days')));
$end_time = time();
$where['a.createtime'] = ['between', [$begin_time, $end_time]];
}
elseif ($type == 4){
$begin_time = strtotime(date('Y-m-01'));
$end_time = time();
$where['a.createtime'] = ['between', [$begin_time, $end_time]];
}
$count = db::name('vs_give_gift')->alias('a')
->field('a.id')
->join('user b', 'a.user_id = b.id', 'left')
->join('user c', 'a.gift_user = c.id', 'left')
->join('vs_gift d', 'a.gift_id = d.gid', 'left')
->where('a.from',2)
->where('a.from_id',$room_id)
->where($where)
->count();
$list = db::name('vs_give_gift')->alias('a')
->field('a.number,a.createtime,a.total_price,a.type,b.nickname,b.avatar,c.nickname as gift_nickname,c.avatar as gift_avatar,d.gift_name,a.from,a.from_id')
->join('user b', 'a.user_id = b.id', 'left')
->join('user c', 'a.gift_user = c.id', 'left')
->join('vs_gift d', 'a.gift_id = d.gid', 'left')
->where('a.from',2)
->where('a.from_id',$room_id)
->where($where)
->order('a.id desc')
->page($page, $page_limit)
->select();
if($list){
foreach ($list as &$v){
$v['createtime'] = date('Y-m-d H:i:s',$v['createtime']);
$v['content'] = $v['nickname'].' 给 '.$v['gift_nickname'].' 送了 '.$v['gift_name'].' x '.$v['number'];
$v['content'] = $v['sender_nickname'].' 给 '.$v['receive_nickname'].' 送了 '.$v['gift_name'].' x '.$v['number'];
// 来源1聊天送礼物 2房间语聊送礼 3直播送礼 4动态打赏
$v['from_str'] = model('Gift')->GiveGiftFromStr[$v['from']];
$v['from_str'] = model('adminapi/Gift')->GiveGiftFromStr[$v['from']];
}
}
$where =[];
$where['createtime'] = ['between', [strtotime($begin_time_table), strtotime($end_time_table)]];
$all_total_price = 0;
$tables = GiftTableManager::getTablesByTimeRange(
strtotime($begin_time_table),
strtotime($end_time_table)
);
if($tables){
foreach ($tables as $table_name){
//表前缀
$table_prefix = config('database.prefix');
$table_name = str_replace($table_prefix, '', $table_name);
$total_price = db::name($table_name)
->where('from',2)
->where('from_id',$room_id)
->where($where)->sum('total_price');
$all_total_price += $total_price;
}
}
//幸运流水总计
$total_lucky_coin = db::name('vs_room_luck_value')->where('room_id',$room_id)->where($where)->sum('luck_value');
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $list,
'total' =>[
'total_price' => db::name('vs_give_gift')->alias('a')
->join('user b', 'a.user_id = b.id', 'left')
->where('a.from',2)
->where('a.from_id',$room_id)
->where($where)->sum('total_price')
'total_price' => $all_total_price,
'total_lucky_coin' => $total_lucky_coin,
]
];
return V(1,"成功", $return_data);
@@ -744,6 +825,26 @@ class Room extends adminApi
];
return V(1,"成功", $return_data);
}
//添加房间
public function add_room(){
$admin_id = Session::get('admin_id');
$user_code = input('user_code', '');
$room_name = input('room_name', '');
$room_cover = input('room_cover', '');
$room_intro = input('room_intro', '');
if($user_code == '' || $room_name == '' || $room_cover == '' || $room_intro == ''){
return V(0,"参数错误");
}
$user_id = db::name('user')->where('user_code', $user_code)->value('id');
if(!$user_id){
return V(0,"用户不存在");
}
$reslut = model('api/Room')->user_create_room($user_id, $room_name, $room_cover, $room_intro,0,0);
if($reslut['code'] == 0){
return V(0,$reslut['msg']);
}
return V(1,"成功", $reslut);
}
//编辑房间
public function edit_room()
@@ -818,11 +919,16 @@ class Room extends adminApi
//在用户表里找 $robot_num 个机器人 进入到房间
$user_list = db::name('user')->field('id')->where('is_robot',1)->limit($robot_num)->orderRaw('rand()')->select();
if($user_list){
if(count($user_list) != $robot_num){
return V(0,"机器人数量不足");
}
foreach ($user_list as $v){
model('api/Room')->join_room($v['id'],$room_id,$room_password);
}
}else{
return V(0,"没有可用机器人");
}
}elseif ($is_robot_num == 2 && $robot_num == 0){
}elseif ($is_robot_num == 2 || $robot_num == 0){
$data['robot_num'] = 0;
//查询在房间中的机器人 并退出
$user_list = db::name('vs_room_visitor')->alias('a')->join('user b','a.user_id = b.id','left')
@@ -836,9 +942,43 @@ class Room extends adminApi
}
}
}
$is_open_blind_box_turntable = input('is_open_blind_box_turntable', '');//是否开启盲盒转盘0 否 1是
if($is_open_blind_box_turntable !== ""){
$data['is_open_blind_box_turntable'] = $is_open_blind_box_turntable;
if($is_open_blind_box_turntable == 1){
$room_data = db::name('vs_room')->find($room_id);
if($room_data['is_open_blind_box_turntable'] == 0){
model('Room')->bindPan($room_id);
}
}
}
//排序
$sort = input('sort', '');//排序 越大越靠前
if($sort !== ""){
$data['sort'] = $sort;
}
if($type_id==-1){
model('api/RoomSong')->agree_song(1,$room_id,1);
unset($data['type_id']);
}
if($type_id==1){
$data['label_id'] = 1;
//推送给前端
$text = [
'room_id' => $room_id,
'type' => $type_id,
'text' => '房间类型已修改type--'.$type_id
];
model('api/Chat')->sendMsg(1012,$room_id,$text);
}
if($type_id == 9){
$data['label_id'] = 6;
}
$data['updatetime'] = time();
$res = db::name('vs_room')->where('id',$room_id)->update($data);
if($res){
Cache::rm('room_info_'.$room_id);
return V(1,"成功");
}
else{
@@ -909,9 +1049,22 @@ class Room extends adminApi
if($status){
$data['status'] = $status;
}
$bg_url = db::name('vs_room_background')->where('id',$id)->value('image_url');
$res = db::name('vs_room_background')->where('id',$id)->update($data);
if($res){
if($bg_url != $image_url){
//查询使用默认背景的房间
$room_list = db::name('vs_room')->field('id,room_background')->where(['room_status' => ['<>',3]])->select();
if($room_list){
foreach ($room_list as $v){
//判断是否使用默认背景room_background 字段值是否是以 get_system_config_value('web_site') 开头
if(strpos($v['room_background'],get_system_config_value('web_site')) !== FALSE){
db::name('vs_room')->where('id',$v['id'])->update(['room_background' => $image_url]);
}
}
}
}
return V(1,"成功");
}
else{
@@ -962,6 +1115,10 @@ class Room extends adminApi
$search_room_number = input('search_room_number', '');
$search_onwer_number = input('search_onwer_number', '');
$room_status = input('room_status', '');
//开始 时间
$start_time = input('start_time', '');
//结束 时间
$end_time = input('end_time', '');
if($search_room_number!==''){
$where['room_number'] = $search_room_number;
@@ -972,12 +1129,36 @@ class Room extends adminApi
if($room_status!==''){
$where['room_status'] = $room_status;
}
// 检查并转换时间格式为时间戳
if($start_time !== '' && $end_time !== ''){
// 同时有开始和结束时间
$startTime = strtotime($start_time);
$endTime = strtotime($end_time);
if($startTime !== false && $endTime !== false){
$where['createtime'] = ['between', [$startTime, $endTime]];
}
}elseif($start_time !== ''){
// 只有开始时间
$startTime = strtotime($start_time);
if($startTime !== false){
$where['createtime'] = ['>=', $startTime];
}
}elseif($end_time !== ''){
// 只有结束时间
$endTime = strtotime($end_time);
if($endTime !== false){
$where['createtime'] = ['<=', $endTime];
}
}
$where['type_id'] = 6;
$count = db::name('vs_room')->where($where)->count();
$lists = db::name('vs_room')->field('id,room_name,room_cover,room_number,user_id,room_status,createtime')
->where($where)
->order('id desc')
->page($page, $page_limit)->select();
foreach ($lists as &$value) {
$guild = model('Guild')->getGuildByUserId($value['user_id']);
$value['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
@@ -988,7 +1169,27 @@ class Room extends adminApi
$value['room_code'] = model('api/Decorate')->user_decorate_detail($value['id'], 7);
//房间状态1正常2封禁3关闭
$value['room_status_str'] = $value['room_status'] ==1 ? "正常" : ($value['room_status'] ==2 ? "封禁" : "关闭");
$cpRoom = db::name('vs_room_cp_movie')->where('room_id',$value['id'])->find();
if($cpRoom){
if($cpRoom['user_id'] == $value['user_id']){
$value['cp_nickname'] = db::name('user')->where('id', $cpRoom['user_id1'])->value('nickname');
$value['cp_user_id'] = db::name('user')->where('id', $cpRoom['user_id1'])->value('user_code');
}
if($cpRoom['user_id1'] == $value['user_id']){
$value['cp_nickname'] = db::name('user')->where('id', $cpRoom['user_id'])->value('nickname');
$value['cp_user_id'] = db::name('user')->where('id', $cpRoom['user_id'])->value('user_code');
}
}
// 流水计算也应使用相同的时间范围
$liushuiWhere = ['from_id' => $value['id']];
if(isset($where['createtime'])){
$liushuiWhere['createtime'] = $where['createtime'];
}
$value['liushui'] = db::name('vs_give_gift')->where($liushuiWhere)->sum('total_price') * get_system_config_value('coin_charm_exp');
}
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
@@ -998,6 +1199,7 @@ class Room extends adminApi
return V(1,"成功", $return_data);
}
//Cp电影房封禁
public function cp_movie_room_forbid()
{
@@ -1211,7 +1413,7 @@ class Room extends adminApi
if($apply_status!==''){
$where['apply_status'] = $apply_status;
}else{
$where['apply_status'] = ['<>',2];
$where['apply_status'] = 1;
}
$count = db::name($this->table)->where($where)->count();
@@ -1221,7 +1423,8 @@ class Room extends adminApi
foreach ($room_lists as &$value) {
$value['room_code'] = model('api/Decorate')->user_decorate_detail($value['id'], 7);
$value['user_name'] = model('User')->where(['id'=>$value['user_id']])->value('nickname').'-'.$value['user_id'];
$user_code = db::name('user')->where(['id'=>$value['user_id']])->value('user_code');
$value['user_name'] = model('User')->where(['id'=>$value['user_id']])->value('nickname').'-'.$user_code;
$value['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
$value['room_name'] = $value['room_name'].'-'.$value['room_number'];
}
@@ -1238,6 +1441,7 @@ class Room extends adminApi
//房间审核
public function room_audit(){
$id = input('id', '');
$remark = input('remark', '');
if($id == ''){
return V(0,"参数错误");
}
@@ -1245,10 +1449,42 @@ class Room extends adminApi
if($apply_status == ''){
return V(0,"参数错误");
}
$result = db::name('vs_room')->where(['id'=>$id])->update(['apply_status'=>$apply_status]);
$room_data = db::name('vs_room')->where(['id'=>$id])->find();
if(!$room_data){
return V(0,"参数错误");
}
$result = db::name('vs_room')->where(['id'=>$id])->update([
'apply_status'=>$apply_status,
'is_open_blind_box_turntable'=>1,
'updatetime'=>time(),
]);
if(!$result){
return V(0,"修改失败");
}
//发系统信息
if($apply_status ==2){
$deal_content = '审核通过';
//首次建立房间【完成任务】
model('api/Tasks')->tasks_complete($room_data['user_id'],34);
}elseif($apply_status ==3){
$deal_content = '审核未通过';
}
if(!empty($remark)){
$deal_content .= ',原因:'.$remark;
}
db::name('system_message')->insert([
'title' => '房间审核结果',
'content' => '您创建的房间'.$room_data['room_name'].$deal_content,
'type' => 1,
'admin_id' => Session::get('admin_id'),
'receiving_id' => $room_data['user_id'],
'createtime' => time(),
]);
//房间绑定盘
model('Room')->bindPan($id);
return V(1,"成功");
}
@@ -1404,10 +1640,10 @@ class Room extends adminApi
$where['createtime'] = ['>=',strtotime($stime)];
}
if(!empty($etime)){
$where['createtime'] = ['<=',strtotime($etime.' 23:59:59')];
$where['createtime'] = ['<=',strtotime($etime)];
}
if(!empty($stime) && !empty($etime)){
$where['createtime'] = ['between',[strtotime($stime),strtotime($etime.' 23:59:59')]];
$where['createtime'] = ['between',[strtotime($stime),strtotime($etime)]];
}
$room_log_lists = db::name($this->table_room_log)->where($where)->order('id desc')->page($page, $page_limit)->select();
$count = db::name($this->table_room_log)->where($where)->count();
@@ -1575,4 +1811,183 @@ class Room extends adminApi
return V(1,"成功", $result);
}
// 房间红包列表
public function room_redpacket_list(){
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$room_id = input('room_id', '');
//红包状态
$status = input('status', '');
//发红包的时间
$stime = input('stime', '');
$etime = input('etime', '');
$where = [];
if($room_id){
$where['room_id'] = $room_id;
}
if($status){
$where['status'] = $status;
}
if($stime){
$where['createtime'] = ['>=',strtotime($stime)];
}
if($etime){
$where['createtime'] = ['<=',strtotime($etime)];
}
$count = db::name("redpacket")->where($where)->count();
$room_redpacket_lists = db::name("redpacket")->where($where)->page($page, $page_limit)->order('id desc')->select();
//循环数据 获取发红的昵称和头像 时间格式化 状态:0=未开始,1=进行中,2=已结束,3=已退回' 币种(coin_type):1=金币,2=钻石',红包类型(type):1=普通红包,2=口令红包'
//多选条件逗号分隔存值conditions) 0=无1=收藏2=在麦上
if($room_redpacket_lists){
foreach ($room_redpacket_lists as $key => $value){
$room_redpacket_lists[$key]['nickname'] = db::name('user')->where(['id'=>$value['user_id']])->value('nickname');
$room_redpacket_lists[$key]['avatar'] = db::name('user')->where(['id'=>$value['user_id']])->value('avatar');
$room_redpacket_lists[$key]['user_code'] = db::name('user')->where(['id'=>$value['user_id']])->value('user_code');
$room_redpacket_lists[$key]['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
$room_redpacket_lists[$key]['status_text'] = $value['status'] == 0 ? '未开始' : ($value['status'] == 1 ? '进行中' : ($value['status'] == 2 ? '已结束' : '已退回'));
$room_redpacket_lists[$key]['coin_type_text'] = $value['coin_type'] == 1 ? '金币' : ($value['coin_type'] == 2 ? '钻石' : '未知');
$room_redpacket_lists[$key]['type_text'] = $value['type'] == 1 ? '普通红包' : ($value['type'] == 2 ? '口令红包' : '未知');
// 多选条件处理0=无不能和其他条件共存1=收藏2=在麦上
// 可以同时存在,也可以单独存在,同时存在时用逗号分隔
$conditions = explode(',',$value['conditions']);
// 过滤掉空值元素
$conditions = array_filter($conditions, function($item) {
return $item !== '' && $item !== null;
});
// 去除重复的条件
$conditions = array_unique($conditions);
// 重新索引数组,确保索引连续
$conditions = array_values($conditions);
// 特殊处理如果包含条件0无条件则只保留这一项
if (in_array('0', $conditions)) {
$room_redpacket_lists[$key]['conditions'] = ['无条件'];
} else {
// 将数字条件转换为对应的中文描述
$conditions_text = array_map(function($item){
// 0=无条件1=收藏2=在麦上
switch($item) {
case '0':
return '无条件';
case '1':
return '收藏';
case '2':
return '在麦上';
default:
return '未知';
}
}, $conditions);
$room_redpacket_lists[$key]['conditions'] = $conditions_text;
}
//房间名称
$room_redpacket_lists[$key]['room_name'] = db::name('vs_room')->where(['id'=>$value['room_id']])->value('room_name');
}
}
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $room_redpacket_lists
];
return V(1,"成功", $return_data);
}
// 获取房间红包详情
public function room_redpacket_detail(){
// 红包ID
$redpacket_id = input('redpacket_id', '');
if(empty($redpacket_id)){
return V(0, "红包ID不能为空");
}
// 获取红包基本信息
$redpacket_info = db::name("redpacket")->where(['id'=>$redpacket_id])->find();
if(!$redpacket_info){
return V(0, "红包不存在");
}
// 获取发红包用户信息
$redpacket_info['nickname'] = db::name('user')->where(['id'=>$redpacket_info['user_id']])->value('nickname');
$redpacket_info['avatar'] = db::name('user')->where(['id'=>$redpacket_info['user_id']])->value('avatar');
$redpacket_info['user_code'] = db::name('user')->where(['id'=>$redpacket_info['user_id']])->value('user_code');
$redpacket_info['createtime_text'] = date('Y-m-d H:i:s', $redpacket_info['createtime']);
$redpacket_info['start_time_text'] = date('Y-m-d H:i:s', $redpacket_info['start_time']);
$redpacket_info['end_time_text'] = date('Y-m-d H:i:s', $redpacket_info['end_time']);
//房间名称
$redpacket_info['room_name'] = db::name('vs_room')->where(['id'=>$redpacket_info['room_id']])->value('room_name');
// 红包状态文字描述
$status_map = [
0 => '未开始',
1 => '进行中',
2 => '已结束',
3 => '已退回'
];
$redpacket_info['status_text'] = $status_map[$redpacket_info['status']] ?? '未知';
// 币种文字描述
$coin_type_map = [
1 => '金币',
2 => '钻石'
];
$redpacket_info['coin_type_text'] = $coin_type_map[$redpacket_info['coin_type']] ?? '未知';
// 红包类型文字描述
$type_map = [
1 => '普通红包',
2 => '口令红包'
];
$redpacket_info['type_text'] = $type_map[$redpacket_info['type']] ?? '未知';
// 领取条件处理
$conditions = explode(',',$redpacket_info['conditions']);
$conditions = array_filter($conditions, function($item) {
return $item !== '' && $item !== null;
});
$conditions = array_unique($conditions);
$conditions = array_values($conditions);
// 特殊处理如果包含条件0无条件则只保留这一项
if (in_array('0', $conditions)) {
$redpacket_info['conditions_text'] = ['无条件'];
} else {
// 将数字条件转换为对应的中文描述
$conditions_text = array_map(function($item){
switch($item) {
case '0':
return '无条件';
case '1':
return '收藏';
case '2':
return '在麦上';
default:
return '未知';
}
}, $conditions);
$redpacket_info['conditions_text'] = $conditions_text;
}
// 领取详情 redpacket_record 表里面的数据
// 外键redpacket_id redpacket表的IDuser_id 外键user表的ID amount 抢到的金额 createtime抢红包的时间
// 红包领取详情 谁在什么时候 抢红包 抢了多少钱
$redpacket_record_lists = db::name("redpacket_record")->where(['redpacket_id'=>$redpacket_id])->order('createtime asc')->select();
if($redpacket_record_lists){
foreach ($redpacket_record_lists as $key => $value){
$redpacket_record_lists[$key]['nickname'] = db::name('user')->where(['id'=>$value['user_id']])->value('nickname');
$redpacket_record_lists[$key]['avatar'] = db::name('user')->where(['id'=>$value['user_id']])->value('avatar');
$redpacket_record_lists[$key]['user_code'] = db::name('user')->where(['id'=>$value['user_id']])->value('user_code');
$redpacket_record_lists[$key]['createtime_text'] = date('Y-m-d H:i:s', $value['createtime']);
}
}
$return_data = [
'redpacket_info' => $redpacket_info,
'record_lists' => $redpacket_record_lists
];
return V(1, "成功", $return_data);
}
}

View File

@@ -0,0 +1,227 @@
<?php
namespace app\adminapi\controller;
use app\admin\model\AdminLog;
use app\common\controller\adminApi;
use think\Config;
use think\Db;
use think\Hook;
use think\Model;
use think\Session;
use think\Validate;
/**
* 房间
* @internal
*/
class RoomEmoji extends adminApi
{
protected $noNeedLogin = [];
protected $noNeedRight = ['emoji_list','add_emoji','edit_emoji','del_emoji','emoji_detail','emoji_type_list'];
protected $table = 'vs_room_emoji';
protected $table_type = 'vs_room_emoji_type';
public function _initialize()
{
parent::_initialize();
}
//房间表情列表
function emoji_list(){
$id = input('id', '', 'intval');
$name = input('name', '', 'trim');
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$where = [];
if ($id) {
$where['id'] = $id;
}
if ($name) {
$where['name'] = ['like', '%' . $name . '%'];
}
$total = Db::name($this->table)
->where($where)
->count();
$list = Db::name($this->table)
->where($where)
->where(['deletetime' => 0])
->order('sort desc,id desc')
->page($page, $page_limit)
->select();
foreach ($list as &$item) {
$item['type_str'] = Db::name($this->table_type)->where('id', $item['type_id'])->value('type_name');
$item['createtime'] = date('Y-m-d H:i:s', $item['createtime']);
$item['status_str'] = $item['status'] == 1 ? '显示' : '隐藏';
}
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $total,
'list' => $list
];
return V(1,"成功", $return_data);
}
//添加房间表情
function add_emoji(){
$pid = input('pid', 0, 'intval');
$name = input('name', '', 'trim');
$img = input('image', '', 'trim');
$animate_image = input('animate_image', '', 'trim');
$sort = input('sort', 0, 'intval');
$type_id = input('type_id', 0);
$status = input('status', 1, 'intval');
if (!$name) {
return V(0, '请输入表情名称');
}
if (!$img) {
return V(0, '请上传表情图片');
}
if (!$type_id) {
return V(0, '请选择表情类型');
}
$data = [
'pid' => $pid,
'name' => $name,
'image' => $img,
'animate_image' => $animate_image,
'sort' => $sort,
'type_id' => $type_id,
'status' => $status,
'createtime' => time(),
];
$res = Db::name($this->table)->insert($data);
if ($res) {
return V(1, '添加成功');
}
}
//房间表情修改
function edit_emoji(){
$id = input('id', 0, 'intval');
$name = input('name', '', 'trim');
$img = input('image', '', 'trim');
$animate_image = input('animate_image', '', 'trim');
$sort = input('sort', 0, 'intval');
$type_id = input('type_id', 0);
$status = input('status', 1, 'intval');
if (!$id) {
return V(0, '请选择要修改的表情');
}
if($name){
$data['name'] = $name;
}
if($img){
$data['image'] = $img;
}
if($animate_image){
$data['animate_image'] = $animate_image;
}
if($sort){
$data['sort'] = $sort;
}
if($type_id){
$data['type_id'] = $type_id;
}
$data['status'] = $status;
$res = Db::name($this->table)->where('id',$id)->update($data);
if ($res) {
return V(1, '修改成功');
}
}
//房间表情删除
function del_emoji(){
$id = input('id', 0, 'intval');
if (!$id) {
return V(0, '请选择要删除的表情');
}
$res = Db::name($this->table)->where('id',$id)->update(
['deletetime' => time()]
);
if ($res) {
return V(1, '删除成功');
}
}
//表情详情
function emoji_detail(){
$id = input('id', 0, 'intval');
if (!$id) {
return V(0, '请选择要查看的表情');
}
$detail = Db::name($this->table)->where('id',$id)->find();
if (!$detail) {
return V(0, '表情不存在');
}
return V(1,"成功", $detail);
}
//表情类型列表
function emoji_type_list(){
$emoji_type = Db::name($this->table_type)
->field('id,type_name')
->where(['deletetime'=>0,'status'=>1])
->order('sort desc,id desc')
->select();
return V(1,"成功", $emoji_type);
}
//表情类型添加
function add_emoji_type(){
$type_name = input('type_name', '', 'trim');
if (!$type_name) {
return V(0, '请输入表情类型名称');
}
$data = [
'type_name' => $type_name,
'sort' => 0,
'status' => 1,
'createtime' => time(),
];
$res = Db::name($this->table_type)->insert($data);
if ($res) {
return V(1, '添加成功');
}
}
//表情类型修改
function edit_emoji_type(){
$id = input('id', 0, 'intval');
$type_name = input('type_name', '', 'trim');
$sort = input('sort', 0, 'intval');
$status = input('status', 1, 'intval');
if (!$id) {
return V(0, '请选择要修改的表情类型');
}
if($type_name){
$data['type_name'] = $type_name;
}
if($sort){
$data['sort'] = $sort;
}
if($status){
$data['status'] = $status;
}
$res = Db::name($this->table_type)->where('id',$id)->update($data);
if ($res) {
return V(1, '修改成功');
}
return V(0, '修改失败');
}
//表情类型删除
function del_emoji_type(){
$id = input('id', 0, 'intval');
if (!$id) {
return V(0, '请选择要删除的表情类型');
}
$res = Db::name($this->table_type)->where('id',$id)->update(
['deletetime' => time()]
);
if ($res) {
return V(1, '删除成功');
}
return V(0, '删除失败');
}
}

View File

@@ -0,0 +1,371 @@
<?php
namespace app\adminapi\controller;
use think\Db;
class RoomHourRanking
{
public static function withdraw_status (){
return [
// [25 => '全时段'],
[0 => '00:00-01:00'],
[1 => '01:00-02:00'],
[2 => '02:00-03:00'],
[3 => '03:00-04:00'],
[4 => '04:00-05:00'],
[5 => '05:00-06:00'],
[6 => '06:00-07:00'],
[7 => '07:00-08:00'],
[8 => '08:00-09:00'],
[9 => '09:00-10:00'],
[10 => '10:00-11:00'],
[11 => '11:00-12:00'],
[12 => '12:00-13:00'],
[13 => '13:00-14:00'],
[14 => '14:00-15:00'],
[15 => '15:00-16:00'],
[16 => '16:00-17:00'],
[17 => '17:00-18:00'],
[18 => '18:00-19:00'],
[19 => '19:00-20:00'],
[20 => '20:00-21:00'],
[21 => '21:00-22:00'],
[22 => '22:00-23:00'],
[23 => '23:00-00:00'],
];
}
//房间小时榜列表
public function room_hour_ranking()
{
$page = input('page', 1);
$page_limit = input('page_limit', 20);
$search_ranking = input('search_ranking', '');
$search_stime = input('search_stime', '');
$search_etime = input('search_etime', '');
$where = [];
if ($search_ranking) {
$where[] = ['room_name', 'like', '%' . $search_ranking . '%'];
}
if ($search_stime) {
$where[] = ['stime', '>=', $search_stime];
}
if ($search_etime) {
$where[] = ['etime', '<=', $search_etime];
}
$count = db::name('vs_hour_ranking')->where($where)->count();
$list = db::name('vs_hour_ranking')->where($where)->page($page, $page_limit)->order('id desc')->select();
if($list){
foreach ($list as &$v){
$v['room_name'] = db::name('vs_room')->where(['id'=>$v['room_id']])->value('room_name');
$v['user_id'] = db::name('vs_room')->where(['id'=>$v['room_id']])->value('user_id');
if($v['user_id']){
$v['nickname'] = db::name('user')->where(['id'=>$v['user_id']])->value('nickname');
}
$v['stime'] = date('Y-m-d H:i', $v['stime']);
$v['etime'] = date('Y-m-d H:i', $v['etime']);
}
}
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $list
];
return V(1,"成功", $return_data);
}
//房间小时榜配置
public function room_hour_ranking_config()
{
$list = db::name('vs_hour_ranking_config')->where('id', '1')->find();
if($list){
//open_time 字段转化为2025-09-30 07:00 的格式
$list['open_time'] = $list['open_time'] ? date('Y-m-d H:i', $list['open_time']) : 0;
}
return V(1,"成功", $list);
}
//房间小时榜配置修改
public function room_hour_ranking_config_edit()
{
$id = input('id');
$data['is_open_red_pack'] = 0;//暂时不开启
$data['is_public_server'] = input('is_public_server');
$data['broadcast_times'] = input('broadcast_times');
$data['is_open_xlh'] = input('is_open_xlh');
$data['min_price'] = input('min_price');
$open_time = input('open_time');
$data['open_time'] = $open_time ? strtotime($open_time) : 0;
$data['createtime'] = time();
$data['updatetime'] = time();
$timeSlots = json_decode(input('timeJson'), true);
$timePeriods = $this->withdraw_status();
// 构建正确的时间映射关系
$timeMap = [];
foreach($timePeriods as $period) {
foreach($period as $key => $value) {
$timeMap[$key] = $value;
}
}
//$timeMap 里面 键值互换
$timeMap = array_flip($timeMap);
//开启事务
db::startTrans();
if($timeSlots){
$insertData = [];
foreach ($timeSlots as $timeSlot) {
// $timeRange = ;
$timeRange = $timeMap[$timeSlot['time']] ?? '99';
foreach ($timeSlot['reward'] as $rewardItem) {
$hasReward = !empty($rewardItem['content']);
if ($hasReward) {
// 有奖励内容:为每个奖励内容创建一条记录
foreach ($rewardItem['content'] as $rewardContent) {
if($rewardContent['type'] == 0){
$coin = $rewardContent['value'];
$gift_id = 0;
$gift_name = '';
}else{
$coin = 0;
$gift_id = $rewardContent['value'];
$gift_name = $rewardContent['name'];
}
$insertData[] = [
'time_id' => $timeRange,
'ranking' => $rewardItem['index'],
// 'rank_name' => $rewardItem['name'],
'gift_type' => $rewardContent['type'],
'gift_id' => $gift_id,
'coin' => $coin,
'name' => $gift_name,
'createtime' => time()
];
}
} else {
// 无奖励内容:插入一条空奖励记录
$insertData[] = [
'time_id' => $timeRange,
'ranking' => $rewardItem['index'],
// 'rank_name' => $rewardItem['name'],
'gift_type' => 0,
'gift_id' => 0,
'coin' => 0,
'name' => '',
'createtime' => time(),
];
}
}
}
// 批量插入
if (!empty($insertData)) {
$del = db::name('vs_hour_ranking_gift_config')->where('id','>',0)->delete();
$ins = db::name('vs_hour_ranking_gift_config')->insertAll($insertData);
}else{
$ins = false;
$del = false;
}
}else{
$del = true;
$ins = true;
}
// $res = db::name('vs_hour_ranking_config')->where('id', $id)->update($data);
$res = db::name('vs_hour_ranking_config')->where('id', $id)->update($data);
// if ($del && $ins && $res) {
if ($ins) {
db::commit();
return V(1, "成功");
} else {
db::rollback();
return V(0, "失败");
}
}
//时间段对应关系
public function time_period_correspondence()
{
$list = $this->withdraw_status();
$timePeriods = $this->withdraw_status();
$timeMap = [];
foreach($timePeriods as $period) {
foreach($period as $key => $value) {
$timeMap[$key] = $value;
}
}
return V(1,"成功", $timeMap);
}
//添加核心配置
public function add_core_config()
{
$data['is_public_server'] = input('is_public_server');
$data['createtime'] = time();
$data['updatetime'] = time();
$res = db::name('vs_hour_ranking_config')->insert($data);
}
//核心配置列表
public function core_config_list()
{
$timePeriods = $this->withdraw_status();
// 构建正确的时间映射关系
$timeMap = [];
foreach($timePeriods as $period) {
foreach($period as $key => $value) {
$timeMap[$key] = $value;
}
}
// 先按时间段和排名索引分组查询
$timeRanges = db::name('vs_hour_ranking_gift_config')->distinct(true)
->order('time_id')
->column('time_id');
$result = [];
foreach ($timeRanges as $timeRange) {
// 查询该时间段的所有数据
$rewards = db::name('vs_hour_ranking_gift_config')->where('time_id', $timeRange)
->field('ranking, gift_type, gift_id,coin,name')
->order('ranking')
->select();
$rewardMap = [];
foreach ($rewards as $reward) {
$rankIndex = $reward['ranking'];
if (!isset($rewardMap[$rankIndex])) {
$rewardMap[$rankIndex] = [
'index' => $rankIndex,
// 'name' => $reward['rank_name'],
'content' => []
];
}
// 添加奖励内容到content数组
if ($reward['gift_id'] != 0 || $reward['coin'] != 0) {
if($reward['gift_id'] != 0){
$rewardMap[$rankIndex]['content'][] = [
'type' => $reward['gift_type'],
'value' => $reward['gift_id'],
// 'coin' => $reward['coin'],
'name' => $reward['name'],
];
}
if($reward['coin'] != 0){
$rewardMap[$rankIndex]['content'][] = [
'type' => $reward['gift_type'],
'value' => $reward['coin'],
'name' => $reward['name'],
];
}
}
}
// 按index排序
ksort($rewardMap);
$result[] = [
'time' => $timeMap[$timeRange],
'reward' => array_values($rewardMap)
];
}
return V(1, "成功", $result);
}
// public function core_config_lists()
// {
// $list = db::name('vs_hour_ranking_gift_config')->select();
// $data = [];
//
// // 按 time_id 和 ranking 重组数据
// $reorganizedData = [];
// $timePeriods = $this->withdraw_status();
//
// // 构建正确的时间映射关系
// $timeMap = [];
// foreach($timePeriods as $period) {
// foreach($period as $key => $value) {
// $timeMap[$key] = $value;
// }
// }
//
// foreach ($list as $item) {
//// $timeId = $item['time_id'];
// $timeId = $timeMap[$item['time_id']] ?? '未知时间段';
// $ranking = $item['ranking'];
//
// $gift_name = '';
// if (!isset($reorganizedData[$timeId])) {
// $reorganizedData[$timeId] = [];
// }
// if (!isset($reorganizedData[$timeId][$ranking])) {
// $reorganizedData[$timeId][$ranking] = [];
// }
// if($item['gift_id']){
// if($item['gift_type'] == 2){
// $gift_name = db::name('vs_gift')->where(['gid'=>$item['gift_id']])->value('gift_name');
// }
// if($item['gift_type'] == 3 || $item['gift_type'] == 4){
// $gift_name = db::name('vs_decorate')->where(['did'=>$item['gift_id']])->value('title');
// }
//
// }else{
// $gift_name = '';
// }
// $reorganizedData[$timeId][$ranking][] = [
// 'gift_type' => $item['gift_type'],
// 'gift_id' => $item['gift_id'],
// 'gift_name' => $gift_name,
// 'coin' => $item['coin']
// ];
// }
//
// // 输出重组后的数据
// print_r($reorganizedData);
// return V(1, "成功", $data);
// }
}

View File

@@ -0,0 +1,256 @@
<?php
namespace app\adminapi\controller;
use app\common\controller\adminApi;
use think\Db;
use think\Session;
class SingerSong extends adminApi
{
//歌手认证列表
public function singerList()
{
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$start_time = input('start_time', '');
$end_time = input('end_time', '');
$search = input('search', '');
$status = input('status', '');
$where=[];
$wheres = [];
//搜索信息有值且是纯数字
if(is_numeric($search)){
$where['u.user_code'] = $search;
$user_id = db::name('user')->where('user_code', $search)->value('id');
$wheres['user_id'] = $user_id;
}
if($search && !is_numeric($search)){
$where['u.nickname'] = ['like', '%'.$search.'%'];
$user_id = db::name('user')->where('nickname', $search)->value('id');
$wheres['user_id'] = $user_id;
}
if($start_time && $end_time){
$where['ss.createtime'] = ['between', [strtotime($start_time), strtotime($end_time)]];
$wheres['createtime'] = ['between', [strtotime($start_time), strtotime($end_time)]];
}
if($status){
$where['ss.status'] = $status;
$wheres['status'] = $status;
}
$count = db::name('vs_singer')->where($wheres)->count();
$list = db::name('vs_singer')
->alias('ss')
->join('user u', 'ss.user_id=u.id', 'left')
->field('ss.*,u.nickname,u.avatar,u.user_code,u.mobile,u.sex')
->where($where)
->order('ss.status asc ,ss.id desc')
->page($page, $page_limit)
->select();
if($list){
foreach ($list as &$v){
$v['createtime'] = date('Y-m-d H:i:s', $v['createtime']);
}
}
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $list
];
return V(1,"成功", $return_data);
}
//歌手认证编辑
public function singerEdit()
{
$id = input('id', '');
if(empty($id)){
return V(0, '参数错误');
}
$data = [
'status' => input('status', ''),
'remark' => input('remark', ''),
];
$res = db::name('vs_singer')->where('id', $id)->update($data);
if($res){
//推送消息-歌手认真成功
//发系统信息
if($data['status'] ==1){
$deal_content = '审核通过';
}elseif($data['status'] ==2){
$deal_content = '审核拒绝';
}
if(!empty($data['remark'])){
$deal_content .= ',原因:'.$data['remark'];
}
db::name('system_message')->insert([
'title' => '歌手认证审核结果',
'content' => '您的歌手认证申请 '.$deal_content,
'type' => 1,
'admin_id' => Session::get('admin_id'),
'receiving_id' => db::name('vs_singer')->where('id', $id)->value('user_id'),
'createtime' => time(),
]);
return V(1, '操作成功');
}else{
return V(0, '操作失败');
}
}
//认证歌手歌曲列表
public function singerSongList()
{
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$user_id = input('user_id', '');
$where=[];
if($user_id){
$where['user_id'] = $user_id;
}else{
return V(0, '请填写用户ID');
}
$count = db::name('vs_singer_song')->where($where)->count();
$list = db::name('vs_singer_song')
->alias('o')
->join('user u', 'o.user_id=u.id', 'left')
->join('vs_gift g', 'o.gift_id=g.gid', 'left')
->field('o.*,u.nickname,u.user_code,g.gift_name,g.gift_price')
->where($where)
->page($page, $page_limit)
->select();
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $list
];
return V(1,"成功", $return_data);
}
//歌手等级列表
public function singerLevelList()
{
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$where = ['deletetime' => 0];
$count = db::name('vs_singer_level')->where($where)->count();
$list = db::name('vs_singer_level')
->where($where)
->page($page, $page_limit)
->select();
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $list
];
return V(1,"成功", $return_data);
}
//编辑歌手等级
public function singerLevelEdit()
{
$id = input('id', '');
//没有 id就是新增
if(empty($id)){
$data = [
'level' => input('level', ''),
'name' => input('name', ''),
'image' => input('image', ''),
'change_value' => input('change_value', ''),
'rights_icon' => input('rights_icon', ''),
'bg_image' => input('bg_image', ''),
'color' => input('color', ''),
'createtime' => time(),
];
$res = db::name('vs_singer_level')->insert($data);
if($res){
return V(1, '操作成功');
}else{
return V(0, '操作失败');
}
}else{
$data = [
'level' => input('level', ''),
'name' => input('name', ''),
'image' => input('image', ''),
'change_value' => input('change_value', ''),
'rights_icon' => input('rights_icon', ''),
'bg_image' => input('bg_image', ''),
'color' => input('color', ''),
];
$res = db::name('vs_singer_level')->where('id', $id)->update($data);
if($res){
return V(1, '操作成功');
}else{
return V(0, '操作失败');
}
}
}
//歌手等级删除
public function singerLevelDel()
{
$id = input('id', '');
$data['deletetime'] = time();
$res = db::name('vs_singer_level')->where('id', $id)->update($data);
if($res){
return V(1, '操作成功');
}else{
return V(0, '操作失败');
}
}
//点歌信息列表
public function songList()
{
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$type = input('type', 3);//1-今天2-本周3-本月4-昨天
$room_id = input('room_id', '');
$where=[];
if($room_id){
$where['room_id'] = $room_id;
}else{
return V(0, '请填写房间ID');
}
if($type==1){
$where['o.createtime'] = ['between', [strtotime(date('Y-m-d')), strtotime(date('Y-m-d', strtotime('+1 day')))]];
}elseif($type==2){
$where['o.createtime'] = ['between', [strtotime(date('Y-m-d', strtotime('-7 day'))), strtotime(date('Y-m-d'))]];
}elseif($type==3){
$where['o.createtime'] = ['between', [strtotime(date('Y-m-01')), strtotime(date('Y-m-t', strtotime(date('Y-m-01'))))]];
}elseif($type==4){
$where['o.createtime'] = ['between', [strtotime(date('Y-m-d', strtotime('-1 day'))), strtotime(date('Y-m-d'))]];
}
$count = db::name('vs_song_log')->alias('o')->where($where)->count();
$list = db::name('vs_song_log')
->alias('o')
->join('user u', 'o.user_id=u.id', 'left')
->join('vs_singer_song r', 'o.singer_song_id=r.id', 'left')
->join('user uu', 'r.user_id=u.id', 'left')
->join('vs_gift g', 'r.gift_id=g.gid', 'left')
->field('o.*,u.nickname boss_nickname,u.user_code boss_user_code,r.song_name,r.gift_num,uu.nickname singer_nickname,uu.user_code singer_user_code,g.gift_name,g.gift_price')
->where($where)
->page($page, $page_limit)
->select();
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $list
];
return V(1,"成功", $return_data);
}
}

View File

@@ -3,6 +3,7 @@
namespace app\adminapi\controller;
use app\common\controller\adminApi;
use app\common\library\GiftTableManager;
use think\Db;
use Yzh\YunPay;
@@ -11,6 +12,7 @@ class Statistical extends adminApi
//初始化
public function _initialize()
{
set_time_limit(0);
parent::_initialize();
}
@@ -37,10 +39,10 @@ class Statistical extends adminApi
$where['createtime'] = ['>=', strtotime($begin_time)];
}
if($end_time !== ''){
$where['createtime'] = ['<=', strtotime($end_time.' 23:59:59')];
$where['createtime'] = ['<=', strtotime($end_time)];
}
if(!empty($begin_time) && !empty($end_time)){
$where['createtime'] = ['between',[strtotime($begin_time),strtotime($end_time.' 23:59:59')]];
$where['createtime'] = ['between',[strtotime($begin_time),strtotime($end_time)]];
}
$where['pay_status'] = 2;//1待支付,2已支付
@@ -85,6 +87,12 @@ class Statistical extends adminApi
$search_uid = input('search_uid', '');
$begin_time = input('begin_time', '');
$end_time = input('end_time', '');
$firstDay = date('Y-m-01');
$lastDay = date('Y-m-t 23:59:59');
$begin_time = empty($begin_time) ? $firstDay : $begin_time;
$end_time = empty($end_time) ? $lastDay : $end_time;
$where=[];
$group = 'user_id';
if($type == 2){
@@ -112,16 +120,25 @@ class Statistical extends adminApi
$where['createtime'] = ['>=', strtotime($begin_time)];
}
if($end_time !== ''){
$where['createtime'] = ['<=', strtotime($end_time.' 23:59:59')];
$where['createtime'] = ['<=', strtotime($end_time)];
}
if(!empty($begin_time) && !empty($end_time)){
$where['createtime'] = ['between',[strtotime($begin_time),strtotime($end_time.' 23:59:59')]];
$where['createtime'] = ['between',[strtotime($begin_time),strtotime($end_time)]];
}
$count = db::name('vs_give_gift')
$tables = GiftTableManager::getTablesByTimeRange(
strtotime($begin_time),
strtotime($end_time)
);
if(empty($tables)){
$tables[0] = "fa_vs_give_gift";
}
$table_name = substr($tables[0], 3);//截取可查询的表名
$count = db::name($table_name)
->where($where)
->group($group)
->count();
$lists = db::name('vs_give_gift')
$lists = db::name($table_name)
->field('id,createtime,user_id,gift_user,sum(total_price) as total_price,sum(number) as number')
->where($where)
->group($group)
@@ -177,21 +194,21 @@ class Statistical extends adminApi
$where['createtime'] = ['>=', strtotime($begin_time)];
}
if($end_time !== ''){
$where['createtime'] = ['<=', strtotime($end_time.' 23:59:59')];
$where['createtime'] = ['<=', strtotime($end_time)];
}
if(!empty($begin_time) && !empty($end_time)){
$where['createtime'] = ['between',[strtotime($begin_time),strtotime($end_time.' 23:59:59')]];
$where['createtime'] = ['between',[strtotime($begin_time),strtotime($end_time)]];
}
// 1.系统调节 2.充值 3.提现 4.金币转增(送出) 5.每日任务奖励 6.充值返利 7.购买装扮
// 8.礼盒奖励 9.房间补贴 10.购买礼物 11.收礼增加收益 12.工会补贴 13.转赠金币(接收) 14.收益兑换
// 15.首充 16.天降好礼充值 17.退出工会扣款 18.房主收益 19.主持人收益 20.抢头条 21.公会长收益
$where['change_type'] = ['in', [4,7,10,17,20]];
$count = db::name('vs_user_money_log')
$where['change_type'] = ['in', [4,7,10,17,20,24,25,32,42,50,56,59]];
$count = db::name('user_coin_log')
->where($where)
->group('user_id')
->count();
$lists = db::name('vs_user_money_log')
->field('log_id,createtime,user_id,sum(change_value) as change_value')
$lists = db::name('user_coin_log')
->field('id,createtime,user_id,sum(coin) as change_value')
->where($where)
->group('user_id')
->order('change_value desc')
@@ -209,7 +226,7 @@ class Statistical extends adminApi
'count' => $count,
'lists' => $lists,
'total' =>[
'total_price' => db::name('vs_user_money_log')->where($where)->sum('change_value')
'total_price' => db::name('user_coin_log')->where($where)->sum('coin')
]
];
return V(1,"成功", $return_data);
@@ -239,18 +256,26 @@ class Statistical extends adminApi
$where['createtime'] = ['>=', strtotime($begin_time)];
}
if($end_time !== ''){
$where['createtime'] = ['<=', strtotime($end_time.' 23:59:59')];
$where['createtime'] = ['<=', strtotime($end_time)];
}
if(!empty($begin_time) && !empty($end_time)){
$where['createtime'] = ['between',[strtotime($begin_time),strtotime($end_time.' 23:59:59')]];
$where['createtime'] = ['between',[strtotime($begin_time),strtotime($end_time)]];
}
$tables = GiftTableManager::getTablesByTimeRange(
strtotime($begin_time),
strtotime($end_time)
);
if(empty($tables)){
$tables[0] = "fa_vs_give_gift";
}
$table_name = substr($tables[0], 3);//截取可查询的表名
//不为空
$where['from'] = 2;
$count = db::name('vs_give_gift')
$count = db::name($table_name)
->where($where)
->group('from_id')
->count();
$lists = db::name('vs_give_gift')
$lists = db::name($table_name)
->field('id,createtime,user_id,gift_user,sum(total_price) as total_price,sum(number) as number,from_id')
->where($where)
->group('from_id')
@@ -259,21 +284,52 @@ class Statistical extends adminApi
->select();
foreach ($lists as $key => $value) {
$room = db::name('vs_room')->where('id', $value['from_id'])->find();
if($room){
$lists[$key]['room_name'] = $room['room_name'].'-'.$room['room_number'];
$lists[$key]['room_number'] = $room['room_number'];
}else{
$lists[$key]['room_name'] = "--";
$lists[$key]['room_number'] = "--";
}
$lists[$key]['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
$lists[$key]['room_name'] = $room['room_name'].'-'.$room['room_number'];
$lists[$key]['room_number'] = $room['room_number'];
$lists[$key]['room_cover'] = db::name('vs_room')->where('id', $value['from_id'])->value('room_cover');
$label = db::name('vs_room')->where('id', $value['from_id'])->value('label_id');
$lists[$key]['label'] = db::name('vs_room_label')->where('id', $label)->value('label_name');
//幸运币统计
$where_lucky = [];
if($begin_time !== ''){
$where_lucky['createtime'] = ['>=', strtotime($begin_time)];
}
if($end_time !== ''){
$where_lucky['createtime'] = ['<=', strtotime($end_time)];
}
if(!empty($begin_time) && !empty($end_time)){
$where_lucky['createtime'] = ['between',[strtotime($begin_time),strtotime($end_time)]];
}
$lists[$key]['lucky_coin'] = db::name('vs_room_luck_value')->where('room_id',$value['from_id'])->where($where_lucky)->sum('luck_value');
}
$where_lucky = [];
if($search_room_id !== '' || $room_name !== ''){
$where_lucky['room_id'] = $room_id;
}
if($begin_time !== ''){
$where_lucky['createtime'] = ['>=', strtotime($begin_time)];
}
if($end_time !== ''){
$where_lucky['createtime'] = ['<=', strtotime($end_time)];
}
if(!empty($begin_time) && !empty($end_time)){
$where_lucky['createtime'] = ['between',[strtotime($begin_time),strtotime($end_time)]];
}
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $lists,
'total' =>[
'total_price' => db::name('vs_give_gift')->where($where)->sum('total_price')
'total_price' => db::name($table_name)->where($where)->sum('total_price'),
'total_lucky_coin' => db::name('vs_room_luck_value')->where($where_lucky)->sum('luck_value'),
]
];
return V(1,"成功", $return_data);
@@ -302,10 +358,10 @@ class Statistical extends adminApi
$where['createtime'] = ['>=', strtotime($pay_stime)];
}
if($pay_etime !== ''){
$where['createtime'] = ['<=', strtotime($pay_etime.' 23:59:59')];
$where['createtime'] = ['<=', strtotime($pay_etime)];
}
if(!empty($pay_stime) && !empty($pay_etime)){
$where['createtime'] = ['between',[strtotime($pay_stime),strtotime($pay_etime.' 23:59:59')]];
$where['createtime'] = ['between',[strtotime($pay_stime),strtotime($pay_etime)]];
}
if($pay_status !== ''){
$where['pay_status'] = $pay_status;
@@ -325,7 +381,7 @@ class Statistical extends adminApi
}
$count = db::name('vs_user_recharge')->where($where)->count();
$lists = db::name('vs_user_recharge')->where($where)->page($page, $page_limit)->select();
$lists = db::name('vs_user_recharge')->where($where)->order('rid desc')->page($page, $page_limit)->select();
foreach ($lists as $key => $value) {
$lists[$key]['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
$lists[$key]['user_name'] = db::name('user')->where('id', $value['user_id'])->value('nickname').'-'.
@@ -346,19 +402,21 @@ class Statistical extends adminApi
];
//总收入
$wherew=[];
$return_data['total_money'] = db::name('vs_user_recharge')->sum('money');
unset($where['pay_status']);
unset($where['pay_type']);
$return_data['total_money'] = db::name('vs_user_recharge')->where($where)->sum('money');
//未支付
$return_data['unpaid_money'] = db::name('vs_user_recharge')->where('pay_status',1)->sum('money');
$return_data['unpaid_money'] = db::name('vs_user_recharge')->where($where)->where('pay_status',1)->sum('money');
//已支付
$return_data['paid_money'] = db::name('vs_user_recharge')->where('pay_status',2)->sum('money');
$return_data['paid_money'] = db::name('vs_user_recharge')->where($where)->where('pay_status',2)->sum('money');
//微信支付
$wherew['pay_type'] = ['in', [1,4]];
$return_data['wx_money'] = db::name('vs_user_recharge')->where('pay_status',2)->where($wherew)->sum('money');
$return_data['wx_money'] = db::name('vs_user_recharge')->where($where)->where('pay_status',2)->where($wherew)->sum('money');
//支付宝支付
$wherez['pay_type'] = ['in', [2,3]];
$return_data['ali_money'] = db::name('vs_user_recharge')->where('pay_status',2)->where($wherez)->sum('money');
$return_data['ali_money'] = db::name('vs_user_recharge')->where($where)->where('pay_status',2)->where($wherez)->sum('money');
//金币数量
$return_data['gold_num'] = db::name('vs_user_recharge')->where('pay_status',2)->sum('coin');
$return_data['gold_num'] = db::name('vs_user_recharge')->where($where)->where('pay_status',2)->sum('coin');
return V(1,"成功", $return_data);
}
@@ -383,15 +441,16 @@ class Statistical extends adminApi
$where['a.createtime'] = ['>=', strtotime($start_time)];
}
if($end_time !== ''){
$where['a.createtime'] = ['<=', strtotime($end_time.' 23:59:59')];
$where['a.createtime'] = ['<=', strtotime($end_time)];
}
if($start_time !== '' && $end_time !== ''){
$where['a.createtime'] = ['between', [strtotime($start_time), strtotime($end_time.' 23:59:59')]];
$where['a.createtime'] = ['between', [strtotime($start_time), strtotime($end_time)]];
}
$count = db::name('user_exchange')->where($where)->alias('a')->join('user b', 'a.user_id = b.id')->count();
$lists = db::name('user_exchange')->where($where)->alias('a')->join('user b', 'a.user_id = b.id')
->field('a.*,b.nickname,b.user_code')
->order('a.id desc')
->page($page, $page_limit)->select();
foreach ($lists as $key => $value) {
$lists[$key]['user_name'] = $value['nickname'].'-'.$value['user_code'];
@@ -428,10 +487,10 @@ class Statistical extends adminApi
$where['a.createtime'] = ['>=', strtotime($start_time)];
}
if($end_time !== ''){
$where['a.createtime'] = ['<=', strtotime($end_time.' 23:59:59')];
$where['a.createtime'] = ['<=', strtotime($end_time)];
}
if($start_time !== '' && $end_time !== ''){
$where['a.createtime'] = ['between', [strtotime($start_time), strtotime($end_time.' 23:59:59')]];
$where['a.createtime'] = ['between', [strtotime($start_time), strtotime($end_time)]];
}
$count = db::name('vs_admin_recharge_log')
->alias('a')->join('user b', 'a.user_id = b.id')
@@ -473,4 +532,304 @@ class Statistical extends adminApi
];
return V(1,"成功", $return_data);
}
//任务统计
public function task_statistics(){
$page = input('page', 1);
$page_limit = input('page_limit', 10);
$search_id = input('search_uid', '');
$search_name = input('search_name', '');
$search_task_id = input('search_task_id', '');
$search_task_name = input('search_task_name', '');
$begin_time = input('begin_time', '');
$end_time = input('end_time', '');
$where =[];
$search_user_id = 0;
$search_gift_bag_id = 0;
if($search_id){
$where['b.user_code'] = $search_id;
}
if($search_name){
$where['b.nickname'] = ['like', '%'.$search_name.'%'];
}
if($search_task_id){
$where['a.task_id'] = $search_task_id;
}
if($search_task_name){
$where['c.task_name'] = ['like', '%'.$search_task_name.'%'];
}
if(!empty($begin_time) && !empty($end_time)){
$where['a.collection_time'] = ['between', [strtotime($begin_time), strtotime($end_time)]];
}else{
if(!empty($begin_time)){
$where['a.collection_time'] = ['>=', strtotime($begin_time)];
}elseif(!empty($end_time)){
$where['a.collection_time'] = ['<=', strtotime($end_time)];
}
}
if(!empty($begin_time) && !empty($end_time)){
$where['a.createtime'] = ['between', [strtotime($begin_time), strtotime($end_time)]];
}else{
if(!empty($begin_time)){
$where['a.createtime'] = ['>=', strtotime($begin_time)];
}elseif(!empty($end_time)){
$where['a.createtime'] = ['<=', strtotime($end_time)];
}
}
// 添加条件:只统计已领取的任务奖励
// $where['a.is_claimed'] = 1;
$count = db::name('vs_tasks_user_daily')
->alias('a')
->join('user b', 'a.user_id = b.id')
->join('vs_tasks c', 'a.task_id = c.id')
->where($where)
->count();
$lists = db::name('vs_tasks_user_daily')
->alias('a')
->join('user b', 'a.user_id = b.id')
->join('vs_tasks c', 'a.task_id = c.id')
->where($where)
->field('a.*,c.task_name,b.nickname,b.user_code,c.tasks_bag_id')
->order('a.id desc')
->page($page, $page_limit)
->select();
// 收集所有需要的用户ID和任务包ID以批量获取数据
$user_ids = array_column($lists, 'user_id');
$bag_ids = array_unique(array_filter(array_column($lists, 'tasks_bag_id')));
// 批量获取用户装饰详情
$user_decorates = [];
if (!empty($user_ids)) {
foreach ($user_ids as $user_id) {
$user_decorates[$user_id] = model('api/Decorate')->user_decorate_detail($user_id, 6);
}
}
// 批量获取奖励包详情
$bag_details = [];
if (!empty($bag_ids)) {
$details = db::name('vs_gift_bag_detail')
->where('gift_bag_id', 'in', $bag_ids)
->select();
foreach ($details as $detail) {
$bag_details[$detail['gift_bag_id']][] = $detail;
}
}
// 获取所有相关礼品的价格信息
$gift_ids = [];
$decorate_ids = [];
foreach ($bag_details as $details) {
foreach ($details as $detail) {
if ($detail['type'] == 2) {
$gift_ids[] = $detail['foreign_id'];
} elseif ($detail['type'] == 3) {
$decorate_ids[] = $detail['foreign_id'];
}
}
}
// 批量获取礼品价格
$gift_prices = [];
if (!empty($gift_ids)) {
$gifts = db::name('vs_gift')
->where('gid', 'in', array_unique($gift_ids))
->column('gift_price', 'gid');
$gift_prices = $gifts;
}
// 批量获取装饰价格
$decorate_prices = [];
if (!empty($decorate_ids)) {
$decorates = db::name('vs_decorate_price')
->where('id', 'in', array_unique($decorate_ids))
->column('price', 'id');
$decorate_prices = $decorates;
}
$data_list = [];
$total_reward_price = 0;
foreach ($lists as $listkey=>$list){
$user_code = isset($user_decorates[$list['user_id']]) ? $user_decorates[$list['user_id']] : '';
$data_list[$listkey]['user_code'] = $user_code;
$data_list[$listkey]['nickname'] = $list['nickname']."-".$user_code;
$data_list[$listkey]['task_name'] = $list['task_name'];
$data_list[$listkey]['createtime'] = date('Y-m-d H:i:s', $list['createtime']);
$data_list[$listkey]['is_completed'] = $list['is_completed'];//是否已完成
$data_list[$listkey]['is_completed_str'] = $list['is_completed']==1 ?"":"";
//领取状态
$data_list[$listkey]['is_claimed'] = $list['is_claimed']; //奖励是否已领取
$data_list[$listkey]['is_claimed_str'] = $list['is_claimed']==1 ?"":"";
//奖品内容
$data_list[$listkey]['reward_str'] = "";
//奖品价值
$data_list[$listkey]['reward_price'] = 0;
$data_list[$listkey]['completion_time'] = date('Y-m-d H:i:s', $list['completion_time']);
$data_list[$listkey]['collection_time'] = date('Y-m-d H:i:s', $list['collection_time']);
// 计算奖励信息
if (isset($bag_details[$list['tasks_bag_id']])) {
if($list['task_id']==1){
$sign_in_info = Db::name('vs_user_tasks_sign_in')->where(['user_id'=>$list['user_id'],'sign_in_date'=>date('Y-m-d', $list['createtime'])])->order('id desc')->find();
if($sign_in_info){
$data_list[$listkey]['reward_str'] = ($bag_details[$list['tasks_bag_id']][$sign_in_info['continuous']-1]['gold']
* $bag_details[$list['tasks_bag_id']][$sign_in_info['continuous']-1]['quantity'])
.$bag_details[$list['tasks_bag_id']][$sign_in_info['continuous']-1]['name'];
$data_list[$listkey]['reward_price'] = $bag_details[$list['tasks_bag_id']][$sign_in_info['continuous']-1]['gold']
* $bag_details[$list['tasks_bag_id']][$sign_in_info['continuous']-1]['quantity'];
}
}else{
$reward_info = $bag_details[$list['tasks_bag_id']];
foreach ($reward_info as $value) {
//价格
$reward_price = 0;
if($value['type'] == 1){
$reward_name = $value['quantity'].$value['name'];
$reward_price = $value['gold'] * $value['quantity'];
}elseif($value['type'] == 2){
$reward_name = $value['name'].'x'.$value['quantity'];
$gift_price = isset($gift_prices[$value['foreign_id']]) ? $gift_prices[$value['foreign_id']] : 0;
$reward_price = $gift_price * $value['quantity'];
}elseif($value['type'] == 3){
$reward_name = $value['name'].'x'.$value['days'].'天';
//$reward_price = isset($decorate_prices[$value['foreign_id']]) ? $decorate_prices[$value['foreign_id']] : 0;
}else{
$reward_name = $value['quantity'].$value['name'];
//$reward_price = $value['gold'] * $value['quantity'];
}
$data_list[$listkey]['reward_str'] .= $reward_name." ";
$data_list[$listkey]['reward_price'] += $reward_price;
}
}
}
}
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'total_reward_price' => 0,//$this->get_claimed_reward_price($begin_time, $end_time,$search_user_id,$search_gift_bag_id),
'lists' => $data_list,
];
return V(1,"成功", $return_data);
}
//每日任务领取金币统计
public function get_claimed_reward_price_show(){
$search_id = input('search_uid', '');
$search_name = input('search_name', '');
$search_task_id = input('search_task_id', '');
$search_task_name = input('search_task_name', '');
$begin_time = input('begin_time', '');
$end_time = input('end_time', '');
$search_user_id = 0;
if($search_id){
$search_user_id= db::name('user')->where('user_code', $search_id)->value('id');
}
if($search_name){
$search_user_id= db::name('user')->where('nickname', $search_name)->value('id');
}
$search_gift_bag_id = 0;
if($search_task_name){
$search_gift_bag_id = db::name('vs_tasks')->where('task_name', $search_task_name)->value('tasks_bag_id');
}
if($search_task_id){
$search_gift_bag_id = db::name('vs_tasks')->where('id', $search_task_id)->value('tasks_bag_id');
}
$total_reward_price = $this->get_claimed_reward_price($begin_time, $end_time,$search_user_id,$search_gift_bag_id);
return V(1,"成功", ['total_reward_price' => $total_reward_price]);
}
//获取已领取任务奖励的总价值
public function get_claimed_reward_price($stime="",$etime="",$search_user_id=0,$search_gift_bag_id=0){
//获取所有已领取的任务奖励礼包
$where = [];
if($search_user_id > 0){
$where['a.user_id'] = $search_user_id;
}
if($search_gift_bag_id > 0){
$where['a.gift_bag_id'] = $search_gift_bag_id;
}
if(!empty($etime) && strtotime($etime)<="1767114849"){//2025-12-31 01:14:09
if(!empty($stime) && !empty($etime)){
$where['a.createtime'] = ['between', [strtotime($stime), strtotime($etime)]];
}else{
if(!empty($stime)){
$where['a.createtime'] = ['>=', strtotime($stime)];
}elseif(!empty($etime)){
$where['a.createtime'] = ['<=', strtotime($etime)];
}
}
$tasks_bag_details = db::name('vs_gift_bag_receive_log')
->alias('a')
->join('vs_gift_bag_detail b', 'a.parent_id=b.id', 'INNER')
->field('a.createtime,b.type,b.foreign_id,b.quantity,b.gold')
->where(['b.type'=>['in', [1,2]]])
->whereBetween('a.gift_bag_id', [18, 51])
->where($where)
->select();
}else{
if(!empty($stime) && strtotime($stime)<="1767114849" && strtotime($etime)>"1767114849"){
$old_tasks_bag_details = db::name('vs_gift_bag_receive_log')
->alias('a')
->join('vs_gift_bag_detail b', 'a.parent_id=b.id', 'INNER')
->field('a.createtime,b.type,b.foreign_id,b.quantity,b.gold')
->where(['b.type'=>['in', [1,2]]])
->whereBetween('a.gift_bag_id', [18, 51])
->whereBetween('a.createtime', [strtotime($stime), 1767114849])
->where($where)
->select();
$new_tasks_bag_details = db::name('vs_gift_bag_receive_tasks_log')
->alias('a')
->join('vs_gift_bag_detail b', 'a.parent_id=b.id', 'INNER')
->field('a.createtime,b.type,b.foreign_id,b.quantity,b.gold')
->where(['b.type'=>['in', [1,2]]])
->whereBetween('a.gift_bag_id', [18, 51])
->whereBetween('a.createtime', [1767114849, strtotime($etime)])
->where($where)
->select();
$tasks_bag_details = array_merge($old_tasks_bag_details, $new_tasks_bag_details);
}else{
if(!empty($stime) && !empty($etime)){
$where['a.createtime'] = ['between', [strtotime($stime), strtotime($etime)]];
}else{
if(!empty($stime)){
$where['a.createtime'] = ['>=', strtotime($stime)];
}elseif(!empty($etime)){
$where['a.createtime'] = ['<=', strtotime($etime)];
}
}
$tasks_bag_details = db::name('vs_gift_bag_receive_tasks_log')
->alias('a')
->join('vs_gift_bag_detail b', 'a.parent_id=b.id', 'INNER')
->field('a.createtime,b.type,b.foreign_id,b.quantity,b.gold')
->where(['b.type'=>['in', [1,2]]])
->whereBetween('a.gift_bag_id', [18, 51])
->where($where)
->select();
}
}
$total_reward_price = 0;
// 批量获取礼物价格以减少数据库查询
$gift_ids = [];
foreach ($tasks_bag_details as $detail) {
if($detail['type'] == 2) {
$gift_ids[] = $detail['foreign_id'];
}
}
$gift_prices = [];
if (!empty($gift_ids)) {
$gifts = db::name('vs_gift')->where('gid', 'in', array_unique($gift_ids))->column('gift_price', 'gid');
$gift_prices = $gifts ?: [];
}
foreach ($tasks_bag_details as $detail){
if($detail['type'] == 1){
$total_reward_price += $detail['gold'] * $detail['quantity'];
}else{
$gift_price = isset($gift_prices[$detail['foreign_id']]) ? $gift_prices[$detail['foreign_id']] : 0;
$total_reward_price += $gift_price * $detail['quantity'];
}
}
return $total_reward_price;
}
}

View File

@@ -4,6 +4,7 @@ namespace app\adminapi\controller;
use app\admin\model\AdminLog;
use app\common\controller\adminApi;
use think\Cache;
use think\Config;
use think\Db;
use think\Hook;
@@ -33,6 +34,12 @@ class SysSet extends adminApi
'8' => '房间配置',
'9' => '弹窗内容设置',
'10' => '邀请奖励',
'11' => '二级密码',
];
public $noAdminConfigType = [
'1' => '基础设置',
'4' => '提现设置',
'8' => '房间配置',
];
public function _initialize()
@@ -44,14 +51,18 @@ class SysSet extends adminApi
* 类型列表
*/
public function type_list(){
$configType = $this->configType;
if($this->auth->isSuperAdmin()){
$configType = $this->configType;
}else{
$configType = $this->noAdminConfigType;
}
$list = [];
$i=0;
foreach ($configType as $k=>$v){
$list[$i]['id'] = $k;
$list[$i]['name'] = $v;
$i++;
}
foreach ($configType as $k=>$v){
$list[$i]['id'] = $k;
$list[$i]['name'] = $v;
$i++;
}
return V(1,"成功", $list);
}
@@ -85,9 +96,25 @@ class SysSet extends adminApi
$data = [
'key_value'=>$v,
];
if($k == 'is_maintenance' || $k == 'inside_uid'){
Cache::rm($k);
}
db::name($this->table)->where(['key_title'=>$k])->update($data);
}
return V(1,"成功");
}
/**
* 二级密码验证
*/
public function check_second_pwd()
{
$secondary_password = input('password', '');
$check_pass = model('adminapi/admin')->check_secondary_password($secondary_password);
if ($check_pass['code'] == 1) {
return V(1, "验证成功");
} else {
return V(0, $check_pass['msg']);
}
}
}

View File

@@ -35,6 +35,9 @@ class SystemMessage extends adminApi
$lists[$key]['createtime'] = date('Y-m-d H:i:s', $value['createtime']);
$lists[$key]['updatetime'] = date('Y-m-d H:i:s', $value['updatetime']);
$lists[$key]['type_name'] = $value['type'] == 1 ? '系统消息' : '官方公告';
if($value['type'] == 5){
$lists[$key]['type_name'] = '公会公告';
}
$lists[$key]['admin_name'] = db::name('admin')->where('id', $value['admin_id'])->value('nickname');
if($lists[$key]['room_id'] > 0){
$lists[$key]['room_id'] = $lists[$key]['room_id'].'-'.db::name('vs_room')->where('id', $value['room_id'])->value('room_name');
@@ -75,7 +78,7 @@ class SystemMessage extends adminApi
$data['title'] = $title;
}
$content = input('content', '');
$content = input('content', ''); //$_POST['content'] ?? '';
if($content){
$data['content'] = $content;
}

View File

@@ -18,13 +18,7 @@ class Tasks extends adminApi
{
protected $noNeedLogin = [];
protected $noNeedRight = [];
protected $table = 'vs_daily_tasks';
public $task_type = [
'1' => '每日任务',
'2' => '每日特殊任务',
'3' => '平台常规任务'
];
protected $table = 'vs_tasks';
public function _initialize()
{
parent::_initialize();
@@ -41,21 +35,20 @@ class Tasks extends adminApi
if($seach_task_type != ''){
$where['task_type'] = $seach_task_type;
}
$list = db::name('vs_daily_tasks')->where(['delete_time'=>0])->where($where)->page($page, $page_limit)->order(['sort'=>'desc','task_id'=>'desc'])->select();
$count = db::name('vs_daily_tasks')->where(['delete_time'=>0])->where($where)->count();
$list = db::name('vs_tasks')->where(['delete_time'=>0])->where($where)->page($page, $page_limit)->order(['sort'=>'desc','id'=>'desc'])->select();
$count = db::name('vs_tasks')->where(['delete_time'=>0])->where($where)->count();
$list_data = [];
foreach ($list as $k=>$v){
$list_data[$k]['task_id'] = $v['task_id'];
$list_data[$k]['task_id'] = $v['id'];
$list_data[$k]['icon'] = $v['icon'];
$list_data[$k]['task_name'] = $v['task_name'];
$list_data[$k]['task_description'] = $v['task_description']??"";
$list_data[$k]['gold_reward'] = $v['gold_reward'];
$list_data[$k]['target_quantity'] = $v['target_quantity'];
$list_data[$k]['task_type'] = $v['task_type'];
$list_data[$k]['task_type_str'] = $this->task_type[$v['task_type']];
$list_data[$k]['task_type_str'] = model('api/Tasks')->task_type[$v['task_type']]?? '';
$list_data[$k]['sort'] = $v['sort'];
$list_data[$k]['bag_id'] = $v['bag_id'];
$list_data[$k]['bag_name'] = $v['bag_id']?db::name('vs_gift_bag')->where(['id'=>$v['bag_id']])->value('name'):'';
$list_data[$k]['bag_id'] = $v['tasks_bag_id'];
$list_data[$k]['bag_name'] = $v['tasks_bag_id']?db::name('vs_gift_bag')->where(['id'=>$v['tasks_bag_id']])->value('name'):'';
$list_data[$k]['is_active'] = $v['is_active'];
}
$return_data = [
@@ -63,7 +56,7 @@ class Tasks extends adminApi
'page_limit' => $page_limit,
'count' => $count,
'lists' => $list_data,
'task_type' => $this->task_type,
'task_type' => model('api/Tasks')->task_type,
];
return V(1,"成功", $return_data);
}
@@ -95,7 +88,7 @@ class Tasks extends adminApi
$data['sort'] = $sort;
}
if($bag_id != ''){
$data['bag_id'] = $bag_id;
$data['tasks_bag_id'] = $bag_id;
}
if($is_active != ''){
$data['is_active'] = $is_active;
@@ -103,13 +96,10 @@ class Tasks extends adminApi
if($task_type != ''){
$data['task_type'] = $task_type;
}
if($gold_reward != ''){
$data['gold_reward'] = $gold_reward;
}
if($target_quantity){
$data['target_quantity'] = $target_quantity;
}
$res = db::name($this->table)->where(['task_id'=>$task_id])->update($data);
$res = db::name($this->table)->where(['id'=>$task_id])->update($data);
if($res){
return V(1,"修改成功");
}else{
@@ -123,7 +113,7 @@ class Tasks extends adminApi
public function task_open(){
$task_id = input('task_id', '');
$is_active = input('is_active', '');
$res = db::name($this->table)->where(['task_id'=>$task_id])->update(['is_active'=>$is_active]);
$res = db::name($this->table)->where(['id'=>$task_id])->update(['is_active'=>$is_active]);
if($res){
return V(1,"开启成功");
}else{

View File

@@ -44,6 +44,10 @@ class Theme extends adminApi
}
$list = db::name($this->table)->where($where)->page($page, $page_limit)->select();
$count = db::name($this->table)->where($where)->count();
foreach ($list as &$value) {
$value['begin_time'] = date('Y-m-d H:i:s',$value['begin_time']);
$value['end_time'] = date('Y-m-d H:i:s',$value['end_time']);
}
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
@@ -62,6 +66,10 @@ class Theme extends adminApi
$auxiliary_color = input('auxiliary_color', '');
$file_url = input('file_url', '');
$is_active = input('is_active', '');
$begin_time = input('begin_time', '');
$end_time = input('end_time', '');
$begin_time = !empty($begin_time) ? strtotime($begin_time) : 0;
$end_time = !empty($end_time) ? strtotime($end_time) : 0;
$data = [
'theme_name' => $theme_name,
'theme_color' => $theme_color,
@@ -69,7 +77,9 @@ class Theme extends adminApi
'file_url' => $file_url,
'is_active' => $is_active,
'admin_id' => $admin_id,
'createtime' => time()
'createtime' => time(),
'begin_time' => $begin_time,
'end_time' => $end_time,
];
$res = db::name($this->table)->insert($data);
if($res){
@@ -87,6 +97,10 @@ class Theme extends adminApi
$auxiliary_color = input('auxiliary_color', '');
$file_url = input('file_url', '');
$is_active = input('is_active', '');
$begin_time = input('begin_time', '');
$end_time = input('end_time', '');
$begin_time = !empty($begin_time) ? strtotime($begin_time) : 0;
$end_time = !empty($end_time) ? strtotime($end_time) : 0;
$id = input('id', '');
$data = [
'theme_name' => $theme_name,
@@ -94,7 +108,9 @@ class Theme extends adminApi
'auxiliary_color' => $auxiliary_color,
'file_url' => $file_url,
'is_active' => $is_active,
'updatetime' => time()
'updatetime' => time(),
'begin_time' => $begin_time,
'end_time' => $end_time,
];
$res = db::name($this->table)->where(['id'=>$id])->update($data);
if($res){

View File

@@ -159,7 +159,7 @@ class Underage extends adminApi
*/
public function content_List(){
$page = input('page', 1);
$page_limit = input('pageSize', 30);
$page_limit = input('page_limit', 10);
$search_name = input('search_name', '');
$where = [];
if($search_name){
@@ -167,6 +167,7 @@ class Underage extends adminApi
}
$list = DB::name('vs_underage_mode_content')->where($where)->order('sort,id', 'asc')->page($page, $page_limit)->select();
$count = DB::name('vs_underage_mode_content')->where($where)->count();
$return_lists = [];
foreach ($list as $key => $value) {
$return_lists[$key]['id'] = $value['id'];
$return_lists[$key]['type_id'] = $value['type_id'];
@@ -266,7 +267,7 @@ class Underage extends adminApi
$type_id = input('type_id', '');
$title = input('title', '');
$introduced = input('introduced', '');
$content = input('content', '');
$content = $_POST['content']??"";
$url = input('url', '');
$img = input('img', '');
$from = input('from', 1);
@@ -303,9 +304,6 @@ class Underage extends adminApi
$data['content'] = $content;
}
$result = db::name('vs_underage_mode_content')->where(['id'=>$id])->update($data);
if(!$result){
return V(0,"修改失败");
}
return V(1,"成功", ['id'=>$id]);
}
}

View File

@@ -4,6 +4,7 @@ namespace app\adminapi\controller;
use app\admin\model\AdminLog;
use app\common\controller\Upload;
use Overtrue\Pinyin\Pinyin;
use think\Request;
/**
@@ -32,14 +33,39 @@ class UploadFile extends Upload
try {
// 获取临时路径和原始文件名
$filePath = $file->getRealPath();
$objectName = $file->getInfo('name');
// 调用父类方法上传到 OSS
$result = $this->uploadFile($objectName, $filePath);
if (!$result) {
return V(0, '上传失败请检查OSS配置或网络', null);
$originalName = $file->getInfo('name');
// 提取文件扩展名
$extension = pathinfo($originalName, PATHINFO_EXTENSION);
// 处理文件名(中文转拼音) 移除扩展名(如果有的话)
$fileName = pathinfo($originalName, PATHINFO_FILENAME);
if (preg_match('/[\x{4e00}-\x{9fa5}]+/u', $fileName)) {
$pinyin = new Pinyin();
$fileName = $pinyin->permalink($fileName, ''); // 转换为无分隔符的拼音
}
// 返回访问地址
$url = $this->config['oss_cdn_url'] . $objectName;
// 去除文件名中的空格
$fileName = str_replace(' ', '', $fileName);
// 添加唯一标识符(时间戳+随机数)
$uniqueId = time() . mt_rand(1000, 9999);
$objectName = $fileName . '_' . $uniqueId . '.' . $extension;
// 调用父类方法上传到 OSS
// $result = $this->uploadFile($objectName, $filePath);
// if (!$result) {
// return V(0, '上传失败请检查OSS配置或网络', null);
// }
// // 返回访问地址
// $url = $this->config['oss_cdn_url'] . $objectName;
// 调用父类方法上传到 COS
$result = $this->uploadFileCos($objectName, $filePath);
if (!$result) {
return V(0, '上传失败请检查COS配置或网络', null);
}
$url = $result;// 返回访问地址 具体访问地址根据你的实际配置来定这个需要修改 等域名通过备案后修改
return V(1, '上传成功', ['url' => $url]);
} catch (\Exception $e) {
return V(0, '上传异常: ' . $e->getMessage(), null);

View File

@@ -9,6 +9,7 @@ use think\Db;
use think\Hook;
use think\Session;
use think\Validate;
use app\common\library\Token as TokenLib;
/**
* 后台首页
@@ -35,8 +36,10 @@ class User extends adminApi
$page_limit = input('page_limit', 30);
$search_str = input('search', '');
$search_user_code = input('search_user_code', '');
$order_type = input('order_type', 'id');
$order_type_val = input('order_type_val', '');
$where['a.is_robot'] =0;
$where['a.delete_time'] = 0;
// $where['a.delete_time'] = 0;
//如果是手机号查手机号
if($search_str !==''){
if(is_numeric($search_str)) {
@@ -60,7 +63,7 @@ class User extends adminApi
if($is_real == 1) {
$where['b.is_real'] = 1;
}else {
$where['b.is_real'] = ['<>',1];
$where['b.is_real'] = [['<>',1],['null', null],'or'];
}
}
//高级搜索
@@ -72,10 +75,12 @@ class User extends adminApi
if($v=='coin1'){
$where['c.coin'] = ['>=',$input_data];
}elseif($v=='coin2'){
$where['c.coin'] = ['<=',$input_data];
if($input_data){
$where['c.coin'] = ['<=',$input_data];
}
}elseif($v=='createtime'){
$where['a.createtime'] = ['>=',strtotime($input_data.' 00:00:00')];
$where['a.createtime'] = ['<=',strtotime($input_data.' 23:59:59')];
$where['a.createtime'] = ['>=',strtotime($input_data)];
$where['a.createtime'] = ['<=',strtotime($input_data)];
}else{
$where['a.'.$v] = $input_data;
}
@@ -91,26 +96,46 @@ class User extends adminApi
a.login_device,
a.loginip,
c.coin,
c.earnings,
d.earnings,
b.is_real,
a.init_code,
a.status
';
if($order_type_val ==2){
$order_type_val_str = 'asc';
}else{
$order_type_val_str = 'desc';
}
$order = 'a.id '.$order_type_val_str;
if($order_type=='coin'){
$order = "c.coin ".$order_type_val_str;
}elseif($order_type=='earnings'){
$order = "d.earnings ".$order_type_val_str;
}
$user_data = db::name('user')->alias('a')
->join('(SELECT * FROM fa_user_auth WHERE id IN (SELECT MAX(id) FROM fa_user_auth GROUP BY mobile)) b', 'a.mobile = b.mobile', 'LEFT')
->join('user_wallet c', 'a.id = c.user_id','LEFT')
->join('user_wallet_coin c', 'a.id = c.user_id','LEFT')
->join('user_wallet_earnings d', 'a.id = d.user_id','LEFT')
->where($where)
->field($field)
->order('a.id desc');
->order($order);
$lists = $user_data->page($page, $page_limit)->select();
$count = db::name('user')->alias('a')
->join('(SELECT * FROM fa_user_auth WHERE id IN (SELECT MAX(id) FROM fa_user_auth GROUP BY mobile)) b', 'a.mobile = b.mobile', 'LEFT')
->join('user_wallet c', 'a.id = c.user_id','LEFT')
->join('user_wallet_coin c', 'a.id = c.user_id','LEFT')
->join('user_wallet_earnings d', 'a.id = d.user_id','LEFT')
->where($where)
->field($field)
->order('a.id desc')->count();
->count();
foreach ($lists as $key => $value) {
$lists[$key]['status_str'] = $value['status'] == 1 ? '正常' : '禁用';
if($value['status'] == 1){
$lists[$key]['status_str'] ='正常';
}elseif($value['status'] == 2){
$lists[$key]['status_str'] ='禁用';
}else{
$lists[$key]['status_str'] ='注销';
}
$lists[$key]['is_real_str'] = $value['is_real'] == 1 ? '已实名' : '未实名';
//禁用状态
//1:禁用账号 2:禁用设备号 3:禁用IP
@@ -146,9 +171,27 @@ class User extends adminApi
$lists[$key]['special_num'] = "";
}
}
$total_coin = db::name('user')->alias('a')
->join('(SELECT * FROM fa_user_auth WHERE id IN (SELECT MAX(id) FROM fa_user_auth GROUP BY mobile)) b', 'a.mobile = b.mobile', 'LEFT')
->join('user_wallet_coin c', 'a.id = c.user_id','LEFT')
->join('user_wallet_earnings d', 'a.id = d.user_id','LEFT')
->where(['a.delete_time'=>0])
->where($where)
->field($field)
->sum('c.coin');
$total_earnings = db::name('user')->alias('a')
->join('(SELECT * FROM fa_user_auth WHERE id IN (SELECT MAX(id) FROM fa_user_auth GROUP BY mobile)) b', 'a.mobile = b.mobile', 'LEFT')
->join('user_wallet_coin c', 'a.id = c.user_id','LEFT')
->join('user_wallet_earnings d', 'a.id = d.user_id','LEFT')
->where(['a.delete_time'=>0])
->where($where)
->field($field)
->sum('d.earnings');
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'total_coin' => $total_coin,
'total_earnings' => $total_earnings,
'count' => $count,
'lists' => $lists
];
@@ -231,8 +274,12 @@ class User extends adminApi
'type' => $type,
'type_text' => $type_text,
];
$res = Db::name('block')->where($map)->delete();
Db::name('block')->where($map)->delete();
Db::name('sms_error')->where(['mobile' => $user_info['mobile']])->delete();
}
$token = db::name('user_token')->where('user_id', $user_id)->value('token');
// 删除这个Token使其失效
TokenLib::delete($token);
return V(1,"成功", null);
}
@@ -334,7 +381,7 @@ class User extends adminApi
$user_data['user_info']['wealth_level_icon'] = $user['wealth_level_icon'];
$user_data['user_info']['user_code'] = $user['user_code'];
$user_data['user_info']['mobile'] = $user['mobile'];
$user_data['user_info']['sex'] = $user['sex']==1 ? '男' : '女';
$user_data['user_info']['sex'] = $user['sex'];
$user_data['user_info']['birthday'] = $user['birthday'];
$user_data['user_info']['system'] = $user['system'];
$user_data['user_info']['age'] = $user['age'];
@@ -346,7 +393,16 @@ class User extends adminApi
$user_data['user_info']['red_status_str'] = $user['red_status']==1 ? '开启' : '禁止';
//标签
$user_data['user_info']['tag'] = $user['tag_list'];
$user_data['user_info']['createtime'] = date('Y-m-d H:i:s', $user['createtime']);//主持时间
$user_data['user_info']['createtime'] = date('Y-m-d H:i:s', $user['createtime']);//注册时间
//师傅 老师
$user_sign = db::name('vs_user_sign')->where('sign_user_id', $user_id)->find();
$user_data['user_info']['teacher_id'] = 0;
$user_data['user_info']['teacher_nickname'] = '--';
if($user_sign){
$teacher_id = $user_sign['parent_user_id'];
$user_data['user_info']['teacher_id'] = $teacher_id;
$user_data['user_info']['teacher_nickname'] = db::name('user')->where('id', $teacher_id)->value('nickname');
}
//统计相关:
$user_data['follow_num']['user_recharge_all_money'] = $user['user_recharge_all_money'];
$user_data['follow_num']['coin'] = $user['coin'];
@@ -422,7 +478,15 @@ class User extends adminApi
$reslut = DB::name('user')->where('id', $user_id)->update($up_user);
}
if($up_user_data){
$res = DB::name('user_auth')->where('mobile', $user['mobile'])->update($up_user_data);
$user_auth = DB::name('user_auth')->where('mobile', $user['mobile'])->find();
if($user_auth){
$res = DB::name('user_auth')->where('mobile', $user['mobile'])->update($up_user_data);
}else{
$up_user_data['mobile'] = $user['mobile'];
if($real_name && $card_id){
$res = DB::name('user_auth')->insert($up_user_data);
}
}
}
return V(1,'操作成功');
}
@@ -435,7 +499,15 @@ class User extends adminApi
$page = input('page',1);
$page_limit = input('page_limit',10);
$type = input('type','');
$return = model('UserWallet')->money_change_log($user_id,$type,$page,$page_limit);
$stime = input('stime','');
$etime = input('etime','');
$change_type = input('change_type','');
$seach = [
'stime' => $stime,
'etime' => $etime,
'change_type' => $change_type
];
$return = model('UserWallet')->money_change_log($user_id,$seach,$type,$page,$page_limit);
$list = [];
foreach($return['list'] as $k=>$v){
$list[$k] = [
@@ -455,6 +527,14 @@ class User extends adminApi
return V(1,"操作成功", $return_data);
}
/*
* 获取用户资金类型
*/
public function get_money_type(){
$reslut = model('UserWallet')->getChangeTypeLableList();
return V(1,"操作成功", $reslut);
}
/*
* 相册列表
*/
@@ -515,7 +595,7 @@ class User extends adminApi
a.user_code,
a.login_device,
c.coin,
c.earnings,
d.earnings,
b.is_real,
a.init_code,
a.status,
@@ -523,12 +603,14 @@ class User extends adminApi
';
$count = db::name('user')->alias('a')
->join('fa_user_auth b', 'a.mobile = b.mobile','LEFT')
->join('user_wallet c', 'a.id = c.user_id','LEFT')
->join('user_wallet_coin c', 'a.id = c.user_id','LEFT')
->join('user_wallet_earnings d', 'a.id = d.user_id','LEFT')
->where($where)
->count();
$user_data = db::name('user')->alias('a')
->join('fa_user_auth b', 'a.mobile = b.mobile','LEFT')
->join('user_wallet c', 'a.id = c.user_id','LEFT')
->join('user_wallet_coin c', 'a.id = c.user_id','LEFT')
->join('user_wallet_earnings d', 'a.id = d.user_id','LEFT')
->where($where)
->field($field)
->order('a.id desc');
@@ -599,32 +681,68 @@ class User extends adminApi
$page_limit = input('page_limit',10);
$where['a.is_tester'] = 1;
if($user_id){
$where['a.user_id'] = $user_id;
$where['b.user_code'] = $user_id;
}
if($gid){
$where['a.gid'] = $gid;
}
$count = db::name('vs_user_gift_pack')->alias('a')->join('user b', 'a.user_id = b.id')->where($where)->count();
$count = db::name('vs_user_gift_pack')
->alias('a')
->join('user b', 'a.user_id = b.id')
->join('vs_gift c', 'a.gid = c.gid')
->where($where)
->where(['a.num'=>['>',0]])
->count();
$list = db::name('vs_user_gift_pack')
->alias('a')
->join('user b', 'a.user_id = b.id')
->join('vs_gift c', 'a.gid = c.gid')
->field('a.*,b.user_code,b.nickname,c.gift_name,c.base_image,c.gift_price')->where($where)->order('a.pid', "desc")->page($page, $page_limit)->select();
->field('a.*,b.user_code,b.nickname,c.gift_name,c.base_image,c.gift_price')
->where($where)
->where(['a.num'=>['>',0]])
->order('a.pid', "desc")
->page($page, $page_limit)
->select();
$gift_total = 0;
$gift_count = 0;
foreach ($list as $key => &$value) {
$value['createtime'] = date('Y-m-d H:i:s',$value['createtime']);
$value['user_id_nickname'] = $value['user_code'].'——'.$value['nickname'];
$value['gift_id_name'] = $value['gid'].'——'.$value['gift_name'];
$value['createtime'] = date('Y-m-d H:i:s',$value['updatetime']);
$value['nickname'] = $value['nickname'].'-'.$value['user_code'];
$value['gift_id_name'] = $value['gift_name'].'-'.$value['gid'];
}
//礼物个数
$gift_count = db::name('vs_user_gift_pack')->alias('a')->join('user b', 'a.user_id = b.id')->where($where)->group('a.gid')->count();
//礼物总金额
$gift_total = db::name('vs_user_gift_pack')->alias('a')->join('user b', 'a.user_id = b.id')
//礼物种类个数
$gift_kinds = db::name('vs_user_gift_pack')->alias('a')->join('user b', 'a.user_id = b.id')->where($where)->where(['num'=>['>',0]])->group('a.gid')->count();
$gift_count = db::name('vs_user_gift_pack')
->alias('a')
->join('user b', 'a.user_id = b.id')
->join('vs_gift c', 'a.gid = c.gid')
->where($where)->sum('c.gift_price');
->where($where)
->where(['a.num'=>['>',0]])
->sum('a.num');
// $gift_total = db::name('vs_user_gift_pack')
// ->alias('a')
// ->join('user b', 'a.user_id = b.id')
// ->join('vs_gift c', 'a.gid = c.gid')
// ->where($where)
// ->where(['a.num'=>['>',0]])
// ->sum('c.gift_price');
$listss = Db::name('vs_user_gift_pack')->alias('a')
->join('user b', 'a.user_id = b.id')
->join('vs_gift c', 'a.gid = c.gid')
->where($where)
->field('a.num,c.gift_price')
->select();
foreach ($listss as $v) {
$gift_total += $v['num'] * $v['gift_price'];
}
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'gift_kinds' => $gift_kinds,
'gift_count' => $gift_count,
'gift_total' => $gift_total,
'lists' => $list
@@ -735,7 +853,163 @@ class User extends adminApi
* 用户列表
*/
public function get_user_list(){
$user = db::name('user')->field('id,nickname,avatar')->where(['status'=>1,'is_robot'=>0,'delete_time'=>0])->select();
$user_code = input('user_code', 0);
$where = [];
if($user_code){
$where['user_code'] = $user_code;
}
$user = db::name('user')->field('id,nickname,avatar')->where($where)->where(['status'=>1,'is_robot'=>0,'delete_time'=>0])->select();
return V(1,"操作成功", $user);
}
//注销用户找回
public function cancel_user_recovery(){
$mobile = input('mobile', 0);
if (!$mobile){
return V(0, "手机号不能为空");
}
$user = db::name('user')->where(['mobile'=>$mobile,'delete_time' => ['<>',0],'status'=>0])->find();
if (!$user){
return V(0, "该手机号未注销");
}
$user_count = db::name('user')->where(['mobile'=>$mobile,'delete_time' => 0])->count();
if ($user_count > 3){
return V(0, "该手机号绑定账号超限了");
}
$user_del = db::name('user')->where(['mobile'=>$mobile,'delete_time' => ['<>',0]])->count();
if ($user_del > 1){
return V(0, "相关注销超过1个暂不支持找回");
}
//开启事务
db::startTrans();
try{
$user_id = db::name('user')->where(['mobile'=>$mobile,'delete_time' => ['<>',0]])->value('id');
db::name('user')->where(['id'=>$user_id])->update([
'delete_time' => 0,
'status' => 1,
'nickname' => '游客_'.$user_id.rand(1000,9999),
'avatar' => get_system_config_value('web_site').'/data/avatar/head_pic.png',
'updatetime' => time(),
]);
db::name('user_data')->where(['user_id'=>$user_id])->update([
'deletetime' => 0,
'updatetime' => time(),
]);
//查询创建的房间
$room_list = db::name('vs_room')->where(['user_id'=>$user_id,'type_id' => ['<>',6]])->find();
if($room_list){
db::name('vs_room')->where(['id'=>$room_list['id']])->update([
'room_status' => 1,
'updatetime' => time(),
]);
}
//查他的钱包
//清空金币表
$wallet_coin = db::name('user_wallet_coin')->where(['user_id'=>$user_id])->find();
if($wallet_coin){
db::name('user_wallet_coin')->where(['id'=>$wallet_coin['id']])->update([
'coin' => 0,
'updatetime' => time(),
]);
}
//清空钻石表
$wallet_earnings = db::name('user_wallet_earnings')->where(['user_id'=>$user_id])->find();
if($wallet_earnings){
db::name('user_wallet_earnings')->where(['id'=>$wallet_earnings['id']])->update([
'earnings' => 0,
'updatetime' => time(),
]);
}
//他的装扮
$dress = db::name('vs_user_decorate')->where(['user_id'=>$user_id])->select();
if($dress){
foreach ($dress as $key => $value) {
if($value['end_time'] > time()){
db::name('vs_user_decorate')->where(['udid'=>$value['udid']])->update([
'is_perpetual' => 2,
'end_time' => time(),
'updatetime' => time(),
]);
}
}
}
db::commit();
return V(1,"操作成功", null);
}catch (\Exception $e){
db::rollback();
return V(0, "操作失败,".$e->getMessage());
}
}
//家族成员
public function get_family_member(){
$user_id = input('user_id', 0);
$page = input('page', 1);
$page_limit = input('page_limit', 30);
if (!$user_id){
return V(0, "参数错误");
}
$user_sign = db::name('vs_user_sign')->where(['parent_user_id'=>$user_id,'end_time'=>['>',time()]])->select();
$count = db::name('vs_user_sign')->where(['parent_user_id'=>$user_id,'end_time'=>['>',time()]])->count();
$list = [];
foreach ($user_sign as $key => $value) {
$sign_user = db::name('user')->field('id,user_code,nickname,market_value')->where(['id'=>$value['sign_user_id']])->find();
$list[$key]['id'] = $value['id'];
$list[$key]['user_id'] = $sign_user['id'];
$list[$key]['user_code'] = $sign_user['user_code'];
$list[$key]['nickname'] = $sign_user['nickname'];
$list[$key]['createtime'] = date('Y-m-d H:i:s',$value['createtime']);
$list[$key]['end_time'] = date('Y-m-d H:i:s',$value['end_time']);
//剩余天数
$list[$key]['surplus_days'] = ceil(($value['end_time'] - time())/86400);
//免费续约次数
$list[$key]['free_renewal_times'] = 3 - $value['sign_times'];
if($list[$key]['free_renewal_times']<=0){
$list[$key]['free_renewal_times'] = 0;
}
//当前身价
$list[$key]['market_value'] = $sign_user['market_value'];
}
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $list
];
return V(1,"成功", $return_data);
}
//解约
public function cancel_contract(){
$user_sign_id = input('id', 0);
if (!$user_sign_id){
return V(0, "参数错误");
}
$user_sign = db::name('vs_user_sign')->where(['id'=>$user_sign_id])->find();
if (!$user_sign){
return V(0, "参数错误");
}
$resultt = db::name('vs_user_sign')
->where(['id' => $user_sign_id])
->update(['end_time' => time(),'sign_user_type' => 4,'type'=>4,'status' => 2]);
if(!$resultt){
return V(0, "操作失败");
}
//处理家族
$myFamily = db::name('vs_family')
->where(['user_id' => $user_sign['sign_user_id'],'type' => 0,'pid' => $user_sign['parent_user_id'],'deletetime' => 0])->find();
if($myFamily){
$mySignFamily = db::name('vs_family')->where(['user_id' => $user_sign['parent_user_id'],'type' => 1])->find();
//删除群成员
model('api/Tencent')->delete_group_member('f'.$mySignFamily['id'], $user_sign['sign_user_id']);
//退出家族
db::name('vs_family')->where('id', $myFamily['id'])->update(['deletetime' => time()]);
}
return V(1, "操作成功");
}
}

View File

@@ -0,0 +1,121 @@
<?php
namespace app\adminapi\controller;
use app\common\controller\adminApi;
use think\Db;
class UserCp extends adminApi
{
//用户CP等级列表
public function userCpLevelList()
{
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$where=['deletetime' => 0];
$count = db::name('user_cp_level')->where($where)->count();
$list = db::name('user_cp_level')
->where($where)
->page($page, $page_limit)
->select();
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,
'count' => $count,
'lists' => $list
];
return V(1,"成功", $return_data);
}
//用户CP等级详情
public function userCpLevelInfo()
{
$id = input('id', '');
$where=['deletetime' => 0,'id'=>$id];
$list = db::name('user_cp_level')->where($where)->find();
if(empty($list)){
return V(0,"数据不存在");
}
if($list['dress_id']){
$dress = db::name('vs_decorate_price')->where('id',$list['dress_id'])->field('did,day')->find();
$list['dress_title'] = '头像框-'.$dress['day'].'天-'.db::name('vs_decorate')->where('did',$dress['did'])->value('title');
$list['dress_base_image'] = db::name('vs_decorate')->where('did',$dress['did'])->value('base_image');
}else{
$list['dress_title'] = '';
$list['dress_base_image'] = '';
}
if($list['jiajia_id']){
$jiajia = db::name('vs_decorate_price')->where('id',$list['jiajia_id'])->field('did,day')->find();
$list['jiajia_title'] = '坐骑-'.$jiajia['day'].'天-'.db::name('vs_decorate')->where('did',$jiajia['did'])->value('title');
$list['jiajia_base_image'] = db::name('vs_decorate')->where('did',$jiajia['did'])->value('base_image');
}else{
$list['jiajia_title'] = '';
$list['jiajia_base_image'] = '';
}
if($list['pendant_id']){
$pendant = db::name('vs_decorate_price')->where('id',$list['pendant_id'])->field('did,day')->find();
$list['pendant_title'] = '装扮-'.$pendant['day'].'天-'.db::name('vs_decorate')->where('did',$pendant['did'])->value('title');
$list['pendant_base_image'] = db::name('vs_decorate')->where('did',$pendant['did'])->value('base_image');
}else{
$list['pendant_title'] = '';
$list['pendant_base_image'] = '';
}
if($list['rights_icon_id']){
$rights_icon = db::name('vs_decorate_price')->where('id',$list['rights_icon_id'])->field('did,day')->find();
$list['rights_icon_title'] = '特效-'.$rights_icon['day'].'天-'.db::name('vs_decorate')->where('did',$rights_icon['did'])->value('title');
$list['rights_icon_base_image'] = db::name('vs_decorate')->where('did',$rights_icon['did'])->value('base_image');
}else{
$list['rights_icon_title'] = '';
$list['rights_icon_base_image'] = '';
}
return V(1,"成功", $list);
}
//编辑用户CP等级
public function userCpLevelEdit()
{
$id = input('id', '');
$data = [
'level' => input('level', ''),
'name' => input('name', ''),
'image' => input('image', ''),
'change_value' => input('change_value', ''),
'rights_icon_id' => input('rights_icon_id', ''),//特效id 11
'dress_id' => input('dress_id', ''),
'jiajia_id' => input('jiajia_id', ''),
'pendant_id' => input('pendant_id', ''),//挂件装扮id 10
'direction' => input('direction', 0),//挂件上的头像位置0-上1-右上2-右3-右下4-下5-左下6-左7-左上
];
//没有 id就是新增
if(empty($id)){
//新增
$data['createtime'] = time();
$res = db::name('user_cp_level')->insert($data);
if($res){
return V(1, '操作成功');
}
}else {
$res = db::name('user_cp_level')->where('id', $id)->update($data);
if($res){
return V(1, '操作成功');
}
}
return V(0, '操作失败');
}
//用户CP等级删除
public function userCpLevelDel()
{
$id = input('id', '');
$data['deletetime'] = time();
$res = db::name('user_cp_level')->where('id', $id)->update($data);
if($res){
return V(1, '操作成功');
}
return V(0, '操作失败');
}
}

View File

@@ -162,6 +162,15 @@ class UserZone extends adminApi
public function del_zone(){
$id = input('id', 0);
$res = db::name('user_zone')->where(['id'=>$id])->update(['is_delete'=> 2,'delete_time'=> time()]);
if($res){
//删除动态下的标签引用
$top_zone = db::name('user_zone_topic')->where('zone_id',$id)->select();
if($top_zone){
foreach ($top_zone as $v){
db::name('user_zone_topic')->where('id',$v['id'])->delete();
}
}
}
return V($res ? 1 : 0, $res ? '删除成功' : '删除失败');
}
@@ -169,8 +178,46 @@ class UserZone extends adminApi
public function del_comment(){
$id = input('id', 0);
$res = db::name('user_zone_comment')->where(['id'=>$id])->update(['is_delete'=> 2,'updatetime'=> time()]);
if($res){
$zone_id = db::name('user_zone_comment')->where(['id'=>$id])->value('zone_id');
//删除评论下的回复
$dd = db::name('user_zone_comment')->where('pid', $id)->find();
if($dd){
$reslut1 = db::name('user_zone_comment')->where('pid', $id)->update(['is_delete' => 2,'updatetime' => time()]);
if (!$reslut1) {
return ['code' => 0, 'msg' => '请重试!!', 'data' => null];
}
}
//减少评论数量
$num = db::name('user_zone_comment')->where('pid', $id)->count();
if($num > 0){
$num = $num + 1;
}else{
$num = 1;
}
$reslut2 = db::name('user_zone')->where('id', $zone_id)->setDec('comment_num', $num);
if (!$reslut2) {
return ['code' => 0, 'msg' => '请重试!!', 'data' => null];
}
}
return V($res ? 1 : 0, $res ? '删除成功' : '删除失败');
}
public function comment_zone()
{
$id = input('id', 0);
$content = input('content', '');
$comment_data = db::name('user_zone_comment')->where(['id'=>$id])->find();
$zid = $comment_data['zone_id'];
$pid = $id;
$reply_to = input('reply_to', 0);
if(!$reply_to){
$reply_to = $comment_data['user_id'];
}
$reslut = model('api/UserZone')->comment_zone(21216, $zid, $content,$pid, $reply_to);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//动态置顶或显示操作操作
public function zone_top_or_show(){
$id = input('id', 0);

View File

@@ -69,7 +69,7 @@ class Version extends adminApi
$version = input('version', '');
$type = input('type', '');
$downloadurl = input('downloadurl', '');
$content = input('content', '');
$content = $_POST['content'] ?? '';
$enforce = input('enforce', '');
$version_code = input('version_code', '');
$status = input('status', 1);
@@ -98,27 +98,34 @@ class Version extends adminApi
* 修改
*/
public function version_edit(){
$version = input('version', '');
$type = input('type', '');
$downloadurl = input('downloadurl', '');
$content = input('content', '');
$enforce = input('enforce', '');
$version_code = input('version_code', '');
$status = input('status', 1);
$version = input('version', '');//新版本好
$type = input('type', '');//1-安卓 2-IOS
$downloadurl = input('downloadurl', '');//下载地址
$content = $_POST['content'] ?? '';//更新内容
$enforce = input('enforce', '');//强制更新 1-是 0-否
$version_code = input('version_code', '');//版本号(目前安卓使用,用来判定是否升级)
$status = input('status', 1);//0-待发布1-已发布2-禁用
$id = input('id', '');
$versions = db::name($this->table)->where(['newversion'=>$version,'id'=>['neq',$id]])->find();
if($versions){
$now_version = db::name($this->table)->where(['id'=>$id])->find();
if(!$now_version){
return V(0,"数据不存在");
}
$res = version_compare($now_version['newversion'], $version);
if($res == 0){
return V(0,"版本号已存在");
}
$data = [
'newversion' => $version,
'oldversion' => $now_version['newversion'],
'type' => $type,
'downloadurl' => $downloadurl,
'content' => $content,
'enforce' => $enforce,
'code' => $version_code,
'status' => $status,
'createtime' => time()
'updatetime' => time()
];
$res = db::name($this->table)->where(['id'=>$id])->update($data);
if($res){

View File

@@ -60,10 +60,10 @@ class Withdrawal extends adminApi
$where['a.createtime'] = ['>=', strtotime($search_stime)];
}
if($search_etime !== ''){
$where['a.createtime'] = ['<=', strtotime($search_etime.' 23:59:59')];
$where['a.createtime'] = ['<=', strtotime($search_etime)];
}
if(!empty($search_stime) && !empty($search_etime)){
$where['a.createtime'] = ['between',[strtotime($search_stime),strtotime($search_etime.' 23:59:59')]];
$where['a.createtime'] = ['between',[strtotime($search_stime),strtotime($search_etime)]];
}
$count = db::name('vs_user_withdrawal')->alias('a')
->join('user b', 'a.user_id = b.id', 'left')
@@ -75,6 +75,7 @@ class Withdrawal extends adminApi
->field('a.*,b.nickname,b.user_code')
->order('a.createtime desc')
->where($where)
->page($page, $page_limit)
->select();
$data_lists = [];
foreach ($lists as $key => $value) {
@@ -103,15 +104,27 @@ class Withdrawal extends adminApi
//统计
//待审核数量
$wait_num = db::name('vs_user_withdrawal')->where('status',1)->count();
$wait_num = db::name('vs_user_withdrawal')->where('a.status',1)
->alias('a')
->join('user b', 'a.user_id = b.id', 'left')
->where($where)
->count();
//今日提现
$today_money = db::name('vs_user_withdrawal')->whereIn('status',[2,6])->whereTime('createtime', 'today')->sum('money');
//昨日提现
$yesterday_money = db::name('vs_user_withdrawal')->whereIn('status',[2,6])->whereTime('createtime', 'yesterday')->sum('money');
//已完成提现总额
$complete_money = db::name('vs_user_withdrawal')->whereIn('status',[2,6])->sum('money');
$complete_money = db::name('vs_user_withdrawal')->whereIn('a.status',[2,6])
->alias('a')
->join('user b', 'a.user_id = b.id', 'left')
->where($where)
->sum('money');
//手续费收入
$server_money = db::name('vs_user_withdrawal')->whereIn('status',[2,6])->sum('server_money');
$server_money = db::name('vs_user_withdrawal')->whereIn('a.status',[2,6])
->alias('a')
->join('user b', 'a.user_id = b.id', 'left')
->where($where)
->sum('server_money');
//提现总额
$total_money = $complete_money+$server_money;
@@ -255,19 +268,23 @@ class Withdrawal extends adminApi
//查询该用户云账户提现金额
$had_money = db::name('vs_user_withdrawal')->where(['user_id'=>$withdraw_info['user_id'],'deal_type'=>2,'status'=>6])->where('pay_time','month')->sum('general_money');
$max_month_money = 98000;
if(($had_money+$withdraw_info['general_money']) >= 98000){
if(($had_money+$withdraw_info['general_money']) >= $max_month_money){
return ['code' => 0, 'msg' => '单人单月云账户提现金额最大为98000元!', 'data' => null];
}
//查询该用户信息
$user_info = model('api/user')->get_user_info($withdraw_info['user_id']);
$user_info = model('api/user')->get_user_info($withdraw_info['user_id'], ['user','user_auth']);
if(empty($user_info)){
return ['code' => 0, 'msg' => '用户信息错误!', 'data' => null];
}
$real_name = $user_info['real_name'];
$id_card = $user_info['card_id'];
$order_id = $withdraw_info['order_sn'];
$order_amount = $withdraw_info['general_money'];
$phone = $user_info['mobile'];
if(empty($phone)) {
return ['code' => 0, 'msg' => '请先绑定手机号', 'data' => null];
}
if (empty($real_name) || empty($id_card)) {
return ['code' => 0, 'msg' => '请先实名认证', 'data' => null];
}
@@ -281,7 +298,11 @@ class Withdrawal extends adminApi
}
$card_no = $user_info['alipay_account'];
$yun_pay = new YunPay($order_id, $real_name, $id_card, $card_no, $order_amount,$phone);
$result = $yun_pay->alipay();
$user_data = [
'nickname' => $user_info['nickname'],
'user_id' => $withdraw_info['user_id'],
];
$result = $yun_pay->alipay($user_data);
} elseif ($withdraw_info['type'] == 3) {
if(empty($user_info['bank_card_number'])){
return ['code' => 0, 'msg' => '请先绑定银行卡号', 'data' => null];

View File

@@ -2,6 +2,8 @@
namespace app\adminapi\model;
use app\common\library\GiftTableManager;
use think\Log;
use think\Model;
use think\Session;
use think\Db;
@@ -19,14 +21,19 @@ class Gift extends Model
public $giftType = [
1 => '普通礼物',
2 => '盲盒礼物',
3 => '礼包礼物'
3 => '礼包礼物',
6 => '酒吧房礼物'
];
//送礼流水来源1聊天送礼物 2房间语聊送礼 3直播送礼 4动态打赏
public $GiveGiftFromStr = [
1 => '聊天送礼',
2 => '房间语聊送礼',
3 => '直播送礼',
4 => '动态打赏'
4 => '动态打赏',
5 => '房心愿礼物',
6 => '酒吧房自定义礼物',
7 => '酒吧房普通礼物',
8 => '酒吧房小黑屋礼物'
];
public function getList($where = [], $page = 1, $limit = 10)
@@ -73,4 +80,104 @@ class Gift extends Model
}
return $res;
}
/**
* 获取送礼记录
*/
public function getGiftRecords($search_time,$where,$page_array)
{
// 获取需要查询的表
$tables = GiftTableManager::getTablesByTimeRange(
$search_time[0],
$search_time[1]
);
//数组排序fa_vs_give_gift_202601 表明数字大的排在前面
arsort($tables);
if(empty($tables)){
$tables[0] = "fa_vs_give_gift";
}
$gift_count = 0;
$gift_total_price = 0;
$gift_number = 0;
$all_lists = []; // 存储所有查询结果
$remaining_page_offset = ($page_array['page'] - 1) * $page_array['page_limit']; // 需要跳过的记录数
$collected_count = 0; // 已收集的记录数
if($tables){
foreach ($tables as $table) {
$table_name = substr($table, 3);//截取可查询的表名
// 获取当前表的总记录数
$count = db::name($table_name)->where($where)->count();
if($count > 0){
// 如果还需要跳过记录
if($remaining_page_offset > 0){
// 如果当前表的记录数大于需要跳过的记录数
if($count > $remaining_page_offset){
// 从当前表中获取所需数据,跳过前面的记录
$table_lists = db::name($table_name)
->where($where)
->order('createtime', 'desc')
->limit($remaining_page_offset, $page_array['page_limit'])
->select();
// 添加到结果中
foreach($table_lists as $item){
if($collected_count < $page_array['page_limit']){
$all_lists[] = $item;
$collected_count++;
} else {
break;
}
}
$remaining_page_offset = 0; // 已经跳过所需的记录
} else {
// 当前表的所有记录都需要跳过
$remaining_page_offset -= $count;
}
} else if($collected_count < $page_array['page_limit']) {
// 如果不需要跳过记录,且还没有收集足够的数据
$remaining_needed = $page_array['page_limit'] - $collected_count;
// 从当前表获取剩余所需的数据
$table_lists = db::name($table_name)
->where($where)
->order('createtime', 'desc')
->limit($remaining_needed)
->select();
// 添加到结果中
foreach($table_lists as $item){
if($collected_count < $page_array['page_limit']){
$all_lists[] = $item;
$collected_count++;
} else {
break;
}
}
}
$total_price = db::name($table_name)->where($where)->sum('total_price');
$number = db::name($table_name)->where($where)->sum('number');
$gift_count += $count;
$gift_total_price += $total_price;
$gift_number += $number;
// 如果已经收集到足够数据,跳出循环
if($collected_count >= $page_array['page_limit']){
break;
}
}
}
}
$result = [
'lists' => $all_lists,
'count' => $gift_count,
'total_price' => $gift_total_price,
'number' => $gift_number,
];
return $result;
}
}

View File

@@ -85,7 +85,7 @@ class Guild extends Model
->alias('g')
->join('vs_guild gg','g.guild_id = gg.id')
->field('gg.*')
->where(['g.user_id' => $user_id])
->where(['g.user_id' => $user_id,'g.status' => 1,'g.delete_time' => 0])
->find();
return $guild;
}
@@ -94,32 +94,106 @@ class Guild extends Model
*
*工会当日流水
*/
// public function getTodayMoney($guild_id,$stoday="",$etoday=""){
// //获取所有工会房间ID
// $guild_user_data = db::name('vs_guild_user')->where('guild_id', $guild_id)->where(['apply_time'=>['>',0],'status'=>1])->field('room_id,apply_time,quit_time')->select();
// $transaction = 0;
// foreach ($guild_user_data as $k => $v) {
// if(empty($stoday) && empty($etoday)){
// $stoday_seach = strtotime(date('Y-m-d 00:00:00',time()));
// $etoday_seach = strtotime(date('Y-m-d 23:59:59',time()));
// }else{
// $stoday_seach = strtotime($stoday);
// $etoday_seach = strtotime($etoday);
// }
// if($v['apply_time'] && $stoday_seach < $v['apply_time']){
// $stoday_seach = $v['apply_time'];
// }
// if($v['quit_time'] && ($etoday > $v['quit_time'])){
// $etoday_seach = $v['quit_time'];
// }
// $transaction_one = db::name('vs_give_gift')
// ->where('from_id',$v['room_id'])
// ->where(['from'=>['in',[2,3,6]],'createtime' => ['between', [$stoday_seach, $etoday_seach]]])
// ->sum('total_price');
// $transaction += $transaction_one;
// }
// return $transaction;
// }
public function getTodayMoney($guild_id,$stoday="",$etoday=""){
$where = [];
$where['guild_id'] = $guild_id;
if(empty($stoday) && empty($etoday)){
$stoday = strtotime(date('Y-m-d 00:00:00'));
$etoday = strtotime(date('Y-m-d 23:59:59'));
$where['createtime'] = ['between', [$stoday, $etoday]];
$where['day'] = date('Y-m-d');
}else{
if(!empty($stoday)){
$where['createtime'] = ['>=', strtotime($stoday."00:00:00")];
$where['createtime'] = ['>=',strtotime($stoday)];
}
if(!empty($etoday)){
$where['createtime'] = ['<=', strtotime($etoday." 23:59:59")];
if(!empty($etime)){
$where['createtime'] = ['<',strtotime($etoday)];
}
if(!empty($stoday) && !empty($etoday)){
$where['createtime'] = ['between', [strtotime($stoday." 00:00:00"), strtotime($etoday." 23:59:59")]];
if(!empty($stime) && !empty($etime)){
$where['createtime'] = [['>=',strtotime($stoday)],['<',strtotime($etoday)]];
}
}
//获取所有工会房间ID
$room_ids = db::name('vs_guild_user')->where('guild_id', $guild_id)->field('room_id')->select();
$room_ids = array_column($room_ids, 'room_id');
$transaction = db::name('vs_give_gift')
->whereIn('from_id',$room_ids)
->where(['from'=>['in',[2,3,6]]])
$guild_flow = db::name('vs_guild_flow')
->where($where)
->sum('total_price');
->sum('flow_price');
return $guild_flow;
}
//获取公会流水
public function getGuildFlow($guild_id=0,$room_id=0,$stoday="",$etoday=""){
$where = [];
if($guild_id!=0) {
$where['guild_id'] = $guild_id;
}
if($room_id!=0){
$where['room_id'] = $room_id;
}
if(!empty($stoday)){
$where['createtime'] = ['>=',strtotime($stoday)];
}
if(!empty($etime)){
$where['createtime'] = ['<',strtotime($etoday)];
}
if(!empty($stime) && !empty($etime)){
$where['createtime'] = [['>=',strtotime($stoday)],['<',strtotime($etoday)]];
}
$guild_flow = db::name('vs_guild_flow')->where($where)->sum('flow_price');
return $guild_flow;
}
/*
*
*工会幸运流水
*/
public function getTodayMoneyLuckyCoin($guild_id,$stoday="",$etoday=""){
//获取所有工会房间ID
$guild_user_data = db::name('vs_guild_user')->where('guild_id', $guild_id)->where(['apply_time'=>['>',0],'status'=>1])->field('room_id,apply_time,createtime,quit_time')->select();
$transaction = 0;
foreach ($guild_user_data as $k => $v) {
$stoday_seach = strtotime("2025-12-21 00:00:00");
$etoday_seach = time();
if(!empty($stoday)){
$stoday_seach = strtotime($stoday);
}
if(!empty($etoday)){
$etoday_seach = strtotime($etoday);
}
if($v['apply_time'] && $stoday_seach < $v['apply_time']){
$stoday_seach = $v['apply_time'];
}
if($v['quit_time'] && ($etoday > $v['quit_time'])){
$etoday_seach = $v['quit_time'];
}
$transaction_one = db::name('vs_room_luck_value')
->where('room_id',$v['room_id'])
->where(['createtime'=>['>=',$stoday_seach]])
->where(['createtime'=>['<',$etoday_seach]])
->sum('luck_value');
$transaction += $transaction_one;
}
return $transaction;
}

View File

@@ -72,22 +72,42 @@ class Room extends Model
*/
public function getRoomFlow($room_id,$stime='',$etime=''){
$give_where = [];
$give_where['from_id'] = $room_id;
$give_where['from'] = ["in",[2,3,6]];
$give_where['room_id'] = $room_id;
// $give_where['from'] = ["in",[2,3,6]];
// $give_where['from'] = 2;
if(!empty($stime)){
$give_where['createtime'] = ['>=',strtotime($stime.' 00:00:00')];
$give_where['createtime'] = ['>=',strtotime($stime)];
}
if(!empty($etime)){
$give_where['createtime'] = ['<=',strtotime($etime.' 23:59:59')];
$give_where['createtime'] = ['<',strtotime($etime)];
}
if(!empty($stime) && !empty($etime)){
$give_where['createtime'] = ['between',[strtotime($stime.' 00:00:00'),strtotime($etime.' 23:59:59')]];
// $give_where['createtime'] = ['between',[strtotime($stime),strtotime($etime)]];
$give_where['createtime'] = [['>=',strtotime($stime)],['<',strtotime($etime)]];
}
$total_price = db::name('vs_give_gift')->where($give_where)
->sum('total_price');
$total_price = db::name('vs_guild_flow')->where($give_where)
->sum('flow_price');
return $total_price;
}
/*
* 房间绑定盘
*/
public function bindPan($room_id){
db::name('vs_room_pan')->where(['room_id'=>$room_id])->delete();
$gift_bag = db::name('vs_gift_bag_detail')->where(['gift_bag_id'=>['in',[10,11,12,13]]])->select();
foreach ($gift_bag as $k=>$v){
$data = [
'room_id'=>$room_id,
'gift_bag_id'=>$v['gift_bag_id'],
'gift_bag_detail_id'=>$v['id'],
'remaining_number'=>$v['quantity'],
'createtime'=>time()
];
db::name('vs_room_pan')->insert($data);
}
return ['code' => 1, 'msg' => '成功', 'data' => null];
}
}

View File

@@ -32,6 +32,7 @@ class Activities extends BaseCom
$data['name'] = $activities_title??"";
$data['gift_bag'] = [];
foreach ($gift_bag as $k=>$v){
$data['gift_bag'][$k]['gift_bag_id'] = $v['id']??0;
$data['gift_bag'][$k]['name'] = $v['title']??"";
$ext = json_decode($v['ext'],true);
$data['gift_bag'][$k]['title1'] = $ext['title1']??"";
@@ -49,17 +50,19 @@ class Activities extends BaseCom
$list[$kk]['base_image'] = localpath_to_netpath("static/image/icon/gold.png");
}elseif ($vv['type'] == 2) {
$gift = DB::name('vs_gift')->where(['gid'=>$vv['foreign_id']])->find();
$list[$kk]['gift_name'] = $gift['gift_name'];
$list[$kk]['num'] = $vv['quantity'];
$list[$kk]['gift_price'] = $gift['gift_price'];
$list[$kk]['type'] =2;
$list[$kk]['base_image'] = $gift['base_image'];
if($gift){
$list[$kk]['gift_name'] = $gift['gift_name'];
$list[$kk]['num'] = $vv['quantity']."";
$list[$kk]['gift_price'] = $gift['gift_price'];
$list[$kk]['type'] =2;
$list[$kk]['base_image'] = $gift['base_image'];
}
} elseif ($vv['type'] == 3) {
$decorate_price = DB::name('vs_decorate_price')->where(['id'=>$vv['foreign_id']])->find();
if($decorate_price){
$gift = DB::name('vs_decorate')->where(['did'=>$decorate_price['did']])->find();
$list[$kk]['gift_name'] = $gift['title']??""; //装扮名称
$list[$kk]['num'] = $decorate_price['day']??0; //天数
$list[$kk]['num'] = $decorate_price['day'].""??0; //天数
$list[$kk]['gift_price'] = $decorate_price['price']??0; //价格
$list[$kk]['type'] =3;
$list[$kk]['base_image'] = $gift['base_image'] ?? "";
@@ -85,8 +88,8 @@ class Activities extends BaseCom
$uid = input('uid',$this->uid);
$permission_status = 1;
//查询是否首充
$is_first_charge = db::name('vs_user_money_log')->where('user_id',$uid)->where('change_type',2)->where('money_type',1)->count();
$permission = DB::name('vs_activities_receive')->where(['activities_id'=>$activities_id,'user_id'=>$uid])->find();
$is_first_charge = db::name('vs_user_money_log')->where('user_id',$uid)->where('change_type',2)->where('money_type',1)->where(['createtime'=>['>=',"1760666400"]])->count();
$permission = DB::name('vs_activities_receive')->where(['activities_id'=>$activities_id,'user_id'=>$uid])->where(['createtime'=>['>=',"1760666400"]])->find();
$system = request()->header('system');
$app_version = request()->header('App-Version');
if(!$app_version){
@@ -95,7 +98,7 @@ class Activities extends BaseCom
$api_version = 0;
if ($system == 'iOS') {
$api_versions = db::name('version')->where(['type' => 2, 'status' => 1])->order('id', 'desc')->find();
$result = version_compare($api_versions['oldversion'],$app_version);
$result = version_compare($api_versions['apiversion'],$app_version);
if ($result < 0) {
$api_version = 1;
}
@@ -127,46 +130,51 @@ class Activities extends BaseCom
//礼包
$gift_bag = DB::name('vs_gift_bag')->where(['activities_id'=>$activities_id,'status'=>1])->find();
$data = [];
$data['gift_bag_id'] = $gift_bag['id']??0;
$data['name'] = $activities['title']??"";
$data['bag_name'] = $gift_bag['title']??"";
$data['effective_time'] = $activities['effective_time']??"";
//规则
$data['rule'] = get_system_config_value('web_site')."/api/Page/page_show?id=13";
$ext = json_decode($gift_bag['ext'],true);
$data['money'] = $ext['money'];
$data['counter']['counter'] = $ext['counter'];
$data['counter']['money'] = $ext['money_str'];
$data['counter']['diamond'] = $ext['diamond'];
$data['money'] = $gift_bag['money'];
$data['counter'] = $ext['counter'];
$data['money_str'] = $ext['money_str'];
$data['diamond'] = $ext['diamond'];
$data['effective_time'] = $ext['activity_end_time']??"";
if(strtotime($ext['activity_end_time']) < time()){
return V(0,'活动已结束!',null);
}
$detail = DB::name('vs_gift_bag_detail')->where(['gift_bag_id'=>$gift_bag['id']])->select();
$data['gift_list'] = [];
foreach ($detail as $k=>$v){
if($v['type'] == 1){
$list[$k]['name'] = "金币";
$list[$k]['gift_name'] = "金币";
$list[$k]['num'] = $v['gold'];
$list[$k]['gold'] = $v['gold'];
$list[$k]['gift_price'] = $v['gold'];
$list[$k]['type'] = 1;
$list[$k]['icon'] = localpath_to_netpath("static/image/icon/gold.png");
$list[$k]['base_image'] = localpath_to_netpath("static/image/icon/gold.png");
}elseif($v['type'] == 2) {
$gift = DB::name('vs_gift')->where(['gid'=>$v['foreign_id']])->find();
$list[$k]['name'] = $gift['gift_name'];
$list[$k]['num'] = $v['quantity'];
$list[$k]['gold'] = $gift['gift_price'];
$list[$k]['gift_name'] = $gift['gift_name'];
$list[$k]['num'] = $v['quantity']."";
$list[$k]['gift_price'] = $gift['gift_price'];
$list[$k]['type'] =2;
$list[$k]['icon'] = $gift['play_image'];
$list[$k]['base_image'] = $gift['base_image'];
} elseif($v['type'] == 3) {
$decorate_price = DB::name('vs_decorate_price')->where(['id'=>$v['foreign_id']])->find();
$gift = DB::name('vs_decorate')->where(['did'=>$decorate_price['did']])->find();
$list[$k]['name'] = $gift['title']; //装扮名称
$list[$k]['num'] = $decorate_price['day']; //天数
$list[$k]['gold'] = $decorate_price['price']; //价格
$list[$k]['gift_name'] = $gift['title']; //装扮名称
$list[$k]['num'] = $decorate_price['day'].""??0; //天数
$list[$k]['gift_price'] = $decorate_price['price']; //价格
$list[$k]['type'] =3;
$list[$k]['icon'] = $gift['base_image'];
$list[$k]['base_image'] = $gift['base_image'];
}elseif($v['type'] == 4) {
$list[$k]['name'] = "钻石";
$list[$k]['gift_name'] = "钻石";
$list[$k]['num'] = $v['quantity'];
$list[$k]['gold'] = $v['gold'];
$list[$k]['gift_price'] = $v['gold'];
$list[$k]['type'] = 4;
$list[$k]['icon'] = localpath_to_netpath("static/image/icon/gold.png");
$list[$k]['base_image'] = localpath_to_netpath("static/image/icon/gold.png");
}
}
$data['gift_list'] = $list;
@@ -177,20 +185,183 @@ class Activities extends BaseCom
{
$activities_id = 3;//天降好礼
$uid = input('uid',$this->uid);
$permission = DB::name('vs_activities_receive')->where(['activities_id'=>$activities_id,'user_id'=>$uid])->find();
if($permission){
return V(1,'操作成功', ['permission'=>0]);
}else{
return V(1,'操作成功', ['permission'=>1]);
//礼包
$gift_bag = DB::name('vs_gift_bag')->where(['activities_id'=>3,'status'=>1])->find();
$permission = 0;
if($gift_bag){
$ext = json_decode($gift_bag['ext'],true);
if($ext['activity_end_time'] <= time()){
$permission = 1;
}
}
return V(1,'操作成功', ['permission'=>$permission]);
}
//天降好礼发放
public function drop_gift_send()
{
$uid = input('uid',$this->uid);
$reslut = model('Activities')->drop_gift_send($uid);
$reslut = model('Activities')->drop_gift_send($uid,16);
return V($reslut['code'],$reslut['msg'], $reslut['data']);
}
//新人好礼
public function new_charge_gift()
{
//活动信息
$activities_id = 7;
$activities_title = DB::name('vs_activities')->where(['id'=>$activities_id,'status'=>1,'delete_time'=>0])->value('title');
//礼包
$gift_bag = DB::name('vs_gift_bag')->where(['activities_id'=>$activities_id,'status'=>1])->select();
$data = [];
$data['name'] = $activities_title??"";
$data['gift_bag'] = [];
//一键领取
$bag_receive_all = DB::name('vs_gift_bag_receive_log')->where(['gift_bag_id'=>17,'user_id'=>$this->uid])->find();
foreach ($gift_bag as $k=>$v){
$data['gift_bag'][$k]['gift_bag_id'] = $v['id']??0;
$data['gift_bag'][$k]['name'] = $v['title']??"";
$ext = json_decode($v['ext'],true);
$data['gift_bag'][$k]['title1'] = $ext['title1']??"";
$data['gift_bag'][$k]['title2'] = $ext['title2']??"";
$data['gift_bag'][$k]['money'] = $ext['money'];
$data['gift_bag'][$k]['gift_list'] = [];
$detail = DB::name('vs_gift_bag_detail')->where(['gift_bag_id'=>$v['id']])->select();
$list = [];
foreach ($detail as $kk=>$vv){
if($vv['type'] == 1){
$list[$kk]['gift_name'] = "金币";
$list[$kk]['num'] = $vv['quantity'];
$list[$kk]['gift_price'] = $vv['gold'];
$list[$kk]['type'] = 1;
$list[$kk]['base_image'] = localpath_to_netpath("static/image/icon/gold.png");
}elseif ($vv['type'] == 2) {
$gift = DB::name('vs_gift')->where(['gid'=>$vv['foreign_id']])->find();
if($gift){
$list[$kk]['gift_name'] = $gift['gift_name'];
$list[$kk]['num'] = $vv['quantity']."";
$list[$kk]['gift_price'] = $gift['gift_price'];
$list[$kk]['type'] =2;
$list[$kk]['base_image'] = $gift['base_image'];
}
} elseif ($vv['type'] == 3) {
$decorate_price = DB::name('vs_decorate_price')->where(['id'=>$vv['foreign_id']])->find();
if($decorate_price){
$gift = DB::name('vs_decorate')->where(['did'=>$decorate_price['did']])->find();
$list[$kk]['gift_name'] = $gift['title']??""; //装扮名称
$list[$kk]['num'] = $decorate_price['day'].""??0; //天数
$list[$kk]['gift_price'] = $decorate_price['price']??0; //价格
$list[$kk]['type'] =3;
$list[$kk]['base_image'] = $gift['base_image'] ?? "";
}
}elseif ($vv['type'] == 4) {
$list[$kk]['gift_name'] = "钻石";
$list[$kk]['num'] = $vv['quantity'];
$list[$kk]['gift_price'] = $vv['gold'];
$list[$kk]['type'] = 4;
$list[$kk]['base_image'] = localpath_to_netpath("static/image/icon/diamond.png");
}
}
$data['gift_bag'][$k]['gift_list'] = array_values($list);
if($bag_receive_all){
$data['gift_bag'][$k]['status'] = 0;
}else{
if($v['id']!=17){
$bag_receive_log = DB::name('vs_gift_bag_receive_log')->where(['gift_bag_id'=>$v['id'],'user_id'=>$this->uid])->find();
if($bag_receive_log){
$data['gift_bag'][$k]['status'] = 0;
} else {
$data['gift_bag'][$k]['status'] = 1;
}
}
}
}
return V(1,'操作成功', $data);
}
//新人好礼发放
public function new_charge_gift_receive()
{
$uid = input('uid',$this->uid);
$money = input('money',0);
$reslut = model('Activities')->new_charge_gift_send($uid,$money);
return V($reslut['code'],$reslut['msg'], $reslut['data']);
}
/*
* 活动权限
*/
public function activities_permission(){
$system = request()->header('system');
$app_version = request()->header('App-Version');
if(!$app_version){
$app_version = input('App-Version');
}
$api_version = 0;
if ($system == 'iOS') {
$api_versions = db::name('version')->where(['type' => 2, 'status' => 1])->order('id', 'desc')->find();
$result = version_compare($api_versions['apiversion'],$app_version);
if ($result < 0) {
$api_version = 1;
}
}
//首充
$activities_id = 1;
$uid = input('uid',$this->uid);
$first_charge_permission = 1;
//查询是否首充
$is_first_charge = db::name('vs_user_money_log')->where('user_id',$uid)->where('change_type',2)->where('money_type',1)->where(['createtime'=>['>=',"1760666400"]])->count();
$permission = DB::name('vs_activities_receive')->where(['activities_id'=>$activities_id,'user_id'=>$uid])->where(['createtime'=>['>=',"1760666400"]])->find();
if($is_first_charge > 0){
$first_charge_permission = 0;
}
if($permission){
$first_charge_permission = 0;
}
//天降好礼
$gift_bag = DB::name('vs_gift_bag')->where(['activities_id'=>3,'status'=>1])->find();
$day_drop_permission = 0;
if($gift_bag){
$ext = json_decode($gift_bag['ext'],true);
if(strtotime($ext['activity_end_time']) >= time()){
$day_drop_permission = 1;
}
}
//新人充值好礼
$activities = DB::name('vs_activities')->where(['id'=>7,'status'=>1,'delete_time'=>0])->find();
if($activities){
$effective_time = $activities['effective_time'];
}else{
$effective_time = 0;
}
$bag_data = DB::name('vs_gift_bag')->where(['activities_id'=>7,'status'=>1,'delete_time'=>0])->select();
$bag_receive_log = DB::name('vs_gift_bag_receive_log')->where(['gift_bag_id'=>['in',array_column($bag_data,'id')],'user_id'=>$uid])->select();
$new_permission = 0;
$user_info = DB::name('user')->where(['id'=>$uid])->find();
if($user_info['createtime']<"1760666400"){
$user_info['createtime'] = 1760666400;
}
if($user_info['createtime'] + $effective_time >= time()){
$new_permission = 1;
}
$gift_bag_log_ids = array_column($bag_receive_log,'gift_bag_id');
if(in_array(17,$gift_bag_log_ids)){
$new_permission = 0;
}else{
$gift_bag_log_ids = array_intersect([14,15,16],$gift_bag_log_ids);
if(count($gift_bag_log_ids) == 3){
$new_permission = 0;
}
}
return V(1,'操作成功',[
'first_charge_permission'=>$first_charge_permission,
'day_drop_permission'=>$day_drop_permission,
'n_people_permission'=>$new_permission
],$api_version);
}
}

View File

@@ -48,4 +48,16 @@ class Banner extends controller
$reslut = model('Banner')->banner_list($show_type);
return V(1,'操作成功', $reslut);
}
//平台客服获取接口
public function app_customer_service()
{
$platform_customer_service = get_system_config_value('platform_customer_service');
$user_id = model('User')->where('user_code', $platform_customer_service)->value('id');
$reslut = [
'user_id' => $user_id,
'user_name' => "客服",
];
return V(1, '成功', $reslut);
}
}

View File

@@ -0,0 +1,101 @@
<?php
namespace app\api\controller;
use app\common\controller\BaseCom;
use think\Cache;
use think\Db;
class BarRoom extends BaseCom
{
//麦位时长列表
public function get_pit_time_list(){
$reslut = model('BarRoom')->get_pit_duration_list();
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//房间麦位时长设置
public function set_pit_time(){
$room_id = input('room_id', 0);
$time = input('time', 0);
$user_id = $this->uid;
if (!$room_id || !$time) {
return V(0, '参数错误');
}
//判断用户是否是主持
$user_is_on_pit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'user_id' => $user_id])->value('pit_number');
if($user_is_on_pit != 9){
return V(0, '没有权限');
}
$reslut = model('BarRoom')->set_pit_duration($room_id, $time);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//约Ta礼物详情
public function get_gift_info_ta(){
$room_id = input('room_id', 0);
$to_user_id =input('to_user_id', 0);
$reslut = model('BarRoom')->get_gift_info_ta($room_id, $to_user_id, $this->uid);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//撩TA
public function liao_ta(){
$room_id = input('room_id', 0);
$to_user_id =input('to_user_id', 0);
$user_id = $this->uid;
$type = input('type', 0);
if($type == 1){
if($user_id == $to_user_id){
return V(0, '不能撩自己');
}
$reslut = model('BarRoom')->liao_ta($room_id,$user_id,$to_user_id);
}else{
$reslut = model('BarRoom')->one_key_liao_ta($room_id,$user_id);
}
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//约TA
public function meeting_ta(){
$key_name = "api:meeting:ta:" . $this->uid;
redis_lock_exits($key_name);
$room_id = input('room_id', 0);
$user_id =input('user_id', 0);
$gift_id =input('gift_id', 0);
if(!$room_id || !$user_id || !$gift_id){
redis_unlocks($key_name);
return V(0, '参数错误');
}
//获取缓存
$meet_user_id = Cache::get('meeting_user_id_'.$user_id);
if($meet_user_id == $user_id){
redis_unlocks($key_name);
return V(0, '佳人有约!');
}
//设置缓存
Cache::set('meeting_user_id_'.$user_id, $user_id, 20);
$reslut = model('BarRoom')->meeting_ta($this->uid,$room_id,$user_id,$gift_id);
if($reslut['code'] != 1){
//删除缓存
Cache::rm('meeting_user_id_'.$user_id);
}
redis_unlocks($key_name);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//小黑屋列表
public function black_room_list(){
$room_id = input('room_id', 0);
$reslut = model('BarRoom')->black_room_list($room_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
}

View File

@@ -0,0 +1,150 @@
<?php
namespace app\api\controller;
use app\common\controller\BaseCom;
use think\Controller;
use think\Db;
/*
* 盲盒转盘
* 2025-08-16
*/
class BlindBoxTurntable extends BaseCom
{
protected function initialize()
{
//允许跨域
header('Access-Control-Allow-Origin: *');
}
/*
* 获取活动奖池礼物列表
*/
public function get_gift_list(){
$gift_bag_id = input('gift_bag_id',0);
$room_id = input('room_id',0);
$reslut = model('BlindBoxTurntableGift')->get_gift_list($gift_bag_id,$room_id);
return v($reslut['code'], $reslut['msg'], $reslut['data']);
}
/*
* 抽奖
*
*/
public function draw_gift(){
$gift_bag_id = input('gift_bag_id',0);
$user_id = $this->uid;
$room_id = input('room_id',0);
$gift_user_ids = input('gift_user_ids',0);
$num = input('num',1);
$heart_id = input('heart_id',0);
$auction_id = input('auction_id',0);
if(!in_array($gift_bag_id,[10,11,12])){
return v(0,'非法活动ID', null);
}
//删除字符串里所有的空格
$gift_user_ids = preg_replace('/\s+/', '', $gift_user_ids);
if($gift_bag_id==10){
$reslut = model('api/BlindBoxTurntableGiftDrawWorldNew')->draw_gift($gift_bag_id, $user_id, $gift_user_ids,$num,$room_id,$heart_id,$auction_id);
}else{
$reslut = model('api/BlindBoxTurntableGiftDrawWorldNew')->draw_gift_drop_bag($gift_bag_id, $user_id,$num,$room_id);
}
return v($reslut['code'], $reslut['msg'], $reslut['data']);
}
/*
* 礼物发放
*/
public function gift_send(){
// $key_name = "api:blind_box_turntable:gift_send:" . $this->uid;
// redis_lock_exit($key_name);
$send_id = input('send_id',0);
$reslut = model('BlindBoxTurntableGift')->gift_send($send_id);
// redis_unlock($key_name);
return v($reslut['code'], $reslut['msg'], $reslut['data']);
}
/*
* 获取我的抽奖记录
*/
public function get_my_record(){
$user_id = $this->uid;
$gift_bag_id = input('gift_bag_id',0);
$page = input('page',1);
$page_size = input('page_size',12);
$reslut = model('BlindBoxTurntableGift')->get_user_record($gift_bag_id,$user_id,$page,$page_size);
return v($reslut['code'], $reslut['msg'], $reslut['data']);
}
/*
* 获取全服抽奖记录
*/
// public function get_all_record(){
// $gift_bag_id = input('gift_bag_id',0);
// $page = input('page',1);
// $page_size = input('page_size',12);
// $reslut = model('BlindBoxTurntableGift')->get_all_record($gift_bag_id,$page,$page_size);
// return v($reslut['code'], $reslut['msg'], $reslut['data']);
// }
/*
* 巡乐会
*/
public function xlh(){
$room_id = input('room_id',0);
$reslut = model('BlindBoxTurntableGift')->xlh_gift_list($room_id);
return v($reslut['code'], $reslut['msg'], $reslut['data']);
}
/*
* 巡乐会抽奖
*/
public function xlh_draw_gift(){
$user_id = $this->uid;
$room_id = input('room_id',0);
$num = input('num',1);
$reslut = model('BlindBoxTurntableGiftDrawWorldNew')->xlh_draw_gift($user_id,$num,$room_id);
return v($reslut['code'], $reslut['msg'], $reslut['data']);
}
/*
* 获取我的巡乐会记录
*/
public function get_xlh_my_record(){
$page = input('page',1);
$page_size = input('page_size',12);
$user_id = $this->uid;
$room_id = input('room_id',0);
$reslut = model('BlindBoxTurntableGift')->xlh_get_user_record($user_id,$room_id,$page,$page_size);
return v($reslut['code'], $reslut['msg'], $reslut['data']);
}
/*
* 获取全服巡乐会记录(榜单)
*/
public function get_xlh_all_record(){
$page = input('page',1);
$page_size = input('page_size',12);
$room_id = input('room_id',0);
$reslut = model('BlindBoxTurntableGift')->xlh_ranking($room_id,$page,$page_size);
return v($reslut['code'], $reslut['msg'], $reslut['data']);
}
/*
* 巡乐会榜单 (以期数显示)
*/
public function get_xlh_ranking(){
$page = input('page',1);
$page_size = input('page_size',12);
$room_id = input('room_id',0);
$reslut = model('BlindBoxTurntableGift')->xlh_ranking_list($room_id,$page,$page_size);
return v($reslut['code'], $reslut['msg'], $reslut['data']);
}
/*
* 盲盒转盘状态
* 1.开启 2.关闭
*/
public function blind_box_status(){
$reslut = model('BlindBoxTurntableGift')->blind_box_status();
return v($reslut['code'], $reslut['msg'], $reslut['data']);
}
}

View File

@@ -6,10 +6,12 @@ use think\Controller;
use think\Db;
use think\Log;
class Ceshi extends Controller
class Ceshi extends Controllers
{
//测试 发送各种消息
//设置白名单ip访问本类接口
protected $allowIp = [
'113.201.181.82'
];
//发送群组系统消息
public function send_group_system_notification()
@@ -145,631 +147,6 @@ class Ceshi extends Controller
return V(1, '成功', $reslut);
}
//清空数据 禁用 慎用
//清空数据 禁用 慎用
//清空数据 禁用 慎用
public function clear_data()
{
$i = 0;
$res = [];
//开启事务
Db::startTrans();
// $reslut = db::name('admin')->where('username','<>', 'admin')->delete();
// if($reslut){
// $i ++ ;
// }else{
// //数组末尾添加元素
// array_push($res, '管理员删除失败!');
// }
$reslut1 = db::name('admin_log')->where('id','<>', 1)->delete();
if($reslut1){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '管理员日志删除失败!');
}
$reslut3 = db::name('block')->where('id','>', 0)->delete();
if($reslut3){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '封禁表删除失败!');
}
$reslut6 = db::name('sms')->where('id','>', 0)->delete();
if($reslut6){
$i ++ ;
}else{
//数组末尾添加元素
array_push($res, '短信发送记录删除失败!');
}
$reslut7 = db::name('system_message')->where('id','>', 0)->delete();
if($reslut7){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '系统消息删除失败!');
}
// $reslut8 = db::name('topic')->where('id','>', 0)->delete();
// if($reslut8){
// $i++ ;
// }else{
// //数组末尾添加元素
// array_push($res, '话题删除失败!');
// }
$user = db::name('user')->where('id','>', 0)->select();
if($user){
foreach ($user as &$v){
if($v['id']){
$j = 0;
$data[$j] = [
'UserID' => 'u'.$v['id'],
];
}
model('Tencent')->account_deletes($data);
}
}
$reslut9 = db::name('user')->where('id','>', 0)->delete();
if($reslut9){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户删除失败!');
}
$reslut10 = db::name('user_album')->where('id','>', 0)->delete();
if($reslut10){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户相册删除失败!');
}
$reslut11 = db::name('user_album_image')->where('id','>', 0)->delete();
if($reslut11){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户相册图片删除失败!');
}
$reslut12 = db::name('user_auth')->where('id','>', 0)->delete();
if($reslut12){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户实名删除失败!');
}
$reslut13 = db::name('user_avatar_log')->where('id','>', 0)->delete();
if($reslut13){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户头像修改记录删除失败!');
}
$reslut14 = db::name('user_black')->where('id','>', 0)->delete();
if($reslut14){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户黑名单删除失败!');
}
$reslut141 = db::name('user_coin_transfer')->where('id','>', 0)->delete();
if($reslut141){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户金币转让删除失败!');
}
$reslut15 = db::name('user_data')->where('id','>', 0)->delete();
if($reslut15){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户数据删除失败!');
}
$reslut16 = db::name('user_exchange')->where('id','>', 0)->delete();
if($reslut16){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户积分兑换记录删除失败!');
}
$reslut17 = db::name('user_follow')->where('id','>', 0)->delete();
if($reslut17){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户关注删除失败!');
}
$reslut18 = db::name('user_message')->where('id','>', 0)->delete();
if($reslut18){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户消息删除失败!');
}
// $reslut19 = db::name('user_money_log')->where('id','>', 0)->delete();
// if($reslut19){
// $i++ ;
// }else{
// //数组末尾添加元素
// array_push($res, '用户余额记录删除失败!');
// }
$reslut20 = db::name('user_token')->where('id','>', 0)->delete();
if($reslut20){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户token删除失败');
}
$reslut21 = db::name('user_visit_log')->where('id','>', 0)->delete();
if($reslut21){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户访问记录删除失败!');
}
$reslut22 = db::name('user_wallet')->where('id','>', 0)->delete();
if($reslut22){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户钱包删除失败!');
}
$reslut23 = db::name('user_zone')->where('id','>', 0)->delete();
if($reslut23){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户空间删除失败!');
}
$reslut24 = db::name('user_zone_comment')->where('id','>', 0)->delete();
if($reslut24){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户空间评论删除失败!');
}
$reslut25 = db::name('user_zone_like')->where('id','>', 0)->delete();
if($reslut25){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户空间点赞删除失败!');
}
$reslut26 = db::name('user_zone_rewards')->where('id','>', 0)->delete();
if($reslut26){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户空间打赏列表删除失败!');
}
$reslut261 = db::name('user_zone_topic')->where('id','>', 0)->delete();
if($reslut261){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '动态话题关联删除失败!');
}
$reslut262 = db::name('vs_activities_receive')->where('id','>', 0)->delete();
if($reslut262){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '活动参加删除失败!');
}
$reslut263 = db::name('vs_admin_recharge_log')->where('arid','>', 0)->delete();
if($reslut263){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '后台充值删除失败!');
}
$reslut27 = db::name('vs_gift_bag_receive_log')->where('id','>', 0)->delete();
if($reslut27){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户礼物发放删除失败!');
}
$reslut28 = db::name('vs_give_gift')->where('id','>', 0)->delete();
if($reslut28){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户送礼记录删除失败!');
}
$reslut29 = db::name('vs_give_gift_ratio_log')->where('id','>', 0)->delete();
if($reslut29){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户送礼当前利率记录删除失败!');
}
//解散群
$group = db::name('vs_guild')->select();
foreach ($group as &$value){
model('Tencent')->delete_group('g'.$value['id']);
}
$reslut30 = db::name('vs_guild')->where('id','>', 0)->delete();
if($reslut30){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户工会删除失败!');
}
$reslut31 = db::name('vs_guild_subsidy')->where('id','>', 0)->delete();
if($reslut31){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户工会补贴删除失败!');
}
$reslut32 = db::name('vs_guild_user')->where('id','>', 0)->delete();
if($reslut32){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户工会用户删除失败!');
}
$reslut33 = db::name('vs_guild_user_quit_log')->where('id','>', 0)->delete();
if($reslut33){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户退出工会记录删除失败!');
}
$reslut34 = db::name('vs_headline')->where('id','>', 0)->delete();
if($reslut34){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '头条记录删除失败!');
}
//删除腾讯房间
$room = db::name('vs_room')->select();
foreach ($room as &$value){
model('Tencent')->delete_group('room'.$value['id']);
}
$reslut35 = db::name('vs_room')->where('id','>', 0)->delete();
if($reslut35){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '房间删除失败!');
}
$reslut36 = db::name('vs_room_auction')->where('auction_id','>', 0)->delete();
if($reslut36){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '房间竞拍删除失败!');
}
$reslut37 = db::name('vs_room_auction_bid_log')->where('id','>', 0)->delete();
if($reslut37){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '房间竞拍记录删除失败!');
}
$reslut371 = db::name('vs_room_auction_relation')->where('id','>', 0)->delete();
if($reslut371){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户拍得关系删除失败!');
}
$reslut372 = db::name('vs_room_auction_relation_top')->where('id','>', 0)->delete();
if($reslut372){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '关系卡、位 置顶表删除失败!');
}
$reslut373 = db::name('vs_room_background')->where('id','>', 2)->delete();
if($reslut373){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '房间背景图片表删除失败!');
}
$reslut38 = db::name('vs_room_black')->where('id','>', 0)->delete();
if($reslut38){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '房间黑名单删除失败!');
}
$reslut39 = db::name('vs_room_cp_movie')->where('cp_id','>', 0)->delete();
if($reslut39){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, 'cp房间删除失败');
}
$reslut40 = db::name('vs_room_host')->where('id','>', 0)->delete();
if($reslut40){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '房间主持删除失败!');
}
$reslut41 = db::name('vs_room_operation_log')->where('id','>', 0)->delete();
if($reslut41){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '房间日志删除失败!');
}
$reslut42 = db::name('vs_room_pit')->where('id','>', 0)->delete();
if($reslut42){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '房间坑位删除失败!');
}
$reslut43 = db::name('vs_room_pit_apply')->where('id','>', 0)->delete();
if($reslut43){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '房间坑位申请删除失败!');
}
$reslut44 = db::name('vs_room_pit_apply_help')->where('id','>', 0)->delete();
if($reslut44){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '房间坑位申请帮助删除失败!');
}
$reslut45 = db::name('vs_room_pit_apply_help_gift')->where('id','>', 0)->delete();
if($reslut45){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '房间坑位申请帮助礼物删除失败!');
}
$reslut46 = db::name('vs_room_pit_simulate')->where('id','>', 0)->delete();
if($reslut46){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '房间坑位模拟删除失败!');
}
$reslut47 = db::name('vs_room_pk')->where('pk_id','>', 0)->delete();
if($reslut47){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '房间pk删除失败');
}
$reslut48 = db::name('vs_room_song')->where('did','>', 0)->delete();
if($reslut48){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '房间歌曲删除失败!');
}
$reslut49 = db::name('vs_room_subsidy')->where('id','>', 0)->delete();
if($reslut49){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '房间补贴删除失败!');
}
$reslut50 = db::name('vs_room_user_charm')->where('id','>', 0)->delete();
if($reslut50){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '房间用户魅力删除失败!');
}
$reslut51 = db::name('vs_room_user_muted')->where('id','>', 0)->delete();
if($reslut51){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '房间用户禁言删除失败!');
}
$reslut52 = db::name('vs_room_visitor')->where('id','>', 0)->delete();
if($reslut52){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '房间访客删除失败!');
}
$reslut53 = db::name('vs_suggest')->where('id','>', 0)->delete();
if($reslut53){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '建议删除失败!');
}
$reslut54 = db::name('vs_user_daily_tasks')->where('id','>', 0)->delete();
if($reslut54){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户日常任务删除失败!');
}
$reslut55 = db::name('vs_user_decorate')->where('udid','>', 0)->delete();
if($reslut55){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户装扮表删除失败!');
}
$reslut56 = db::name('vs_user_decorate_log')->where('udid','>', 0)->delete();
if($reslut56){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户装扮日志删除失败!');
}
$reslut57 = db::name('vs_user_exp_day')->where('id','>', 0)->delete();
if($reslut57){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户每日经验删除失败!');
}
$reslut58 = db::name('vs_user_gift_pack')->where('pid','>', 0)->delete();
if($reslut58){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户礼物背包删除失败!');
}
$reslut59 = db::name('vs_user_gift_pack_log')->where('id','>', 0)->delete();
if($reslut59){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户礼物背包日志删除失败!');
}
$reslut60 = db::name('vs_user_inform')->where('id','>', 0)->delete();
if($reslut60){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户举报删除失败!');
}
$reslut61 = db::name('vs_user_invited')->where('id','>', 0)->delete();
if($reslut61){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户邀请删除失败!');
}
$reslut62 = db::name('vs_user_invited_income_log')->where('id','>', 0)->delete();
if($reslut62){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户邀请收入日志删除失败!');
}
$reslut63 = db::name('vs_user_live_remind')->where('id','>', 0)->delete();
if($reslut63){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户直播提醒删除失败!');
}
$reslut64 = db::name('vs_user_money_log')->where('log_id','>', 0)->delete();
if($reslut64){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户钱包日志删除失败!');
}
$reslut641 = db::name('vs_user_pk_close')->where('id','>', 0)->delete();
if($reslut641){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户钱包日志删除失败!');
}
$reslut65 = db::name('vs_user_recharge')->where('rid','>', 0)->delete();
if($reslut65){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户充值删除失败!');
}
$reslut66 = db::name('vs_user_tasks_sign_in')->where('id','>', 0)->delete();
if($reslut66){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户任务签到删除失败!');
}
$reslut661 = db::name('vs_user_withdrawal')->where('wid','>', 0)->delete();
if($reslut661){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户提现表删除失败!');
}
$reslut662 = db::name('vs_user_zone_manjiujiang')->where('id','>', 0)->delete();
if($reslut662){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户发动态满九张图表删除失败!');
}
$reslut67 = db::name('vs_wealth_level_log')->where('id','>', 0)->delete();
if($reslut67){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '财富等级日志删除失败!');
}
//数据提交
db::commit();
return V(1, '成功'.$i.'条数据!', $res);
}
//测试富文本消息
public function test_rich_text(){
@@ -791,6 +168,27 @@ class Ceshi extends Controller
//测试异步信息
public function test_async_info(){
// 创建子进程
$pid = pcntl_fork();
if ($pid == -1) {
die('无法创建子进程');
} elseif ($pid) {
// 父进程
echo "父进程继续执行\n";
// 父进程不等待子进程
} else {
// 子进程
sleep(5);
Log::record("子进程5秒后执行".json_encode($pid),"infoss");
echo "子进程5秒后执行\n";
exit(0); // 子进程结束
}
echo "父进程继续执行其他代码\n";
}

View File

@@ -5,23 +5,109 @@ namespace app\api\controller;
class Cron
{
//每秒执行
/*
*拍卖房结束提醒
* Pk房连线中倒计时结束操作PK结束
* Pk房PK进行中倒计时结束操作PK结束
* Pk房PK结束惩罚倒计时结束断开操作
* 房间红包清退
* pk发起10秒后无应答拒绝
* 提现云账号订单状态查询
* 签约房时间结束处理
* 签约到期处理
*/
public function PerformPerSecond()
{
$cron = new \app\cron\controller\PerformPerSecond();
$cron->index();
}
//每周执行
/*工会补贴生成开始
*房间补贴生成开始
*/
public function PerformPerWeek()
{
$cron = new \app\cron\controller\Subsidy();
$cron->index();
}
//经业务调整 暂时不要了
//每10秒执行
public function TenSeconds()
{
$cron = new \app\cron\controller\TenSeconds();
$cron->index();
}
//每天执行
/*
* 清除房间热度值
* 系统降身价
* 过期验证码删除
*/
public function DaySeconds()
{
$cron = new \app\cron\controller\DaySeconds();
$cron->index();
}
//巡乐会结束 礼物发放 3S执行一次
/*
* 巡乐会礼物发放开始
*盲盒转盘礼物补发
* 保持心跳
*/
public function XlhSend(){
$cron = new \app\cron\controller\RoomPan();
$cron->index();
}
//交友房结束
/*
* 清除交友房过期未结束数据开始
* 清除私密小屋过期数据开始
*/
public function FriendEnd(){
$cron = new \app\cron\controller\FriendEnd();
$cron->index();
}
//每小时执行一次
/*
* 小时榜 开始发礼物
* 清除房间离线超1小时的用户
*/
public function RoomHourRanking(){
$cron = new \app\cron\controller\RoomHourRanking();
$cron->index();
}
//每日执行每天23点59分执行
/*
* 每日任务开始
*
*/
public function DayTask(){
$cron = new \app\cron\controller\AppTodayStatistical();
$cron->index();
}
//临时
public function teset(){
$cron = new \app\cron\controller\Test();
$cron->index();
}
}

View File

@@ -43,7 +43,7 @@ class Decorate extends BaseCom
$data = [];
$reslut = model('Decorate')->get_decorate_detail($did);
//当前用户金币
$user_coin = db::name('user_wallet')->where(['user_id' => $this->uid])->value('coin');
$user_coin = db::name('user_wallet_coin')->where(['user_id' => $this->uid])->value('coin');
$data['user_info']['user_id'] = $this->uid;
$data['user_info']['user_coin'] = intval($user_coin);
$data['decorate'] = $reslut['data'];
@@ -55,12 +55,13 @@ class Decorate extends BaseCom
$did = input('did', 0);
$day = input('day', 1);
$user_id = input('user_id', 0);
$num = input('num', 1);
$keyname = "api:Decorate:pay_decorate:uid:".$uid;
redis_lock_exit($keyname);
if($user_id){//购买装扮 赠送好友
$reslut = model('Decorate')->pay_decorate($user_id, $did, $day,4,$uid);
$reslut = model('Decorate')->pay_decorate($user_id, $did, $day,4,$uid,'', $num);
}else{
$reslut = model('Decorate')->pay_decorate($uid, $did, $day,1);
$reslut = model('Decorate')->pay_decorate($uid, $did, $day,1,0,'', $num);
}
redis_unlock($keyname);
return v($reslut['code'], $reslut['msg'], $reslut['data']);

View File

@@ -0,0 +1,53 @@
<?php
namespace app\api\controller;
use app\common\controller\BaseCom;
use think\Db;
class Family extends BaseCom
{
//我的家族
public function myFamily()
{
$reslut = model('Family')->myFamily($this->uid);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//我加入的家族
public function myJoinFamily()
{
$user_id = db::name('vs_user_sign')->where(['sign_user_id' => $this->uid,'end_time' => ['>',time()]])->value('parent_user_id');
if(!$user_id){
return V(0, '没有加入家族');
}
$reslut = model('Family')->myFamily($user_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//家族收益详情
public function familyEarnings()
{
$user_id = input('user_id',0);//族长 id
$where = ['a.user_id' => $user_id];
if(input('start_time')){
$where['a.createtime'][] = ['>', strtotime(input('start_time'))];
}
if(input('end_time')){
$where['a.createtime'][] = ['<', strtotime(input('end_time'))];
}
$reslut = db::name('vs_user_sign_earnings')->alias('a')
->join('user b','a.sign_user_id = b.id')
->join('vs_gift g','a.gift_id = g.gid')
->field('b.nickname,b.avatar,b.user_code,a.earnings,a.createtime,g.gift_name,g.gift_price')
->where($where)
->order('a.createtime desc')
->page(input('page',1),30)
->select();
return V(1, '成功', $reslut);
}
}

View File

@@ -0,0 +1,65 @@
<?php
namespace app\api\controller;
use app\common\controller\BaseCom;
class Friend extends BaseCom
{
//交友开始
public function start_friend(){
$key_name = "api:friend:start_friend:" . $this->uid;
redis_lock_exits($key_name);
$room_id = input('room_id', '');
$reslut = model('Friend')->start_friend($this->uid,$room_id);
redis_unlocks($key_name);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//交友延时
public function delay(){
$friend_id = input('friend_id', '');
$room_id = input('room_id', '');
$delay_times = input('delay_times', '');//分钟
$reslut = model('Friend')->delay($this->uid,$room_id,$friend_id,$delay_times);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//交友结束
public function end_friend(){
$friend_id = input('friend_id', '');
$room_id = input('room_id', '');
$result = model('Friend')->end_friend($this->uid,$room_id,$friend_id);
return V($result['code'], $result['msg'], $result['data']);
}
//卡关系 创建关系
public function create_relation()
{
$key_name = "api:friend:create_relation:" . $this->uid;
redis_lock_exits($key_name);
$room_id = input('room_id', '');
$friend_id = input('friend_id', '');
$user1_id = input('user1_id', '');
$user2_id = input('user2_id', '');
$relation_id = input('relation_id', '');
$result = model('Friend')->createRelation($this->uid,$room_id,$friend_id,$user1_id,$user2_id,$relation_id);
redis_unlocks($key_name);
return V($result['code'], $result['msg'], $result['data']);
}
//退出私密小屋
public function out_room()
{
$room_id = input('room_id', '');
$result = model('Friend')->outRoom($this->uid,$room_id);
return V($result['code'], $result['msg'], $result['data']);
}
}

View File

@@ -25,7 +25,9 @@ class Gift extends BaseCom
public function get_gift_list()
{
$label = input('label',0);
$reslut = model('Gift')->get_gift_list($label);
$room_id = input('room_id',0);
$user_id = $this->uid ?? 0;
$reslut = model('Gift')->get_gift_list($label,$room_id,$user_id);
return V($reslut['code'],$reslut['msg'], $reslut['data']);
}
//聊天送礼物 (音信)

View File

@@ -0,0 +1,301 @@
<?php
namespace app\api\controller;
use app\common\controller\BaseCom;
use app\common\model\GiveGiftBase;
use think\Cache;
use think\Log;
class GiftBase extends BaseCom
{
protected $noNeedLogin = [];
protected $noNeedRight = ['*'];
protected $giftModel;
public function _initialize()
{
parent::_initialize();
$this->giftModel = new GiveGiftBase();
}
/**
* 获取送礼记录
*/
public function getGiftRecords()
{
$params = $this->request->param();
$where = [];
$options = [];
// 构建查询条件
if (!empty($params['from_id'])) {
$where['from_id'] = $params['from_id'];
}
if (!empty($params['user_id'])) {
$where['user_id'] = $params['user_id'];
}
if (!empty($params['gift_user'])) {
$where['gift_user'] = $params['gift_user'];
}
if (!empty($params['gift_id'])) {
$where['gift_id'] = $params['gift_id'];
}
if (!empty($params['type'])) {
$where['type'] = $params['type'];
}
if (!empty($params['from'])) {
$where['from'] = $params['from'];
}
if (!empty($params['gift_type'])) {
$where['gift_type'] = $params['gift_type'];
}
// 时间范围
if (!empty($params['start_time'])) {
$options['start_time'] = intval($params['start_time']);
}
if (!empty($params['end_time'])) {
$options['end_time'] = intval($params['end_time']);
}
// 分页参数
$options['page'] = $params['page'] ?? 1;
$options['limit'] = min($params['limit'] ?? 20, 100); // 限制最大100条
// 排序
if (!empty($params['order'])) {
$options['order'] = $params['order'];
}
// 查询数据
$result = $this->giftModel->getGiftRecords($where, $options);
Log::info("查询送礼记录,条件: " . json_encode($where) . ", 结果数: " . count($result['data']));
$this->success('获取成功', $result);
}
/**
* 房间送礼统计
*/
public function getRoomStatistics()
{
$fromId = $this->request->param('from_id/d', 0);
$startTime = $this->request->param('start_time/d', strtotime('-7 days'));
$endTime = $this->request->param('end_time/d', time());
if (!$fromId) {
$this->error('房间ID不能为空');
}
// 尝试从缓存获取
$cacheKey = "gift:room:stats:{$fromId}:" . date('Ymd', $startTime) . '-' . date('Ymd', $endTime);
$cachedData = Cache::get($cacheKey);
if ($cachedData !== false) {
Log::info("从缓存获取房间统计: {$cacheKey}");
$this->success('获取成功', $cachedData);
}
$where = ['from_id' => $fromId];
$options = [
'start_time' => $startTime,
'end_time' => $endTime,
];
// 统计房间总数据
$totalStats = $this->giftModel->getGiftStatistics($where, $options);
// 按送礼人分组统计
$userStats = $this->giftModel->getGiftStatistics($where, array_merge($options, [
'group_by' => 'user_id'
]));
// 按收礼人分组统计
$receiverStats = $this->giftModel->getGiftStatistics($where, array_merge($options, [
'group_by' => 'gift_user'
]));
$result = [
'room_id' => $fromId,
'time_range' => [
'start_time' => $startTime,
'end_time' => $endTime,
'start_date' => date('Y-m-d H:i:s', $startTime),
'end_date' => date('Y-m-d H:i:s', $endTime),
],
'total_stats' => $totalStats,
'user_stats' => $userStats,
'receiver_stats' => $receiverStats,
];
// 缓存5分钟
Cache::set($cacheKey, $result, 300);
Log::info("房间统计计算完成: {$fromId}, 送礼人数: " . count($userStats) . ", 收礼人数: " . count($receiverStats));
$this->success('获取成功', $result);
}
/**
* 用户送礼统计
*/
public function getUserStatistics()
{
$userId = $this->request->param('user_id/d', 0);
$startTime = $this->request->param('start_time/d', strtotime('-30 days'));
$endTime = $this->request->param('end_time/d', time());
if (!$userId) {
$this->error('用户ID不能为空');
}
$cacheKey = "gift:user:stats:{$userId}:" . date('Ymd', $startTime) . '-' . date('Ymd', $endTime);
$cachedData = Cache::get($cacheKey);
if ($cachedData !== false) {
Log::info("从缓存获取用户统计: {$cacheKey}");
$this->success('获取成功', $cachedData);
}
$where = ['user_id' => $userId];
$options = [
'start_time' => $startTime,
'end_time' => $endTime,
];
// 用户总送礼统计
$totalStats = $this->giftModel->getGiftStatistics($where, $options);
// 按房间分组统计
$roomStats = $this->giftModel->getGiftStatistics($where, array_merge($options, [
'group_by' => 'from_id'
]));
// 按收礼人分组统计
$receiverStats = $this->giftModel->getGiftStatistics($where, array_merge($options, [
'group_by' => 'gift_user'
]));
$result = [
'user_id' => $userId,
'time_range' => [
'start_time' => $startTime,
'end_time' => $endTime,
'start_date' => date('Y-m-d H:i:s', $startTime),
'end_date' => date('Y-m-d H:i:s', $endTime),
],
'total_stats' => $totalStats,
'room_stats' => $roomStats,
'receiver_stats' => $receiverStats,
];
// 缓存5分钟
Cache::set($cacheKey, $result, 300);
Log::info("用户统计计算完成: {$userId}, 房间数: " . count($roomStats) . ", 收礼人数: " . count($receiverStats));
$this->success('获取成功', $result);
}
/**
* 收礼统计
*/
public function getReceiveStatistics()
{
$giftUser = $this->request->param('gift_user/d', 0);
$startTime = $this->request->param('start_time/d', strtotime('-30 days'));
$endTime = $this->request->param('end_time/d', time());
if (!$giftUser) {
$this->error('用户ID不能为空');
}
$cacheKey = "gift:receive:stats:{$giftUser}:" . date('Ymd', $startTime) . '-' . date('Ymd', $endTime);
$cachedData = Cache::get($cacheKey);
if ($cachedData !== false) {
Log::info("从缓存获取收礼统计: {$cacheKey}");
$this->success('获取成功', $cachedData);
}
$where = ['gift_user' => $giftUser];
$options = [
'start_time' => $startTime,
'end_time' => $endTime,
];
// 总收礼统计
$totalStats = $this->giftModel->getGiftStatistics($where, $options);
// 按房间分组统计
$roomStats = $this->giftModel->getGiftStatistics($where, array_merge($options, [
'group_by' => 'from_id'
]));
// 按送礼人分组统计
$giverStats = $this->giftModel->getGiftStatistics($where, array_merge($options, [
'group_by' => 'user_id'
]));
$result = [
'gift_user' => $giftUser,
'time_range' => [
'start_time' => $startTime,
'end_time' => $endTime,
'start_date' => date('Y-m-d H:i:s', $startTime),
'end_date' => date('Y-m-d H:i:s', $endTime),
],
'total_stats' => $totalStats,
'room_stats' => $roomStats,
'giver_stats' => $giverStats,
];
// 缓存5分钟
Cache::set($cacheKey, $result, 300);
Log::info("收礼统计计算完成: {$giftUser}, 房间数: " . count($roomStats) . ", 送礼人数: " . count($giverStats));
$this->success('获取成功', $result);
}
/**
* 获取送礼趋势
*/
public function getGiftTrend()
{
$params = $this->request->param();
$startTime = $params['start_time'] ?? strtotime('-7 days');
$endTime = $params['end_time'] ?? time();
$interval = $params['interval'] ?? 'day';
if (!in_array($interval, ['day', 'week', 'month'])) {
$interval = 'day';
}
$cacheKey = "gift:trend:" . date('Ymd', $startTime) . '-' . date('Ymd', $endTime) . ":{$interval}";
$cachedData = Cache::get($cacheKey);
if ($cachedData !== false) {
$this->success('获取成功', $cachedData);
}
$trendData = $this->giftModel->getTrendStatistics($startTime, $endTime, $interval);
// 缓存10分钟
Cache::set($cacheKey, $trendData, 600);
$this->success('获取成功', [
'trend_data' => $trendData,
'interval' => $interval,
'time_range' => [
'start_time' => $startTime,
'end_time' => $endTime
]
]);
}
}

View File

@@ -0,0 +1,48 @@
<?php
namespace app\api\controller;
use app\common\controller\BaseCom;
class GiftNew extends BaseCom
{
/*
* 获取礼物列表
* @param int $label 礼物标签
* @param int $type 类型1-房间送礼礼物2-排麦设置插麦礼物3-拍卖位选择拍卖礼物4-歌手添加歌单礼物5-动态打赏礼物
* @return array
*/
public function get_gift_list()
{
$key_name = "api:gift_new:get_gift_list:" . $this->uid;
redis_lock_exits($key_name);
$label = input('label', 0);
$type = input('type');
if (empty($type)) {
return V(0, 'type参数错误');
}
$reslut = model('GiftNew')->get_gift_list($this->uid, $type, $label);
redis_unlocks($key_name);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
/*
* 酒吧房-自定义礼物设置
*/
public function set_custom_gift(){
$gift_id = input('gift_id', 0);
$room_id = input('room_id', 0);
$gift_remark_name = input('gift_remark_name', '');
$reslut = model('GiftNew')->set_custom_gift($this->uid, $gift_id, $room_id, $gift_remark_name);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
/*
* 获取自定义礼物列表
*/
public function get_custom_gift_list(){
$user_id = input('user_id', 0); //收礼人用户Id
$reslut = model('GiftNew')->get_custom_gift_list($user_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
}

View File

@@ -0,0 +1,179 @@
<?php
namespace app\api\controller;
use app\common\library\GiftQueue;
use think\Log;
use app\common\controller\BaseCom;
class GiveGiftBase extends BaseCom
{
protected $noNeedLogin = [];
protected $noNeedRight = ['*'];
/**
* 送礼接口
*/
public function give()
{
$params = $this->request->param();
// 验证必要参数
$required = ['user_id', 'gift_id', 'gift_user', 'from_id'];
foreach ($required as $field) {
if (empty($params[$field])) {
$this->error("{$field}不能为空");
}
}
// 构建送礼数据
$giftData = [
'user_id' => intval($params['user_id']),
'gift_id' => intval($params['gift_id']),
'gift_type' => intval($params['gift_type'] ?? 1),
'number' => intval($params['number'] ?? 1),
'gift_user' => intval($params['gift_user']),
'from_id' => intval($params['from_id']),
'pit_number' => intval($params['pit_number'] ?? 0),
'total_price' => floatval($params['total_price'] ?? 0),
'type' => intval($params['type'] ?? 1),
'from' => intval($params['from'] ?? 1),
'createtime' => time(),
];
// 验证价格
if ($giftData['total_price'] <= 0) {
$this->error('礼物总价值必须大于0');
}
// 验证数量
if ($giftData['number'] <= 0) {
$this->error('礼物数量必须大于0');
}
// 使用队列异步处理
$result = GiftQueue::push($giftData);
if ($result) {
// 记录日志
Log::info("用户送礼成功(队列),用户: {$giftData['user_id']}, 收礼人: {$giftData['gift_user']}, 房间: {$giftData['from_id']}");
// 立即返回成功,后台异步处理
$this->success('送礼成功,正在处理中', [
'queue_status' => 'processing',
'user_id' => $giftData['user_id'],
'gift_user' => $giftData['gift_user'],
'timestamp' => time()
]);
} else {
Log::error("用户送礼失败(队列),用户: {$giftData['user_id']}, 收礼人: {$giftData['gift_user']}");
$this->error('送礼失败,请重试');
}
}
/**
* 批量送礼
*/
public function batchGive()
{
$gifts = $this->request->param('gifts/a', []);
if (empty($gifts) || !is_array($gifts)) {
$this->error('礼物数据不能为空');
}
$successCount = 0;
$failCount = 0;
$giftList = [];
foreach ($gifts as $gift) {
// 验证必要参数
if (empty($gift['user_id']) || empty($gift['gift_user']) || empty($gift['from_id'])) {
$failCount++;
continue;
}
$giftData = [
'user_id' => intval($gift['user_id']),
'gift_id' => intval($gift['gift_id'] ?? 0),
'gift_type' => intval($gift['gift_type'] ?? 1),
'number' => intval($gift['number'] ?? 1),
'gift_user' => intval($gift['gift_user']),
'from_id' => intval($gift['from_id']),
'pit_number' => intval($gift['pit_number'] ?? 0),
'total_price' => floatval($gift['total_price'] ?? 0),
'type' => intval($gift['type'] ?? 1),
'from' => intval($gift['from'] ?? 1),
'createtime' => time(),
];
$giftList[] = $giftData;
}
// 批量加入队列
$result = GiftQueue::pushBatch($giftList);
Log::info("批量送礼提交,总计: {$result['total']}, 成功: {$result['success']}, 失败: {$result['failed']}");
$this->success("批量送礼提交成功", $result);
}
/**
* 获取队列状态
*/
public function queueStatus()
{
$stats = GiftQueue::stats();
$this->success('获取成功', $stats);
}
/**
* 测试送礼接口(直接写入,用于测试)
*/
public function testGive()
{
// 只有测试环境可用
if (config('app_debug') != true) {
$this->error('测试接口仅限开发环境使用');
}
$params = $this->request->param();
// 验证必要参数
$required = ['user_id', 'gift_id', 'gift_user', 'from_id'];
foreach ($required as $field) {
if (empty($params[$field])) {
$this->error("{$field}不能为空");
}
}
// 构建送礼数据
$giftData = [
'user_id' => intval($params['user_id']),
'gift_id' => intval($params['gift_id']),
'gift_type' => intval($params['gift_type'] ?? 1),
'number' => intval($params['number'] ?? 1),
'gift_user' => intval($params['gift_user']),
'from_id' => intval($params['from_id']),
'pit_number' => intval($params['pit_number'] ?? 0),
'total_price' => floatval($params['total_price'] ?? 0),
'type' => intval($params['type'] ?? 1),
'from' => intval($params['from'] ?? 1),
'createtime' => time(),
];
// 直接写入数据库(测试用)
$model = new \app\common\model\GiveGiftBase();
$result = $model->addGiftRecord($giftData);
if ($result) {
$this->success('测试送礼成功(直接写入)', [
'id' => $result,
'data' => $giftData
]);
} else {
$this->error('测试送礼失败: ' . $model->getError());
}
}
}

View File

@@ -22,7 +22,6 @@ class Guild extends BaseCom
public function guild_list()
{
$page = input('page',1);
$page = $page > 0 ? $page : 1;
$limit = input('limit',10);
$search = input('search_id','');
$reslut = model('Guild')->get_guild_list($page,$limit,$search,$this->uid);
@@ -42,7 +41,7 @@ class Guild extends BaseCom
$guild_id = input('guild_id', 0);
$key_name = "api:guild:join_guild:".$uid;
redis_lock_exit($key_name);
$reslut = model('Guild')->join_guild($guild_id,$uid);
$reslut = model('Guild')->join_guild_apply($guild_id,$uid);
redis_unlock($key_name);
return V($reslut['code'],$reslut['msg'], $reslut['data']);
}
@@ -64,7 +63,7 @@ class Guild extends BaseCom
$type = input('type', 1);
$key_name = "api:guild:operate_guild:".$uid;
redis_lock_exit($key_name);
$reslut = model('Guild')->operate_guild($uid, $apply_id, $type);
$reslut = model('Guild')->operate_guild($apply_id, $type,$uid);
redis_unlock($key_name);
return V($reslut['code'],$reslut['msg'], $reslut['data']);
}
@@ -175,9 +174,14 @@ class Guild extends BaseCom
$uid = $this->uid;
$reslut = model('Guild')->user_is_join($uid);
if($reslut==0){
return V(0,'用户不是工会成员');
return V(0,'用户不是工会成员',['guild'=>[]]);
}elseif($reslut['status']==2){
return V(0,'用户已申请加入公会待会长审核', ['guild'=>$reslut]);
}elseif($reslut['status']==3){
return V(0,'用户加入公会申请已被拒绝', ['guild'=>$reslut]);
}elseif($reslut['status']==1){
return V(1,'用户是工会成员', ['guild'=>$reslut]);
}
return V(1,'用户是工会成员', ['guild_id'=>$reslut]);
}
/*
@@ -188,7 +192,8 @@ class Guild extends BaseCom
$guild_id = input('guild_id', 0);
$page = input('page', 1);
$page_limit = input('page_limit', 20);
$reslut = model('Guild')->get_guild_user_list($guild_id,$uid,$page,$page_limit);
$seach = input('search', '');
$reslut = model('Guild')->get_guild_user_list($guild_id,$uid,$page,$page_limit,$seach);
return V($reslut['code'],$reslut['msg'], $reslut['data']);
}
@@ -197,7 +202,7 @@ class Guild extends BaseCom
*/
public function get_guild_info(){
$uid = $this->uid;
$guild_id = input('guild_id', 0);
$guild_id = input('guild_id', '');
$reslut = model('Guild')->guild_info($guild_id,$uid);
return V($reslut['code'],$reslut['msg'], $reslut['data']);
}
@@ -206,7 +211,7 @@ class Guild extends BaseCom
*/
public function set_guild_info(){
$uid = $this->uid;
$guild_id = input('guild_id', 0);
$guild_id = input('guild_id', '');
//群聊名称
$name = input('name', '');
//群聊公告
@@ -217,5 +222,30 @@ class Guild extends BaseCom
return V($reslut['code'],$reslut['msg'], $reslut['data']);
}
/*
* 我的工会
*
*/
public function my_guild(){
$uid = $this->uid;
$reslut = model('Guild')->my_guild($uid);
return V($reslut['code'],$reslut['msg'], $reslut['data']);
}
/*
* 受邀申请处理
*/
public function invite_apply_handle(){
$uid = $this->uid;
$apply_id = input('apply_id', 0);
$type = input('type', 0);
$system_message = Db::name('system_message')->where(['id'=>$apply_id,'delete_time'=>0])->find();
if($system_message['type'] == 6){
$reslut = model('Guild')->guild_invite_handle($uid, $apply_id, $type);
}elseif($system_message['type'] == 7){
$reslut = model('Guild')->user_ratio_up_apply($uid, $apply_id, $type);
}
return V($reslut['code'],$reslut['msg'], $reslut['data']);
}
}

View File

@@ -18,9 +18,9 @@ class Index extends BaseCom
public function room_list()
{
$is_top = input('is_top', 0); //1非置顶2置顶
$label_id = input('label_id', 0);
$label_id = input('label_id');
$page = input('page', 1);
$page_limit = input('page_limit', 15);
$page_limit = input('page_limit', 20);
$reslut = model('Room')->room_list($label_id,$is_top, $page, $page_limit);
return V($reslut['code'], $reslut['msg'], $reslut['data'], $reslut['api_version']);
@@ -29,9 +29,47 @@ class Index extends BaseCom
//房间类型列表
public function room_type_list()
{
$list = db::name('vs_room_type')->where('status', 1)->field('id,type_name as label_name')->select();
$list = db::name('vs_room_label')
->where(['status' => 1])
->field('id,label_name,default_index,sort')->order('sort asc')->select();
$is_default = 1;
if($list){
$default_index = 0;
$label_name = '';
$sort = 99;
foreach ($list as $k => $v) {
if($v['id'] == 3 || $v['id'] == 4){
$label_name = '亲密/真爱拍';
if($v['default_index'] == 1){
$default_index = 1;
}
$sort = min($sort, $v['sort']);
unset($list[$k]);
}
}
if($label_name){
//添加到列表后面
$list[] = [
'id' => 0,
'label_name' => $label_name,
'default_index' => $default_index,
'sort' => $sort
];
}
//数据重组避免乱序 再根据sort 排序 越小的越靠前
$list = array_values($list);
usort($list, function ($a, $b) {
return $a['sort'] - $b['sort'];
});
}
foreach ($list as $v){
if($v['default_index'] == 1){
$is_default = 0;
}
}
//给前面添加一组数据
array_unshift($list, ['id' => -1, 'label_name' => '热门']);
array_unshift($list, ['id' => -1, 'label_name' => '热门','default_index' => $is_default, 'sort' => 99]);
return V(1, '获取成功', $list);
}

View File

@@ -49,6 +49,7 @@ class Invited extends BaseCom
}
$reslut['init_code'] = $init_code ? $init_code:'';
$invited_draw = get_system_config_value('invited_draw');
$reslut['invited_draw'] = $invited_draw;
//说明
$reslut['explain'] = '绑定成功后,您每次充值金额的'.$invited_draw.'%'.'将以钻石形式赠送给邀请人,满足提现金额邀请人可以直接提现';
return V(1,'操作成功',$reslut);

View File

@@ -36,4 +36,27 @@ class Level extends BaseCom
return V($reslut['code'],$reslut['msg'], $reslut['data']);
}
//歌手等级
public function get_singer_level(){
$uid = $this->uid;
$reslut = model('Level')->get_singer_level($uid);
return V($reslut['code'],$reslut['msg'], $reslut['data']);
}
//是否歌手
public function is_singer(){
$uid = $this->uid;
$singer = model('api/SingerSong')->singerAuthStatus($uid);
if($singer['status'] == 1){
$data = [
'status' => 1,
'level' => $singer['level'],
];
}else{
$data = [
'status' => 0,
'level' => 0,
];
}
return V(1,'成功', $data);
}
}

View File

@@ -7,6 +7,7 @@ use app\common\controller\NumberAuth;
use app\api\controller\Sms;
use http\Client;
use think\Controller;
use think\Db;
use think\Loader;
use Firebase\JWT\JWT;
use think\Log;
@@ -32,11 +33,11 @@ class Login extends Controller
{
$user_name = input('user_login', '');
$password = input('password', '');
$system = input('system','');
$system = input('system');
if(empty($system)){
$system = request()->header('system');
}
$login_device = input('deviceId','');
$login_device = input('deviceId');
if(empty($login_device)){
$login_device = request()->header('deviceId');
}
@@ -55,24 +56,31 @@ class Login extends Controller
*/
public function phone_code(){
$system = input('system','');
$system = input('system');
if(empty($system)){
$system = request()->header('system');
}
$login_device = input('deviceId','');
$login_device = input('deviceId');
if(empty($login_device)){
$login_device = request()->header('deviceId');
}
$user_name = input('user_login');
$sms_code = input('sms_code', ''); //短信验证码
// $sms = new Sms;
// $ret = $sms->check($user_name, $sms_code);//$event = default-默认登录1-更换手机号2绑定手机号3-忘记密码4-设置密码5-账号注销6-提现
$ret = model('sms')->verification_code('default',$user_name, $sms_code);
if ($ret['code'] == 0) {
return V($ret['code'], $ret['msg'], null);
}
$sms_code = input('sms_code', ''); //短信验证码
if (\think\Env::get('app.system_type','prod') != "prod" && $sms_code == "999999999") {
// 非正式环境且验证码为999999直接放行
}else{
$key_name = "api:login:phone_code_verify:" . $user_name;
redis_lock_exit($key_name);
// $sms = new Sms;
// $ret = $sms->check($user_name, $sms_code);//$event = default-默认登录1-更换手机号2绑定手机号3-忘记密码4-设置密码5-账号注销6-提现
$ret = model('sms')->verification_code('default',$user_name, $sms_code);
redis_unlock($key_name);
if ($ret['code'] == 0) {
return V($ret['code'], $ret['msg'], null);
}
}
$reslut = model('Login')->phone_verification_code_log($user_name, $system,$login_device);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
@@ -87,11 +95,11 @@ class Login extends Controller
public function one_click_login()
{
$loginToken = input('login_token', '');
$system = input('system','');
$system = input('system');
if(empty($system)){
$system = request()->header('system');
}
$login_device = input('deviceId','');
$login_device = input('deviceId');
if(empty($login_device)){
$login_device = request()->header('deviceId');
}
@@ -106,6 +114,21 @@ class Login extends Controller
if (!$mobile) {
return V(0, '登录失败, 请更换登录方式!' );
}
//检测是否注销过
$config_time = get_system_config_value('cancel_no_login');
$is_del = db::name('user')->where(['mobile' => $mobile,'delete_time' => ['<>', 0]])->order('delete_time', 'desc')->find();
//获取手机号绑定的账号数
$count = db::name('user')->where(['mobile' => $mobile])->count();
//获取注销的账号数
$count_del = db::name('user')->where(['mobile' => $mobile,'delete_time' => ['<>', 0]])->count();
if ($count == $count_del) {
if ($is_del) {
if (time() - $is_del['delete_time'] < $config_time * 24 * 3600) {//30天内注销过
return V(0, '注销30天内不可操作。');
}
}
}
if(ctype_digit($mobile)){
$reslut = model('Login')->phone_verification_code_log($mobile,$system,$login_device);
@@ -119,8 +142,8 @@ class Login extends Controller
public function multi_account_login()
{
$user_name = input('user_login');
$system = input('system','');
$login_device = input('deviceId','');
$system = input('system');
$login_device = input('deviceId');
if(empty($login_device)){
$login_device = request()->header('deviceId');
}
@@ -138,11 +161,11 @@ class Login extends Controller
public function wechatLogin()
{
$code = input('code');
$system = input('system','');
$system = input('system');
if(empty($system)){
$system = request()->header('system');
}
$login_device = input('deviceId','');
$login_device = input('deviceId');
if(empty($login_device)){
$login_device = request()->header('deviceId');
}
@@ -238,11 +261,11 @@ class Login extends Controller
public function aliLogin()
{
$authCode = input('auth_code');
$system = input('system','');
$system = input('system');
if(empty($system)){
$system = request()->header('system');
}
$login_device = input('deviceId','');
$login_device = input('deviceId');
if(empty($login_device)){
$login_device = request()->header('deviceId');
}
@@ -290,11 +313,11 @@ class Login extends Controller
*/
public function iosLogin()
{
$system = input('system','');
$system = input('system');
if(empty($system)){
$system = request()->header('system');
}
$login_device = input('deviceId','');
$login_device = input('deviceId');
if(empty($login_device)){
$login_device = request()->header('deviceId');
}
@@ -357,8 +380,32 @@ class Login extends Controller
//注销
public function cancel()
{
$system = input('system');
if(empty($system)){
$system = request()->header('system');
}
$login_device = input('deviceId');
if(empty($login_device)){
$login_device = request()->header('deviceId');
}
$token = input('token');
$reslut = model('Login')->cancel($token);
$sms_code = input('sms_code', ''); //短信验证码
$user_info = db::name('user_token')->where('token', $token)->find();
$user_phone = db::name('user')->where(['id' => $user_info['user_id']])->value('mobile');
if ($user_phone) {
if(!$sms_code){
return V(0, '网络错误,请返回【我的】刷新后重新尝试!' );
}else{
//$event = default-默认登录1-更换手机号2绑定手机号3-忘记密码4-设置密码5-账号注销6-提现
$ret = model('sms')->verification_code(5,$user_phone, $sms_code);
if ($ret['code'] == 0) {
return V($ret['code'], $ret['msg'], null);
}
}
}
$reslut = model('Login')->cancel($token, $system,$login_device);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}

View File

@@ -0,0 +1,43 @@
<?php
namespace app\api\controller;
use app\common\controller\BaseCom;
use app\common\service\LotteryService;
use think\Db;
use think\Exception;
use think\Log;
class Lottery extends BaseCom
{
/**
* 中奖统计接口
* @return json
*/
public function stat()
{
try {
$where = [
'uid' => $this->request->param('uid/d', 0),
'prize_type' => $this->request->param('prize_type/d', 0),
'start_time' => $this->request->param('start_time/d', 0),
'end_time' => $this->request->param('end_time/d', time())
];
$service = new LotteryService();
$stat = $service->statWinner($where);
return json([
'code' => 0,
'msg' => '统计成功',
'data' => $stat
]);
} catch (Exception $e) {
Log::error('中奖统计失败:' . $e->getMessage());
return json([
'code' => 1,
'msg' => $e->getMessage(),
'data' => []
]);
}
}
}

View File

@@ -0,0 +1,45 @@
<?php
namespace app\api\controller;
use app\common\controller\BaseCom;
use think\Controller;
use think\Db;
class Nobility extends BaseCom
{
//初始化
protected function initialize()
{
//允许跨域
header('Access-Control-Allow-Origin: *');
}
//爵位列表
public function get_nobility_list(){
$uid = $this->uid;
$reslut = model('Nobility')->getNobilityList($uid);
return V($reslut['code'],$reslut['msg'], $reslut['data']);
}
//爵位详情
public function get_nobility_detail(){
$uid = $this->uid;
$reslut = model('Nobility')->getNobilityInfo($uid);
return V($reslut['code'],$reslut['msg'], $reslut['data']);
}
//爵位购买价格
public function get_nobility_price(){
$id = input('id', 0);
$uid = $this->uid;
$reslut = model('Nobility')->buyNobilityPrice($uid,$id);
return V($reslut['code'],$reslut['msg'], $reslut['data']);
}
//爵位购买
public function buy_nobility(){
$lid = input('lid', 0);
$uid = input('uid', $this->uid);
$reslut = model('Nobility')->buyNobility($uid,$lid);
return V($reslut['code'],$reslut['msg'], null);
}
}

View File

@@ -33,7 +33,12 @@ class Page extends controller
{
$id = input('id', '');
$reslut = model('Page')->get_page($id);
$html = $reslut['content'] ? $reslut['content'] : '';
if($reslut){
$html = $reslut['content'] ??'';
}else{
$html = '';
}
//解析html
$html = htmlspecialchars_decode($html);
return $html;

View File

@@ -22,31 +22,58 @@ class Payment extends Controller
* APP支付
*/
public function app_pay() {
$type = input('type', 0); //1-微信 2-支付宝 4-通联支付宝 5-通联微信
$type = input('type', 0); //1-微信 2-支付宝 4-通联支付宝 5-通联微信 6-苹果支付
$user_id = input('user_id', 0);
$money = input('money', 0);
$coin = input('coin', 0);
if(!$coin){
$type_params = input('type_params', 0);
$type_id = input('type_id', 0);
$nobility_id = input('nobility_id', 0);//'0-购买金币充值其他是爵位id'
if($nobility_id != 0){
$nobility = model('Nobility')->buyNobilityPrice($user_id,$nobility_id);
if($nobility['code'] == 0 || $nobility['data']['price'] != $money){
return V(0, '网络错误,请重新操作!', null);
}
}
if(!$coin && $nobility_id == 0){
$coin = $money * get_system_config_value('rmb_coin_ratio');
}
if (!$user_id) {
return V(0, '请选择充值用户', null);
}
//获取用户的手机号
$user_phone = db::name('user')->where(["id" => $user_id])->value('mobile');
if(!$user_phone){
return V(0, '请先绑定手机号!', null);
}
//获取用户的实名信息
$real_name = db::name('user_auth')->where(["mobile" => $user_phone,'is_real' => 1])->find();
if(!$real_name){
return V(0, '请先实名认证', null);
}
//获取用户的年龄
if(!getAgeId($real_name['card_id'])){
return V(0, '未成年不可充值!', null);
}
if (!is_numeric($money) || floor($money) != $money || $money <= 0 || $money >= 2000) {
if (!is_numeric($money) || floor($money) != $money || $money <= 0 || $money > 5000) {
return V(0, '请选择正确的充值金额', null);
}
$user_code = db::name('user')->where(["id" => $user_id])->value('user_code');
$title = "APP充值到用户 " . ($user_code ?? "") . " 余额!";
$title = $nobility_id == 0 ? '充值到app用户'.($user_code ?? "") ."余额!" :'购买爵位';
$order_number = $this->createOrderSn();
$data['order_sn'] = $order_number;
$data['money'] = $money;
$data['coin'] = $coin;
$data['user_id'] = $user_id;
$data['pay_type'] = $type;
$data['coin'] = $coin;
$data['createtime'] = time();
$data['remarke'] = '充值到app用户'.($user_code ?? "") ."余额!";;
$data['remarke'] = $nobility_id == 0 ? '充值到app用户'.($user_code ?? "") ."余额!" :'购买爵位';
$data['type_params'] = $type_params;
$data['type_id'] = $type_id;
$data['nobility_id'] = $nobility_id;
$re = db::name('vs_user_recharge')->insert($data);
if (!$re) {
@@ -57,7 +84,7 @@ class Payment extends Controller
//引用支付宝sdk
Loader::import('AliPayV2.AliPay', EXTEND_PATH, '.php');
$ali = new \AliPay();
$result['ali'] = $ali->aliAppPays($order_number, $money, $title);
$result['ali'] = $ali->aliAppPays($order_number, $money, $title, $user_id);
}elseif($type == 1){
//引用微信sdk
Loader::import('WxPay.WxPay', EXTEND_PATH, '.php');
@@ -68,6 +95,13 @@ class Payment extends Controller
Loader::import('TongLian.TongLian', EXTEND_PATH, '.php');
$tonglian = new \TongLian();
$result['tl'] = $tonglian->TongLianPay($data, $type);
}elseif($type == 6){
$result = [
'order_no' => $order_number,
// 'merchant_id' => get_system_config_value('merchant_id')
];
}else{
return V(0, '请选择正确的支付方式', null);
}
return V(1, 'app支付', $result);
@@ -91,6 +125,7 @@ class Payment extends Controller
$where['order_sn']=$out_trade_no;
$where['order_type']=1;
$where['pay_type']=2;
$where['pay_status']=1;
$data=[
'trade_no'=>$trade_no
@@ -135,6 +170,7 @@ class Payment extends Controller
$where['order_sn']=$out_trade_no;
$where['order_type']=1;//1 充值
$where['pay_type']=1;//1微信2支付宝 3通联支付宝 4通联微信
$where['pay_status']=1;
$data=[
'trade_no'=>$transaction_id
@@ -190,6 +226,7 @@ class Payment extends Controller
$where['order_sn']=$out_trade_no;
$where['order_type']=1;//1 充值
$where['pay_type']=$pay_type;//1微信2支付宝 3通联支付宝 4通联微信
$where['pay_status']=1;
$data=[
'trade_no'=>$trade_no
@@ -211,21 +248,26 @@ class Payment extends Controller
* 云账户回调(提现)
*/
public function yun_callback(){
$data = input("data", "");
$mess = input("mess", "");
$timestamp = input("timestamp", "");
$sign = input("sign", "");
Log::record("云账户回调信息".json_encode($_POST),"info");
// $data = input("data", "");
// $mess = input("mess", "");
// $timestamp = input("timestamp", "");
// $sign = input("sign", "");
$data = $_POST['data']??"";
$mess = $_POST['mess']??"";
$timestamp = $_POST['timestamp']?? "";
$sign = $_POST['sign']??"";
write_log_redis("yunzhanghu_huidiao_原始数据",$_POST);
$yun_pay = new YunPay();
$result = $yun_pay->yun_callback($data,$mess,$timestamp,$sign);
if($result['code']==1){
$data = $result['data']['data'];
$data = $result['data'];
if($data){
$status = $data['status'];
if(!isset($data['status'])){
echo 'fail';
die;
}
$status = $data['status'];
switch ($status){
case "1":
// 支付成功(对于支付宝和微信支付是最终状态,对于银行卡大部分情况是终态,小概率会出现"退汇现象",状态由"成功"变为"退汇"
@@ -300,4 +342,92 @@ class Payment extends Controller
echo "fail";
}
}
//苹果回调
public function notify_apple(){
// 1. 接收APP端参数
$orderNo = input('order_no', 0);
$paymentToken = input('payment_token', ''); // APP端获取的支付凭证
// 2. 参数校验
if (empty($orderNo) || empty($paymentToken)) {
return V(0, '参数缺失');
}
// 3. 查询订单(防止订单不存在)
$order = Db::name('vs_user_recharge')->where('order_sn', $orderNo)->find();
if (!$order) {
return V(0, '订单不存在');
}
if ($order['pay_status'] == 2) {
return V(0, '订单已支付');// 幂等处理,防止重复回调
}
// 4. 调用苹果接口验证支付凭证
$verifyResult = $this->verifyApplePayReceipt($paymentToken);
if (!$verifyResult) {
return V(0, '支付凭证验证失败');
}
// 2. 从苹果返回的凭证中解析实际支付金额(//沙箱环境没有这个参数)
$applePayAmount = $verifyResult['receipt']['in_app'][0]['price'] ?? 0; // 苹果返回的实际支付金额
// 3. 校验金额一致性(允许微小误差,如分位四舍五入)
if (abs($order['money'] - $applePayAmount) > 0.01) {
// 金额不一致,拒绝更新订单
// return V(0, '金额不一致');//沙箱环境没有这个参数
}
$transaction_id = $verifyResult['receipt']['in_app'][0]['transaction_id'] ?? '';// 苹果返回的订单号
// 5. 更新订单状态
//成功后的业务逻辑处理
$where['order_sn']=$orderNo;
$where['order_type']=1;//1 充值
$where['pay_type']=6;//1微信2支付宝 3通联支付宝 4通联微信
$where['pay_status']=1;
$data=[
'trade_no' => $transaction_id
];
$res = handelCharge($where,$data);
if($res==0){
return V(0, '订单处理失败');
}
return V(1, '支付成功');
}
// 核心:调用苹果服务器验证支付凭证
private function verifyApplePayReceipt($paymentToken)
{
// 订单创建时的金额(固定/用户输入的自由金额)
// 1. 组装请求参数
$postData = json_encode([
'receipt-data' => $paymentToken, // APP端传入的支付凭
]);
// 2. 先请求生产环境,失败再试沙箱(苹果推荐逻辑)
// $url = 'https://buy.itunes.apple.com/verifyReceipt';//正式验证环境
$url = "https://sandbox.itunes.apple.com/verifyReceipt";//沙箱测试环境
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 生产环境建议开启
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
$result = curl_exec($ch);
curl_close($ch);
$result = json_decode($result, true);
// 验证返回码status=0表示验证成功
if ($result['status'] == 0) {
return $result;
}
return false;
}
}

View File

@@ -40,17 +40,17 @@ class Ranking extends BaseCom
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//公会榜
//公会榜【废弃】
public function guild_ranking()
{
$reslut = $this->model->guild_ranking();
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//真爱榜
//真爱榜【心动榜】
public function love_ranking()
{
$reslut = $this->model->love_ranking();
$reslut = $this->model->love_rankings();
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}

View File

@@ -0,0 +1,127 @@
<?php
namespace app\api\controller;
use app\common\controller\BaseCom;
use app\common\service\RedpacketService;
use think\Db;
/**
* 红包接口
*/
class Redpacket extends BaseCom
{
/**
* 发红包
*/
public function create()
{
$data = $this->request->post();
$data['user_id'] = $this->uid;
$service = new RedpacketService();
$reslut = $service->create($data);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
/**
* 抢红包
*/
public function grab()
{
$redpacketId = input('redpacket_id', 0);
if (empty($redpacketId)) {
return V(0, '红包ID不能为空');
}
$service = new RedpacketService();
// 在抢红包前确保状态正确
$service->checkAndUpdateRedpacketStatus($redpacketId);
$reslut = $service->grabWithResult($redpacketId, $this->uid);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
/**
* 获取抢红包结果
*/
public function grabResult()
{
$redpacketId = $this->request->get('redpacket_id');
if (empty($redpacketId)) {
return V(0, '红包ID不能为空');
}
$service = new RedpacketService();
$result = $service->getGrabResult($redpacketId, $this->uid);
if (!$result) {
return V(0, '红包不存在');
}
return V(1, '获取成功', $result);
}
/**
* 红包详情
*/
public function detail()
{
$redpacketId = input('redpacket_id', 0);
if (empty($redpacketId)) {
return V(0, '红包ID不能为空');
}
$service = new RedpacketService();
// 在获取详情前确保状态正确
$service->checkAndUpdateRedpacketStatus($redpacketId);
$detail = $service->getDetail($redpacketId, $this->uid);
if (!$detail) {
return V(0, '红包不存在');
}
return V(1, '获取成功', $detail);
}
/**
* 获取倒计时选项
*/
public function countdownOptions()
{
$options = \app\common\model\Redpacket::$countdownOptions;
$this->success('获取成功', $options);
}
// 获取房间内红包列表
public function roomRedPackets()
{
$roomId = $this->request->get('room_id');
$result = Db::name('redpacket')->where(['room_id' => $roomId, 'status' => ['<=',1]])->select();
if($result){
foreach ($result as &$item) {
$item['redpacket_id'] = $item['id'];
$item['redpacket_time'] = get_system_config_value('red_packet_time');//展示时间
$item['nickname'] = Db::name('user')->where('id', $item['user_id'])->value('nickname');
$item['avatar'] = Db::name('user')->where('id', $item['user_id'])->value('avatar');
$is_qiang = Db::name('redpacket_record')->where(['redpacket_id' => $item['id'], 'user_id' => $this->uid])->find();
$item['is_qiang'] = $is_qiang ? 1 : 0;
}
}
return V(1, '获取成功', $result);
}
//红包配置信息
public function appConfig(){
$result['red_packet_min_amount'] = get_system_config_value('red_packet_min_amount') ?? 0;
$result['red_packet_fee'] = get_system_config_value('red_packet_fee') ?? 0;
return V(1, '获取成功', $result);
}
}

View File

@@ -22,14 +22,16 @@ class Report extends BaseCom
public function report(){
// $user_id = input('user_id', '');//举报者
$type_id = input('type_id', '');//举报类型
$report_type = input('report_type', '');//1-用户2房间3动态
$report_type = input('report_type', '');//1-用户2房间3动态4公会
$content = input('content', '');//举报内容
$image = input('image', '');//举报图片,多个用英文逗号隔开
$from_id = input('from_id', '');//举报来源id
if($type_id == '' || $report_type == '' || $from_id == ''){
return V(0,"参数错误",null);
}
if($content == '' && $image == ''){
return V(0,"请填写举报内容或上传证据图片",null);
}
$data = [
'user_id' => $this->uid,
'type_id' => $type_id,
@@ -42,5 +44,20 @@ class Report extends BaseCom
$res = db::name('vs_user_inform')->insert($data);
return V($res ? 1 : 0, $res ? "成功" : "失败", null);
}
//安卓日志提交
public function android_log_report(){
$log_name = input('log_name', '');
$log_url = input('log_url', '');
$user_id = $this->uid;
$data = [
'log_name' => $log_name,
'log_url' => $log_url,
'user_id' => $user_id,
'createtime' => time(),
];
$res = db::name('vs_android_log')->insert($data);
return V($res ? 1 : 0, $res ? "成功" : "失败", null);
}
}

View File

@@ -7,15 +7,25 @@ use think\Db;
class Room extends BaseCom
{
//创建房间
public function create_room()
{
$room_name = input('room_name', '');
$room_cover = input('room_cover', '');
$room_intro = input('room_intro', '');
$signCount = db::name('vs_user_sign')->where(['parent_user_id' => $this->uid ,'end_time' => ['>', time()]] )->count();
$num = get_system_config_value('sign_num_per_room');
if($signCount < $num){
$need_sign_num = $num - $signCount;
return V(0, '还需签约'.$need_sign_num.'人,才能创建房间!');
}
$key_name = "api:room:user_create_room:" . $this->uid;
redis_lock_exits($key_name);
$reslut = model('Room')->user_create_room($this->uid, $room_name, $room_cover, $room_intro);
$reslut = model('Room')->user_create_room($this->uid, $room_name, $room_cover, $room_intro,0,0);
redis_unlock($key_name);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
@@ -35,15 +45,6 @@ class Room extends BaseCom
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//关注的用户现在所在房间(废弃)
public function user_follow_in_room_list()
{
$page = input('page', 1);
$page_limit = input('page_limit', 15);
$reslut = model('Room')->user_follow_in_room_list($this->uid, $page, $page_limit);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//房间随机名称
public function room_random_name()
@@ -55,7 +56,7 @@ class Room extends BaseCom
public function user_room_history_list()
{
$page = input('page', 1);
$page_limit = input('page_limit', 15);
$page_limit = input('page_limit', 30);
$reslut = model('UserData')->user_room_history_list($this->uid, $page, $page_limit);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
@@ -112,10 +113,23 @@ class Room extends BaseCom
$end_time = input('end_time', '');
$page = input('page', 1);
$page_limit = input('page_limit', 15);
$reslut = model('Room')->room_turnover_detail($room_id, $start_time, $end_time, $page, $page_limit);
$reslut = model('Room')->room_turnover_detail($this->uid, $room_id, $start_time, $end_time, $page, $page_limit);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//进入房间前的判断
public function before_join_room_check()
{
$room_id = input('room_id', 0);
if($room_id == 0){
return V(0, '房间不存在');
}
$reslut = model('Room')->before_join_room_check($this->uid, $room_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
/*
* 进入房间
*/
@@ -123,6 +137,29 @@ class Room extends BaseCom
{
$room_id = input('room_id', 0);
$password = input('password', '');
//检测系统是否维护中
$is_maintenance = get_system_config_value('is_maintenance');
//获取内侧账号
$inside_uid = get_system_config_value('inside_uid');
//先转为数组
$inside_uid = explode(',',$inside_uid);
if($inside_uid && $is_maintenance == 3){
//排除小房间
$room_type = db::name('vs_room')->where('id',$room_id)->value('type_id');
if($room_type != 6){
//room id = 9 是武松打鼠的房间 暂定为内侧房间
if(in_array($this->uid,$inside_uid) && $room_id != 9 && $room_id != 37){
return V(0, '不可访问');
}
}
}
//内侧账号 才可进入
//暂定为内侧房间
if(!in_array($this->uid,$inside_uid) && ($room_id == 9 || $room_id == 37 || $room_id == 8)){
return V(0, '内侧房间,不可访问');
}
$reslut = model('Room')->join_room($this->uid, $room_id, $password);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
@@ -131,6 +168,9 @@ class Room extends BaseCom
public function quit_room()
{
$room_id = input('room_id', 0);
if(!$room_id){
return V(0, '房间不存在');
}
$user_id = input('user_id', 0);
$reslut = model('Room')->quit_room($this->uid, $room_id,$user_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
@@ -146,17 +186,38 @@ class Room extends BaseCom
}
//直播间送礼
//直播间送礼【1.6废弃】
//
public function room_give_gift()
{
$key_name = "api:room:gift:" . $this->uid;
redis_lock_exit($key_name);
$room_id = input('room_id', 0);
$gift_id = input('gift_id', 0);
$gift_num = input('gift_num', 0);
$gift_num = input('gift_num', 1);
$to_uid = input('to_uid', 0);//收礼人ID逗号隔开的字符串
$type = input('type', 1);//1金币购买 2送背包礼物
$pit_number = input('pit_number', 0);
$heart_id = input('heart_id', 0);
$reslut = model('Room')->room_gift($this->uid, $to_uid, $gift_id, $gift_num, $type, $room_id, $pit_number);
$pool_gift_id = db::name('bb_lottery_config')->where(['key' => 'pool_gift_id'])->value('value');
if($gift_id == $pool_gift_id){
$reslut = model('Lottery')->gift($this->uid, $to_uid, $gift_id, $room_id,$gift_num);
}else{
$reslut = model('Room')->room_gift($this->uid, $to_uid, $gift_id, $gift_num, $type, $room_id, $pit_number,$heart_id);
}
redis_unlock($key_name);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//房间送礼 背包一键全清
public function room_gift_all_clear()
{
$room_id = input('room_id', 0);
$to_uid = input('to_uid', 0);//收礼人ID
$heart_id = input('heart_id', 0);//交友
$auction_id = input('auction_id');//竞拍
$reslut = model('Room')->room_gift_all_clear($this->uid, $room_id, $to_uid,$heart_id,$auction_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
@@ -176,8 +237,11 @@ class Room extends BaseCom
public function room_online_list()
{
$room_id = input('room_id', 0);
if(!$room_id){
return V(0, '房间不存在');
}
$page = input('page', 1);
$limit = input('limit', 50);
$limit = input('limit', 15);
$reslut = model('Room')->room_online_list($room_id, $page, $limit);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
@@ -186,6 +250,9 @@ class Room extends BaseCom
public function room_user_home()
{
$room_id = input('room_id', 0);
if(!$room_id){
return V(0, '房间不存在');
}
$user_id = input('user_id', 0);
$reslut = model('Room')->room_user_home($this->uid,$room_id, $user_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
@@ -260,7 +327,7 @@ class Room extends BaseCom
public function change_room_type()
{
$room_id = input('room_id', 0);
$type = input('type', 1);//1-点唱,2-拍卖,3-男神4-女神
$type = input('type', 1);//1-交友,2-拍卖,7-互娱8-交友不要了9-点唱10-签约11-酒吧房
$reslut = model('Room')->change_room_type($this->uid, $room_id, $type);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
@@ -286,6 +353,9 @@ class Room extends BaseCom
public function room_info()
{
$room_id = input('room_id', 0);
if(!$room_id){
return V(0, '房间不存在');
}
$reslut = model('Room')->room_info($this->uid, $room_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
@@ -300,16 +370,6 @@ class Room extends BaseCom
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//禁麦 \解禁
// public function set_mute_pit()
// {
// $room_id = input('room_id', 0);
// $pit_number = input('pit_number', 0);
// $is_mute = input('is_mute', 0);//0 未禁麦 1已
// $reslut = model('Room')->set_mute_pit($this->uid, $room_id, $pit_number,$is_mute);
// return V($reslut['code'], $reslut['msg'], $reslut['data']);
// }
//锁麦\解锁
public function set_lock_pit()
{
@@ -395,4 +455,36 @@ class Room extends BaseCom
$reslut = model('Room')->room_online_number($room_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//房间用户当前魅力值列表
public function room_user_charm_list()
{
$room_id = input('room_id', 0);
$user_id = input('user_id', '');
$reslut = model('Room')->room_user_charm_list($room_id, $user_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//用户重连
//用户在房间内切后台保留机制
//给用户发送房间内消息
public function send_room_message()
{
$user_id = input('user_id', '');
$room_id = input('room_id', 0);
$reslut = model('Room')->send_room_message($this->uid, $user_id,$room_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//师徒任务跳转房间
public function task_jump_room()
{
$task_id = input('task_id', 0);
$reslut = model('Room')->task_jump_room_recommend($task_id);
return V(1, '成功', $reslut);
}
}

View File

@@ -3,6 +3,7 @@
namespace app\api\controller;
use app\common\controller\BaseCom;
use think\Db;
class RoomAuction extends BaseCom
{
@@ -18,6 +19,10 @@ class RoomAuction extends BaseCom
public function room_auction_time()
{
$gift_id = input('gift_id');
$pool_gift_id = db::name('bb_lottery_config')->where(['key' => 'pool_gift_id'])->value('value');
if($gift_id == $pool_gift_id){
return V(0, '此礼物不能进行此操作');
}
$reslut = model('RoomAuction')->room_auction_time($gift_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
@@ -29,6 +34,15 @@ class RoomAuction extends BaseCom
$room_id = input('room_id');
$user_id = input('user_id');
$gift_id = input('gift_id');
//礼物不能是CP礼物
$cp_gift_ids = explode(',', get_system_config_value('cp_gift_id'));
if (in_array($gift_id, $cp_gift_ids)) {
return V( 0, '礼物不能是CP礼物请重新选择');
}
$pool_gift_id = db::name('bb_lottery_config')->where(['key' => 'pool_gift_id'])->value('value');
if($gift_id == $pool_gift_id){
return V(0, '此礼物不能进行此操作');
}
$relation_id = input('relation_id','');
$auction_type = input('auction_type',1);//1真爱拍 2 亲密拍
$time_day = input('time_day', 0);//小时
@@ -54,8 +68,12 @@ class RoomAuction extends BaseCom
$gift_id = input('gift_id');
$num = input('num');
$type = input('type',1);//1金币购买 2送背包礼物
$reslut = model('RoomAuction')->room_auction_join($auction_id,$user_id,$gift_id,$num,$type);
$gift_bag_id = input('gift_bag_id',0);
$pool_gift_id = db::name('bb_lottery_config')->where(['key' => 'pool_gift_id'])->value('value');
if($gift_id == $pool_gift_id){
return V(0, '此礼物不能进行此操作');
}
$reslut = model('RoomAuction')->room_auction_join($auction_id,$user_id,$gift_id,$num,$type,$gift_bag_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}

View File

@@ -0,0 +1,23 @@
<?php
namespace app\api\controller;
use app\common\controller\BaseCom;
use think\Db;
class RoomEmoji extends BaseCom
{
//表情类型列表
public function type_list(){
$reslut = model('RoomEmoji')->getRoomEmojiType();
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//表情列表
public function emoji_list(){
$type_id = input('type_id', "");
$pid = input('pid', "");
$user_id = $this->uid ?? 0;
$reslut = model('RoomEmoji')->getRoomEmoji($type_id,$pid,true,$user_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
}

View File

@@ -0,0 +1,34 @@
<?php
namespace app\api\controller;
use app\common\controller\BaseCom;
use think\Db;
class RoomHourRanking extends BaseCom
{
//房间小时榜是否开启
public function room_hour_ranking_is_open()
{
$open_time = db::name('vs_hour_ranking_config')->order('id', 'desc')->value('open_time');
return V(1, '获取成功', ['open_time' => $open_time]);
}
//房间小时榜玩法
public function room_hour_ranking_play()
{
$introd = db::name('vs_hour_ranking_config')->order('id', 'desc')->value('introd');
return V(1, '获取成功', ['introd' => $introd]);
}
//房间小时榜
public function room_hour_ranking()
{
$page = input('page', 1);
$page_limit = input('page_limit', 20);
$reslut = model('RoomHourRanking')->room_hour_ranking($page, $page_limit);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
}

View File

@@ -7,39 +7,46 @@ use think\Db;
class RoomPit extends BaseCom
{
//申请上麦
public function apply_pit()
{
$room_id = input('room_id', 0);
$pit_number = input('pit_number', 0);
if($room_id == 0){
return V(0, '房间ID不能为空', null);
}
$res = model('Room')->get_room_label($room_id);
if($res['code'] != 1){
return V(0, '房间不存在', null);
}
//查询房间主持麦有人吗
$room_host_info = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => 9])->value('user_id');
//房主,管理,主持不受此限制
$room_owner = db::name('vs_room')->where(['id' => $room_id, 'user_id' => $this->uid])->find();
//管理
$room_manager = db::name('vs_room_host')->where(['room_id' => $room_id, 'user_id' => $this->uid,'type' => 2,'delete_time' => null])->find();
//主持
$room_host = db::name('vs_room_host')->where(['room_id' => $room_id, 'user_id' => $this->uid,'type' => 1,'delete_time' => null])->find();
if($room_host_info == 0 && !$room_owner && !$room_manager && !$room_host){
return V(0, '上麦请联系主持', null);
}
$room_label = $res['data']['label_id'];
$room_type = $res['data']['type_id'];
$pit_number = input('pit_number', 0);
if(($room_label == 1 && ($room_type == 1 || $room_type == 3 || $room_type == 4))|| $room_type == 2){
$reslut = model('RoomPit')->apply_pit($this->uid, $room_id,$pit_number);
}elseif ($room_label == 2 && ($room_type == 1 || $room_type == 3 || $room_type == 4)){
$reslut = model('RoomSong')->apply_kpit($this->uid, $room_id,$pit_number);
}else{
$key_name = "api:room:apply_pit:" . $this->uid;
redis_lock_exits($key_name);
$room_type = model('Room')->get_room_type($room_id);
if($room_type == 0){
return V(0, '房间不存在', null);
}
$gift_id = input('gift_id', 0);//酒吧房上其他麦需要带礼物
if($room_type == 2){
$reslut = model('RoomSong')->apply_kpit($this->uid, $room_id,$pit_number);
}elseif($room_type == 11){
//9麦位10麦位 不做$gift_id校验
if($pit_number != 9 && $pit_number != 10){
//有麦位就是换麦
$pit_infos = db::name('vs_room_pit')->where(['room_id' => $room_id, 'user_id' => $this->uid])->value('pit_number')??0;
if($pit_infos == 10){
return V(0, '此房间不允许嘉宾直接换麦', null);
}
if($gift_id == 0 && $pit_infos == 0){
return V(0, '请选择礼物', null);
}
}
$type = input('type', 0);//2-抱麦后的上麦
$reslut = model('RoomPit')->apply_pit($this->uid, $room_id, $pit_number,$gift_id,$type);
}else{
$reslut = model('RoomPit')->apply_pit($this->uid, $room_id, $pit_number);
}
redis_unlocks($key_name);
//用户操作记录
//1-禁麦位2-清空消息3-清空魅力值4-加入黑名单5-踢出房间6-关闭麦克风7-申请上麦8-同意上麦9-拒绝上麦10-点歌11-开启PK',
model('Room')->room_operation_record($this->uid,$room_id,7,0,$pit_number);
@@ -50,6 +57,9 @@ class RoomPit extends BaseCom
public function apply_pit_list()
{
$room_id = input('room_id', 0);
if($room_id == 0){
return V(0, '房间ID不能为空', null);
}
$reslut = model('RoomPit')->apply_pit_list($this->uid, $room_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
@@ -58,7 +68,13 @@ class RoomPit extends BaseCom
public function help_apply_pit()
{
$room_id = input('room_id', 0);
if($room_id == 0){
return V(0, '房间ID不能为空', null);
}
$user_id = input('user_id', 0);
if($user_id == 0){
return V(0, '请选择助力用户', null);
}
$reslut = model('RoomPit')->help_apply_pit($this->uid, $room_id, $user_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
@@ -67,7 +83,13 @@ class RoomPit extends BaseCom
public function agree_pit()
{
$room_id = input('room_id', 0);
if($room_id == 0){
return V(0, '房间ID不能为空', null);
}
$user_id = input('user_id', 0);//逗号分割
if($user_id == 0){
return V(0, '请选择同意用户', null);
}
$reslut = model('RoomPit')->agree_pit($this->uid, $room_id, $user_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
@@ -76,6 +98,9 @@ class RoomPit extends BaseCom
public function refuse_pit()
{
$room_id = input('room_id', 0);
if($room_id == 0){
return V(0, '房间ID不能为空', null);
}
$user_id = input('user_id', 0);//逗号分割
$reslut = model('RoomPit')->clear_apply_pit_list($this->uid, $room_id, $user_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
@@ -85,6 +110,9 @@ class RoomPit extends BaseCom
public function clear_apply_pit_list()
{
$room_id = input('room_id', 0);
if($room_id == 0){
return V(0, '房间ID不能为空', null);
}
$reslut = model('RoomPit')->clear_apply_pit_list($this->uid, $room_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
@@ -93,8 +121,18 @@ class RoomPit extends BaseCom
public function set_room_pit_apply_help_gift()
{
$room_id = input('room_id', 0);
if($room_id == 0){
return V(0, '房间ID不能为空', null);
}
$gift_id = input('gift_id', 0);
if($gift_id == 0){
return V(0, '请选择礼物', null);
}
$gift_price = input('gift_price', 0);
$pool_gift_id = db::name('bb_lottery_config')->where(['key' => 'pool_gift_id'])->value('value');
if($gift_id == $pool_gift_id){
return V(0, '此礼物不能进行此操作');
}
$reslut = model('RoomPit')->set_room_pit_apply_help_gift($this->uid, $room_id, $gift_id, $gift_price);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
@@ -103,20 +141,27 @@ class RoomPit extends BaseCom
public function down_pit()
{
$room_id = input('room_id', 0);
$pit_number = input('pit_number', 0);
if($room_id == 0){
return V(0, '房间ID不能为空', null);
}
$res = model('Room')->get_room_label($room_id);
if($res['code'] != 1){
$pit_number = input('pit_number', 0);
$room_type = model('Room')->get_room_type($room_id);
if($room_type == 0){
return V(0, '房间不存在', null);
}
$room_label = $res['data']['label_id'];
$room_type = $res['data']['type_id'];
if(($room_label == 1 && ($room_type == 1 || $room_type == 3 || $room_type == 4)) || $room_type == 2){
$reslut = model('RoomPit')->DownPit($this->uid, $room_id,$pit_number);
}elseif ($room_label == 2 && ($room_type == 1 || $room_type == 3 || $room_type == 4)){
if($room_type == 10){
$upit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'user_id' => $this->uid])->value('pit_number');
if($upit == 2){
return V(0, '师父麦,不能操作', null);
}
}
if($room_type == 2){
$reslut = model('RoomSong')->down_kpit($this->uid, $room_id);
}else{
$reslut = model('RoomPit')->DownPit($this->uid, $room_id,$pit_number);
}
return V($reslut['code'], $reslut['msg'], $reslut['data']);
@@ -128,7 +173,10 @@ class RoomPit extends BaseCom
$key_name = "api:room:change_room_up_pit_type:" . $this->uid;
redis_lock_exit($key_name);
$room_id = input('room_id', 0);
// $user_id = input('user_id', 0);
if($room_id == 0){
return V(0, '房间ID不能为空', null);
}
$reslut = model('RoomPit')->change_room_up_pit_type($this->uid, $room_id);
redis_unlock($key_name);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
@@ -138,10 +186,28 @@ class RoomPit extends BaseCom
public function host_user_pit()
{
$room_id = input('room_id', 0);
if($room_id == 0){
return V(0, '房间ID不能为空', null);
}
$pit_number = input('pit_number', 0);
$user_id = input('user_id', 0);//
$user_id = input('user_id', 0);
if($user_id == 0){
return V(0, '请选择用户', null);
}
$type = input('type', 0);//1-抱麦 2-踢下去
$reslut = model('RoomPit')->host_user_pit($this->uid, $room_id,$pit_number,$user_id,$type);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//签约房间主持邀请上签约麦用户拒绝
public function refuse_sign_room_host_invite()
{
$room_id = input('room_id', 0);
if($room_id == 0){
return V(0, '房间ID不能为空', null);
}
$reslut = model('RoomPit')->refuse_sign_room_host_invite($this->uid, $room_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
}

View File

@@ -17,6 +17,7 @@ class RoomSong extends BaseCom
//同意、拒绝点歌
public function agree_song(){
return V(0, '暂不支持此类型的操作');
$room_id = input('room_id');
$type = input('type',1);//1同意 2拒绝
$res = model('RoomSong')->agree_song($this->uid,$room_id,$type);
@@ -48,12 +49,29 @@ class RoomSong extends BaseCom
return V($res['code'], $res['msg'], $res['data']);
}
//删除歌曲
public function del_song(){
$room_song_id = input('did');
$room_id = input('room_id');
$res = model('RoomSong')->del_song($this->uid,$room_song_id,$room_id);
return V($res['code'], $res['msg'], $res['data']);
}
//已点列表搜索
public function search_song(){
$room_id = input('room_id');
$search_user = input('search_user');
$res = model('RoomSong')->search_song($room_id,$search_user);
return V($res['code'], $res['msg'], $res['data']);
}
//上移歌 $type 1上移 2置顶
public function up_song(){
$room_song_id = input('did');
$type = input('type');//1上移2置顶
$res = model('RoomSong')->up_song($room_song_id,$type);
$res = model('RoomSong')->up_song($this->uid,$room_song_id,$type);
return V($res['code'], $res['msg'], $res['data']);
}
@@ -63,7 +81,8 @@ class RoomSong extends BaseCom
redis_lock_exit($key_name);
$room_id = input('room_id');
$now_room_song_id = input('now_did');
$res = model('RoomSong')->change_song($room_id,$now_room_song_id);
$is_auto_next = input('is_auto_next');
$res = model('RoomSong')->change_song($room_id,$now_room_song_id,$is_auto_next);
redis_unlock($key_name);
return V($res['code'], $res['msg'], $res['data']);
}

View File

@@ -35,12 +35,16 @@ class Search extends BaseCom
if(is_numeric($search)){
$where = [
'room_number' => $search,
'apply_status' => 2
'apply_status' => 2,
'type_id' => ['<>',6],
'room_status' => 1
];
}else{
$where = [
'room_name' => ['like', '%'.$search . '%'],
'apply_status' => 2
'apply_status' => 2,
'type_id' => ['<>',6],
'room_status' => 1
];
}
@@ -84,7 +88,7 @@ class Search extends BaseCom
$lists[$k]['picture'] = $v['room_cover'];
$lists[$k]['code'] = $v['room_number'];
$lists[$k]['label_icon'] = db::name('vs_room_label')->where('id', $v['label_id'])->value('label_icon');
$lists[$k]['hot_value'] = $v['hot_value'];
$lists[$k]['hot_value'] = $v['today_hot_value'];
}elseif($type == 3){
$lists[$k]['id'] = $v['id'];
$lists[$k]['name'] = $v['guild_name'];
@@ -96,4 +100,59 @@ class Search extends BaseCom
return V(1, '获取成功', $lists);
}
//搜索
public function search_list()
{
$search = input('search', '');
if(is_numeric($search)){
$where = [
'user_code' => $search,
'status' => 1
];
$where1 = [
'room_number' => $search,
'apply_status' => 2,
'type_id' => ['<>',6],
'room_status' => 1
];
}else{
$where = [
'nickname' => ['like', '%'.$search . '%'],
'status' => 1
];
$where1 = [
'room_name' => ['like', '%'.$search . '%'],
'apply_status' => 2,
'type_id' => ['<>',6],
'room_status' => 1
];
}
$users = db::name('user')->field('id as user_id,nickname,avatar,user_code,sex')->where($where)->select();
if(isset($users)){
foreach ($users as &$v){
$v['room_id'] = 0;
//是否在房间
$is_room = db::name('vs_room_visitor')->where(['user_id' => $v['user_id'], 'is_delete' => 1])->order('id desc')->value('room_id');
if ($is_room) {
$v['room_id'] = $is_room;
}
$v['icon'][0] = model('UserData')->user_wealth_icon($v['user_id']);//财富图标
$v['icon'][1] = model('UserData')->user_charm_icon($v['user_id']);//魅力图标
}
}
$rooms = db::name('vs_room')->field('id as room_id,room_name,room_cover,room_number,label_id,today_hot_value')->where($where1)->select();
if($rooms){
foreach ($rooms as &$vv){
$vv['label_icon'] = db::name('vs_room_label')->where('id', $vv['label_id'])->value('label_icon');
$vv['hot_value'] = $vv['today_hot_value'];
}
}
return V(1, '获取成功', ['users' => $users, 'rooms' => $rooms]);
}
}

View File

@@ -0,0 +1,66 @@
<?php
namespace app\api\controller;
use app\common\controller\BaseCom;
use think\Db;
class SendGift extends BaseCom
{
/*
* 送礼
* @param int $gift_id
*/
public function send_gift()
{
$key_name = "api:send:gift:" . $this->uid;
redis_lock_exits($key_name);
$room_id = input('room_id/d', 0);//房间ID
$gift_id = input('gift_id/d', 0);//礼物ID
$gift_num = (int)input('gift_num/d', 1);//礼物数量
$to_uid = input('to_uid', 0);//收礼人ID逗号隔开的字符串
$type = input('type/d', 1);//1金币购买 2送背包礼物
$heart_id = input('heart_id/d', 0);//助力时的 ID
$gift_bag_id = input('gift_bag_id/d', 0);//盲盒类型ID 7-初级8-中级9-高级
if($room_id <= 0 || $gift_id <= 0 || $to_uid <= 0 || $type <= 0){
redis_unlocks($key_name);
return V(0, '参数错误');
}
//获取幸运币
$pool_gift_id = db::name('bb_lottery_config')->where(['key' => 'pool_gift_id'])->value('value');
if($gift_id == $pool_gift_id){//送的是幸运币
$reslut = model('Lottery')->gift($this->uid, $to_uid, $gift_id, $room_id,$gift_num);
redis_unlocks($key_name);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}else{
//获取房间类型 1:交友/pk(二卡八),2:练歌房(声网点歌),3:亲密拍,4:真爱拍,6:私密房,7:互娱房,9:点唱/歌手房,10:签约房,11:酒吧房
$room_type = model('Room')->get_room_type($room_id);
//送礼 (送礼用户收礼用户组礼物ID数量礼物类型房间ID )
$reslut = model('SendGift')->send_gift($this->uid, $to_uid, $gift_id, $gift_num, $type, $room_id, $gift_bag_id, $heart_id);
if($room_type == 2){//2:练歌房(声网点歌)
if($reslut['code'] == 1){
$room_pits = model('RoomSong')->get_charm_rank($room_id);
if($room_pits['code'] == 1){
$room_pit = $room_pits['data'];
//推送给前端
$text = [
'userCharmList' => $room_pit,
];
model('Chat')->sendMsg(1019,$room_id,$text);//K歌房送礼后魅力变化 排序变化
}
}
redis_unlocks($key_name);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
redis_unlocks($key_name);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
}
}

View File

@@ -0,0 +1,151 @@
<?php
namespace app\api\controller;
use app\common\controller\BaseCom;
use think\Db;
class Sign extends BaseCom
{
//签约出价价格列表
public function sign_coin_list()
{
$sign_id = input('sign_id', 0);//场次id
$room_sign = db::name('vs_room_sign')->where('id', $sign_id)->field('sign_user_id,room_id')->find();
if (!$room_sign) {
return v(0, '参数错误');
}
//获取出价最高用户
$sign_user = db::name('vs_user_sign_auction')->where(['room_id' => $room_sign['room_id'],'sign_time' => $sign_id,'type' => 0])->order('sign_value desc')->field('id,user_id,sign_value')->find();
if($sign_user){
$market_value = $sign_user['sign_value'];
}else{
//获取当前用户的身价
$market_value = db::name('user')->where('id', $room_sign['sign_user_id'])->value('market_value');
}
$sign_market_value = get_system_config_value('sign_market_value');
//组个列表
$sign_coin_list = [];
$first_value = $market_value + $sign_market_value; // 第一个值是身价加上sign_market_value
for ($i = 0; $i < 8; $i++) {
$sign_coin_list[] = (string)($first_value + $i); // 每个值在第一个值的基础上加i0到7
}
return v(1, '成功', $sign_coin_list);
}
//签约开始
public function start_sign()
{
$key_name = "api:sign:start_sign:" . $this->uid;
redis_lock_exit($key_name);
$room_id = input('room_id', 0);
$user_id = input('user_id', 0);
if ($room_id <= 0 || $user_id <= 0) {
return V(0, '参数错误');
}
$reslut = model('Sign')->start_sign($this->uid, $room_id, $user_id);
redis_unlock($key_name);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//签约出价
public function sign_coin()
{
$key_name = "api:sign:sign_coin:" . $this->uid;
redis_lock_exit($key_name);
$sign_id = input('sign_id', 0);//场次id
$sign_value = input('sign_value', 0);
if ($sign_value <= 0 || $sign_id <= 0) {
return V(0, '参数错误');
}
$sign = db::name('vs_room_sign')->where('id', $sign_id)->field('room_id,sign_user_id,sign_type')->find();
if($sign['sign_type'] != 1){
return V( 0, '该场次签约已结束', null);
}
$user_id = $sign['sign_user_id'];
$room_id = $sign['room_id'];
$reslut = model('Sign')->sign_coin($this->uid, $room_id, $user_id, $sign_value,$sign_id);
redis_unlock($key_name);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//签约结束
public function end_sign()
{
$sign_id = input('sign_id', 0);
if ($sign_id <= 0) {
return V(0, '参数错误');
}
$sign = db::name('vs_room_sign')->where('id', $sign_id)->field('room_id,sign_user_id')->find();
$user_id = $sign['sign_user_id'];
$room_id = $sign['room_id'];
$reslut = model('Sign')->end_sign($this->uid, $room_id, $sign_id,$user_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//签约延时
public function sign_delay()
{
$sign_id = input('sign_id', 0);
if ($sign_id <= 0) {
return V(0, '参数错误');
}
$sign = db::name('vs_room_sign')->where('id', $sign_id)->field('room_id,sign_user_id')->find();
$room_id = $sign['room_id'];
$reslut = model('Sign')->sign_delay($this->uid, $room_id, $sign_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//免费续约
public function free_re_sign()
{
$sign_user_id = input('user_id', 0);
if ($sign_user_id <= 0) {
return V(0, '参数错误');
}
$reslut = model('Sign')->free_re_sign($this->uid, $sign_user_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//续签
public function re_sign()
{
$sign_user_id = input('user_id', 0);
if ($sign_user_id <= 0) {
return V(0, '参数错误');
}
$reslut = model('Sign')->re_sign($this->uid, $sign_user_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//才艺列表
public function skill_list()
{
$skill_list = [
'唱歌','脱口秀','口技','喊麦','相声'
];
return V(1, '成功', $skill_list);
}
//获取首次被签约且在约期内的徒弟列表
public function get_first_sign_student_list()
{
$reslut = model('Sign')->get_first_sign_student_list($this->uid);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
}

View File

@@ -0,0 +1,209 @@
<?php
namespace app\api\controller;
use app\common\controller\BaseCom;
use think\Db;
class SingerSong extends BaseCom
{
//歌手认证
public function singerAuth()
{
//试音地址
$song = input('song', 0);
if (!$song) {
return V(0, '请上传试音地址');
}
$reslut = model('SingerSong')->singerAuth($this->uid, $song);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//歌手添加歌曲
public function singerAddSong()
{
$song_name = input('song_name', 0);
if (!$song_name) {
return V(0, '请输入歌曲名称');
}
$gift_id = input('gift_id', 0);
if (!$gift_id) {
return V(0, '请选择礼物');
}
$pool_gift_id = db::name('bb_lottery_config')->where(['key' => 'pool_gift_id'])->value('value');
if($gift_id == $pool_gift_id){
return V(0, '此礼物不能进行此操作');
}
$gift_num = input('gift_num', 1);
$reslut = model('SingerSong')->singerAddSong($this->uid, $song_name, $gift_id, $gift_num);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//歌手删除 歌曲
public function singerDelSong()
{
$id = input('id', 0);
if (!$id) {
return V(0, '请选择歌曲');
}
$reslut = db::name('vs_singer_song')->where(['id' => $id])->update(['deletetime' => time()]);
if ($reslut) {
return V(1, '删除成功');
} else {
return V(0, '删除失败');
}
}
//歌手修改歌曲
public function singerEditSong()
{
$id = input('id', 0);
if (!$id) {
return V(0, '请选择歌曲');
}
db::name('vs_singer_song')->where(['id' => $id])->update(['deletetime' => time()]);
$song_name = input('song_name', 0);
if (!$song_name) {
return V(0, '请输入歌曲名称');
}
$gift_id = input('gift_id', 0);
if (!$gift_id) {
return V(0, '请选择礼物');
}
$pool_gift_id = db::name('bb_lottery_config')->where(['key' => 'pool_gift_id'])->value('value');
if($gift_id == $pool_gift_id){
return V(0, '此礼物不能进行此操作');
}
$gift_num = input('gift_num', 1);
$reslut = db::name('vs_singer_song')->insert([
'user_id' => $this->uid,
'song_name' => $song_name,
'gift_id' => $gift_id,
'gift_num' => $gift_num,
'createtime' => time(),
]);
if ($reslut) {
return V(1, '修改成功');
} else {
return V(0, '修改失败');
}
}
//获取房间内麦位上歌手歌曲
public function getSong()
{
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$room_id = input('room_id', 0);
//用户ID
$user_id = input('user_id', 0);
//以上两个参数二选一
if (!$room_id && !$user_id) {
return V(0, '请选择房间或歌手');
}
$reslut = model('SingerSong')->getSong($this->uid, $user_id, $room_id, $page, $page_limit);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//点歌
public function singerSong()
{
$song_id = input('song_id', 0);
if (!$song_id) {
return V(0, '请选择歌曲');
}
$room_id = input('room_id', 0);
if (!$room_id) {
return V(0, '请选择房间');
}
$reslut = model('SingerSong')->singerSong($this->uid, $song_id ,$room_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//点歌列表
public function singerSongList()
{
$page = input('page', 1);
$page_limit = input('page_limit', 10);
$room_id = input('room_id', 0);
if (!$room_id) {
return V(0, '请选择房间');
}
$type = input('type', 1);//1:已点列表2:今日列表3昨日列表4本周列表5本月列表
$reslut = model('SingerSong')->singerSongList($room_id,$type,$page,$page_limit);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//点歌各类型各个总数
public function singerSongCount()
{
$room_id = input('room_id', 0);
if (!$room_id) {
return V(0, '请选择房间');
}
$reslut = model('SingerSong')->singerSongCount($room_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//歌曲置顶
public function singerSongTop()
{
$id = input('id', 0);
if (!$id) {
return V(0, '请选择歌曲');
}
$reslut = db::name('vs_song_log')->where(['id' => $id])->update(['sort' => time()]);
if ($reslut) {
//给前端推送下首歌曲信息
$next_song_info = db::name('vs_song_log')->where(['id' => $id])->find();
$next_song_info['boss_user_id'] = $next_song_info['user_id'];
$next_song_info['boss_nickname'] = db::name('user')->where(['id' => $next_song_info['user_id']])->value('nickname');
$next_song_info['boss_avatar'] = db::name('user')->where(['id' => $next_song_info['user_id']])->value('avatar');
$next_song_info['boss_dress'] = model('api/Decorate')->user_decorate_detail($next_song_info['user_id'], 1);
$next_song_info['boss_mic_cycle'] = model('api/Decorate')->user_decorate_detail($next_song_info['user_id'],3);
$singer_song = db::name('vs_singer_song')->where(['id' => $next_song_info['singer_song_id']])->find();
$next_song_info['singer_user_id'] = $singer_song['user_id'];
$next_song_info['singer_nickname'] = db::name('user')->where(['id' => $singer_song['user_id']])->value('nickname');
$next_song_info['singer_avatar'] = db::name('user')->where(['id' => $singer_song['user_id']])->value('avatar');
$next_song_info['singer_dress'] = model('api/Decorate')->user_decorate_detail($singer_song['user_id'], 1);
$next_song_info['singer_mic_cycle'] = model('api/Decorate')->user_decorate_detail($singer_song['user_id'],3);
$next_song_info['song_name'] = $singer_song['song_name'];
$data = [
'text' => '房间下一首演唱歌曲变化',
'next_song_info' => $next_song_info
];
model('Chat')->sendMsg(1071,$next_song_info['room_id'],$data);
return V(1, '置顶成功');
} else {
return V(0, '置顶失败');
}
}
//切歌
public function singerSongCut()
{
$id = input('id', 0);//点歌列表的ID
if (!$id) {
return V(0, '请选择要切的歌曲列表ID');
}
$reslut = model('SingerSong')->singerSongCut($this->uid, $id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
}

View File

@@ -30,14 +30,32 @@ class Sms extends Api
if (!checkMobile($mobile)) {
return V(0, '手机号不正确');
}
//检测是否注销过
$config_time = get_system_config_value('cancel_no_login');
$is_del = db::name('user')->where(['mobile' => $mobile,'delete_time' => ['<>', 0]])->find();
//获取手机号绑定的账号数
$count = db::name('user')->where(['mobile' => $mobile])->count();
//获取注销的账号数
$count_del = db::name('user')->where(['mobile' => $mobile,'delete_time' => ['<>', 0]])->count();
if ($count == $count_del) {
if ($is_del) {
if (time() - $is_del['delete_time'] < $config_time * 24 * 3600) {//30天内注销过
return V(0, '注销30天内不可操作。');
}
}
}
//频率控制
$last = db::name('sms')->where(['mobile' => $mobile, 'event' => $event])->order('id', 'DESC')->find();
if ($last && time() - $last['createtime'] < 60) {
return V(0, '发送频繁');
return V(0, '发送频繁');
}
$ipSendTotal = db::name('sms')->where(['ip' => $this->request->ip()])->whereTime('createtime', '-1 hours')->count();
$ip = request()->server('HTTP_X_REAL_IP') ?: request()->server('HTTP_X_FORWARDED_FOR') ?: request()->ip();
$ipSendTotal = db::name('sms')->where(['ip' => $ip])->whereTime('createtime', '-1 hours')->count();
if ($ipSendTotal >= 7) {
return V(0, '发送频繁');
return V(0, '发送频繁');
}
//发送短信
$ret = $this->send_smsbao_msg($mobile, $event);

View File

@@ -0,0 +1,96 @@
<?php
namespace app\api\controller;
use app\common\controller\BaseCom;
use think\Controller;
/*
* 每日任务
*
*/
class Tasks extends BaseCom
{
//初始化
protected function initialize()
{
//允许跨域
header('Access-Control-Allow-Origin: *');
}
//每日任务列表
public function dailyTasksList()
{
$user_id = $this->uid;
$reslut = model('Tasks')->dailyTasksList($user_id);
return V($reslut['code'],$reslut['msg'], $reslut['data']);
}
//完成每日任务
public function dailyTasksComplete()
{
$user_id = $this->uid;
$task_id = input('task_id');
if (!$task_id) {
return V(0,'请选择任务');
}
$reslut = model('Tasks')->tasks_complete($user_id,$task_id);
return V($reslut['code'],$reslut['msg'], $reslut['data']);
}
//领取每日任务金币奖励
public function dailyTasksReceive()
{
$user_id = $this->uid;
$task_id = input('task_id');
$student_id = input('student_id',0);
if (!$task_id) {
return V(0,'请选择任务');
}
$reslut = model('Tasks')->daily_tasks_receive($user_id,$task_id,$student_id);
return V($reslut['code'],$reslut['msg'], $reslut['data']);
}
//开启礼盒
public function dailyTasksOpenBox()
{
$user_id = $this->uid;
$gift_box_id = input('gift_box_id');
if (!$gift_box_id) {
return V(0,'请选择礼盒');
}
$reslut = model('Tasks')->open_gift_box($user_id,$gift_box_id);
return V($reslut['code'],$reslut['msg'], $reslut['data']);
}
//礼盒记录
public function dailyTasksBoxRecord()
{
$user_id = $this->uid;
$reslut = model('Tasks')->gift_bag_receive_list($user_id);
return V($reslut['code'],$reslut['msg'], $reslut['data']);
}
//签到
public function dailyTasksSign(){
$user_id = $this->uid;
$reslut = model('Tasks')->sign_in($user_id);
return V($reslut['code'],$reslut['msg'], $reslut['data']);
}
//签到页面
public function dailyTasksSignList(){
$user_id = $this->uid;
$reslut = model('Tasks')->daily_tasks_sign_in($user_id);
return V($reslut['code'],$reslut['msg'], $reslut['data']);
}
//今日签到状态
public function dailyTasksSignStatus(){
$user_id = $this->uid;
$reslut = model('Tasks')->daily_tasks_sign_in_status($user_id);
return V($reslut['code'],$reslut['msg'], $reslut['data']);
}
//未领取奖励任务数量
public function dailyTasksUnReceiveCount(){
$user_id = $this->uid;
$reslut = model('Tasks')->daily_tasks_unfinished_count($user_id);
return V($reslut['code'],$reslut['msg'], $reslut['data']);
}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace app\api\controller;
use think\Controller;
class Tencent extends Controller
{
public function call_back()
{
return ['ActionStatus' => 'OK', 'ErrorInfo' => '', 'ErrorCode' => 0];
$data = input('post.');
$sign_data = input('get.');
$reslut = model('Tencent')->tencent_call_back($data,$sign_data);
return json($reslut);
}
}

View File

@@ -15,12 +15,82 @@ class Theme extends controller
}
/*
* 启动页列表
* @return array
*
* app背景图片 app_bg
* 首页选中 home_sel
* 首页正常 home_nor
* 广场选中 find_sel
* 广场正常 find_nor
* 消息选中 msg_sel
* 消息正常 msg_nor
* 我的选中 mine_sel
* 我的正常 mine_nor
* 主题色 theme_color
* 按钮文字颜色 btn_text_color
*/
public function get_theme_data()
{
$reslut = DB::name('vs_theme')->where('is_active',1)->where('delete_time',0)->find();
return V(1,'操作成功', $reslut);
// $reslut = DB::name('vs_theme')->field('theme_color,file_url,auxiliary_color')
// ->where(['delete_time' => 0 ,'is_active' => 1,'begin_time' => ['<',time()],'end_time' => ['>',time()]])->order('id desc')->find();
//
// if($reslut){
// $url = $reslut['file_url'];
// $reslut['btn_text_color'] = $reslut['auxiliary_color'];
// $reslut['app_bg'] = get_system_config_value('web_site').'/static/theme/'.$url.'/app_bg.png';
// $reslut['home_sel'] = get_system_config_value('web_site').'/static/theme/'.$url.'/home_sel.png';
// $reslut['home_nor'] = get_system_config_value('web_site').'/static/theme/'.$url.'/home_nor.png';
// $reslut['find_sel'] = get_system_config_value('web_site').'/static/theme/'.$url.'/find_sel.png';
// $reslut['find_nor'] = get_system_config_value('web_site').'/static/theme/'.$url.'/find_nor.png';
// $reslut['msg_sel'] = get_system_config_value('web_site').'/static/theme/'.$url.'/msg_sel.png';
// $reslut['msg_nor'] = get_system_config_value('web_site').'/static/theme/'.$url.'/msg_nor.png';
// $reslut['mine_sel'] = get_system_config_value('web_site').'/static/theme/'.$url.'/mine_sel.png';
// $reslut['mine_nor'] = get_system_config_value('web_site').'/static/theme/'.$url.'/mine_nor.png';
// }
//版本号
$app_version = request()->header('App-Version');
$system = request()->header('system');
$api_version = 0;
if ($system == 'iOS') {
$api_versions = db::name('version')->where(['type' => 2, 'status' => 1])->order('id', 'desc')->find();
//app的版本和用户使用的当前版本比对
//$api_versions['newversion'] 是数据库当前的版本 也是用户使用的版本
//$app_version 有可能是appstore里面的审核版本 审核版本比用户的版本高
//审核版本给前端返回1
$result = version_compare($api_versions['newversion'],$app_version);
if ($result < 0) {//-1:前面版本小于后面版本,0:相等,1:前面版本大于后面版本
$api_version = 1;
}
}
$reslut = [];
return V(1,'操作成功', $reslut,$api_version);
}
// 节日主题
public function get_festival_theme()
{
$theme = DB::name('vs_theme')->field('theme_name,theme_color,file_url,auxiliary_color')
->where(['delete_time' => 0 ,'is_active' => 1,'begin_time' => ['<=',time()],'end_time' => ['>=',time()]])->order('id desc')->find();
$reslut['is_open'] = 0;
if($theme){
$reslut['theme_name'] = $theme['theme_name'];
$reslut['is_open'] = 1;
}
//版本号
$app_version = request()->header('App-Version');
$system = request()->header('system');
$api_version = 0;
if ($system == 'iOS') {
$api_versions = db::name('version')->where(['type' => 2, 'status' => 1])->order('id', 'desc')->find();
//app的版本和用户使用的当前版本比对
//$api_versions['newversion'] 是数据库当前的版本 也是用户使用的版本
//$app_version 有可能是appstore里面的审核版本 审核版本比用户的版本高
//审核版本给前端返回1
$result = version_compare($api_versions['newversion'],$app_version);
if ($result < 0) {//-1:前面版本小于后面版本,0:相等,1:前面版本大于后面版本
$api_version = 1;
}
}
return V(1,'操作成功', $reslut,$api_version);
}
}

View File

@@ -0,0 +1,20 @@
<?php
namespace app\api\controller;
use app\common\controller\BaseCom;
use app\common\controller\Upload as UploadFile;
class Upload extends BaseCom
{
//获取上传文件的临时秘钥
public function getTempKeys()
{
$upload = new UploadFile();
$reslut = $upload->getTempCredential();
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
}

View File

@@ -8,6 +8,7 @@ use app\common\library\Ems;
use app\common\library\Sms;
use fast\Random;
use think\Config;
use think\Db;
use think\Validate;
/**
@@ -222,7 +223,18 @@ class User extends BaseCom
public function get_user_info()
{
$reslut = model('user')->get_me($this->uid);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
//版本号
$app_version = request()->header('App-Version');
$system = request()->header('system');
$api_version = 0;
if ($system == 'iOS') {
$api_versions = db::name('version')->where(['type' => 2, 'status' => 1])->order('id', 'desc')->find();
$result = version_compare($api_versions['apiversion'],$app_version);
if ($result < 0) {
$api_version = 1;
}
}
return V($reslut['code'], $reslut['msg'], $reslut['data'],$api_version);
}
//关注(回关)
@@ -234,6 +246,15 @@ class User extends BaseCom
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//关注房间(红包专用)
public function follow_room()
{
$room_id = input('room_id', 0);
$type = input('type', 1);//1-收藏0-取消收藏
$reslut = model('user')->follow_room($this->uid, $room_id,$type);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//用户关系卡(亲密拍)、关系位(真爱拍)
public function user_cp_list()
{
@@ -264,4 +285,24 @@ class User extends BaseCom
$reslut = model('UserWallet')->give_coin($this->uid, $give_uid, $coin);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//挚友列表
public function get_friend_list()
{
$user_id = input('user_id', 0);//用户id
$page = input('page', 1);
$page_limit = input('page_limit', 30);
$reslut = model('User')->get_friend_list($user_id, $page, $page_limit);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//挚友列表查看更多
public function get_friend_list_more()
{
$user_id = input('user_id', 0);//用户id
$relation_id = input('relation_id', 0);
$reslut = model('User')->get_friend_list_more($user_id, $relation_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
}

View File

@@ -0,0 +1,32 @@
<?php
namespace app\api\controller;
use app\common\controller\BaseCom;
use think\Db;
class UserCp extends BaseCom
{
//用户CP礼物回赠
public function cpGiveGift()
{
$user_id = input('user_id', 0);
$gift_id = input('gift_id', 0);
$room_id = input('room_id', 0);
$reslut = model('SendGift')->send_gift($this->uid, $user_id, $gift_id, 1,1,$room_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//Cp 空间
public function cpZone()
{
$page = input('page', 1);
$page_limit = input('page_limit', 15);
$user_id = input('user_id', 0);
$reslut = model('UserCp')->cpZone($user_id, $page, $page_limit);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
}

View File

@@ -15,7 +15,7 @@ class UserData extends BaseCom
$key_name = "api:user:follow_user:" . $this->uid;
redis_lock_exit($key_name);
$nick_name = input('nickname');
$birthday = input('birthday');
$birthday = input('birthday', '1990-01-01');
$sex = input('sex', 0);
$head_pic = input('avatar', '');
$reg_code = input('init_code', '');
@@ -47,7 +47,7 @@ class UserData extends BaseCom
$key_name = "api:user:follow_user:" . $this->uid;
redis_lock_exit($key_name);
$nick_name = input('nick_name');
$birthday = input('birthday');
$birthday = input('birthday', '1990-01-01');
$sex = input('sex', 1);
$head_pic = input('head_pic', '');
$images = input('images', '');//背景图(以json字符串的形式可以多图)
@@ -80,19 +80,28 @@ class UserData extends BaseCom
{
$key_name = "api:user:bind_mobile:" . $this->uid;
redis_lock_exit($key_name);
$mobile = input('new_mobile');
$sms_code = input('sms_code', '');
//default-默认登录1-更换手机号2绑定手机号3-忘记密码4-设置密码5-账号注销6-提现
$reslut = model('sms')->verification_code(2,$mobile, $sms_code);
if ($reslut['code'] == 0) {
redis_unlock($key_name);
return v($reslut['code'], $reslut['msg'], $reslut['data']);
}
//查询新手机号绑定的数量
$new_mobile_num = db::name('user')->where(['mobile' => $mobile,'status' => ['neq', 0]])->count();
if ($new_mobile_num >= 3) {
return v(0, '该手机号已达绑定上限');
}
$reslut = model('UserData')->modify_mobile($mobile,$this->uid);
redis_unlock($key_name);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//更换手机号
//default-默认登录1-更换手机号2绑定手机号3-忘记密码4-设置密码5-账号注销6-提现
//更换手机号
public function modify_mobile()
{
@@ -102,10 +111,13 @@ class UserData extends BaseCom
$new_mobile = input('new_mobile');
$sms_code = input('sms_code', '');
$user_mobile = db::name('user')->where('id',$this->uid)->value('mobile');
if ($user_mobile != $mobile){
redis_unlock($key_name);
return V(0, "旧手机号错误", null);
if($user_mobile){
if ($user_mobile != $mobile){
redis_unlock($key_name);
// return V(0, "旧手机号错误", null);
}
}
if ($new_mobile == $user_mobile){
redis_unlock($key_name);
return V(0, "新手机号不能与旧手机号一致", null);
@@ -121,6 +133,59 @@ class UserData extends BaseCom
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//更换手机号
//default-默认登录1-更换手机号2绑定手机号3-忘记密码4-设置密码5-账号注销6-提现
public function modify_mobiles()
{
$key_name = "api:user:modify_mobile:" . $this->uid;
redis_lock_exit($key_name);
$mobile = input('mobile');
$sms_code = input('sms_code', '');
$user_mobile = db::name('user')->where('id',$this->uid)->value('mobile');
if ($user_mobile != $mobile){
redis_unlock($key_name);
return V(0, "旧手机号错误", null);
}
//验证原有手机号
$reslut = model('sms')->verification_code(1,$mobile, $sms_code);
if ($reslut['code'] == 0) {
redis_unlock($key_name);
return v($reslut['code'], $reslut['msg'], $reslut['data']);
}
$new_mobile = input('new_mobile');
$new_sms_code = input('new_sms_code', '');
if ($new_mobile == $user_mobile){
redis_unlock($key_name);
return V(0, "新手机号不能与旧手机号一致", null);
}
//验证新手机号
$reslut1 = model('sms')->verification_code(1,$new_mobile, $new_sms_code);
if ($reslut1['code'] == 0) {
redis_unlock($key_name);
return v($reslut1['code'], $reslut1['msg'], $reslut1['data']);
}
//查询新手机号是否绑定过
$new_mobile_num = db::name('user')->where(['mobile' => $new_mobile])->select();
if ($new_mobile_num){
foreach ($new_mobile_num as $key => $value){
if($value['status'] != 0){
redis_unlock($key_name);
return V(0, "换绑失败,请联系客服", null);
}
if(time() - $value['delete_time'] < 60 * 60 * 24 * 30){
redis_unlock($key_name);
return V(0, "此手机号已注销30天内不允许操作", null);
}
}
}
$reslut2 = model('UserData')->modify_mobile($new_mobile,$this->uid);
redis_unlock($key_name);
return V($reslut2['code'], $reslut2['msg'], $reslut2['data']);
}
//实名认证
public function real_name()
{
@@ -128,13 +193,14 @@ class UserData extends BaseCom
redis_lock_exit($key_name);
$real_name = input('real_name');
$card_number = input('card_number');
//去掉前后空格
$card_number = trim($card_number);
$reslut = model('UserData')->real_name($this->uid,$real_name, $card_number);
redis_unlock($key_name);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//实名认证结果获取
//实名认证成功后通知后端
public function real_name_result()
{
$orderNo = input('orderNo', '');
@@ -149,4 +215,13 @@ class UserData extends BaseCom
$reslut = model('UserData')->real_name_info($this->uid);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//隐身设置
public function modify_hide_status()
{
$status = input('hide_status', 0);//0-取消隐身1-设置隐身
$reslut = model('UserData')->modify_hide_status($this->uid,$status);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
}

View File

@@ -24,13 +24,21 @@ class UserGiftPack extends BaseCom
return V($reslut['code'],$reslut['msg'], $reslut['data']);
}
//获取背包礼物列表总值
public function get_gift_pack_list_count()
{
$user_id = $this->uid;
$reslut = model('UserGiftPack')->get_gift_pack_list_count($user_id);
return V($reslut['code'],$reslut['msg'], $reslut['data']);
}
//背包收入
public function get_gift_pack_income()
{
$user_id = $this->uid;
$page = input('page',1);
$page_limit = input('page_limit',10);
$reslut = model('UserGiftPack')->income_user_gift_pack($user_id,$page=1,$page_limit=10);
$reslut = model('UserGiftPack')->income_user_gift_pack($user_id,$page,$page_limit);
return V($reslut['code'],$reslut['msg'], $reslut['data']);
}
@@ -40,7 +48,7 @@ class UserGiftPack extends BaseCom
$user_id = $this->uid;
$page = input('page',1);
$page_limit = input('page_limit',10);
$reslut = model('UserGiftPack')->get_gift_pack_outcome($user_id,$page=1,$page_limit=10);
$reslut = model('UserGiftPack')->get_gift_pack_outcome($user_id,$page,$page_limit);
return V($reslut['code'],$reslut['msg'], $reslut['data']);
}

View File

@@ -14,51 +14,35 @@ class UserWallet extends BaseCom
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
// //给前端的类型组装一个
// public function gift_type()
// {
// // 1.系统调节 2.充值 3.提现 4.金币转增(送出) 5.每日任务奖励 6.充值返利 7.购买装扮
// // 8.礼盒奖励 9.房间补贴 10.购买礼物 11.收礼增加收益 12.工会补贴 13.转赠金币(接收) 14.收益兑换
// $data = [
//// ['id' => 1, 'name' => '系统调节'],
// ['id' => 2, 'name' => '充值'],
// ['id' => 3, 'name' => '提现'],
// ['id' => 4, 'name' => '金币转增'],
// ['id' => 5, 'name' => '每日任务奖励'],
// ['id' => 6, 'name' => '充值返利'],
// ['id' => 7, 'name' => '购买装扮'],
// ['id' => 8, 'name' => '礼盒奖励'],
// ['id' => 9, 'name' => '房间补贴'],
// ['id' => 10, 'name' => '购买礼物'],
// ['id' => 11, 'name' => '收礼增加收益'],
// ['id' => 12, 'name' => '工会补贴'],
// ['id' => 13, 'name' => '金币转增'],
// ['id' => 14, 'name' => '收益兑换'],
// ['id' => 15, 'name' => '送礼'],
// ];
// return V(1, '获取成功', $data);
// }
//金币(钻石)明细
public function log_list()
{
$page = input('page', 1);
// 1. 接收参数前端传递last_id=上一页最后一条的idpage_limit=每页条数)
$last_id = input('last_id', 0); // 第一页 last_id=0
$page_limit = input('page_limit', 30);
$in_out_type = input('in_out_type', 1);//1收入2支出
$gift_type = input('gift_type', 1);//1金币2收益钻石
//开始时间
$start_time = input('start_time', '');
$end_time = input('end_time', '');
$start_time = input('start_time', '');//开始时间
$end_time = input('end_time', '');//结束时间
$reslut = model('UserWallet')->log_list($this->uid, $page, $page_limit,$in_out_type,$start_time,$end_time,$gift_type);
$reslut = model('UserWallet')->log_list($this->uid, $last_id, $page_limit,$in_out_type,$start_time,$end_time,$gift_type);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//收益(钻石)兑换金币
public function exchange_coin()
{
$key_name = 'exchange_coin_' . $this->uid;
redis_lock_exits($key_name, 10, 10);
$earnings_num = input('earnings_num', 0);
//最少兑换钻石
$min_earnings_num = get_system_config_value('min_earnings_num');
if ($earnings_num < $min_earnings_num) {
return V(0, '兑换金额不能小于' . $min_earnings_num);
}
$reslut = model('UserWallet')->exchange_coin($this->uid,$earnings_num);
redis_unlocks($key_name);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
@@ -77,9 +61,52 @@ class UserWallet extends BaseCom
foreach ($reslut as $k=>$v){
$reslut_data[$k]['money'] = $v['money'];
$reslut_data[$k]['coins'] = $v['coins'];
$reslut_data[$k]['ios_coins'] = $v['coins'] * 7 / 10;
$reslut_data[$k]['product_id'] = $v['product_id'];
}
return V(1, '获取成功', $reslut_data);
}
//苹果商店充值金额列表
public function can_recharge_list_ios(){
$app_version = request()->header('App-Version');
$system = request()->header('system');
$reslut = db::name("vs_can_recharge")->where("status",1)->where("delete_time",0)->order('money asc')->select();
$reslut_data = [];
if ($system == 'iOS') {
$api_versions = db::name('version')->where(['type' => 2, 'status' => 1])->order('id', 'desc')->find();
//app的版本和用户使用的当前版本比对
//$api_versions['newversion'] 是数据库当前的版本 也是用户使用的版本
//$app_version 有可能是appstore里面的审核版本 审核版本比用户的版本高
$result = version_compare($api_versions['newversion'],$app_version);
if ($result < 0) {//-1:前面版本小于后面版本,0:相等,1:前面版本大于后面版本
// $api_version = 1;//商店审核版本给前端返回1
foreach ($reslut as $k=>$v){
if($v['money'] == 2000){
$reslut_data[$k]['money'] = '1999.00';
}else{
$reslut_data[$k]['money'] = $v['money'];
}
$reslut_data[$k]['coins'] = $v['coins'];
$reslut_data[$k]['ios_coins'] = $v['coins'] * 7 / 10;
$reslut_data[$k]['product_id'] = $v['product_id'];
}
}else{
foreach ($reslut as $k=>$v){
$reslut_data[$k]['money'] = $v['money'];
$reslut_data[$k]['coins'] = $v['coins'];
$reslut_data[$k]['ios_coins'] = $v['coins'] * 7 / 10;
$reslut_data[$k]['product_id'] = $v['product_id'];
}
}
}
return V(1, '获取成功', $reslut_data);
}
/*
* 钻石兑换金币比例
*/

View File

@@ -170,7 +170,7 @@ class UserZone extends BaseCom
$api_version = 0;
if ($system == 'iOS') {
$api_versions = db::name('version')->where(['type' => 2, 'status' => 1])->order('id', 'desc')->find();
$result = version_compare($api_versions['oldversion'],$app_version);
$result = version_compare($api_versions['newversion'],$app_version);
if ($result < 0) {
$api_version = 1;
}
@@ -185,6 +185,10 @@ class UserZone extends BaseCom
$gift_id = input('gift_id', 0);
$num = input('num', 1);
$is_pack = input('is_pack', 1);//2背包 1金币
$pool_gift_id = db::name('bb_lottery_config')->where(['key' => 'pool_gift_id'])->value('value');
if($gift_id == $pool_gift_id){
return V(0, '此礼物不能进行此操作');
}
$reslut = model('GiveGift')->reward_zone($this->uid, $zid, $gift_id, $num, $is_pack);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}

View File

@@ -0,0 +1,117 @@
<?php
namespace app\api\controller;
use think\Controller;
use think\Db;
use think\Log;
use app\common\controller\BaseCom;
class Xintiao extends BaseCom
{
//房间内保持心跳
public function keep_room_heartbeat()
{
$room_id = input('room_id');
if(!$room_id){
return V(0, '参数错误', null);
}
$user_id = $this->uid;
$is_xintiao = db::name('vs_room_heartbeat')->where(['user_id' => $user_id, 'room_id' => $room_id])->find();
if($is_xintiao){
db::name('vs_room_heartbeat')->where('id' , $is_xintiao['id'])->update(['updatetime' => time()]);
}else{
db::name('vs_room_heartbeat')->insert([
'user_id' => $user_id,
'room_id' => $room_id,
'createtime' => time(),
'updatetime' => time()
]);
}
//任务18-每日在线时长 5 分钟
model('Tasks')->tasks_complete($user_id,18);
//任务19-每日在线时长 10 分钟
model('Tasks')->tasks_complete($user_id,19);
//任务20-每日在线时长 15 分钟
model('Tasks')->tasks_complete($user_id,20);
//获取房间的类型
$room_type = db::name('vs_room')->where(['id' => $room_id])->value('type_id');
//查询徒弟是否是首签的徒弟 sign_user_type:被签用户的类型0-首次被签1-签约过期2-违约签
$user_sign = db::name('vs_user_sign')
->where(['sign_user_id' => $user_id,'sign_user_type' => 0,'end_time' => ['>',time()]])->field('parent_user_id,sign_user_id')->select();
if($user_sign){
foreach ($user_sign as $v){
if($room_type == 2){
//查询徒弟在不在房间
$is_room = db::name('vs_room_visitor')
->where(['user_id' => $v['sign_user_id'], 'room_id' => $room_id])->find();
if($is_room){
//任务21-邀请徒弟在拍卖房停留0/5分钟并送给徒弟0/1 ,特殊礼物)
model('Tasks')->tasks_complete($v['parent_user_id'], 21, 1,$v['sign_user_id']);
}
}
if($room_type == 7){
//查询徒弟在不在房间
$is_room = db::name('vs_room_visitor')
->where(['user_id' => $v['sign_user_id'], 'room_id' => $room_id])->find();
if($is_room){
//任务23-邀请徒弟在交友房停留0/5分钟并送给徒弟0/1 ,特殊礼物)
model('Tasks')->tasks_complete($v['parent_user_id'], 23, 1,$v['sign_user_id']);
}
}
}
}
//是否有在限时时间内的Cp任务
//查询是否已经存在Cp空间
$rees = Db::name('user_cp_zone')->where(['user_id1' => $user_id,'status' => 1])->find();
if(!$rees){
$rees = Db::name('user_cp_zone')->where(['user_id2' => $user_id,'status' => 1])->find();
}
if($rees){
//查询另一个 用户在不在 房间内
if($rees['user_id1'] == $user_id){
$UserId = $rees['user_id2'];
}else{
$UserId = $rees['user_id1'];
}
$is_room = db::name('vs_room_visitor')
->where(['user_id' => $UserId, 'room_id' => $room_id])->find();
if($is_room){
//成为Cp的天数
$createtime =Db::name('user_cp_zone')->where(['id' => $rees['id']])->value('createtime');
$days = floor((time() - $createtime) / 86400);
if($days <= 7){
$is_time = Db::name('vs_user_cp_task')->where(['user_id' => $rees['user_id1'],'status' => 0,'day' => date('Y-m-d', time()),'delete_time' => 0])->find();
$is_time2 = Db::name('vs_user_cp_task')->where(['user_id' => $rees['user_id2'],'status' => 0,'day' => date('Y-m-d', time()),'delete_time' => 0])->find();
if($is_time && $is_time['need_time_value'] > $is_time['time_value']){
$exo_value = ($is_time['time_value'] + 0.5) >= $is_time['need_time_value'] ? $is_time['need_time_value'] : ($is_time['time_value'] + 0.5);
$data_cp = [
'time_value' => $exo_value,
];
if($exo_value >= $is_time['need_time_value'] && $is_time['exp_value'] == $is_time['need_exp_value']){
$data_cp['status'] = 1;
}
Db::name('vs_user_cp_task')->where(['id' => $is_time['id']])->update($data_cp);
Db::name('vs_user_cp_task')->where(['id' => $is_time2['id']])->update($data_cp);
}
}
}
}
//返回任务未领取奖励数
$not_received_tasks_num = model('Tasks')->daily_tasks_unfinished_count($user_id);
$return_data = [
'not_received_tasks_num' => $not_received_tasks_num['data']['num']
];
return V(1, '成功', $return_data);
}
}

View File

@@ -0,0 +1,411 @@
<?php
namespace app\api\controller;
use think\Controller;
use think\Db;
use think\Log;
use app\common\controller\Push;
class Xxiaoshi extends Controllers
{
public function test()
{
$res = db::name('user_zone')->where(['is_delete'=> 2,'delete_time'=> ['<>', 0]])->select();
if($res){
foreach ($res as $v){
//删除动态下的标签引用
$top_zone = db::name('user_zone_topic')->where('zone_id',$v['id'])->select();
if($top_zone){
foreach ($top_zone as $vs){
db::name('user_zone_topic')->where('id',$vs['id'])->delete();
}
}
}
}
}
//测试数据
public function testData()
{
$res = db::name('vs_user_gift_pack')
->field('gid,after_num')
->where(['a.updatetime'=> ['<=', 1766332800]])
->group('a.gid')
->select();
$total_price = 0;
if($res){
foreach ($res as $v){
$gft_price = db::name('vs_gift')->where('gid',$v['gid'])->value('gift_price');
$total_price += $gft_price * $v['after_num'];
}
}
echo $total_price;
echo '<br>';
var_dump($res);
}
public function queryUserRecharge()
{
// 1. 构建键值对数组(左侧为键,右侧为对应的值列表)
// $userTimeData = [
// [21238, 1768437495],
// [21238, 1768438042],
// [21238, 1768537071],
// [21238, 1768537086],
// [21238, 1768537102],
// [21238, 1768537116],
// [21238, 1768537130],
// [21263, 1768538654],
// [21283, 1768538494],
// [21283, 1768538505],
// [21346, 1768620290],
// [21355, 1768562702],
// [21521, 1768480294],
// [21521, 1768535126],
// [21521, 1768559545],
// [21521, 1768559583],
// [21521, 1768561603],
// [21521, 1768561942],
// [21549, 1768472710],
// [21549, 1768473170],
// [22109, 1768576512],
// [22215, 1768448033],
// [22230, 1768453987],
// [22230, 1768494691],
// [22230, 1768606319],
// [22247, 1768568982],
// [22349, 1768463236],
// [22349, 1768463510],
// [22349, 1768498328],
// [22349, 1768534547],
// [22349, 1768575347],
// [22349, 1768575906],
// [22349, 1768576001],
// [22349, 1768576134],
// [22349, 1768576484],
// [22353, 1768493303],
// [22353, 1768493644],
// [22367, 1768450215],
// [22367, 1768450295],
// [22367, 1768450411],
// [22367, 1768556122],
// [22367, 1768557842],
// [22367, 1768560574],
// [22397, 1768489651],
// [22397, 1768489678],
// [22403, 1768615100],
// [22403, 1768615185],
// [22474, 1768610625],
// [22489, 1768539082],
// [22513, 1768469607],
// [22513, 1768622078], // 新增的时间戳
// [22546, 1768467110],
// [22546, 1768480214],
// [22546, 1768480289],
// [22546, 1768617480],
// [22546, 1768619884],
// [22765, 1768555869],
// [22765, 1768613623],
// [22960, 1768478779],
// [22960, 1768562093],
// [22960, 1768562790],
// [23160, 1768495390],
// [23273, 1768546462],
// [23317, 1768445313],
// [23317, 1768499667],
// [23317, 1768500101],
// [23317, 1768500124],
// [23317, 1768500550],
// [23317, 1768502888],
// [23317, 1768580934],
// [23317, 1768580952],
// [23317, 1768582152],
// [23381, 1768484820],
// [23381, 1768558830],
// [23381, 1768562317],
// [23418, 1768546419],
// [23418, 1768556020],
// [23428, 1768615120],
// [23620, 1768438590],
// [23620, 1768446478],
// [23620, 1768446636],
// [23620, 1768446926],
// [23620, 1768446971],
// [23620, 1768446983],
// [23620, 1768446994],
// [23768, 1768500957],
// [23934, 1768487148],
// [23979, 1768483941],
// [23979, 1768484887],
// [23979, 1768485349],
// [23979, 1768488207],
// [23979, 1768606496],
// [23996, 1768537785],
// [23996, 1768583372],
// [24049, 1768480652],
// [24049, 1768574886],
// [24049, 1768575149],
// [24049, 1768575263],
// [24049, 1768575306],
// [24049, 1768576026],
// [24049, 1768576057],
// [24049, 1768576122],
// [24049, 1768576324],
// [24049, 1768576359],
// [24049, 1768576411],
// [24049, 1768576450],
// [24049, 1768576547],
// [24049, 1768576572],
// [24049, 1768576752],
// [24049, 1768576788],
// [24049, 1768610848],
// [24049, 1768610956],
// [24123, 1768476419],
// [24123, 1768563117],
// [24208, 1768480841],
// [24221, 1768621532], // 新增的user_id和时间戳
// [24224, 1768434963],
// [24239, 1768575140],
// [24262, 1768474400],
// [24268, 1768562981],
// [24268, 1768563148],
// [24376, 1768495419],
// [24402, 1768573575],
// [24402, 1768573664],
// [24497, 1768611030],
// [24497, 1768611043],
// [24559, 1768573337],
// [24619, 1768444049],
// [24724, 1768436254],
// [24724, 1768436335],
// [24724, 1768436370],
// [24724, 1768436566],
// [24724, 1768463485],
// [24724, 1768463533],
// [24724, 1768485920],
// [24724, 1768486241],
// [24724, 1768559795],
// [24724, 1768575533],
// [24724, 1768575836],
// [24724, 1768575846],
// [24724, 1768576947],
// [24724, 1768577192],
// [24724, 1768584426],
// [24724, 1768591790],
// [24724, 1768592625],
// [24809, 1768574941],
// [24914, 1768469768],
// [24914, 1768478779],
// [24914, 1768529233],
// [24914, 1768547882],
// [24949, 1768446759],
// [24949, 1768468114],
// [24949, 1768471318],
// [24949, 1768489660],
// [24949, 1768489679],
// [24949, 1768489694],
// [24949, 1768489908],
// [24949, 1768489995],
// [24949, 1768491042],
// [24949, 1768491189],
// [24949, 1768495030],
// [24949, 1768495287],
// [24949, 1768528803],
// [24949, 1768621300], // 新增的时间戳
// [25102, 1768486444],
// [25102, 1768492650],
// [25264, 1768469925],
// [25297, 1768482093],
// [25297, 1768523171],
// [25297, 1768524115],
// [25356, 1768453712],
// [25356, 1768564162],
// [25436, 1768567177],
// [25504, 1768445533],
// [25504, 1768474538],
// [25504, 1768474550],
// [25504, 1768549836],
// [25504, 1768550533],
// [25504, 1768551277],
// [25504, 1768611155],
// [25614, 1768463575],
// [25614, 1768493369],
// [25668, 1768550315],
// [25668, 1768550900],
// [25668, 1768551157],
// [25689, 1768534840],
// [25689, 1768534859],
// [25689, 1768535523],
// [25689, 1768606149],
// [25689, 1768606164],
// [25782, 1768440770],
// [25868, 1768441940],
// [25884, 1768446752],
// [25884, 1768453213],
// [25884, 1768478849],
// [25909, 1768451888],
// [25909, 1768452147],
// [25909, 1768452512],
// [25909, 1768452685],
// [25909, 1768453007],
// [25977, 1768465353],
// [25977, 1768466422],
// [25977, 1768466948],
// [25977, 1768495780],
// [26002, 1768474369],
// [26010, 1768563140],
// [26260, 1768595503],
// [26333, 1768480346],
// [26471, 1768463341],
// [26471, 1768535162],
// [26685, 1768544823],
// [26846, 1768467107],
// [26865, 1768526248],
// [26910, 1768495212],
// [26910, 1768495674],
// [26932, 1768451859],
// [26932, 1768452304],
// [26932, 1768467016],
// [26932, 1768467086],
// [26961, 1768551610],
// [26961, 1768551630],
// [26961, 1768551741],
// [26961, 1768617367],
// [27063, 1768595933],
// [27152, 1768544596],
// [27172, 1768453726],
// [27306, 1768467885],
// [27306, 1768480720],
// [27619, 1768480089],
// [27619, 1768547882],
// [27619, 1768547902],
// [27619, 1768564945],
// [27848, 1768445845],
// [27848, 1768446640],
// [27980, 1768485183],
// [28015, 1768463456],
// [28015, 1768464122],
// [28226, 1768539447],
// [28226, 1768539558],
// [28226, 1768539674],
// [28226, 1768539800],
// [28226, 1768539899],
// [28226, 1768539972],
// [28226, 1768540093],
// [28226, 1768540167],
// [28226, 1768540273],
// [28304, 1768454349],
// [28357, 1768441100],
// [28443, 1768471092],
// [28443, 1768538447],
// [28443, 1768540270],
// [28443, 1768547826],
// [28443, 1768556907],
// [28443, 1768557771],
// [28443, 1768564068],
// [28443, 1768564085],
// [28551, 1768481077],
// [28551, 1768481222],
// [28551, 1768548678],
// [28551, 1768580500],
// [28551, 1768580517],
// [28561, 1768449441],
// [28769, 1768553650],
// [28769, 1768553902],
// [28855, 1768568390],
// [28924, 1768472667],
// [28924, 1768490582],
// [28924, 1768490656],
// [28924, 1768490721],
// [28924, 1768490844],
// [28924, 1768490949],
// [28924, 1768491079],
// [28924, 1768491176],
// [28924, 1768491285],
// [28924, 1768569855],
// [28924, 1768570809],
// [28993, 1768444688],
// [29420, 1768491595],
// [30113, 1768544251],
// [30190, 1768457671],
// [30190, 1768457788],
// [30190, 1768457926],
// [30190, 1768458180],
// [30190, 1768458568],
// [30190, 1768458786],
// [30190, 1768458886],
// [30190, 1768459131],
// [30190, 1768459373],
// [30442, 1768529725],
// [30551, 1768580619]
// ];
if(isset($userTimeData)){
$userTimeData = [];
}
$dtae = [];
// 2. 循环数组,遍历每个键对应的所有值
foreach ($userTimeData as $item) {
$userId = $item[0]; // 获取用户ID
$timestamp = $item[1]; // 获取时间戳
// 批量查询(推荐,减少数据库连接次数)
$rechargeData = Db::name('vs_user_recharge')
->field('updatetime, pay_status, user_id, money')
->where(['updatetime' => $timestamp,'pay_status' => 2 ])
->select(); // 转为普通数组方便处理
if($rechargeData){
foreach ($rechargeData as $recharge){
$dtae[] = [
'p_user' => $userId,
'user_id' => $recharge['user_id'],
'createtime' => $recharge['updatetime'],
'money' => $recharge['money'],
];
}
}
}
// var_dump($dtae);
echo "\n";
echo "=========";
var_dump(count($dtae));
echo "\n";
$invite = [];
$invited_draw_conf = get_system_config_value('invited_draw');//分成比例
if($dtae){
foreach ($dtae as $item){
$invit = db::name('vs_user_invited')->where(['user_id' => $item['p_user'],'sub_user_id' => $item['user_id']])->find();
if($invit){
$invited_draw = $invited_draw_conf / 100;
$invited_draw_money = $item['money'] * $invited_draw;
//增加余额并记录日志
// $wallet_update = model('api/UserWallet')->change_user_earnings_log($item['p_user'],$invited_draw_money,0,6,'邀请用户充值返利'.$item['createtime']);
// if(!$wallet_update){
// Log::record("邀请用户充值返利(补发)失败:".$item['p_user'],"info");
// echo "邀请用户充值返利失败".$item['p_user'];
// }
sleep(1);
$invite[] = [
'p_user' => $item['p_user'],
'user_id' => $item['user_id'],
'createtime' => $item['createtime'],
'money' => $item['money'],
'invited_draw_money' => $invited_draw_money,
];
}
}
}
echo "=========";
echo "\n";
// var_dump($invite);
}
}

View File

@@ -108,7 +108,7 @@ return [
'该装扮天数不存在' => '该装扮天数不存在',
'该个人靓号已被购买' => '该个人靓号已被购买',
'该房间靓号已被购买' => '该房间靓号已被购买',
'该会靓号已被购买' => '该会靓号已被购买',
'该会靓号已被购买' => '该会靓号已被购买',
'用户信息错误' => '用户信息错误',
'非法资金类型' => '非法资金类型',
'当前用户金币已达上限' => '当前用户金币已达上限',

View File

@@ -25,7 +25,8 @@ class Activities extends Model
public static function first_charge_gift_send($user_id,$money=0)
{
//礼包
$gift_bag_id = DB::name('vs_gift_bag')->where(['activities_id'=>1,'status'=>1,'money'=>$money])->value('id');
$gift_bag = DB::name('vs_gift_bag')->where(['activities_id'=>1,'status'=>1,'delete_time'=>0,'money'=>['<=',$money]])->order('money desc')->find();
$gift_bag_id = $gift_bag['id'] ?? 0;
if (!$gift_bag_id) {
return ['code' => 0, 'msg' => '礼包不存在','data' => null];
}
@@ -36,21 +37,29 @@ class Activities extends Model
Db::startTrans();
try {
foreach ($gift_bag_detail as $k=>$v){
$gift_id =0;
$gift_price = 0;
$gift_num = $v['quantity'];
switch ($v['type']) {
case 1: //金币 方法1直接添加到用户钱包
$gift_price = $v['quantity'];
$res = model('common/UserWallet')->change_user_money($user_id, $v['quantity'], model('common/UserWallet')::MONEYTYPECOIN, model('common/UserWallet')::FIRST_CHARGE,model('common/UserWallet')::ChangeTypeLable(model('common/UserWallet')::FIRST_CHARGE));
break;
case 2: //礼物 方法2添加到用户礼物背包
$gift_id = $v['foreign_id'];
$res = model('UserGiftPack')->change_user_gift_pack($user_id,$v['foreign_id'],$v['quantity'],model('UserGiftPack')::FIRST_CHARGE,"首充好礼获得礼物");
break;
case 3: //坐骑 方法3添加到用户装扮
$gift_id = $v['foreign_id'];
$decorate_price_info = db::name('vs_decorate_price')->where(['id'=>$v['foreign_id']])->find();
if(empty($decorate_price_info)){
continue;
break;
}
$gift_price = $decorate_price_info['price'];
$res = model('Decorate')->pay_decorate($user_id,$decorate_price_info['did'],$decorate_price_info['day'],5);
break;
case 4: //道具 方法5钻石
$gift_price = $v['quantity'];
$res = model('common/UserWallet')->change_user_money($user_id, $v['quantity'], model('common/UserWallet')::MONEYTYPEARNINGS, model('common/UserWallet')::FIRST_CHARGE,model('common/UserWallet')::ChangeTypeLable(model('common/UserWallet')::FIRST_CHARGE));
default:
break;
@@ -59,15 +68,19 @@ class Activities extends Model
Db::rollback();
return ['code' => 0, 'msg' => $res['msg'], 'data' => null];
}
// 记录日志
//添加礼盒记录
$reslut = Db::name('vs_gift_bag_receive_log')->insert([
'user_id' => $user_id,
'gift_bag_id' => $gift_bag_id,
'gift_id'=> $gift_id,
'gift_price' => $gift_price,
'num' => $gift_num,
'bag_price' => $money,
'createtime' => time(),
'updatetime' => time()
]);
}
// 记录日志
//添加礼盒记录
$reslut = Db::name('vs_gift_bag_receive_log')->insert([
'user_id' => $user_id,
'gift_bag_id' => $gift_bag_id,
'createtime' => time(),
'updatetime' => time()
]);
// 添加活动记录
$reslut = Db::name('vs_activities_receive')->insert([
'user_id' => $user_id,
@@ -86,14 +99,19 @@ class Activities extends Model
/*
* 天降好礼发放
*/
public static function drop_gift_send($user_id)
public static function drop_gift_send($user_id,$money=0)
{
$activities_id = 3;
//礼包
$gift_bag_id = DB::name('vs_gift_bag')->where(['activities_id'=>$activities_id,'status'=>1])->value('id');
$gift_bag = DB::name('vs_gift_bag')->where(['activities_id'=>$activities_id,'status'=>1])->find();
$gift_bag_id = $gift_bag['id'] ?? 0;
if (!$gift_bag_id) {
return ['code' => 0, 'msg' => '礼包不存在','data' => null];
}
if($money != $gift_bag['money']){
return ['code' => 0, 'msg' => '充值金额未命中天降好礼礼包','data' => null];
}
$gift_bag_detail = DB::name('vs_gift_bag_detail')->where(['gift_bag_id'=>$gift_bag_id])->select();
if (!$gift_bag_detail) {
return ['code' => 0, 'msg' => '礼包不存在','data' => null];
@@ -111,7 +129,7 @@ class Activities extends Model
case 3: //坐骑 方法3添加到用户装扮
$decorate_price_info = db::name('vs_decorate_price')->where(['id'=>$v['foreign_id']])->find();
if(empty($decorate_price_info)){
continue;
break;
}
$res = model('Decorate')->pay_decorate($user_id,$decorate_price_info['did'],$decorate_price_info['day'],6);
break;
@@ -124,15 +142,20 @@ class Activities extends Model
Db::rollback();
return ['code' => 0, 'msg' => $res['msg'], 'data' => null];
}
// 记录日志
//添加礼盒记录
$reslut = Db::name('vs_gift_bag_receive_log')->insert([
'user_id' => $user_id,
'gift_bag_id' => $gift_bag_id,
'parent_id' => $v['id'],
'gift_id'=> $v['foreign_id'],
'num' => $v['quantity'],
'bag_price' => $gift_bag['money'],
'gift_price' => $v['gold'],
'createtime' => time(),
'updatetime' => time()
]);
}
// 记录日志
//添加礼盒记录
$reslut = Db::name('vs_gift_bag_receive_log')->insert([
'user_id' => $user_id,
'gift_bag_id' => $gift_bag_id,
'createtime' => time(),
'updatetime' => time()
]);
// 添加活动记录
$reslut = Db::name('vs_activities_receive')->insert([
'user_id' => $user_id,
@@ -148,4 +171,110 @@ class Activities extends Model
return ['code' => 0, 'msg' => "请重试", 'data' => null];
}
}
/*
* 新人好礼发放
*/
public static function new_charge_gift_send($user_id,$money=0)
{
//礼包
$activities_id = 7;
$gift_bag = DB::name('vs_gift_bag')->where(['activities_id'=>$activities_id,'status'=>1,'delete_time'=>0,'money'=>$money])->order('money desc')->find();
$gift_bag_id = $gift_bag['id'] ?? 0;
if (!$gift_bag_id) {
return ['code' => 0, 'msg' => '礼包不存在','data' => null];
}
$gift_bag_detail = DB::name('vs_gift_bag_detail')->where(['gift_bag_id'=>$gift_bag_id])->select();
if (!$gift_bag_detail) {
return ['code' => 0, 'msg' => '礼包未配置','data' => null];
}
Db::startTrans();
try {
foreach ($gift_bag_detail as $k=>$v){
$gift_id =0;
$gift_price = 0;
$gift_num = $v['quantity'];
switch ($v['type']) {
case 1: //金币 方法1直接添加到用户钱包
$gift_price = $v['quantity'];
$res = model('common/UserWallet')->change_user_money($user_id, $v['quantity'], model('common/UserWallet')::MONEYTYPECOIN, model('common/UserWallet')::NEW_USER_CHARGE_GIFT,model('common/UserWallet')::ChangeTypeLable(model('common/UserWallet')::NEW_USER_CHARGE_GIFT));
break;
case 2: //礼物 方法2添加到用户礼物背包
$gift_id = $v['foreign_id'];
$res = model('UserGiftPack')->change_user_gift_pack($user_id,$v['foreign_id'],$v['quantity'],model('UserGiftPack')::NEW_CHARGE_GIFT,"新人好礼获得礼物");
break;
case 3: //坐骑 方法3添加到用户装扮
$gift_id = $v['foreign_id'];
$decorate_price_info = db::name('vs_decorate_price')->where(['id'=>$v['foreign_id']])->find();
if(empty($decorate_price_info)){
break;
}
$gift_price = $decorate_price_info['price'];
$res = model('Decorate')->pay_decorate($user_id,$decorate_price_info['did'],$decorate_price_info['day'],8);
break;
case 4: //道具 方法5钻石
$gift_price = $v['quantity'];
$res = model('common/UserWallet')->change_user_money($user_id, $v['quantity'], model('common/UserWallet')::MONEYTYPEARNINGS, model('common/UserWallet')::NEW_USER_CHARGE_GIFT,model('common/UserWallet')::ChangeTypeLable(model('common/UserWallet')::NEW_USER_CHARGE_GIFT));
default:
break;
}
if ($res['code'] != 1) {
Db::rollback();
return ['code' => 0, 'msg' => $res['msg'], 'data' => null];
}
// 记录日志
//添加礼盒记录
$reslut = Db::name('vs_gift_bag_receive_log')->insert([
'user_id' => $user_id,
'gift_bag_id' => $gift_bag_id,
'parent_id' => $v['id'],
'gift_id'=> $v['foreign_id'],
'num' => $v['quantity'],
'bag_price' => $gift_bag['money'],
'gift_price' => $v['gold'],
'createtime' => time(),
'updatetime' => time()
]);
}
// 添加活动记录
$reslut = Db::name('vs_activities_receive')->insert([
'user_id' => $user_id,
'activities_id' => 7,
'createtime' => time(),
'updatetime' => time()
]);
Db::commit();
return ['code' => 1, 'msg' => '操作成功','data' => null];
}catch (\Exception $e) {
// 回滚事务
Db::rollback();
return ['code' => 0, 'msg' => "请重试", 'data' => null];
}
}
//获取礼包总价值
public static function get_gift_bag_total_price($gift_bag_id){
$gift_bag_detail = Db::name('vs_gift_bag_detail')->where(['gift_bag_id'=>$gift_bag_id])->select();
$total_price = 0;
foreach ($gift_bag_detail as $k=>$v){
switch ($v['type']) {
case 1: //金币
$total_price += $v['quantity']*$v['gold'];
break;
case 2: //礼物 方法2添加到用户礼物背包
$gift_price = db::name('vs_gift')->where(['gid'=>$v['foreign_id']])->value('gift_price');
$total_price += $gift_price * $v['quantity'];
break;
case 3: //坐骑 方法3添加到用户装扮
$decorate_price = db::name('vs_decorate_price')->where(['id'=>$v['foreign_id']])->value('price');
$total_price += $decorate_price * $v['quantity'];
break;
case 4: //道具 方法5钻石
$total_price += $v['quantity']*$v['gold'];
break;
}
}
return $total_price;
}
}

View File

@@ -9,11 +9,13 @@ class Banner extends Model
{
protected $table = 'fa_vs_banner';
public $ShowType = [
// 1 => '引导页',
// 2 => '启动页',
1 => '引导页',
2 => '启动页',
3 => '首页轮播图',
4 => '工会',
5 => '帮助反馈'
4 => '房间首页轮播图',
5 => '工会列表页广告位',
6 => '我的主页广告位',
7 => '道具商城广告位'
];
//1纯展示 2文章 3房间 4个人主页 5外站'
public $Type = [

View File

@@ -0,0 +1,240 @@
<?php
namespace app\api\model;
use think\Cache;
use think\Model;
use think\Db;
/*
* 酒吧房
*/
class BarRoom extends Model
{
// 开启自动写入时间戳字段
protected $autoWriteTimestamp = true;
// 定义时间戳字段名
protected $createTime = 'createtime';
protected $updateTime = 'updatetime';
// 麦位时长配置
protected $pitDuration = [
'1' => 5,
'2' => 10,
'3' => 15,
'4' => 20,
'5' => 25,
'6' => 30,
];
//麦位时长列表
public function get_pit_duration_list(){
foreach ($this->pitDuration as $key => $value) {
$list[] = [
'time' => $value,
'time_str' => $value.'分钟',
];
}
return ['code' => 1, 'msg' => '获取成功', 'data' => $list];
}
//设置房间麦位时长
public function set_pit_duration($room_id,$time){
$room = db::name('vs_room')->where(['id' => $room_id, 'delete_time' => 0, 'room_status' => 1])->find();
if(!$room){
return ['code' => 0, 'msg' => '房间不存在', 'data' => null];
}
$room_data = db::name('vs_room_bar')->where('id',$room['id'])->find();
if($room_data){
if($room_data['pit_time'] != $time){
db::name('vs_room_bar')->where('id',$room_id)->update(['pit_time' => $time]);
}
}else{
db::name('vs_room_bar')->insert([
'id' => $room_id,
'pit_time' => $time,
]);
}
//推送麦位时长
return ['code' => 1, 'msg' => '成功', 'data' => null];
}
//上麦选择礼物
public function join_pit_choose_gift($user_id,$room_id,$gift_id){
$pit_gift = db::name('vs_room_bar_pit_gift')->where(['room_id' => $room_id,'user_id' => $user_id])->find();
$pit_time = db::name('vs_room_bar')->where('id',$room_id)->value('pit_time')??5;
$end_time = time() + ($pit_time * 60);
if($pit_gift){
// 使用WHERE条件和影响行数验证确保并发安全
$result = db::name('vs_room_bar_pit_gift')
->where(['id' => $pit_gift['id']])
->update([
'gift_id' => $gift_id,
'end_time' => $end_time,
'updatetime' => time(),
'delete_time' => 0,
]);
} else{
// 执行插入操作
$result = db::name('vs_room_bar_pit_gift')->insert([
'room_id' => $room_id,
'user_id' => $user_id,
'gift_id' => $gift_id,
'end_time' => $end_time,
'createtime' => time(),
]);
}
if(!$result){
return ['code' => 0, 'msg' => '失败', 'data' => null];
}
return ['code' => 1, 'msg' => '成功', 'data' => null];
}
//约Ta礼物详情
public function get_gift_info_ta($room_id,$to_user_id,$user_id){
$return_data = [];
$pit_gift = db::name('vs_room_bar_pit_gift')->where(['room_id' => $room_id,'user_id' => $to_user_id, 'delete_time' => 0])->find();
if($pit_gift){
$gift = db::name('vs_gift')->where(['gid' => $pit_gift['gift_id'], 'delete_time' => 0])->find();
if(empty($gift)){
return ['code' => 0, 'msg' => '礼物不存在', 'data' => null];
}
//当前用户钱包余额(金币)
$wallet_coin = db::name('user_wallet_coin')->where(['user_id' => $user_id])->value('coin') ?? 0;
$return_data = [
'gift_id' => $pit_gift['gift_id'],
'gift_name' => $gift['gift_name'],
'base_image' => $gift['base_image'],
'gift_price' => $gift['gift_price'],
'user_wallet_coin' => $wallet_coin,
];
}
return ['code' => 1, 'msg' => '成功', 'data' => $return_data];
}
//撩TA
public function liao_ta($room_id,$user_id,$to_user_id){
//查询撩TA礼物
$liao_ta_gif = $this->get_liao_ta_gift();
$liao_ta_gif_id = $liao_ta_gif['gid']??0;
//调用送礼接口
$re = model("api/SendGift")->send_gift($user_id,$to_user_id,$liao_ta_gif_id,1,1,$room_id);
if($re['code'] != 1){
return ['code' => 0, 'msg' => $re['msg'], 'data' => null];
}
return ['code' => 1, 'msg' => '成功', 'data' => null];
}
//一键全撩
public function one_key_liao_ta($room_id,$user_id){
//查询撩TA礼物
$liao_ta_gif = $this->get_liao_ta_gift();
$liao_ta_gif_id = $liao_ta_gif['gid']??0;
//查询麦上用户
$room_pit_Users = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => ['<',7],'user_id'=>['>',0],'status' => 1])->column('user_id');
if(empty($room_pit_Users)){
return ['code' => 0, 'msg' => '没有麦上用户', 'data' => null];
}
$to_user_ids = [];
foreach ($room_pit_Users as $key => $value) {
if($user_id == $value){//自己
continue;
}
//调用送礼接口
$to_user_ids[] = $value;
}
$to_user_ids = implode(',',$to_user_ids);
$re = model("api/SendGift")->send_gift($user_id,$to_user_ids,$liao_ta_gif_id,1,1,$room_id);
if($re['code'] != 1){
return ['code' => 0, 'msg' => $re['msg'], 'data' => null];
}
return ['code' => 1, 'msg' => '成功', 'data' => null];
}
//获取撩TA礼物
public function get_liao_ta_gift(){
$cache_key = 'gift_list_17';
//2,缓存获取
$gift_data = json_decode(Cache::get($cache_key), true);
//获取到就返回
if($gift_data){
return $gift_data;
}
//查询撩TA礼物
$where = [];
$where['type'] = 6;
$where['label'] = 17;
$where['is_show'] = 1;
$where['is_can_buy'] = 1;
$where['delete_time'] = 0;
$gift_data = db::name('vs_gift')->where($where)->order('gid desc')->find();
//设置缓存
Cache::set($cache_key, json_encode($gift_data), 3600*24);
return $gift_data;
}
//约TA
public function meeting_ta($user_id,$room_id,$meet_user_id,$gift_id){
//走送礼流程
$res = model("api/SendGift")->send_gift($user_id,$meet_user_id,$gift_id,1,1,$room_id);
if($res['code'] != 1){
return ['code' => 0, 'msg' => $res['msg'], 'data' => null];
}
//预测版块 上线前注释掉 ======👇======
//获取 房间ID
// $room_last_id = db::name('vs_room')->order('id desc')->value('id');
// if($room_last_id >= 19998){
// return ['code' => 0, 'msg' =>'房间已满,暂时不能创建房间,请联系运营或管理', 'data' => null];
// }
//预测版块 上线前注释掉======👆======
//创建私密房间 并告知前端拉谁进入
$room_ids = model('api/Room')->user_create_room($user_id,'酒吧私密房',get_system_config_value('web_site').'/data/avatar/head_pic.png','酒吧房产生的一次性房间',11);
if($room_ids['code'] != 1){
return ['code' => 0, 'msg' => $room_ids['msg'], 'data' => null];
}else{
//记录小房间
$datda = [
'room_id' => $room_ids['data'],
'p_room_id' => $room_id,
'user_id' => $user_id,
'meet_user_id' => $meet_user_id,
'end_time' => time() + get_system_config_value('bar_room_timea') * 60,
'createtime' => time(),
'status' => 1 //1-正常2-结束
];
db::name('vs_room_bar_movie')->insert($datda);
$text['text'] = '约TA并创建房间';
$text['room_id'] = $room_ids['data'];//前端用来让用户跳转的房间id
$text['user_id'] = $user_id;
$text['meet_user_id'] = $meet_user_id;
model('api/Chat')->sendMsg(1201,$room_id,$text);
}
return ['code' => 1, 'msg' => '成功', 'data' => null];
}
//小黑屋列表
public function black_room_list($room_id){
$list = db::name('vs_room_bar_movie')->where(['p_room_id' => $room_id,'status' => 1,'end_time' => ['>',time()]])->select();
return ['code' => 1, 'msg' => '成功', 'data' => $list];
}
}

View File

@@ -0,0 +1,492 @@
<?php
namespace app\api\model;
use app\common\controller\Push;
use think\Cache;
use think\Model;
use think\Db;
use think\Session;
/*
* 盲盒转盘
* 2025-08-16
*/
class BlindBoxTurntableGift extends Model
{
// 开启自动写入时间戳字段
protected $autoWriteTimestamp = true;
// 定义时间戳字段名
protected $createTime = 'createtime';
protected $updateTime = 'updatetime';
protected $table = 'fa_vs_gift';
//获取奖池礼物列表
public function get_gift_list($gift_bag_id,$room_id)
{
$box = db::name('vs_gift_bag')->where('id',$gift_bag_id)->find();
$gifts = db::name('vs_gift_bag_detail')->where('gift_bag_id',$gift_bag_id)->order("id desc")->select();
$gift_list = [];
foreach ($gifts as $key => $value) {
$gift_data = db::name('vs_gift')->where('gid',$value['foreign_id'])->where('delete_time',0)->find();
if($gift_data){
$gift_list[$key]['number'] = $key;
$gift_list[$key]['gift_id'] = $gift_data['gid'];
$gift_list[$key]['gift_name'] = $gift_data['gift_name'];
$gift_list[$key]['base_image'] = $gift_data['base_image'];
$gift_list[$key]['play_image'] = $gift_data['play_image'];
$gift_list[$key]['gift_price'] = $gift_data['gift_price'];
}
}
$ext = json_decode($box['ext'],true);
$box_gift = Db::name('vs_gift')->where('gid',$ext['gift_id'])->find();
//巡乐会
$is_xlh = 0;
$xlh_box = db::name('vs_gift_bag')->where('id',13)->find();
$xlh_ext = json_decode($xlh_box['ext'],true);
$xlh = [];
if($xlh_ext['inlet_bag_id'] == $box['id']){
$is_xlh = 1;
$xlh['waiting_start_num'] = $xlh_ext['open_condition']['waiting_start_num'];//等待开奖次数
$xlh['start_num'] = $xlh_ext['open_condition']['start_num'];//开始开奖次数
//当前抽奖次数
$xlh['current_num'] = Cache::get("xlh_periods_num") ?? 0;
//状态
if($xlh['current_num'] >= $xlh_ext['open_condition']['start_num']){
$xlh['status'] = 1;//状态 1:巡乐会开始 2:即将开始开始 0:等待开始
} elseif($xlh['current_num'] >= $xlh_ext['open_condition']['waiting_start_num'] && $xlh['current_num'] < $xlh_ext['open_condition']['start_num']){
$xlh['status'] = 2;//状态 1:巡乐会开始 2:即将开始开始 0:等待开始
}else{
$xlh['status'] = 0;
}
}
$result_data = [
'title' => $box['name'],
'rule_url' => get_system_config_value('web_site')."/api/Page/get_gift_box_rule?box_id=".$box["id"],
'box_price' => $box_gift['gift_price'],
'is_xlh' => $is_xlh,
'xlh_data' => $xlh,
'gift_list' => $gift_list,
];
return ['code' => 1, 'msg' => '获取成功', 'data' => $result_data];
}
/*
* 礼物特效播放
*/
public function gift_send($send_id){
try{
$blind_box_turntable = Db::name('vs_blind_box_turntable_log')->where(['id'=>$send_id,'is_sued'=>0])->find();
if(!$blind_box_turntable){
return ['code' => 1, 'msg' => '成功', 'data' => null];
}
if(in_array($blind_box_turntable['gift_bag_id'],[11,12])){
return ['code' => 1, 'msg' => '成功', 'data' => null];
}
$room_id = $blind_box_turntable['room_id'];
$blind_box_turntable_log = Db::name('vs_blind_box_turntable_results_log')->where(['tid'=>$send_id])->select();
if(!$blind_box_turntable_log){
return ['code' => 0, 'msg' => '数据不存在','data' => null];
}
$room_name = Db::name('vs_room')->where(['id' => $room_id, 'apply_status' => 2])->value('room_name');
$FromUserInfo = Db::name('user')->where(['id'=>$blind_box_turntable['user_id']])->find();
$FromUserInfo['user_id'] = $FromUserInfo['id'];
$FromUserInfo['icon'][0] = model('UserData')->user_wealth_icon($blind_box_turntable['user_id']);//财富图标
$FromUserInfo['icon'][1] = model('UserData')->user_charm_icon($blind_box_turntable['user_id']);//魅力图标
$FromUserInfo['chat_bubble'] = model('Decorate')->user_decorate_detail($blind_box_turntable['user_id'],9);//聊天气泡
$user_nickname = $FromUserInfo['nickname'];
$userGiftMap = [];
$ToUserInfo = [];
foreach ($blind_box_turntable_log as $key => $value) {
$ToUserInfo = Db::name('user')->where(['id' => $value['gift_user_id']])->field('id as user_id,nickname,avatar,sex')->find();
$draw_gift = Db::name('vs_gift')->where(['gid'=>$value['gift_id']])->find();
$text_message = $user_nickname . '在' . $room_name . '房间送给了' . $ToUserInfo['nickname'] . $draw_gift['gift_name'] . 'X' . $value['count']."\n";
if($draw_gift['is_public_server'] == 1) {
$text_list_new[] = [
'text' => $text_message,
'gift_picture' => $draw_gift['base_image'],
'room_id' => $room_id,
'fromUserName' => $FromUserInfo['nickname'],
'toUserName' => $ToUserInfo['nickname'],
'giftName' => $draw_gift['gift_name'],
'roomId' => $room_id,
'number' => $value['count'],
];
}
$userId = $value['gift_user_id'];
if (!isset($userGiftMap[$userId])) {
$userGiftMap[$userId] = [
'userInfo' => $ToUserInfo,
'gifts' => []
];
}
$userGiftMap[$userId]['gifts'][] = [
'gift_id' => $draw_gift['gid'],
'gift_name' => $draw_gift['gift_name'],
'count' => $value['count'],
'play_image' => $draw_gift['play_image'],
'base_image' => $draw_gift['base_image']
];
}
// 为每个用户单独推送消息
foreach($userGiftMap as $userId => $userData) {
$userInfo = $userData['userInfo'];
$gifts = $userData['gifts'];
// 构建用户专属文本消息,接收者名字只出现一次
$userTextMessage = $user_nickname . ' 送给 ' . $userInfo['nickname'];
// 添加该用户收到的所有礼物
$giftCount = [];
foreach ($gifts as $gift) {
$userTextMessage .= ' 盲盒转盘礼物 ' . $gift['gift_name'].' x ' .$gift['count'];
// 统计相同礼物的数量
$giftCount[] = [
'gift_info' => $gift,
'count' => $gift['count']
];
}
$userInfo['icon'][0] = model('UserData')->user_wealth_icon($userInfo['user_id']);
$userInfo['icon'][1] = model('UserData')->user_charm_icon($userInfo['user_id']);
$userInfo['charm'] = db::name('vs_room_user_charm')->where(['user_id' => $userInfo['user_id'],'room_id' => $room_id])->value('charm');
$userText = [
'FromUserInfo' => $FromUserInfo,
'ToUserInfo' => $userInfo,
'GiftInfos' => array_values($gifts),
'text' => $userTextMessage
];
// 聊天室推送系统消息给每个用户
model('Chat')->sendMsg(1038,$room_id,$userText);
foreach ($giftCount as $giftData) {
$gift_inf = $giftData['gift_info'];
$count = $giftData['count'];
// 推送礼物特效消息
$effectData = [
'FromUserInfo' => $FromUserInfo,
'ToUserInfo' => $userInfo,
'GiftInfo' => $gift_inf,
'gift_num' => $count,
'text' => null
];
// 聊天室推送礼物特效消息
model('Chat')->sendMsg(1005,$room_id,$effectData);
}
}
$roomtype = Db::name('vs_room')->where(['id' => $room_id])->value('type_id');
if($roomtype == 6){
//推送消息
$hot_value = db::name('vs_room')->where('id', $room_id)->value('hot_value');
$text1 = [
'room_id' => $room_id,
'hot_value' => $hot_value,
'text' => '房间心动值变化'
];
//聊天室推送系统消息
model('Chat')->sendMsg(1028,$room_id,$text1);
}else{
if(!empty($text_list_new)){
//推送礼物横幅
$push = new Push($blind_box_turntable['user_id'], $room_id);
$push->giftBanner($text_list_new);
}
}
db::name('vs_blind_box_turntable_log')->where('id', $send_id)->update(['is_sued' => 1, 'updatetime' => time()]);
return ['code' => 1, 'msg' => '成功', 'data' => null];
} catch (\Exception $e) {
return ['code' => 0, 'msg' => "网络请求错误,请重试!".$e->getMessage(), 'data' => null];
}
}
/*
* 获取用户抽奖记录
*/
public function get_user_record($gift_bag_id,$user_id=0,$page=1,$page_size=12){
$where = [];
$where['b.gift_bag_id'] = $gift_bag_id;
if($user_id > 0){
$where['b.user_id'] = $user_id;
}
$list = db('vs_blind_box_turntable_results_log')
->alias('a')
->join('vs_blind_box_turntable_log b','b.id = a.tid','left')
->join('user c','a.gift_user_id = c.id','left')
->join('vs_gift d','d.gid = a.gift_id','left')
->field('a.gift_id,a.count,a.gift_user_id,a.createtime,c.nickname,d.gift_name as gift_name,d.base_image')
->where($where)
->order('a.createtime desc')
->page($page,$page_size)
->select();
foreach ($list as &$v){
$v['createtime'] = date('Y-m-d H:i:s',$v['createtime']);
}
return ['code' => 1, 'msg' => '成功', 'data' => $list];
}
/*
* 获取全服抽奖记录
*/
public function get_all_record($gift_bag_id,$page=1,$page_size=12){
$where = [];
$where['b.gift_bag_id'] = $gift_bag_id;
$where['d.gift_bag_id'] = $gift_bag_id;
$where['d.is_world_show'] = 1;
$list = db('vs_blind_box_turntable_results_log')
->alias('a')
->join('vs_blind_box_turntable_log b','b.id = a.tid','left')
->join('user c','b.user_id = c.id','left')
->join('vs_gift_bag_detail d','d.foreign_id = a.gift_id','left')
->join('vs_gift e','e.gid = a.gift_id','left')
->field('a.gift_id,a.count,b.user_id,a.createtime,c.nickname,d.name as gift_name,e.base_image')
->where($where)
->order('a.createtime desc')
->page($page,$page_size)
->select();
foreach ($list as &$v){
$v['createtime'] = date('Y-m-d H:i:s',$v['createtime']);
}
return ['code' => 1, 'msg' => '成功', 'data' => $list];
}
/*
* 巡乐会
*/
public function xlh_gift_list($room_id){
$gift_bag_id = 13;
$xlh_box = db::name('vs_gift_bag')->where('id',$gift_bag_id)->find();
$xlh_ext = json_decode($xlh_box['ext'],true);
$gifts = db::name('vs_gift_bag_detail')->where('gift_bag_id',$gift_bag_id)->order("id desc")->select();
$gift_list = [];
foreach ($gifts as $key => $value) {
$gift_data = db::name('vs_gift')->where('gid',$value['foreign_id'])->where('delete_time',0)->find();
if($gift_data){
$gift_list[$key]['number'] = $key;
$gift_list[$key]['gift_id'] = $gift_data['gid'];
$gift_list[$key]['gift_name'] = $gift_data['gift_name'];
$gift_list[$key]['base_image'] = $gift_data['base_image'];
$gift_list[$key]['play_image'] = $gift_data['play_image'];
$gift_list[$key]['gift_price'] = $gift_data['gift_price'];
}
}
//房主信息
// $room_user = db::name('user')->where('id',$room_data['user_id'])->find();
//房主礼物
$room_user_gift = db::name('vs_gift')->where('gid',$xlh_ext['locking_condition']['give_homeowner_gift_id'])->find();
//巡乐会主礼物
$xlh_main_gift = db::name('vs_gift')->where('gid',$xlh_ext['locking_condition']['locking_gift_id'])->find();
//中奖用户
$pan_xlh = db::name('vs_room_pan_xlh')->where(['send_time'=>0,'end_time'=>['>',time()]])->order('id desc')->find();
$xlh_periods_num = Cache::get("xlh_periods_num") ?? 0;
if(empty($pan_xlh)){
return ['code' => 0, 'msg' => '巡乐会已结束', 'data' => null];
}
// if(empty($pan_xlh)){
// if($xlh_periods_num >= $xlh_ext['open_condition']['start_num']){
// $xlh_periods = Cache::get("this_xlh_periods") ?? 0;
// $pan_xlh_id = db::name('vs_room_pan_xlh')->insertGetId([
// 'room_id' => $room_id,
// 'gift_id' => $xlh_ext['locking_condition']['locking_gift_id'],
// 'homeowner_gift_id' => $xlh_ext['locking_condition']['give_homeowner_gift_id'],
// 'periods' => $xlh_periods+1,
// 'num' => 0,
// 'end_time' => time() + $xlh_ext['locking_time']['end_time'] * 60,
// 'createtime' => time()
// ]);
// Cache::set("this_xlh_periods", $xlh_periods+1, 0);//修改巡乐会期数
// $pan_xlh = db::name('vs_room_pan_xlh')->where(['id'=>$pan_xlh_id])->find();
// }else{
// return ['code' => 0, 'msg' => '巡乐会已结束', 'data' => null];
// }
// }
$xlh_user_data= null;
$room_user_data = null;
if($pan_xlh && $pan_xlh['user_id']){
$xlh_user = db::name('user')->where('id',$pan_xlh['user_id'])->find();
$xlh_user_data = [
'user_id' => $xlh_user['id'],
'nickname' => $xlh_user['nickname'],
'avatar' => $xlh_user['avatar'],
];
if($pan_xlh['room_id']){
$room_data = db::name('vs_room')->field('xlh_periods,xlh_periods_num,user_id')-> where('id',$pan_xlh['room_id'])->find();
$room_user = db::name('user')->where('id',$room_data['user_id'])->find();
$room_user_data = [
'user_id' => $room_user['id'],
'nickname' => $room_user['nickname'],
'avatar' => $room_user['avatar'],
];
}
}
//$gift_list 按gift_price 升序排序
usort($gift_list, function($a, $b) {
return $a['gift_price'] - $b['gift_price'];
});
$result_data = [
'title' => $xlh_box['name'],
'rule_url' => get_system_config_value('web_site')."/api/Page/get_gift_box_rule?box_id=".$xlh_box["id"],
'box_price' => $xlh_ext['xlh_box_price'],
'xlh_end_time' =>$pan_xlh['end_time']??0,
'give_homeowner_gift' => [
'gift_id' => $room_user_gift['gid'],
'gift_name' => $room_user_gift['gift_name'],
'gift_price' => $room_user_gift['gift_price'],
'base_image' => $room_user_gift['base_image'],
],
'homeowner_user' => $room_user_data,
'locking_gift' => [
'gift_id' => $xlh_main_gift['gid'],
'gift_name' => $xlh_main_gift['gift_name'],
'gift_price' => $xlh_main_gift['gift_price'],
'base_image' => $xlh_main_gift['base_image'],
'gift_num' => $pan_xlh['num']??0
],
'xlh_user' => $xlh_user_data,
'gift_list' => $gift_list,
];
return ['code' => 1, 'msg' => '获取成功', 'data' => $result_data];
}
/*
* 巡乐会抽奖记录
*/
public function xlh_get_user_record($user_id,$room_id,$page=1,$page_size=12){
$where = [];
$where['a.gift_bag_id'] = 13;
$where['a.user_id'] = $user_id;
$list = db('vs_gift_bag_receive_pan_log')
->alias('a')
->join('vs_room_pan_xlh b','b.id = a.parent_id','left')
->join('vs_gift c','c.gid = a.gift_id','left')
->field('a.gift_id,a.num as count,a.createtime,c.gift_name as gift_name,c.base_image')
->where($where)
->order('a.createtime desc')
->page($page,$page_size)
->select();
foreach ($list as &$v){
$v['createtime'] = date('Y-m-d H:i:s',$v['createtime']);
}
return ['code' => 1, 'msg' => '成功', 'data' => $list];
}
/*
* 巡乐会榜单
*/
public function xlh_ranking($room_id,$page=1,$page_size=12){
$where = [];
$where['a.gift_bag_id'] = 13;
$where['e.is_world_show'] = 1;
$list = db('vs_gift_bag_receive_pan_log')
->alias('a')
->join('vs_room_pan_xlh b','b.id = a.parent_id','left')
->join('vs_gift c','c.gid = a.gift_id','left')
->join('fa_user d','d.id = a.user_id','left')
->join('vs_gift_bag_detail e','e.foreign_id = a.gift_id','left')
->field('a.gift_id,a.num as count,a.createtime,c.gift_name,c.base_image,d.nickname')
->where($where)
->order('a.createtime desc')
->page($page,$page_size)
->select();
foreach ($list as &$v){
$v['createtime'] = date('Y-m-d H:i:s',$v['createtime']);
}
return ['code' => 1, 'msg' => '成功', 'data' => $list];
}
/*
* 获取用户当前房间的巡乐会信息
*/
public function get_user_xlh_info($room_id){
$gift_bag_id = 13;
$xlh_box = db::name('vs_gift_bag')->where('id',$gift_bag_id)->find();
$xlh_ext = json_decode($xlh_box['ext'],true);
$xlh_data = db('vs_room_pan_xlh')->where(["send_time"=>0,"end_time"=>[">",time()]])->field('id,room_id,periods,end_time')->order('periods desc')->find();
//寻乐会状态
$xlh_status = 0;
// 状态
$xlh_periods_num = Cache::get("xlh_periods_num") ?? 0;
if($xlh_periods_num >= $xlh_ext['open_condition']['start_num']){
$xlh_status = 1;//状态 1:巡乐会开始 2:即将开始 0:等待开始
} elseif($xlh_periods_num >= $xlh_ext['open_condition']['waiting_start_num'] && $xlh_periods_num < $xlh_ext['open_condition']['start_num']){
$xlh_status = 2;//状态 1:巡乐会开始 2:即将开始开始 0:等待开始
}else{
$xlh_status = 0;//未开始
}
return [
'activities_name' => $xlh_box['name'],
'icon' => null,
'xlh_status'=>$xlh_status,
'end_time'=>$xlh_data['end_time'] ?? 0,
];
}
/*
* 巡乐会榜单
*
*/
public function xlh_ranking_list($room_id,$page=1,$page_size=12){
$gift_bag_id = 13;
$xlh_box = db::name('vs_gift_bag')->where('id',$gift_bag_id)->find();
$xlh_ext = json_decode($xlh_box['ext'],true);
$pan_xlh = db::name('vs_room_pan_xlh')
->order('id desc')
->page($page,$page_size)
->select();
$list = [];
foreach ($pan_xlh as $key=>$value){
$list[$key]['periods'] = "".$value['periods']."";
if(!empty($value['user_id'])){
$list[$key]['nickname'] = db::name('user')->where(['id'=>$value['user_id']])->value('nickname');
}else{
$list[$key]['nickname'] = "";
}
if(!empty($value['gift_id'])){
$gift_data = db::name('vs_gift')->field('gift_name,base_image')->where(['gid'=>$value['gift_id']])->find();
$list[$key]['gift_name'] = 'x '.$value['num'].' '.$gift_data['gift_name'];
$list[$key]['base_image'] = $gift_data['base_image']??"";
}else{
$gift_data = db::name('vs_gift')->field('gift_name,base_image')->where(['gid'=>$xlh_ext['locking_condition']['locking_gift_id']])->find();
$list[$key]['gift_name'] = 'x 0 '.$gift_data['gift_name'];
$list[$key]['base_image'] = $gift_data['base_image']??"";
}
$list[$key]['createtime'] = $value['send_time'] ? date('Y-m-d H:i:s',$value['send_time']) : '' ;
}
return [
'code' => 1,
'msg' => '成功',
'data' => $list
];
}
//盲盒转盘开启状态
public function blind_box_status(){
$gift_bag_ids = [11,12];
$gift_bag = db::name('vs_gift_bag')->where(['id'=>['in',$gift_bag_ids]])->select();
foreach ($gift_bag as $bag){
if($bag['status'] == 1){
$result_data[] = [
'gift_bag_id' => $bag['id'],
'name' => $bag['name'],
'status' => 1,
'status_str' => '开启中',
'icon' => $bag['icon'],
];
}else{
$result_data[] = [
'gift_bag_id' => $bag['id'],
'name' => $bag['name'],
'status' => 0,
'status_str' => '未开启',
'icon' => $bag['icon'],
];
}
}
return ['code' => 1, 'msg' => '成功', 'data' => $result_data];
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -89,6 +89,78 @@ class Chat extends Model
// RoomAuctionPK = 1037,
//送盲盒礼物推送文字消息
// RoomGiftBlindBox = 1038,
//换麦
// RoomChangePit = 1039,
//交友房间内发送消息
//交友房游戏阶段
// FriendRoomGameStart = 1049,
//交友房延时
// FriendRoomDelay = 1050,
//交友结束推送是否创建小房间
// FriendRoomEnd = 1051,
//交友房 私密小屋送礼增加结束时间
// FriendRoomGiftBlindBox = 1052,
//交友 房间换麦位
// FriendRoomChangePit = 1053,
//交友 心动值变化
// FriendRoomChangeCharm = 1054,
//交友 退出小房间
// FriendRoomQuit = 1055,
//盲盒转盘相关推送
//巡乐会进度推送
// BlindBoxTurnTableProgress = 1056,
//巡乐会抽奖结果推送
// BlindBoxTurnTableResult = 1057,
//直播群成员在离线状态变更
// RoomMemberOffline = 1058,
//清空个人魅力
// ClearUserCharm = 1059,
//发红包
// RedPacket = 1060,
//红包领完推送
// RedPacketComplete = 1061,
//点歌房推送信息
//当前歌曲发生变化
// SongChange = 1070,
//下一首歌曲发生变化
// SongNextChange = 1071,
//歌曲数量发生变化
// SongCountChange = 1072,
//CP房间推送信息
// CP进入房间触发特效
// CPRoomEffect = 1080,
//签约房推送信息
//开始签约
// SignRoomStart = 1090,
//签约房签约出价最高用户
// SignRoomSignUser = 1091,
//签约房间结束
// SignRoomEnd = 1092,
//签约延时
// SignRoomDelay = 1093,
//签约房 邀请用户上签约麦位
// SignRoomInviteUser = 1094,
//爆币房推送信息
// BlindCoinRoom = 1100,
//酒吧房撩TA推送
// BarRoomLiaoTa = 1200,
//酒吧房开私密房
// BarRoomOpenPrivateRoom = 1201,
//酒吧房抱麦
// BarRoomUpSeat = 1202,
//酒吧房上麦后设置自定义礼物设置
// BarRoomSetCustomGift = 1203,
@@ -98,7 +170,7 @@ class Chat extends Model
'Text' => $content
];
$data = model('Tencent')->send_group_system_notification('room'.$roomId,json_encode($text));
$data = model('api/Tencent')->send_group_system_notification('room'.$roomId,json_encode($text));
if($data['code'] == 0){
Log::record("腾讯发送群消息:".$data['msg'].$type,"info");

View File

@@ -85,8 +85,9 @@ class DailyTasks extends Model
$reslut['tasks']['daily_tasks'] = [];//每日任务1
$reslut['tasks']['daily_tasks_special'] = [];//每日特殊任务2
$reslut['tasks']['usual_tasks'] = [];//平台常规任务3
$reslut['tasks']['teacher_tasks'] = [];//师徒任务4
$data = db::name('vs_daily_tasks')
->field('task_id,icon,task_name,gold_reward,target_quantity,task_type')
->field('task_id,icon,task_name,gold_reward,target_quantity,task_type,reward_type')
->where('delete_time',0)
->where('is_active',1)
->order('sort asc')->select();
@@ -99,10 +100,26 @@ class DailyTasks extends Model
->where('task_id',$v['task_id'])
->whereTime('createtime', 'today')
->find();
}elseif($v['task_id'] == 17){
//师徒任务
//师傅签约返还
$user_sign_task = Db::name('vs_user_sign_task')->where(['user_id'=>$user_id,'day'=>date('Y-m-d')])->find();
if(empty($user_sign_task)){
continue;
}
$v['gold_reward'] = $user_sign_task['value'];
}else{
$user_daily_tasks = Db::name('vs_user_daily_tasks')->where('user_id',$user_id)->where('task_id',$v['task_id'])->find();
}
$progress = isset($user_daily_tasks['current_progress']) ? $user_daily_tasks['current_progress'] : 0;
if($v['task_id'] == 17){
if($user_sign_task['status']==1){
$progress = $user_sign_task['times'] ?? 0;
}else{
$progress = $user_sign_task['times']-1 ?? 0;
}
}
$quantity_str = "";
if($v['target_quantity']!=1){
$quantity_str= "({$progress}/{$v['target_quantity']})";
@@ -129,19 +146,28 @@ class DailyTasks extends Model
$v['task_type_str'] = "去签到";
}
}
if($v['task_id'] == 17){
if($user_sign_task['status'] == 0){
$v['task_status'] = 2;
$v['task_type_str'] = "领取钻石";
}else{
$v['task_status'] = 3;
$v['task_type_str'] = "已领取";
}
}
$v['from_id'] = 0;
$v['is_time'] = 0;
if(in_array($v['task_id'],[8,9])){
$v['processing_type'] = 2;
$v['processing_type_str'] = $this->processing_type_str[$v['processing_type']];
//跳转的房间路径
$v['from_id'] = db::name('vs_room')->where(['delete_time'=>0,'room_status'=>1,'type_id'=>['<>',6]])->orderRaw('rand()')->value('id');
$v['from_id'] = db::name('vs_room')->where(['delete_time'=>0,'room_status'=>1,'type_id'=>['<>',6],'apply_status'=>2])->orderRaw('rand()')->value('id');
$v['target_quantity'] = $v['target_quantity'] * 60;
$v['is_time'] = 1;
}elseif(in_array($v['task_id'],[10])){
$v['processing_type'] = 7;
$v['processing_type_str'] = $this->processing_type_str[$v['processing_type']];
$v['from_id'] = db::name('vs_room')->where(['delete_time'=>0,'room_status'=>1,'type_id'=>['<>',6]])->orderRaw('rand()')->value('id');
$v['from_id'] = db::name('vs_room')->where(['delete_time'=>0,'room_status'=>1,'type_id'=>['<>',6],'apply_status'=>2])->orderRaw('rand()')->value('id');
} else{
$v['processing_type'] = 9;
$v['processing_type_str'] = $this->processing_type_str[$v['processing_type']];
@@ -152,15 +178,18 @@ class DailyTasks extends Model
$reslut['tasks']['daily_tasks'][] = $v;
}elseif ($v['task_type']==2) {
$reslut['tasks']['daily_tasks_special'][] = $v;
}else{
}elseif ($v['task_type']==3) {
$reslut['tasks']['usual_tasks'][] = $v;
}elseif ($v['task_type']==4) {
$reslut['tasks']['teacher_tasks'][] = $v;
}
}
return ['code' => 1, 'msg' => '获取成功', 'data' => $reslut];
}
//完成每日任务
public function tasks_complete($user_id,$task_id){
//废弃
return ['code' => 1, 'msg' => '操作成功','data' => ['is_completed'=>0]];
//查询任务
$task_info = Db::name('vs_daily_tasks')->where('task_id',$task_id)->where('delete_time',0)->where('is_active',1)->find();
if(empty($task_info)){
@@ -220,41 +249,83 @@ class DailyTasks extends Model
//领取每日任务金币奖励
public function daily_tasks_receive($user_id,$task_id){
//废弃
return ['code' => 1, 'msg' => "领取成功", 'data' => null];
//查询是否实名认证
$is_real = model('UserData')->real_name_info($user_id);
if($is_real['code']==0){
return ['code' => 0, 'msg' => '请先实名认证','data' => null];
}else{
if($is_real['data']['is_real'] !=1){
return ['code' => 0, 'msg' => '请先实名认证','data' => null];
}
}
$task_info = Db::name('vs_daily_tasks')->where('task_id',$task_id)->find();
if (!$task_info) {
return ['code' => 0, 'msg' => '任务不存在','data' => null];
}
if($task_info['task_type']==3){
$user_daily_tasks = Db::name('vs_user_daily_tasks')->where('user_id',$user_id)->where('task_id',$task_id)->find();
if($task_id!=17){
if($task_info['task_type']==3){
$user_daily_tasks = Db::name('vs_user_daily_tasks')->where('user_id',$user_id)->where('task_id',$task_id)->find();
}else{
$user_daily_tasks = Db::name('vs_user_daily_tasks')->where('user_id',$user_id)->where('task_id',$task_id)->whereTime('createtime', 'today')->find();
}
if (!$user_daily_tasks) {
return ['code' => 0, 'msg' => '请完成该任务','data' => null];
}
if ($user_daily_tasks['is_completed'] == 0) {
return ['code' => 0, 'msg' => '请完成该任务','data' => null];
}
if ($user_daily_tasks['is_claimed'] == 1) {
return ['code' => 0, 'msg' => '您已领取该奖励','data' => null];
}
}else{
$user_daily_tasks = Db::name('vs_user_daily_tasks')->where('user_id',$user_id)->where('task_id',$task_id)->whereTime('createtime', 'today')->find();
}
if (!$user_daily_tasks) {
return ['code' => 0, 'msg' => '请完成该任务','data' => null];
}
if ($user_daily_tasks['is_completed'] == 0) {
return ['code' => 0, 'msg' => '请完成该任务','data' => null];
}
if ($user_daily_tasks['is_claimed'] == 1) {
return ['code' => 0, 'msg' => '您已领取该奖励','data' => null];
//师徒任务
//师傅签约返还
$user_sign_task = Db::name('vs_user_sign_task')->where(['user_id'=>$user_id,'day'=>date('Y-m-d')])->find();
if (!$user_sign_task) {
return ['code' => 0, 'msg' => '任务不存在或已结束','data' => null];
}
if($user_sign_task['status']==1){
return ['code' => 0, 'msg' => '您已领取该奖励','data' => null];
}
}
Db::startTrans();
try {
$reslut = Db::name('vs_user_daily_tasks')->where('id',$user_daily_tasks['id'])->update([
'is_claimed' => 1,
'updatetime' => time(),
]);
if ($reslut) {
//操作用户金币
$res = model('common/UserWallet')->change_user_money($user_id, $user_daily_tasks['gold_reward'], model('common/UserWallet')::MONEYTYPECOIN, model('common/UserWallet')::DAILY_TASKS_REWARD,model('common/UserWallet')::ChangeTypeLable(model('common/UserWallet')::DAILY_TASKS_REWARD)."( ".$task_info['task_name'].")");
if ($res['code'] != 1) {
if($task_id==17){
//师徒任务
$reslut = Db::name('vs_user_sign_task')->where('id',$user_sign_task['id'])->update([
'status' => 1
]);
if ($reslut) {
//操作用户钻石
if ($reslut) {
$res = model('common/UserWallet')->change_user_money($user_id, $user_sign_task['value'], model('common/UserWallet')::MONEYTYPEARNINGS, model('common/UserWallet')::SIGN_MASTER_DAILY_RETURN,model('common/UserWallet')::ChangeTypeLable(model('common/UserWallet')::SIGN_MASTER_DAILY_RETURN)."".$user_sign_task['times']."");
if ($res['code'] != 1) {
Db::rollback();
return ['code' => 0, 'msg' => $res['msg'], 'data' => null];
}
} else {
Db::rollback();
return ['code' => 0, 'msg' => '操作失败', 'data' => null];
}
}
}else{
$reslut = Db::name('vs_user_daily_tasks')->where('id',$user_daily_tasks['id'])->update([
'is_claimed' => 1,
'updatetime' => time(),
]);
if ($reslut) {
//操作用户金币
$res = model('common/UserWallet')->change_user_money($user_id, $user_daily_tasks['gold_reward'], model('common/UserWallet')::MONEYTYPECOIN, model('common/UserWallet')::DAILY_TASKS_REWARD,model('common/UserWallet')::ChangeTypeLable(model('common/UserWallet')::DAILY_TASKS_REWARD)."( ".$task_info['task_name'].")");
if ($res['code'] != 1) {
Db::rollback();
return ['code' => 0, 'msg' => $res['msg'], 'data' => null];
}
} else {
Db::rollback();
return ['code' => 0, 'msg' => $reslut['msg'], 'data' => null];
return ['code' => 0, 'msg' => '操作失败', 'data' => null];
}
} else {
Db::rollback();
return ['code' => 0, 'msg' => '操作失败', 'data' => null];
}
// 提交事务
Db::commit();
@@ -342,10 +413,10 @@ class DailyTasks extends Model
public function gift_bag_receive_list($user_id){
//查询每日任务礼盒记录
$gift_bag_receive_list = Db::name('vs_gift_bag_receive_log')
->field('bag.name as gift_bag_name,de.name as gift_name,re.createtime as createtime,de.quantity,de.type,de.foreign_id,de.days,de.gold')
->field('bag.name as gift_bag_name,re.createtime as createtime,de.name as gift_name,de.quantity,de.type,de.foreign_id,de.days,de.gold')
->alias('re')
->join('vs_gift_bag bag', 'bag.id = re.gift_bag_id', 'LEFT')
->join('vs_gift_bag_detail de', 'de.gift_bag_id = re.gift_bag_id','LEFT')
->join('vs_gift_bag_detail de', 'de.id = re.parent_id', 'LEFT')
->where(['re.user_id'=>$user_id,'bag.activities_id'=>2,'bag.status'=>1])
->order('re.createtime desc')
->select();

View File

@@ -1,6 +1,8 @@
<?php
namespace app\api\model;
use think\Cache;
use think\Model;
use think\Db;
use think\Session;
@@ -15,9 +17,9 @@ class Decorate extends Model
// 定义时间戳字段名
protected $createTime = 'createtime';
protected $updateTime = 'updatetime';
// 定义字段类型 1头像框 2坐骑 3麦圈 6个人靓号 7房间靓号 8会靓号
public $TypeArray = [1=>'头像框',2=>'坐骑',3=>'麦圈',6=>'个人靓号',7=>'房间靓号',8=>'会靓号'];
protected $FromType = [1=>'购买',2=>'后台赠送',3=>'礼盒开奖',4=>'好友赠送',5=>'首充赠送',6=>'天降好礼获得',7=>'财富等级特权赠送'];
// 定义字段类型 1头像框 2坐骑 3麦圈 6个人靓号 7房间靓号 8会靓号
public $TypeArray = [1=>'头像框',12=>'降身卡',2=>'坐骑',9=>'聊天气泡',6=>'个人靓号',7=>'房间靓号',8=>'会靓号',3=>'麦圈',10=>'CP特效',11=>'CP装扮'];
protected $FromType = [1=>'购买',2=>'后台赠送',3=>'礼盒开奖',4=>'好友赠送',5=>'首充赠送',6=>'天降好礼获得',7=>'财富等级特权赠送',8=>'新人充值好礼',9=>'爵位购买赠送',10=>'任务奖励',11=>"每日签到"];
public function __construct($data = [])
{
parent::__construct($data);
@@ -27,6 +29,7 @@ class Decorate extends Model
//获取装扮类型
public function get_type_list($have_hot = 0)
{
$no_show_ids = [7,8,3,10,11];
$label = $this->TypeArray;
if ($have_hot) {
$label = [100 => '热门'] + array_filter($this->TypeArray, fn($key) => $key != 100, ARRAY_FILTER_USE_KEY);
@@ -34,6 +37,9 @@ class Decorate extends Model
$data = [];
$i = 0;
foreach ($label as $k => $v) {
if (in_array($k, $no_show_ids)) {
continue;
}
$data[$i]['id'] = $k;
$data[$i]['name'] = $v;
++$i;
@@ -71,11 +77,33 @@ class Decorate extends Model
'a.type' => $type,
];
}
$list = DB::name($this->table)->alias('a')->join('fa_vs_decorate_price b', 'a.did = b.did')->field('a.did,a.title,a.type,a.base_image,a.play_image,min(b.price) as price,special_num')->where($map)->group('b.did')->order('price asc')->select();
if($type == 12){
$map = [
'type' => 12,
'delete_time' => 0,
'show_status' => 1,
'is_buy' => 1
];
$list = DB::name($this->table)->where($map)->field('did,title,type,base_image,play_image,price')
->order('price asc')
->select();
}else{
$list = DB::name($this->table)
->alias('a')->join('fa_vs_decorate_price b', 'a.did = b.did')
->field('a.did,a.title,a.type,a.base_image,a.play_image,min(b.price) as price,special_num,b.original_price,b.discount')->where($map)->group('b.did')->order('price asc')->select();
}
foreach ($list as $k => &$v) {
$v['base_image'] = localpath_to_netpath($v['base_image']);
$v['play_image'] = localpath_to_netpath($v['play_image']);
$v['price'] = (int)$v['price'];
if(isset($v['discount'])){
if($v['discount']<=0 || $v['discount']>=10){
$v['discount'] = 0;
$v['discount_str'] = "无折扣";
}else{
$v['discount_str'] = $v['discount']."";
}
}
}
return ['code' => 1, 'msg' => '获取成功', 'data' => $list];
}
@@ -86,19 +114,26 @@ class Decorate extends Model
if (!$decorate) {
return ['code' => 0, 'msg' => '参数错误'];
}
$decorate_price = DB::name('vs_decorate_price')->where(['did' => $did, 'is_delete' => 1])->order('day asc')->select();
if (!$decorate_price) {
return ['code' => 0, 'msg' => '参数错误'];
}
$result['title'] = $decorate['title'];
foreach ($decorate_price as $k => $v) {
$result['price_list'][$k]['price'] = (int)$v['price'];
$result['price_list'][$k]['discount'] = $v['discount'];
$result['price_list'][$k]['day'] = $v['day'];
//月
$result['price_list'][$k]['month'] = $v['day']/30;
//有效期至
$result['price_list'][$k]['end_time'] = date('Y-m-d',strtotime("+".$v['day']." day"));
if($decorate['type'] == 12){
$result['title'] = $decorate['title'];
$result['price'] = (int)$decorate['price'];
$result['base_image'] = localpath_to_netpath($decorate['base_image']);
}else{
$decorate_price = DB::name('vs_decorate_price')->where(['did' => $did, 'is_delete' => 1])->order('day asc')->select();
if (!$decorate_price) {
return ['code' => 0, 'msg' => '参数错误'];
}
$result['title'] = $decorate['title'];
foreach ($decorate_price as $k => $v) {
$result['price_list'][$k]['price'] = (int)$v['price'];
$result['price_list'][$k]['original_price'] = $v['original_price'];
$result['price_list'][$k]['discount'] = $v['discount'];
$result['price_list'][$k]['day'] = $v['day'];
//月
$result['price_list'][$k]['month'] = $v['day']/30;
//有效期至
$result['price_list'][$k]['end_time'] = date('Y-m-d',strtotime("+".$v['day']." day"));
}
}
return ['code' => 1, 'msg' => '获取成功', 'data' => $result];
}
@@ -113,7 +148,12 @@ class Decorate extends Model
* @param $log_remark 日志备注
*
*/
public function pay_decorate($uid, $did, $day,$from_type=1,$give_uid=0,$log_remark=""){
public function pay_decorate($uid, $did, $day=0,$from_type=1,$give_uid=0,$log_remark="",$num=1){
if(empty($day) && $from_type == 12){
$day = 0;
}else{
$day = db::name('vs_decorate_price')->where(['did'=>$did])->order('day asc')->value('day');
}
if(empty($log_remark)){
$log_remark = $this->FromType[$from_type];
}
@@ -125,32 +165,38 @@ class Decorate extends Model
$map = [];
$map = [
'did' => $did,
'is_buy' => 1,
'delete_time' => 0,
];
$decorate_info = DB::name($this->table)->where($map)->find();
if(!$decorate_info){
return ['code' => 0, 'msg' => '该装扮不存在'.$did, 'data' => null];
}
//该天数是否存在
$map = [];
$map = [
'did' => $did,
'day' => $day,
'is_delete' => 1,
];
$decorate_price_info = db::name('vs_decorate_price')->where($map)->find();
if(!$decorate_price_info){
return ['code' => 0, 'msg' => '该装扮天数不存在', 'data' => null];
}
if($decorate_info['type'] == 6 && $decorate_info['is_user_buy'] == 1){
return ['code' => 0, 'msg' => '该个人靓号已被购买', 'data' => null];
}
if($decorate_info['type'] == 7 && $decorate_info['is_user_buy'] == 1){
return ['code' => 0, 'msg' => '该房间靓号已被购买', 'data' => null];
}
if($decorate_info['type'] == 8 && $decorate_info['is_user_buy'] == 1){
return ['code' => 0, 'msg' => '该工会靓号已被购买', 'data' => null];
if($decorate_info['type'] != 12){
//该天数是否存在
$map = [];
$map = [
'did' => $did,
'day' => $day,
'is_delete' => 1,
];
$decorate_price_info = db::name('vs_decorate_price')->where($map)->find();
if(!$decorate_price_info){
return ['code' => 0, 'msg' => '该装扮天数不存在', 'data' => null];
}
if($decorate_info['type'] == 6 && $decorate_info['is_user_buy'] == 1){
return ['code' => 0, 'msg' => '该个人靓号已被购买', 'data' => null];
}
if($decorate_info['type'] == 7 && $decorate_info['is_user_buy'] == 1){
return ['code' => 0, 'msg' => '该房间靓号已被购买', 'data' => null];
}
if($decorate_info['type'] == 8 && $decorate_info['is_user_buy'] == 1){
return ['code' => 0, 'msg' => '该公会靓号已被购买', 'data' => null];
}
}else{
$decorate_price_info = [
'price' => $decorate_info['price'] * $num,
'day' => 0
];
}
$start_time = $now_time = time();
Db::startTrans();
@@ -194,24 +240,37 @@ class Decorate extends Model
if($decorate_price_info['day'] == 0){//如果礼物购买配置的天数为0则永久有效
$data['is_using'] = 1;
$data['end_time'] = 0;
$data['is_perpetual'] = 1;
}else{
$change_time = $day * 24 * 3600;
$data['is_using'] = 2;
$data['end_time'] = $now_time + $change_time;
}
$data['createtime'] = $now_time;
$data['special_num'] = $decorate_info['special_num'];
$data['special_num'] = $decorate_info['special_num'] ?? '';
$data['num'] = 1;
$result = db::name('vs_user_decorate')->insert($data);
}else{
if($decorate_price_info['day'] > 0){//是不是永久礼物
if($decorate_price_info['price']<=0 && $user_decorate_data['end_time'] > $now_time + $change_time){
return ['code' => 0, 'msg' => '您已购买过此装扮,请勿重复购买', 'data' => null];
if($decorate_info['type'] == 12){
$result = db::name('vs_user_decorate')->where('udid', $user_decorate_data['udid'])->update([
'is_using' => 2,
'num' => $user_decorate_data['num'] + $num,
'end_time' => 0
]);
}else{
if($decorate_price_info['day'] > 0){//是不是永久礼物
if($decorate_price_info['price']<=0 && $user_decorate_data['end_time'] > $now_time + $change_time){
return ['code' => 0, 'msg' => '您已购买过此装扮,请勿重复购买', 'data' => null];
}
if($user_decorate_data['end_time'] < $now_time){
$user_decorate_data['end_time'] = time();
}
$change_time = $day * 24 * 3600;
$update['is_using'] = 2;
$update['end_time'] = $user_decorate_data['end_time'] + $change_time;
$result = db::name('vs_user_decorate')->where('udid', $user_decorate_data['udid'])->update($update);
$start_time = $update['end_time'];
}
$change_time = $day * 24 * 3600;
$update['is_using'] = 2;
$update['end_time'] = $user_decorate_data['end_time'] + $change_time;
$result = db::name('vs_user_decorate')->where('udid', $user_decorate_data['udid'])->update($update);
$start_time = $update['end_time'];
}
}
if(!$result){
@@ -250,30 +309,39 @@ class Decorate extends Model
}catch (\Exception $e) {
// 回滚事务
Db::rollback();
return ['code' => 0, 'msg' => "请重试", 'data' => null];
return ['code' => 0, 'msg' => "请重试".$e->getMessage(), 'data' => null];
}
}
//用户装扮列表
public function user_decorate($uid, $type,$page=1, $limit=10){
$reslut = db::name('vs_user_decorate')
->alias('ud')->join('vs_decorate d', 'ud.did = d.did')
->field('ud.udid,ud.user_id,ud.is_using,ud.end_time,ud.is_perpetual,ud.special_num,d.title,d.base_image,d.play_image,d.type')
->where('ud.user_id', $uid)
->where('ud.type', $type)
->where(['ud.end_time'=>[">=",time()]])
->page($page, $limit)
->select();
foreach($reslut as $k => &$v){
$remaining_day = ceil(($v['end_time'] - time())/86400);
if($remaining_day <= 0){
$remaining_day = 0;
if($type == 12){
$reslut = db::name('vs_user_decorate')
->alias('ud')->join('vs_decorate d', 'ud.did = d.did')
->field('ud.udid,ud.user_id,ud.is_using,ud.end_time,ud.is_perpetual,ud.special_num,d.title,d.base_image,d.play_image,d.type,ud.num,d.ext_value')
->where('ud.user_id', $uid)
->where('ud.type', $type)
->where(['ud.num'=>[">",0]])
->page($page, $limit)
->select();
}else{
$reslut = db::name('vs_user_decorate')
->alias('ud')->join('vs_decorate d', 'ud.did = d.did')
->field('ud.udid,ud.user_id,ud.is_using,ud.end_time,ud.is_perpetual,ud.special_num,d.title,d.base_image,d.play_image,d.type')
->where('ud.user_id', $uid)
->where('ud.type', $type)
->where(['ud.end_time'=>[">=",time()]])
->page($page, $limit)
->select();
foreach($reslut as $k => &$v){
$remaining_day = ceil(($v['end_time'] - time())/86400);
if($remaining_day <= 0){
$remaining_day = 0;
}
//剩余天数 取整
$v['remaining_day'] = $v['is_perpetual']==1 ? '永久' :$remaining_day;
$v['end_time'] = date('Y-m-d H:i:s', $v['end_time']);
}
//剩余天数 取整
$v['remaining_day'] = $v['is_perpetual']==1 ? '永久' :$remaining_day;
$v['end_time'] = date('Y-m-d H:i:s', $v['end_time']);
}
return ['code' => 1, 'msg' => "获取成功", 'data' => $reslut];
}
@@ -290,10 +358,15 @@ class Decorate extends Model
if (empty($info)) {
return ['code' => 0, 'msg' => '装扮不存在', 'data' => null];
}
if ($info['end_time'] < time()) {
return ['code' => 0, 'msg' => '装扮已过期', 'data' => null];
if($info['type'] == 12){
if ($info['num']-1 < 0) {
return ['code' => 0, 'msg' => '无可用装扮', 'data' => null];
}
}else{
if ($info['end_time'] < time()) {
return ['code' => 0, 'msg' => '装扮已过期', 'data' => null];
}
}
Db::startTrans();
try {
//清理该类型装扮使用状态
@@ -318,6 +391,9 @@ class Decorate extends Model
$data = [];
$data['is_using'] = 1;
$data['updatetime'] = time();
if($info['type'] == 12){
$data['num'] = $info['num'] - 1;
}
$reslut = Db::name('vs_user_decorate')->where($map)->update($data);
if (!$reslut) {
Db::rollback();
@@ -325,20 +401,51 @@ class Decorate extends Model
}
// 提交事务
Db::commit();
//推送信息去所在房间
//查询当前所在房间
$room_id = db::name('vs_room_visitor')->where(['user_id' => $uid])->order('id' , 'desc')->value('room_id');
if($room_id){
//当前用户信息
//推送信息
$text['jia_jia'] = model('Decorate')->user_decorate_detail($uid,2);
$text['FromUserInfo'] = db::name('user')->where('id',$uid)->field('id as user_id,nickname,avatar,sex')->find();
$text['FromUserInfo']['dress'] = model('Decorate')->user_decorate_detail($uid,1);
$text['FromUserInfo']['mic_dress'] = model('Decorate')->user_decorate_detail($uid,4);
$text['FromUserInfo']['chat_dress'] = model('Decorate')->user_decorate_detail($uid,5);
$text['text'] = '用户 ' . $text['FromUserInfo']['nickname'] .' 修改了信息';
model('Chat')->sendMsg(1035,$room_id,$text,$uid);
if($info['type'] == 12){
//使用降身卡,降低用户身价
$reduce_ratio = db::name('vs_decorate')->where(['did' => $info['did']])->value('ext_value') ?? 0;
$market_value = db::name('user')->where(['id' => $uid])->value('market_value');
if($reduce_ratio){
$reduce_market_value = $market_value * ($reduce_ratio / 100);
}else{
$reduce_market_value = 0;
}
if($reduce_market_value > 0){
$up_market_value = $market_value - $reduce_market_value;
if($up_market_value < 1){
$up_market_value = 1;
}
db::name('user')->where(['id' => $uid])->update(['market_value' => $up_market_value]);
//记录一条日志
db::name('vs_user_market_value_log')->insert([
'user_id' => $uid,
'before' => $market_value,
'change_value'=> $reduce_market_value,
'afterwards'=> $up_market_value,
'type' => 2,
'createtime'=> time()
]);
}
}else{
//推送信息去所在房间
//查询当前所在房间
$room_id = db::name('vs_room_visitor')->where(['user_id' => $uid])->order('id' , 'desc')->value('room_id');
if($room_id){
//当前用户信息
//推送信息
$text['jia_jia'] = model('Decorate')->user_decorate_detail($uid,2);
$text['FromUserInfo'] = db::name('user')->where('id',$uid)->field('id as user_id,nickname,avatar,sex')->find();
$text['FromUserInfo']['dress'] = model('Decorate')->user_decorate_detail($uid,1);
$text['FromUserInfo']['mic_cycle'] = model('Decorate')->user_decorate_detail($uid,3);
$text['FromUserInfo']['chat_dress'] = model('Decorate')->user_decorate_detail($uid,5);
$text['text'] = '用户 ' . $text['FromUserInfo']['nickname'] .' 修改了信息';
model('Chat')->sendMsg(1035,$room_id,$text,$uid);
}
}
//更新装备缓存
$cache_key = 'user_base_info_'.$uid;
Cache::rm($cache_key);
return ['code' => 1, 'msg' => "设置成功", 'data' => null];
} catch (\Exception $e) {
// 回滚事务
@@ -361,60 +468,81 @@ class Decorate extends Model
if (!$reslut) {
return ['code' => 0, 'msg' => "取消装扮失败", 'data' => null];
}
//更新装备缓存
$cache_key = 'user_base_info_'.$uid;
Cache::rm($cache_key);
return ['code' => 1, 'msg' => "取消成功", 'data' => null];
}
//用户装扮详情
/*
* @param $id 对象id
* @param $type 装扮类型 1头像框 2坐骑 3麦圈 6个人靓号 7房间靓号 8会靓号
* @param $type 装扮类型 1头像框 2坐骑 3麦圈 6个人靓号 7房间靓号 8会靓号
*/
public function user_decorate_detail($id, $type){
//根据$type 组装查询条件
$reslut = "";
$map = [
'type' => $type,
'is_using' => 1
];
if($type == 7){//7房间靓号 8工会靓号
$room = db::name('vs_room')->where('id', $id)->field('user_id,room_number')->find();
if(empty($room)){
return $reslut;
}
$map = [
'user_id' => $room['user_id']??0,
'type' => $type,
'is_using' => 1
];
$reslut = db::name('vs_user_decorate')->where($map)->where('end_time',['>=',time()],'or')->value('special_num') ?? $room['room_number'];
$map['user_id'] = $room['user_id'];
$user_decorate = db::name('vs_user_decorate')->where($map)->order('createtime', 'desc')->find();
if(empty($user_decorate)){
return $room['room_number'];
}
if($user_decorate['is_perpetual']==2 && $user_decorate['end_time'] < time()){
return $room['room_number'];
}
$reslut = $user_decorate['special_num'] ?? $room['room_number'];
}elseif($type == 8){
$guild = db::name('vs_guild')->where('id', $id)->field('user_id,guild_special_id')->find();
$map = [
'user_id' => $guild['user_id']??0,
'type' => $type,
'is_using' => 1
];
$reslut = db::name('vs_user_decorate')->where($map)->where('end_time',['>=',time()],'or')->value('special_num') ?? $guild['guild_special_id'];
if(empty($guild)){
return $reslut;
}
$map['user_id'] = $guild['user_id'];
$user_decorate = db::name('vs_user_decorate')->where($map)->order('createtime', 'desc')->find();
if(empty($user_decorate)){
return $guild['guild_special_id'];
}
if($user_decorate['is_perpetual']==2 && $user_decorate['end_time'] < time()){
return $guild['guild_special_id'];
}
$reslut = $user_decorate['special_num'] ?? $guild['guild_special_id'];
}elseif($type == 6){
$map = [
'user_id' => $id??0,
'type' => $type,
'is_using' => 1
];
$user_code = db::name('user')->where('id', $id)->value('user_code');
$reslut = db::name('vs_user_decorate')->where($map)->where('end_time',['>=',time()],'or')->value('special_num') ?? $user_code;
if(empty($user_code)){
return $reslut;
}
$map['user_id'] = $id;
$user_decorate = db::name('vs_user_decorate')->where($map)->order('createtime', 'desc')->find();
if(empty($user_decorate)){
return $user_code;
}
if($user_decorate['is_perpetual']==2 && $user_decorate['end_time'] < time()){
return $user_code;
}
$reslut = $user_decorate['special_num'] ?? $user_code;
}else{
$map = [
'user_id' => $id??0,
'type' => $type,
'is_using' => 1
];
$did = db::name('vs_user_decorate')->where($map)->where('end_time',['>=',time()],'or')->value('did');
if(empty($did)){
$reslut = '';//返回数据
$map['user_id'] = $id;
$user_decorate = db::name('vs_user_decorate')->where($map)->order('createtime', 'desc')->find();
if(empty($user_decorate)){
return $reslut;
}
if($user_decorate['is_perpetual']==2 && $user_decorate['end_time'] < time()){
return $reslut;
}
if(in_array($type, [9,12])){
$reslut = db::name('vs_decorate')->where('did', $user_decorate['did'])->value('base_image');
}else{
$reslut = db::name('vs_decorate')->where('did', $did)->value('play_image');
$reslut = db::name('vs_decorate')->where('did', $user_decorate['did'])->value('play_image');
}
}
return $reslut;
}
}

View File

@@ -0,0 +1,179 @@
<?php
namespace app\api\model;
use think\Db;
use think\Log;
use think\Model;
class Family extends Model
{
/*
* 创建家族
* @param $name string 家族名称
* @param $user_id int 用户id
*/
public function createFamily($user_id)
{
$name = db::name('user')->where('id', $user_id)->value('nickname').'的家族';
$data = [
'name' => $name,
'user_id' => $user_id,
'type' => 1,
'createtime' => time(),
];
//开启事务
db::startTrans();
$id = db::name('vs_family')->insertGetId($data);
if (!$id) {
db::rollback();
return ['code' => 0, 'msg' => '创建失败', 'data' => null];
}
$reslut = model('api/Tencent')->create_group($user_id,'f'.$id,"Public","",$name);
if ($reslut['code'] == 0) {
db::rollback();
return ['code' => 0, 'msg' => '创建失败,请稍后再试!', 'data' => null];
}
//发送系统消息
model('api/Tencent')->send_group_system_notification('f'.$id,"家族创建成功");
//查找他是否有签约 用户
$sign_user = db::name('vs_user_sign')->where(['parent_user_id' => $user_id, 'end_time' => ['>',time()]])->select();
if($sign_user){
//拉入群聊
foreach ($sign_user as $k => $v){
model('api/Tencent')->add_group_member('f'.$id, $v['sign_user_id']);
$data[$k] = [
'name' => $name,
'pid' => $user_id,
'user_id' => $v['sign_user_id'],
'createtime' => time(),
];
db::name('vs_family')->insert($data[$k]);
}
//发送系统消息
model('api/Tencent')->send_group_system_notification('f'.$id,"欢迎加入家族");
}
db::commit();
return ['code' => 1, 'msg' => '创建成功', 'data' => ['id' => $id]];
}
/*
* 我的家族
* @param $user_id int 用户id创建者id
*/
public function myFamily($user_id)
{
$myFamily['group_owner_info'] = db::name('user')->where('id',$user_id)->field('nickname,avatar')->find();
$myFamily['group_owner_info']['dress'] = model('api/Decorate')->user_decorate_detail($user_id,1);
$myFamily['group_owner_info']['user_code'] = model('api/Decorate')->user_decorate_detail($user_id,6);
$myFamily['group_owner_info']['icon'][0] = model('api/UserData')->user_wealth_icon($user_id);//财富图标
$myFamily['group_owner_info']['icon'][1] = model('api/UserData')->user_charm_icon($user_id);//魅力图标
//判断是否是歌手 如果是 返回等级图标
$isSinger = db::name('vs_singer')->where(['user_id' => $user_id,'status' => 1])->find();
if($isSinger){
$myFamily['group_owner_info']['icon'][2] = db::name('vs_singer_level')->where(['level' => $isSinger['level'],'deletetime' => 0])
->value('image');//等级图标
}
$Nobility = model('api/Nobility')->getUserNobilityInfo($user_id);
$myFamily['group_owner_info']['mic_cycle'] = model('api/Decorate')->user_decorate_detail($user_id,3);
$myFamily['group_owner_info']['nobility_image'] = $Nobility['play_image'];
$myFamily['group_owner_info']['nickname_color'] = $Nobility['nick_name_color'];
$myFamily['group_members_num'] = db::name('vs_user_sign')->where(['parent_user_id' => $user_id])->count();
$myFamily['group_earnings'] = round(db::name('vs_user_sign_earnings')->where('user_id',$user_id)->sum('earnings'),4);
$myFamilys = db::name('vs_family')->where(['user_id' => $user_id,'type' => 1])->find();
if($myFamilys){
$lists= db::name('vs_family')->alias('a')
->join('user b','a.user_id = b.id')
->join('vs_user_sign c','a.user_id = c.sign_user_id')
->field('b.is_online,b.market_value,b.nickname,b.avatar,b.user_code,c.type,c.end_time,c.sign_user_type,a.user_id,a.createtime')
->where(['a.pid' => $myFamilys['user_id'],'a.deletetime' => 0,'a.type' => 0,'c.end_time' => ['>',time()]])
->order('c.end_time asc')
->select();
if($lists){
foreach ($lists as $k => $v){
$lists[$k]['dress'] = model('api/Decorate')->user_decorate_detail($v['user_id'],1);
$lists[$k]['user_code'] = model('api/Decorate')->user_decorate_detail($v['user_id'],6);
$lists[$k]['icon'][0] = model('api/UserData')->user_wealth_icon($v['user_id']);//财富图标
$lists[$k]['icon'][1] = model('api/UserData')->user_charm_icon($v['user_id']);//魅力图标
//判断是否是歌手 如果是 返回等级图标
$isSinger = db::name('vs_singer')->where(['user_id' => $v['user_id'],'status' => 1])->find();
if($isSinger){
$lists[$k]['icon'][2] = db::name('vs_singer_level')->where(['level' => $isSinger['level'],'deletetime' => 0])
->value('image');//等级图标
}
$Nobility = model('api/Nobility')->getUserNobilityInfo($v['user_id']);
$lists[$k]['mic_cycle'] = model('api/Decorate')->user_decorate_detail($v['user_id'],3);
$lists[$k]['nobility_image'] = $Nobility['play_image'];
$lists[$k]['nickname_color'] = $Nobility['nick_name_color'];
if($v['sign_user_type'] == 0){
$lists[$k]['free_renewal'] = max((3 - $v['type']), 0);
}else{
$lists[$k]['free_renewal'] = 0;
}
// 优化今日收益计算逻辑
$todayStart = strtotime(date('Y-m-d'));
if($v['createtime'] < $todayStart){
$lists[$k]['today_earnings'] = round(db::name('user_earnings_log')
->where(['user_id' => $v['user_id'],'change_type' =>11,'createtime' => ['between',[$todayStart,time()]]])
->sum('earnings'), 4);//今日收益
}else{
$lists[$k]['today_earnings'] = round(db::name('user_earnings_log')
->where(['user_id' => $v['user_id'],'change_type' =>11,'createtime' => ['between',[$v['createtime'],time()]]])
->sum('earnings'), 4);//今日收益
}
// 昨日收益计算逻辑优化
$yesterdayStart = strtotime(date('Y-m-d', strtotime('-1 day')));
$yesterdayEnd = strtotime(date('Y-m-d'));
if($v['createtime'] <= $todayStart) {
$lists[$k]['yesterday_earnings'] = round(db::name('user_earnings_log')
->where(['user_id' => $v['user_id'], 'change_type' => 11, 'createtime' => ['between', [$yesterdayStart, $yesterdayEnd]]])
->sum('earnings'), 4);
}else{
$lists[$k]['yesterday_earnings'] = 0;
}
$lists[$k]['is_show_sign'] = $v['end_time'] - time() < 48*3600 ? 1 : 0;
$lists[$k]['sign_times'] = get_system_config_value('sign_times');//非首签签约时长
$lists[$k]['free_re_sign_day'] = get_system_config_value('free_re_sign_day');//免费续签时间
$lists[$k]['sign_user_ratio'] = get_system_config_value('sign_user_ratio');//签约者身价的百分比
//end_time 换算为天数不足1天按小时显示
$remaining_time = $v['end_time'] - time();
if ($remaining_time > 0) {
$days = ceil($remaining_time / (24 * 3600));
if ($days > 0) {
$lists[$k]['end_day'] = $days . '天';
} else {
$hours = ceil($remaining_time / 3600);
$lists[$k]['end_day'] = $hours . '小时';
}
} else {
$lists[$k]['end_day'] = '已过期';
}
}
}
$myFamily['group_members_lists'] = $lists ;
$myFamily['group_id'] = 'f'.$myFamilys['id'];
$myFamily['name'] = $myFamilys['name'];
$myFamily['user_id'] = $myFamilys['user_id'];
}else{
$myFamily['group_id'] = null;
$myFamily['group_members_lists'] = null ;
$myFamily['name'] = null;
$myFamily['user_id'] = null;
}
return ['code' => 1, 'msg' => '成功', 'data' => $myFamily];
}
}

View File

@@ -0,0 +1,830 @@
<?php
namespace app\api\model;
use think\Db;
use think\Log;
use think\Model;
class Friend extends Model
{
public function start_friend($user_id, $room_id){
// 判断用户是否在主持麦
$host = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => 9,'user_id' => $user_id])->find();
if(!$host){
return ['code' => 0, 'msg' => '没有权限操作', 'data' => null];
}
$room_info = db::name('vs_room')->field('id,step,room_status')->where(['id' => $room_id,'room_status' =>1])->find();
if (!$room_info) {
return ['code' => 0, 'msg' => '房间不存在!', 'data' => null];
}
if($room_info['step'] == 2 || $room_info['step'] == 3){
return ['code' => 0, 'msg' => '交友正在进行中!', 'data' => null];
}
//在麦位上的用户
$pit_user = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => ['<',7],'user_id' => ['<>',0]])->count();
if($pit_user >= 2) {
$data['room_id'] = $room_id;
$data['end_time'] = time() + get_system_config_value('friend_time') * 60;
$data['create_time'] = time();
$data['status'] = 1;
$id = db::name('vs_user_friending')->insertGetId($data);
if (!$id) {
return ['code' => 0, 'msg' => '操作失败!', 'data' => null];
}
//修改房间状态
db::name('vs_room')->where(['id' => $room_id])->update(['step' => 2]);
//清除房间用户的魅力
model('Room')->clear_user_charm($user_id, $room_id);
//推送给前端消息
$text['text'] = '交友开始';
$text['step'] = 2;
$text['friend_id'] = $id;
$text['end_time'] = $data['end_time'];
model('api/Chat')->sendMsg(1049,$room_id,$text);
return ['code' => 1, 'msg' => '操作成功!', 'data' => ['friend_id' => $id]];
}else{
return ['code' => 0, 'msg' => '交友麦位至少两位用户才能开始', 'data' => null];
}
}
//延时
public function delay($user_id,$room_id,$id,$delay_times){
// 判断用户是否在主持麦
$host = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => 9,'user_id' => $user_id])->find();
if(!$host){
return ['code' => 0, 'msg' => '没有权限操作', 'data' => null];
}
if (!$id || !$room_id) {
return ['code' => 0, 'msg' => '参数有误!', 'data' => null];
}
if($delay_times <= 0){
$delay_times = get_system_config_value('friend_delay_times');
}
//修改结束 时间
$res = db::name('vs_user_friending')->where('id', $id)->update([
'end_time' => Db::raw('end_time + ' . ($delay_times * 60))
]);
if(!$res){
return ['code' => 0, 'msg' => '操作失败!', 'data' => null];
}
//推送延时
$text['text'] = '延时';
$text['friend_id'] = $id;
$text['end_time'] = db::name('vs_user_friending')->where('id', $id)->value('end_time');
model('api/Chat')->sendMsg(1050,$room_id,$text);
return ['code' => 1, 'msg' => '操作成功!', 'data' => null];
}
//交友结束(结束牵手良缘)
public function end_friend($user_id,$room_id,$id,$is_system = 0){
if (!$id || !$room_id) {
return ['code' => 0, 'msg' => '参数有误!', 'data' => null];
}
if($is_system == 0){
// 判断用户是否在主持麦
$host = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => 9,'user_id' => $user_id])->find();
if(!$host){
return ['code' => 0, 'msg' => '没有权限操作', 'data' => null];
}
}
// 获取心动值最高的
$originalPairs = db::name('vs_user_friending_heart')
->where(['room_id'=>$room_id,'friend_id'=>$id ,'status' =>1])
->order('heart_value DESC')->find();
$friend_heart_value = get_system_config_value('friend_heart_value');
if($originalPairs && $originalPairs['heart_value'] >= $friend_heart_value){
$step = 3;//结束进入牵手良缘卡关系
//心动值达到伐值 返回用户信息与关系列表
$return['user1_id'] =$originalPairs['user1_id'];
$return['user1_avatar'] = db::name('user')->where(['id'=>$originalPairs['user1_id']])->value('avatar');
$return['user1_nickname'] = db::name('user')->where(['id'=>$originalPairs['user1_id']])->value('nickname');
$return['user2_id'] =$originalPairs['user2_id'];
$return['user2_avatar'] = db::name('user')->where(['id'=>$originalPairs['user2_id']])->value('avatar');
$return['user2_nickname'] = db::name('user')->where(['id'=>$originalPairs['user2_id']])->value('nickname');
$return['heart_value'] = $originalPairs['heart_value'];
$return['heart_id'] = $originalPairs['id'];
// $room_updatatime = db::name('vs_room')->where(['id' => $room_id,'step' => $step])->value('updatetime');
$room_updatatime = db::name('vs_user_friending')->where(['id' => $id])->value('update_time');
if($room_updatatime){ //180秒内没操作 则创建关系无(元旦 泽喜 说的)
if(time() - $room_updatatime > 180){
$this->createRelation(0,$room_id,$id,$return['user1_id'],$return['user2_id'],0);
return ['code' => 1, 'msg' => '操作成功!', 'data' => $return];
}
}else{
// 修改当前交友阶段
db::name('vs_room')->where(['id' => $room_id])->update(['step' => $step,'updatetime' => time()]);
db::name('vs_user_friending')->where(['id' => $id])->update(['update_time' => time()]);
}
}else{
$step = 1;//结束下一轮
// 修改当前交友阶段 分开写 放到前面是为了下麦
db::name('vs_room')->where(['id' => $room_id])->update(['step' => 1]);
//所有人下麦
$on_pit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => ['<',7],'user_id' => ['<>',0]])->select();
if($on_pit){
foreach ($on_pit as $pit){
model('api/RoomPit')->DownPit($pit['user_id'], $room_id,$pit['pit_number']);
}
}
$return = null;
}
//结束交友游戏
if($step == 1){
db::name('vs_user_friending')->where(['id' => $id])->update(['status' => 2,'update_time' => time()]);
}
//推送给前端消息
$text['text'] = $step == 1 ? '交友结束' : '牵手良缘';
$text['step'] = $step;//1 等待邂逅 2 心动连线 3 牵手良缘
$text['friend_user'] = $return;
$text['friend_id'] = $id;
model('api/Chat')->sendMsg(1049,$room_id,$text);
model('api/Room')->clear_user_charm(db::name('vs_room')->where(['id' => $room_id])->value('user_id'), $room_id);
return ['code' => 1, 'msg' => '操作成功!', 'data' => $return];
}
//心动值超过配置值 创建关系
public function createRelation($user_id,$room_id,$friend_id,$user1_id,$user2_id,$friending_config_id){
if (!$user1_id || !$user2_id || !$friend_id || !$room_id) {
return ['code' => 0, 'msg' => '参数有误!!', 'data' => null];
}
$user1 = min($user1_id, $user2_id);
$user2 = max($user1_id, $user2_id);
$friending_heart = db::name('vs_user_friending_heart')
->where(['room_id'=>$room_id,'friend_id'=>$friend_id ,'user1_id' =>$user1,'user2_id' => $user2])->order('id desc')->find();
$originalPairs = db::name('vs_user_friending_heart')
->where(['id'=>$friending_heart['id']])
->update(['status' => 3,'friend_config_id' =>$friending_config_id]);
$msg = '';
if ($originalPairs) {
// 修改当前交友阶段
$res = db::name('vs_room')->where(['id' => $room_id])->update(['step' => 1]);
if($res){
$res2 = db::name('vs_user_friending')->where(['id' => $friend_id])->update(['status' => 2,'update_time' => time()]);
}
//所有人下麦
$on_pit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => ['<',7],'user_id' => ['<>',0]])->select();
if($on_pit){
foreach ($on_pit as $pit){
model('RoomPit')->DownPit($pit['user_id'], $room_id,$pit['pit_number']);
}
}
$relation = db::name('vs_relation')->where('id',$friending_config_id)->value('name');
if($friending_heart['heart_value'] >= get_system_config_value('friend_heart_create_room') && $friending_config_id > 0){
//创建小房间
$room_ids = model('api/Room')->user_create_room($user1,'的电影房',get_system_config_value('web_site').'/data/avatar/head_pic.png','交友房产生的一次性房间',7);
if($room_ids['code'] != 1){
$msg = 'cp电影房创建失败';
}else{
//记录小房间
$datda = [
'room_id' => $room_ids['data'],
'relation_id' => $friending_config_id,
'user_id' => $user1,
'user_id1' => $user2,
'time_day' => time() + get_system_config_value('friend_room_timea') * 60,
'createtime' => time(),
'status' => 1,
'type' => 1
];
db::name('vs_room_cp_movie')->insert($datda);
if($room_ids['data']){
$text['text'] = '交友结束并创建房间';
$text['room_id'] = $room_ids['data'];//前端用来让用户跳转的房间id
}
}
}else{
$text['text'] = '交友结束未创建房间';
}
$text['relation_name'] = $relation;
$text['user1_id'] = $user1;
$text['user2_id'] = $user2;
$text['user1_avatar'] = db::name('user')->where(['id'=>$user1])->value('avatar');
$text['user1_nickname'] = db::name('user')->where(['id'=>$user1])->value('nickname');
$text['user2_avatar'] = db::name('user')->where(['id'=>$user2])->value('avatar');
$text['user2_nickname'] = db::name('user')->where(['id'=>$user2])->value('nickname');
model('api/Chat')->sendMsg(1051,$room_id,$text);
$shijian = floor($friending_heart['heart_value']/get_system_config_value('friend_heart_value')) * get_system_config_value('friend_heart_times');
$friendendtime = time() + $shijian * 3600;
//更新关系结束时间
db::name('vs_user_friending_heart')->where(['id'=>$friending_heart['id']])->update(['contact_end_time' => $friendendtime]);
//关系增加时间
$room_auction = model('RoomAuction')->room_auction_create_or_add($user1_id,$user2_id,$friending_config_id,$shijian*3600,0);
//推送给前端消息
$text1['text'] = '交友结束';
$text1['step'] = 1;//1 等待邂逅 2 心动连线 3 牵手良缘
model('api/Chat')->sendMsg(1049,$room_id,$text1);
//查询是否第一次创建关系
$friend_count1 = db::name('vs_user_friending_heart')
->where('status', 3)
->where(function($query) use ($user1) {
$query->where('user1_id', $user1)
->whereOr('user2_id', $user1);
})
->count();
if($friend_count1 == 1){
//任务10-第一次星球房卡关系(互娱房)
model('Tasks')->tasks_complete($user1,10);
}
$friend_count2 = db::name('vs_user_friending_heart')
->where('status', 3)
->where(function($query) use ($user2) {
$query->where('user1_id', $user2)
->whereOr('user2_id', $user2);
})
->count();
if($friend_count2 == 1){
//任务10-第一次星球房卡关系(互娱房)
model('Tasks')->tasks_complete($user2,10);
}
return ['code' => 1, 'msg' => '创建关系成功!'.$msg, 'data' => null];
} else {
$re2s = db::name('vs_room')->where(['id' => $room_id])->update(['step' => 1]);
$ress = 0;
if($re2s){
$ress = db::name('vs_user_friending')->where(['id' => $friend_id])->update(['status' => 2,'update_time' => time()]);
}
//推送给前端消息
$text['status1'] = $ress.'<=>'.$re2s.'<=>'.$originalPairs;
$text['text'] = '交友结束';
$text['step'] = 1;//1 等待邂逅 2 心动连线 3 牵手良缘
model('api/Chat')->sendMsg(1049,$room_id,$text);
return ['code' => 0, 'msg' => '创建关系失败!', 'data' => null];
}
}
//退出私密房间
public function outRoom($type,$room_id){
//推送给前端消息
$text['text'] = '退出私密小屋';
model('api/Chat')->sendMsg(1055,$room_id,$text);
//注销房间
db::name('vs_room')->where(['id'=>$room_id])->update(['room_status'=>3]);
if($type){//交友、拍卖
db::name('vs_room_cp_movie')->where(['room_id'=>$room_id])->update(['status'=>4]);
}else{//酒吧房私密
db::name('vs_room_bar_movie')->where(['room_id'=>$room_id])->update(['status'=>2]);
}
//删除腾讯群组
model('api/Tencent')->delete_group('room'.$room_id);
return ['code' => 1, 'msg' => '退出成功!', 'data' => null];
}
//房间内送礼
/*
* @param $uid 用户id
* @param $to_uid 接收用户id组
* @param $gift_id 礼物id
* @param $gift_num 礼物数量
* @param $from_type 来源 1聊天送礼物 2房间语聊送礼 3直播送礼 4动态打赏 5系统任务 6-cp房间送礼
* @param $type 1金币购买 2送背包礼物
* @param $room_id 房间id
* @param $pit_number 坑位
*/
public function room_give_gift($uid, $to_uid,$room_id,$res,$heart_id = 0)
{
//送礼成功后续操作
$friend = db::name('vs_user_friending')->where(['room_id' => $room_id,'status' => 1])->order('id desc')->find();
//查看当前时间是否在交友表的创建时间和结束时间段内 用来区分是否要拉取心动值高的用户上麦
if($friend && time() >= $friend['create_time'] && time() <= $friend['end_time']){
$heart_exp = get_system_config_value('coin_charm_exp');//金币与魅力值转换比
$sumPrice = $res['data']['gift_total'] * $heart_exp;
$user_idd = $to_uid;
if($heart_id){//有这个值就是助力 不参加抢麦操作
db::name('vs_user_friending_heart')->where(['id' => $heart_id])->setInc('heart_value', $sumPrice);
// $this->pullHeartChange($room_id,$friend['id']);//聊天室心动值变化通知 注释掉是因为下面那个函数会处理
//生成新排名 判断抱上麦 还是换麦
$this->pullUserPit($room_id,$friend['id']);
}else{
//判断送礼人或收礼人里面有主持和嘉宾
$host = $this->is_host($uid,$to_uid,$room_id);
$user_idd = explode(",", $user_idd); // 将字符串转换为数组
//判断是否是主持
if($host && $host['is_preside'] == 1){
if(!in_array($uid,$host['is_preside_user'])){//主持不是当前送礼人,那就是在收礼人中
//从数组中剔除主持人 && $is_preside_user!= UID
$user_idd = array_diff($user_idd, $host['is_preside_user']); // 从数组中移除
if($user_idd){
//插入/更新心动表
$this->addUserHeart($uid,$user_idd,$friend['id'],$sumPrice,$room_id,$res['data']['gift_user_data']);
//送礼产生心动值并计算 判断拉取用户上麦还是换麦
//生成新排名 判断抱上麦 还是换麦
$this->pullUserPit($room_id,$friend['id']);
}
}
}else{
//插入/更新心动表
$this->addUserHeart($uid,$user_idd,$friend['id'],$sumPrice,$room_id,$res['data']['gift_user_data']);
//送礼产生心动值并计算 判断拉取用户上麦还是换麦
//生成新排名 判断抱上麦 还是换麦
$this->pullUserPit($room_id,$friend['id']);
}
}
}
return ['code' => 1, 'msg' => '送礼成功', 'data' => $res['data']];
}
//是否主持
public function is_host($uid,$to_uid,$room_id){
//获取当前主持人和嘉宾
$host[] = db::name('vs_room_pit')->where(['room_id' => $room_id,'pit_number' => 9])->value('user_id');
$host[] = db::name('vs_room_pit')->where(['room_id' => $room_id,'pit_number' => 10])->value('user_id');
$is_preside_user = [];
$is_preside = 0;
$user_ids = explode(",", $to_uid);
foreach ($user_ids as $value) {
//判断收礼人是否是主持
if (in_array($value, $host)) {
$is_preside = 1;//是主持
$is_preside_user[] = $value;
}
}
//送礼人是主持或嘉宾
if (in_array($uid, $host)) {
$is_preside = 1;//是嘉宾
$is_preside_user[] = $uid;
}
return ['is_preside' =>$is_preside,'is_preside_user' => $is_preside_user];
}
function pullHeartChange($room_id,$friend_id){
//聊天室心动值变化通知
$newRanking = $this->getRanking($room_id,$friend_id);
//心动值和心动表id
if(!isset($newRanking[0]['heart_value']) || $newRanking[0]['heart_value'] <= 0){
$heart1 = -1;
$heartId1 = -1;
}else{
$heart1 = $newRanking[0]['heart_value'];
$heartId1 = $newRanking[0]['id'];
}
if(!isset($newRanking[1]['heart_value']) || $newRanking[1]['heart_value'] <= 0){
$heart2 = -1;
$heartId2 = -1;
}else{
$heart2 = $newRanking[1]['heart_value'];
$heartId2 = $newRanking[1]['id'];
}
if(!isset($newRanking[2]['heart_value']) || $newRanking[2]['heart_value'] <= 0){
$heart3 = -1;
$heartId3 = -1;
}else{
$heart3 = $newRanking[2]['heart_value'];
$heartId3 = $newRanking[2]['id'];
}
$heart[0] = [
"heartNum" => $heart1,
"heartId" => $heartId1,
];
$heart[1] = [
"heartNum" => $heart2,
"heartId" => $heartId2,
];
$heart[2] = [
"heartNum" => $heart3,
"heartId" => $heartId3,
];
// $push = new Push(0, $this->room_id); //实例化推送类
// $push->heartChatRoom($heart);
//推送给前端消息
$text['text'] = '心动值变化通知';
$text['list'] = $heart;
model('api/Chat')->sendMsg(1054,$room_id,$text);
return $heart;
}
// 获取心跳值排行
public function getRanking($room_id,$friend_id) {
// 获取有心动值的用户对且不重复
$originalPairs = db::name('vs_user_friending_heart')
->where(['room_id'=>$room_id,'friend_id'=>$friend_id])
->order('heart_value DESC')->select();
// 初始化排名数组和已使用用户数组
$ranking = [];
$usedUsers = [];
// 优先选择高价值且无重复用户的对
$heart_ids = [];
foreach ($originalPairs as &$rel) {
// 检查当前用户对是否包含已使用的用户ID
if (!in_array($rel['user1_id'], $usedUsers) &&
!in_array($rel['user2_id'], $usedUsers)) {
// 将符合条件的用户对添加到排名列表中
$ranking[] = [
'heart_value' => $rel['heart_value'],
'id' => $rel['id'],
'user1_id' => $rel['user1_id'],
'user2_id' => $rel['user2_id'],
];
// 更新已使用用户列表
$usedUsers = array_merge($usedUsers, [$rel['user1_id'], $rel['user2_id']]);
$heart_ids[] = $rel['id'];
// 如果排名列表达到3对用户则停止循环
if (count($ranking) >= 3) break;
}
}
$ranking1 = [];
$ranking2 = [];
if(count($ranking)<3){
$make_up_num = 3 - count($ranking);
$ranking_make_up = db::name('vs_user_friending_heart')
->where(['room_id'=>$room_id,'friend_id'=>$friend_id ,'id'=> ['notin',$heart_ids]])
->limit($make_up_num)
->order('heart_value DESC')->select();
foreach ($ranking_make_up as $rel1) {
// 如果两个用户都已使用,跳过这条记录
if(in_array($rel1['user1_id'], $usedUsers) && in_array($rel1['user2_id'], $usedUsers)){
continue;
}
// 如果只有user1已使用将user2加入排名
if(in_array($rel1['user1_id'], $usedUsers)){
$ranking1[] = [
'heart_value' => 0,
'id' => $rel1['id'],
'user1_id' => -1,
'user2_id' => $rel1['user2_id'],
];
$usedUsers[] = $rel1['user2_id'];
$heart_ids[] = $rel1['id'];
}
// 如果只有user2已使用将user1加入排名
elseif(in_array($rel1['user2_id'], $usedUsers)){
$ranking1[] = [
'heart_value' => 0,
'id' => $rel1['id'],
'user1_id' => $rel1['user1_id'],
'user2_id' => -1,
];
$usedUsers[] = $rel1['user1_id'];
$heart_ids[] = $rel1['id'];
}
}
}
// 返回最终的排名列表
$ranking_rut = array_merge($ranking, $ranking1);
$nnum = count($ranking)*2 + count($ranking1);
if($nnum<6){
$make_up_num = 6 - $nnum;
$ranking_make_up = db::name('vs_user_friending_heart')
->where(array('room_id'=>$room_id,'friend_id'=>$friend_id ,'id'=>array('notin',$heart_ids)))
->limit($make_up_num)
->order('heart_value DESC')->select();
if($ranking_make_up){
foreach ($ranking_make_up as $rel1) {
if(in_array($rel1['user1_id'], $usedUsers) && in_array($rel1['user2_id'], $usedUsers)){
continue;
}
if(in_array($rel1['user1_id'], $usedUsers)){
$ranking2[] = [
'heart_value' => 0,
'id' => $rel1['id'],
'user1_id' => -1,
'user2_id' => $rel1['user2_id'],
];
$usedUsers[] = $rel1['user2_id'];
}
if(in_array($rel1['user2_id'], $usedUsers)){
$ranking2[] = [
'heart_value' => 0,
'id' => $rel1['id'],
'user1_id' => $rel1['user1_id'],
'user2_id' => -1,
];
$usedUsers[] = $rel1['user1_id'];
}
}
}
}
return array_merge($ranking_rut, $ranking2);
}
//抱上麦 还是换麦
public function pullUserPit($room_id,$friend_id){
$friendPlayPit = $this->friendPlayPit($room_id,$friend_id); // 获取实际应该对应的麦位
$this->changePitToPosPair($room_id,$friendPlayPit);//换麦,上下麦
$this->pullHeartChange($room_id,$friend_id);//聊天室心动值变化通知
}
//交友处理麦位排名
public function friendPlayPit($room_id,$friend_id){
//查询当前交友心动值表
$heart_data = $this->getRanking($room_id,$friend_id);
//数组根据里面的heart_value 由大到小进行排序
usort($heart_data, function($a, $b) {
return $b['heart_value'] - $a['heart_value'];
});
$pit = [];
$pit_number_array = [2=>5,1=>6,3=>4,5=>2,6=>1,4=>3]; //麦位对应关系
$pit_number_array_reverse = [0=>2,1=>1,2=>3,3=>4,4=>5,5=>6];
if($heart_data){
//排麦位
$pit_unique = [];
$key = 0;
foreach($heart_data as $value) {
if(count($pit) >= 6){
break;
}
// 处理两个用户都存在的情况
if($value['user1_id'] != -1 && $value['user2_id'] != -1){
if(!in_array($value['user1_id'],$pit_unique)){
// 检查目标麦位是否已被占用
if(!isset($pit[$pit_number_array_reverse[$key]])) {
$pit[$pit_number_array_reverse[$key]] = $value['user1_id'];
$pit[$pit_number_array[$pit_number_array_reverse[$key]]] = $value['user2_id'];
$pit_unique = array_merge($pit_unique, [$value['user1_id'], $value['user2_id']]);
}
}
}
// 处理只有user2存在的情况
elseif($value['user1_id'] == -1 && !in_array($value['user2_id'],$pit_unique)){
// 检查该键是否已被使用
if(!isset($pit[$pit_number_array_reverse[$key]])) {
$pit[$pit_number_array_reverse[$key]] = $value['user2_id'];
$pit_unique[] = $value['user2_id'];
}
}
// 处理只有user1存在的情况
elseif($value['user2_id'] == -1 && !in_array($value['user1_id'],$pit_unique)){
// 检查该键是否已被使用
if(!isset($pit[$pit_number_array_reverse[$key]])) {
$pit[$pit_number_array_reverse[$key]] = $value['user1_id'];
$pit_unique[] = $value['user1_id'];
}
}
$key++;
}
}
return $pit;
}
//换麦
public function changePitToPosPairs($room_id,$friendPlayPit){
$now_pit_u = array_flip($friendPlayPit);
//按照键值排序数组
ksort($now_pit_u);
//查询现在麦位上有用户的数据 并且重组结果,键为麦位,值为用户,值必须存在,没值则不展示
$pit_user = db::name('vs_room_pit')->where(['room_id' => $room_id,'pit_number'=>['<',7],'user_id' => ['>', 0]])
->order('pit_number ASC')
->column('pit_number,user_id');
//比较两个数组,无论是键的差异还是值的差异,都输出字符串”有差异“否则输出”没有差异“
$result = array_diff_assoc($pit_user, $now_pit_u);
$result2 = array_diff_assoc($now_pit_u, $pit_user);
if(!empty($result) || !empty($result2)){
// var_dump('有差异');
//获取实际麦位上的用
$newPitUser = array_keys($friendPlayPit);
//获取当前麦位上的用户
$oldPitUser = db::name('vs_room_pit')->where(['room_id' => $room_id,'pit_number'=>['<',7]])->column('user_id');
//获取交集
$intersection = array_intersect($newPitUser,$oldPitUser);
//取差集
$diff = array_diff($newPitUser,$oldPitUser);
$changeData = [];
if($diff){
//推下麦
foreach($diff as $key => $value){
if(in_array($value,$oldPitUser)){
//查询当前空麦位
$pit_null = model('api/RoomPit')->getRoomNullPitWithout($room_id, [7,8,9,10]);
if($pit_null){
// $this->room_pit_model->getOnPit($this->room_id, $value, $pit_null);
model('api/RoomPit')->OnPit($value, $room_id, $pit_null);
// db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => $pit_null])->update(['user_id' => $value]);
}else{
//下麦
$UserRoomPit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'user_id' => $value])->value('pit_number');
model('api/RoomPit')->DownPit($value, $room_id, $UserRoomPit);
}
}
if(in_array($value,$newPitUser)){
//推上麦
//获取目标麦位是否有人
$getRoomPitUser= db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => $friendPlayPit[$value]])->value('user_id');
if($getRoomPitUser){
//查询当前空麦位
$getRoomNullPitss = model('api/RoomPit')->getRoomNullPitWithout($room_id, [7,8,9,10,$friendPlayPit[$value]]);
if($getRoomNullPitss){
// $this->room_pit_model->getOnPit($this->room_id, $getRoomPitUser, $getRoomNullPitss);
db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => $getRoomNullPitss])->update(['user_id' => $getRoomPitUser]);
}else{
model('api/RoomPit')->DownPit($getRoomPitUser, $room_id, $friendPlayPit[$value]);
}
}
model('api/RoomPit')->OnPit($value, $room_id, $friendPlayPit[$value]);
}
}
}
if($intersection){//交换麦位
//查询麦上的用户
$newPitUserStr = implode(',',$newPitUser);
$getRoomPit = db::name('vs_room_pit')->where("room_id=".$room_id." AND user_id in (".$newPitUserStr.")")->column('pit_number');
db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => ['in', $getRoomPit]])->update(['user_id' => 0]);
$changePitUser = [];
foreach ($friendPlayPit as $key => $value){
if(empty($value)){
$value = model('api/RoomPit')->getRoomNullPitWithout($room_id, [7,8,9,10]);
}
//获取目标麦位是否有人
$isPitHaveUser= db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => $value])->value('user_id');
if($isPitHaveUser && !in_array($isPitHaveUser,$newPitUser)){
$changePitUser[$key]['user_id'] = $isPitHaveUser;
$changePitUser[$key]['pit_number'] = $value;
}
db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => $value])->update(['user_id' => $key]);
}
//处理原麦位上的用户
foreach ($changePitUser as $key_change => $value_change){
//判断是否在左边 1,2,3 麦位上
if(in_array($value_change['pit_number'],[1,2,3])){
$null_pit = model('api/RoomPit')->getRoomNullPitWithout($room_id, [4,5,6,7,8,9,10]);
if(empty($null_pit)){
$null_pit = model('api/RoomPit')->getRoomNullPitWithout($room_id, [7,8,9,10]);
}
}else{
$null_pit = model('api/RoomPit')->getRoomNullPitWithout($room_id, [1,2,3,7,8,9,10]);
if(empty($null_pit)){
$null_pit = model('api/RoomPit')->getRoomNullPitWithout($room_id, [7,8,9,10]);
}
}
db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => $null_pit])->update(['user_id' => $value_change['user_id']]);
}
// $getRoomNullPit = $this->room_pit_model->where(['room_id'=>$room_id,'pit_number'=>['notin',[7,9]]])->select();
$getRoomNullPit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => ['<',7]])->select();
$data_users = [];
foreach($getRoomNullPit as $key_data => $value_data){
$data_users[$key_data]['user_id'] = $value_data['user_id'];
$data_users[$key_data]['nickname'] = db::name('user')->where('id',$value_data['user_id'])->value('nickname');
$data_users[$key_data]['avatar'] = db::name('user')->where('id',$value_data['user_id'])->value('avatar');
$data_users[$key_data]['sex'] = db::name('user')->where('id',$value_data['user_id'])->value('sex');
//获取用户在此房间今天的魅力值
$charm =[];
if($value_data['user_id']){
$charm = db::name('vs_room_user_charm')->where(['user_id' => $value_data['user_id'],'room_id' => $room_id])->value('charm');
}
$data_users[$key_data]['dress'] = model('Decorate')->user_decorate_detail($value_data['user_id'],1);
$data_users[$key_data]['charm'] = $charm??0;
$data_users[$key_data]['pit_number'] = $value_data['pit_number'];
$data_users[$key_data]['is_online'] = db::name('vs_room_visitor')->where(['user_id' => $value_data['user_id'],'room_id' => $room_id])->value('is_online');
}
//推送给前端消息
$text['text'] = '房间换麦位';
$text['list'] = $data_users;
model('api/Chat')->sendMsg(1053,$room_id,$text);
}
}
}
//换麦
public function changePitToPosPair($room_id,$friendPlayPit){
$new_pit_u = $friendPlayPit;
//按照键值排序数组
ksort($new_pit_u);
//查询原有麦位上有用户的数据 并且重组结果,键为麦位,值为用户,值必须存在,没值则不展示
$pit_users = db::name('vs_room_pit')->where(['room_id' => $room_id,'pit_number'=>['<',7],'user_id' => ['>', 0]])
->order('pit_number ASC')
->field('pit_number,user_id')->select();
$pit_user = [];
foreach ($pit_users as $value_pit_user){
$pit_user[$value_pit_user['pit_number']] = $value_pit_user['user_id'];
}
//比较两个数组,无论是键的差异还是值的差异,都输出字符串”有差异“否则输出”没有差异“
$result = array_diff_assoc($pit_user, $new_pit_u);//第一个数组中存在但其他数组中不存在的键/值对
$result2 = array_diff_assoc($new_pit_u, $pit_user);
if(!empty($result) || !empty($result2)){//换麦
db::name('vs_room_pit')->where(['room_id' => $room_id,'pit_number' => ['<',7]])->update(['user_id' => 0]);
//新麦位上的用户
foreach ($new_pit_u as $key_result2 => $value_result2){
db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => $key_result2])->update(['user_id' => $value_result2]);
}
if($result){//原有麦位上的用户,且不在新麦位上的用户
foreach ($result as $key_result => $value_result){
$pit_null = model('api/RoomPit')->getRoomNullPitWithout($room_id, [7,8,9,10]);
$onPitUser = db::name('vs_room_pit')->where(['room_id' => $room_id, 'user_id' => $value_result])->find();
if($pit_null && !$onPitUser){
db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => $pit_null])->update(['user_id' => $value_result]);
}
}
}
//获取此阶段的1-6麦位 全部返给前端 前端比对 里面没有自己 则闭麦……
$getRoomNullPit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'pit_number' => ['<',7]])->select();
$data_users = [];
foreach($getRoomNullPit as $key_data => $value_data){
$data_users[$key_data]['user_id'] = $value_data['user_id'];
$data_users[$key_data]['nickname'] = db::name('user')->where('id',$value_data['user_id'])->value('nickname');
$data_users[$key_data]['avatar'] = db::name('user')->where('id',$value_data['user_id'])->value('avatar');
$data_users[$key_data]['sex'] = db::name('user')->where('id',$value_data['user_id'])->value('sex');
//获取用户在此房间今天的魅力值
$charm =[];
if($value_data['user_id']){
$charm = db::name('vs_room_user_charm')->where(['user_id' => $value_data['user_id'],'room_id' => $room_id])->value('charm');
}
$data_users[$key_data]['dress'] = model('Decorate')->user_decorate_detail($value_data['user_id'],1);
$data_users[$key_data]['charm'] = $charm??0;
$data_users[$key_data]['pit_number'] = $value_data['pit_number'];
$data_users[$key_data]['is_online'] = db::name('vs_room_visitor')->where(['user_id' => $value_data['user_id'],'room_id' => $room_id])->value('is_online');
}
//推送给前端消息
$text['text'] = '房间换麦位';
$text['list'] = $data_users;
model('api/Chat')->sendMsg(1053,$room_id,$text);
}
}
//交友厅游戏开始后送礼后一系列操作
//插入/更新心动表
public function addUserHeart($uid,$user_id,$friend_id,$value,$room_id,$user_data){
//给多个用户送礼
//数组重组 下标从0开始
$user_ids = array_values($user_id);
// $heart_value = $value;//心动值
$heart_value = 0;
$heart_exp = get_system_config_value('coin_charm_exp');//金币与魅力值转换比
for ($i = 0; $i < count($user_ids); $i++) {
foreach ($user_data as $cv){
if($user_ids[$i] == $cv['user_id']){
$heart_value = $cv['gift_price'] * $heart_exp;
}
}
// 处理用户ID顺序
$user1 = min($uid, $user_ids[$i]);
$user2 = max($uid, $user_ids[$i]);
// 更新心动关系表
$relation = db::name('vs_user_friending_heart')->where([
'user1_id' => $user1,
'user2_id' => $user2,
'friend_id' => $friend_id
])->find();
if ($relation) {
db::name('vs_user_friending_heart')->where([
'room_id' => $room_id,
'user1_id' => $user1,
'user2_id' => $user2,
'friend_id' => $friend_id
])->setInc('heart_value', $heart_value);
} else {
$relation['id'] = db::name('vs_user_friending_heart')->insert([
'room_id' => $room_id,
'user1_id' => $user1,
'user2_id' => $user2,
'friend_id' => $friend_id,
'heart_value' => $heart_value
]);
}
}
//修改用户心动连线状态
// $relation = db::name('vs_user_friending_heart')->where("(user1_id=".$uid." OR user2_id=".$uid.") AND friend_id=$friend_id AND room_id=$room_id AND status!=3")->order('heart_value desc')->find();
// if($relation){
// db::name('vs_user_friending_heart')->where("(user1_id=".$uid." OR user2_id=".$uid.") AND friend_id=$friend_id AND room_id=$room_id AND status!=3")->update(['status'=>2]);
// db::name('vs_user_friending_heart')->where(['id'=>$relation['id']])->update(['status'=>1]);
// }
}
}

View File

@@ -1,6 +1,7 @@
<?php
namespace app\api\model;
use think\Cache;
use think\Model;
use think\Db;
use think\Session;
@@ -19,7 +20,8 @@ class Gift extends Model
//获取礼物类型
public function get_gift_label()
{
$giftTypeData = db::name('vs_gift_label')->where('delete_time',0)->order("sort asc,id desc")->select();
$giftType = [];
$giftTypeData = db::name('vs_gift_label')->where('delete_time',0)->where('tid',1)->order("sort asc,id desc")->select();
foreach ($giftTypeData as $key => $value) {
$giftType[$key]['id'] = $value['id'];
$giftType[$key]['name'] = $value['name'];
@@ -27,42 +29,118 @@ class Gift extends Model
return ['code' => 1, 'msg' => '获取成功', 'data' => $giftType];
}
//拉礼物列表
public function get_gift_list($label=0)
//拉礼物列表
public function get_gift_list($label = 0,$room_id = 0,$user_id = 0)
{
$is_lock = 0;
if ($label == 13) { // 专属礼物
$Nobility = model('api/Nobility')->getUserNobilityInfo($user_id);
$power_list_ids = array_column($Nobility['power_list'],'id');
if(!in_array(5,$power_list_ids)){
$is_lock = 1;
}
}
//先从缓存获取
if($is_lock){
$cache_key = 'gift_list_'.$label.'_'.$is_lock;
}else{
$cache_key = 'gift_list_'.$label;
}
$list = json_decode(Cache::get($cache_key), true);
if($list){
return ['code' => 1, 'msg' => '获取成功', 'data' => $list];
}
$map['delete_time'] = 0;
$where['is_show'] = 1;
if ($label && $label !=99) {
if ($label && $label != 99) {
$map['label'] = $label;
}
if ($label == 99) {
$gift_price = get_system_config_value('room_love_auction_cion');
$where['gift_price'] = ['>',$gift_price];
$where['label'] = ['<>',2];
}
$list = $this->field('gid as gift_id,gift_name,base_image,gift_price')->where($map)->where($where)->order('sort asc, gift_price asc')->select();
$is_open_blind_box_turntable = 1;
// if($room_id){
// $is_open_blind_box_turntable = Db::name('vs_room')->where(['id'=>$room_id])->value('is_open_blind_box_turntable');
// }
$list = $this->field('gid as gift_id,gift_name,base_image,gift_price,icon')->where($map)->where($where)->order('sort desc, gift_price asc')->select();
if($label==2){
$list_data = [];
foreach ($list as &$v) {
//获取盲盒列表
$box_list = Db::name('vs_gift_bag')->where(['status'=>1])->where('activities_id',4)->select();
$box_list = Db::name('vs_gift_bag')->where(['status'=>1])->where(['activities_id'=>["in",[4,5]]])->select();
foreach ($box_list as $key =>$box) {
$ext = json_decode($box['ext'],true);
if ($ext['gift_id'] == $v['gift_id']) {
$v['gift_bag_name'] = $box['name'];
$v['rule'] = $ext['description'];
$v['rule_url'] = get_system_config_value('web_site')."/api/Page/get_gift_box_rule?box_id=".$box["id"];
$v['activities_id'] = $box['activities_id'];
$v['gift_bag'] = $box['id'];
break;
}
}
//爆币
$pool_gift_id = db::name('bb_lottery_config')->where(['key' => 'pool_gift_id'])->value('value');
if($pool_gift_id == $v['gift_id']){
$v['gift_bag_name'] = "幸运币活动";
$v['rule'] = "幸运羽币";
$v['rule_url'] = get_system_config_value('web_site')."/api/Page/page_show?id=35";
$v['activities_id'] = 88;
$v['gift_bag'] = 0;
}
}
foreach ($list as $gift) {
if($is_open_blind_box_turntable == 1){
$list_data[] = $gift;
}else{
if(isset($gift['activities_id']) && $gift['activities_id'] == 4){
$list_data[] = $gift;
}
}
}
// usort($list_data, function($a, $b) {
// return $a['gift_id'] <=> $b['gift_id'];
// });
$list = $list_data;
}
//获取配置里面的CP礼物
$cp_gift_ids = explode(',', get_system_config_value('cp_gift_id'));
$teacher_gift_ids = explode(',', get_system_config_value('master_special_gift'));
$cp_gift = [];
$teacher_gift = [];
foreach ($list as $key =>&$v) {
$v['is_lock'] = $is_lock;
if (in_array($v['gift_id'], $cp_gift_ids)) {
$v['is_cp'] = 1;
$cp_gift[] = $v;
unset($list[$key]);
}else{
$v['is_cp'] = 0;
}
if (in_array($v['gift_id'], $teacher_gift_ids)) {
$v['is_teacher'] = 1;
$teacher_gift[] = $v;
unset($list[$key]);
}else{
$v['is_teacher'] = 0;
}
}
//如果有CP礼物 则放在最前面
if ($cp_gift) {
array_unshift($list, ...$cp_gift);
}
if ($teacher_gift) {
array_unshift($list, ...$teacher_gift);
}
//设置缓存
Cache::set($cache_key, json_encode($list), 3600);
return ['code' => 1, 'msg' => '获取成功', 'data' => $list];
}
/*
* 盲盒规则链接
*/
public function get_gift_box_rule($box_id){
}
}

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