You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Gateway/Proxy/SiteMarketActivity.cs

332 lines
14 KiB
C#

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.Proxy.Activities
{
[Mapping("Proxy", "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.Proxy.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<WebMeta>(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.Picture");
});
String Value = "";
switch (Model)
{
case "IconSrc":
var media_id = this.AsyncDialog("IconSrc", g =>
{
if (request.IsApp)
{
return Web.UIDialog.CreateDialog("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);
var postUrl = new Uri(APIProxy.Uri, "/TEMP" + iconsrc.AbsolutePath);
postUrl.WebRequest().Put(new System.Net.Http.StreamContent(new HttpClient().GetAsync(iconsrc).Result.Content.ReadAsStream()));
Value = postUrl.AbsoluteUri;
break;
case "Category":
{
Value = Web.UIDialog.AsyncDialog(this.Context, "Category", g =>
{
var AppCategory = JSON.Deserialize<Hashtable>(UMC.Proxy.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 "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<WebMeta>(UMC.Proxy.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);
}
}
}