/// <summary> /// 生成 /// </summary> /// <param name="param">参数</param> /// <returns>返回信息</returns> public ReturnInfo<bool> Generator(CodeGeneratorParamInfo param) { var returnInfo = new ReturnInfo<bool>(); if (param.Tables.IsNullOrCount0()) { return returnInfo; } // 生成controller var constrollerString = new StringBuilder(); for (var i = 0; i < param.Tables.Count; i++) { string basicName = param.Tables[i].Name.FristUpper(); // 生成action var actions = param.Tables[i].IsPage ? DEFAULT_PAGE_BUILDER_ACTIONS : DEFAULT_BUILDER_ACTIONS; var actionString = new StringBuilder(); var j = 0; foreach (var ac in actions) { actionString.Append(ActionConfigTemplate .Replace("|ActionName|", ac.Key) .Replace("|Code|", ac.Value)); if (j < actions.Count - 1) { actionString.Append(","); } else { actionString.AppendLine(); actionString.Append(" "); } j++; } constrollerString.Append(ControllerConfigTemplate .Replace("|ControllerName|", basicName) .Replace("|Code|", basicName) .Replace("|ActionConfig|", actionString.ToString())); if (i < param.Tables.Count - 1) { constrollerString.Append(","); } else { constrollerString.AppendLine(); constrollerString.Append(" "); } } var code = RoutePermissionTemplate.Replace("|ControllerConfig|", constrollerString.ToString()); string folder = $"{Util.FOLDER_ROOT}\\Config"; folder.CreateNotExistsDirectory(); $"{folder}\\routePermissionConfig.json".WriteFileContent(code); return returnInfo; }
/// <summary> /// 生成 /// </summary> /// <param name="param">参数</param> /// <returns>返回信息</returns> public virtual ReturnInfo <bool> Generator(CodeGeneratorParamInfo param) { Util.FOLDER_ROOT.DeleteDirectory(); ReturnInfo <bool> returnInfo = null; IList <IFunctionGeneratorService> services = GetFunctionServices(param.FunctionTypes); foreach (IFunctionGeneratorService s in services) { returnInfo = s.Generator(param); } return(returnInfo); }
/// <summary> /// 生成 /// </summary> /// <param name="param">参数</param> /// <returns>返回信息</returns> public ReturnInfo <bool> Generator(CodeGeneratorParamInfo param) { ReturnInfo <bool> returnInfo = new ReturnInfo <bool>(); string[] fileNames; foreach (TableInfo t in param.Tables) { string[] codeTexts = BuilderCodeTexts(t, param, out fileNames); for (int i = 0; i < codeTexts.Length; i++) { string folder = $"{Util.FOLDER_ROOT}{SubFolders()[i]}\\Generators"; folder.CreateNotExistsDirectory(); $"{folder}\\{fileNames[i]}".WriteFileContent(codeTexts[i]); } } return(returnInfo); }
/// <summary> /// 点击生成按钮 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnGenerator_Click(object sender, EventArgs e) { var param = new CodeGeneratorParamInfo(); try { param.Tables = new List <TableInfo>(); foreach (DataGridViewRow row in dgvTable.Rows) { DataGridViewCheckBoxCell checkCell = row.Cells[2] as DataGridViewCheckBoxCell; if (checkCell.Value != null && Convert.ToBoolean(checkCell.Value)) { param.Tables.Add(row.DataBoundItem as TableInfo); } } if (param.Tables.Count == 0) { MessageBox.Show("请勾选要生成的表"); return; } param.FunctionTypes = GetFunctionTypes(); if (param.FunctionTypes.Length == 0) { MessageBox.Show("请勾选要生成的功能项"); return; } if (string.IsNullOrWhiteSpace(txtNamespacePfx.Text)) { MessageBox.Show("命名空间前辍不能为空"); return; } param.NamespacePfx = txtNamespacePfx.Text; switch (cbxPKType.SelectedItem.ToString()) { case "字符串": param.PkType = PrimaryKeyType.STRING; break; case "Guid": param.PkType = PrimaryKeyType.GUID; break; case "雪花算法": param.PkType = PrimaryKeyType.SNOWFLAKE; break; } param.Type = dgvTable.Tag.ToString(); param.IsTenant = cbxIsTenant.Checked; Cursor.Current = Cursors.WaitCursor; ICodeGeneratorService generatorService = AutofacTool.Resolve <ICodeGeneratorService>(); ReturnInfo <bool> returnInfo = generatorService.Generator(param); Cursor.Current = Cursors.Default; if (returnInfo.Success()) { MessageBox.Show("生成成功"); } else { MessageBox.Show(returnInfo.Msg); } } catch (Exception ex) { MessageBox.Show(ex.Message); } }