using System.Net.Http; using System.Collections; using System.Resources; using System.Security.Cryptography; using System; using UMC.Web; using UMC.Data; using System.Linq; using UMC.Web.UI; using System.Collections.Generic; using UMC.Net; namespace UMC.ITME.Activities { [Apiumc("ITME", "Market", Desc = "我的出售", Auth = WebAuthType.Admin)] class SiteMarketActivity : UMC.Web.WebActivity { public override void ProcessActivity(UMC.Web.WebRequest request, UMC.Web.WebResponse response) { var secret = UMC.Data.WebResource.Instance().Provider["appSecret"]; if (String.IsNullOrEmpty(secret)) { this.Prompt("当前版本未登记注册", false); this.Context.Response.Redirect("System", "License"); } var root = this.AsyncDialog("Root", "oa"); var webr = UMC.ITME.Utility.Sign(new Uri(APIProxy.Uri, "Transfer").WebRequest(), secret).Put(new WebMeta().Put("type", "AppGoods").Put("root", root)); var str = webr.ReadAsString(); var appGood = JSON.Deserialize(str); var Model = this.AsyncDialog("Model", gKey => { var webr = UMC.Web.WebResource.Instance(); UITitle uITItle = UITitle.Create(); uITItle.Title = "发布市场"; var sestion = UISection.Create(uITItle); var imageTextView = new UMC.Web.UI.UIImageTextValue(appGood["IconSrc"], "", "图标"); imageTextView.Style.Name("image-width", "100"); imageTextView.Click(new UIClick(request, gKey, "IconSrc")); // imageTextView.Tag("推荐"); sestion.Add(imageTextView); // imageTextView.t sestion.AddCell("发布编码", $"{appGood["Key"]}_{root}"); sestion.AddCell("发布名称", appGood["Caption"], new UIClick(request, gKey, "Caption")); var sT = appGood["Description"] ?? appGood["Caption"]; if (sT.Length > 48) { sT = sT.Substring(0, 48) + "..."; } var desc = new UIDesc(sT); desc.Style.Height(40).Color(0x999).Size(13); desc.Click(new UIClick(request, gKey, "Description")); sestion.Add(desc); var Tel = appGood["Tel"]; sestion.NewSection().AddCell("出售价格", $"{appGood["Price"]}元" , new UIClick(request, gKey, "Price")).AddCell("售后电话", String.IsNullOrEmpty(Tel) ? "未设置" : Tel, new UIClick(request, gKey, "Tel")); switch (Utility.IntParse(appGood["Type"], 0)) { case 0: sestion.NewSection().AddCell("发布方式", "反向代理", new UIClick(request, gKey, "Type")) .AddCell("营销网址", appGood["HelpUrl"] ?? "未设置", new UIClick(request, gKey, "HelpUrl")); break; case 1: sestion.NewSection().AddCell("发布方式", "身份互联", new UIClick(request, gKey, "Type")) .AddCell("营销网址", appGood["HelpUrl"] ?? "未设置", new UIClick(request, gKey, "HelpUrl")); break; case 2: var Domain = appGood["Domain"]; sestion.NewSection().AddCell("发布方式", "Saas互联", new UIClick(request, gKey, "Type")) .AddCell("Saas网址", String.IsNullOrEmpty(Domain) ? "未设置" : Domain, new UIClick(request, gKey, "Domain")) .AddCell("营销网址", appGood["HelpUrl"] ?? "未设置", new UIClick(request, gKey, "HelpUrl")); break; } sestion.NewSection().AddCell("支持系统", appGood["OperatingSystem"] , new UIClick(request, gKey, "OperatingSystem")).AddCell("硬件配置", appGood["Hardware"], new UIClick(request, gKey, "Hardware")) .AddCell("演示网址", appGood["DemoUrl"] ?? "未设置", new UIClick(request, gKey, "DemoUrl")); var ness = sestion .NewSection().AddCell("出售状态", appGood["State"]); ness.AddCell("应用类别", appGood["Category"] ?? "未设置", new UIClick(request, gKey, "Category")); if (appGood.ContainsKey("Hot")) { ness.AddCell("热卖推荐", "是"); } var ls = sestion.NewSection(); var cell = UICell.UI("介绍说明", "", new UIClick(request, gKey, "Content")); cell.Style.BorderAll(); ls.Add(cell); var Content = appGood["Content"]; if (String.IsNullOrEmpty(Content) == false) { ls.DisableSeparatorLine(); ls.AddCells(Markdown.Transform(Content)); } else { ls.Add("Desc", new UMC.Web.WebMeta().Put("desc", "未有介绍").Put("icon", "\uF016"), new UMC.Web.WebMeta().Put("desc", "{icon}\n{desc}"), new UIStyle().Align(1).Color(0xaaa).Padding(20, 20).BgColor(0xfff).Size(12).Name("icon", new UIStyle().Font("wdk").Size(60))); } sestion.UIFootBar = new UIFootBar() { IsFixed = true }; sestion.UIFootBar.AddText(new UIEventText(appGood["Status"] == "1" ? "应用下架" : "应用上架").Click(new UIClick(request, gKey, "Status")), new UIEventText("更新配置").Click(new UIClick(request, gKey, "PUT")).Style(new UIStyle().BgColor())); sestion.SendTo($"{request.Model}.{request.Command}.Del", this.Context, $"{request.Model}.{request.Command}", "System.Image"); }); String Value = ""; switch (Model) { case "IconSrc": var media_id = this.AsyncDialog("IconSrc", g => { if (request.IsApp) { return Web.UIDialog.Create("File"); } else { var from = new Web.UIFormDialog() { Title = "图片上传" }; from.AddFile("选择图片", "IconSrc", String.Empty); from.Submit("确认上传", $"{request.Model}.{request.Command}"); return from; } }); var iconsrc = new Uri(request.Url, media_id); using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) { var postUrl = new Uri(APIProxy.Uri, "/TEMP" + iconsrc.AbsolutePath); iconsrc.WebRequest().Get().ReadAsStream(ms); ms.Position = 0; postUrl.WebRequest().Put(ms); Value = postUrl.AbsoluteUri; } break; case "Category": { Value = Web.UIDialog.AsyncDialog(this.Context, "Category", g => { var AppCategory = JSON.Deserialize(UMC.ITME.Utility.Sign(new Uri(APIProxy.Uri, "Transfer").WebRequest(), secret).Put(new WebMeta().Put("type", "AppGoods")).ReadAsString())["Category"] as Array; var dl = new UISheetDialog() { Title = "应用分类" }; dl.Cells(3);// = 3; for (var i = 0; i < AppCategory.Length; i++) { dl.Put(AppCategory.GetValue(i) as string, i.ToString()); } return dl; }); } break; case "Caption": Value = Web.UIDialog.AsyncDialog(this.Context, "Caption", g => { var dl = new Web.UIFormDialog() { Title = "应用标题" }; dl.AddText("应用标题", "Caption", appGood["Caption"]); dl.Submit("确认更改", $"{request.Model}.{request.Command}"); return dl; }); break; case "Period": var Period = Utility.IntParse(this.AsyncDialog("Period", g => new Web.UINumberDialog(appGood["Period"]) { Title = "售后占比" }), 0); if (Period >= 0 && Period <= 100) { Value = Period.ToString(); } else { this.Prompt("售后占比不能超过100,小于零"); } break; case "TrialDays": var TrialDays = Utility.IntParse(this.AsyncDialog("TrialDays", g => new Web.UINumberDialog(appGood["TrialDays"]) { Title = "试用天数" }), 0); if (TrialDays >= 0) { Value = TrialDays.ToString(); } else { this.Prompt("试用天数不能小于零"); } break; case "PeriodType": Value = this.AsyncDialog("PeriodType", g => { return new Web.UISheetDialog() { Title = "计价单位" }.Put("按周", "0").Put("按月", "1").Put("按季", "2").Put("年", "3"); }); break; case "Description": Value = Web.UIDialog.AsyncDialog(this.Context, "Description", g => { var dl = new Web.UIFormDialog() { Title = "应用简介" }; dl.AddTextarea("简介", "Description", appGood["Description"]).Put("Rows", 10); dl.Submit("确认更改", $"{request.Model}.{request.Command}"); return dl; }); break; case "Price": Value = this.AsyncDialog("Price", g => new Web.UINumberDialog(appGood["Price"]) { Title = "出售价格" }); break; case "Type": Value = this.AsyncDialog("Type", g => { return new Web.UISheetDialog() { Title = "发布方式" }.Put("反向代理", "0").Put("身份互联", "1") .Put("Saas互联", "2"); }); break; case "HelpUrl": var HelpUrl = this.AsyncDialog("HelpUrl", g => { return new Web.UITextDialog(appGood["HelpUrl"]) { Title = "营销网址" }; }); try { Value = new Uri(HelpUrl).AbsoluteUri; } catch { this.Prompt("网址格式不正确"); } break; case "Domain": var Domain = this.AsyncDialog("Domain", g => { return new Web.UITextDialog(appGood["Domain"]) { Title = "Saas网址" }; }); try { Value = new Uri(new Uri(Domain), "/").AbsoluteUri; } catch { this.Prompt("网址格式不正确"); } break; case "Tel": Value = this.AsyncDialog("Tel", g => { return new Web.UITextDialog(appGood["Tel"]) { Title = "售后电话" }; }); break; case "Status": Value = "Change"; break; case "OperatingSystem": var OperatingSystem = appGood["OperatingSystem"]; // var l= Value = this.AsyncDialog("OperatingSystem", g => { var check = new Web.UICheckboxDialog() { Title = "支持系统" }; check.Options.Put("Linux", "Linux", OperatingSystem?.Contains("Linux") == true) .Put("Winfows", "Winfows", OperatingSystem?.Contains("Winfows") == true) .Put("MacOS", "MacOS", OperatingSystem?.Contains("MacOS") == true); return check; }); break; case "Hardware": Value = this.AsyncDialog("Hardware", g => { var check = new Web.UISheetDialog() { Title = "硬件配置" }; check.Put("2核4G").Put("4核8G").Put("4核16G").Put("8核32G"); return check; }); break; case "DemoUrl": var DemoUrl = this.AsyncDialog("DemoUrl", g => { return new Web.UITextDialog(appGood["DemoUrl"]) { Title = "演示网址" }; }); try { Value = new Uri(new Uri(DemoUrl), "/").AbsoluteUri; } catch { this.Prompt("网址格式不正确"); } break; case "PUT": var site = DataFactory.Instance().Site(root); if (site == null) { this.Prompt("当前应用配置不存在,不可更新配置"); } var data = SiteActivity.PutMarket(site, secret); this.Prompt(data?["msg"] ?? "提交异常"); break; case "Content": { Value = Web.UIDialog.AsyncDialog(this.Context, "Content", r => { var from5 = new UIFormDialog() { Title = "介绍说明" }; from5.AddTextarea("应用介绍,支持MD格式", "Content", appGood["Content"]).Put("Rows", 20).NotRequired(); from5.Submit("确认更改", $"{request.Model}.{request.Command}"); return from5; }); } break; } if (String.IsNullOrEmpty(Value) == false) { var AppCategory = JSON.Deserialize(UMC.ITME.Utility.Sign(new Uri(APIProxy.Uri, "Transfer").WebRequest(), secret) .Put(new WebMeta().Put("type", "AppGoods", "root", root, "key", Model, "value", Value)).ReadAsString()); if (AppCategory.ContainsKey("msg")) { this.Prompt("提示", AppCategory["msg"]); } } this.Context.Send(true); } } }