|
|
@@ -70,7 +70,7 @@ public class @(Model.ClassName)Service : IDynamicApiController, ITransient
|
|
|
foreach (var column in Model.TableField) {
|
|
|
@:@(column.PropertyName) = u.@(column.PropertyName),
|
|
|
if (column.EffectType == "ForeignKey" || column.EffectType == "ApiTreeSelector") {
|
|
|
- @:@(column.FkLinkDisplayPropertyName) = @column.GetDisplayColumn(column.LowerPropertyNameTrimEndId),
|
|
|
+ @:@(column.ExtendedPropertyName) = @column.GetDisplayColumn(column.LowerPropertyNameTrimEndId),
|
|
|
}
|
|
|
}
|
|
|
@:});
|
|
|
@@ -103,7 +103,7 @@ public class @(Model.ClassName)Service : IDynamicApiController, ITransient
|
|
|
[ApiDescriptionSettings(Name = "Detail"), HttpGet]
|
|
|
public async Task<@(Model.ClassName)> Detail([FromQuery] QueryById@(Model.ClassName)Input input)
|
|
|
{
|
|
|
- return await _@(Model.LowerClassName)Rep.GetFirstAsync(u => @Model.PrimaryKeysFormat(" && ", "u.{0} == input.{0}", false));
|
|
|
+ return await _@(Model.LowerClassName)Rep.GetFirstAsync(u => @Model.PrimaryKeysFormat(" && ", "u.{0} == input.{0}"));
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
@@ -132,13 +132,17 @@ public class @(Model.ClassName)Service : IDynamicApiController, ITransient
|
|
|
public async Task Update(Update@(Model.ClassName)Input input)
|
|
|
{
|
|
|
@{
|
|
|
- var primaryKeyWhere = Model.PrimaryKeysFormat(" && ", "u.{0} != input.{0}", false);
|
|
|
+ var primaryKeyWhere = Model.PrimaryKeysFormat(" && ", "u.{0} != input.{0}");
|
|
|
foreach (var config in Model.TableUniqueConfigList) {
|
|
|
@:if (await _@(Model.LowerClassName)Rep.IsAnyAsync(u => @primaryKeyWhere && @config.Format(" && ", "u.{0} != null && u.{0} == input.{0}"))) throw Oops.Oh("@(config.Message)已存在");
|
|
|
}
|
|
|
}
|
|
|
var entity = input.Adapt<@(Model.ClassName)>();
|
|
|
- await _@(Model.LowerClassName)Rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
|
|
|
+ await _@(Model.LowerClassName)Rep.AsUpdateable(entity).IgnoreColumns(u => new {
|
|
|
+ @foreach (var column in Model.IgnoreUpdateFieldList) {
|
|
|
+ @:u.@(column.PropertyName),
|
|
|
+ }
|
|
|
+ }).ExecuteCommandAsync();
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
@@ -150,7 +154,7 @@ public class @(Model.ClassName)Service : IDynamicApiController, ITransient
|
|
|
[ApiDescriptionSettings(Name = "Delete"), HttpPost]
|
|
|
public async Task Delete(Delete@(Model.ClassName)Input input)
|
|
|
{
|
|
|
- var entity = await _@(Model.LowerClassName)Rep.GetFirstAsync(u => @Model.PrimaryKeysFormat(" && ", "u.{0} == input.{0}", false)) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
|
|
|
+ var entity = await _@(Model.LowerClassName)Rep.GetFirstAsync(u => @Model.PrimaryKeysFormat(" && ", "u.{0} == input.{0}")) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
|
|
|
await _@(Model.LowerClassName)Rep.FakeDeleteAsync(entity); //假删除
|
|
|
//await _@(Model.LowerClassName)Rep.DeleteAsync(entity); //真删除
|
|
|
}
|
|
|
@@ -164,7 +168,9 @@ public class @(Model.ClassName)Service : IDynamicApiController, ITransient
|
|
|
[ApiDescriptionSettings(Name = "BatchDelete"), HttpPost]
|
|
|
public async Task<int> BatchDelete([Required(ErrorMessage = "主键列表不能为空")]List<Delete@(Model.ClassName)Input> input)
|
|
|
{
|
|
|
- var list = await _@(Model.LowerClassName)Rep.AsQueryable().In(u => new { @Model.PrimaryKeysFormat(", ", "u.{0}", false) }, input).ToListAsync();
|
|
|
+ var exp = Expressionable.Create<@(Model.ClassName)>();
|
|
|
+ foreach (var row in input) exp = exp.Or(it => @Model.PrimaryKeysFormat(" && ", "it.{0} == row.{0}"));
|
|
|
+ var list = await _@(Model.LowerClassName)Rep.AsQueryable().Where(exp.ToExpression()).ToListAsync();
|
|
|
return await _@(Model.LowerClassName)Rep.FakeDeleteAsync(list); //假删除
|
|
|
//return await _@(Model.LowerClassName)Rep.DeleteAsync(list); //真删除
|
|
|
}
|
|
|
@@ -179,7 +185,7 @@ public class @(Model.ClassName)Service : IDynamicApiController, ITransient
|
|
|
@:[ApiDescriptionSettings(Name = "SetStatus"), HttpPost]
|
|
|
@:public async Task Set@(Model.ClassName)Status(Set@(Model.ClassName)StatusInput input)
|
|
|
@:{
|
|
|
- @:await _@(Model.LowerClassName)Rep.AsUpdateable().SetColumns(u => u.Status, input.Status).Where(u => @Model.PrimaryKeysFormat(" && ", "u.{0} == input.{0}", false)).ExecuteCommandAsync();
|
|
|
+ @:await _@(Model.LowerClassName)Rep.AsUpdateable().SetColumns(u => u.Status, input.Status).Where(u => @Model.PrimaryKeysFormat(" && ", "u.{0} == input.{0}")).ExecuteCommandAsync();
|
|
|
@:}
|
|
|
}
|
|
|
@foreach (var column in Model.UploadFieldList) {
|
|
|
@@ -247,7 +253,7 @@ public class @(Model.ClassName)Service : IDynamicApiController, ITransient
|
|
|
@:{
|
|
|
foreach (var column in fieldsList) {
|
|
|
var columnList = column.FkDisplayColumnList.Select(n => $"{{u.{n}}}").ToList();
|
|
|
- @:if (nameof(Export@(Model.ClassName)Output.@column.FkLinkDisplayPropertyName) == info.Name) return _@(Model.LowerClassName)Rep.Context.Queryable<@(column.FkEntityName)>().Select(u => $"@(string.Join("-", columnList))").Distinct().ToList();
|
|
|
+ @:if (nameof(Export@(Model.ClassName)Output.@column.ExtendedPropertyName) == info.Name) return _@(Model.LowerClassName)Rep.Context.Queryable<@(column.FkEntityName)>().Select(u => $"@(string.Join("-", columnList))").Distinct().ToList();
|
|
|
}
|
|
|
@:return null;
|
|
|
@:});
|
|
|
@@ -277,12 +283,12 @@ public class @(Model.ClassName)Service : IDynamicApiController, ITransient
|
|
|
@:{
|
|
|
foreach (var column in Model.ImportFieldList.Where(u => u.EffectType == "ForeignKey" || u.EffectType == "ApiTreeSelector")) {
|
|
|
@:// 链接 @(column.ColumnComment)
|
|
|
- @:var @(column.LowerPropertyName)LabelList = pageItems.Where(x => x.@column.FkLinkDisplayPropertyName != null).Select(x => x.@column.FkLinkDisplayPropertyName).Distinct().ToList();
|
|
|
+ @:var @(column.LowerPropertyName)LabelList = pageItems.Where(x => x.@column.ExtendedPropertyName != null).Select(x => x.@column.ExtendedPropertyName).Distinct().ToList();
|
|
|
@:if (@(column.LowerPropertyName)LabelList.Any()) {
|
|
|
var columnList = column.FkDisplayColumnList.Select(n => $"{{u.{n}}}").ToList();
|
|
|
@:var @(column.LowerPropertyName)LinkMap = _@(Model.LowerClassName)Rep.Context.Queryable<@(column.FkEntityName)>().Where(u => @(column.LowerPropertyName)LabelList.Contains($"@(string.Join("-", columnList))")).ToList().ToDictionary(u => $"@(string.Join("-", columnList))", u => u.@(column.FkLinkColumnName));
|
|
|
@:pageItems.ForEach(e => {
|
|
|
- @:e.@(column.PropertyName) = @(column.LowerPropertyName)LinkMap?.GetValueOrDefault(e.@column.FkLinkDisplayPropertyName);
|
|
|
+ @:e.@(column.PropertyName) = @(column.LowerPropertyName)LinkMap?.GetValueOrDefault(e.@column.ExtendedPropertyName);
|
|
|
@:if (e.@(column.PropertyName) == null) e.Error = "@(column.ColumnComment)链接失败";
|
|
|
@:});
|
|
|
@:}
|