package utils

// 常量定义
const (
	FormatTime                 = "15:04:05"                  //时间格式
	FormatDate                 = "2006-01-02"                //日期格式
	FormatDateCN               = "2006年01月02日"               //日期格式（中文）
	FormatDateUnSpace          = "20060102"                  //日期格式
	FormatDateTime             = "2006-01-02 15:04:05"       //完整时间格式
	HlbFormatDateTime          = "2006-01-02_15:04:05.999"   //完整时间格式
	FormatDateTimeUnSpace      = "20060102150405"            //完整时间格式
	FormatShortDateTimeUnSpace = "060102150405"              //省去开头两位年份的时间格式
	EmptyDateTimeStr           = "0000-00-00 00:00:00"       //DateTime零值字符串
	EmptyDateStr               = "0000-00-00"                //Date零值字符串
	FormatMonthDayUnSpace      = "0102"                      //日期格式
	FormatMonthDay             = "01-02"                     //日期格式
	FormatYearMonthDate        = "2006-01"                   //日期格式
	FormatDateWallWithLoc      = "2006-01-02T15:04:05-07:00" //日期格式
	PageSize15                 = 15                          //列表页每页数据量
	PageSize5                  = 5
	PageSize10                 = 10
	PageSize20                 = 20
	PageSize30                 = 30
)

const DateTypeNYears = 20 //时间类型为最近N年

// 手机号，电子邮箱正则
const (
	RegularMobile = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0-9])|(17[0-9])|(16[0-9])|(19[0-9]))\\d{8}$" //手机号码
	RegularEmail  = `\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*`                                             //匹配电子邮箱
)

const (
	APPNAME          = "弘则研报"
	EmailSendToUsers = "317699326@qq.com;984198890@qq.com;hsun@hzinsights.com;xyxie@hzinsights.com"
)

// 聚合短信
var (
	JhGnTplId = "65692" //聚合国内模板编码
	JhGjTplId = "10054" //聚合国内模板编码

	JhGnAppKey = "4c8504c49dd335e99cfd7b6a3a9e2415" //聚合国内AppKey
	JhGjAppKey = "3326ad2c1047a4cd92ace153e6044ca3"
)

const (
	key = "zDeESsxsXuionhqSLZYHWcDJ" //全局加密KEY
)

// 数据来源渠道
const (
	DATA_SOURCE_THS                                  = iota + 1 //同花顺
	DATA_SOURCE_WIND                                            //wind
	DATA_SOURCE_PB                                              //彭博
	DATA_SOURCE_CALCULATE                                       //指标运算
	DATA_SOURCE_CALCULATE_LJZZY                                 //累计值转月
	DATA_SOURCE_CALCULATE_TBZ                                   //同比值
	DATA_SOURCE_CALCULATE_TCZ                                   //同差值
	DATA_SOURCE_CALCULATE_NSZYDPJJS                             //N数值移动平均计算
	DATA_SOURCE_MANUAL                                          //手工指标
	DATA_SOURCE_LZ                                              //隆众
	DATA_SOURCE_YS                                              //有色
	DATA_SOURCE_CALCULATE_HBZ                                   //环比值->12
	DATA_SOURCE_CALCULATE_HCZ                                   //环差值->13
	DATA_SOURCE_CALCULATE_BP                                    //变频->14
	DATA_SOURCE_GL                                              //钢联->15
	DATA_SOURCE_ZZ                                              //郑商所->16
	DATA_SOURCE_DL                                              //大商所->17
	DATA_SOURCE_SH                                              //上期所->18
	DATA_SOURCE_CFFEX                                           //中金所->19
	DATA_SOURCE_SHFE                                            //上期能源->20
	DATA_SOURCE_GIE                                             //欧洲天然气->21
	DATA_SOURCE_CALCULATE_TIME_SHIFT                            //时间移位->22
	DATA_SOURCE_CALCULATE_ZJPJ                                  //直接拼接->23
	DATA_SOURCE_CALCULATE_LJZTBPJ                               //累计值同比拼接->24
	DATA_SOURCE_LT                                              //路透->25
	DATA_SOURCE_COAL                                            //中国煤炭网->26
	DATA_SOURCE_PYTHON                                          //python代码->27
	DATA_SOURCE_PB_FINANCE                                      //彭博财务数据->28
	DATA_SOURCE_GOOGLE_TRAVEL                                   //谷歌出行->29
	DATA_SOURCE_PREDICT                                         //普通预测指标->30
	DATA_SOURCE_PREDICT_CALCULATE                               //预测指标运算->31
	DATA_SOURCE_PREDICT_CALCULATE_TBZ                           //预测指标同比值->32
	DATA_SOURCE_PREDICT_CALCULATE_TCZ                           //预测指标同差值->33
	DATA_SOURCE_MYSTEEL_CHEMICAL                                //上海钢联->34
	DATA_SOURCE_CALCULATE_CJJX                                  //超季节性->35
	DATA_SOURCE_EIA_STEO                                        //eia steo报告->36
	DATA_SOURCE_CALCULATE_NHCC                                  //计算指标（拟合残差）->37
	DATA_SOURCE_COM_TRADE                                       //联合国商品贸易数据->38
	DATA_SOURCE_PREDICT_CALCULATE_NSZYDPJJS                     //预测指标 - N数值移动平均计算 -> 39
	DATA_SOURCE_CALCULATE_ADJUST                                //数据调整->40
	DATA_SOURCE_SCI                                             //卓创数据（红桃三）-> 41
	DATA_SOURCE_PREDICT_CALCULATE_LJZZY                         //预测指标 - 累计值转月->42
	DATA_SOURCE_PREDICT_CALCULATE_HBZ                           //预测指标 - 环比值->43
	DATA_SOURCE_PREDICT_CALCULATE_HCZ                           //预测指标 - 环差值->44
	DATA_SOURCE_PREDICT_CALCULATE_BP                            //预测指标 - 变频->45
	DATA_SOURCE_PREDICT_CALCULATE_TIME_SHIFT                    //预测指标 - 时间移位->46
	DATA_SOURCE_PREDICT_CALCULATE_ZJPJ                          //预测指标 - 直接拼接->47
	DATA_SOURCE_PREDICT_CALCULATE_LJZTBPJ                       //预测指标 - 累计值同比拼接->48
	DATA_SOURCE_PREDICT_CALCULATE_CJJX                          //预测指标 - 超季节性->49
	DATA_SOURCE_PREDICT_CALCULATE_NHCC                          //预测指标 - 计算指标（拟合残差）->50
	DATA_SOURCE_CALCULATE_JP                                    //降频->51
	DATA_SOURCE_CALCULATE_NH                                    //年化->52
	DATA_SOURCE_CALCULATE_KSZS                                  //扩散指数->53
	DATA_SOURCE_PREDICT_CALCULATE_JP                            //预测指标 - 计算指标(降频)->54
	DATA_SOURCE_PREDICT_CALCULATE_NH                            //预测指标 - 计算指标(年化)->55
	DATA_SOURCE_PREDICT_CALCULATE_KSZS                          //预测指标 - 计算指标(扩散指数)->56
	DATA_SOURCE_BAIINFO                                         //百川盈孚 ->57
	DATA_SOURCE_STOCK_PLANT                                     //存量装置 ->58
	DATA_SOURCE_CALCULATE_CORRELATION                           //相关性计算->59
	DATA_SOURCE_NATIONAL_STATISTICS                             //国家统计局->60
	DATA_SOURCE_CALCULATE_LJZZJ                                 //累计值转季 -> 61
	DATA_SOURCE_CALCULATE_LJZ                                   //累计值 -> 62
	DATA_SOURCE_CALCULATE_LJZNCZJ                               //累计值(年初至今） -> 63
	DATA_SOURCE_PREDICT_CALCULATE_LJZZJ                         //预测指标 - 累计值转季->64
	DATA_SOURCE_PREDICT_CALCULATE_LJZ                           //预测指标 - 累计值 -> 65
	DATA_SOURCE_PREDICT_CALCULATE_LJZNCZJ                       //预测指标 - 累计值(年初至今） -> 66
	DATA_SOURCE_CALCULATE_STANDARD_DEVIATION                    //标准差->67
	DATA_SOURCE_CALCULATE_PERCENTILE                            //百分位->68
	DATA_SOURCE_PREDICT_CALCULATE_STANDARD_DEVIATION            //预测标准差->69
	DATA_SOURCE_PREDICT_CALCULATE_PERCENTILE                    //预测百分位->70
	DATA_SOURCE_FUBAO                                           //富宝数据->71
	DATA_SOURCE_CALCULATE_ZSXY                                  // 指数修匀->72
	DATA_SOURCE_PREDICT_CALCULATE_ZSXY                          // 预测指数修匀->73
	DATA_SOURCE_CALCULATE_ZDYFX                                 // 自定义分析->74
	DATA_SOURCE_CALCULATE_RJZ                                   // 日均值计算->75
	DATA_SOURCE_BUSINESS                             = 84       // 来源于自有数据
	DATA_SOURCE_CALCULATE_RANGEANLYSIS               = 87       //区间计算->87
	DATA_SOURCE_PREDICT_CALCULATE_RANGEANLYSIS       = 90       // 预测指标区间计算->90
)

const (
	HZ_CHART_LIB_DETAIL = "HZ_CHART_LIB_DETAIL_"
	HONGZEYB_           = "hongze_yb:"
	HONGZEYB_EBD_SOURCE = "hongze_yb:edb_source:"
)

//var (
//	Hz_Server_Data_Url string //同花顺，万得接口服务地址（阿里云windows服务器地址）
//)

const (
	DATA_PREFIX  = "hz_data"
	CHART_PREFIX = "hz_chart"
)

// 数据刷新频率
const (
	DATA_REFRESH             = 7 //7个单位，日/周/月/季度/年
	DATA_START_REFRESH_LIMIT = 7 //7个单位，日/周/月/季度/年
	DATA_END_DATE_LIMIT      = 4 //数据结束日期为，当前日期，加上4年时间
)

const (
	Hz_Data_Url    = "http://datawind.hzinsights.com:8040/" //同花顺，万得接口服务地址
	Hz_Data_PB_Url = "http://datapb.hzinsights.com:8040/"   //彭博接口地址
	Hz_Data_LT_Url = "http://dataek.hzinsights.com:8040/"   //路透社接口地址
	EDB_DATA_LIMIT = 10
)

var PermissionFiccClassifyArr = [...]string{"宏观经济", "化工产业", "建材产业", "有色产业", "新能源"}

// 缓存key
const (
	CACHE_KEY_USER_VIEW = "user_view_record" //用户阅读数据
	CACHE_CHART_AUTH    = "eta:chart:auth:"  //图表数据授权
)

// es相关
const (
	ES_INDEX_RDDP_REPORT = "research_report_v1" //报告
)

// EDB_LIB
var (
	APP_EDB_LIB_NAME_EN = "hongze_edb_lib"
	EDB_LIB_Md5_KEY     = "GuRaB6dY1bXOJcwG"
)

const ALIYUN_YBIMG_HOST = "https://hzstatic.hzinsights.com/static/yb_wx/"
const HZ_DEFAULT_AVATAR = "https://hzstatic.hzinsights.com/static/yb_wx/hz_default_avatar.png"

const (
	DEFAULT_HONGZE_USER_LOGO      = "https://hzstatic.hzinsights.com/static/icon/hzyb/default_avatar.png"      //个人中心默认头像、匿名用户留言默认头像
	DEFAULT_HONGZE_USER_LOGO_GRAY = "https://hzstatic.hzinsights.com/static/icon/hzyb/default_avatar_gray.png" //默认头像-未登录状态
	DEFAULT_HONGZE_SYS_LOGO       = "https://hzstatic.hzinsights.com/static/yb_wx/hongze_sys_default_head.png" //弘则官方默认头像
)

const HZPHONE = "057187186319" //弘则电话
const HZ_ADMIN_WX_ACCESS_TOEKN = "hz_admin:wx:access_token:"

// 模板消息推送类型
const (
	TEMPLATE_MSG_YB_COMMUNITY_QUESTION = 11 //研报问答社区
	TEMPLATE_MSG_YB_VOICE_BROADCAST    = 20 //研报语音播报
)

// 微信用户user_record注册平台
const (
	USER_RECORD_PLATFORM_RDDP      = iota + 1 // 日度点评公众号
	USER_RECORD_PLATFORM_BACKSTAGE            // 管理后台
	USER_RECORD_PLATFORM_PC                   // PC端网站
	USER_RECORD_PLATFORM_CYGX                 // 查研观向小程序
	_
	USER_RECORD_PLATFORM_YB      // 研报小程序-6
	_                            // 查研观向开发平台-7
	_                            // 查研观向小助手公众号-8
	USER_RECORD_PLATFORM_COPY_YB // 研报备用小程序-9
)

const (
	AdminId     = 11      //系统操作的用户id
	RealName    = "超级管理员" //系统操作的用户名称
	HzCompanyId = 16      // 弘则研究公司ID
)

// 报告
const (
	DEFAULT_REPORT_SHARE_BG_IMG = "https://hzstatic.hzinsights.com/static/icon/hzyb/rddp-share-bg.png" // 分享默认背景图
)

// SystemSourceList 系统来源
var SystemSourceList = []int{
	DATA_SOURCE_CALCULATE,                            //指标运算
	DATA_SOURCE_CALCULATE_LJZZY,                      //累计值转月
	DATA_SOURCE_CALCULATE_TBZ,                        //同比值
	DATA_SOURCE_CALCULATE_TCZ,                        //同差值
	DATA_SOURCE_CALCULATE_NSZYDPJJS,                  //N数值移动平均计算
	DATA_SOURCE_MANUAL,                               //手工指标
	DATA_SOURCE_CALCULATE_HBZ,                        //环比值->12
	DATA_SOURCE_CALCULATE_HCZ,                        //环差值->13
	DATA_SOURCE_CALCULATE_BP,                         //变频->14
	DATA_SOURCE_CALCULATE_TIME_SHIFT,                 //时间移位->22
	DATA_SOURCE_CALCULATE_ZJPJ,                       //直接拼接->23
	DATA_SOURCE_CALCULATE_LJZTBPJ,                    //累计值同比拼接->24
	DATA_SOURCE_PYTHON,                               //python代码->27
	DATA_SOURCE_PREDICT,                              //预测指标->30
	DATA_SOURCE_PREDICT_CALCULATE,                    //预测指标运算->31
	DATA_SOURCE_PREDICT_CALCULATE_TBZ,                //预测指标同比值->32
	DATA_SOURCE_PREDICT_CALCULATE_TCZ,                //预测指标同差值->33
	DATA_SOURCE_MYSTEEL_CHEMICAL,                     //上海钢联->34
	DATA_SOURCE_CALCULATE_CJJX,                       //超季节性->35
	DATA_SOURCE_CALCULATE_NHCC,                       //计算指标（拟合残差）->37
	DATA_SOURCE_PREDICT_CALCULATE_NSZYDPJJS,          //预测指标 - N数值移动平均计算 -> 39
	DATA_SOURCE_CALCULATE_ADJUST,                     //数据调整->40
	DATA_SOURCE_PREDICT_CALCULATE_LJZZY,              //预测指标 - 累计值转月->42
	DATA_SOURCE_PREDICT_CALCULATE_HBZ,                //预测指标 - 环比值->43
	DATA_SOURCE_PREDICT_CALCULATE_HCZ,                //预测指标 - 环差值->44
	DATA_SOURCE_PREDICT_CALCULATE_BP,                 //预测指标 - 变频->45
	DATA_SOURCE_PREDICT_CALCULATE_TIME_SHIFT,         //预测指标 - 时间移位->46
	DATA_SOURCE_PREDICT_CALCULATE_ZJPJ,               //预测指标 - 直接拼接->47
	DATA_SOURCE_PREDICT_CALCULATE_LJZTBPJ,            //预测指标 - 累计值同比拼接->48
	DATA_SOURCE_PREDICT_CALCULATE_CJJX,               //预测指标 - 超季节性->49
	DATA_SOURCE_PREDICT_CALCULATE_NHCC,               //预测指标 - 计算指标（拟合残差）->50
	DATA_SOURCE_CALCULATE_JP,                         //降频->51
	DATA_SOURCE_CALCULATE_NH,                         //年化->52
	DATA_SOURCE_CALCULATE_KSZS,                       //扩散指数->53
	DATA_SOURCE_PREDICT_CALCULATE_JP,                 //预测指标 - 计算指标(降频)->54
	DATA_SOURCE_PREDICT_CALCULATE_NH,                 //预测指标 - 计算指标(年化)->55
	DATA_SOURCE_PREDICT_CALCULATE_KSZS,               //预测指标 - 计算指标(扩散指数)->56
	DATA_SOURCE_STOCK_PLANT,                          //存量装置 ->58
	DATA_SOURCE_CALCULATE_CORRELATION,                //相关性计算->59
	DATA_SOURCE_NATIONAL_STATISTICS,                  //国家统计局->60
	DATA_SOURCE_CALCULATE_LJZZJ,                      //累计值转季 -> 61
	DATA_SOURCE_CALCULATE_LJZ,                        //累计值 -> 62
	DATA_SOURCE_CALCULATE_LJZNCZJ,                    //累计值(年初至今） -> 63
	DATA_SOURCE_PREDICT_CALCULATE_LJZZJ,              //预测指标 - 累计值转季->64
	DATA_SOURCE_PREDICT_CALCULATE_LJZ,                //预测指标 - 累计值 -> 65
	DATA_SOURCE_PREDICT_CALCULATE_LJZNCZJ,            //预测指标 - 累计值(年初至今） -> 66
	DATA_SOURCE_CALCULATE_STANDARD_DEVIATION,         //标准差->67
	DATA_SOURCE_CALCULATE_PERCENTILE,                 //百分位->68
	DATA_SOURCE_PREDICT_CALCULATE_STANDARD_DEVIATION, //预测标准差->69
	DATA_SOURCE_PREDICT_CALCULATE_PERCENTILE,         //预测百分位->70
	DATA_SOURCE_CALCULATE_RANGEANLYSIS,               //区间计算->87
	DATA_SOURCE_PREDICT_CALCULATE_RANGEANLYSIS,       // 预测指标区间计算->90

}

const (
	SendTemplateMsgAuthorization = "dc855fce962a639faa779cbdd4cd332f"
)

// 缓存key
const (
	CACHE_KEY_LOGS               = "HZ_ADMIN_CACHE_KEY_LOGS"         //api用户操作日志队列
	CACHE_KEY_ADMIN              = "calendar:admin:list"             //系统用户列表缓存key
	CACHE_KEY_ADMIN_ID           = "calendar:admin:id:list"          //系统用户列表缓存key
	CACHE_KEY_OLD_REPORT_PUBLISH = "HZ_CACHE_KEY_OLD_REPORT_PUBLISH" // 老后台报告发布队列
	CACHE_ADMIN_YB_CONFIG        = "admin:yb_config:"                //研报配置相关缓存前缀
	CACHE_WIND_URL               = "CACHE_WIND_URL"                  //指标与wind服务器的绑定关系
	CACHE_CHART_INFO_DATA        = "chart:info:data:"                //图表数据
	CACHE_CHART_CLASSIFY         = "chart:classify"                  //图表分类数据
	CACHE_IMPORT_MANUAL_DATA     = "import:manual:data"              //手工数据导入后刷新
)

// 研报类型标识
var (
	REPORT_TYPE_DAY  = "day"
	REPORT_TYPE_WEEK = "week"
)

var REPORT_CHAPTER_TYPE_NAME_MAP = map[string]string{
	REPORT_TYPE_DAY:  "晨报",
	REPORT_TYPE_WEEK: "周报",
}

const ALIYUN_OSS_HOST = "https://hzstatic.hzinsights.com"

// 图表类型
const (
	CHART_SOURCE_DEFAULT                         = 1
	CHART_SOURCE_FUTURE_GOOD                     = 2
	CHART_SOURCE_CORRELATION                     = 3  // 相关性图表
	CHART_SOURCE_ROLLING_CORRELATION             = 4  // 滚动相关性图表
	CHART_SOURCE_FUTURE_GOOD_PROFIT              = 5  // 商品利润曲线
	CHART_SOURCE_LINE_EQUATION                   = 6  // 拟合方程图表
	CHART_SOURCE_LINE_FEATURE_STANDARD_DEVIATION = 7  // 统计特征-标准差图表
	CHART_SOURCE_LINE_FEATURE_PERCENTILE         = 8  // 统计特征-百分位图表
	CHART_SOURCE_LINE_FEATURE_FREQUENCY          = 9  // 统计特征-频率分布图表
	CHART_SOURCE_CROSS_HEDGING                   = 10 // 跨品种分析图表
	CHART_SOURCE_BALANCE_EXCEL                   = 11 // 平衡表图表
	CHART_SOURCE_RANGE_ANALYSIS                  = 12 // 	区间分析图表
)

// 图表类型
const (
	CHART_MULTIPLE_GRAPH_CURVE                   = 1 // 曲线图
	CHART_MULTIPLE_GRAPH_CORRELATION             = 2 // 相关性图
	CHART_MULTIPLE_GRAPH_ROLLING_CORRELATION_ONE = 3 // 滚动相关性图1
	CHART_MULTIPLE_GRAPH_ROLLING_CORRELATION_TWO = 4 // 滚动相关性图2
	CHART_MULTIPLE_GRAPH_LINE_EQUATION_ONE       = 5 // 拟合方程-斜率图
	CHART_MULTIPLE_GRAPH_LINE_EQUATION_TWO       = 6 // 拟合方程-截距图
	CHART_MULTIPLE_GRAPH_LINE_EQUATION_THREE     = 7 // 拟合方程-相关性图
)

// 图表样式类型
const (
	CHART_TYPE_CURVE           = 1  //曲线图
	CHART_TYPE_SEASON          = 2  //季节性图
	CHART_TYPE_AREA            = 3  // 面积图
	CHART_TYPE_BAR             = 7  //柱形图
	CHART_TYPE_SECTION_SCATTER = 10 //截面散点图样式
	CHART_TYPE_RADAR           = 11 //雷达图
	CHART_TYPE_SECTION_COMBINE = 14 //截面组合图
)

// FrequencyDaysMap 频度日期的map关系
var FrequencyDaysMap = map[string]int{
	"天": 1, "周": 7, "月": 30, "季": 90, "年": 365,
}

// DataSourceEnMap 指标来源的英文名称
var DataSourceEnMap = map[int]string{
	DATA_SOURCE_WIND:             "Wind",
	DATA_SOURCE_THS:              "iFind",
	DATA_SOURCE_PB:               "Bloomberg",
	DATA_SOURCE_PB_FINANCE:       "Bloomberg Finance",
	DATA_SOURCE_LT:               "Reuters",
	DATA_SOURCE_MANUAL:           "Horizon Insights",
	DATA_SOURCE_LZ:               "OilChem",
	DATA_SOURCE_YS:               "SMM",
	DATA_SOURCE_GL:               "MySteel",
	DATA_SOURCE_ZZ:               "Zhengzhou Commodity Exchange",
	DATA_SOURCE_DL:               "Dalian Commodity Exchange",
	DATA_SOURCE_SH:               "Shanghai Futures Exchange",
	DATA_SOURCE_CFFEX:            "China Financial Futures Exchange",
	DATA_SOURCE_SHFE:             "Shanghai International Energy Exchange",
	DATA_SOURCE_GIE:              "Eurostat",
	DATA_SOURCE_COAL:             "China Coal Transport & Distribution Association",
	DATA_SOURCE_GOOGLE_TRAVEL:    "Our World in Data",
	DATA_SOURCE_EIA_STEO:         "Energy Information Administration",
	DATA_SOURCE_COM_TRADE:        "United Nations",
	DATA_SOURCE_SCI:              "Sublime China Information",
	DATA_SOURCE_BAIINFO:          "BAIINFO",
	DATA_SOURCE_MYSTEEL_CHEMICAL: "Horizon Insights",
}

// 子数据来源渠道
const (
	DATA_SUB_SOURCE_EDB            = iota //经济数据库
	DATA_SUB_SOURCE_DATE                  //日期序列
	DATA_SUB_SOURCE_HIGH_FREQUENCY        //高频数据
)

// 默认的品种图片
const APPLY_VARIETY_IMG_DEFAULT = "https://hzstatic.hzinsights.com/static/yb_variety/default_permission.png"

const (
	FiccProductId = 1 // FICC标识ID
)

const (
	DateTypeOneWeek    = 21 // 时间类型-近1周
	DateTypeOneMonth   = 22 // 时间类型-近1月
	DateTypeTwoMonth   = 23 // 时间类型-近2月
	DateTypeThreeMonth = 24 // 时间类型-近3月
	DateTypeNMonth     = 25 // 时间类型-近N月
)
