using Attribute;
using Model;
using Model.Base;
using Repository;
using Service;
using Microsoft.AspNetCore.Mvc;
using Vo.Admin;
using Common;
using System.Text.RegularExpressions;
namespace Services
{
///
/// APP项目对应参数Service业务层处理
///
[AppService(ServiceType = typeof(IAppProjectParamService), ServiceLifetime = LifeTime.Transient)]
public class AppProjectParamService : BaseService, IAppProjectParamService
{
///
/// APP项目对应参数-列表
///
/// 参数请求体
/// 分页参数
/// 列表
public PagedInfo getAppProjectParamList([FromQuery] PagerInfo page, [FromQuery] AppProjectParam param)
{
//拼装查询条件
var predicate = Expressionable.Create();
predicate = predicate.AndIF(param.appId > 0, m => m.appId == param.appId);
predicate = predicate.AndIF(param.moduleId > 0, m => m.moduleId == param.moduleId);
predicate = predicate.AndIF(!string.IsNullOrEmpty(param.paramTitle), m => m.paramTitle.Contains(param.paramTitle));
predicate = predicate.AndIF(!string.IsNullOrEmpty(param.paramName), m => m.paramName.Contains(param.paramName));
var response = Queryable()
.Where(predicate.ToExpression())
.OrderByDescending(m => m.id)
.ToPage(page);
return response;
}
///
/// APP项目对应参数-初始化数据
///
/// 参数请求体
/// 初始化数据
public void initAppProjectParam(int appId,string moduleIds, List moduleAndroidCodes, List moduleIosCodes)
{
if (string.IsNullOrEmpty(moduleIds))
{
return;
}
var moduleList = Tools.SpitIntArrary(moduleIds).ToList();
foreach (var moduleId in moduleList)
{
var moduleAndroidCode = moduleAndroidCodes.FirstOrDefault(m => m.moduleId == moduleId);
var moduleIosCode = moduleIosCodes.FirstOrDefault(m => m.moduleId == moduleId);
List paramList = new List();
if (moduleAndroidCode != null)
{
paramList.Add(moduleAndroidCode.stringsParamCode ?? "");
foreach (string item in paramList)
{
MatchCollection matches = Regex.Matches(item, "\\$\\{.*?\\}");
foreach (Match match in matches)
{
string paramString = match.Value;
string paramName = paramString.Replace("${", "").Replace("}", "");
if (!Any(m => m.appId == appId && m.moduleId == moduleAndroidCode.moduleId && m.paramName == paramName))
{
AppProjectParam appProjectParam = new AppProjectParam
{
appId = appId,
moduleId = moduleAndroidCode.moduleId,
paramName = paramName,
createTime = DateTime.Now,
createBy = "admin",
};
Add(appProjectParam);
}
}
}
}
if (moduleIosCode != null)
{
paramList.Add(moduleIosCode.rightCode ?? "");
paramList.Add(moduleIosCode.appDelegateLaunchCode ?? "");
paramList.Add(moduleIosCode.appDelegateLaunchAsyncCode ?? "");
foreach (string item in paramList)
{
MatchCollection matches = Regex.Matches(item, "\\$\\{.*?\\}");
foreach (Match match in matches)
{
string paramString = match.Value;
string paramName = paramString.Replace("${", "").Replace("}", "");
if (!Any(m => m.appId == appId && m.moduleId == moduleIosCode.moduleId && m.paramName == paramName))
{
AppProjectParam appProjectParam = new AppProjectParam
{
appId = appId,
moduleId = moduleIosCode.moduleId,
paramName = paramName,
createTime = DateTime.Now,
createBy = "admin",
};
Add(appProjectParam);
}
}
}
}
}
}
}
}