using Nirvana.Common; using Nirvana.Common.ApiBase; using Nirvana.Data; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using YBDevice.Entity; namespace YBDevice.Service.DBServices { /// /// 轮播图、开屏广告管理 /// public partial class BannerApp : Repository { /// /// 获取轮播图、开屏广告列表 /// /// /// public async Task> GetListAsync(QueryParams param) { RefAsync totalnum = 0; using (var dbClient = ReadDbContext.GetInstance()) { var currentUser = OperatorProvider.Provider.GetCurrent(); var temquery = dbClient.Queryable(); if (param.queryParam != null && param.queryParam.Count > 0) { List conModels = new List(); param.queryParam.ForEach(x => { if (!string.IsNullOrEmpty(x.Value)) { conModels.Add(new ConditionalModel() { FieldName = x.Name, ConditionalType = (ConditionalType)x.Type, FieldValue = x.Value.Trim() }); } }); if (conModels.Count > 0) { temquery = temquery.Where(conModels); } } if (currentUser.AccountType != (int)AccountType.platform) { temquery = temquery.Where(x => x.BusinessId == currentUser.BusinessId); } string sorts = string.Format("{0} {1}", param.sort, param.order); var query = await temquery.OrderBy(sorts) .Select(x=>new BannerListModel { Id=x.Id, BusinessId=x.BusinessId, Createtime=x.Createtime, ClickCount=x.ClickCount, HeadImg=x.HeadImg, Name=x.Name, StartTime=x.StartTime, Status=x.Status, StatusRemark=x.StatusRemark, EndTime=x.EndTime, PositionType=x.PositionType, Type=x.Type }) .ToPageListAsync(param.offset, param.limit, totalnum); return new PageParms { page = param.offset, Items = query, totalnum = totalnum, limit = param.limit }; } } /// /// 信息提交 /// /// /// public async Task SubmitAsync(BannerSubmitModel model) { if (string.IsNullOrEmpty(model.content)) { return new ResultInfo(ResultState.FAIL, "内容不可为空"); } if(model.Type == (int)AdType.URL && !model.content.ToLower().StartsWith("http")) { return new ResultInfo(ResultState.FAIL, "链接格式不正确"); } using (var dbClient = ReadDbContext.GetInstance()) { var currentUser = OperatorProvider.Provider.GetCurrent(); if (model.Id > 0) { await dbClient.Updateable().SetColumns(x => new YB_Banner { HeadImg = model.HeadImg, EndTime=model.EndTime, Name=model.Name, PositionType=model.PositionType, StartTime=model.StartTime, Type=model.Type }).Where(x => x.Id == model.Id).ExecuteCommandAsync(); await dbClient.Updateable().SetColumns(x => new YB_BannerContent { Content = model.content }).Where(x => x.BannerId == model.Id).ExecuteCommandAsync(); return new ResultInfo(ResultState.SUCCESS, "修改成功"); } else { var info = new YB_Banner { Createtime = DateTime.Now, Status = (int)AdStatus.Wait, BusinessId = currentUser.BusinessId, ClickCount = 0, HeadImg = model.HeadImg, StatusRemark = "", EndTime=model.EndTime, Name=model.Name, PositionType=model.PositionType, StartTime=model.StartTime, Type = model.Type }; var id = await dbClient.Insertable(info).ExecuteReturnIdentityAsync(); var data = new YB_BannerContent { Content = model.content, BannerId = id }; await dbClient.Insertable(data).ExecuteCommandAsync(); return new ResultInfo(ResultState.SUCCESS, "添加成功"); } } } /// /// 状态修改 /// /// 记录ID /// 状态 /// 状态描述 /// public async Task SetStatusAsync(int id, int status, string remark) { using (var dbClient = ReadDbContext.GetInstance()) { if (!await dbClient.Queryable().AnyAsync(x => x.Id == id)) { return new ResultInfo(ResultState.FAIL, "记录未找到"); } //更新状态 await dbClient.Updateable().SetColumns(x => new YB_Banner { Status = status }).Where(x => x.Id == id).ExecuteCommandAsync(); return new ResultInfo(ResultState.SUCCESS, "状态更新成功"); } } /// /// 详情 /// /// /// public async Task DetailAsync(int id) { using (var dbClient = ReadDbContext.GetInstance()) { var info = await dbClient.Queryable().Select(x => new BannerSubmitModel { Name = x.Name, HeadImg = x.HeadImg, Type = x.Type, Id = x.Id, StartTime=x.StartTime, EndTime=x.EndTime, PositionType=x.PositionType }).Where(x => x.Id == id).FirstAsync(); var content = await dbClient.Queryable().Where(x => x.BannerId == id).FirstAsync(); info.content = content?.Content; return info; } } } }