This commit is contained in:
manghe 2025-04-07 04:46:05 +00:00
parent 757aaa347d
commit be0a485dea
6 changed files with 107 additions and 21 deletions

View File

@ -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()]);
}
}
}

View File

@ -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');

View File

@ -101,7 +101,8 @@
<div>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="clearMobile">清空手机号</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="clearWechat">重置微信登录</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="clearUid">清空UID</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="clearUid">清空UID</a><br />
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="resetSign">重置签到数据</a>
</div>
</div>
</script>
@ -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);
});
}
});
</script>

View File

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

View File

@ -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;
}
/**

View File

@ -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'])) {