From be0a485deaa40abd9fbd363d350eec2eb7d95a57 Mon Sep 17 00:00:00 2001 From: manghe Date: Mon, 7 Apr 2025 04:46:05 +0000 Subject: [PATCH] 123 --- app/admin/controller/User.php | 34 +++++++++++++++++++++++ app/admin/route/app.php | 1 + app/admin/view/User/index.html | 26 +++++++++++++++++- app/api/controller/Sign.php | 20 +++++++++----- app/common/model/UserSign.php | 40 +++++++++++++++++++++------- app/common/service/RewardService.php | 7 +++-- 6 files changed, 107 insertions(+), 21 deletions(-) diff --git a/app/admin/controller/User.php b/app/admin/controller/User.php index 2cd88c6..8e5502a 100755 --- a/app/admin/controller/User.php +++ b/app/admin/controller/User.php @@ -1371,4 +1371,38 @@ class User extends Base 'end_date' => date('Y-m-d'), ]); } + + /** + * 重置用户签到数据 + */ + public function resetUserSign(Request $request) + { + $id = $request->param('id'); + $user = UserModel::find($id); + if (!$user) { + return json(['status' => 0, 'msg' => '用户不存在']); + } + + // 计算上一天的日期 + $yesterday = date('Y-m-d', strtotime('-1 day')); + + try { + // 更新用户的签到数据 + $result = \app\common\model\UserSign::where('user_id', $id) + ->where('sign_date', date('Y-m-d')) + ->update([ + 'sign_date' => $yesterday, + 'update_time' => time() + ]); + + if ($result) { + return json(['status' => 1, 'msg' => '签到数据重置成功']); + } else { + // 如果没有今日签到记录 + return json(['status' => 1, 'msg' => '用户今日未签到或已重置']); + } + } catch (\Exception $e) { + return json(['status' => 0, 'msg' => '重置失败:' . $e->getMessage()]); + } + } } diff --git a/app/admin/route/app.php b/app/admin/route/app.php index 654bee3..c9af307 100755 --- a/app/admin/route/app.php +++ b/app/admin/route/app.php @@ -61,6 +61,7 @@ Route::rule('user_score_detail_data', 'User/user_score_detail_data', 'GET|POST') Route::rule('usermobileclear', 'User/usermobileclear', 'POST');//清空手机号 Route::rule('userwxclear', 'User/userwxclear', 'POST');//清空微信登录数据 Route::rule('userUidClear', 'User/userUidClear', 'POST');//清空UID +Route::rule('resetUserSign', 'User/resetUserSign', 'POST');//重置用户签到数据 // 添加用户登录统计路由 Route::rule('user_loginStat', 'user/loginStat'); diff --git a/app/admin/view/User/index.html b/app/admin/view/User/index.html index 22c30e0..a8b735d 100755 --- a/app/admin/view/User/index.html +++ b/app/admin/view/User/index.html @@ -101,7 +101,8 @@
清空手机号 重置微信登录 - 清空UID + 清空UID
+ 重置签到数据
@@ -357,6 +358,9 @@ maxmin: true }); break; + case 'resetSign': + resetUserSign(data.id, data.nickname); + break; } }); @@ -511,6 +515,26 @@ layer.close(index); }); } + + // 重置用户签到数据 + function resetUserSign(id, username) { + layer.confirm('确认要重置' + username + '的签到数据吗?重置后将把签到日期设置为上一天!', { + icon: 2, + title: '重置签到数据' + }, function (index) { + $.post('{:url("/admin/resetUserSign")}', { + id: id + }, function (res) { + if (res.status === 1) { + layer.msg(res.msg, { icon: 1 }); + table.reload('LAY-user-table'); + } else { + layer.msg(res.msg, { icon: 2 }); + } + }); + layer.close(index); + }); + } }); diff --git a/app/api/controller/Sign.php b/app/api/controller/Sign.php index b45bf99..d6c3be6 100644 --- a/app/api/controller/Sign.php +++ b/app/api/controller/Sign.php @@ -44,7 +44,7 @@ class Sign extends Base //获取当天开始和结束时间 $today_start = strtotime(date('Y-m-d 00:00:00')); $today_end = strtotime(date('Y-m-d 23:59:59')); - $user_consumption = CommonService::getUserConsumptionByTimeRange($user_id, $today_start, $today_end); + $user_consumption = CommonService::getUserConsumptionByTimeRange($user_id, $today_start, $today_end); if ($user_consumption) { if ($user_consumption['total_consumed'] >= $app_setting['sign_in_spend_limit']) { $is_sign = true; @@ -115,7 +115,10 @@ class Sign extends Base ->order('sort asc') ->select() ->toArray(); - + $signDays_1 = $signDays; + if (!$is_sign) { + $signDays_1 = $signDays + 1; + } // 处理配置关联的奖励信息 $nowDay = date('j'); // 每日签到配置 @@ -139,11 +142,14 @@ class Sign extends Base if ($signDays >= $day) { $config['is_sign'] = 2; } else { - if (($signDays + 1) == $day) { - $config['is_sign'] = 1; - } else { - $config['is_sign'] = 0; - } + $config['is_sign'] = 0; + + } + + if ( $signDays_1 == $day) { + $config['is_sign_day'] = 1; + } else { + $config['is_sign_day'] = 0; } } diff --git a/app/common/model/UserSign.php b/app/common/model/UserSign.php index 5b30aee..7fbde15 100755 --- a/app/common/model/UserSign.php +++ b/app/common/model/UserSign.php @@ -67,12 +67,29 @@ class UserSign extends Base self::insert($data); $day_count = self::getMonthSignDays($user_id); + $res[] = []; //处理每日签到奖励 - self::processSignRewards($user_id, 1, $day_count); - // 处理累计签到奖励 - self::processSignRewards($user_id, 2, $day_count); + $res1 = self::processSignRewards($user_id, 1, $day_count); + $msg = ''; + if ($res1) { - return ['status' => true, 'msg' => "签到成功", 'data' => ['days' => $day_count]]; + foreach ($res1 as $item) { + $msg = $msg .'每日签到获得:'. $item['msg'] . ','; + } + } + // 处理累计签到奖励 + $res2 = self::processSignRewards($user_id, 2, $day_count); + if ($res2) { + $res[] = $res2; + foreach ($res2 as $item) { + $msg = $msg .'累计签到获得:'. $item['msg'] . ','; + } + } + if ($msg) { + $msg = substr($msg, 0, -1); + } + + return ['status' => true, 'msg' => $msg, 'data' => $day_count]; } /** @@ -83,16 +100,21 @@ class UserSign extends Base */ protected static function processSignRewards($user_id, $type, $day) { - + // 查找符合条件的配置 - $reward = SignConfig::where('type', '=',$type) - ->where('status','=', 1) - ->where('day', '=',$day) + $reward = SignConfig::where('type', '=', $type) + ->where('status', '=', 1) + ->where('day', '=', $day) ->field('reward_id')->find(); + $res = []; if ($reward) { - RewardService::sendReward($user_id, $reward['reward_id'], $type == 1 ? "签到奖励" : "累计签到奖励"); + $res = RewardService::sendReward($user_id, $reward['reward_id'], $type == 1 ? "签到奖励" : "累计签到奖励"); + if ($res && $res['status']) { + return $res['data']; + } } + return null; } /** diff --git a/app/common/service/RewardService.php b/app/common/service/RewardService.php index f6f8270..5190623 100644 --- a/app/common/service/RewardService.php +++ b/app/common/service/RewardService.php @@ -37,7 +37,6 @@ class RewardService if (empty($user)) { return ['status' => false, 'msg' => '用户不存在']; } - foreach ($rewards as $reward) { $res = self::sendSingleReward($user_id, $reward, $source); $result[] = $res; @@ -62,20 +61,20 @@ class RewardService case 1: // 钻石 $res = User::changeMoney($user_id, $reward['reward_value'], 6, $source); $result['status'] = !empty($res); - $result['msg'] = $result['status'] ? '钻石发放成功' : '钻石发放失败'; + $result['msg'] = $result['status'] ? '获得钻石*'.$reward['reward_value'] : '钻石发放失败'; break; case 2: // 货币1 $res = User::changeIntegral($user_id, $reward['reward_value'], 6, $source); $result['status'] = !empty($res); - $result['msg'] = $result['status'] ? 'UU币发放成功' : 'UU币发放失败'; + $result['msg'] = $result['status'] ? '获得UU币*'.$reward['reward_value'] : 'UU币发放失败'; break; case 3: // 货币2 $res = User::changeMoney2($user_id, $reward['reward_value'], 6, $source); $result['status'] = !empty($res); - $result['msg'] = $result['status'] ? '达达券发放成功' : '达达券发放失败'; + $result['msg'] = $result['status'] ? '获得达达券*'.$reward['reward_value'] : '达达券发放失败'; break; case 4: // 优惠券 if (!empty($reward['reward_extend'])) {