package utils

import (
	"io/fs"
	"time"
)

// 常量定义
const (
	FormatTime                 = "15:04:05"                //时间格式
	FormatTimeHm               = "15:04"                   //时间格式
	FormatDate                 = "2006-01-02"              //日期格式
	FormatDateUnSpace          = "20060102"                //日期格式
	ormatDateUnSpace           = "2006.01.02"              //日期格式
	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"                 //日期格式
	FormatYearDate             = "2006"                    //日期格式
	PageSize15                 = 15                        //列表页每页数据量
	PageSize5                  = 5
	PageSize10                 = 10
	PageSize20                 = 20
	PageSize30                 = 30
	PageSize50                 = 50
)

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+)*`                                             //匹配电子邮箱
)

// 验证码code
const (
	REGISTER_CODE = iota + 1 //注册
	LOGIN_CODE               //登录
)

// 管理员,ficc管理员,ficc销售,权益管理员,权益销售。
// 角色类型/类型编码
const (
	ROLE_TYPE_ADMIN       = "管理员"
	ROLE_TYPE_FICC_ADMIN  = "ficc管理员"
	ROLE_TYPE_FICC_SELLER = "ficc销售"
	ROLE_TYPE_RAI_ADMIN   = "权益管理员"
	ROLE_TYPE_RAI_SELLER  = "权益销售"

	ROLE_TYPE_FICC_GROUP      = "ficc销售组长"
	ROLE_TYPE_FICC_MANAGER    = "ficc销售主管"
	ROLE_TYPE_RAI_GROUP       = "权益组长"
	ROLE_TYPE_FICC_DEPARTMENT = "ficc部门经理"
	ROLE_TYPE_RAI_DEPARTMENT  = "权益部门经理"
	ROLE_TYPE_FICC_RESEARCHR  = "ficc研究员"
	ROLE_TYPE_RAI_RESEARCHR   = "权益研究员"
	ROLE_NAME_FICC_DIRECTOR   = "ficc销售经理" // 实际角色类型为ficc销售主管

	ROLE_TYPE_CODE_ADMIN           = "admin"           //管理员
	ROLE_TYPE_CODE_FICC_ADMIN      = "ficc_admin"      //ficc管理员
	ROLE_TYPE_CODE_FICC_SELLER     = "ficc_seller"     //ficc销售
	ROLE_TYPE_CODE_RAI_ADMIN       = "rai_admin"       //权益管理员
	ROLE_TYPE_CODE_RAI_SELLER      = "rai_seller"      //权益销售
	ROLE_TYPE_CODE_FICC_GROUP      = "ficc_group"      //ficc销售主管
	ROLE_TYPE_CODE_RAI_GROUP       = "rai_group"       //ficc组长
	ROLE_TYPE_CODE_FICC_DEPARTMENT = "ficc_department" //ficc部门经理
	ROLE_TYPE_CODE_RAI_DEPARTMENT  = "rai_department"  //权益部门经理
	ROLE_TYPE_CODE_FICC_RESEARCHR  = "ficc_researcher" //ficc研究员
	ROLE_TYPE_CODE_RESEARCHR       = "researcher"      //ficc研究员(最早定义的)
	ROLE_TYPE_CODE_RAI_RESEARCHR   = "rai_researcher"  //权益研究员
	ROLE_TYPE_CODE_COMPLIANCE      = "compliance"      //合规角色
	ROLE_TYPE_CODE_FINANCE         = "finance"         //财务角色
	ROLE_TYPE_CODE_FICC_TEAM       = "ficc_team"       //ficc销售组长

	ROLE_TYPE_SELLERS = "'ficc_admin','ficc_seller','ficc_team','rai_admin','rai_seller','ficc_group','rai_group','ficc_department','rai_department','compliance','finance'"
)

const (
	COMPANY_PRODUCT_FICC_ID   = 1
	COMPANY_PRODUCT_FICC_NAME = "ficc"
	COMPANY_PRODUCT_RAI_ID    = 2
	COMPANY_PRODUCT_RAI_NAME  = "权益"
)

var PermissionFiccClassifyArr = [...]string{"宏观经济", "化工产业", "建材产业", "有色产业", "新能源", "市场策略"}
var PermissionAllClassifyArr = [...]string{"宏观经济", "化工产业", "建材产业", "有色产业", "新能源", "市场策略", "权益"}

//apply_method:申请类型:1:试用->正式,2:冻结—>试用,3:流失—>正式,4:试用延期,5:原销售申请领取流失客户,6:正式客户申请服务更新

// 数据来源渠道
const (
	DATA_SOURCE_THS                                  = iota + 1 //同花顺
	DATA_SOURCE_WIND                                            //wind->2
	DATA_SOURCE_PB                                              //彭博->3
	DATA_SOURCE_CALCULATE                                       //指标运算->4
	DATA_SOURCE_CALCULATE_LJZZY                                 //累计值转月->5
	DATA_SOURCE_CALCULATE_TBZ                                   //同比值->6
	DATA_SOURCE_CALCULATE_TCZ                                   //同差值->7
	DATA_SOURCE_CALCULATE_NSZYDPJJS                             //N数值移动平均计算->8
	DATA_SOURCE_MANUAL                                          //手工指标->9
	DATA_SOURCE_LZ                                              //隆众->10
	DATA_SOURCE_YS                                              //有色->11
	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_YONYI                                = 76       //涌益咨询
	DATA_SOURCE_GFEX                                 = 78       // 广州期货交易所->78
	DATA_SOURCE_ICPI                                 = 79       // ICPI消费价格指数->79
	DATA_SOURCE_BLOOMBERG                            = 83       // bloomberg彭博数据
	DATA_SOURCE_BUSINESS                             = 84       // 来源于自有数据
	DATA_SOURCE_SCI99                                = 85       // 卓创资讯 -> 85
	DATA_SOURCE_CCF                                  = 86       // CCF化纤信息
	DATA_SOURCE_CALCULATE_RANGEANLYSIS               = 87       //区间计算->87
	DATA_SOURCE_PREDICT_CALCULATE_RANGEANLYSIS       = 90       // 预测指标区间计算->90
	DATA_SOURCE_SCI_HQ                               = 88       // 卓创红期->88
	DATA_SOURCE_OILCHEM                              = 89       // 隆众资讯 -> 89
	DATA_SOURCE_FENWEI                               = 77       // 汾渭数据->92
	DATA_SOURCE_LY                                   = 91       // 粮油商务网
	DATA_SOURCE_TRADE_ANALYSIS                       = 92       // 持仓分析
	DATA_SOURCE_HISUGAR                              = 93       // 泛糖科技 -> 93
	DATA_SOURCE_USDA_FAS                             = 96       //美国农业部
	DATA_SOURCE_CALCULATE_STL                        = 98       // STL趋势分解 -> 98
	DATA_SOURCE_RZD                                  = 97       // 睿姿得数据
	DATA_SOURCE_RESIDUAL_ANALYSIS                    = 99       // 残差分析
	DATA_SOURCE_CLARKSONS                            = 101      // 克拉克森数据
)

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

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

const (
	EDB_DATA_LIMIT = 10
)

var Hz_Data_WIND_Url_List = []string{"http://datawind.hzinsights.com:8040/", "http://datawind2.hzinsights.com:8040/"}

const (
	HZ_CHART_LIB_DETAIL             = "HZ_CHART_LIB_DETAIL_"            //图表数据缓存
	HZ_CHART_LIB_EXCEL_TABLE_DETAIL = "HZ_CHART_LIB_EXCEL_TABLE_DETAIL" //excel表格数据缓存
)

// 缓存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"                  //手工数据导入后刷新
	CACHE_MYSTEEL_CHEMICAL_ADD_DATA   = "import:mysteelchemical:data"         //钢联化工的数据源导入后刷新
	CACHE_ACCESS_TOKEN_LOGIN          = "pc_eta_admin:login:"                 //管理后台登录
	CACHE_ACCESS_TOKEN_LOGIN_NO_TRUST = "pc_eta_admin:login:no_trust:"        //管理后台登录(不可信登录态)
	CACHE_ABNORMAL_LOGIN              = "pc_eta_admin:login:abnormal:"        //管理后台登录-异常登录
	CACHE_LOGIN_ERR_PASS              = "pc_eta_admin:login:errPass:"         //管理后台登录-输入错误密码次数
	CACHE_FIND_PASS_VERIFY            = "pc_eta_admin:findPass:verify:"       //找回密码校验成功标记
	CACHE_KEY_MYSTEEL_REFRESH         = "mysteel_chemical:refresh"            //钢联化工刷新
	CACHE_KEY_DAYNEW_REFRESH          = "admin:day_new:refresh"               //每日资讯拉取企业微信聊天记录
	CACHE_KEY_DAYNEW_TRANSLATE        = "admin:day_new:translate"             //每日资讯中翻英
	CACHE_KEY_ADMIN_OPERATE_RECORD    = "HZ_ADMIN_CACHE_ADMIN_OPERATE_RECORD" //系统用户操作日志队列

	CACHE_SYNC_ADMIN        = "hz_crm_eta:sync_admin"        // 同步用户的缓存队列key
	CACHE_SYNC_ROLE         = "hz_crm_eta:sync_role"         // 同步角色的缓存队列key
	CACHE_SYNC_DEPARTMENT   = "hz_crm_eta:sync_department"   // 同步部门的缓存队列key
	CACHE_SYNC_GROUP        = "hz_crm_eta:sync_group"        // 同步分组的缓存队列key
	CACHE_SYNC_USER_EN_ROLE = "hz_crm_eta:sync_user_en_role" // 同步用户英文权限角色缓存队列key

	CACHE_SMART_REPORT_EDITING  = "eta:smart_report:editing:" // 智能研报用户编辑中
	CACHE_SMART_REPORT_SEND_MSG = "eta:smart_report:sending:" // 智能研报用户报告推送
	CACHE_PPT_EDITING           = "eta:ppt:editing:"          // PPT用户编辑中
	CACHE_EN_PPT_EDITING        = "eta:en_ppt:editing:"       // 英文PPT用户编辑中
	CACHE_BI_DASHBOARD_EDITING  = "eta:bi_dashboard:editing:" // 看板用户编辑中

	CACHE_CREATE_REPORT_IMGPDF_QUEUE = "eta_report:report_img_pdf_queue" // 生成报告长图PDF队列
	CACHE_EDB_TERMINAL_CODE_URL      = "edb:terminal_code:edb_code:"     // 指标与终端关系的缓存

	CACHE_KEY_REPLACE_EDB = "eta:replace_edb" //系统用户操作日志队列
)

// 模板消息推送类型
const (
	TEMPLATE_MSG_REPORT = iota + 1 //日度点评报告推送
)

// 研报类型标识
var (
	REPORT_TYPE_DAY      = "day"
	REPORT_TYPE_WEEK     = "week"
	REPORT_TYPE_TWO_WEEK = "two_week"
	REPORT_TYPE_MONTH    = "month"
	REPORT_TYPE_OTHER    = "other"
)

// GetFiccAdminDepartmentIds 获取ficc管理员的所属部门
func GetFiccAdminDepartmentIds() (idStr string) {
	if RunMode == "release" {
		idStr = `1,2,4,6`
	} else {
		idStr = `1,2,6`
	}
	return
}

const (
	ReportFrequencyDay     = "日度"
	ReportFrequencyWeek    = "周度"
	ReportFrequencyTwoWeek = "双周度"
	ReportFrequencyMonth   = "月度"
	ReportFrequencyDefault = "不定时"
)

// 图表类型
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 // 	区间分析图表
	CHART_SOURCE_TRADE_ANALYSIS_PROCESS          = 13 // 持仓分析-建仓过程图表
)

// 批量配置图表的位置来源
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  // 拟合方程-相关性图
	CHART_MULTIPLE_GRAPH_LINE_FEATURE_STANDARD_DEVIATION = 8  // 统计特征-标准差图表
	CHART_MULTIPLE_GRAPH_LINE_FEATURE_PERCENTILE         = 9  // 统计特征-百分位图表
	CHART_MULTIPLE_GRAPH_LINE_FEATURE_FREQUENCY          = 10 // 统计特征-频率分布图表
)

// ETA表格
const (
	EXCEL_DEFAULT         = 1 // 自定义excel
	TIME_TABLE            = 2 // 时间序列表格
	MIXED_TABLE           = 3 // 混合表格
	CUSTOM_ANALYSIS_TABLE = 4 // 自定义分析表格
	BALANCE_TABLE         = 5 // 平衡表
)

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

// 指标类型
const (
	EDB_INFO_TYPE         = 0 //指标类型 0:普通指标
	PREDICT_EDB_INFO_TYPE = 1 //指标类型 1:预测指标
)

// 是否关系 无实义
const (
	IS_YES = 1
	IS_NO  = 0
)

// 是否可用
const (
	IS_ENABLE  = 1
	IS_DISABLE = 0
)

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

const (
	AiChatLimit = 500
)

// 系统来源
const (
	SOURCE_ETA_FLAG = 2
)

// BusinessCodeSalt 商家编码盐值
const BusinessCodeSalt = "dr7WY0OZgGR7upw1"

// 自用商户号
const (
	BusinessCodeSandbox = "E2023080700" // 试用平台
	BusinessCodeRelease = "E2023080900" // 生产环境
	BusinessCodeDebug   = "E2023080901" // 测试环境
)

// 验证码
const (
	CaptchaCachePrefix     = "captcha:lock:eta_" // 验证码缓存Key
	VerifyCodeExpireMinute = 15                  // 短信/邮箱验证码过期时间-分钟
	SmsLoginTplId          = "65692"             // 【弘则研究】您的验证码是XXX,如非本人操作,请忽略本短信
	SmsNewLoginTplId       = "254663"            // 【弘则研究】您的验证码是XXX,有效期15分钟
)

const CrmEtaAuthorization = "NIi1RbEmH0C2rksXtPGDPBBgRgTZY87Q"

const LoginCacheTime = 60 // 登录缓存时长, 分钟

// 对象存储客户端
const (
	STORAGESOURCE_OSS   = 1 //阿里云OSS
	STORAGESOURCE_MINIO = 2 //MinIo
)

const (
	STORAGESOURCE_OSS_NAME   = "oss"
	STORAGESOURCE_MINIO_NAME = "minio"
	STORAGESOURCE_S3_NAME    = "s3"
)

// DIR_MOD 目录创建权限
const DIR_MOD fs.FileMode = 0766 // Unix permission bits

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

const (
	WindDbWsd = "wsd"
	ThsDs     = "thsds"
	ThsHf     = "thshf"
)

const (
	UserLoginSalt = "MiQM9yusNA9T2uIH"         // 用户登录盐值
	DesKeySalt    = "JMCqSoUrTAmyNNIRb0TtlrPk" // DesKey盐值
)

// 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",
	DATA_SOURCE_FUBAO:            "FuBao",
	DATA_SOURCE_SCI_HQ:           "SCI(hongqi)",
}

const (
	TelAreaCodeHome = "86" // 大陆区号
)

const (
	LdapInitPassword = "123456a" // 域用户初始密码
)

const (
	PercentCalculateTypeRange = 0 // 百分位算法类型-数据区间
	PercentCalculateTypeNum   = 1 // 百分位算法类型-数据个数
)

// 语言版本
const (
	ZhLangVersion = "zh" // 中文语言版本
	EnLangVersion = "en" // 英文语言版本
)

// 指标引用对象
const (
	EDB_RELATION_CHART       = 1 // 图表
	EDB_RELATION_SANDBOX     = 2 // ETA逻辑
	EDB_RELATION_CALENDAR    = 3 // 事件日历
	EDB_RELATION_TABLE       = 4 // 表格
	EDB_RELATION_PREDICT_EDB = 5 // 预测指标
)

// 指标计算方式
const (
	EdbBaseCalculateLjzzy                = 1  // 累计值转月->1
	EdbBaseCalculateLjzzj                = 2  // 累计值转季->2
	EdbBaseCalculateTbz                  = 3  // 同比值->3
	EdbBaseCalculateTcz                  = 4  // 同差值->4
	EdbBaseCalculateNszydpjjs            = 5  // N数值移动平均数计算->5
	EdbBaseCalculateHbz                  = 6  // 环比值->6
	EdbBaseCalculateHcz                  = 7  // 环差值->7
	EdbBaseCalculateUpFrequency          = 8  // 升频->8
	EdbBaseCalculateDownFrequency        = 9  // 降频->9
	EdbBaseCalculateTimeShift            = 10 // 时间移位->10
	EdbBaseCalculateCjjx                 = 11 // 超季节性->11
	EdbBaseCalculateAnnualized           = 12 // 年化->12
	EdbBaseCalculateLjz                  = 13 // 累计值->13
	EdbBaseCalculateLjzNczj              = 14 // 累计值年初至今->14
	EdbBaseCalculateExponentialSmoothing = 15 // 指数修匀->15
	EdbBaseCalculateRjz                  = 16 // 日均值->16

)

// MultiAddNum 批量插入的数据量
const MultiAddNum = 500

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

const (
	SourceNameTradeAnalysis = "持仓分析"
)

// 基础数据初始化日期
var (
	BASE_START_DATE         = `1900-01-01`                                          //基础数据开始日期
	BASE_END_DATE           = time.Now().AddDate(4, 0, 0).Format(FormatDate)        //基础数据结束日期
	BASE_START_DATE_UnSpace = "19000101"                                            //基础数据开始日期
	BASE_END_DATE_UnSpace   = time.Now().AddDate(4, 0, 0).Format(FormatDateUnSpace) //基础数据结束日期
)

const CACHE_MYSQL_DATA_FILENAME = "eta:mysql:monitor:binlog:filename"
const CACHE_MYSQL_DATA_POSITION = "eta:mysql:monitor:binlog:position"

const ReportPptEditingWait = 30 // 报告/PPT编辑退出后其他人的等待时长(单位:s)