using BBWYB.Common.Log; using BBWYB.Common.Models; using BBWYB.Server.Model; using BBWYB.Server.Model.Db; using BBWYB.Server.Model.Dto; using Yitter.IdGenerator; namespace BBWYB.Server.Business { public class PurchaserBusiness : BaseBusiness, IDenpendency { public PurchaserBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator) : base(fsql, nLogManager, idGenerator) { } public ListResponse QueryPurchaserNameList(string keywords) { if (string.IsNullOrEmpty(keywords)) throw new BusinessException("关键字不能为空"); var list = fsql.Select().Where(p => p.Name.Contains(keywords)).Distinct().ToList(x => x.Name); return new ListResponse { Items = list, TotalCount = list.Count() }; } public ListResponse QueryPurchaserLocationList(string keywords) { if (string.IsNullOrEmpty(keywords)) throw new BusinessException("关键字不能为空"); var list = fsql.Select().Where(p => p.Location.Contains(keywords)).Distinct().ToList(x => x.Location); return new ListResponse { Items = list, TotalCount = list.Count() }; } public ListResponse QueryPurchaserList(QueryPurchaserRequest request) { if (request.PageSize > 20) request.PageSize = 20; var purchaserList = fsql.Select() .WhereIf(!string.IsNullOrEmpty(request.Spu), p => fsql.Select() .Where(psp1 => psp1.PurchaserId == p.Id && psp1.ProductId == request.Spu) .Any()) .WhereIf(!string.IsNullOrEmpty(request.Sku), p => fsql.Select() .Where(psp2 => psp2.PurchaserId == p.Id && psp2.SkuId == request.Sku) .Any()) .WhereIf(request.PurchaserNameList != null && request.PurchaserNameList.Count() > 0, p => request.PurchaserNameList.Contains(p.Name)) .WhereIf(request.CategoryIdList != null && request.CategoryIdList.Count() > 0, p => fsql.Select() .Where(per => per.PurchaserId == p.Id && request.CategoryIdList.Contains(per.ExtendedInfoId.Value)).Any()) .WhereIf(request.LocationList != null && request.LocationList.Count() > 0, p => request.LocationList.Contains(p.Location)) .Page(request.PageIndex, request.PageSize) .Count(out var count) .ToList(); return new ListResponse() { Items = purchaserList, TotalCount = count }; } public ListResponse QueryPurchaserCategoryList(QueryPurchaserExtendedRequest request) { var list = fsql.Select() .WhereIf(request.Type != null, x => x.Type == request.Type) .WhereIf(!string.IsNullOrEmpty(request.Keywords), x => x.Name.Contains(request.Keywords)) .Count(out var count) .ToList(); return new ListResponse { Items = list, TotalCount = count }; } public void EditPurchaserExtendedInfo(EditPurchaserExtendedInfoRequest request) { var insertRelationList = new List(); insertRelationList.AddRange(request.CategoryIdList.Select(x => new Purchaser_ExtendedInfo_Relation() { Id = idGenerator.NewLong(), PurchaserId = request.PurchaserId, ExtendedType = Enums.PurchaserBasicInfoType.主营类目, ExtendedInfoId = x })); insertRelationList.AddRange(request.TagIdList.Select(x => new Purchaser_ExtendedInfo_Relation() { Id = idGenerator.NewLong(), PurchaserId = request.PurchaserId, ExtendedType = Enums.PurchaserBasicInfoType.标签, ExtendedInfoId = x })); fsql.Transaction(() => { fsql.Delete().Where(r => r.PurchaserId == request.PurchaserId).ExecuteAffrows(); fsql.Update(request.PurchaserId).Set(p => p.ManagmentMode, request.ManagmentMode).ExecuteAffrows(); if (insertRelationList.Count() > 0) fsql.Insert(insertRelationList).ExecuteAffrows(); }); } } }