using JNPF.Common.Dtos.VisualDev; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.FriendlyException; using JNPF.VisualDev; using JNPF.VisualDev.Entitys; using JNPF.VisualDev.Interfaces; using Microsoft.AspNetCore.Mvc; using SqlSugar; using Tnb.BasicData.Entities; using Tnb.WarehouseMgr.Interfaces; namespace Tnb.WarehouseMgr { [ApiDescriptionSettings(Tag = ModuleConsts.Tag, Area = ModuleConsts.Area, Order = 700)] [Route("api/[area]/[controller]/[action]")] [OverideVisualDev(ModuleId)] public class BasRegionUserService : IOverideVisualDevService, IBasRegionUserService, IDynamicApiController, ITransient { private const string ModuleId = "26169876750629"; private readonly ISqlSugarClient _db; private readonly IRunService _runService; private readonly IVisualDevService _visualDevService; private static Dictionary _dicRegion = new(); public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); public BasRegionUserService(ISqlSugarRepository repository, IRunService runService, IVisualDevService visualDevService) { _db = repository.AsSugarClient(); _runService = runService; _visualDevService = visualDevService; OverideFuncs.CreateAsync = Create; } private async Task Create(VisualDevModelDataCrInput input) { if (_dicRegion.Count < 1) { _dicRegion = await _db.Queryable().ToDictionaryAsync(x => x.id, x => x.region_name); } if (input.data.ContainsKey(nameof(BasRegionUser.region_id)) && input.data.ContainsKey(nameof(BasRegionUser.user_id))) { string regionId = input.data[nameof(BasRegionUser.region_id)].ToString()!; string? userId = input.data[nameof(BasRegionUser.user_id)].ToString(); BasRegionUser user = await _db.Queryable().Where(it => it.region_id == regionId && it.user_id == userId).FirstAsync(); if (user != null) { throw new AppFriendlyException($"区域【{_dicRegion[regionId]}】,已存在用户【{user.user_name}】", 500); } } VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true); await _runService.Create(templateEntity, input); return await Task.FromResult(true); } } }