/// <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);
        }
Esempio n. 3
0
        /// <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);
            }
        }