1469 Commits

Author SHA1 Message Date
540dff822d Merge remote-tracking branch 'origin/develop' into develop 2026-01-19 09:18:40 +08:00
7a9b1ef9cf bug修改 2026-01-19 09:18:33 +08:00
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
187 changed files with 30242 additions and 8306 deletions

28
.env
View File

@@ -1,27 +1,23 @@
[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 = 1.13.181.248
database = midi
username = midi
password = 5B2zwShhTi5L7t2w
database = yusheng
username = yusheng
password = GEDYGj3HbZfKYBjp
hostport = 3306
prefix = fa_
#hostname = 62.234.12.147
#database = midi
#username = midi
#password = EC6cak6fzXdXnERz
#正式
#hostname = 1.13.20.30
#database = yusheng
#username = yusheng
#password = GEDYGj3HbZfKYBjp
#hostport = 3306
#prefix = fa_
@@ -35,7 +31,7 @@ mqtt_password = public
[smsbao]
dxb_name = xqgy1818
dxb_pwd = "xqgy1818!"
dxb_temp = "【西安熙晟文化传媒】您的验证码是{code}。如非本人操作,请忽略本短信"
dxb_temp = "【羽声语音】您的验证码是{code}。如非本人操作,请忽略本短信"
[wechatpay]
mch_id = 1719907761

2
.gitignore vendored
View File

@@ -3,3 +3,5 @@
.idea
*.log
.env
.node_modules
node_modules/

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

@@ -598,7 +598,14 @@ 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();
@@ -618,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']);
@@ -700,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

@@ -62,17 +62,14 @@ 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();
if(empty($gift_data)){
continue;
}
$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]['is_world_show'] = $value['is_world_show'];
$lists[$key]['weight'] = $value['weight'];
$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']);
}
@@ -354,6 +351,14 @@ class BlindBox extends adminApi
foreach ($gift_bag_detail as $k=>$v){
$bag_data = db::name($this->table)->where(['id'=>$v['id']])->update(['remaining_number'=>$v['quantity']]);
}
// 清除缓存
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,"成功");
}
@@ -367,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,"请配置礼物");
@@ -381,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{
@@ -401,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);
@@ -445,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();
@@ -727,11 +738,11 @@ class BlindBox extends adminApi
$room_id = input('room_id', '');
$gift_bag_id = input('gift_bag_id', '');
$periods = input('periods', '');
$stime = input('stime', '');
$etime = input('etime', '');
$stime = input('stime', date('Y-m-d'));
$etime = input('etime', date('Y-m-d h:i:s', time()));
$where = [];
if($room_id){
$where['room_id'] = $room_id;
$where['room_number'] = $room_id;
}
if($gift_id){
$where['gift_id'] = $gift_id;
@@ -752,10 +763,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_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();
@@ -855,7 +866,7 @@ class BlindBox extends adminApi
}
if($user_id){
$user_id = db::name('user')->where('user_code', $user_id)->value('id');
$where['b.user_id'] = $user_id;
$where['a.user_id'] = $user_id;
}
if($periods){
$where['b.periods'] = $periods;
@@ -866,7 +877,7 @@ class BlindBox extends adminApi
->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.user_id,b.room_id,b.gift_id,b.num,a.is_send,b.pay_price,b.locking_gift_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")
@@ -897,7 +908,9 @@ class BlindBox extends adminApi
$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,'b.room_id'=>$room_id])->sum('a.num');
->where('a.createtime','>=',$today)->where(['a.is_send'=>1])
->where($where)
->sum('a.num');
$return_data = [
'page' =>$page,
'page_limit' => $page_limit,

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,7 +51,7 @@ 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']==1 ? "SVGA" : "MP4";
@@ -60,6 +60,9 @@ class Decorate extends adminApi
$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,
@@ -343,8 +376,8 @@ class Decorate extends adminApi
$return_list[$k]['id'] = $v['udid'];
$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($v['type'] >= 6){
$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{
@@ -375,7 +408,7 @@ class Decorate extends adminApi
public function give_decorate(){
$user_id = input('user_id', '');
$decorate_id = input('decorate_id', '');
$day = input('day', '');
$day = input('day', 0);
$user = db::name('user')->where(['user_code'=>$user_id])->find();
if(!$user){
return V(0,"用户不存在");
@@ -385,9 +418,11 @@ class Decorate extends adminApi
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;
@@ -99,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,
@@ -126,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,"礼物名称不能为空");
}
@@ -156,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]);
}
/*
@@ -196,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不能为空");
}
@@ -245,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

@@ -3,7 +3,9 @@
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,67 +29,95 @@ 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)) {
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;
// 获取所有送礼记录
$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();
$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)){
$gift_ids = db::name('vs_give_gift')->where($where)->column('id');
if (!empty($gift_ids)) {
// 批量获取所有收益记录
$earning_list = db::name('vs_give_gift_ratio_log')
->field('app_earning,gift_user_earning,room_owner_earning')
->where('give_gift_id', 'in', $gift_ids)
->order('id', 'desc')
->select();
$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')
@@ -107,10 +137,11 @@ class GiveGift extends adminApi
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');
// 批量获取用户信息
@@ -142,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;
@@ -175,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'] = '聊天送礼';
@@ -199,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,
@@ -209,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);
@@ -219,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]['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 = [
@@ -186,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();
@@ -199,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) {
@@ -224,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, "该工会名称已存在");
}
@@ -248,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'];
}
@@ -259,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());
@@ -379,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]];
@@ -399,38 +499,84 @@ class Guild extends adminApi
->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])->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){
if($search_stime!="" && $v['createtime'] < strtotime($search_stime)){
$search_stime = $search_stime;
$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['createtime']) ;
$search_stime = date('Y-m-d H:i:s',$v['apply_time']);
}
if($v['quit_time']){
if($search_etime!="" && $v['quit_time'] > strtotime($search_etime)){
$search_etime = $search_etime;
}else{
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
];
@@ -460,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']);
@@ -508,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) {
@@ -661,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

@@ -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

@@ -125,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();

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){
@@ -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,
@@ -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', '');
@@ -444,7 +484,14 @@ class Room extends adminApi
$where['room_status'] = $search_status;
}
if($type_id!==''){
$where['type_id'] = $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;
@@ -460,7 +507,6 @@ class Room extends adminApi
}
//房间列表只展示 审核通过的房间
$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 = [];
@@ -478,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 ? '是' : '否';
@@ -610,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);
}
@@ -662,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 00:00:00', strtotime('this week')));
$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);
@@ -768,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()
@@ -875,8 +952,33 @@ class Room extends adminApi
}
}
}
//排序
$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{
@@ -1321,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'];
}
@@ -1362,6 +1465,8 @@ class Room extends adminApi
//发系统信息
if($apply_status ==2){
$deal_content = '审核通过';
//首次建立房间【完成任务】
model('api/Tasks')->tasks_complete($room_data['user_id'],34);
}elseif($apply_status ==3){
$deal_content = '审核未通过';
}

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,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();
}
@@ -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){
@@ -117,11 +125,20 @@ class Statistical extends adminApi
if(!empty($begin_time) && !empty($end_time)){
$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)
@@ -185,13 +202,13 @@ class Statistical extends adminApi
// 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);
@@ -244,13 +261,21 @@ class Statistical extends adminApi
if(!empty($begin_time) && !empty($end_time)){
$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')
@@ -270,15 +295,41 @@ class Statistical extends adminApi
$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);
@@ -481,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;
@@ -35,6 +36,11 @@ class SysSet extends adminApi
'10' => '邀请奖励',
'11' => '二级密码',
];
public $noAdminConfigType = [
'1' => '基础设置',
'4' => '提现设置',
'8' => '房间配置',
];
public function _initialize()
{
@@ -45,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);
}
@@ -86,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

@@ -53,12 +53,19 @@ class UploadFile extends Upload
$objectName = $fileName . '_' . $uniqueId . '.' . $extension;
// 调用父类方法上传到 OSS
$result = $this->uploadFile($objectName, $filePath);
// $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, '上传失败请检查OSS配置或网络', null);
return V(0, '上传失败,请检查COS配置或网络', null);
}
// 返回访问地址
$url = $this->config['oss_cdn_url'] . $objectName;
$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,7 +75,9 @@ 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)];
$where['a.createtime'] = ['<=',strtotime($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
];
@@ -234,6 +277,9 @@ class User extends adminApi
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);
}
@@ -335,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'];
@@ -347,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'];
@@ -423,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,'操作成功');
}
@@ -436,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] = [
@@ -456,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);
}
/*
* 相册列表
*/
@@ -516,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,
@@ -524,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');
@@ -600,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
@@ -744,4 +861,155 @@ class User extends adminApi
$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

@@ -98,27 +98,34 @@ class Version extends adminApi
* 修改
*/
public function version_edit(){
$version = input('version', '');
$type = input('type', '');
$downloadurl = input('downloadurl', '');
$content = $_POST['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

@@ -104,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;

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

@@ -94,28 +94,104 @@ 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)){
$where['day'] = date('Y-m-d');
}else{
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 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)->field('room_id,createtime,quit_time')->select();
$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) {
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("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['createtime'] && $stoday_seach < $v['createtime']){
$stoday_seach = $v['createtime'];
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_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,19 +72,21 @@ 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)];
}
if(!empty($etime)){
$give_where['createtime'] = ['<=',strtotime($etime)];
$give_where['createtime'] = ['<',strtotime($etime)];
}
if(!empty($stime) && !empty($etime)){
$give_where['createtime'] = ['between',[strtotime($stime),strtotime($etime)]];
// $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;
}

View File

@@ -52,7 +52,7 @@ class Activities extends BaseCom
$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]['num'] = $vv['quantity']."";
$list[$kk]['gift_price'] = $gift['gift_price'];
$list[$kk]['type'] =2;
$list[$kk]['base_image'] = $gift['base_image'];
@@ -62,7 +62,7 @@ class Activities extends BaseCom
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'] ?? "";
@@ -98,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;
}
@@ -157,7 +157,7 @@ class Activities extends BaseCom
}elseif($v['type'] == 2) {
$gift = DB::name('vs_gift')->where(['gid'=>$v['foreign_id']])->find();
$list[$k]['gift_name'] = $gift['gift_name'];
$list[$k]['num'] = $v['quantity'];
$list[$k]['num'] = $v['quantity']."";
$list[$k]['gift_price'] = $gift['gift_price'];
$list[$k]['type'] =2;
$list[$k]['base_image'] = $gift['base_image'];
@@ -165,7 +165,7 @@ class Activities extends BaseCom
$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]['gift_name'] = $gift['title']; //装扮名称
$list[$k]['num'] = $decorate_price['day']; //天数
$list[$k]['num'] = $decorate_price['day'].""??0; //天数
$list[$k]['gift_price'] = $decorate_price['price']; //价格
$list[$k]['type'] =3;
$list[$k]['base_image'] = $gift['base_image'];
@@ -238,7 +238,7 @@ class Activities extends BaseCom
$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]['num'] = $vv['quantity']."";
$list[$kk]['gift_price'] = $gift['gift_price'];
$list[$kk]['type'] =2;
$list[$kk]['base_image'] = $gift['base_image'];
@@ -248,7 +248,7 @@ class Activities extends BaseCom
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'] ?? "";
@@ -303,7 +303,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;
}

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

@@ -40,7 +40,17 @@ class BlindBoxTurntable extends BaseCom
$num = input('num',1);
$heart_id = input('heart_id',0);
$auction_id = input('auction_id',0);
$reslut = model('BlindBoxTurntableGiftDrawWorld')->draw_gift($gift_bag_id, $user_id, $gift_user_ids,$num,$room_id,$heart_id,$auction_id);
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']);
}
/*
@@ -70,13 +80,13 @@ class BlindBoxTurntable extends BaseCom
/*
* 获取全服抽奖记录
*/
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 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']);
// }
/*
* 巡乐会
*/
@@ -93,7 +103,7 @@ class BlindBoxTurntable extends BaseCom
$user_id = $this->uid;
$room_id = input('room_id',0);
$num = input('num',1);
$reslut = model('BlindBoxTurntableGiftDrawWorld')->xlh_draw_gift($user_id,$num,$room_id);
$reslut = model('BlindBoxTurntableGiftDrawWorldNew')->xlh_draw_gift($user_id,$num,$room_id);
return v($reslut['code'], $reslut['msg'], $reslut['data']);
}
/*
@@ -128,4 +138,13 @@ class BlindBoxTurntable extends BaseCom
$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

@@ -147,694 +147,6 @@ class Ceshi extends Controllers
return V(1, '成功', $reslut);
}
//清空数据 禁用 慎用
//清空数据 禁用 慎用
//清空数据 禁用 慎用
public function qing_chu_data()
{
//ip
$ip = request()->ip();
//白名单
$white_list = $this -> allowIp;
if (!in_array($ip, $white_list)) {
return V(301, '非法访问!');
}
$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, '财富等级日志删除失败!');
}
$reslut68 = db::name('vs_user_friending')->where('id','>', 0)->delete();
if($reslut68){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户好友删除失败!');
}
$reslut69 = db::name('vs_user_friending_heart')->where('id','>', 0)->delete();
if($reslut69){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '用户好友心跳删除失败!');
}
$reslut70 = db::name('vs_room_hot_value_log')->where('id','>', 0)->delete();
if($reslut70){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '房间热度值日志删除失败!');
}
$reslut71 = db::name('vs_blind_box_turntable_results_log')->where('id','>', 0)->delete();
if($reslut71){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '盲盒转盘结果日志删除失败!');
}
$reslut72 = db::name('vs_blind_box_turntable_log')->where('id','>', 0)->delete();
if($reslut72){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '盲盒转盘日志删除失败!');
}
$reslut73 = db::name('vs_room_pan_xlh')->where('id','>', 0)->delete();
if($reslut73){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '房间寻乐会删除失败!');
}
$reslut74 = db::name('vs_room_pan_xlh_log')->where('id','>', 0)->delete();
if($reslut74){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '房间寻乐会日志删除失败!');
}
$reslut75 = db::name('vs_room_pan')->where('id','>', 0)->delete();
if($reslut75){
$i++ ;
}else{
//数组末尾添加元素
array_push($res, '房间盘删除失败!');
}
//数据提交
db::commit();
return V(1, '成功'.$i.'条数据!', $res);
}
//测试富文本消息
public function test_rich_text(){
@@ -856,6 +168,27 @@ class Ceshi extends Controllers
//测试异步信息
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,19 +5,39 @@ 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()
{
@@ -25,28 +45,69 @@ class Cron
$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

@@ -26,7 +26,8 @@ class Gift extends BaseCom
{
$label = input('label',0);
$room_id = input('room_id',0);
$reslut = model('Gift')->get_gift_list($label,$room_id);
$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

@@ -41,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']);
}
@@ -63,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']);
}
@@ -174,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]);
}
/*
@@ -187,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']);
}
@@ -196,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']);
}
@@ -205,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', '');
//群聊公告
@@ -216,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,7 +18,7 @@ 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', 20);
@@ -29,9 +29,47 @@ class Index extends BaseCom
//房间类型列表
public function room_type_list()
{
$list = db::name('vs_room_type')->where(['status' => 1, 'deletetime' => 0])->field('id,type_name as label_name')->order('sort asc')->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

@@ -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,14 +22,21 @@ 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);
$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){
if(!$coin && $nobility_id == 0){
$coin = $money * get_system_config_value('rmb_coin_ratio');
}
if (!$user_id) {
@@ -50,22 +57,23 @@ class Payment extends Controller
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) {
@@ -76,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');
@@ -87,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);
@@ -327,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

@@ -116,4 +116,12 @@ class Redpacket extends BaseCom
}
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,20 +186,26 @@ 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,$heart_id);
$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']);
}
@@ -191,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']);
}
@@ -201,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']);
@@ -275,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-女神,7-交友
$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']);
}
@@ -301,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']);
}
@@ -315,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()
{
@@ -412,16 +457,6 @@ class Room extends BaseCom
}
//房间在线列表
public function room_online_list_ceshi()
{
$room_id = input('room_id', 0);
$page = input('page', 1);
$limit = input('limit', 50);
$reslut = model('Room')->room_online_list($room_id, $page, $limit);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//房间用户当前魅力值列表
public function room_user_charm_list()
{
@@ -431,33 +466,25 @@ class Room extends BaseCom
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
// //创建房间
// public function create_rooms()
// {
// //查询所有的房间信息
// $room = db::name('vs_room')->field('id,user_id')->where(['room_status' => ['<>',3]])->select();
// $i = 0;
// foreach ($room as $value) {
// $reslut = model('Tencent')->create_group($value['user_id'],'room'.$value['id']);
// $i++;
// }
// return['code' => 1, 'msg' => '成功创建了'.$i.'个房间', 'data' => null];
// }
//用户重连
public function user_reconnect()
//用户在房间内切后台保留机制
//给用户发送房间内消息
public function send_room_message()
{
$user_id = input('user_id', '');
$room_id = input('room_id', 0);
$reslut = model('Room')->user_reconnect($this->uid, $room_id);
$reslut = model('Room')->send_room_message($this->uid, $user_id,$room_id);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
}
//用户在房间内切后台保留机制
public function user_in_room_background()
//师徒任务跳转房间
public function task_jump_room()
{
$room_id = input('room_id', 0);
$type = input('type', 1);//1-切后台2-切前台
$reslut = model('Room')->user_in_room_background($this->uid, $room_id,$type);
return V($reslut['code'], $reslut['msg'], $reslut['data']);
$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

@@ -7,33 +7,46 @@ use think\Db;
class RoomPit extends BaseCom
{
//申请上麦
public function apply_pit()
{
$key_name = "api:room:apply_pit:" . $this->uid;
$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);
$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);
}
$room_label = $res['data']['label_id'];
$room_type = $res['data']['type_id'];
redis_lock_exits($key_name);
if(($room_label == 1 && ($room_type == 1 || $room_type == 3 || $room_type == 4 || $room_type == 8))|| $room_type == 2 || $room_type == 7){
$reslut = model('RoomPit')->apply_pit($this->uid, $room_id,$pit_number);
}elseif ($room_label == 2 && ($room_type == 1 || $room_type == 3 || $room_type == 4 || $room_type == 8)){
$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{
redis_unlocks($key_name);
return V(0, '房间不存在', null);
$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);
@@ -44,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']);
}
@@ -52,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']);
}
@@ -61,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']);
}
@@ -70,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']);
@@ -79,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']);
}
@@ -87,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']);
}
@@ -97,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 == 8)) || $room_type == 2 || $room_type == 7){
$reslut = model('RoomPit')->DownPit($this->uid, $room_id,$pit_number);
}elseif ($room_label == 2 && ($room_type == 1 || $room_type == 3 || $room_type == 4 || $room_type == 8)){
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']);
@@ -122,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']);
@@ -132,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,6 +49,23 @@ 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(){
@@ -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

@@ -147,8 +147,8 @@ class Search extends BaseCom
}
$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(isset($rooms)){
foreach ($rooms as $vv){
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'];
}

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

@@ -8,6 +8,7 @@ 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);

View File

@@ -29,23 +29,68 @@ class Theme extends controller
*/
public function get_theme_data()
{
$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();
// $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';
// }
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;
}
return V(1,'操作成功', $reslut);
//版本号
$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);
}
//关注(回关)
@@ -273,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

@@ -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

@@ -10,22 +10,103 @@ use app\common\controller\BaseCom;
class Xintiao extends BaseCom
{
public function keep_xintiao()
//房间内保持心跳
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_xintiao')->where('user_id' , $user_id)->find();
$is_xintiao = db::name('vs_room_heartbeat')->where(['user_id' => $user_id, 'room_id' => $room_id])->find();
if($is_xintiao){
db::name('vs_xintiao')->where('user_id' , $user_id)->update(['updatetime' => time()]);
db::name('vs_room_heartbeat')->where('id' , $is_xintiao['id'])->update(['updatetime' => time()]);
}else{
db::name('vs_xintiao')->insert([
db::name('vs_room_heartbeat')->insert([
'user_id' => $user_id,
'room_id' => $room_id,
'createtime' => time(),
'updatetime' => time()
]);
]);
}
return true;
//任务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);
}
@@ -33,7 +114,4 @@ class Xintiao extends BaseCom
}

View File

@@ -8,427 +8,404 @@ use think\Log;
use app\common\controller\Push;
class Xxiaoshi extends Controller
class Xxiaoshi extends Controllers
{
public function send_gift()
public function test()
{
//获取上一个小时的开始时间和结束时间
$start_time = strtotime(date('Y-m-d H:00:00', strtotime('-1 hour')));
$end_time = strtotime(date('Y-m-d H:00:00'));
echo "开始时间:" .$start_time."\n";
echo "结束时间:" .$end_time."\n";
//当前小时的前一个小时24小时计时法0-23
$pre_hour = date('H', strtotime('-1 hour'));
echo "上个时间段:" .$pre_hour."\n";
$is_open_time = db::name('vs_hour_ranking_config')->where('id', 1)->value('open_time');
if ($is_open_time == 0) {
echo "未开启时间段:" .$is_open_time."\n";
return;
}
//是否全局飘瓶
$is_public_server = db::name('vs_hour_ranking_config')->where('id', 1)->value('is_public_server');
if ($is_public_server == 1) {
//全局飘瓶时间段
$xlh_time_range = db::name('vs_hour_ranking_config')->where('id', 1)->value('broadcast_times');
if($xlh_time_range){
if($xlh_time_range == 25){
$is_piao = 1;
}else{
//当前的前一个小时是否在 $xlh_time_range中
if (in_array($pre_hour, explode(',', $xlh_time_range))) {
$is_piao = 1;
} else {
$is_piao = 0;
}
}
}else{
$is_piao = 0;
}
}else{
$is_piao = 0;
}
//获取上一个时间段的配置
// $gift_list = db::name('vs_hour_ranking_gift_config')->where('time_id',$pre_hour)->group('ranking')->order('id', 'desc')->select();
$gift_list = $this->get_hour_ranking($pre_hour);
// echo "上个时间段的配置:" .json_encode($gift_list)."\n";
// 提取所有有奖励的内容
$allRewards = $this->extractAllRewards($gift_list);
// 按index分组
$groupedRewards = $this->groupRewardsByIndex($allRewards);
// 按名次顺序分配奖励
$distributionResult = $this->distributeByRank($groupedRewards);
//获取上个数组的个数,从而获取配置了多少个名次
$count = count($distributionResult);
echo "上个时间段的配置总数:" .$count."\n";
//获取前一个小时的 前$count名房间排行
$room_list = model('api/RoomHourRanking')->room_hour_ranking(1, $count, $start_time, $end_time);
$room_owner = [];
if ($room_list['code'] == 1) {
//获取房间排行奖励最低值
$min_price = db::name('vs_hour_ranking_config')->where('id', 1)->value('min_price');
if ($room_list['data']['lists']) {
echo "房间列表:" .json_encode($room_list['data']['lists'])."\n";
foreach ($room_list['data']['lists'] as $v){
if ($v['total_price'] >= $min_price) {
$room_owner[] = [
'user_id' => $v['user_id'],
'room_name' => $v['room_name'],
'room_id' => $v['room_id'],
'total_price' => $v['total_price']
];
$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();
}
}
}
}
if ($distributionResult && $room_owner) {
$text_list_new = [];
echo "礼物数:" .json_encode($distributionResult)."\n";
echo "房主:" .json_encode($room_owner)."\n";
foreach ($distributionResult as $k => $value) {
//礼物全部给他偷偷放在装扮表及金额 中
//有几个用户就发几个
if(count($room_owner) > $k){
// 为每个房间添加一个标志,表示是否已处理推送信息
$hasProcessedPush = false;
foreach ($value['rewards'] as $v){
// if($v['type'] == 0){//1金币2礼物3头像4坐骑
// echo "发金币:" .$v['value'].'==>'.$room_owner[$k]['user_id']."\n";
// $res = $this->add_coin($v['value'], $room_owner[$k]['user_id'],$k + 1,$room_owner[$k]['room_id'],$room_owner[$k]['total_price'],$is_piao);
// }elseif ($v['type'] == 1){
// echo "发礼物:" .$v['value'].'==>'.$room_owner[$k]['user_id']."\n";
// $res = $this->add_gift($v['value'], $room_owner[$k]['user_id'],$k + 1,$room_owner[$k]['room_id'],$room_owner[$k]['total_price'],$is_piao);
// }elseif ($v['type'] == 2){
// $res = $this->add_decorate($v['value'], $room_owner[$k]['user_id'],$k + 1,$room_owner[$k]['room_id'],$room_owner[$k]['total_price'],$is_piao,3);
// }elseif ($v['type'] == 3){
// $res = $this->add_decorate($v['value'], $room_owner[$k]['user_id'],$k + 1,$room_owner[$k]['room_id'],$room_owner[$k]['total_price'],$is_piao,4);
// }
// 只有在第一次处理奖励时添加推送信息,避免重复推送
if(!$hasProcessedPush && $is_piao == 1) {
$room_name = $room_owner[$k]['room_name'];
//推送礼物横幅
if ($k == 0) {
$text = '新科状元!【' . $room_name . '】独占鳌头!';
} elseif ($k == 1) {
$text = '金榜榜眼!【' . $room_name . '】才气逼人!';
} elseif ($k == 2) {
$text = '风采探花!【' . $room_name . '】实力绽放!';
}
$text_list_new[] = [
'text' => $text ?? '恭喜【' . $room_name . '】获得礼物!',
'room_id' => $room_owner[$k]['room_id'],
'room_name' => $room_name,
'rank_number' => $k + 1,
];
$hasProcessedPush = true; // 标记已处理推送
}
}
}
}
if(!empty($text_list_new)){
$push = new Push();
$push->hourRankingcs($text_list_new);
Log::record("小时榜推送:".json_encode($text_list_new),"infos");
}
}
echo "送礼-共" . count($room_owner) . "个房间房主获益\n";
}
//添加金币到钱包
// public function add_coin($coin,$user_id,$ranking,$room_id,$total_price,$is_piao){
// if($coin > 0){
// $data = [
// 'user_id' => $user_id,
// 'change_value' => $coin,
// // 'room_id' => $room_ids,
// 'money_type' => 1,
// 'change_type' => 27,
// 'from_id' => 0,
// 'remarks' => '小时榜获得',
// 'createtime' => time()
// ];
// //开启事务
// Db::startTrans();
// $res = Db::name('vs_user_money_log')->insert($data);
// if(!$res){
// Db::rollback();
// }
// //增加用户金币
// $res1 = Db::name('user_wallet')->where(['user_id'=>$user_id])->setInc('coin',$coin);
// if(!$res1){
// Db::rollback();
// }
// //添加到排行表
// $start_time = strtotime(date('Y-m-d H:00:00', strtotime('-1 hour')));
// $end_time = strtotime(date('Y-m-d H:00:00')) - 1;
// $res2 = db::name('vs_hour_ranking')->insert([
// 'ranking' => $ranking,
// 'room_id' => $room_id,
// 'flowing_water' => $total_price,
// 'coin' => $coin,
// 'time_id' => date('H', strtotime('-1 hour')),
// 'stime' => $start_time,
// 'etime' => $end_time,
// 'createtime' => time(),
// 'updatetime' => time(),
// 'is_public_server' => $is_piao
// ]);
// if(!$res2){
// Db::rollback();
// }
// Db::commit();
// }
// return true;
// }
// //添加礼物到背包
// public function add_gift($gift_id,$user_id,$ranking,$room_id,$total_price,$is_piao){
// $res = model('api/UserGiftPack')->change_user_gift_pack($user_id,$gift_id,1,model('UserGiftPack')::HOUR_RANK_GET,"小时榜获得");
// if($res['code'] == 0){
// Log::record("小时榜获取礼物失败:".$res['msg'],"info");
// }
// //添加到排行表
// $start_time = strtotime(date('Y-m-d H:00:00', strtotime('-1 hour')));
// $end_time = strtotime(date('Y-m-d H:00:00')) - 1;
// $res2 = db::name('vs_hour_ranking')->insert([
// 'ranking' => $ranking,
// 'room_id' => $room_id,
// 'flowing_water' => $total_price,
// 'gift_id' => $gift_id,
// 'gift_type' => 2,
// 'time_id' => date('H', strtotime('-1 hour')),
// 'stime' => $start_time,
// 'etime' => $end_time,
// 'createtime' => time(),
// 'updatetime' => time(),
// 'is_public_server' => $is_piao
// ]);
// if(!$res2){
// Log::record("小时榜礼物锁定失败","info");
// }
// return true;
// }
// //添加装扮到背包
// public function add_decorate($avatar_id,$user_id,$ranking,$room_id,$total_price,$is_piao,$type){
// $decorate_price_info = db::name('vs_decorate_price')->where(['id'=>$avatar_id])->find();
// if(empty($decorate_price_info)){
// Log::record("小时榜获取装扮失败:没有找到装扮!".$avatar_id,"info");
// }
// $res = model('api/Decorate')->pay_decorate($user_id,$decorate_price_info['did'],$decorate_price_info['day'],2);
// if($res['code'] == 0){
// Log::record("小时榜获取装扮失败:".$res['msg']."-".$avatar_id,"info");
// }
// //添加到排行表
// $start_time = strtotime(date('Y-m-d H:00:00', strtotime('-1 hour')));
// $end_time = strtotime(date('Y-m-d H:00:00')) - 1;
// $res2 = db::name('vs_hour_ranking')->insert([
// 'ranking' => $ranking,
// 'room_id' => $room_id,
// 'flowing_water' => $total_price,
// 'gift_id' => $avatar_id,
// 'gift_type' => $type,
// 'time_id' => date('H', strtotime('-1 hour')),
// 'stime' => $start_time,
// 'etime' => $end_time,
// 'createtime' => time(),
// 'updatetime' => time(),
// 'is_public_server' => $is_piao,
// ]);
// if(!$res2){
// Log::record("小时榜咋装扮锁定失败","info");
// }
// return true;
// }
/**
* 提取所有有奖励的内容
*/
private function extractAllRewards($responseData)
//测试数据
public function testData()
{
$allRewards = [];
foreach ($responseData as $timeSlot) {
foreach ($timeSlot['reward'] as $rewardItem) {
$index = $rewardItem['index'];
$content = $rewardItem['content'];
// 只处理有奖励内容的数据
if (!empty($content)) {
foreach ($content as $rewardContent) {
$allRewards[] = [
'index' => $index,
'type' => $rewardContent['type'],
'value' => $rewardContent['value'],
'name' => $rewardContent['name'] ?? ''
];
}
}
$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);
return $allRewards;
}
/**
* 按index分组奖励
*/
private function groupRewardsByIndex($allRewards)
public function queryUserRecharge()
{
$grouped = [];
// 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]
// ];
foreach ($allRewards as $reward) {
$index = $reward['index'];
if (!isset($grouped[$index])) {
$grouped[$index] = [];
}
$grouped[$index][] = $reward;
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(); // 转为普通数组方便处理
// 按index排序
ksort($grouped);
return $grouped;
}
/**
* 按名次顺序分配奖励
*/
private function distributeByRank($groupedRewards)
{
$distribution = [];
$currentRank = 0; // 从第1名开始
// 按index顺序分配index 0 = 第1名index 1 = 第2名以此类推
foreach ($groupedRewards as $index => $rewards) {
// 确保名次连续,如果有空缺则填充空名次
while ($currentRank < $index) {
$distribution[] = [
'rank' => $currentRank + 1,
'rewards' => []
];
$currentRank++;
}
// 分配当前名次的奖励
$distribution[] = [
'rank' => $currentRank + 1,
'rewards' => $rewards
];
$currentRank++;
}
return $distribution;
}
public function get_hour_ranking($time){
// 先按时间段和排名索引分组查询
$timeRanges = db::name('vs_hour_ranking_gift_config')->distinct(true)
->where('time_id', '=', $time)
->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' => []
if($rechargeData){
foreach ($rechargeData as $recharge){
$dtae[] = [
'p_user' => $userId,
'user_id' => $recharge['user_id'],
'createtime' => $recharge['updatetime'],
'money' => $recharge['money'],
];
}
}
}
// 添加奖励内容到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'],
];
}
// 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,
];
}
}
// 按index排序
ksort($rewardMap);
$result[] = [
'time' => $timeRange,
'reward' => array_values($rewardMap)
];
}
return $result;
echo "=========";
echo "\n";
// var_dump($invite);
}
public function give_gifts(){
$data = db::name('vs_give_gift')->where('from_id',5483)->select();
$num = 0;
$i=0;
$j = 0;
foreach($data as $v){
$j += $v['total_price'];
$nuu = db::name('vs_give_gift_ratio_log')->where('give_gift_id',$v['id'])->value('room_owner_earning');
$id = db::name('vs_give_gift_ratio_log')->where('give_gift_id',$v['id'])->value('id');
// echo $id."--".$nuu."\n";
$num += $nuu;
$i++;
}
echo $num;
echo "==".$i."==".$j;
// echo db::name()->where(['user_id' => 10857,'money_type' =>2,'change_type' =>18])-sum('change_value');
}
public function room_liushui(){
// $room = db::name('vs_give_gift')->where(['from_id' => ['<>',5418],'from' => 2])->group('from_id');
$dd = db::name('vs_user_gift_pack')->alias('a')->join('vs_gift b','a.gid = b.gid')->field('a.gid,a.num,b.gift_price')->where(['a.num' =>['>',0]])->select();
$count = 0;
foreach ($dd as $v){
$count += $v['gift_price'] * $v['num'];
}
echo $count;
}
}

View File

@@ -239,7 +239,7 @@ class Activities extends Model
// 添加活动记录
$reslut = Db::name('vs_activities_receive')->insert([
'user_id' => $user_id,
'activities_id' => 1,
'activities_id' => 7,
'createtime' => time(),
'updatetime' => time()
]);
@@ -252,4 +252,29 @@ class Activities extends Model
}
}
//获取礼包总价值
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

@@ -12,8 +12,10 @@ class Banner extends Model
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

@@ -75,29 +75,30 @@ class BlindBoxTurntableGift extends Model
*/
public function gift_send($send_id){
try{
$blind_box_turntable = db('vs_blind_box_turntable_log')->where(['id'=>$send_id,'is_sued'=>0])->find();
$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('vs_blind_box_turntable_results_log')->where(['tid'=>$send_id])->select();
$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'];
$textMessage = $user_nickname;
$text_message = [];
$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();
$textMessage = $textMessage . ' 送给 ' . $ToUserInfo['nickname']. ' 盲盒转盘礼物 ' . $draw_gift['gift_name'].' x ' .$value['count']."\n";
$play_image[] = $draw_gift['play_image'];
$gift_names[] = $draw_gift['gift_name'];
$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[] = [
@@ -111,34 +112,80 @@ class BlindBoxTurntableGift extends Model
'number' => $value['count'],
];
}
$ToUserInfosList[$value['gift_user_id']] = $ToUserInfo;
$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($ToUserInfosList as &$userInfo) {
$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');//魅力
$ToUserInfos[] = $userInfo;
// 为每个用户单独推送消息
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);
}
}
$text = [
'FromUserInfo' => $FromUserInfo,
'ToUserInfos' => $ToUserInfos,
'GiftInfo' => [
'play_image' => implode(',',$play_image),
'gift_name' => implode(',',$gift_names),
],
'text' => rtrim($textMessage, "\n")
];
//聊天室推送系统消息
model('Chat')->sendMsg(1005,$room_id,$text);
$roomtype = Db::name('vs_room')->where(['id' => $room_id])->value('type_id');
if($roomtype == 6){
//推送消息
$hot_value = db::name('vs_give_gift')->where('from_id', $room_id)->where('from',6)
->sum('total_price');
$hot_value = db::name('vs_room')->where('id', $room_id)->value('hot_value');
$text1 = [
'room_id' => $room_id,
'hot_value' => $hot_value * 10,
'hot_value' => $hot_value,
'text' => '房间心动值变化'
];
//聊天室推送系统消息
@@ -153,7 +200,7 @@ class BlindBoxTurntableGift extends Model
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' => "网络请求错误,请重试!", 'data' => null];
return ['code' => 0, 'msg' => "网络请求错误,请重试!".$e->getMessage(), 'data' => null];
}
}
@@ -236,23 +283,26 @@ class BlindBoxTurntableGift extends Model
$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)){
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];
}
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']){
@@ -413,4 +463,30 @@ class BlindBoxTurntableGift extends Model
];
}
//盲盒转盘开启状态
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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -124,6 +124,43 @@ class Chat extends Model
//红包领完推送
// 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,

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,6 +146,15 @@ 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])){
@@ -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();

View File

@@ -1,6 +1,8 @@
<?php
namespace app\api\model;
use think\Cache;
use think\Model;
use think\Db;
use think\Session;
@@ -16,8 +18,8 @@ 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=>'财富等级特权赠送',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];
}
@@ -131,25 +171,32 @@ class Decorate extends Model
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();
@@ -193,27 +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'];
}
if($user_decorate_data['end_time'] < $now_time){
$user_decorate_data['end_time'] = 0;
}
$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){
@@ -252,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];
}
@@ -292,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 {
//清理该类型装扮使用状态
@@ -320,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();
@@ -327,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) {
// 回滚事务
@@ -363,7 +468,9 @@ 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];
}
@@ -375,48 +482,67 @@ class Decorate extends Model
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

@@ -113,15 +113,17 @@ class Friend extends Model
$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');
if($room_updatatime){ //60秒内没操作 则创建关系无
if(time() - $room_updatatime > 60){
// $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;//结束下一轮
@@ -131,7 +133,7 @@ class Friend extends Model
$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']);
model('api/RoomPit')->DownPit($pit['user_id'], $room_id,$pit['pit_number']);
}
}
$return = null;
@@ -139,7 +141,7 @@ class Friend extends Model
//结束交友游戏
if($step == 1){
db::name('vs_user_friending')->where(['id' => $id])->update(['status' => 2]);
db::name('vs_user_friending')->where(['id' => $id])->update(['status' => 2,'update_time' => time()]);
}
//推送给前端消息
$text['text'] = $step == 1 ? '交友结束' : '牵手良缘';
@@ -147,7 +149,7 @@ class Friend extends Model
$text['friend_user'] = $return;
$text['friend_id'] = $id;
model('api/Chat')->sendMsg(1049,$room_id,$text);
model('Room')->clear_user_charm(db::name('vs_room')->where(['id' => $room_id])->value('user_id'), $room_id);
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];
}
@@ -155,7 +157,7 @@ class Friend extends Model
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];
return ['code' => 0, 'msg' => '参数有误!', 'data' => null];
}
$user1 = min($user1_id, $user2_id);
@@ -166,8 +168,24 @@ class Friend extends Model
$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){
//创建小房间
@@ -196,6 +214,7 @@ class Friend extends Model
}else{
$text['text'] = '交友结束未创建房间';
}
$text['relation_name'] = $relation;
$text['user1_id'] = $user1;
$text['user2_id'] = $user2;
@@ -205,17 +224,6 @@ class Friend extends Model
$text['user2_nickname'] = db::name('user')->where(['id'=>$user2])->value('nickname');
model('api/Chat')->sendMsg(1051,$room_id,$text);
// 修改当前交友阶段
db::name('vs_room')->where(['id' => $room_id])->update(['step' => 1]);
db::name('vs_user_friending')->where(['id' => $friend_id])->update(['status' => 2]);
//所有人下麦
$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']);
}
}
$shijian = floor($friending_heart['heart_value']/get_system_config_value('friend_heart_value')) * get_system_config_value('friend_heart_times');
$friendendtime = time() + $shijian * 3600;
@@ -226,44 +234,67 @@ class Friend extends Model
$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' => 1, 'msg' => '创建关系成功!'.$msg, 'data' => null];
} else {
//推送给前端消息
$text['text'] = '交友结束';
$text['step'] = 1;//1 等待邂逅 2 心动连线 3 牵手良缘
model('api/Chat')->sendMsg(1049,$room_id,$text);
db::name('vs_user_friending')->where(['id' => $friend_id])->update(['status' => 2]);
return ['code' => 0, 'msg' => '创建关系失败!', 'data' => null];
}
}
//退出私密房间
public function outRoom($user_id,$room_id){
public function outRoom($type,$room_id){
//推送给前端消息
$text['text'] = '退出私密小屋';
model('api/Chat')->sendMsg(1055,$room_id,$text);
// //查询在房间的用户
// $users = db::name('vs_room_visitor')->where(['room_id'=>$room_id])->select();
// if($users){
// //退出房间
// foreach ($users as $v){
// //退出房间
// model('Room')->quit_room($v['user_id'], $room_id,$v['user_id']);
// }
// }else{
// model('Room')->quit_room($user_id, $room_id,$user_id);
// }
//注销房间
db::name('vs_room')->where(['id'=>$room_id])->update(['room_status'=>3]);
db::name('vs_room_cp_movie')->where(['room_id'=>$room_id])->update(['status'=>4]);
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];
@@ -283,16 +314,12 @@ class Friend extends Model
* @param $room_id 房间id
* @param $pit_number 坑位
*/
public function room_give_gift($uid, $to_uid, $gift_id, $gift_num, $from_type, $type, $room_id, $pit_number, $heart_id,$give_gift_ext)
public function room_give_gift($uid, $to_uid,$room_id,$res,$heart_id = 0)
{
$res = model('GiveGift')->give_gift($uid, $to_uid, $gift_id, $gift_num, $from_type, $type, $room_id, $pit_number,0,$give_gift_ext);
if($res['code'] != 1){
return $res;
}
//送礼成功后续操作
//查看当前时间是否在交友表的创建时间和结束时间段内 用来区分是否要拉取心动值高的用户上麦
$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;
@@ -300,7 +327,7 @@ class Friend extends Model
if($heart_id){//有这个值就是助力 不参加抢麦操作
db::name('vs_user_friending_heart')->where(['id' => $heart_id])->setInc('heart_value', $sumPrice);
$this->pullHeartChange($room_id,$friend['id']);//聊天室心动值变化通知
// $this->pullHeartChange($room_id,$friend['id']);//聊天室心动值变化通知 注释掉是因为下面那个函数会处理
//生成新排名 判断抱上麦 还是换麦
$this->pullUserPit($room_id,$friend['id']);
}else{
@@ -308,7 +335,7 @@ class Friend extends Model
$host = $this->is_host($uid,$to_uid,$room_id);
$user_idd = explode(",", $user_idd); // 将字符串转换为数组
//判断是否是主持
if($host['is_preside'] == 1){
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']); // 从数组中移除
@@ -329,7 +356,7 @@ class Friend extends Model
}
}
}
return ['code' => 1, 'msg' => '送礼成功', 'data' => null];
return ['code' => 1, 'msg' => '送礼成功', 'data' => $res['data']];
}
//是否主持
@@ -344,13 +371,13 @@ class Friend extends Model
foreach ($user_ids as $value) {
//判断收礼人是否是主持
if (in_array($value, $host)) {
$is_preside = 1;
$is_preside = 1;//是主持
$is_preside_user[] = $value;
}
}
//送礼人是主持或嘉宾
if (in_array($uid, $host)) {
$is_preside = 1;
$is_preside = 1;//是嘉宾
$is_preside_user[] = $uid;
}
return ['is_preside' =>$is_preside,'is_preside_user' => $is_preside_user];
@@ -681,6 +708,7 @@ class Friend extends Model
$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'] = '房间换麦位';
@@ -722,7 +750,7 @@ class Friend extends Model
}
}
}
//获取此阶段的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){
@@ -738,6 +766,7 @@ class Friend extends Model
$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'] = '房间换麦位';

View File

@@ -1,6 +1,7 @@
<?php
namespace app\api\model;
use think\Cache;
use think\Model;
use think\Db;
use think\Session;
@@ -19,6 +20,7 @@ class Gift extends Model
//获取礼物类型
public function get_gift_label()
{
$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'];
@@ -27,23 +29,46 @@ class Gift extends Model
return ['code' => 1, 'msg' => '获取成功', 'data' => $giftType];
}
//拉礼物列表
public function get_gift_list($label=0,$room_id=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];
}
$is_open_blind_box_turntable = 0;
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')->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) {
@@ -60,6 +85,15 @@ class Gift extends Model
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){
@@ -70,11 +104,43 @@ class Gift extends Model
}
}
}
usort($list_data, function($a, $b) {
return $a['gift_id'] <=> $b['gift_id'];
});
// 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];
}
}

View File

@@ -0,0 +1,184 @@
<?php
namespace app\api\model;
use think\Cache;
use think\Model;
use think\Db;
class GiftNew extends Model
{
/*
* 获取礼物列表
* @param int $label 礼物标签
* @param int $type 类型1-房间送礼礼物2-排麦设置插麦礼物3-拍卖位选择拍卖礼物4-歌手添加歌单礼物5-动态打赏礼物, 6-酒吧房
*/
public function get_gift_list($user_id, $type, $label)
{
$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;
}
}
//1,先从缓存获取
if($is_lock){//根据这个判断是不是爵位礼物 创建不同的key
$cache_key = 'gift_list_'.$label.'_'.$is_lock;
}else{
$cache_key = 'gift_list_'.$label;
}
//2,缓存获取
$list = json_decode(Cache::get($cache_key), true);
//获取到就返回
if($list){
return ['code' => 1, 'msg' => '获取成功', 'data' => $list];
}
//================================从这里开始写逻辑==================================
//根据type的值分析拉起礼物的场合 加$label的条件 给出对应的列表
//根据类型组装查询条件
$where['is_show'] = 1;
$where['delete_time'] = 0;
if ($label == 99) {
$gift_price = get_system_config_value('room_love_auction_cion');
$where['gift_price'] = ['>',$gift_price];
$where['label'] = ['<>',2];
}
switch ($type) {
case 1:
$where['label'] = $label;
break;
case 2:
$where['label'] = 5;
break;
case 3:
$where['type'] = 1;
//爆币id
$bb_gift_id = db::name('bb_lottery_config')->where(['key' => 'pool_gift_id'])->value('value');
$where['gid'] = ['<>',$bb_gift_id];//拍卖位选礼物 不能是爆币这个礼物
break;
case 4:
$where['type'] = 1;
$where['gift_price'] = ['>',128];//歌单礼物价格要大于128 老板26年1月2号提的要求
break;
case 5:
$where['type'] = 1;
break;
case 6:
$where['type'] = 6;
$where['label'] = $label;
break;
}
$list = db::name('vs_gift')
->field('gid as gift_id,gift_name,base_image,gift_price,icon')
->where($where)->order('sort desc, gift_price asc')->select();
if($label==2){
foreach ($list as &$v) {
//获取盲盒列表
$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;
}
}
}else{
foreach ($list as $key =>&$v) {
$v['is_lock'] = $is_lock;
if($label==14){ //酒吧房自定义礼物 自定义
$gift_remark_name =db::name('vs_user_custom_gift')->where(['user_id' => $user_id,'gift_id'=>$v['gift_id'],'delete_time'=>0])->value('gift_remark_name');
$v['gift_remark_name'] = $gift_remark_name ?? '';
}
}
}
//================================到这里结束逻辑==================================
if($label!=14) {//非自定义礼物走缓存
//设置缓存
Cache::set($cache_key, json_encode($list), 3600);
}
return ['code' => 1, 'msg' => '获取成功', 'data' => $list];
}
//自定义礼物设置
public function set_custom_gift($user_id, $gift_id, $room_id, $gift_remark_name){
$gift_info = db::name('vs_gift')->where(['gid' => $gift_id, 'delete_time' => 0, 'is_show' => 1])->find();
if(!$gift_info){
return ['code' => 0, 'msg' => '礼物不存在','data' =>null];
}
$user_custom_gift = db::name('vs_user_custom_gift')->where(['user_id' => $user_id,'gift_id'=>$gift_id])->find();
if($user_custom_gift){
db::name('vs_user_custom_gift')->where(['id' => $user_custom_gift['id']])->update(['gift_remark_name'=>$gift_remark_name,'updatetime'=>time()]);
}else{
$res = db::name('vs_user_custom_gift')->insert([
'user_id' => $user_id,
'gift_id'=>$gift_id,
'gift_remark_name'=>$gift_remark_name,
'createtime'=>time()
]);
if(!$res){
return ['code' => 0, 'msg' => '设置失败','data' =>null];
}
}
$user_custom_gift_count = db::name('vs_user_custom_gift')->where(['user_id' => $user_id,'gift_remark_name' => ['<>', '']])->count();
if($user_custom_gift_count == 0){
$type = 0;//删除
}else{
$type = 1;
}
if(!$room_id){
$room_id = db::name('vs_room_visitor')->where(['user_id' => $user_id])->order('id desc')->value('room_id');
}
$user_on_pit = db::name('vs_room_pit')->where(['room_id' => $room_id, 'user_id' => $user_id])->value('pit_number');
if($user_on_pit){
$text['text'] = '设置自定义礼物';
$text['type'] = $type;
$text['user_id'] = $user_id;
$text['pit_number'] = $user_on_pit;
//聊天室推送系统消息
model('api/Chat')->sendMsg(1203,$room_id,$text);
}
return ['code' => 1, 'msg' => '设置成功','data' =>null];
}
//自定义礼物列表
public function get_custom_gift_list($user_id){
$list = db::name('vs_user_custom_gift')
->alias('a')
->join('vs_gift b','a.gift_id = b.gid')
->field('a.id,b.gid as gift_id,a.gift_remark_name,b.gift_name,b.base_image,b.gift_price,b.icon')
->where(['a.user_id' => $user_id,'a.delete_time'=>0,'a.gift_remark_name'=>['<>','']])
->order('a.sort desc ,a.updatetime desc')
->select();
return ['code' => 1, 'msg' => '获取成功','data' =>$list];
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,468 @@
<?php
namespace app\api\model;
use app\common\model\GiveGiftBase;
use think\Cache;
use think\Log;
use think\Model;
class GiveGiftBases extends Model
{
protected $giftModel;
public function __construct()
{
parent::__construct();
$this->giftModel = new GiveGiftBase();
}
/**
* 获取送礼记录
*/
public function getGiftRecords($params,$ext_params=[])
{
// $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($ext_params)) {
if (!empty($ext_params['start_time'])) {
$options['start_time'] = $ext_params['start_time'];
}
if (!empty($ext_params['end_time'])) {
$options['end_time'] = $ext_params['end_time'];
}
}else{
if (!empty($params['start_time'])) {
$options['start_time'] = strtotime($params['start_time']);
}
if (!empty($params['end_time'])) {
$options['end_time'] = strtotime($params['end_time'] . ' 23:59:59');
}
}
// 分页参数
$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);
return $result;
}
/**
* 房间送礼统计
*/
public function getRoomStatistics($params)
{
$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($params,$type)
{
if($type==1){
$userId = $params['user_id'];
}else{
$userId = $params['gift_user'];
}
$startTime = $params['start_time'];
$endTime = $params['end_time'];
if (!$userId) {
return ['code'=>0,'msg'=>'用户ID不能为空','data'=>null];
}
if($type==1){
$where = ['user_id' => $userId];
}else{
$where = ['gift_user' => $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);
return $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
]
]);
}
public function getGiftList()
{
$params = $this->request->param();
$where = [];
$options = [];
// 构建查询条件
$searchFields = ['from_id', 'user_id', 'gift_user', 'gift_id', 'type', 'from', 'gift_type'];
foreach ($searchFields as $field) {
if (!empty($params[$field])) {
$where[$field] = $params[$field];
}
}
// 时间范围
if (!empty($params['start_time'])) {
$options['start_time'] = strtotime($params['start_time']);
}
if (!empty($params['end_time'])) {
$options['end_time'] = strtotime($params['end_time']);
}
// 搜索关键词
if (!empty($params['search'])) {
// 可以扩展搜索逻辑
}
// 分页参数
$options['page'] = $params['page'] ?? 1;
$options['limit'] = $params['limit'] ?? $this->pageSize;
// 查询数据
$result = $this->giftModel->getGiftRecords($where, $options);
// 转换时间格式
foreach ($result['data'] as &$item) {
$item['createtime_text'] = $item['createtime'] ? date('Y-m-d H:i:s', $item['createtime']) : '';
$item['updatetime_text'] = $item['updatetime'] ? date('Y-m-d H:i:s', $item['updatetime']) : '';
}
$total = $result['total'];
$data = $result['data'];
$result = array("total" => $total, "rows" => $data);
}
/**
* 获取送礼排行
*/
public function getGiftRanking($params,$type)
{
$where = [];
$options = [];
// 时间范围
if (!empty($params['start_time'])) {
$options['start_time'] = $params['start_time'];
}
if (!empty($params['end_time'])) {
$options['end_time'] = $params['end_time'];
}
// 分页参数
$options['page'] = $params['page'] ?? 1;
$options['limit'] = min($params['limit'] ?? 20, 100); // 限制最大100条
if($type == 1){
$options['group_by'] = 'user_id';
}else{
$options['group_by'] = 'gift_user';
}
// 查询数据
$result = $this->giftModel->getGiftStatisticsRanking($where, $options);
return $result;
}
/**
* 统计收礼用户 的送礼用户的分组和
*/
public function getToUserStatistics($params)
{
$where = [];
$options = [];
// 时间范围
if (!empty($params['start_time'])) {
$options['start_time'] = $params['start_time'];
}
if (!empty($params['end_time'])) {
$options['end_time'] = $params['end_time'];
}
if (!empty($params['from_id'])) {
$where['from_id'] = $params['from_id'];
}
if (!empty($params['gift_user'])) {
$where['gift_user'] = $params['gift_user'];
}
// 分页参数
$options['page'] = $params['page'] ?? 1;
$options['limit'] = min($params['limit'] ?? 20, 100); // 限制最大100条
$options['group_by'] = 'user_id';
// 查询数据
$result = $this->giftModel->getToUserStatistics($where, $options);
return $result;
}
/**
* 获取房间内送礼排行
*/
public function getRoomGiftRanking($params,$type)
{
$where = [];
$options = [];
// 时间范围
if (!empty($params['start_time'])) {
$options['start_time'] = $params['start_time'];
}
if (!empty($params['end_time'])) {
$options['end_time'] = $params['end_time'];
}
// 构建查询条件
if (!empty($params['from_id'])) {
$where['from_id'] = $params['from_id'];
}
// 分页参数
$options['page'] = $params['page'] ?? 1;
$options['limit'] = min($params['limit'] ?? 20, 100); // 限制最大100条
if($type == 1){
$options['group_by'] = 'user_id';
}else{
$options['group_by'] = 'gift_user';
}
// 查询数据
$result = $this->giftModel->getGiftStatisticsRanking($where, $options);
return $result;
}
}

View File

@@ -20,8 +20,11 @@ class Guild extends Model
public function get_guild_list($page,$page_limit,$search='',$user_id=0)
{
$where =[];
if ($search) {
$where = ['guild_special_id'=>['like',$search.'%']]; //通过工会ID搜索
//判断是不是数字
if (is_numeric($search)) {
$where = ['guild_special_id'=>['like',$search.'%']]; //通过工会ID搜索
}else{
$where = ['guild_name'=>['like',$search.'%']];
}
$list = [];
$list = Db::name('vs_guild')
@@ -29,6 +32,7 @@ class Guild extends Model
->where(['is_show'=>1,'delete_time'=>0])
->where($where)
->page($page, $page_limit)
->order('num desc')
->select();
$count = Db::name('vs_guild')
->where(['is_show'=>1,'delete_time'=>0])
@@ -111,30 +115,36 @@ class Guild extends Model
/*
* 加入工会申请
*/
public function join_guild($guild_id,$user_id=0)
public function join_guild_apply($guild_id,$user_id=0)
{
$user_info = model('User')->get_user_info($user_id);
if(!$user_info){
return ['code' => 0, 'msg' => '参数错误', 'data' => null];
}
if($user_info['is_real']!=1 || empty($user_info['card_id'])){
return ['code' => 0, 'msg' => '请先实名认证', 'data' => null];
//查询是否实名认证
$is_real = model('api/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];
}
}
//公会是否存在
$guild_info = db::name('vs_guild')->where(['id'=>$guild_id,'delete_time'=>0])->find();
if(!$guild_info){
return ['code' => 0, 'msg' => '该公会不存在', 'data' => null];
}
$is_check_join = Db::name('vs_guild_user')->where(['user_id'=>$user_id,'delete_time'=>0])->find();
if($is_check_join && $is_check_join['guild_id']!=$guild_id){
return ['code'=>0,'msg'=>'您已加入别的工会,请先退出公会再加入', 'data' => null];
}
$is_check_join = Db::name('vs_guild_user')->where(['user_id'=>$user_id,'delete_time'=>0])->order('id desc')->find();
if($is_check_join && $is_check_join['guild_id']==$guild_id && $is_check_join['status']==1){
return ['code'=>0,'msg'=>'您已加入该工会', 'data' => null];
}
if($is_check_join && $is_check_join['guild_id']==$guild_id && $is_check_join['status']==2){
return ['code'=>0,'msg'=>'您已提交申请,请耐心等待', 'data' => null];
}
if($is_check_join && $is_check_join['guild_id']!=$guild_id && $is_check_join['status']==1){
return ['code'=>0,'msg'=>'您已加入别的工会,请先退出公会再加入', 'data' => null];
}
if($is_check_join && $is_check_join['guild_id']!=$guild_id && $is_check_join['status']==2){
$other_guild_name = Db::name('vs_guild')->where(['id'=>$is_check_join['guild_id']])->value('guild_name');
return ['code'=>0,'msg'=>'您已申请加入工会'.$other_guild_name.',请等待会长审核', 'data' => null];
}
//是否被踢出过
$ti_chu = db::name('vs_guild_user')->where(['user_id'=>$user_id,'guild_id'=>$guild_id,'delete_time'=>['<>',0],'quit_type'=>2])->find();
if(!empty($ti_chu)){
@@ -158,7 +168,7 @@ class Guild extends Model
}
//是否有房间
$rid = 0;
$room_info = db::name('vs_room')->where('user_id', $user_id)->find();
$room_info = db::name('vs_room')->where(['user_id'=>$user_id,'delete_time'=>0,'type_id'=>['<>',6]])->find();
if($room_info){
$rid = $room_info['id'];
}
@@ -166,18 +176,18 @@ class Guild extends Model
$insert_data['user_id'] = $user_id;
$insert_data['guild_id'] = $guild_id;
$insert_data['room_id'] = $rid;
$insert_data['status'] = 1;
$insert_data['status'] = 2;
$insert_data['is_deacon'] = 2;
$insert_data['createtime'] = time();
$update_data['apply_time'] = time();
// $update_data['apply_time'] = time();
$insert_data['is_show_room'] = 1;
$reslut = db::name('vs_guild_user')->insert($insert_data);
if($reslut){
//增加公会人数
db::name('vs_guild')->where('id', $guild_info['id'])->setInc('num', 1);
//拉用户进入工会群聊
model('Tencent')->add_group_member('g'.$guild_id, $user_id);
// model('Tencent')->send_group_system_notification('g'.$guild_id,"欢迎".$user_info['nickname'].'加入公会');
// model('api/Tencent')->add_group_member('g'.$guild_id, $user_id);
// model('api/Tencent')->send_group_system_notification('g'.$guild_id,"欢迎".$user_info['nickname'].'加入公会');
return ['code' => 1, 'msg' => '提交成功', 'data' => null];
}else{
@@ -207,7 +217,7 @@ class Guild extends Model
'a.guild_id' => $guild_id,
'a.status' => 2
];
$count = db::name('vs_guild_user')-alias('a')->join('user b', 'a.user_id = b.id')->where($map)->count();
$count = db::name('vs_guild_user')->alias('a')->join('user b', 'a.user_id = b.id')->where($map)->count();
$list = db::name('vs_guild_user')->alias('a')->join('user b', 'a.user_id = b.id')
->field('a.id, a.user_id, a.guild_id, a.room_id, a.status, b.nickname, b.avatar,b.user_code')
->where($map)
@@ -230,10 +240,12 @@ class Guild extends Model
/*
* 同意,拒绝申请
*/
public function operate_guild($uid, $apply_id, $type){
$user_info = db::name('user')->find($uid);
if(!$user_info){
return ['code' => 0, 'msg' => '参数错误', 'data' => null];
public function operate_guild($apply_id, $type,$uid=0,$remarks=""){
if($uid != 0){
$user_info = db::name('user')->find($uid);
if(!$user_info){
return ['code' => 0, 'msg' => '参数错误', 'data' => null];
}
}
//该申请是否已被操作
$is_operate = db::name('vs_guild_user')->where(['id'=>$apply_id,'status'=>2])->find();
@@ -244,7 +256,7 @@ class Guild extends Model
return ['code' => 0, 'msg' => '参数错误', 'data' => null];
}
$guild_info = db::name('vs_guild')->where('id', $is_operate['guild_id'])->find();
if($uid != $guild_info['user_id']){
if($uid!=0 && $uid != $guild_info['user_id']){
return ['code' => 0, 'msg' => '您没有权限操作', 'data' => null];
}
//审核通过
@@ -262,20 +274,44 @@ class Guild extends Model
$update_data['updatetime'] = time();
$update_data['is_show_room'] = 1;
$update_data['apply_time'] = time();
$update_data['remarks'] = $remarks;
//结算比例
$configs = get_system_config();
//未加入工会的收益
$ratiogr = $configs['room_gift_ratio'];
//收益增加 加入工会的收益
$ratiog = $configs['room_gift_guild_ratio'];
//收礼人最终的收益比例
$ratio = $ratiogr + $ratiog;
$update_data['settlement_ratio'] = $ratio;
$reslut = db::name('vs_guild_user')->where(['id'=>$apply_id])->update($update_data);
if(!$reslut){
Db::rollback();
return ['code' => 0, 'msg' => '操作失败', 'data' => null];
}
//增加公会人数
db::name('vs_guild')->where('id', $guild_info['id'])->setInc('num', 1);
//拉用户进入工会群聊
$user_nickname = db::name('user')->where('id', $is_operate['user_id'])->value('nickname');
if($is_operate['guild_id']<=95){ //事故处理-114以前的群被删了
$guild_id = "g".$is_operate['guild_id'];
}else{
$guild_id = $is_operate['guild_id'];
}
model('api/Tencent')->add_group_member('g'.$guild_id, $is_operate['user_id']);
model('api/Tencent')->send_group_system_notification('g'.$guild_id,"欢迎".$user_nickname.'加入公会');
//发系统信息
$content = "恭喜加入{$guild_info['guild_name']}工会,您的个人收益增加{$ratiog}%,目前总收益{$ratio}%";
model('api/UserMessage')->send_system_message($is_operate['user_id'], "加入公会成功通知", $content, 1);
//处理新手任务
model('api/Tasks')->tasks_complete($is_operate['user_id'],11);
}else if($type == 2){//拒绝
$update_data = [];
$update_data['status'] = 3;
$update_data['updatetime'] = time();
$update_data['apply_time'] = time();
$reslut = db::name('user_guild')->where(['id'=>$apply_id])->update($update_data);
$update_data['remarks'] = $remarks;
$reslut = db::name('vs_guild_user')->where(['id'=>$apply_id])->update($update_data);
if(!$reslut){
Db::rollback();
return ['code' => 0, 'msg' => '操作失败', 'data' => null];
@@ -328,7 +364,7 @@ class Guild extends Model
if($reslut){
//减少公会人数
db::name('vs_guild')->where('id', $guild_info['id'])->setDec('num');
model('Tencent')->delete_group_member('g'.$guild_id, $user_id);
model('api/Tencent')->delete_group_member('g'.$guild_id, $user_id);
return ['code' => 1, 'msg' => '踢出成功','data' => null];
}else{
return ['code' => 0, 'msg' => '踢出失败','data' => null];
@@ -337,6 +373,9 @@ class Guild extends Model
//退出公会
public function quit_guild($uid, $guild_id,$type){
//去除字符里的g
$guild_id = str_replace('g', '', $guild_id);
$guild_id = intval($guild_id);
$config = get_system_config();
$user_info = db::name('user')->find($uid);
if(!$user_info){
@@ -384,9 +423,32 @@ class Guild extends Model
Db::rollback();
return ['code' => 0, '' => '退出失败', 'data' => null];
}
//加入审核表
$insert_data = [];
$insert_data['guid'] = $user_guild_info['id'];
$insert_data['user_id'] = $uid;
$insert_data['guild_id'] = $guild_id;
$insert_data['status'] = 1;
$insert_data['type'] = 2;
$insert_data['createtime'] = time();
$insert_data['updatetime'] = time();
$res = db::name('vs_guild_user_quit_log')->insert($insert_data);
if(!$res){
Db::rollback();
return ['code' => 0, '' => '退出失败', 'data' => null];
}
//减少公会人数
db::name('vs_guild')->where('id', $guild_info['id'])->setDec('num');
model('Tencent')->delete_group_member('g'.$guild_id, $uid);
if($guild_info['id']<=95){
$guild_id = "g".$guild_info['id'];
}else{
$guild_id = $guild_info['id'];
}
model('api/Tencent')->delete_group_member('g'.$guild_id, $uid);
//付费退出费用给公会长
$res = model('common/UserWallet')->change_user_money($guild_info['user_id'], $quit_guild_gold, model('common/UserWallet')::MONEYTYPECOIN, model('common/UserWallet')::GUILD_EXIT_DEACON_INCOME,model('common/UserWallet')::ChangeTypeLable(model('common/UserWallet')::GUILD_EXIT_DEACON_INCOME));
Db::commit();
return ['code' => 1, 'msg' => '退出成功', 'data' => null];
}else{
@@ -400,6 +462,7 @@ class Guild extends Model
$insert_data['user_id'] = $uid;
$insert_data['guild_id'] = $guild_id;
$insert_data['status'] = 0;
$insert_data['type'] = 1;
$insert_data['createtime'] = time();
$insert_data['updatetime'] = time();
$res = db::name('vs_guild_user_quit_log')->insert($insert_data);
@@ -492,8 +555,13 @@ class Guild extends Model
return ['code' => 0, 'msg' => '审核失败', 'data' => null];
}
//减少公会人数
db::name('vs_guild')->where('id', $apply_id)->setDec('num');
model('Tencent')->delete_group_member('g'.$apply_id, $apply_info['user_id']);
db::name('vs_guild')->where('id', $apply_info['guild_id'])->setDec('num');
if($apply_info['guild_id']['id']<=95){
$guild_id = "g".$apply_info['guild_id']['id'];
}else{
$guild_id = $apply_info['guild_id']['id'];
}
model('api/Tencent')->delete_group_member('g'.$guild_id, $apply_info['user_id']);
} else {
$update_data = [];
$update_data['status'] = 2;
@@ -509,7 +577,7 @@ class Guild extends Model
}catch (\Exception $e) {
// 回滚事务
Db::rollback();
return ['code' => 0, 'msg' => '解散失败', 'data' => null];
return ['code' => 0, 'msg' => '审核失败', 'data' => null];
}
}
@@ -526,7 +594,12 @@ class Guild extends Model
//解散公会
db::name('vs_guild')->where('id',$guild_id)->update(['delete_time'=>time(),'status'=>2]);
//解散群
model('Tencent')->delete_group('g'.$guild_id);
if($guild_id<=95){
$guild_id = "g".$guild_id;
}else{
$guild_id = $guild_id;
}
model('api/Tencent')->delete_group('g'.$guild_id);
Db::commit();
return ['code' => 1, 'msg' => '解散成功!', 'data' => null];
}catch (\Exception $e) {
@@ -622,25 +695,29 @@ class Guild extends Model
//本周流水
//本周的第一天
$week = strtotime(date('Y-m-d 00:00:00', strtotime('this week Monday')));
$guild_user = db::name('vs_guild_user')->where(['guild_id' => $guild_id])->select();
$transaction = 0;
foreach ($guild_user as $k => $v){
$week_start_time_seach = $week;
$week_end_time_seach = time();
if($v['createtime'] && $week_start_time_seach < $v['createtime']){
$week_start_time_seach = $v['createtime'];
}
if($v['quit_time'] && ($week_end_time_seach > $v['quit_time'])){
$week_end_time_seach = $v['quit_time'];
}
$transaction_one = db::name('vs_give_gift')
->whereIn('from_id',$v['room_id'])
->where(['from'=>['in',[2,3,6]],'createtime' => ['between', [$week_start_time_seach, $week_end_time_seach]]])
->sum('total_price');
$transaction += $transaction_one;
}
$total_transaction = $transaction;
// $guild_user = db::name('vs_guild_user')->where(['guild_id' => $guild_id])->select();
// $transaction = 0;
// foreach ($guild_user as $k => $v){
// $week_start_time_seach = $week;
// $week_end_time_seach = time();
// if($v['createtime'] && $week_start_time_seach < $v['createtime']){
// $week_start_time_seach = $v['createtime'];
// }
// if($v['quit_time'] && ($week_end_time_seach > $v['quit_time'])){
// $week_end_time_seach = $v['quit_time'];
// }
// $transaction_one = db::name('vs_give_gift')
// ->whereIn('from_id',$v['room_id'])
// ->where(['from'=>['in',[2,3,6]],'createtime' => ['between', [$week_start_time_seach, $week_end_time_seach]]])
// ->sum('total_price');
// $transaction += $transaction_one;
//
// }
// $total_transaction = $transaction;
$total_transaction = db::name('vs_guild_flow')
->where(['guild_id' => $guild_id])
->where(['createtime' => ['between', [$week, time()]]])
->sum('flow_price');
$ss = 0;
if($total_transaction){
//根据工会流水 获取补贴比例 单位%
@@ -757,37 +834,40 @@ class Guild extends Model
* 工会流水查询
* @return array
*/
public function get_guild_transaction($guild_id,$start_time=0,$end_time=0,$page=1,$page_limit=20){
public function get_guild_transaction($guild_id,$seach_start_time,$seach_end_time,$page,$page_limit){
$guild_info = db::name('vs_guild')->where(['id'=>$guild_id,'delete_time'=>0])->find();
if(empty($guild_info)){
return ['code' => 0, 'msg' => '公会不存在!', 'data' => null];
}
//工会总流水
$all_guild_room = db::name('vs_guild_user')->where(['guild_id' => $guild_id,'status'=>1,"delete_time"=>0])->select();
$total_transaction = 0;
foreach ($all_guild_room as $key => $value) {
if(!$start_time){
$start_time_all = $value['createtime'];
$end_time_all = time();
}else{
$start_time_all = strtotime($start_time." 00:00:00");
$end_time_all = strtotime($end_time." 23:59:59");
}
if($value['createtime'] && $start_time_all < $value['createtime']){
$start_time_all = $value['createtime'];
}
if($value['quit_time'] && ($end_time_all > $value['quit_time'])){
$end_time_all = $value['quit_time'];
}
$transaction = db::name('vs_give_gift')
->where('from_id',$value['room_id'])
->where(['from'=>['in',[2,3,6]],'createtime' => ['between', [$start_time_all, $end_time_all]]])
->sum('total_price');
$total_transaction = $total_transaction+$transaction;
}
// $all_guild_room = db::name('vs_guild_user')->where(['guild_id' => $guild_id,'status'=>1,"delete_time"=>0])->select();
// $total_transaction = 0;
// foreach ($all_guild_room as $key => $value) {
// $start_time = $seach_start_time;
// $end_time = $seach_end_time;
// if(!$start_time){
// $start_time_all = $value['createtime'];
// $end_time_all = time();
// }else{
// $start_time_all = strtotime($start_time." 00:00:00");
// $end_time_all = strtotime($end_time." 23:59:59");
// }
// if($value['createtime'] && $start_time_all < $value['createtime']){
// $start_time_all = $value['createtime'];
// }
// if($value['quit_time'] && ($end_time_all > $value['quit_time'])){
// $end_time_all = $value['quit_time'];
// }
// $transaction = db::name('vs_give_gift')
// ->where('from_id',$value['room_id'])
// ->where(['from'=>['in',[2,3,6]],'createtime' => ['between', [$start_time_all, $end_time_all]]])
// ->sum('total_price');
// $total_transaction = $total_transaction+$transaction;
// }
//查询工会所有房间流水
$list = db::name('vs_guild_user')->where(['guild_id'=>$guild_id,'delete_time'=>0,'status'=>1,'room_id'=>['<>',0]])
->order('coin desc')
->order('id asc')
->page($page, $page_limit)
->select();
@@ -795,29 +875,31 @@ class Guild extends Model
$room_data = [];
$i=0;
foreach ($list as $k=>$v){
if(!$start_time){
$start_time_seach = $value['createtime'];
$end_time_seach = time();
}else{
$start_time_seach = strtotime($start_time." 00:00:00");
$end_time_seach = strtotime($end_time." 23:59:59");
}
if($value['createtime'] && $start_time_all < $value['createtime']){
$start_time_seach = $value['createtime'];
}
if($value['quit_time'] && ($end_time_all > $value['quit_time'])){
$end_time_seach = $value['quit_time'];
}
// $start_time = $seach_start_time;
// $end_time = $seach_end_time;
// if(!$start_time){
// $start_time_seach = $value['createtime'];
// $end_time_seach = time();
// }else{
// $start_time_seach = strtotime($start_time." 00:00:00");
// $end_time_seach = strtotime($end_time." 23:59:59");
// }
// if($value['createtime'] && $start_time_all < $value['createtime']){
// $start_time_seach = $value['createtime'];
// }
// if($value['quit_time'] && ($end_time_all > $value['quit_time'])){
// $end_time_seach = $value['quit_time'];
// }
$room_info = db::name('vs_room')->where(['id'=>$v['room_id'],'room_status'=>1,'delete_time'=>0])->find();
if($room_info){
$room_data[$i]['room_id'] = $room_info['id'];
$room_data[$i]['room_number'] = model('Decorate')->user_decorate_detail($room_info['id'],7);
$room_data[$i]['room_name'] = $room_info['room_name'];
$room_data[$i]['room_cover'] = localpath_to_netpath($room_info['room_cover']);
$room_data[$i]['total_price'] = db::name('vs_give_gift')
->where('from_id',$v['room_id'])
->where(['from'=>['in',[2,3,6]],'createtime' => ['between', [$start_time_seach, $end_time_seach]]])
->sum('total_price');
$room_data[$i]['total_price'] = db::name('vs_guild_flow')
->where('room_id',$v['room_id'])
->where(['createtime' => ['between', [$seach_start_time, $seach_end_time]]])
->sum('flow_price');
$i++;
}
@@ -827,7 +909,7 @@ class Guild extends Model
'page' => $page,
'limit' => $page_limit,
'count' => $count,
'total_transaction' => $total_transaction ? $total_transaction : 0,
'total_transaction' => $guild_info['income'] ? $guild_info['income'] : 0,
'list' => $room_data,
];
return ['code' => 1, 'msg' => '获取成功', 'data' => $return_data];
@@ -840,104 +922,197 @@ class Guild extends Model
* @return array
*/
public function user_is_join($user_id){
$guild_id = Db::name('vs_guild_user')->where(['user_id'=>$user_id,'status'=>1,'delete_time'=>0])->value('guild_id');
if(empty($guild_id)){
$guild = Db::name('vs_guild_user')->where(['user_id'=>$user_id,'delete_time'=>0])->order('id desc,apply_time desc')->find();
if(empty($guild)){
return 0;
}else{
return $guild_id;
$guild_data['guild_id'] = $guild['guild_id'];
$guild_data['status'] = $guild['status'];
//1已通过 2已提交 3已拒绝
$guild_data['status_str'] = $guild['status'] == 1 ? '已通过' : ($guild['status'] == 2 ? '已提交' : '已拒绝');
$guild_data['is_deacon'] = $guild['is_deacon'];
return $guild_data;
}
}
/*
* 获取公会成员列表
*/
public function get_guild_user_list($guild_id,$user_id,$page=1,$page_limit=30){
$count = Db::name('vs_guild_user')
->alias('a')
->join('user b','a.user_id = b.id')
->where(['a.guild_id'=>$guild_id,'a.status'=>1,'a.delete_time'=>0])
->count();
$list = Db::name('vs_guild_user')
->alias('a')
->join('user b', 'a.user_id = b.id')
->field('a.id, a.user_id, a.guild_id, b.nickname, b.avatar, b.user_code, a.createtime')
->where(['a.guild_id' => $guild_id, 'a.status' => 1,'a.delete_time' => 0])
->order('a.id asc')
->page($page, $page_limit)
->select();
$member_array = array_column($list, 'user_id');
$member_array_str = [];
foreach ($member_array as $k=> $v){
$member_array_str[] = 'u' . $v;
public function get_guild_user_list($guild_ids,$user_id,$page=1,$page_limit=30,$seach=""){
//获取$guild_id的第一个字母
$guild_id_first_letter = substr($guild_ids, 0, 1);
if (substr($guild_ids, 0, 2) === 'gg') {
$guild_id = substr($guild_ids, 2);
} elseif (substr($guild_ids, 0, 1) === 'g') {
$guild_id = substr($guild_ids, 1);
} else {
$guild_id = substr($guild_ids, 1);
}
$group_member_info = model('Tencent')->get_group_member_info('g' .$guild_id,$member_array_str);
if($group_member_info['code'] == 0){
return V($group_member_info['code'],$group_member_info['msg'], $group_member_info['data']);
}
$member = [];
foreach ($group_member_info['data'] as $k=> $v){
$member[$v['Member_Account']] = $v['Role'];
}
//Owner(群主)Admin(群管理员)Member普通群成员NotMember(非群成员)。
$role = [
'Owner'=>'群主',
'Admin'=>'群管理员',
'Member'=>'普通群成员',
'NotMember'=>'非群成员'
];
foreach ($list as $key => $value) {
if($user_id == $value['user_id']){
$list[$key]['is_self'] = 1;
$seach_where = [];
if($seach){
if(is_numeric($seach)){
$seach_where = ['b.user_code' => ['like', $seach . '%']];
}else{
$list[$key]['is_self'] = 0;
$seach_where = ['b.nickname' => ['like', '%' . $seach . '%']];
}
$list[$key]['user_code'] = model('Decorate')->user_decorate_detail($value['user_id'], 6);
//角色:
$list[$key]['role'] = $member['u'.$value['user_id']];
$list[$key]['role_str'] = $role[$list[$key]['role']];
$list[$key]['createtime'] = date('Y-m-d H:i:s',$value['createtime']);
//当前用户是否在房间
$in_room = db::name('vs_room_visitor')->alias('a')
->join('vs_room b', 'a.room_id = b.id')
->field('a.room_id')
->where(['b.type_id' =>['<>',6]])
->where(['a.user_id' => $value['user_id'], 'a.is_delete' => 1])
->find();
$list[$key]['in_room_id'] = $in_room['room_id'] ?? 0;
}
if($guild_id_first_letter == 'g'){
$count = Db::name('vs_guild_user')
->alias('a')
->join('user b','a.user_id = b.id')
->where($seach_where)
->where(['a.guild_id'=>$guild_id,'a.status'=>1,'a.delete_time'=>0])
->count();
$list = Db::name('vs_guild_user')
->alias('a')
->join('user b', 'a.user_id = b.id')
->field('a.id, a.user_id, a.guild_id, b.nickname, b.avatar, b.user_code, a.createtime')
->where($seach_where)
->where(['a.guild_id' => $guild_id, 'a.status' => 1,'a.delete_time' => 0])
->order('a.id asc')
->page($page, $page_limit)
->select();
}else{
$myFamilyPid = db::name('vs_family')->where(['id' => $guild_id])->value('user_id');
$list = db::name('vs_family')->alias('a')
->join('user b','a.user_id = b.id')
->field('b.is_online,b.market_value,b.nickname,b.avatar,b.user_code,a.user_id,a.createtime')
->where($seach_where)
->where(['a.pid' => $myFamilyPid,'a.deletetime' => 0,'a.type' => 0])
->order('a.id asc')
->page($page, $page_limit)
->select();
$count = db::name('vs_family')->alias('a')
->join('user b','a.user_id = b.id')
->where($seach_where)
->where(['a.pid' => $myFamilyPid,'a.deletetime' => 0,'a.type' => 0])
->count();
}
if($list){
$member_array = array_column($list, 'user_id');
$member_array_str = [];
foreach ($member_array as $k=> $v){
$member_array_str[] = 'u' . $v;
}
$group_member_info = model('api/Tencent')->get_group_member_info($guild_ids,$member_array_str);
if($group_member_info['code'] == 0){
return V($group_member_info['code'],$group_member_info['msg'], $group_member_info['data']);
}
$member = [];
foreach ($group_member_info['data'] as $k=> $v){
$member[$v['Member_Account']] = $v['Role'];
}
//Owner(群主)Admin(群管理员)Member普通群成员NotMember(非群成员)。
$role = [
'Owner'=>'群主',
'Admin'=>'群管理员',
'Member'=>'普通群成员',
'NotMember'=>'非群成员'
];
//禁言用户列表
$mute_list = model('api/Tencent')->get_group_mute_list($guild_ids);
$mute_user_list = [];
if($mute_list['code'] == 1){
$mute_user_list = array_column($mute_list['data'], 'Member_Account');
}
foreach ($list as $key => $value) {
if($user_id == $value['user_id']){
$list[$key]['is_self'] = 1;
}else{
$list[$key]['is_self'] = 0;
}
$list[$key]['user_code'] = model('Decorate')->user_decorate_detail($value['user_id'], 6);
//角色:
$list[$key]['role'] = $member['u'.$value['user_id']];
$list[$key]['role_str'] = $role[$list[$key]['role']];
$list[$key]['createtime'] = date('Y-m-d H:i:s',$value['createtime']);
//当前用户是否在房间
$in_room = db::name('vs_room_visitor')->alias('a')
->join('vs_room b', 'a.room_id = b.id')
->field('a.room_id')
->where(['b.type_id' =>['<>',6]])
->where(['a.user_id' => $value['user_id'], 'a.is_delete' => 1])
->find();
$list[$key]['in_room_id'] = $in_room['room_id'] ?? 0;
//用户是否被禁言
if(in_array('u'.$value['user_id'], $mute_user_list)){
$list[$key]['is_mute'] = 1;
}else{
$list[$key]['is_mute'] = 0;
}
}
}
$return_data =[
'page' => $page,
'limit' => $page_limit,
'count' => $count,
'list' => $list,
];
return ['code' => 1, 'msg' => '获取成功', 'data' => $return_data];
}
/*
* 群聊详情
*/
public function guild_info($guild_id,$user_id=0){
if(!$guild_id){
public function guild_info($guild_ids,$user_id=0){
if(!$guild_ids){
return ['code' => 0, 'msg' => '参数错误'];
}
$guild_info = db::name('vs_guild')->where(['id'=>$guild_id,'status'=>1,'delete_time'=>0])->find();
$group_member_info = model('Tencent')->get_group_info('g'.$guild_id);
if (substr($guild_ids, 0, 2) === 'gg') {
$guild_id = substr($guild_ids, 2);
$guild_info = db::name('vs_guild')->where(['id'=>$guild_id,'status'=>1,'delete_time'=>0])->find();
$cover = $guild_info['cover'] ?? "";
} elseif (substr($guild_ids, 0, 1) === 'g') {
$guild_id = substr($guild_ids, 1);
$guild_info = db::name('vs_guild')->where(['id'=>$guild_id,'status'=>1,'delete_time'=>0])->find();
$cover = $guild_info['cover'] ?? "";
} else {
$guild_id = substr($guild_ids, 1);
$guild_info = db::name('vs_family')->where(['id'=>$guild_id])->find();
$cover = db::name('user')->where(['id'=>$guild_info['user_id']])->value('avatar');
}
//获取字符串里有几个g
// $guild_id_count = substr_count($guild_ids, 'g');
// $guild_id_first_letter = substr($guild_ids, 0, 1);
// if($guild_id_count == 2){
// //获取$guild_id的第一个字母
// $guild_id = substr($guild_ids, 2);
// }else{
// //获取$guild_id的第一个字母
// $guild_id = substr($guild_ids, 1);
// }
// if($guild_id_first_letter == 'g'){
// $guild_info = db::name('vs_guild')->where(['id'=>$guild_id,'status'=>1,'delete_time'=>0])->find();
// $cover = $guild_info['cover'] ?? "";
// }else{
// $guild_info = db::name('vs_family')->where(['id'=>$guild_id])->find();
// $cover = db::name('user')->where(['id'=>$guild_info['user_id']])->value('avatar');
// }
$group_member_info = model('api/Tencent')->get_group_info($guild_ids);
if($group_member_info['code']!=1){
return ['code' => 0, 'msg' => '群聊不存在',null];
}
$user_list = $this->get_guild_user_list($guild_id,0,1,10);
$user_list = $this->get_guild_user_list($guild_ids,0,1,10);
$is_deacon = 2;
if($guild_info['user_id'] ==$user_id){
$is_deacon = 1;
}
$return_data =[
'guild_id' => $guild_id,
'guild_cover' => $guild_info['cover'],
'guild_id' => $guild_ids,
'guild_cover' => $cover,
'is_deacon' => $is_deacon,
'user_list' => $user_list['data']['list'],
'name' => $group_member_info['data'][0]['Name'],
'notification' => $group_member_info['data'][0]['Notification']
'notification' => $group_member_info['data'][0]['Notification'],
'mute_all_member' => $group_member_info['data'][0]['MuteAllMember'] == 'On' ? 1 : 0,
];
return ['code' => 1, 'msg' => '获取成功', 'data' => $return_data];
@@ -946,7 +1121,280 @@ class Guild extends Model
* 设置群聊信息
*/
public function set_guild_info($guild_id,$name,$notice,$avatar){
$return = model('Tencent')->modify_group_base_info('g'.$guild_id, $name,$avatar, $notice);
$guild_id = 'g'.$guild_id;
$return = model('api/Tencent')->modify_group_base_info($guild_id, $name,$avatar, $notice);
return ['code' => $return['code'], 'msg' => $return['msg'], 'data' => $return['data']];
}
/*
* 我的公会
* @param $id
* @param $user_id
*/
public function my_guild($user_id)
{
$guild_user = Db::name('vs_guild_user')->where(['user_id'=>$user_id,'status'=>1,'delete_time'=>0])
->order('createtime desc')
->find();
if(empty($guild_user)){
return ['code' => 0, 'msg' => '您没有加入任何公会', 'data'=>null];
}
$info = Db::name('vs_guild')
->field('id,guild_special_id,user_id,guild_name,cover,num,intro,createtime,income')
->where(['id'=>$guild_user['guild_id'],'is_show'=>1,'delete_time'=>0])
->find();
$guild_data = [];
if($info){
//用户信息
$user_data = Db::name('user')->where(['id'=>$user_id])->field('id,nickname,avatar')->find();
$guild_data['user_id'] = $user_data['id'];
$guild_data['user_nickname'] = $user_data['nickname'];
$guild_data['user_code'] = model('Decorate')->user_decorate_detail($user_id, 6);
$guild_data['user_avatar'] = localpath_to_netpath($user_data['avatar']);
$guild_data['is_leader'] = $info['user_id'] == $user_id ? 1 : 0;//当前用户是否是会长
$guild_data['guild_id'] = $info['id'];
$guild_data['guild_code'] = $info['guild_special_id'];
$guild_data['guild_name'] = $info['guild_name'];
//加入公会时间
$guild_data['join_time'] = date('Y-m-d H:i:s',$guild_user['apply_time']);
//本周金额
//本周的第一天
$week = strtotime(date('Y-m-d 00:00:00', strtotime('this week Monday')));
$week_end_time = time();
$guild_data['week_income'] = db::name('vs_guild_flow')->where(['guild_id'=>$info['id']])
->where(['createtime' => ['between', [$week, $week_end_time]]])
->sum('flow_price');
//厅主收益
$guild_data['room_author_ratio'] = $guild_user['room_id']==0 ? 0 : get_system_config_value('room_author_ratio');
//礼物分成
$guild_data['settlement_ratio'] = $guild_user['settlement_ratio'];
//付费退出公会所需金
$guild_data['quit_guild_gold'] = get_system_config_value('quit_guild_gold');
//工会群组ID
if($info['id']<=95){
$guild_id = "g".$info['id'];
}else{
$guild_id = $info['id'];
}
$guild_data['guild_group_id'] = $guild_id;
$guild_data['guild_id'] = $guild_id;
//工会基础信息
$guild_data_info = Db::name('vs_guild_data')->where(['guild_id'=>$info['id']])->find();
$guild_data['agreement'] = $guild_data_info['agreement'] ?? '';
}
return ['code'=>1,'msg'=>'获取成功','data'=>$guild_data];
}
/*
* 加入工会——不用申请直接加入
*/
public function join_guild($guild_id,$user_id=0,$settlement_ratio = 0)
{
$user_info = db::name('user')->where(['id'=>$user_id])->find();
if(!$user_info){
return ['code' => 0, 'msg' => '参数错误', 'data' => null];
}
//查询是否实名认证
$is_real = model('api/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];
}
}
//公会是否存在
$guild_info = db::name('vs_guild')->where(['id'=>$guild_id,'delete_time'=>0])->find();
if(!$guild_info){
return ['code' => 0, 'msg' => '该公会不存在', 'data' => null];
}
$is_check_join = Db::name('vs_guild_user')->where(['user_id'=>$user_id,'delete_time'=>0])->find();
if($is_check_join && $is_check_join['guild_id']==$guild_id && $is_check_join['status']==1){
return ['code'=>0,'msg'=>'您已加入该工会', 'data' => null];
}
if($is_check_join && $is_check_join['guild_id']==$guild_id && $is_check_join['status']==2){
return ['code'=>0,'msg'=>'您已提交申请,请耐心等待', 'data' => null];
}
if($is_check_join && $is_check_join['guild_id']!=$guild_id && $is_check_join['status']==1){
return ['code'=>0,'msg'=>'您已加入别的工会,请先退出公会再加入', 'data' => null];
}
if($is_check_join && $is_check_join['guild_id']!=$guild_id && $is_check_join['status']==2){
$other_guild_name = Db::name('vs_guild')->where(['id'=>$is_check_join['guild_id']])->value('guild_name');
return ['code'=>0,'msg'=>'您已申请加入工会'.$other_guild_name.',请等待会长审核', 'data' => null];
}
//是否被踢出过
// $ti_chu = db::name('vs_guild_user')->where(['user_id'=>$user_id,'guild_id'=>$guild_id,'delete_time'=>['<>',0],'quit_type'=>2])->find();
// if(!empty($ti_chu)){
// return ['code' => 0, 'msg' => '已被踢出,禁止加入!', 'data' => null];
// }
//退出公会是否超过30天
$map = [];
$map['user_id'] = $user_id;
$map['delete_time'] = ['<>',0];
$map['quit_type'] = 1;
$quit_guild_info = Db::name('vs_guild_user')->where($map)->order('quit_time', 'desc')->field('quit_time,guild_id,quit_type')->find();
if(!empty($quit_guild_info)) {
$quit_time = empty($quit_guild_info['quit_time']) ? 0 : $quit_guild_info['quit_time'];
$quit_type = $quit_guild_info['quit_type'];
if($quit_guild_info['guild_id'] != $guild_id) {
$last_time = 30 * 24 * 3600;
if((time() - $last_time) <= $quit_time) {
return ['code' => 0, 'msg' => '退出公会未超过30天不能重新加入其他公会', 'data' => null];
}
}
}
//是否有房间
$rid = 0;
$room_info = db::name('vs_room')->where(['user_id'=>$user_id,'delete_time'=>0,'type_id'=>['<>',6]])->find();
if($room_info){
$rid = $room_info['id'];
}
$insert_data = [];
$insert_data['user_id'] = $user_id;
$insert_data['guild_id'] = $guild_id;
$insert_data['room_id'] = $rid;
$insert_data['status'] = 1;
$insert_data['is_deacon'] = 2;
$insert_data['createtime'] = time();
$insert_data['apply_time'] = time();
$insert_data['is_show_room'] = 1;
//结算比例
$configs = get_system_config();
//收礼人最终的收益比例 = 未加入工会的收益 + 加入工会的收益
if($settlement_ratio){
$insert_data['settlement_ratio'] = $settlement_ratio;
}else{
$insert_data['settlement_ratio'] = $configs['room_gift_ratio'] + $configs['room_gift_guild_ratio'];
}
$reslut = db::name('vs_guild_user')->insert($insert_data);
if($reslut){
//增加公会人数
db::name('vs_guild')->where('id', $guild_info['id'])->setInc('num', 1);
//拉用户进入工会群聊
if($guild_id<=95){ //事故处理-114以前的群被删了
$guild_id = "g".$guild_id;
}
model('api/Tencent')->add_group_member('g'.$guild_id, $user_id);
model('api/Tencent')->send_group_system_notification('g'.$guild_id,"欢迎".$user_info['nickname'].'加入公会');
//发系统信息
$content = "恭喜加入{$guild_info['guild_name']}工会,您的个人收益增加{$configs['room_gift_guild_ratio']}%,目前总收益{$insert_data['settlement_ratio']}%";
model('api/UserMessage')->send_system_message($user_id, "加入公会成功通知", $content, 1);
//处理新手任务
model('api/Tasks')->tasks_complete($user_id,11);
return ['code' => 1, 'msg' => '提交成功', 'data' => null];
}else{
return ['code' => 0, 'msg' => '提交失败', 'data' => null];
}
}
//工会邀请用户处理
public function guild_invite_handle($user_id,$message_id,$status){
$guild_user_invited = Db::name('vs_guild_user_invited')->where(['message_id'=>$message_id,'delete_time'=>0])->find();
if(empty($guild_user_invited)){
return ['code' => 0, 'msg' => '邀请信息不存在', 'data' => null];
}
if($user_id != $guild_user_invited['user_id']){
return ['code' => 0, 'msg' => '您没有权限处理此信息', 'data' => null];
}
if($guild_user_invited['status'] != 0){
return ['code' => 0, 'msg' => '此邀请信息已处理过', 'data' => null];
}
if($status == 1){
//加入工会
$res = $this->join_guild($guild_user_invited['guild_id'],$guild_user_invited['user_id'],$guild_user_invited['settlement_ratio']);
if($res['code'] != 1){
return ['code' => 0, 'msg' => $res['msg'], 'data' => null];
}
$guild_user_invited_data = [
'status' => 1,
'apply_time' => time(),
'updatetime' => time(),
];
}else{
$guild_user_invited_data = [
'status' => 2,
'apply_time' => time(),
'updatetime' => time(),
];
}
$guild_user_invited_res = Db::name('vs_guild_user_invited')->where(['message_id'=>$message_id,'delete_time'=>0])->update($guild_user_invited_data);
if($guild_user_invited_res){
return ['code' => 1, 'msg' => '处理成功', 'data' => null];
}else{
return ['code' => 0, 'msg' => '处理失败', 'data' => null];
}
}
//公会调整收益审核接口
public function user_ratio_up_apply($user_id,$message_id,$status){
$guild_user_ratio_up = Db::name('vs_guild_user_ratio_up_log')->where(['message_id'=>$message_id,'delete_time'=>0])->find();
if(empty($guild_user_ratio_up)){
return ['code' => 0, 'msg' => '邀请信息不存在', 'data' => null];
}
if($user_id != $guild_user_ratio_up['user_id']){
return ['code' => 0, 'msg' => '您没有权限处理此信息', 'data' => null];
}
if($guild_user_ratio_up['status'] != 0){
return ['code' => 0, 'msg' => '此邀请信息已处理过', 'data' => null];
}
if($status == 1){
//处理结算比例
$res = db::name('vs_guild_user')->where(['id'=>$guild_user_ratio_up['guild_user_id']])->update(['settlement_ratio'=>$guild_user_ratio_up['settlement_ratio']]);
if($res){
$data = [
'status' => 1,
'apply_time' => time(),
'updatetime' => time(),
];
$guild_user_res = Db::name('vs_guild_user_ratio_up_log')->where(['message_id'=>$message_id,'delete_time'=>0])->update($data);
if($guild_user_res){
return ['code' => 1, 'msg' => '处理成功', 'data' => null];
}else{
return ['code' => 0, 'msg' => '处理失败', 'data' => null];
}
}
}else{
$data = [
'status' => 2,
'apply_time' => time(),
'updatetime' => time(),
];
$guild_user_res = Db::name('vs_guild_user_ratio_up_log')->where(['message_id'=>$message_id,'delete_time'=>0])->update($data);
if($guild_user_res){
return ['code' => 1, 'msg' => '处理成功', 'data' => null];
}else{
return ['code' => 0, 'msg' => '处理失败', 'data' => null];
}
}
}
//公会流水记录
public function guild_flow($room_id,$flow_price,$give_gift_id=0){
if($room_id<=0 || $flow_price<=0){
return ['code' => 0, 'msg' => '参数错误', 'data' => null];
}
$guild_user_info = Db::name('vs_guild_user')->where(['room_id' => $room_id, 'delete_time' => 0, 'status' => 1, 'quit_time' => 0])->find();
if ($guild_user_info) {
//记录流水
$data = [
'guild_id' => $guild_user_info['guild_id'],
'room_id' => $guild_user_info['room_id'],
'give_gift_id' => $give_gift_id,
'flow_price' => $flow_price,
'day' => date('Y-m-d'),
'createtime' => time(),
'updatetime' => time(),
];
$res = Db::name('vs_guild_flow')->insert($data);
if (!$res) {
return ['code' => 0, 'msg' => '提交失败', 'data' => null];
}
//增加用户公会流水
Db::name('vs_guild_user')->where(['id' => $guild_user_info['id']])->setInc('coin', $flow_price);
//增加公会总流水
Db::name('vs_guild')->where(['id' => $guild_user_info['guild_id']])->setInc('income', $flow_price);
return ['code' => 1, 'msg' => '提交成功', 'data' => null];
}
}
}

View File

@@ -41,7 +41,7 @@ class HeadLine extends Model
}
}
//检测用户余额
$user_coin = model('UserWallet')->where('user_id' ,$uid)->value('coin');
$user_coin = db::name('user_wallet_coin')->where('user_id' ,$uid)->value('coin');
if($user_coin < $money) {
return ['code' => 0, 'msg' => '余额不足!', 'data' => null];
}
@@ -81,26 +81,13 @@ class HeadLine extends Model
}
//扣除用户余额
$res4 = model('UserWallet')->where('user_id' ,$uid)->setDec('coin', $money);
if(!$res4) {
$wallet_update = model('api/UserWallet')->change_user_cion_log($uid,$money,$room_id,20,'发布头条');
if(!$wallet_update){
Db::rollback();
return ['code' => 0, 'msg' => '扣除用户余额失败!', 'data' => null];
return ['code' => 0, 'msg' => '网络错误-1', 'data' => null];
}
//记录扣除用户余额
$res5 =db::name('vs_user_money_log')->insert([
'user_id' => $uid,
'change_type' => 20,
'money_type' => 1,
'change_value' => $money,
'from_id' => $res3,
'remarks' => '发布头条扣除余额',
'createtime' => time(),
]);
if(!$res5) {
Db::rollback();
return ['code' => 0, 'msg' => '记录扣除用户余额失败!', 'data' => null];
}
//给所有直播间发送消息 这个接口是要钱的 需要购买 暂时先藏起来
//给所有直播间发送消息
$ToUserInfo = Db::name('user')->where(['id' => $uid])->field('id as user_id,nickname,avatar,sex')->find();
$text = [
'type' => 1,

View File

@@ -57,35 +57,24 @@ class Invited extends Model
}
//下级充值推荐人收益计算
public function invited_reward($sub_user_id,$money){
//查询上级
$invited_user_id = $this->where('sub_user_id', $sub_user_id)->value('user_id');
if(!$invited_user_id){
return ['code' => 0, 'msg' => "未绑定上级用户", 'data' => null];
public function invited_reward($sub_user_id,$money,$invited_user_id){
//查询下级用户充值总金额
$sub_user_all_money = db::name('vs_user_recharge')
->where('user_id', $sub_user_id)
->where('pay_status',2)->sum('money');
if($sub_user_all_money > 1000){
return ['code' => 1, 'msg' => "下级充值金额大于1000元不需返利", 'data' => null];
}
$invited_draw_conf = get_system_config_value('invited_draw');//分成比例
$invited_draw = $invited_draw_conf / 100;
$invited_draw_money = $money * $invited_draw;
$invited_draw_money = $invited_draw_money / intval(get_system_config_value('rmb_coin_ratio')); //金币换算成钻石
//修改用户资金
$reslut = model('common/UserWallet')->change_user_money($invited_user_id, $invited_draw_money, model('common/UserWallet')::MONEYTYPEARNINGS, model('common/UserWallet')::OPERATION_INVITE_REBATE, '邀请用户充值返利');
if($reslut['code'] == 1){
//记录日志
$data = [];
$data['user_id'] = $invited_user_id;
$data['sub_user_id'] = $sub_user_id;
$data['coin'] = $money;
$data['earnings'] = $invited_draw_money;
$data['proportion'] = $invited_draw_conf;
$data['createtime'] = time();
$data['updatetime'] = time();
$res = Db::name('vs_user_invited_income_log')->insert($data);
if ($res) {
return ['code' => 1, 'msg' => "操作成功", 'data' => null];
}
}else{
return ['code' => $reslut['code'], 'msg' => $reslut['code'], 'data' => null];
//增加余额并记录日志
$wallet_update = model('api/UserWallet')->change_user_earnings_log($invited_user_id,$invited_draw_money,0,6,'邀请用户充值返利');
if(!$wallet_update){
return ['code' => 0, 'msg' => "邀请给上级返利失败", 'data' => null];
}
return ['code' => 1, 'msg' => "操作成功", 'data' => null];
}
//账单明细

View File

@@ -62,7 +62,7 @@ class Level extends Model
//获取等级
// 获取用户当前等级
$currentUserLevel = $user['charm_level'];
if($currentUserLevel == 1){
if($currentUserLevel == 0){
$level = Db::name('vs_charm_level')
->where('status', 1)
->order('level', 'asc')
@@ -152,7 +152,7 @@ class Level extends Model
//获取等级
// 获取用户当前等级
$currentUserLevel = $user['wealth_level'];
if($currentUserLevel == 1){
if($currentUserLevel == 0){
$level = Db::name('vs_wealth_level')
->where('status', 1)
->order('level', 'asc')
@@ -277,6 +277,44 @@ class Level extends Model
return $return;
}
/*
* 通过等级获取魅力等级信息
*
*/
public function get_singer_level_to_level($level){
$return = [];
$level_data = Db::name('vs_singer_level')->where('level', $level)->find();
$next_level_data = Db::name('vs_singer_level')->where('level', $level+1)->find();
if($level_data){
$return['level'] = $level_data['level'];
$return['level_name'] = $level_data['name'];
$return['exp'] = $level_data['change_value'];
$return['level_icon'] = $level_data['image'];
$return['rights_icon'] = $level_data['rights_icon'];
}else{
$return['level'] = 0;
$return['level_name'] = '';
$return['exp'] = 0;
$return['level_icon'] = '';
$return['rights_icon'] = "";
}
if($next_level_data){
$return['next_level'] = $next_level_data['level'];
$return['next_level_name'] = $next_level_data['name'];
$return['next_level_exp'] = $next_level_data['change_value'];
$return['next_level_icon'] = $next_level_data['image'];
$return['next_rights_icon'] = $next_level_data['rights_icon'];
}else{
$return['next_level'] = $level_data['level'];
$return['next_level_name'] = $level_data['name'];
$return['next_level_exp'] = $level_data['change_value'];
$return['next_level_icon'] = $level_data['image'];
$return['next_rights_icon'] = $level_data['rights_icon'];
}
return $return;
}
/*
* 用户财富/魅力等级更新
* @param uid 用ID
@@ -459,4 +497,103 @@ class Level extends Model
}
return $return;
}
//歌手等级
public function get_singer_level($uid){
//经验值兑换金币比例
$return['singer_coin_exp'] = get_system_config_value('singer_coin_exp');
//用户信息
$user = model('User')->get_user_info($uid);
//用户头像
$return['user']['user_avatar'] = $user['avatar'];
//当前用户等级信息
$singer = db::name('vs_singer')->where(['user_id' => $uid])->find();
if(empty($singer)){
$singer['level'] = 0;
$singer['exp'] = 0;
$singer['status'] = 0;
$singer['level_name'] = '非歌手';
}
$user_level = $this->get_singer_level_to_level($singer['level']);
if(!$user_level){
return ['code' => 0, 'msg' => "数据配置有误 请联系管理员", 'data' => null];
}
// 获取最后等级
$level_last = Db::name('vs_singer_level')
->where('deletetime',0)
->order('level', 'desc')
->value('level');
//用户当前经验
$return['user']['level'] = $singer['level'];
$return['user']['level_str'] = 'Lv.'.$singer['level'];
$return['user']['exp'] = $singer['exp'];
$return['user']['rights_icon'] = $user_level['rights_icon'];
if($singer['level'] ==$level_last ){
//距离下个等级需要的经验
$return['user']['next_level'] = 0;
$return['user']['next_level_str'] = "满级";
$return['user']['next_exp'] = 0;
$return['user']['next_rights_icon'] = "";
}else{
//距离下个等级需要的经验
$return['user']['next_level'] = $user_level['next_level'];
$return['user']['next_level_str'] = 'Lv.'.$return['user']['next_level'];
$next_exp = $user_level['next_level_exp'] - $singer['exp'];
$return['user']['next_exp'] = $next_exp <= 0 ? 0 : $next_exp;
$return['user']['next_rights_icon'] = $user_level['next_rights_icon'];
}
//获取等级
// 获取用户当前等级
$currentUserLevel = $singer['level'];
if($currentUserLevel == 0){
$level = Db::name('vs_singer_level')
->where('deletetime',0)
->order('level', 'asc')
->limit(3)
->select();
}elseif($currentUserLevel == $level_last){
$limit_s = $level_last-2;
if($limit_s < 0){
$limit_s = 0;
}
$level = Db::name('vs_singer_level')
->where('deletetime',0)
->order('level', 'asc')
->limit($limit_s,3)
->select();
}else{
$level = Db::name('vs_singer_level')
->where('deletetime',0)
->where('level', 'in', [$currentUserLevel - 1, $currentUserLevel, $currentUserLevel + 1])
->order('level', 'asc')
->select();
}
$return['level'] = [];
if($level) {
foreach ($level as $key => $value) {
$return['level'][$key]['level'] = $value['level'];
$return['level'][$key]['image'] = $value['image'];
$return['level'][$key]['bg_image'] = $value['bg_image'];
$return['level'][$key]['color'] = $value['color'];
$return['level'][$key]['name'] = $value['name'];
$return['level'][$key]['change_value'] = $value['change_value'];
//当前用户距离当前段位的距离
$return['level'][$key]['distance'] = $value['change_value'] - $singer['exp'];
$return['level'][$key]['rights_icon'] = $value['rights_icon'];
}
}
$level_list = Db::name('vs_singer_level')
->where('deletetime',0)
->order('level', 'asc')
->select();
$return['level_list'] = [];
$exp_s = 0;
foreach ($level_list as $key => $value) {
$return['level_list'][$key]['level'] = 'LV.'.$value['level'];
$return['level_list'][$key]['exp_str'] = $exp_s.'-'.$value['change_value'];
$return['level_list'][$key]['image'] = $value['image'];
$exp_s = $value['change_value'];
}
return ['code' => 1, 'msg' => '成功', 'data' => $return];
}
}

View File

@@ -5,7 +5,7 @@ namespace app\api\model;
use fast\Http;
use think\Db;
use think\Model;
use think\facade\Env;
use app\common\library\Token as TokenLib;
class Login extends Model
{
@@ -17,12 +17,27 @@ class Login extends Model
if ($block) {
return ['code' => 0, 'msg' => '设备已被封禁', 'data' => null];
}
$ip = request()->ip();
$block = db::name('block')->where(['type_text' => $ip,'type' => 3])->find();
//获取请求ip
$login_ip = request()->server('HTTP_X_REAL_IP') ?: request()->server('HTTP_X_FORWARDED_FOR') ?: request()->ip();
if (empty($login_ip)) {
return ['code' => 0, 'msg' => '无法获取客户端IP地址', 'data' => null];
}
$block = db::name('block')->where(['type_text' => $login_ip,'type' => 3])->find();
if ($block) {
return ['code' => 0, 'msg' => 'ip已被封禁', 'data' => null];
}
if($user_name){
$config_time = get_system_config_value('cancel_no_login');
$is_del = db::name('user')->where(['mobile' => $user_name,'delete_time' => ['<>', 0]])->find();
if ($is_del) {
if (time() - $is_del['delete_time'] < $config_time * 24 * 3600) {//30天内注销过
return V(0, '注销30天内不可操作。');
}
}
}
$data = [];
$user_code = $this->get_user_code(); //获取用户code_id 过滤靓号
@@ -30,10 +45,10 @@ class Login extends Model
$data['username'] = $user_name;
$data['mobile'] = $user_name;
$data['nickname'] = '游客'.$user_code;
$data['joinip'] = request()->ip();
$data['birthday'] = date('Y-m-d');
$data['joinip'] = $login_ip;
$data['birthday'] = '1990-01-01';
$data['avatar'] = get_system_config_value('web_site').'/data/avatar/head_pic.png';
$data['profile'] = '这个人很,什么都没写';
$data['profile'] = '这个人很佛系,什么都没写';
$data['system'] = $system;
$data['login_device'] = $login_device;
$data['createtime'] = time();
@@ -96,6 +111,11 @@ class Login extends Model
$return_res[0]['auth'] = 0;
$return_res[0]['icon'][0] = model('UserData')->user_wealth_icon($user_id);//财富图标
$return_res[0]['icon'][1] = model('UserData')->user_charm_icon($user_id);//魅力图标
//判断是否是歌手 如果是 返回等级图标
$isSinger = db::name('vs_singer')->where(['user_id' => $user_id,'status' => 1])->find();
if($isSinger){
$return_res[0]['icon'][2] = db::name('vs_singer_level')->where(['level' => $isSinger['level'],'deletetime' => 0])->value('image');//等级图标
}
return ['code' => 1, 'msg' => '登录成功', 'data' => $return_res];
}
@@ -133,7 +153,7 @@ class Login extends Model
}
}
}
$ip = request()->ip();
$ip = request()->server('HTTP_X_REAL_IP') ?: request()->server('HTTP_X_FORWARDED_FOR') ?: request()->ip();
$block = db::name('block')->where(['type_text' => $ip,'type' => 3])->find();
if ($block) {
if($block['block_time'] != 0 && $block['block_time'] <= time()){
@@ -183,9 +203,10 @@ class Login extends Model
$save_data['system'] = $system;
$save_data['login_device'] = $login_device;
$save_data['logintime'] = time();
$save_data['loginip'] = request()->ip();
$save_data['loginip'] = $ip;
$save_data['updatetime'] = time();
$save_data['prevtime'] = $user_info['logintime'];//上次登录时间
$save_data['is_online'] = 1;
$reslut = model('User')->update($save_data);
if (!$reslut) {
@@ -202,6 +223,14 @@ class Login extends Model
$return_res[0]['mobile'] = $user_info['mobile'];
$return_res[0]['icon'][0] = model('UserData')->user_wealth_icon($user_info['id']);//财富图标
$return_res[0]['icon'][1] = model('UserData')->user_charm_icon($user_info['id']);//魅力图标
//判断是否是歌手 如果是 返回等级图标
$isSinger = db::name('vs_singer')->where(['user_id' => $user_info['id'],'status' => 1])->find();
if($isSinger){
$return_res[0]['icon'][2] = db::name('vs_singer_level')->where(['level' => $isSinger['level'],'deletetime' => 0])->value('image');//等级图标
}
$return_res[0]['dress'] = model('Decorate')->user_decorate_detail($user_info['id'],1);
$return_res[0]['chat_bubble'] = model('Decorate')->user_decorate_detail($user_info['id'],9);//聊天气泡
$isAuth = 0;
if($user_info['mobile']){
@@ -219,7 +248,6 @@ class Login extends Model
$return_res[0]['is_can_chat'] = 1;
}
$return_res[0]['can_chat_money'] = $config_money;
return ['code' => 1, 'msg' => '登录成功', 'data' => $return_res];
}else{
return ['code' => 0, 'msg' => '登录失败,账号失效', 'data' => null];
@@ -363,21 +391,21 @@ class Login extends Model
if($type == 'wx'){
$openid = $userinfo['openid'];
$user_info_data = model('UserData')->where(['wx_openid' => $openid,'deletetime'=>0])->find();
$config_time = get_system_config_value('cancel_to_reset_reg');
$config_time = get_system_config_value('cancel_no_login');
if(isset($user_info_data) && $user_info_data['deletetime'] != 0 && time() - $user_info_data['deletetime'] < 86400 * $config_time){
return ['code' => 0, 'msg' => '注销后需等待'.$config_time.'天才能重新注册', 'data' => null];
}
}elseif ($type == 'ali'){
$ali_userid = $userinfo['open_id'];
$user_info_data = model('UserData')->where(['ali_userid' => $ali_userid,'deletetime'=>0])->find();
$config_time = get_system_config_value('cancel_to_reset_reg');
$config_time = get_system_config_value('cancel_no_login');
if(isset($user_info_data) && $user_info_data['deletetime'] != 0 && time() - $user_info_data['deletetime'] < 86400 * $config_time){
return ['code' => 0, 'msg' => '注销后需等待'.$config_time.'天才能重新注册', 'data' => null];
}
}elseif ($type == 'ios'){
$apple_id = $userinfo;
$user_info_data = model('UserData')->where(['apple_id' => $userinfo,'deletetime'=>0])->find();
$config_time = get_system_config_value('cancel_to_reset_reg');
$config_time = get_system_config_value('cancel_no_login');
if(isset($user_info_data) && $user_info_data['deletetime'] != 0 && time() - $user_info_data['deletetime'] < 86400 * $config_time){
return ['code' => 0, 'msg' => '注销后需等待'.$config_time.'天才能重新注册', 'data' => null];
}
@@ -402,6 +430,12 @@ class Login extends Model
$return_res[0]['auth'] = 0;
$return_res[0]['icon'][0] = model('UserData')->user_wealth_icon($user_info_data['user_id']);//财富图标
$return_res[0]['icon'][1] = model('UserData')->user_charm_icon($user_info_data['user_id']);//魅力图标
//判断是否是歌手 如果是 返回等级图标
$isSinger = db::name('vs_singer')->where(['user_id' => $user_info_data['user_id'],'status' => 1])->find();
if($isSinger){
$return_res[0]['icon'][2] = db::name('vs_singer_level')->where(['level' => $isSinger['level'],'deletetime' => 0])
->value('image');//等级图标
}
return ['code' => 1, 'msg' => '登录成功', 'data' => $return_res];
}
@@ -434,9 +468,19 @@ class Login extends Model
//退出登录
public function logout($token){
$user_info = model('UserToken')->where('token', $token)->find();
$user_info = db::name('user_token')->where('token', $token)->find();
if($user_info){
model('UserToken')->where('id', $user_info['id'])->update(['token' => 1]);
db::name('user_token')->where('id', $user_info['id'])->update(['token' => 1]);
//断线
db::name('user')->where('id',$user_info['user_id'])->update(['is_online'=>2]);
//是否在房间内
$room_id = db::name('vs_room_visitor')->where('user_id',$user_info['user_id'])->order('id desc')->value('room_id');
if($room_id){
$text['text'] = '掉线!';
$text['user_id'] = $user_info['user_id'];
$text['type'] = 2;
model('Chat')->sendMsg(1058,$room_id,$text);
}
return ['code' => 1, 'msg' => '退出成功', 'data' => null];
}else{
return ['code' => 0, 'msg' => '退出失败', 'data' => null];
@@ -444,7 +488,7 @@ class Login extends Model
}
//注销
public function cancel($token){
public function cancel($token,$system,$login_device){
$user_info = model('UserToken')->where('token', $token)->find();
//用户注册时间
$register_time = db::name('user')->where('id', $user_info['user_id'])->value('createtime');
@@ -452,40 +496,46 @@ class Login extends Model
if(time() - $register_time < 86400 * $config_time){
return ['code' => 0, 'msg' => '注册'.$config_time.'天内不能注销!', 'data' => null];
}
if($user_info){
model('UserToken')->where('id', $user_info['id'])->update(['token' => 1]);
$isstatus = model('User')->where('id', $user_info['user_id'])->update(['status' => 0]);
$isstatus = model('User')->where('id', $user_info['user_id'])->update([
'status' => 0,
'delete_time' => time(),
'login_device' => $login_device,
'system' =>$system,
'avatar' => get_system_config_value('delete_avatar'),
'nickname' => '注销用户'
]);
if($isstatus){
//查询用户所在房间
$room_list = db::name('vs_room_visitor')->where('user_id', $user_info['user_id'])->select();
if($room_list){
foreach ($room_list as &$value) {
foreach ($room_list as $value) {
model('Room')->quit_room($user_info['user_id'], $value['room_id'],$user_info['user_id']);
}
}
//删除用户
// model('Tencent')->account_delete($user_info['user_id']);
model('User')->where('id', $user_info['user_id'])->update(['delete_time' => time()]);
model('User')->where('id', $user_info['user_id'])->update(['avatar' => get_system_config_value('delete_avatar')]);
model('UserData')->where('user_id', $user_info['user_id'])->update(['deletetime' => time()]);
//查询创建的房间
$room_list = db::name('vs_room')->where('user_id', $user_info['user_id'])->select();
if($room_list){
foreach ($room_list as &$value) {
foreach ($room_list as $value) {
db::name('vs_room')->where('id', $value['id'])->update(['room_status' => 3]);
}
}
//查询绑定的手机号
$mob = db::name('user')->where('id', $user_info['user_id'])->value('mobile');
$mobile = db::name('user')->where(['mobile' => $mob,'status' => ['<>',0]])->select();
if(isset($mobile) && count($mobile) < 2){
db::name('user_auth')->where('mobile', $mob)->delete();
}
}else{
return ['code' => 0, 'msg' => '注销失败', 'data' => null];
}
//查询绑定的手机号
$mob = db::name('user')->where('id', $user_info['user_id'])->value('mobile');
$mobile = db::name('user')->where(['mobile' => $mob,'status' => ['<>',0]])->select();
if(isset($mobile) && count($mobile) < 2){
db::name('user_auth')->where('mobile', $mob)->delete();
}
// 删除这个Token使其失效
TokenLib::delete($token);
return ['code' => 1, 'msg' => '注销成功', 'data' => null];
}else{

View File

@@ -0,0 +1,207 @@
<?php
namespace app\api\model;
use app\common\controller\Push;
use app\common\service\LotteryService;
use think\Db;
use think\Exception;
use think\Log;
use think\Model;
class Lottery extends Model
{
/**
* 送礼参与抽奖接口
* @return json
*/
public function gift($send_uid, $recv_uid,$gift_id, $room_id, $num)
{
if (ceil($num) != $num) {
return ['code' => 0, 'msg' => '打赏礼物数量必须为整数', 'data' => null];
}
$toarray = explode(',',$recv_uid);
if(in_array($send_uid,$toarray)){
return ['code' => 0, 'msg' => '收礼人不能包含自己', 'data' => null];
}
//获取礼物信息
$gift_info = Db::name('vs_gift')->where(['gid'=>$gift_id])
->field('gid as gift_id,gift_name,gift_price,file_type,base_image,play_image,gift_type,label,is_public_server')->find();
$gift_info['play_image'] = '';//不要特效
//送给所有人的总价格
$all_gift_price = $gift_info['gift_price'] * $num * count($toarray);
//判断是否有足够的金币
$user_waller = db::name('user_wallet_coin')->where(['user_id'=>$send_uid])->find();
if ($user_waller['coin'] < $all_gift_price) {
return ['code' => 0, 'msg' => '用户金币不足', 'data' => null];
}
//获取送礼用户昵称
$FromUserInfo = db::name('user')->where('id',$send_uid)->field('id as user_id,nickname,avatar,sex')->find();
$FromUserInfo['icon'][0] = model('UserData')->user_wealth_icon($send_uid);//财富图标
$FromUserInfo['icon'][1] = model('UserData')->user_charm_icon($send_uid);//魅力图标
$FromUserInfo['chat_bubble'] = model('Decorate')->user_decorate_detail($send_uid,9);//聊天气泡
//送礼 开启事务
Db::startTrans();
//扣除用户金币并记录日志
// $wallet_update = model('api/GiveGift')->change_user_cion_or_earnings_log($send_uid,$all_gift_price,$room_id,1,10,'用户金币购买幸运币礼物');
$wallet_update = model('api/UserWallet')->change_user_cion_log($send_uid, $all_gift_price, $room_id, 10, '用户金币购买幸运币礼物');
if(!$wallet_update){
Db::rollback();
return ['code' => 0, 'msg' => '扣除用户金币失败', 'data' => null];
}
//用户财富等级更新
$user_level = model('api/Level')->user_level_data_update($send_uid,$all_gift_price,1,$room_id);
if(!$user_level){
Db::rollback();
return ['code' => 0, 'msg' => '用户等级更新失败', 'data' => null];
}
//送给一人礼物的总价格(扣除用户的数额)
$gift_price = $gift_info['gift_price'] * $num;
foreach ($toarray as $k => $to_id){
// 1. 记录礼物赠送
$giftRecord = [
'send_uid' => $send_uid,
'recv_uid' => $to_id,
'gift_id' => $gift_id,
'gift_gold' => $gift_price,
'recv_gold' => $gift_price /2 ,
'small_pool_add' => $gift_price /2 ,
'create_time' => time()
];
$giftId = Db::name('bb_lottery_gift_record')->insertGetId($giftRecord);
//收礼记录行为日志
$give_gift = model('api/SendGift')->change_user_give_gift_log($send_uid,$gift_id,$gift_price,$num,$to_id,2,1,0,'送幸运币');
if(!$give_gift){
Db::rollback();
return ['code' => 0, 'msg' => '送礼失败', 'data' => null];
}
//计算收礼人得益
$receiver_earnings = $gift_price /2/get_system_config_value('rmb_coin_ratio');
//增加收益并记录日志
// $receiver = model('api/GiveGift') -> change_user_cion_or_earnings_log($to_id,$receiver_earnings,$room_id,2,11,'收幸运币礼增加收益');
$receiver = model('api/UserWallet')->change_user_earnings_log($to_id,$receiver_earnings,$room_id,11,'收幸运币礼增加收益');
// //用户魅力等级更新
// $user_level = model('api/Level')->user_level_data_update($to_id,$gift_price,2,$room_id);
// if(!$user_level){
// Db::rollback();
// return ['code' => 0, 'msg' => '用户等级更新失败', 'data' => null];
// }
//增加房间幸运值
db::name('vs_room')->where(['id' => $room_id])->setInc('luck_value',$gift_price);
db::name('vs_room_luck_value')->insert( [
'room_id' => $room_id,
'send_uid' => $send_uid,
'recv_uid' => $to_id,
'gift_id' => $gift_id,
'num' => $num,
'luck_value' => $gift_price,
'createtime' => time()
]);
$ToUserInfo = Db::name('user')->where(['id' => $to_id])->field('id as user_id,nickname,avatar,sex')->find();
$ToUserInfo['icon'][0] = model('UserData')->user_wealth_icon($to_id);//财富图标
$ToUserInfo['icon'][1] = model('UserData')->user_charm_icon($to_id);//魅力图标
$ToUserInfo['charm'] = db::name('vs_room_user_charm')->where(['user_id' => $to_id,'room_id' => $room_id])->value('charm');//魅力
$text = $FromUserInfo['nickname'] . ' 送给 ' . $ToUserInfo['nickname'].' 礼物 ' .$gift_info['gift_name'].' x ' .$num;
$text = [
'FromUserInfo' => $FromUserInfo,
'ToUserInfo' => $ToUserInfo,
'GiftInfo' => $gift_info,
'gift_num' => $num,
'text' => $text
];
//聊天室推送系统消息
model('api/Chat')->sendMsg(1005,$room_id,$text);
}
Db::commit();
//计算爆币
$nums = $num * count($toarray);
$ress = $this->lottery($send_uid,$gift_info['gift_price'],$nums,$room_id,$gift_id,$FromUserInfo,$gift_info);
if($ress['code'] == 0){
return ['code' => 0, 'msg' => $ress['msg'], 'data' => null];
}
return ['code' => 1, 'msg' => '送礼成功', 'data' => null];
}
//抽奖
public function lottery($send_uid,$gift_price,$num,$room_id,$giftId,$fromUserInfo=null,$gift_info=null)
{
$big_prize_play_image = db::name('bb_lottery_config')->where(['key' => 'big_prize_play_image'])->value('value');
$small_prize_play_image = db::name('bb_lottery_config')->where(['key' => 'small_prize_play_image'])->value('value');
try {
for($i=0;$i<$num;$i++){
$gift_gold = $gift_price;
$service = new LotteryService();
$reslut = $service->handleGift($send_uid, $gift_gold, $giftId);
if ($reslut['code'] == 1) {
$result = $reslut['data'];
//(未开奖时)
if ($result['is_small_prize'] == 0) {
//不做处理
} else {//开奖
// 大奖
if ($result['is_big_prize'] == 1) {//$result['big_prize_amount'],//中奖金额
$beilv = floor($result['big_prize_amount'] / $gift_price);
// $wallet_update = model('api/GiveGift')->change_user_cion_or_earnings_log($send_uid,$result['big_prize_amount'],$room_id,1,58,'参与幸运币活动获得'.$beilv.'倍');
$wallet_update = model('api/UserWallet')->change_user_cion_log($send_uid,$result['big_prize_amount'],$room_id,58,'参与幸运币活动获得'.$beilv.'倍');
if(!$wallet_update){
return ['code' => 0, 'msg' => '流水记录失败', 'data' => null];
}
$tet['text'] = '恭喜用户'.$fromUserInfo['nickname'].'在幸运币活动中获得幸运币'.$beilv.'倍';
$tet['type'] = 1;
$tet['beilv'] = $beilv;
$tet['play_image'] = $big_prize_play_image;
} else { // 小奖 $result['small_prize_amount'],//中奖金额
$beilv = floor($result['small_prize_amount'] / $gift_price);
// $wallet_update = model('api/GiveGift')->change_user_cion_or_earnings_log($send_uid,$result['small_prize_amount'],$room_id,1,58,'参与幸运币活动获得'.$beilv.'倍');
$wallet_update = model('api/UserWallet')->change_user_cion_log($send_uid,$result['small_prize_amount'],$room_id,58,'参与幸运币活动获得'.$beilv.'倍');
if(!$wallet_update){
return ['code' => 0, 'msg' => '流水记录失败', 'data' => null];
}
$tet['text'] = '恭喜用户'.$fromUserInfo['nickname'].'在幸运币活动中获得幸运币'.$beilv.'倍';
$tet['type'] = 2;
$tet['beilv'] = $beilv;
$tet['play_image'] = $small_prize_play_image;
}
$tet['FromUserInfo'] = $fromUserInfo;
$tet['user_id'] = $send_uid;
model('api/Chat')->sendMsg(1100,$room_id,$tet);
$push = new Push($send_uid, $room_id);
$room_name = Db::name('vs_room')->where(['id' => $room_id, 'apply_status' => 2])->value('room_name');
$text = '恭喜'.$fromUserInfo['nickname'] . '在' . $room_name . '房间获得幸运币'. $beilv . '倍';
$text_list_new[] = [
'text' => $text,
'gift_picture' => $gift_info['base_image'],
'room_id' => $room_id,
'fromUserName' => $fromUserInfo['nickname'],
'toUserName' => '',
'giftName' => '',
'roomId' => $room_id,
'number' => 1,
];
$push->giftBanner($text_list_new);
}
}
}
return ['code' => 1, 'msg' => '送礼成功', 'data' => null];
} catch (Exception $e) {
Log::error('抽奖处理失败:' . $e->getMessage());
return ['code' => 0, 'msg' => $e->getMessage(), 'data' => null];
}
}
}

View File

@@ -0,0 +1,58 @@
<?php
namespace app\api\model;
use think\Db;
use think\Model;
class MarketValue extends Model
{
/*
* 身价变化
* @param int $user_id 用户id
* @param int $change_value 身价变化值
* @param int $type 0-收礼升值1-系统降身价2-使用降身卡,3-签约溢价 涨身价
* * @return array
*/
public function change($user_id,$change_value,$type){
$change_value = abs($change_value);
$before = db::name('user')->where('id',$user_id)->value('market_value');
if($type == 0 || $type == 3){
$result = db::name('user')->where('id',$user_id)->setInc('market_value',$change_value);
if($result){
//记录一条日志
db::name('vs_user_market_value_log')->insert([
'user_id' => $user_id,
'before' => $before,
'change_value' => $change_value,
'afterwards' => $before + $change_value,
'type' => $type,
'createtime' => time()
]);
}
}else{
//降身价
$change = $before-$change_value;
if($change <= 1){
$afterwards = 1;
$result = db::name('user')->where('id',$user_id)->update(['market_value' => 1]);
}else{
$afterwards = $change;
$result = db::name('user')->where('id',$user_id)->setDec('market_value',$change_value);
}
if($result){
//记录一条日志
db::name('vs_user_market_value_log')->insert([
'user_id' => $user_id,
'before' => $before,
'change_value' => $change_value,
'afterwards' => $afterwards,
'type' => $type,
'createtime' => time()
]);
}
}
return ['code' => 1, 'msg' => '成功'];
}
}

View File

@@ -0,0 +1,395 @@
<?php
namespace app\api\model;
use think\Cache;
use think\Db;
use think\Model;
use think\Session;
class Nobility extends Model
{
// 开启自动写入时间戳字段
protected $autoWriteTimestamp = 'int';
// 定义时间戳字段名
protected $createTime = 'createtime';
protected $updateTime = 'updatetime';
public static function init()
{
self::beforeWrite(function ($row) {
});
}
//爵位列表
public static function getNobilityList($user_id){
//爵位列表
$nobility_list = db::name('vs_nobility')
->field('lid,name,image,images,pay_price,renew_price,pay_coin,renew_coin,day,power_ids')
->where('delete_time', 0)
->select();
//爵位特权
$power_count = db::name('vs_nobility_power')
->field('id,name,image')
->where('delete_time', 0)
->count();
$return = [];
foreach ($nobility_list as $key => $value) {
$power_ids = explode(',', $value['power_ids']);
$return[$key]['lid'] = $value['lid'];
$return[$key]['name'] = $value['name'];
$return[$key]['image'] = $value['image'];
$return[$key]['pay_price'] = $value['pay_price'];
$return[$key]['day'] = $value['day'];
$power_list = db::name('vs_nobility_power')
->field('id,name,content,image')
->whereIn('id', $power_ids)
->where('delete_time', 0)
->select();
$return[$key]['power']['power_count'] = $power_count;
$return[$key]['power']['this_power_count'] = count($power_list);
$return[$key]['power']['count_str'] = count($power_list)."/".$power_count;
$return[$key]['power']['list'] = $power_list;
}
return ['code' => 1, 'msg' => '成功', 'data' => $return];
}
//爵位详情
public static function getNobilityInfo($user_id){
$user_info = db::name('user')
->field('id as user_id,nickname,avatar')
->where('delete_time', 0)
->where('id', $user_id)
->find();
$user_nobility_info = db::name('vs_user_nobility')
->field('id,user_id,lid,end_time')
->where('delete_time', 0)
->where(['end_time'=>['>',time()]])
->where('user_id', $user_id)
->find();
$return = [];
$return['user_info'] = $user_info; //用户信息
$return['nobility_info'] = []; //爵位信息
$return['nobility_info']['status'] = 0; //去开通
$return['nobility_info']['end_time'] = '';
if($user_nobility_info){
$nobility_info = db::name('vs_nobility')
->field('lid,name,image,images,pay_price,renew_price,pay_coin,renew_coin,day,power_ids')
->where('delete_time', 0)
->where('lid', $user_nobility_info['lid'])
->find();
$return['nobility_info']['status'] = 1; //去续费
$return['nobility_info']['end_time'] = date('Y-m-d H:i:s', $user_nobility_info['end_time']);
}
$return['nobility_info']['lid'] = $nobility_info['lid'] ?? 0;
$return['nobility_info']['name'] = $nobility_info['name'] ?? '';
$return['nobility_info']['image'] = $nobility_info['image'] ?? '';
$return['nobility_power_list'] = [];
//爵位列表
$nobility_list = db::name('vs_nobility')
->field('lid,name,power_ids,nick_name_color,nick_name_color_name')
->where('delete_time', 0)
->select();
//权限列表
$power_list = db::name('vs_nobility_power')
->field('id,name,image')
->where('delete_time', 0)
->select();
$nobility_list_zw = [
'lid' => 0,
'name' => '特权',
'power_ids' => '',
'nick_name_color' => '无',
'nick_name_color_name' => '无',
];
array_unshift($nobility_list, $nobility_list_zw);
foreach ($nobility_list as $key => &$value) {
$return['nobility_power_list'][$key] = $value;
$power_ids = explode(',', $value['power_ids']);
foreach ($power_list as $k => $v) {
if (in_array($v['id'], $power_ids)) {
$v['status'] = 1; //是
}else{
$v['status'] = 0; //否
}
$v['type'] = 1;
$v['value'] = '';
if($v['id']==2){
$v['type'] = 2;
$v['value'] = $value['nick_name_color_name'];
$v['nick_name_color'] = $value['nick_name_color'];
$v['nick_name_color_name'] = $value['nick_name_color_name'];
}
$return['nobility_power_list'][$key]['nobility_list'][$k] = $v;
}
}
return ['code' => 1, 'msg' => '成功', 'data' => $return];
}
//购买爵位
public function buyNobility($user_id,$lid){
$nobility_info = db::name('vs_nobility')
->field('lid,name,pay_price,renew_price,pay_coin,day,renew_coin')
->where('delete_time', 0)
->where('lid', $lid)
->find();
if (!$nobility_info) {
return ['code' => 0, 'msg' => '爵位不存在', 'data' => null];
}
$user_info = db::name('user')
->field('id,nickname,avatar')
->where('delete_time', 0)
->where('id', $user_id)
->find();
if (!$user_info) {
return ['code' => 0, 'msg' => '用户不存在', 'data' => null];
}
$user_nobility_info = db::name('vs_user_nobility')
->field('id,user_id,lid,end_time')
->where('delete_time', 0)
->where(['end_time'=>['>',time()]])
->where('user_id', $user_id)
->find();
if ($user_nobility_info) { //已购买过 续费
if($user_nobility_info['lid'] == $lid){//续费
$is_renew = 1;
if($user_nobility_info['end_time'] > time()){
$old_end_time = $user_nobility_info['end_time'];
}else{
$old_end_time = time();
}
$end_time = $old_end_time + $nobility_info['day'] * 86400;
//判断是否可以续费
$end_time_to_day = floor(($end_time - time()) / 86400);
if($end_time_to_day > $nobility_info['day'] * 2){
return ['code' => 0, 'msg' => '已超过2倍有效期,无需续费', 'data' => null];
}
$data = [
'end_time' => $end_time,
'updatetime' => time(),
];
$re = db::name('vs_user_nobility')->where('id', $user_nobility_info['id'])->update($data);
if (!$re) {
return ['code' => 0, 'msg' => '失败', 'data' => null];
}
}else{ //升级
$is_renew = 2;
// if($user_nobility_info['end_time'] > time()){
// $old_end_time = $user_nobility_info['end_time'];
// }else{
// $old_end_time = time();
// }
$end_time = time() + $nobility_info['day'] * 86400; //结束时间重置
$data = [
'lid' => $lid,
'user_id' => $user_id,
'end_time' => $end_time,
'createtime' => time(),
];
db::name('vs_user_nobility')->where('id', $user_nobility_info['id'])->update(['delete_time'=>time()]);
$re = db::name('vs_user_nobility')->insert($data);
if (!$re) {
return ['code' => 0, 'msg' => '失败', 'data' => null];
}
}
}else{ //未购买 新购
$is_renew = 0;
$end_time = time() + $nobility_info['day'] * 86400;
$data = [
'user_id' => $user_id,
'lid' => $lid,
'end_time' => $end_time,
'createtime' => time(),
];
$re = db::name('vs_user_nobility')->insert($data);
if (!$re) {
return ['code' => 0, 'msg' => '失败', 'data' => null];
}
}
//记录日志
$log_data = [
'user_id' => $user_id,
'lid' => $lid,
'day' => $nobility_info['day'],
'end_time' => $end_time,
'is_renew' => $is_renew,
'createtime' => time(),
];
db::name('vs_user_nobility_log')->insert($log_data);
//发放金币
if($is_renew == 1){
$pay_coin = $nobility_info['renew_coin'] ?? 0;
}elseif($is_renew ==2){
//剩余时间
$old_nobility_info = db::name('vs_nobility')
->field('pay_coin')
->where('delete_time', 0)
->where('lid', $user_nobility_info['lid'])
->find();
$surplus_time = $user_nobility_info['end_time'] - time();
if($surplus_time > 0){
//小时
$surplus_time_hour = floor($surplus_time / 3600); //向下取整
if($nobility_info['pay_coin']!=0 && $nobility_info['day']!=0){
$pay_coin = $nobility_info['pay_coin'] - bcmul($surplus_time_hour * (($old_nobility_info['pay_coin'] / $nobility_info['day']) / 24),1,2); //一小时的价格算
}
}else{
$pay_coin = $nobility_info['pay_coin'] ?? 0;
}
$pay_coin = floor($pay_coin);
}else{
$pay_coin = $nobility_info['pay_coin'] ?? 0;
}
if($pay_coin > 0){
$reslut = model('common/UserWallet')->change_user_money($user_id, $pay_coin, model('common/UserWallet')::MONEYTYPECOIN, model('common/UserWallet')::NOBILITY_PURCHASE_COIN,model('common/UserWallet')::ChangeTypeLable(model('common/UserWallet')::NOBILITY_PURCHASE_COIN));
if (!$reslut) {
return ['code' => 0, 'msg' => '失败', 'data' => null];
}
}
//发放装扮
$nobility_decorate = db::name('vs_nobility_decorate')
->field('id,did,dpid,day')
->where('delete_time', 0)
->where('lid', $lid)
->select();
if($nobility_decorate){
foreach ($nobility_decorate as $key => $value) {
model('api/Decorate')->pay_decorate($user_id,$value['did'],$value['day'],9);
}
}
//更新装备缓存
$cache_key = 'user_base_info_'.$user_id;
Cache::rm($cache_key);
return ['code' => 1, 'msg' => '成功'];
}
//购买爵位价格
public function buyNobilityPrice($user_id,$lid){
$nobility_info = db::name('vs_nobility')
->field('lid,name,image,pay_price,renew_price,day,power_ids')
->where('delete_time', 0)
->where('lid', $lid)
->find();
if (!$nobility_info) {
return ['code' => 0, 'msg' => '爵位不存在', 'data' => null];
}
$user_info = db::name('user')
->field('id,nickname,avatar')
->where('delete_time', 0)
->where('id', $user_id)
->find();
if (!$user_info) {
return ['code' => 0, 'msg' => '用户不存在', 'data' => null];
}
$user_nobility_info = db::name('vs_user_nobility')
->field('id,user_id,lid,end_time')
->where('delete_time', 0)
->where(['end_time'=>['>',time()]])
->where('user_id', $user_id)
->find();
$price = 0;
if ($user_nobility_info) { //已购买过 续费
if($user_nobility_info['lid'] == $lid){ //续费
$price = $nobility_info['renew_price'];
$end_time = $user_nobility_info['end_time'] + $nobility_info['day'] * 86400;
//判断是否可以续费
$end_time_to_day = floor(($end_time - time()) / 86400);
if($end_time_to_day > $nobility_info['day'] * 2){
return ['code' => 0, 'msg' => '已超过2倍有效期,无需续费', 'data' => null];
}
}else{ //升级
$old_nobility_info = db::name('vs_nobility')
->field('lid,name,pay_price,pay_coin,day')
->where('delete_time', 0)
->where('lid', $user_nobility_info['lid'])
->find();
$old_end_time = $user_nobility_info['end_time'];
//剩余时间
$surplus_time = $old_end_time - time();
if($surplus_time > 0){
//小时
$surplus_time_hour = floor($surplus_time / 3600); //向下取整
if($surplus_time_hour / 24 > $old_nobility_info['day']*2){
return ['code' => 0, 'msg' => '已超过2倍有效期,无法升级', 'data' => null];
// $surplus_time_hour = $old_nobility_info['day'] * 24 * 2;
}
if($nobility_info['pay_price']!=0 && $old_nobility_info['day']!=0){
$price = $nobility_info['pay_price'] - bcmul($surplus_time_hour * (($old_nobility_info['pay_price'] / $old_nobility_info['day']) / 24),1,2); //一小时的价格算
}
}else{
$price = $nobility_info['pay_price'];
}
$end_time = time() + $nobility_info['day'] * 86400;
}
}else{ //未购买 新购
$price = $nobility_info['pay_price'];
$end_time = time() + $nobility_info['day'] * 86400;
}
$power_ids = explode(',', $nobility_info['power_ids']);
$power_list = db::name('vs_nobility_power')
->field('id,content')
->where('delete_time', 0)
->where('id', 'in', $power_ids)
->select();
if(ceil($price) <= 0){
return ['code' => 0, 'msg' => "当前权限暂时无法购买此爵位,请升级更高爵位", 'data' => null];
}
$return = [
'lid' => $nobility_info['lid'],
'nobility_name' => $nobility_info['name'],
'nobility_image' => $nobility_info['image'],
'price' => ceil($price),
'pay_price' => $nobility_info['pay_price'],
'day' => $nobility_info['day'],
'power_list' => $power_list,
'end_time' => date('Y-m-d H:i:s', $end_time),
];
return ['code' => 1, 'msg' => '成功', 'data' => $return];
}
//获取用户爵位信息
public function getUserNobilityInfo($user_id){
$user_nobility_info = db::name('vs_user_nobility')
->field('id,user_id,lid,end_time')
->where('delete_time', 0)
->where('user_id', $user_id)
->where('end_time', '>=', time())
->find();
if($user_nobility_info){
$nobility_info = db::name('vs_nobility')
->field('lid,name,image,pay_price,renew_price,day,power_ids,nick_name_color,nick_name_color_name,play_image,enter_image')
->where('delete_time', 0)
->where('lid', $user_nobility_info['lid'])
->find();
//权限
$power_ids = [];
if($nobility_info){
$power_ids = explode(',', $nobility_info['power_ids']);
}
$power_list = db::name('vs_nobility_power')
->field('id,name,content')
->where('delete_time', 0)
->where('id', 'in', $power_ids)
->select();
}
$return = [
'lid' => $user_nobility_info['lid'] ?? 0,
'level' => $user_nobility_info['level'] ?? 0,
'nobility_name' => $nobility_info['name'] ?? '',
'nobility_image' => $nobility_info['image'] ?? '',
'nobility_images' => $nobility_info['images'] ?? '',
'nick_name_color' => $nobility_info['nick_name_color'] ?? '',
'nick_name_color_name' => $nobility_info['nick_name_color_name'] ?? '',
'play_image' => $nobility_info['play_image'] ?? '',
'enter_image' => $nobility_info['enter_image'] ?? '',
'end_time' => $user_nobility_info['end_time'] ?? 0,
'power_list' => $power_list ?? [],
];
return $return;
}
}

View File

@@ -41,116 +41,107 @@ class Ranking extends Model
public function ranking($ranking_type)
{
$where['a.createtime'] = ['between', [$this->begin_time, $this->end_time]];
$my_ranking = db::name('user')
->field('user_code,avatar,nickname,id as user_id,user_code,sex')
->where('id',$this->user_id)->find();
$my_ranking['icon'][0] = model('UserData')->user_wealth_icon($my_ranking['user_id']);//财富图标
$my_ranking['total'] = 0;
$my_ranking['rank'] = -1;
$my_ranking['diff'] = 0;
if($ranking_type == 1){//1财富榜2魅力榜
$lists = db::name('vs_give_gift')->alias('a')
->join('user b', 'a.user_id = b.id')
->field('a.user_id,b.nickname,b.avatar,b.user_code,sum(a.total_price) * 10 as total')
->where($where)
->order('total desc')
->group('a.user_id')
// ->page($this->page, $this->page_limit)
->select();
$params['start_time']=$this->begin_time;
$params['end_time']=$this->end_time;
if($ranking_type == 1){//1财富榜
$lists = model('GiveGiftBases')->getGiftRanking($params,1);
//把$lists 根据total倒序并只取前20名
usort($lists, function($a, $b) {
return $b['total'] <=> $a['total']; // 按total降序排序
});
$lists = array_slice($lists, 0, 20); // 取前20名
if($lists){
$my_ranking = [];
foreach ($lists as $key => &$value) {
$lists[$key]['icon'][0] = model('UserData')->user_wealth_icon($value['user_id']);//财富图标
$lists[$key]['icon'][1] = model('UserData')->user_charm_icon($value['user_id']);//魅力图标
$value['total'] = $value['total'] * 10;
$value['nickname'] = db::name('user')->where('id',$value['user_id'])->value('nickname');
$value['user_code'] = db::name('user')->where('id',$value['user_id'])->value('user_code');
$value['avatar'] = db::name('user')->where('id',$value['user_id'])->value('avatar');
$lists[$key]['rank'] = $key + 1;
if ($this->user_id == $value['user_id']) {
$my_ranking = $lists[$key];
$my_ranking['diff'] = $key == 0 ? 0 : ($lists[$key - 1]['total'] - $value['total']);
}
}
}
if (!$my_ranking && $lists && defined('UID')) {
$my_ranking_data = db::name('vs_give_gift')->alias('a')
->join('user b', 'a.user_id = b.id')
->field('a.user_id,b.nickname,b.avatar,b.user_code,sum(a.total_price) * 10 as total')
->where($where)
->where('a.user_id',$this->user_id)
->page($this->page, $this->page_limit)
->select();
$my_ranking_data['icon'][0] = model('UserData')->user_wealth_icon($my_ranking_data['user_id']);//财富图标
$my_ranking_data['icon'][1] = model('UserData')->user_charm_icon($my_ranking_data['user_id']);//魅力图标
$lists_last_number = $lists[count($lists) - 1]['total'] ?? 0;
//自己不在前20名
if (!$my_ranking) {
$lists_last_number = $lists[count($lists) - 1]['total'] ?? 0;
//获取自己的送礼记录
$params['user_id'] = $this->user_id;
$my_ranking_datas = model('GiveGiftBases')->getUserStatistics($params,1);
if (!isset($my_ranking_data['user_id']) || !$my_ranking_data['user_id']) {
$my_ranking = db::name('user')
->field('user_code,avatar,nickname,id as user_id,user_code,sex')
->where('id',$this->user_id)->find();
$my_ranking['icon'][0] = model('UserData')->user_wealth_icon($my_ranking['user_id']);//财富图标
$my_ranking['total'] = 0;
$my_ranking['user_id'] = $my_ranking_datas['user_id'];
$my_ranking['total'] = $my_ranking_datas['total_price']??0;
$my_ranking['nickanme'] = db::name('user')->where('id',$this->user_id)->value('nickname');
$my_ranking['user_code'] = db::name('user')->where('id',$this->user_id)->value('user_code');
$my_ranking['avatar'] = db::name('user')->where('id',$this->user_id)->value('avatar');
$my_ranking['rank'] = -1;
$my_ranking['diff'] = numberFormat($lists_last_number);
} else {
$my_ranking = $my_ranking_data;
$my_ranking['rank'] = -1;
$my_ranking['total'] = numberFormat($my_ranking['total']);
$my_ranking['diff'] = numberFormat($lists_last_number - ($my_ranking_data['total'] ?: 0));
$my_ranking['diff'] = numberFormat($lists_last_number - ($my_ranking['total'] ?: 0));
}
}else{
$my_ranking = db::name('user')
->field('user_code,avatar,nickname,id as user_id,sex')
->where('id',$this->user_id)->find();
$my_ranking['total'] = 0;
$my_ranking['rank'] = -1;
$my_ranking['diff'] = 0;
}
//2魅力榜
}else{
$lists = db::name('vs_give_gift')->alias('a')
->join('user b', 'a.gift_user = b.id')
->field('a.gift_user as user_id,b.nickname,b.avatar,b.user_code,sum(a.total_price) * 10 as total')
->where($where)
->order('total desc')
->group('a.gift_user')
// ->page($this->page, $this->page_limit)
->select();
$lists = model('GiveGiftBases')->getGiftRanking($params,2);
//把$lists 根据total倒序并只取前20名
usort($lists, function($a, $b) {
return $b['total'] <=> $a['total']; // 按total降序排序
});
$lists = array_slice($lists, 0, 20); // 取前20名
if($lists){
$my_ranking = [];
foreach ($lists as $key => &$value) {
$lists[$key]['icon'][0] = model('UserData')->user_wealth_icon($value['user_id']);//财富图标
$lists[$key]['icon'][1] = model('UserData')->user_charm_icon($value['user_id']);//魅力图标
$value['nickname'] = db::name('user')->where('id',$value['gift_user'])->value('nickname');
$value['user_code'] = db::name('user')->where('id',$value['gift_user'])->value('user_code');
$value['avatar'] = db::name('user')->where('id',$value['gift_user'])->value('avatar');
$value['user_id'] = $value['gift_user'];
$lists[$key]['rank'] = $key + 1;
if ($this->user_id == $value['user_id']) {
if ($this->user_id == $value['gift_user']) {
$my_ranking = $lists[$key];
$my_ranking['diff'] = $key == 0 ? 0 : ($lists[$key - 1]['total'] - $value['total']);
}
}
}
if (!$my_ranking && $lists && defined('UID')) {
$my_ranking_data = db::name('vs_give_gift')->alias('a')
->join('user b', 'a.gift_user = b.id')
->field('a.gift_user as user_id,b.nickname,b.avatar,b.user_code,sum(a.total_price) * 10 as total')
->where($where)
->where('a.gift_user',$this->user_id)
->select();
//自己不在前20名
if (!$my_ranking) {
$lists_last_number = $lists[count($lists) - 1]['total'] ?? 0;
//获取自己的收礼记录
$params['gift_user'] = $this->user_id;
$my_ranking_datas = model('GiveGiftBases')->getUserStatistics($params,2);
$my_ranking_data['icon'][0] = model('UserData')->user_wealth_icon($my_ranking_data['user_id']);//财富图标
$my_ranking_data['icon'][1] = model('UserData')->user_charm_icon($my_ranking_data['user_id']);//魅力图标
$lists_last_number = $lists[count($lists) - 1]['total'] ?? 0;
if (!isset($my_ranking_data['user_id']) || !$my_ranking_data['user_id']) {
$my_ranking = db::name('user')
->field('user_code,avatar,nickname,id as user_id,user_code,sex')
->where('id',$this->user_id)->find();
$my_ranking['icon'][0] = model('UserData')->user_wealth_icon($my_ranking['user_id']);//财富图标
$my_ranking['total'] = 0;
$my_ranking['user_id'] = $my_ranking_datas['user_id'];
$my_ranking['total'] = $my_ranking_datas['total_price']??0;
$my_ranking['nickname'] = db::name('user')->where('id',$this->user_id)->value('nickname');
$my_ranking['user_code'] = db::name('user')->where('id',$this->user_id)->value('user_code');
$my_ranking['avatar'] = db::name('user')->where('id',$this->user_id)->value('avatar');
$my_ranking['rank'] = -1;
$my_ranking['diff'] = numberFormat($lists_last_number);
} else {
$my_ranking = $my_ranking_data;
$my_ranking['rank'] = -1;
$my_ranking['total'] = numberFormat($my_ranking['total']);
$my_ranking['diff'] = numberFormat($lists_last_number - ($my_ranking_data['total'] ?: 0));
$my_ranking['diff'] = numberFormat($lists_last_number - ($my_ranking['total'] ?: 0));
}
}else{
$my_ranking = db::name('user')
->field('user_code,avatar,nickname,id as user_id,sex')
->where('id',$this->user_id)->find();
$my_ranking['total'] = 0;
$my_ranking['rank'] = -1;
$my_ranking['diff'] = 0;
}
}
//截取20条
$lists = array_slice($lists,0,20);
$data = [
'my_ranking' => $my_ranking,
'lists' => $lists
@@ -159,194 +150,55 @@ class Ranking extends Model
return ['code'=>1,'msg'=>'获取成功','data'=>$data];
}
//房间榜
public function room_ranking()
{
//金币与魅力比例
$ratio = get_system_config_value('coin_charm_exp');
$where['a.createtime'] = ['between', [$this->begin_time, $this->end_time]];
$where['b.type_id'] = ['<>', 6];
$where['b.room_status'] = 1;
$field = ['sum(a.total_price) *'.$ratio.' as total,b.room_name,a.from_id as room_id,b.room_cover,b.room_number'];
$lists = db::name('vs_give_gift')->alias('a')
->join('vs_room b','a.from_id = b.id','left')
->where($where)->field($field)->group('a.from_id')
->order('total desc')
// ->page($this->page, $this->page_limit)
->select();
$my_ranking = null;
if($lists){
//获取当前用户的房间id
$myRoom = db::name('vs_room')->where(['user_id' => UID ,'room_status' => 1])->find();
if($myRoom){
foreach ($lists as $key => $value) {
$lists[$key]['rank'] = $key + 1;
if ($myRoom['id'] == $value['room_id']) {
$my_ranking = $lists[$key];
$my_ranking['diff'] = $key == 0 ? 0 : ($lists[$key - 1]['total'] - $value['total']);
}
// $lists[$key]['total'] = numberFormat($value['total']);
}
//时间转为天
$begin_time = date('Y-m-d',$this->begin_time);
$end_time = date('Y-m-d',$this->end_time);
if (!$my_ranking && $lists && defined('UID')) {
$where1['a.createtime'] = ['between', [$this->begin_time, $this->end_time]];
$where1['b.type_id'] = ['<>', 6];
$my_ranking_data = db::name('vs_give_gift')->alias('a')
->join('vs_room b','a.from_id = b.id','left')
->where(['a.from_id' => $myRoom['id']])
->where($where1)
->field('a.from_id as room_id,sum(a.total_price) as total,b.room_name,b.room_cover,b.room_number')->find();
$lists_last_number = $lists[count($lists) - 1]['total'] ?? 0;
$diff = numberFormat($lists_last_number - ($my_ranking_data['total'] ?: 0));
$diff = $diff<=0 ? 0 : $diff;
$my_ranking['rank'] = -1;
$my_ranking['total'] = numberFormat($my_ranking_data['total']);
$my_ranking['diff'] = $diff;
$my_ranking['room_name'] = $my_ranking_data['room_name'];
$my_ranking['room_cover'] = $my_ranking_data['room_cover'];
if(!$my_ranking_data['room_name']){
$my_ranking['rank'] = -1;
$my_ranking['total'] = 0;
$my_ranking['diff'] = $diff;
$my_ranking['room_name'] = $myRoom['room_name'];
$my_ranking['room_cover'] = $myRoom['room_cover'];
}
}
}else{
foreach ($lists as $key => $value) {
$lists[$key]['rank'] = $key + 1;
}
$lists_last_number = $lists[count($lists) - 1]['total'] ?? 0;
//获取当前用户的房间id
$myRoom = db::name('vs_room')->where(['user_id' => UID ,'room_status' => 1])->find();
if($myRoom){
$my_ranking['room_name'] = $myRoom['room_name'];
$my_ranking['room_cover'] = $myRoom['room_cover'];
$my_ranking['total'] = 0;
$my_ranking['rank'] = -1;
$my_ranking['diff'] = numberFormat($lists_last_number);
}else{
$my_ranking['room_name'] = '';
$my_ranking['room_cover'] = '';
$my_ranking['total'] = 0;
$my_ranking['rank'] = -1;
$my_ranking['diff'] = numberFormat($lists_last_number);
}
}
}else{
//获取当前用户的房间id
$myRoom = db::name('vs_room')->where(['user_id' => UID ,'room_status' => 1])->find();
//获取当前用户的房间id
$myRoom = db::name('vs_room')->where(['user_id' => UID ,'room_status' => 1])->find();
if($myRoom){
$my_ranking['rank'] = -1;
$my_ranking['total'] = 0;
$totla = db::name('room_daily_income')
->where(['room_id' => $myRoom['id'],'date' => ['between', [$begin_time, $end_time]]])->sum('income')??0 ;
$my_ranking['total'] = $totla * $ratio;
$my_ranking['diff'] = 0;
$my_ranking['room_name'] = $myRoom['room_name'];
$my_ranking['room_cover'] = $myRoom['room_cover'];
}
//截取20条
$lists = array_slice($lists,0,20);
$data = [
'my_ranking' => $my_ranking,
'lists' => $lists
];
return ['code'=>1,'msg'=>'获取成功','data'=>$data];
}
//公会榜
public function guild_ranking()
{
$where['createtime'] = ['between', [$this->begin_time, $this->end_time]];
//所有工会
$guilds = db::name('vs_guild')->where(['status' => 1])->select();
if($guilds){
foreach ($guilds as $k=>$value){
$total = 0;
$roomids[$k] = db::name('vs_guild_user')->where(['guild_id' => $value['id']])->field('room_id')->select();
if($roomids[$k]){
foreach ($roomids[$k] as $key => $value1){
$toomType = db::name('vs_room')->where(['id' => $value1['room_id']])->where($where)->value('type_id');
if($toomType == 6){
continue;
}
$total += db::name('vs_give_gift')->where(['from_id' => $value1['room_id']])->sum('total_price');
}
}
$guilds[$k]['total'] = $total;
}
//剔除$guilds[$k]['total'] = 0的
$guilds = array_filter($guilds, function ($value) {
return $value['total'] > 0;
});
//根据$guilds[$k]['total']排序
array_multisort(array_column($guilds, 'total'), SORT_DESC, $guilds);
}else{
$myRoom['id'] = 0;
$my_ranking['rank'] = -1;
$my_ranking['total'] = 0;
$my_ranking['diff'] = 0;
$my_ranking['room_name'] = '';
$my_ranking['room_cover'] = '';
}
$lists = $guilds ;
// $my_ranking = null;
$my_ranking['guild_name'] = '';
$my_ranking['cover'] = '';
$my_ranking['total'] = 0;
$my_ranking['rank'] = -1;
$my_ranking['diff'] = 0;
$lists = db::name('room_daily_income')->alias('a')
->join('vs_room b','a.room_id = b.id','left')
->field('a.room_id,sum(a.income) * ' . $ratio . ' as total,b.room_name,b.room_cover,b.room_number')
->where(['a.date' => ['between', [$begin_time, $end_time]]])
->group('a.room_id')
->order('total desc')
->limit(20)
->select();
// var_dump($lists);exit;
if($lists){
//获取当前用户的工会
$myGuild = db::name('vs_guild_user')->where(['user_id' => UID])->find();
if($myGuild){
foreach ($lists as $key => $value) {
$lists[$key]['rank'] = $key + 1;
// $lists[$key]['total'] = numberFormat($value['total']);
if ($myGuild['guild_id'] == $value['id']) {
$my_ranking = $lists[$key];
$my_ranking['diff'] = $key == 0 ? 0 : ($lists[$key - 1]['total'] - $value['total']);
}
}
if (!$my_ranking && $lists && defined('UID')) {
$my_rankings = null;
//当前工会的所有房间
$myguildroom = db::name('vs_guild_user')->where(['guild_id' => $myGuild['guild_id']])->field('room_id')->select();
foreach ($myguildroom as $key => $gvalue1){
$my_rankings['total'] += db::name('vs_give_gift')->where(['from_id' => $gvalue1['room_id']])->where($where)->sum('total_price');
}
$lists_last_number = $lists[count($lists) - 1]['total'] ?? 0;
$diff = numberFormat($lists_last_number - ($my_rankings['total'] ?: 0));
$diff = $diff<=0 ? 0 : $diff;
$my_ranking['rank'] = -1;
$my_ranking['total'] = numberFormat($my_rankings['total']);
$my_ranking['diff'] = $diff;
$my_ranking['guild_name'] = $myGuild['room_name'];
$my_ranking['cover'] = $myGuild['cover'];
if(!$my_rankings){
$my_ranking['rank'] = -1;
$my_ranking['total'] = 0;
$my_ranking['diff'] = $diff;
$my_ranking['guild_name'] = '';
$my_ranking['cover'] = '';
}
}
}else{
foreach ($lists as $key => $value) {
$lists[$key]['rank'] = $key + 1;
}
$lists_last_number = $lists[count($lists) - 1]['total'] ?? 0;
//获取当前用户所在工会
$myGuild = db::name('vs_guild_user')->where(['user_id' => UID])->find();
if($myGuild){
$my_ranking['guild_name'] = db::name('vs_guild')->where(['id' => $myGuild['guild_id']])->value('guild_name');
$my_ranking['cover'] = db::name('vs_guild')->where(['id' => $myGuild['guild_id']])->value('cover');
$my_ranking['total'] = 0;
$my_ranking['rank'] = -1;
$my_ranking['diff'] = numberFormat($lists_last_number);
}else{
$my_ranking['guild_name'] = '';
$my_ranking['cover'] = '';
$my_ranking['total'] = 0;
$my_ranking['rank'] = -1;
$my_ranking['diff'] = numberFormat($lists_last_number);
foreach ($lists as $key => $value) {
$lists[$key]['rank'] = $key + 1;
if ($myRoom['id'] == $value['room_id']) {
$my_ranking = $lists[$key];
$my_ranking['diff'] = $key == 0 ? 0 : ($lists[$key - 1]['total'] - $value['total']);
}
}
}
$data = [
'my_ranking' => $my_ranking,
'lists' => $lists
@@ -354,76 +206,51 @@ class Ranking extends Model
return ['code'=>1,'msg'=>'获取成功','data'=>$data];
}
//真爱榜
public function love_ranking()
public function love_rankings()
{
$where['c.createtime'] = ['between', [$this->begin_time, $this->end_time]];
$where['a.status'] = 1;
$field = ['a.user_id,a.user_id1,sum(c.total_price) as total,a.room_id,b.room_cover,b.room_intro as room_name'];
$lists = db::name('vs_room_cp_movie')->alias('a')
->join('vs_room b','a.room_id = b.id','left')
->join('vs_give_gift c','a.room_id = c.from_id','left')
->where($where)->field($field)->group('a.room_id')
->order('total desc')
$lists = db::name('user_cp_zone')->alias('a')
->join('user b','a.user_id1 = b.id','left')
->join('user c','a.user_id2 = c.id','left')
->where(['a.status' => 1])
->field('a.exp,a.id,a.level as total,a.user_id1,a.user_id2 as user_id,b.nickname as nickname1,c.nickname as nickname,b.avatar as user_avatar1,c.avatar as user_avatar')
->order('a.level desc')
->page($this->page, $this->page_limit)
->select();
$my_ranking = null;
if($lists){
//获取当前用户的房间id $this->user_id
$myRoom = db::name('vs_room_cp_movie')->where(['user_id' => UID ,'status' => 1])->find();
$myRoom = db::name('user_cp_zone')->where(['user_id1' => UID ,'status' => 1])->find();
if(!$myRoom){
$myRoom = db::name('vs_room_cp_movie')->where(['user_id1' => UID ,'status' => 1])->find();
$myRoom = db::name('user_cp_zone')->where(['user_id2' => UID ,'status' => 1])->find();
}
if($myRoom){
foreach ($lists as $key => $value) {
$lists[$key]['rank'] = $key + 1;
$lists[$key]['user_avatar'] = db::name('user')->where(['id' => $value['user_id']])->value('avatar');
$lists[$key]['user_avatar1'] = db::name('user')->where(['id' => $value['user_id1']])->value('avatar');
$lists[$key]['nickname'] = db::name('user')->where(['id' => $value['user_id']])->value('nickname');
$lists[$key]['nickname1'] = db::name('user')->where(['id' => $value['user_id1']])->value('nickname');
if ($myRoom['room_id'] == $value['room_id']) {
if ($myRoom['id'] == $value['id']) {
$my_ranking = $lists[$key];
$my_ranking['diff'] = $key == 0 ? 0 : ($lists[$key - 1]['total'] - $value['total']);
}
}
if (!$my_ranking && $lists && defined('UID')) {
$where1['c.createtime'] = ['between', [$this->begin_time, $this->end_time]];
$where1['a.status'] = 1;
$my_ranking_data = db::name('vs_room_cp_movie')->alias('a')
->join('vs_room b','a.room_id = b.id','left')
->join('vs_give_gift c','a.room_id = c.from_id','left')
->where(['c.from_id' => $myRoom['room_id']])
->where($where1)
->field('a.user_id,a.user_id1,a.room_id,sum(c.total_price) as total,b.room_intro as room_name,b.room_cover')->find();
$lists_last_number = $lists[count($lists) - 1]['total'] ?? 0;
$diff = numberFormat($lists_last_number - ($my_ranking_data['total'] ?: 0));
$diff = $diff<=0 ? 0 : $diff;
$my_ranking['rank'] = -1;
$my_ranking['total'] = numberFormat($my_ranking_data['total']);
$my_ranking['diff'] = $diff;
$my_ranking['room_name'] = $my_ranking_data['room_name'];
$my_ranking['room_cover'] = $my_ranking_data['room_cover'];
$my_ranking['user_avatar'] = db::name('user')->where(['id' => $my_ranking_data['user_id']])->value('avatar');
$my_ranking['user_avatar1'] = db::name('user')->where(['id' => $my_ranking_data['user_id1']])->value('avatar');
if(!$my_ranking_data['room_name']){
$my_ranking['rank'] = -1;
$my_ranking['total'] = 0;
$my_ranking['diff'] = $diff;
$my_ranking['room_name'] = '';
$my_ranking['room_cover'] = '';
$my_ranking['diff'] = $key == 0 ? 0 : ($lists[$key - 1]['exp'] - $value['exp']);
}
}
}else{
foreach ($lists as $key => $value) {
$lists[$key]['rank'] = $key + 1;
$lists[$key]['user_avatar'] = db::name('user')->where(['id' => $value['user_id']])->value('avatar');
$lists[$key]['user_avatar1'] = db::name('user')->where(['id' => $value['user_id1']])->value('avatar');
$lists[$key]['nickname'] = db::name('user')->where(['id' => $value['user_id']])->value('nickname');
$lists[$key]['nickname1'] = db::name('user')->where(['id' => $value['user_id1']])->value('nickname');
}
}
}else{
$my_ranking = [
'user_id' => UID,
'user_id1' => 0,
'nickname' => db::name('user')->where(['id' => UID])->value('nickname'),
'nickname1' => '',
'user_avatar' => db::name('user')->where(['id' => UID])->value('avatar'),
'user_avatar1' => '',
'exp' => 0,
'diff' => 0,
'rank' => -1,
'total' => 0
];
}
$data = [
'my_ranking' => $my_ranking,

File diff suppressed because it is too large Load Diff

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