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;
}
}
}