using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Znyc.Cloudcar.Admin.Commons;
using Znyc.Cloudcar.Admin.Commons.Cache;
using Znyc.Cloudcar.Admin.Commons.Entitys;
using Znyc.Cloudcar.Admin.Commons.Enums;
using Znyc.Cloudcar.Admin.Commons.Mapping;
using Znyc.Cloudcar.Admin.Commons.Pages;
using Znyc.Cloudcar.Admin.Commons.Services;
using Znyc.Cloudcar.Admin.Security.Dtos;
using Znyc.Cloudcar.Admin.Security.Entitys;
using Znyc.Cloudcar.Admin.Security.IRepositories;
using Znyc.Cloudcar.Admin.Security.IServices;
namespace Znyc.Cloudcar.Admin.Security.Services
{
///
/// Banner服务
///
public class BannerService : BaseService, IBannerService
{
private readonly IBannerRepository _bannerRepository;
public BannerService(
IBannerRepository bannerRepository
) : base(bannerRepository)
{
_bannerRepository = bannerRepository;
}
///
/// 分页查询
///
///
///
///
public async Task> FindWithPagerSearchAsync(SearchBannerModel search)
{
bool order = search.Order == "asc" ? false : true;
string where = GetDataPrivilege(false);
//关键字查询
if (!string.IsNullOrEmpty(search.Keywords))
{
@where += $" and (PicDesc like '%{search.Keywords}%')";
}
PagerInfo pagerInfo = new PagerInfo
{
CurrenetPageIndex = search.CurrenetPageIndex,
PageSize = search.PageSize
};
//查询Banner表
List list = (await repository.FindWithPagerAsync(where, pagerInfo, search.Sort, order)).MapTo();
foreach (BannerOutputDto item in list)
{
item.PicUrl = CommonConst.Default_Banner_Prefix + item.PicUrl;
}
PageResult pageResult = new PageResult
{
CurrentPage = pagerInfo.CurrenetPageIndex,
Items = list,
ItemsPerPage = pagerInfo.PageSize,
TotalItems = pagerInfo.RecordCount
};
return pageResult;
}
///
/// 异步新增数据
///
/// ʵ��
///
public async Task InsertAsync(BannerEntity input)
{
CommonResult result = new CommonResult();
if (input.StartTime >= input.EndTime)
{
result.Success = false;
result.ErrMsg = ReturnConst.Time_Error;
return result;
}
if (input.EndTime < DateTime.Now)
{
result.Success = false;
result.ErrMsg = ReturnConst.EndTime_Error;
return result;
}
input.PicUrl = input.PicUrl.Substring(input.PicUrl.LastIndexOf("/") + 1);
input.TextDesc = "";
if (input.StartTime > DateTime.Now)
{
input.State = (int)ActivityStatusEnum.NotStart;
}
if (input.StartTime < DateTime.Now && input.EndTime > DateTime.Now)
{
input.State = (int)ActivityStatusEnum.Ongoing;
}
result.Success = await repository.InsertAsync(input) > 0 ? true : false;
return result;
}
///
/// 更新Banner数据
///
///
///
///
public async Task UpdateAsync(BannerEntity input)
{
CommonResult result = new CommonResult();
if (input.StartTime >= input.EndTime)
{
result.Success = false;
result.ErrMsg = ReturnConst.Time_Error;
return result;
}
BannerEntity info = await repository.GetAsync(input.Id);
if (!(info?.Id > 0))
{
result.Success = false;
result.ErrMsg = ReturnConst.Not_Exist;
return result;
}
info.PicUrl = input.PicUrl.Substring(input.PicUrl.LastIndexOf("/") + 1);
info.Name = input.Name;
info.Type = input.Type;
info.PageUrl = input.PageUrl;
info.Phone = input.Phone;
info.StartTime = input.StartTime;
info.EndTime = input.EndTime;
if (input.StartTime > DateTime.Now)
{
info.State = (int)ActivityStatusEnum.NotStart;
}
if (input.EndTime < DateTime.Now)
{
info.State = (int)ActivityStatusEnum.End;
}
if (input.StartTime < DateTime.Now && input.EndTime > DateTime.Now)
{
info.State = (int)ActivityStatusEnum.Ongoing;
}
info.ModifiedTime = input.ModifiedTime;
info.ModifiedUserId = input.ModifiedUserId;
await repository.UpdateAsync(info, input.Id).ConfigureAwait(false);
result.Success = true;
return result;
}
///
/// 修改广告状态
///
///
public async Task UpdateStatusAsync()
{
CommonResult result = new CommonResult();
CacheHelper cacheHelper = new CacheHelper();
List list = (await repository.GetListWhereAsync(" IsDeleted=0")).MapTo();
foreach (var item in list)
{
if (item.EndTime <= DateTime.Now)
{
item.State = (int)ActivityStatusEnum.End;
}
if (item.StartTime < DateTime.Now && item.EndTime > DateTime.Now)
{
item.State = (int)ActivityStatusEnum.Ongoing;
}
await repository.UpdateAsync(item, item.Id).ConfigureAwait(false);
}
cacheHelper.Remove("banner:list");
result.Success = true;
return result;
}
}
}