using Newtonsoft.Json;
using Org.BouncyCastle.Asn1.Ocsp;
using YLErp.Commons;
using YLErp.Modules.AppModule;
using YLErp.Modules.EodModule.SettlementModule;
using YLErp.Web.App_Start.AppConfig;
using YLErp.Web.Areas.Admin.Models;
namespace YLErp.Web.Areas.Admin.Controllers
{
public class OtcConfigController : AdminBaseController
{
public ActionResult Index()
{
return AppConfig();
}
#region----AppConfig----
public ActionResult AppConfig()
{
var datas = DbContextFactory.GetYLDbContext().AppConfig.Where(n => n.PGroup == "ProjectConfig").ToArray();
foreach (var data in datas)
{
if (data.PType == "string")
{
data.PGroup = "01";
}
else if (data.PType == "text")
{
data.PGroup = "01";
}
else if (data.PType == "bool")
{
data.PGroup = "11";
}
else
{
data.PGroup = "02";
}
}
datas = datas.OrderBy(n => n.PGroup).ThenBy(n => n.PName).ToArray();
return View("AppConfig", datas);
}
public JsonResult AjaxSaveAppConfig(string name, string value)
{
if (string.IsNullOrEmpty(name))
{
return JsonError("保存失败,请求参数不能为空");
}
if (!string.IsNullOrWhiteSpace(value))
{
value = Uri.UnescapeDataString(value);
}
using (var db = DbContextFactory.GetYLDbContext())
{
var data = db.AppConfig.FirstOrDefault(n => n.PGroup == "ProjectConfig" && n.PName == name);
if (data == null)
{
return JsonError("保存失败,没有找到配置数据");
}
data.PValue = value;
PS.SetConfig(name, value);
db.SaveChanges();
return JsonSuccess($"{DateTime.Now:yyyyMMdd HH:mm:ss}--保存成功--{data.PName}={data.PValue}");
}
}
public JsonResult AjaxResetAppConfig()
{
AppManager.ResetAppConfig();
return JsonSuccess("刷新配置成功");
}
#endregion
#region----OtcWebConfig---
public ActionResult WebConfig()
{
var list = AppHelper.GetConfigFieldAttributes();
return View(list);
}
public JsonResult AjaxSaveWebConfig(OtcAppConfig model)
{
if (model == null)
{
return JsonError("请求参数无效");
}
var json = JsonHelper.Serialize(model);
AppHelper.ResetConfig(json);
return JsonSuccess();
}
#endregion
#region----OtcFormat----
public ActionResult OtcFormat()
{
var viewModel = OtcFormatViewModel.CreateViewModel(OtcFormatHelper.FormatModel);
return View(viewModel);
}
///
/// 保存配置
///
///
/// 保存链路:写 DB(AppConfig.OtcFormatConfig) → 落盘 App_Data/Config/otcformat.js → 刷新内存。
/// 注意:File.WriteAllText 只写当前节点磁盘。多节点部署下,未处理本次请求的节点文件不会更新,
/// 会造成"DB 正确但 /front/otcformat 返回旧值"。完整排查见 FrontController 类注释。
///
public JsonResult AjaxSaveOtcFormat(OtcFormatModel model)
{
if (model is null)
{
return JsonError("参数不能为空");
}
var json = JsonConvert.SerializeObject(model, Formatting.Indented);
var service = new AppConfigService(OptUserInfo.SystemUser);
service.SaveOtcFormatConfig(json);
var path = Server.MapPath("~/App_Data/Config/otcformat.js");
var jscode = "var main = main || {};\r\nmain.formatOptions= " + json + ";\r\n\r\n";
System.IO.File.WriteAllText(path, jscode);
OtcFormatHelper.Initialize(json);
return JsonSuccess();
}
#endregion
#region---SMTP Config----
public ActionResult SmtpConfig()
{
return View(AppManager.SmtpConfig);
}
///
/// 保存邮件发送配置
///
public JsonResult AjaxSaveSmtpConfig(SmtpConfigExt smtpConfig)
{
AppManager.ResetSmtpConfig(smtpConfig);
return JsonSuccessMessage("保存成功");
}
///
/// 邮件发送测试
///
public JsonResult AjaxSendMailTest(string mailTo)
{
if (string.IsNullOrWhiteSpace(mailTo))
{
return JsonError("发送邮件地址不能为空");
}
LogFactory.GetLogger().Info($"邮件发送测试,mailTo={mailTo}");
var error = EmailHelper.SendMail(mailTo, "邮件发送测试", "邮件发送测试");
LogFactory.GetLogger().Info($"邮件发送测试完成,mailTo={mailTo},error={error}");
if (string.IsNullOrWhiteSpace(error))
{
return JsonSuccess();
}
return JsonError(error);
}
#endregion
#region----MailTemplate----
public ActionResult MailTemplate()
{
return View();
}
public JsonResult AjaxGetMailTemplate(string emailType)
{
var data = new EmailTemplateService(CurUser).GetData(emailType);
return JsonSuccess(data ?? new EmailTemplate());
}
public JsonResult AjaxSaveMailTemplate(EmailTemplate data)
{
data.IsBodyHtml = true;
data.BodyTemplate = Uri.UnescapeDataString(data.BodyTemplate ?? string.Empty);
new EmailTemplateService(CurUser).SaveData(data);
return JsonSuccess("保存成功");
}
#endregion
#region----收盘配置----
public ActionResult SettlementConfig()
{
var config = PS.Config.GetSettlementConfig();
return View(config);
}
public JsonResult AjaxSaveSettlementConfig(Configuration.SettlementConfig config)
{
var json = config.ToJson();
new AppConfigService(CurUser).SaveConfig("ProjectConfig", "Erp.SettlementConfig", json, "string", "收盘配置");
PS.SetConfig("Erp.SettlementConfig", json);
return JsonSuccess();
}
///
/// 客户资金分买卖权结算重算
///
///
public JsonResult AjaxClientBalanceReCalcBS(BalanceRecalcBSRequest request)
{
Task.Run(() => new EodClientBalanceCalcBS(CurUser).ClientBalanceReCalc(request.TradeDateStart,request.TradeDateEnd));
return JsonSuccess();
}
public JsonResult AjaxClientBalanceReCalcProcess()
{
EodClientBalanceCalcBS.thQueue.TryPeek(out EodClientBalanceReCalcModel result);//取出最新进度
return JsonSuccess(result);
}
#endregion
#region----登出----
public ActionResult Logout()
{
return Redirect("/admin/Login");
}
#endregion
#region----交易要素配置----
public ActionResult TradePricingCfg()
{
return View();
}
#endregion
#region----ClientEditConfig----
public ActionResult ClientEditConfig()
{
ViewData["config"] = YLErp.Modules.SystemModule.ClientEditConfigService.GetCurrentConfigJson();
return View();
}
public ActionResult downClientEditConfig(string t)
{
string configJson;
if ("def".Equals(t, StringComparison.OrdinalIgnoreCase))
{
configJson = YLErp.Modules.SystemModule.ClientEditConfigService.GetDefaultConfigJson();
}
else
{
configJson = YLErp.Modules.SystemModule.ClientEditConfigService.GetCurrentConfigJson();
}
var buffer = System.Text.Encoding.UTF8.GetBytes(configJson);
return File(buffer, "application/javascript; charset=utf-8", "clientEditConfig.js");
}
public JsonResult AjaxSaveClientEditConfig(string config)
{
YLErp.Modules.SystemModule.ClientEditConfigService.SaveEditConfig(config);
return JsonSuccess();
}
#endregion
#region----结算报告配置----
public ActionResult TradeMarketReportCfg()
{
return View();
}
#endregion
}
}