ComplianceServer/oldcode/Core.Web/Controllers/StockPoolController.cs

528 lines
18 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Core.Web.App_Start;
using Core.Web.WebHelper;
using CRM.Core.BLL;
using CRM.Core.Common.Layui;
using CRM.Core.Common.WebHelper;
using CRM.Core.DTO;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Net.Sockets;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
using System.Text;
using System.Web.Helpers;
using System.Web.Mvc;
using System.Web.Script.Serialization;
using System.Web.Services.Description;
using WX.CRM.Common;
using WX.CRM.Common.StockHelper;
namespace Core.Web.Controllers
{
public class StockPoolController : BaseController
{
private StockPools_BL _stockBL = new StockPools_BL();
private WX.CRM.Common.ValidationErrors errors = new WX.CRM.Common.ValidationErrors();
public StockPoolController()
{
}
[AuthorizeRedirect(RightsConfig.CONST_股票报备, ToolBarConfig.CONST_NotButton, true)]
[HttpGet]
public ActionResult Index()
{
ViewBag.rightCode = RightsConfig.CONST_股票报备;
var select = BuildInduNameList();
ViewBag.InduList = select.InduInfo;
return View();
}
[HttpPost]
[AuthorizeRedirect(RightsConfig.CONST_股票报备, ToolBarConfig.CONST_NotButton, false)]
public JsonResult Index(Laypage pager, SearchStockPoolPageDto dto)
{
try
{
var list = _stockBL.GetList(ref pager, dto);
foreach (var item in list)
{
item.StatusName = item.Status == null ? "禁用" : item.Status == 0 ? "正常" : "禁用";
item.UpdateTime = !string.IsNullOrWhiteSpace(item.UpdateTime) ? Convert.ToDateTime(item.UpdateTime).ToString("yyyy-MM-dd HH:mm:ss") : item.UpdateTime;
}
var data = new LayuiData<ZxdStockPoolDto>()
{
msg = "数据加载成功!",
count = pager.count,
code = 0,
data = list
};
return Json(data, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
LogHelper.Error(ex.ToString());
return Json(new { }, JsonRequestBehavior.AllowGet);
}
}
public JsonResult Page(Laypage pager, SearchStockPoolNewPageDto dto)
{
var url = ConfigurationManager.AppSettings["StockPoolUrlNew"];
var authorization = ConfigurationManager.AppSettings["StockPoolAuthorization"];
dto.PageNum = pager.page;
dto.PageSize = pager.limit;
var json = JsonConvert.SerializeObject(dto, Formatting.Indented, new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver()
});
var result = Utility.PostAjaxData($"{url}/stockpool/api/stock/pool/page", json, authorization, true);
var data = JsonHelper.FromJson<StockPoolResult<StockPoolResultRow>>(result);
pager.count = data.Total;
return Json(data, JsonRequestBehavior.AllowGet);
}
public JsonResult LogPage(Laypage pager, int id)
{
var url = ConfigurationManager.AppSettings["StockPoolUrlNew"];
var authorization = ConfigurationManager.AppSettings["StockPoolAuthorization"];
var request = $"pageNum={pager.page}&pageSize={pager.limit}&stockReportId={id}&businessType=1";
var result = Utility.GetData($"{url}/stockpool/api/stock/report/listOperateLog", request, authorization, true);
var data = JsonHelper.FromJson<StockPoolResult<StockPoolLog>>(result);
pager.count = data.Total;
return Json(data, JsonRequestBehavior.AllowGet);
}
[AuthorizeRedirect(RightsConfig.CONST_股票报备, ToolBarConfig.CONST_NotButton, true)]
[HttpGet]
public ActionResult ReportList()
{
ViewBag.rightCode = RightsConfig.CONST_股票报备;
var select = BuildInduNameList();
ViewBag.InduList = select.InduInfo;
ViewBag.ProductLineName = select.ProductLineName;
ViewBag.OperatorName = select.OperatorName;
ViewBag.ColumnName = select.ColumnName;
return View();
}
[HttpPost]
[AuthorizeRedirect(RightsConfig.CONST_股票报备, ToolBarConfig.CONST_NotButton, false)]
public JsonResult ReportList(Laypage pager, SearchStockAuditPageDto dto)
{
try
{
var list = _stockBL.GetReportList(ref pager, dto);
var data = new LayuiData<ZxdStockAuditDto>()
{
msg = "数据加载成功!",
count = pager.count,
code = 0,
data = list
};
return Json(data, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
LogHelper.Error(ex.ToString());
return Json(new { }, JsonRequestBehavior.AllowGet);
}
}
[HttpGet]
[AuthorizeRedirect(RightsConfig.CONST_股票报备, ToolBarConfig.CONST_NotButton, true)]
public ActionResult Log(int id)
{
ViewBag.Id = id;
return View();
}
[HttpGet]
[AuthorizeRedirect(RightsConfig.CONST_股票报备, ToolBarConfig.CONST_NotButton, true)]
public ActionResult Check(int id, int check)
{
var model = new StockAuditOrRejectDto
{
Id = id,
Check = check
};
return View(model);
}
[HttpPost]
public ActionResult Check(int id, string remark, int check)
{
var ret = new retMsg { result = true, retcode = 200 };
var secret = ConfigurationManager.AppSettings["StockPoolSecret"];
var url = ConfigurationManager.AppSettings["StockPoolUrlNew"];
var authorization = ConfigurationManager.AppSettings["StockPoolAuthorization"];
try
{
StockAuditOrRejectDto dto = new StockAuditOrRejectDto
{
Id = id,
Reason = remark,
Check = check,
CheckUserName = UserName,
};
BuildPostBody(dto, secret);
var json = JsonConvert.SerializeObject(dto, Formatting.Indented, new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver()
});
var result = Utility.PostAjaxData($"{url}/stockpool/api/stock/pool/heguiAudit", json, authorization, true);
var data = JsonHelper.FromJson<StockPoolResult<StockPoolResultRow>>(result);
//_stockBL.CheckStockPools(model);
}
catch (Exception ex)
{
ret = new retMsg { result = false, retcode = 200, retmsg = ex.Message };
}
return Json(ret, JsonRequestBehavior.AllowGet);
}
/// <summary>
/// 行业下拉框
/// </summary>
/// <returns></returns>
public DropSelectList BuildInduNameList()
{
try
{
var appId = ConfigurationManager.AppSettings["StockPoolAppId"];
var secret = ConfigurationManager.AppSettings["StockPoolSecret"];
ApiSignHelper apiSignHelper = new ApiSignHelper(appId, secret);
var url = ConfigurationManager.AppSettings["StockPoolUrl"] + "/api/Stock/GetDropSelectList";
Dictionary<string, object> param = new Dictionary<string, object>();
var ret = apiSignHelper.GetApi<string>(url, param);
DropSelectList dropSelectList = JsonConvert.DeserializeObject<DropSelectList>(ret.Data);
return dropSelectList;
}
catch (Exception ex)
{
LogHelper.Error($"获取下拉框失败{ex.Message}");
return new DropSelectList();
}
}
private void BuildPostBody(StockAuditOrRejectDto dto, string key)
{
var nowTime = DateTime.Now;
var timestamp = GetTimeStampByTime(nowTime);
dto.Timestamp = timestamp;
dto.CheckTime = nowTime.ToString("yyyy-MM-dd HH:mm:ss");
StringBuilder beforeSignStr = new StringBuilder();
beforeSignStr.Append(dto.Id)
.Append(dto.Check)
.Append(dto.CheckUserName)
.Append(dto.CheckTime)
.Append(dto.Timestamp);
dto.Sign = HmacMD5(beforeSignStr.ToString(), key);
}
public long GetTimeStampByTime(DateTime nowTime)
{
TimeSpan ts = nowTime - new DateTime(1970, 1, 1, 8, 0, 0, 0);
return long.Parse(Convert.ToInt64(ts.TotalSeconds).ToString());
}
public string HmacMD5(string ciphertext, string accessKey)
{
Encoding utf = new UTF8Encoding();
HMACMD5 hmac = new HMACMD5(utf.GetBytes(accessKey));
byte[] hashValue = hmac.ComputeHash(utf.GetBytes(ciphertext));
return Convert.ToBase64String(hashValue);
}
public class SearchStockPoolNewPageDto
{
/// <summary>
/// 审核状态10专业审核中20合规审核中99审核通过-1审核驳回
/// </summary>
public int? CheckStatus { get; set; }
public string ChosenDateEnd { get; set; }
public string ChosenDateStart { get; set; }
/// <summary>
/// 入池方式 1-人工 2-自动
/// </summary>
public int? ChosenType { get; set; }
/// <summary>
/// 申请人
/// </summary>
public string CreateUser { get; set; }
/// <summary>
/// 分页,页数
/// </summary>
public int PageNum { get; set; }
/// <summary>
/// 分页,每页条数
/// </summary>
public int PageSize { get; set; }
/// <summary>
/// 产品线 1001:东方股票1002六合1004懂牛
/// </summary>
public string PlatformId { get; set; }
/// <summary>
/// 产品线 1001:东方股票1002六合1004懂牛
/// </summary>
public List<string> PlatformIds
{
get
{
return !string.IsNullOrEmpty(PlatformId) ? PlatformId.Split(',').ToList() : null;
}
}
public string InduName { get; set; }
/// <summary>
/// 在池状态0-在池1-出池
/// </summary>
public int? Status { get; set; }
/// <summary>
/// 股票代码
/// </summary>
public string StockCode { get; set; }
/// <summary>
/// 股票名称
/// </summary>
public string StockName { get; set; }
}
public class StockPoolResult<T>
{
public int Total { get; set; }
public List<T> Rows { get; set; }
public int Code { get; set; }
public string Msg { get; set; }
}
public class StockPoolResultRow
{
/// <summary>
/// Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 入选价
/// </summary>
public decimal ChosenPrice { get; set; }
/// <summary>
/// 入选日期
/// </summary>
public string ChosenDate { get; set; }
/// <summary>
/// 入选理由
/// </summary>
public string ChosenReason { get; set; }
/// <summary>
/// 入选方式 1-人工 2-自动
/// </summary>
public int ChosenType { get; set; }
/// <summary>
/// 入选方式
/// </summary>
public string ChosenTypeStr
{
get
{
return ChosenType == 1 ? "人工报备" :
ChosenType == 2 ? "自动报备" : "--";
}
}
/// <summary>
/// 审核流程状态10专业审核中20合规审核中99审核通过-1审核驳回
/// </summary>
public int CheckStatus { get; set; }
/// <summary>
/// 审核流程状态
/// </summary>
public string CheckedStr
{
get
{
return CheckStatus == 10 ? "专业审核中" :
CheckStatus == 20 ? "合规审核中" :
CheckStatus == 99 ? "审核通过" :
CheckStatus == -1 ? "审核驳回" : "--";
}
}
/// <summary>
/// 申请人
/// </summary>
public string CreateUser { get; set; }
/// <summary>
/// 报备时间
/// </summary>
public string CreateTime { get; set; }
/// <summary>
/// 在池状态0正常 1禁用
/// </summary>
public int? Status { get; set; }
/// <summary>
/// 在池状态0正常 1禁用
/// </summary>
public string StatusStr
{
get
{
return Status == null ? "--"
: Status == 0 ? "正常"
: Status == 1 ? "禁用" : "--";
}
}
/// <summary>
/// 所属行业
/// </summary>
public string InduName { get; set; }
/// <summary>
/// 产品线 1001:东方股票1002六合1004懂牛
/// </summary>
public int? PlatformId { get; set; }
/// <summary>
/// 产品线
/// </summary>
public string Platform => PlatformId == 1001 ? "东方股票" :
PlatformId == 1002 ? "六合" :
PlatformId == 1004 ? "懂牛" :
PlatformId == 1005 ? "聚牛" :
PlatformId == 2001 ? "短线王" : "--";
/// <summary>
/// 行业代码
/// </summary>
public string InnerCode { get; set; }
/// <summary>
/// 推荐仓位下限
/// </summary>
public decimal? Price { get; set; }
/// <summary>
/// 股票代码
/// </summary>
public string StockCode { get; set; }
/// <summary>
/// 股票名称
/// </summary>
public string StockName { get; set; }
}
public class StockPoolLog
{
public int Id { get; set; }
/// <summary>
/// 操作事项类型
/// </summary>
public int OperateType { get; set; }
/// <summary>
/// 操作事项类型
/// </summary>
public string OperateTypeStr
{
get
{
return OperateType == 0 ? "提交申请" :
OperateType == 1 ? "专业审核" :
OperateType == 2 ? "合规审核" :
OperateType == 3 ? "入池" :
OperateType == 4 ? "出池" : "--";
}
}
/// <summary>
/// 股票报备id
/// </summary>
public int StockReportId { get; set; }
/// <summary>
/// 触发类型0-人工1-自动
/// </summary>
public int TriggerType { get; set; }
/// <summary>
/// 触发类型
/// </summary>
public string TriggerTypeStr
{
get
{
return TriggerType == 0 ? "人工" :
TriggerType == 1 ? "自动" : "--";
}
}
/// <summary>
/// 操作结果
/// </summary>
public string OperateResult { get; set; }
/// <summary>
/// 操作说明
/// </summary>
public string OperateRemark { get; set; }
/// <summary>
/// 操作人姓名
/// </summary>
public string CreateName { get; set; }
/// <summary>
/// 操作人id
/// </summary>
public int? CreateBy { get; set; }
/// <summary>
/// 操作时间
/// </summary>
public string CreateTime { get; set; }
}
public class StockAuditOrRejectDto
{
/// <summary>
/// 报备id
/// </summary>
public int? Id { get; set; }
/// <summary>
/// 审核状态 -1审核拒绝99审核通过
/// </summary>
public int Check { get; set; }
/// <summary>
/// 审核人
/// </summary>
public string CheckUserName { get; set; }
/// <summary>
/// 审核理由
/// </summary>
public string Reason { get; set; }
/// <summary>
/// 审核时间
/// </summary>
public string CheckTime { get; set; }
/// <summary>
/// HmacMD5签名
/// </summary>
public string Sign { get; set; }
/// <summary>
/// 毫秒时间戳
/// </summary>
public long Timestamp { get; set; }
}
}
}