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; }
}
}