using Coldairarrow.Entity.DTO; using Coldairarrow.Entity.HuiYan; using Coldairarrow.Util; using EFCore.Sharding; using LinqKit; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Dynamic.Core; using System.Linq.Expressions; using System.Threading.Tasks; namespace Coldairarrow.Business.HuiYan { public class teamitemsBusiness : BaseBusiness, IteamitemsBusiness, ITransientDependency { public teamitemsBusiness(IDbAccessor db) : base(db) { } #region 外部接口 public async Task> GetDataListAsync(PageInput input) { var q = GetIQueryable(); var where = LinqHelper.True(); var search = input.Search; //筛选 if (!search.Condition.IsNullOrEmpty() && !search.Keyword.IsNullOrEmpty()) { var newWhere = DynamicExpressionParser.ParseLambda( ParsingConfig.Default, false, $@"{search.Condition}.Contains(@0)", search.Keyword); where = where.And(newWhere); } return await q.Where(where).GetPageResultAsync(input); } public async Task GetTheDataAsync(string id) { return await GetEntityAsync(id); } public async Task AddDataAsync(teamitems data) { await InsertAsync(data); } public async Task UpdateDataAsync(teamitems data) { await UpdateAsync(data); } public async Task DeleteDataAsync(List ids) { await DeleteAsync(ids); } #endregion #region 私有成员 #endregion public PageResult GetItems(PageInput input) { Expression> select = (a, b) => new TeamitemDto { GoodsId = b.GoodsId, HasFilter = b.HasFilter, Platform = b.Platform, Extensions = Newtonsoft.Json.JsonConvert.DeserializeObject>(a.ExtensionJson) }; var search = input.Search; select = select.BuildExtendSelectExpre(); var q_titem = GetIQueryable(); var q = from a in q_titem.AsExpandable() join b in Db.GetIQueryable() on a.ItemId equals b.Id into ab from b in ab.DefaultIfEmpty() select @select.Invoke(a, b); //查询对应状态 var where = LinqHelper.True().And(c => c.State == int.Parse(search.Keyword)); var list = q.Where(where).GetPageResultAsync(input).Result; return list; } public AjaxResult AddItem(TeamitemDto model) { model.Extensions = new List(); for (int i = 0; i < 5; i++) model.Extensions.Add(new TeamItemExtension() { Platform = 0 }); var item = Db.GetIQueryable().FirstOrDefault(c => c.GoodsId == model.GoodsId); if (item == null) { item = new items() { GoodsId = model.GoodsId, CreateTime = DateTime.Now, CreatorId = string.Empty, Deleted = false, HasFilter = false, Id = IdHelper.GetId(), Platform = 0 }; if (Db.Insert(item) <= 0) { return Error("商品添加失败!"); } } //设置为初选 int row = Db.Insert(new teamitems() { State = 0, CreateTime = DateTime.Now, CreatorId = string.Empty, Deleted = false, ExtensionJson = Newtonsoft.Json.JsonConvert.SerializeObject(model.Extensions), Id = IdHelper.GetId(), //待完善 TeamId = string.Empty, UserId = string.Empty, Price = model.Price, ItemImg = model.ItemImg, Sales = model.Sales, Title = model.Title, ItemId = item.Id }); if (row <= 0) return Error("商品信息添加失败!"); return Success(); } public AjaxResult SetItem(TeamitemDto model) { int row= Db.Update(c=>c.Id==model.Id,(item)=> { item.ExtensionJson = Newtonsoft.Json.JsonConvert.SerializeObject(model.Extensions); item.RivalGoodsId = model.RivalGoodsId; item.RivalPLCount = model.RivalPLCount; item.RivalPrice = model.RivalPrice; }); if (row > 0) return Success(); return Error("操作失败!"); } public AjaxResult SetState(string id,int state) { int row = Db.Update(c => c.Id == id, (item) => { item.State = state; }); if (row > 0) return Success(); return Error("操作失败!"); } } }