using Infrastructure.Attribute; using Microsoft.AspNetCore.Http; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Infrastructure; using ARW.Model; using ARW.Repository; using ARW.Repository.Business.Regions; using ARW.Service.Business.IBusinessService.Regions; using ARW.Model.Dto.Business.Regions; using ARW.Model.Models.Business.Regions; using ARW.Model.Vo.Business.Regions; namespace ARW.Service.Business.BusinessService.Regions { /// /// 省市区数据表接口实现类 /// [AppService(ServiceType = typeof(IRegionService), ServiceLifetime = LifeTime.Transient)] public class RegionServiceImpl : BaseService, IRegionService { private readonly RegionRepository _RegionRepository; public RegionServiceImpl(RegionRepository RegionRepository) { this._RegionRepository = RegionRepository; } #region 业务逻辑代码 /// /// 查询省市区数据表树形列表 /// public async Task> GetRegionTreeList(RegionQueryDto parm) { //开始拼装查询条件 var predicate = Expressionable.Create(); var query = _RegionRepository .Queryable() .LeftJoin((s, c) => s.RegionPid == c.RegionId) .Where(predicate.ToExpression()) .OrderBy(s => s.RegionId, OrderByType.Asc) .Select((s, c) => new RegionVo { RegionId = s.RegionId, RegionName = s.RegionName, RegionPid = s.RegionPid, RegionCode = s.RegionCode, RegionLevel = s.RegionLevel, ParentName = c.RegionName, }); return await query.ToTreeAsync(it => it.Children, it => it.RegionPid, 0); } /// /// 查询省市区数据表列表 /// public Task> GetRegionList(RegionQueryDto parm) { //开始拼装查询条件d var predicate = Expressionable.Create(); predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.RegionName), it => it.RegionName.Contains(parm.RegionName)); var query = _RegionRepository .Queryable() .Where(predicate.ToExpression()) .OrderBy(s => s.RegionId, OrderByType.Asc) .Select(s => new RegionVo { RegionId = s.RegionId, RegionName = s.RegionName, RegionPid = s.RegionPid, RegionCode = s.RegionCode, RegionLevel = s.RegionLevel, }); return query.ToListAsync(); } /// /// 添加或修改省市区数据表 /// public async Task AddOrUpdateRegion(Region model) { if (model.RegionId != 0) { var type = await _RegionRepository.GetListAsync(s => s.RegionPid == model.RegionId); if (type != null) { foreach (var item in type) { if (model.RegionPid == item.RegionId) throw new CustomException("上级菜单不能选择自己的子级!"); } } if (model.RegionPid == model.RegionId) throw new CustomException("上级菜单不能选择与当前菜单一样的!"); var response = await _RegionRepository.UpdateAsync(model); return "修改成功!"; } else { var info = _RegionRepository.GetFirst(it => it.RegionId == model.RegionPid); var response = await _RegionRepository.InsertAsync(model); return "添加成功!"; } } #region Excel处理 /// /// Excel数据导出处理 /// public async Task> HandleExportData(List data) { return data; } #endregion #endregion } }