using Newtonsoft.Json; using Ninject; using System; using System.Collections.Generic; using System.Data; using System.Web.Mvc; using WX.CRM.BLL.Util; using WX.CRM.Common; using WX.CRM.Common.StockHelper; using WX.CRM.Model.Enum; using WX.CRM.WebHelper; namespace WX.CRM.WEB.Controllers.StockPools { /// /// 企业微信列表 /// public class StockPoolsController : BaseController { [Inject] public CACHE_BL cache_BL { get; set; } // // GET: /WorkWx/ [AuthorizeRedirect(Roles = InitRights.CONST_股票池业务查询)] public ActionResult Index() { //ToolBar ToolBar tool = new ToolBar(); string[] toolbtn = new ToolButtonView().ToolButtonRight(InitRights.股票池业务查询, userRightId); tool.AllowButton(toolbtn); tool.AddOtherButton("Other1", "聊天记录", "icon-detail", "ChatRecord_Click", true); ViewBag.ToolBar = tool; string tableId = "tablist"; Table tab = new Table(tableId); //table Pager pager = new Pager() { page = 1, rows = 20 }; //tab.isCheckbox = true; tab.AddHeadCol("ProductLineName", "", "产品线"); tab.AddHeadCol("ColumnName", "", "栏目"); tab.AddHeadCol("StockName", "", "股票名称"); tab.AddHeadCol("StockCode", "", "股票代码"); tab.AddHeadCol("InduName", "", "所属行业"); tab.AddHeadCol("FocusOnPriceName", "", "建议关注价格"); tab.AddHeadCol("WarningPriceName", "", "预警价格"); /* tab.AddHeadCol("RecommendedStock", "", "建议仓位");*/ tab.AddHeadCol("CreateTimeName", "", "报备时间"); tab.AddHeadCol("AuditTypeName", "", "报备方式"); tab.AddHeadCol("Operator", "", "报备人"); tab.AddHeadCol("NowPrice", "", "当日价"); tab.AddHeadCol("Price", "", "最新价"); tab.AddHeadCol("ZdRatio", "", "今日涨幅", true); tab.AddHeadCol("SumRatio", "", "累计涨幅", true); //tab.AddHeadCol("WeekPrice", "", "周期价格"); tab.AddHeadCol("WeekRatio", "", "周期涨幅"); tab.AddHeadCol("UserOperator", "", "操作"); tab.AddHeadRow(); ViewBag.gridTable = tab.GetHead() + Pagination.GetPage(pager, tableId, "5,10,15,20"); var select = BuildInduNameList(); ViewBag.InduList = select.InduInfo; ViewBag.ProductLineName = select.ProductLineName; ViewBag.OperatorName = select.OperatorName; ViewBag.ColumnName = select.ColumnName; return View(); } [HttpPost] [AuthorizeRedirect(Roles = InitRights.CONST_股票池业务查询)] public JsonResult GetHtmlList(string columns, Pager pager, SearchStockAuditPageDto dto) { List result = new List(); var setting = cache_BL.GetValue_Parameter(Parameter.StockPoolsSetting); var signConfig = JsonConvert.DeserializeObject(setting); string appId = signConfig.AppId; string secret = signConfig.Secret; var url = signConfig.Host + "/api/Stock/CrmStockAuditPage"; if (string.IsNullOrWhiteSpace(url) || string.IsNullOrWhiteSpace(appId) || string.IsNullOrWhiteSpace(secret)) { LogHelper.Error("请检查相关的股票池配置"); throw new Exception("请检查相关的股票池配置"); } ApiSignHelper apiSignHelper = new ApiSignHelper(appId, secret); Dictionary param = new Dictionary(); if (!string.IsNullOrWhiteSpace(dto.ProductLineName)) { param.Add("ProductLineName", dto.ProductLineName); } if (!string.IsNullOrWhiteSpace(dto.ColumnName)) { param.Add("ColumnName", dto.ColumnName); } if (!string.IsNullOrWhiteSpace(dto.StockName)) { param.Add("StockName", dto.StockName); } if (!string.IsNullOrWhiteSpace(dto.StockCode)) { param.Add("StockCode", dto.StockCode); } if (!string.IsNullOrWhiteSpace(dto.InduName)) { param.Add("InduName", dto.InduName); } if (!string.IsNullOrWhiteSpace(dto.AuditTimeStart)) { param.Add("AuditTimeStart", dto.AuditTimeStart); } if (!string.IsNullOrWhiteSpace(dto.AuditTimeEnd)) { param.Add("AuditTimeEnd", dto.AuditTimeEnd); } if (!string.IsNullOrWhiteSpace(dto.Operator)) { param.Add("Operator", dto.Operator); } if (dto.RiseType.HasValue) { param.Add("RiseType", dto.RiseType); } if (dto.Day.HasValue) { param.Add("Day", dto.Day); } if (!string.IsNullOrWhiteSpace(pager.sort)) { param.Add("Sort", pager.sort); } if (!string.IsNullOrWhiteSpace(pager.order)) { param.Add("Order", pager.order); } if (dto.AuditType.HasValue) { param.Add("AuditType", dto.AuditType); } param.Add("PageIndex", pager.page); param.Add("PageSize", pager.rows); var ret = apiSignHelper.GetApi>(url, param); if (ret.Code == -1) { throw new Exception(ret.Message); } result = (List)ret.Data.Data; Table table = new Table(columns, true); foreach (var item in result) { table.AddCol(item.ProductLineName); table.AddCol(item.ColumnName); table.AddCol(item.StockName); table.AddCol(item.StockCode); table.AddCol(item.InduName); table.AddCol(item.FocusOnPriceName); table.AddCol(item.WarningPriceName); /* if (item.RecommendedStock.HasValue) { table.AddCol(item.RecommendedStock+"%"); } else { table.AddCol(item.RecommendedStock); }*/ table.AddCol(item.CreateTimeName); table.AddCol(item.AuditTypeName); table.AddCol(item.Operator); table.AddCol(item.NowPrice); table.AddCol(item.Price); table.AddCol(item.ZdRatio); table.AddCol(item.SumRatio); //table.AddCol(item.WeekPrice); table.AddCol(item.WeekRatio); var setTimelink = string.Format("", item.Id); if (item.HasBtn.HasValue && !item.HasBtn.Value) { setTimelink = ""; } table.AddCol(setTimelink); table.AddRow(); } DateTime nowtime = DateTime.Now; var json = new { totalPages = (int)Math.Ceiling((float)ret.Data.Total / (float)pager.rows), totalRows = ret.Data.Total, rowsList = table.GetRows(), foot = table.GetFoot(), }; return Json(json, JsonRequestBehavior.AllowGet); } /// /// 行业下拉框 /// /// public DropSelectList BuildInduNameList() { try { var setting = cache_BL.GetValue_Parameter(Parameter.StockPoolsSetting); var signConfig = JsonConvert.DeserializeObject(setting); string appId = signConfig.AppId; string secret = signConfig.Secret; ApiSignHelper apiSignHelper = new ApiSignHelper(appId, secret); var url = signConfig.Host + "/api/Stock/GetDropSelectList"; Dictionary param = new Dictionary(); var ret = apiSignHelper.GetApi(url, param); DropSelectList dropSelectList = JsonConvert.DeserializeObject(ret.Data); return dropSelectList; } catch (Exception ex) { LogHelper.Error($"获取下拉框失败{ex.Message}"); return new DropSelectList(); } } [HttpGet] public ActionResult GetArticle(int id) { ArticleModel articleModel = new ArticleModel { Id = id }; return View(articleModel); } [HttpGet] public JsonResult getData(int ID) { var setting = cache_BL.GetValue_Parameter(Parameter.StockPoolsSetting); var signConfig = JsonConvert.DeserializeObject(setting); string appId = signConfig.AppId; string secret = signConfig.Secret; ApiSignHelper apiSignHelper = new ApiSignHelper(appId, secret); var url = signConfig.Host + "/api/Stock/GetArticle"; Dictionary param = new Dictionary(); param.Add("id", ID); var ret = apiSignHelper.GetApi(url, param); if (ret.Code == -1) { ArticleModel articleModel = new ArticleModel { Id = ID, publishedAt = apiSignHelper.GetTimeStampByTime(DateTime.Now), createdAt = apiSignHelper.GetTimeStampByTime(DateTime.Now) }; return Json(articleModel, JsonRequestBehavior.AllowGet); } if (ret.Data.productLine == 1004 || ret.Data.contentType == 4) { ret.Data.isPicture = true; } return Json(ret.Data, JsonRequestBehavior.AllowGet); } } public class DropSelectList { /// /// 行业 /// public List InduInfo = new List(); /// /// 产品 /// public List ProductLineName = new List(); /// /// 栏目 /// public List ColumnName = new List(); /// /// 人员 /// public List OperatorName = new List(); } public class CrmStockAuditDto : StockAuditDto { public int Id { get; set; } /// /// 是否审核 0 未审核 1 审核通过 -1 驳回 /// public int? Audit { get; set; } public string AuditName { get; set; } /// /// 驳回原因 /// public string RejectedReasons { get; set; } /// /// 审核人 /// public string Auditor { get; set; } public string NowPrice { get; set; } public decimal? Price { get; set; } public string ZdRatio { get; set; } public string SumRatio { get; set; } public string WeekPrice { get; set; } public string WeekRatio { get; set; } public string Picture { get; set; } public bool? HasBtn { get; set; } } public class StockAuditDto { /// /// 报备ID(唯一编码) /// public string AuditId { get; set; } /// /// 产品线Id /// public int? ProductLineId { get; set; } /// /// 执业证书编号 /// public string PracticeId { get; set; } /// /// 产品线名称 /// public string ProductLineName { get; set; } /// /// 栏目ID /// public int? ColumnId { get; set; } /// /// 栏目名称 /// public string ColumnName { get; set; } /// /// 所属行业 /// public string InduName { get; set; } /// /// 股票代码 /// public string StockCode { get; set; } /// /// 股票名称 /// public string StockName { get; set; } /// /// 建议关注价格 /// public decimal? FocusOnPriceMin { get; set; } /// /// 建议关注价格 /// public decimal? FocusOnPriceMax { get; set; } /// /// 建议关注价格 /// public string FocusOnPriceName { get; set; } /// /// 预警价格 /// public decimal? WarningPriceMin { get; set; } /// /// 预警价格 /// public decimal? WarningPriceMax { get; set; } public string WarningPriceName { get; set; } /// /// 建议仓位 /// public decimal? RecommendedStock { get; set; } /// /// 建议理由 /// public string RecommendedReasons { get; set; } /// /// 来源类型 /// public string SourceType { get; set; } /// /// 来源 /// public string Source { get; set; } /// /// 操作人 /// public string Operator { get; set; } /// /// 报备方式 /// public int? AuditType { get; set; } public string AuditTypeName { get; set; } /// /// 报备时间 /// public DateTime? CreateTime { get; set; } public string CreateTimeName { get; set; } } public class SearchStockAuditPageDto { /// /// 产品线名称 /// public string ProductLineName { get; set; } /// /// 栏目名称 /// public string ColumnName { get; set; } /// /// 股票代码(支持逗号查询多个,例:909809,324234) /// public string StockCode { get; set; } /// /// 股票名称(模糊查询) /// public string StockName { get; set; } /// /// 报备类型 0 人工 1 AI /// public int? AuditType { get; set; } /// /// 报备人 /// public string Operator { get; set; } /// /// 报备时间 /// public string AuditTimeStart { get; set; } /// /// 报备时间 /// public string AuditTimeEnd { get; set; } /// /// 所属行业 /// public string InduName { get; set; } /// /// 统计周期 /// public int? RiseType { get; set; } /// /// 统计周期 /// public int? Day { get; set; } /// /// 页数 /// public int PageIndex { get; set; } /// /// 分页大小 /// public int PageSize { get; set; } /// /// 排序字段,支持逗号隔开 /// public string Sort { get; set; } /// /// 升降序,Asc/Desc /// public string Order { get; set; } } /// /// 行业列表 /// public class InduInfo { public string induName { get; set; } public decimal? induCode { get; set; } } public class SignConfig { public string AppId { get; set; } public string Secret { get; set; } public string Host { get; set; } } /// /// 场景接收实体 /// public class ArticleModel { public int Id { get; set; } public int? productLine { get; set; } public bool? isPicture { get; set; } /// /// 内容类型 1图文,2观点 /// public int contentType { get; set; } /// /// 标题 观点返回 /// public string title { get; set; } /// /// 内容 /// public string content { get; set; } /// /// VIP内容 图文返回 /// public string pointContent { get; set; } /// /// 删除标记 0未删除,1已删除 /// public bool? blocked { get; set; } /// /// 文章公开时间 /// public long? publishedAt { get; set; } /// /// 文章创建时间 /// public long? createdAt { get; set; } /// /// 是否VIP文章 1:vip内容 /// public bool? charge { get; set; } /// /// 讲师内容 /// public lecturer lecturer { get; set; } = new lecturer(); } /// /// 导师信息 /// public class lecturer { /// /// 讲师ID /// public int? lecturerId { get; set; } /// /// 讲师名 /// public string name { get; set; } /// /// 实名 /// public string realName { get; set; } /// /// 称号 /// public string title { get; set; } /// /// 执业编号 /// public string practiceNo { get; set; } /// /// 头像 /// public string avatar { get; set; } } }