/*********************************************************************** * Project: baifenBinfa * ProjectName: 百分兵法管理系统 * Web: http://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 { /// /// 用户日历签到统计 接口实现 /// public class CoreCmsUserCheckInServices : BaseServices, 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; } /// /// 重写根据条件查询分页数据 /// /// 判断集合 /// 排序方式 /// 当前页面索引 /// 分布大小 /// /// 是否使用WITH(NOLOCK) /// public async Task> QueryPageAsync(Expression> predicate, Expression> orderByExpression, OrderByType orderByType, int pageIndex = 1, int pageSize = 20, bool blUseNoLock = false) { return await _dal.QueryPageAsync(predicate, orderByExpression, orderByType, pageIndex, pageSize, blUseNoLock); } /// /// 清理用户连续签到 /// /// public async Task 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; } } }