public IApiResultModel DoConvert([FromBody] ConvertDto dto)
        {
            if (string.IsNullOrWhiteSpace(dto.SolutionName))
            {
                return(ApiResultModel.FromError("解决方案名称不能为空!"));
            }
            if (!convertService.IsProjectPreValid(dto.SolutionName))
            {
                return(ApiResultModel.FromError("解决方案名称不合法,请更换!"));
            }
            if (dto.SolutionName.StartsWith("xLiAd."))
            {
                return(ApiResultModel.FromError("解决方案名称不能以 xLiAd. 开头,请更换!"));
            }
            OptionsSelect optionsSelect = new OptionsSelect()
            {
                Items = dto.Items
            };

            try
            {
                var fileItems = convertService.Convert(dto.SolutionName, optionsSelect);
                using (MemoryStream zipToOpen = new MemoryStream())
                {
                    using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Create))
                    {
                        foreach (var item in fileItems)
                        {
                            var en = archive.CreateEntry(item.FileFullName.TrimStart('/'));
                            using (var stream = en.Open())
                                stream.Write(item.Content, 0, item.Content.Length);
                        }
                    }
                    if (!Directory.Exists(configModel.ZipSavePath))
                    {
                        Directory.CreateDirectory(configModel.ZipSavePath);
                    }
                    var fileName = $"{dto.SolutionName}.{DateTime.Now:yyyy-MM-dd-HH-mm-ss}.zip";
                    var fullName = Path.Combine(configModel.ZipSavePath, fileName);
                    var bs       = zipToOpen.ToArray();
                    using (var fs = new FileStream(fullName, FileMode.Create))
                        fs.Write(bs, 0, bs.Length);
                    return(ApiResultModel.FromData(fileName));
                }
            }
            catch (Exception ex)
            {
                return(ApiResultModel.FromError(ex.Message));
            }
        }
示例#2
0
        private void BtnBorn_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrWhiteSpace(TbSolutionName.Text))
            {
                MessageBox.Show("解决方案名称不能为空!");
                return;
            }
            if (string.IsNullOrWhiteSpace(TbTargetFolder.Text))
            {
                MessageBox.Show("代码放置位置不能为空!");
                return;
            }
            if (!convertService.IsProjectPreValid(TbSolutionName.Text))
            {
                MessageBox.Show("解决方案名称不合法,请更换!");
                return;
            }
            if (TbSolutionName.Text.StartsWith("xLiAd."))
            {
                MessageBox.Show("解决方案名称不能以 xLiAd. 开头,请更换!");
                return;
            }
            if (!System.IO.Directory.Exists(TbTargetFolder.Text))
            {
                MessageBox.Show("代码放置位置不存在,请更换!");
                return;
            }
            string ActureSaveFolder;

            if (CbInSubFolder.Checked)
            {
                ActureSaveFolder = System.IO.Path.Combine(TbTargetFolder.Text, TbSolutionName.Text);
            }
            else
            {
                ActureSaveFolder = TbTargetFolder.Text;
            }

            if (System.IO.Directory.Exists(ActureSaveFolder))
            {
                var dict = new System.IO.DirectoryInfo(ActureSaveFolder);
                if (dict.GetDirectories().Any() || dict.GetFiles().Any())
                {
                    MessageBox.Show("代码放置位置非空,请更换!");
                    return;
                }
            }
            else
            {
                System.IO.Directory.CreateDirectory(ActureSaveFolder);
            }
            OptionsSelect optionsSelect = new OptionsSelect()
            {
                Items = new OptionsSelectItem[]
                {
                    new OptionsSelectItem()
                    {
                        OptionCode    = "SqlType",
                        SelectOrInput = RbSqlServer.Checked ? "SqlServer" : "MySql"
                    },
                    new OptionsSelectItem()
                    {
                        OptionCode    = "SqlConn",
                        SelectOrInput = TbConn.Text
                    }
                }
            };
            var fileItems = convertService.Convert(TbSolutionName.Text, optionsSelect);

            foreach (var item in fileItems)
            {
                var fullName = System.IO.Path.Combine(ActureSaveFolder, item.FileFullName.TrimStart('/'));
                var fd       = Path.GetDirectoryName(fullName);
                if (!Directory.Exists(fd))
                {
                    Directory.CreateDirectory(fd);
                }
                using (FileStream fs = new FileStream(fullName, FileMode.Create))
                    fs.Write(item.Content, 0, item.Content.Length);
            }
            MessageBox.Show("生成成功!");
        }