using System.Security.Policy; using System.Text; using System.Text.Encodings.Web; using System.Web; using YieldChain.Helpers; using YLErp.Modules.UnderlyingModule; namespace YLErp.Web.Controllers { public class SyntheticUnderlyingController : BaseController { public JsonResult GetAllValidSyntheticUnderlyings() { var list = new UnderlyingDalService(CurUser).GetAllValidSyntheticUnderlyings(); return JsonSuccess("", list); } public JsonResult GetSyntheticUnderlyingByName(string name) { if (name.IsNullOrWhiteSpace()) { return JsonError("请传入别名"); } var su = new UnderlyingDalService(CurUser).GetSyntheticUnderlyingByName(name); if (su == null) { return JsonError("没有相关组合标的"); } var codes = su.GetUnderlyingCodes().ToArray(); var codeDict = underlying_managerBLL.GetQuery() .Where(u => codes.Contains(u.UnderlyingCode)).ToDictionary(K => K.UnderlyingCode, V => V); var arr = new underlying_manager[codes.Length]; for (var i = 0; i < codes.Length; i++) { arr[i] = codeDict[codes[i]]; } su.UnderlyingList = arr; if (!su.ContractSize.HasValue) { su.ContractSize = 1; } return JsonSuccess("", su); } /// /// /// public JsonResult SaveSyntheticUnderlying(SyntheticUnderlyingDto req) { if (req == null) { return JsonError("保存的对象不能为空"); } req.OptId = CurUser.UserId; req.OptName = CurUser.UserName; req.OptDate = DateTime.Now; new UnderlyingDalService(CurUser).SaveSyntheticUnderlying(req, out var dbModel); return JsonSuccess("保存成功", dbModel); } /// /// /// public ActionResult SyntheticUnderlyingEdit(string syntheticUnderlyingName) { SyntheticUnderlyingDto su = null; if (!string.IsNullOrWhiteSpace(syntheticUnderlyingName)) { su = GetSyntheticUnderlying(syntheticUnderlyingName, out var canEdit); if (su == null) { return Content("没有找到组合标的数据"); } if (!canEdit) { return ShowError("系统存在使用此组合标的的交易,不能修改"); } } return View(su ?? new SyntheticUnderlyingDto()); } private SyntheticUnderlyingDto GetSyntheticUnderlying(string syntheticUnderlyingName, out bool canEdit) { canEdit = false; var su = new UnderlyingDalService(CurUser).GetSyntheticUnderlyingByName(syntheticUnderlyingName); if (su != null) { su.UnderlyingList = su.GetUnderlyingCodes() .Select(n => DataCacheProvider.GetUnderlyingDataSource().GetData(n)).ToArray(); if (!su.ContractSize.HasValue) { su.ContractSize = 1; } canEdit = !yldb.trade.Any(trade => trade.UnderlyingCode == syntheticUnderlyingName && trade.ValidState != ConsGlobal.InValid); } return su; } /// /// /// public ActionResult SyntheticUnderlyingView(string syntheticUnderlyingName) { if (string.IsNullOrWhiteSpace(syntheticUnderlyingName)) { return Content("缺少参数:合成标的代码"); } var su = GetSyntheticUnderlying(syntheticUnderlyingName, out var canEdit); if (su == null) { return Content("没有找到组合标的数据"); } if (canEdit) { ViewData["canEdit"] = "true"; } ViewBag.syntheticUnderlyingName = System.Web.HttpUtility.UrlEncode(syntheticUnderlyingName,Encoding.UTF8); return View(su); } /// /// /// public JsonResult SyntheticUnderlyingViewSave(underlying_managerSimpleReq req) { //需解码 if (!string.IsNullOrEmpty(req.UnderlyingCode)) { req.UnderlyingCode = HttpUtility.HtmlDecode(req.UnderlyingCode); } new UnderlyingDalService(CurUser).UpdateData(req.UnderlyingCode, req.MarginRate, req.VolatilityRate, req.UpDownLimit); return JsonSuccess("修改成功!"); } /// /// /// public JsonResult SyntheticUnderlyingViewRemove(string syntheticUnderlyingName) { new UnderlyingDalService(CurUser).RemoveSyntheticUnderlyingByName(syntheticUnderlyingName); return JsonSuccess("删除成功!"); } } }