Ver código fonte

fixup! feat: 增加字段唯一性配置

喵你个旺呀 1 ano atrás
pai
commit
6bb81f14f7

+ 3 - 3
Admin.NET/Admin.NET.Web.Entry/wwwroot/template/Service.cs.vm

@@ -111,7 +111,7 @@ public class @(Model.ClassName)Service : IDynamicApiController, ITransient
     {
         var entity = input.Adapt<@(Model.ClassName)>();
         @foreach (var config in Model.TableUniqueList.Where(x => x.Columns.All(x1 => Model.TableField.Any(x2 => x2.WhetherAddUpdate == "Y" && x2.PropertyName == x1)))) {
-        @:if (_@(Model.LowerClassName)Rep.AnyAsync(u => @(string.Join(" && ", config.Columns.Select(x => $"u.{x} != null && u.{x} == input.{x}"))))) throw Oops.Oh("@config.Message");
+        @:if (await _@(Model.LowerClassName)Rep.IsAnyAsync(u => @(string.Join(" && ", config.Columns.Select(x => $"u.{x} != null && u.{x} == input.{x}"))))) throw Oops.Oh("@(config.Message)已存在");
         }
         return await _@(Model.LowerClassName)Rep.InsertAsync(entity) ? entity.Id : 0;
     }
@@ -158,7 +158,7 @@ public class @(Model.ClassName)Service : IDynamicApiController, ITransient
     public async Task Update(Update@(Model.ClassName)Input input)
     {
         @foreach (var config in Model.TableUniqueList.Where(x => x.Columns.All(x1 => Model.TableField.Any(x2 => x2.WhetherAddUpdate == "Y" && x2.PropertyName == x1)))) {
-        @:if (_@(Model.LowerClassName)Rep.AnyAsync(u => u.@(primaryKey.PropertyName) != input.@(primaryKey.PropertyName) && @(string.Join(" && ", config.Columns.Select(x => $"u.{x} != null && u.{x} == input.{x}"))))) throw Oops.Oh("@config.Message");
+        @:if (await _@(Model.LowerClassName)Rep.IsAnyAsync(u => u.@(primaryKey.PropertyName) != input.@(primaryKey.PropertyName) && @(string.Join(" && ", config.Columns.Select(x => $"u.{x} != null && u.{x} == input.{x}"))))) throw Oops.Oh("@(config.Message)已存在");
         }
         var entity = input.Adapt<@(Model.ClassName)>();
         await _@(Model.LowerClassName)Rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
@@ -349,7 +349,7 @@ var definedObjects = new Dictionary<string, object>();
                         @:.SplitError(it => it.Item.@(column.PropertyName)?.Length > @(column.ColumnLength), "@(column.ColumnComment)长度不能超过@(column.ColumnLength)个字符")
                         }}
                         @foreach (var config in Model.TableUniqueList.Where(x => x.Columns.All(x1 => importFields.Any(x2 => x2.PropertyName == x1)))) {
-                        @:.WhereColumns(it => new { @(string.Join(", ", config.Columns.Select(x => $"it.{x}"))) }).SplitError(it => it.Any(), "@(config.Message)")
+                        @:.WhereColumns(it => new { @(string.Join(", ", config.Columns.Select(x => $"it.{x}"))) }).SplitError(it => it.Any(), "@(config.Message)已存在")
                         }
                         @:.SplitInsert(_ => true)
                         @:.ToStorage();

+ 8 - 1
Web/src/views/system/codeGen/component/editCodeGenDialog.vue

@@ -152,7 +152,7 @@
 											<el-button icon="ele-Delete" type="danger" circle plain size="small" @click="() => state.ruleForm.tableUniqueList?.splice(k, 1)" />
 											<span class="ml5">字段</span>
 										</template>
-										<el-select v-model="state.ruleForm.tableUniqueList[k].columns" multiple filterable class="w100">
+										<el-select v-model="state.ruleForm.tableUniqueList[k].columns" @change="(val: any) => changeTableUniqueColumn(val, k)" multiple filterable clearable class="w100">
 											<el-option v-for="item in state.columnData" :key="item.columnName" :label="item.columnName + ' [' + item.columnComment + ']'" :value="item.columnName" />
 										</el-select>
 									</el-form-item>
@@ -245,6 +245,13 @@ const tableChanged = (item: any) => {
 	getColumnInfoList();
 };
 
+// 表唯一约束配置项字段改变事件
+const changeTableUniqueColumn = (value: any, index: number) => {
+  if (value?.length === 1 && !state.ruleForm.tableUniqueList[index].message) {
+    state.ruleForm.tableUniqueList[index].message = state.columnData.find((u: any) => u.columnName === value[0])?.columnComment;
+  }
+}
+
 const getColumnInfoList = async () => {
 	if (state.ruleForm.configId == '' || state.ruleForm.tableName == '') return;
 	var res = await getAPI(SysCodeGenApi).apiSysCodeGenColumnListByTableNameTableNameConfigIdGet(state.ruleForm.tableName, state.ruleForm.configId);