mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2025-12-06 19:53:27 +08:00
【修复】修复日历签到连续签到的统计错误的问题,增加用户签到redis锁。
This commit is contained in:
@@ -67,15 +67,45 @@ namespace CoreCms.Net.Services
|
||||
var jm = new AdminUiCallBack();
|
||||
try
|
||||
{
|
||||
var dt = DateTime.Now;
|
||||
var dtStr = dt.ToString("yyyy-MM-dd");
|
||||
var checkDataStr = entity.checkInData.ToString("yyyy-MM-dd");
|
||||
if (dtStr != checkDataStr)
|
||||
{
|
||||
jm.msg = "签到日期不符,签到提交日期非今日";
|
||||
return jm;
|
||||
}
|
||||
|
||||
var id = await _dal.InsertAsync(entity);
|
||||
|
||||
var userCheckIn = await _userCheckInServices.QueryByClauseAsync(p => p.userId == entity.userId);
|
||||
if (userCheckIn != null)
|
||||
{
|
||||
userCheckIn.continuousCheckInCount += 1;
|
||||
//累计签到
|
||||
userCheckIn.cumulativeCheckInCount += 1;
|
||||
|
||||
//判断是否是连续签到
|
||||
//判断是否是连续签到逻辑是:获取用户最后一次的签到记录,检查查询到的签到记录的checkInData是不是昨天的checkInData,是的话就是连续签到,continuousCheckInCount++,不是的话就是断签了,continuousCheckInCount设置成1重新开始就行了。
|
||||
var lastCheck = await _dal.QueryByClauseAsync(p => p.id < id, true);
|
||||
if (lastCheck == null)
|
||||
{
|
||||
userCheckIn.continuousCheckInCount = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
var yesterdayDataStr = dt.AddDays(-1).ToString("yyyy-MM-dd");
|
||||
var lastCheckDataStr = lastCheck.checkInData.ToString("yyyy-MM-dd");
|
||||
if (yesterdayDataStr == lastCheckDataStr)
|
||||
{
|
||||
//累加
|
||||
userCheckIn.continuousCheckInCount += 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
//重置
|
||||
userCheckIn.continuousCheckInCount = 1;
|
||||
}
|
||||
}
|
||||
await _userCheckInServices.UpdateAsync(userCheckIn);
|
||||
}
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user