163 lines
5.6 KiB
C#
163 lines
5.6 KiB
C#
using System.Net;
|
|
using System.Net.Http.Headers;
|
|
using System.Text;
|
|
using System.Web;
|
|
using YLErp.Modules.TradeModule;
|
|
using YLErp.Modules.TradeModule.ApiModule;
|
|
using YLErp.Modules.TradeModule.BaseModels;
|
|
using YLErp.Modules.TradeModule.QueryModule;
|
|
|
|
namespace YLWebAPI.ApiModule.ManagerApi
|
|
{
|
|
/// <summary>
|
|
/// OTC-13931 交易明细API接口
|
|
/// </summary>
|
|
[ManagerAuth]
|
|
public class TradeQueryController : BaseApiController
|
|
{
|
|
/// <summary>
|
|
/// 交易明细查询API
|
|
/// </summary>
|
|
[HttpPost, Route("api/v1/tradeDetailList")]
|
|
public ApiResponseModel TradeDetailList([FromBody] TradeDetailQueryApiModel model)
|
|
{
|
|
if (model is null)
|
|
{
|
|
model = new TradeDetailQueryApiModel();
|
|
}
|
|
model.IncludeGroupMain = true;
|
|
var pagedList = new TradeDetailQueryApiService(CurUser).TradeDetailPageList(model);
|
|
return JsonPagedList(pagedList);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 交易明细查询API
|
|
/// </summary>
|
|
[HttpPost, Route("api/v2/tradeDetailList")]
|
|
public ApiResponseModel TradeDetailListV2([FromBody] TradeDetailQueryApiV2Request request)
|
|
{
|
|
if (request is null)
|
|
{
|
|
request = new TradeDetailQueryApiV2Request();
|
|
}
|
|
request.IncludeGroupMain = true;
|
|
var list = new TradeDetailQueryApiV2Service(CurUser).GetList(request);
|
|
return JsonSuccess(list);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 当日所有了结信息查询 API
|
|
/// </summary>
|
|
/// <param name="detailQueryApiModel"></param>
|
|
/// <returns></returns>
|
|
[HttpPost, Route("api/v1/tradeCloseInfoList")]
|
|
public ApiResponseModel TradeCloseInfoList([FromBody] TradeCloseInfoRequestModel model)
|
|
{
|
|
if (model is null)
|
|
{
|
|
model = new TradeCloseInfoRequestModel();
|
|
}
|
|
if (model.ValueDate == null)
|
|
{
|
|
return JsonError($"了结日期 参数必须赋值");
|
|
}
|
|
var result = new TradeCloseInfoQueryApiService(CurUser).GetTradeCloseInfoList(model);
|
|
return JsonSuccess(result);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 根据了结日期,交易编号获取交易了结信息,可以不传参数即获取所有了结信息
|
|
/// </summary>
|
|
[HttpPost, Route("api/v1/tradeCloseInfos")]
|
|
public ApiResponseModel TradeCloseInfos(TradeSettleQueryModel model)
|
|
{
|
|
if (model is null)
|
|
{
|
|
return JsonError("处理请求失败:参数为null");
|
|
}
|
|
var infos = new OtcOptionMultiCloseService(CurUser).GetTradeCloseInfos(model.TradeNumber, "全部", model.ValueDate);
|
|
|
|
return JsonSuccess(infos);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 交易列表导出API
|
|
/// </summary>
|
|
[HttpPost, Route("api/v1/otc-option/tradeListExport")]
|
|
public HttpResponseMessage OtcOptionTradeExport([FromBody] OtcOptionTradeExportRequest model)
|
|
{
|
|
if (model is null)
|
|
{
|
|
model = new OtcOptionTradeExportRequest();
|
|
}
|
|
|
|
try
|
|
{
|
|
var bytes = new OtcOptionTradeExportService().ExportToExcel(model);
|
|
|
|
var result = new HttpResponseMessage(HttpStatusCode.OK)
|
|
{
|
|
Content = new ByteArrayContent(bytes)
|
|
};
|
|
|
|
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
|
|
{
|
|
FileName =HttpUtility.UrlEncode( $"场外期权成交记录-{DateTime.Now:yyyy-MM-dd}.xlsx",Encoding.UTF8)
|
|
};
|
|
|
|
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
|
|
|
|
return result;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return new HttpResponseMessage(HttpStatusCode.InternalServerError)
|
|
{
|
|
Content = new StringContent(ex.ToString(), System.Text.Encoding.UTF8, "text/plain")
|
|
};
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 场外期权交易开平仓信息 API
|
|
/// </summary>
|
|
[HttpPost, Route("api/v1/otc-option/open_close_infos")]
|
|
public ApiResponseModel TradeOpenCloseInfos([FromBody] SingleTradeQueryModel model)
|
|
{
|
|
if (model is null)
|
|
{
|
|
return JsonError("处理请求失败:参数为null");
|
|
}
|
|
|
|
if (string.IsNullOrEmpty(model.TradeNumber))
|
|
{
|
|
return JsonError("请填写交易编号");
|
|
}
|
|
|
|
var openInfo = new TradeDetailsQueryService(CurUser).GetOtcTradeFull(model.TradeNumber);
|
|
|
|
if (openInfo == null)
|
|
{
|
|
return JsonError("没有找到交易开仓信息");
|
|
}
|
|
|
|
openInfo.Notional = openInfo.OriginalNotional ?? 0;
|
|
openInfo.StockEqvNotional = openInfo.OriginalStockEqvNotional ?? 0;
|
|
|
|
var countRatio = YLErp.Modules.DataCacheProvider.GetUnderlyingDataSource().GetCountRatio(openInfo.UnderlyingCode);
|
|
|
|
openInfo.TradeAmount = openInfo.Notional / countRatio;
|
|
|
|
openInfo.MetaDic = new TradeMetaService(CurUser).GetTradeMeta(openInfo.id);
|
|
|
|
var closeInfos = new OtcOptionMultiCloseService(CurUser).GetTradeCloseInfos(model.TradeNumber, "全部");
|
|
|
|
return JsonSuccess(new
|
|
{
|
|
OpenInfo = openInfo,
|
|
CloseInfos = closeInfos
|
|
});
|
|
}
|
|
}
|
|
}
|