/***********************************************************************
|
* Project: CoreCms
|
* ProjectName: 百分兵法管理系统
|
* Web: hhtp://chuanyin.com
|
* Author:
|
* Email:
|
* CreateTime: 2022/3/13 22:21:26
|
* Description: 暂无
|
***********************************************************************/
|
|
using System;
|
using System.Collections.Generic;
|
using System.Linq.Expressions;
|
using System.Threading.Tasks;
|
using CoreCms.Net.Configuration;
|
using CoreCms.Net.IRepository;
|
using CoreCms.Net.IRepository.UnitOfWork;
|
using CoreCms.Net.IServices;
|
using CoreCms.Net.Model.Entities;
|
using CoreCms.Net.Model.ViewModels.Basics;
|
using CoreCms.Net.Model.ViewModels.UI;
|
using CoreCms.Net.Utility.Extensions;
|
using CoreCms.Net.Utility.Helper;
|
using Newtonsoft.Json;
|
using SqlSugar;
|
|
|
namespace CoreCms.Net.Services
|
{
|
/// <summary>
|
/// 用户日历签到统计 接口实现
|
/// </summary>
|
public class CoreCmsUserCheckInServices : BaseServices<CoreCmsUserCheckIn>, ICoreCmsUserCheckInServices
|
{
|
private readonly ICoreCmsUserCheckInRepository _dal;
|
private readonly IUnitOfWork _unitOfWork;
|
private readonly ICoreCmsSettingServices _settingServices;
|
private readonly ISysTaskLogServices _sysTaskLogServices;
|
|
|
public CoreCmsUserCheckInServices(IUnitOfWork unitOfWork, ICoreCmsUserCheckInRepository dal, ICoreCmsSettingServices settingServices, ISysTaskLogServices sysTaskLogServices)
|
{
|
this._dal = dal;
|
_settingServices = settingServices;
|
_sysTaskLogServices = sysTaskLogServices;
|
base.BaseDal = dal;
|
_unitOfWork = unitOfWork;
|
}
|
|
/// <summary>
|
/// 重写根据条件查询分页数据
|
/// </summary>
|
/// <param name="predicate">判断集合</param>
|
/// <param name="orderByType">排序方式</param>
|
/// <param name="pageIndex">当前页面索引</param>
|
/// <param name="pageSize">分布大小</param>
|
/// <param name="orderByExpression"></param>
|
/// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
|
/// <returns></returns>
|
public async Task<IPageList<CoreCmsUserCheckIn>> QueryPageAsync(Expression<Func<CoreCmsUserCheckIn, bool>> predicate,
|
Expression<Func<CoreCmsUserCheckIn, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
int pageSize = 20, bool blUseNoLock = false)
|
{
|
return await _dal.QueryPageAsync(predicate, orderByExpression, orderByType, pageIndex, pageSize, blUseNoLock);
|
}
|
|
/// <summary>
|
/// 清理用户连续签到
|
/// </summary>
|
/// <returns></returns>
|
public async Task<AdminUiCallBack> ClearUserContinuousCheckIn()
|
{
|
var jm = new AdminUiCallBack();
|
|
var allConfigs = await _settingServices.GetConfigDictionaries();
|
|
var showStoresSwitch = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.CheckInIsOpen).ObjectToInt(2); //是否开启签到
|
if (showStoresSwitch == 1)
|
{
|
var continuousCheckInPeriodType = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.ContinuousCheckInPeriodType).ObjectToInt(0); //连续签到周期
|
|
DateTime dt = DateTime.Now; //当前时间
|
if (continuousCheckInPeriodType == (int)GlobalEnumVars.ContinuousCheckInPeriodType.不限)
|
{
|
//插入日志
|
var model = new SysTaskLog
|
{
|
createTime = DateTime.Now,
|
isSuccess = true,
|
name = "不限制模式不执行",
|
parameters = JsonConvert.SerializeObject(jm)
|
};
|
await _sysTaskLogServices.InsertAsync(model);
|
}
|
else if (continuousCheckInPeriodType == (int)GlobalEnumVars.ContinuousCheckInPeriodType.每周末)
|
{
|
if (dt.DayOfWeek == DayOfWeek.Sunday)
|
{
|
await _dal.UpdateAsync(p => new CoreCmsUserCheckIn() { continuousCheckInCount = 0 }, p => p.id > 0);
|
}
|
else
|
{
|
//插入日志
|
var model = new SysTaskLog
|
{
|
createTime = DateTime.Now,
|
isSuccess = true,
|
name = "非周末不执行",
|
parameters = JsonConvert.SerializeObject(jm)
|
};
|
await _sysTaskLogServices.InsertAsync(model);
|
}
|
}
|
else if (continuousCheckInPeriodType == (int)GlobalEnumVars.ContinuousCheckInPeriodType.每月末)
|
{
|
DateTime startMonth = dt.AddDays(1 - dt.Day); //本月月初
|
DateTime endMonth = startMonth.AddMonths(1).AddDays(-1); //本月月末
|
//同年同业同日生。
|
if (dt.Year == endMonth.Year && dt.Month == endMonth.Month && dt.Day == endMonth.Day)
|
{
|
await _dal.UpdateAsync(p => new CoreCmsUserCheckIn() { continuousCheckInCount = 0 }, p => p.id > 0);
|
}
|
else
|
{
|
//插入日志
|
var model = new SysTaskLog
|
{
|
createTime = DateTime.Now,
|
isSuccess = true,
|
name = "非周末不执行",
|
parameters = JsonConvert.SerializeObject(jm)
|
};
|
await _sysTaskLogServices.InsertAsync(model);
|
}
|
}
|
}
|
return jm;
|
}
|
|
|
}
|
}
|