using Attribute; using Model; using Model.Base; using Repository; using Service; using Microsoft.AspNetCore.Mvc; using Vo.Admin; using Dto.Admin; using Util; using Mapster; using Infrastructure; using Common; namespace Services { /// /// APP项目Service业务层处理 /// [AppService(ServiceType = typeof(IAppProjectService), ServiceLifetime = LifeTime.Transient)] public class AppProjectService : BaseService, IAppProjectService { private readonly IAppProjectModuleService _appProjectModuleService; public AppProjectService(IAppProjectModuleService appProjectModuleService) { _appProjectModuleService = appProjectModuleService; } /// /// APP项目-列表 /// /// 参数请求体 /// 分页参数 /// 列表 public PagedInfo getAppProjectList([FromQuery] PagerInfo page, [FromQuery] AppProject param) { //拼装查询条件 var predicate = Expressionable.Create(); predicate = predicate.AndIF(param.projectId > 0, m => m.projectId == param.projectId); predicate = predicate.AndIF(!string.IsNullOrEmpty(param.appName), m => m.appName.Contains(param.appName)); predicate = predicate.AndIF(!string.IsNullOrEmpty(param.appKind), m => m.appKind.Contains(param.appKind)); var response = Queryable() .Where(predicate.ToExpression()) .OrderByDescending(m => m.id) .ToPage(page); return response; } /// /// 添加APP项目及模块 /// /// 参数请求体 /// HttpContext /// 项目ID public int AddAppProjectWithModule(AddAppProjectDto param, HttpContext httpContext) { var modal = param.Adapt().ToCreate(httpContext); var appId = InsertReturnIdentity(modal); if (!string.IsNullOrEmpty(param.moduleList)) { var moduleIds = Tools.SpitIntArrary(param.moduleList).ToList(); foreach (var moduleId in moduleIds) { _appProjectModuleService.Add(new AppProjectModule() { appId = appId, moduleId = moduleId }); } } return appId; } /// /// 更新APP项目及模块 /// /// 参数请求体 /// HttpContext /// 项目ID public int UpdateAppProjectWithModule(AddAppProjectDto param, HttpContext httpContext) { int appId = param.id; var modal = param.Adapt().ToCreate(httpContext); Update(modal); if (!string.IsNullOrEmpty(param.moduleList)) { string check = "," + param.moduleList + ","; var moduleList = _appProjectModuleService.GetList(m => m.appId == appId); foreach (var item in moduleList) { if (!check.Contains("," + item.moduleId.ToString() + ",")) { _appProjectModuleService.Delete(item); } } var moduleIds = Tools.SpitIntArrary(param.moduleList).ToList(); foreach (var moduleId in moduleIds) { if (!_appProjectModuleService.Any(m => m.appId == appId && m.moduleId == moduleId)) { _appProjectModuleService.Add(new AppProjectModule() { appId = appId, moduleId = moduleId }); } } } return appId; } } }