package utils

// 常量定义
const (
	FormatTime                 = "15:04:05"                //时间格式
	FormatTimeHm               = "15:04"                   //时间格式
	FormatDate                 = "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"                 //日期格式
	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
)

// 数据刷新频率
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_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
)

// 模板消息推送类型
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 // 统计特征-频率分布图表
)

// 批量配置图表的位置来源
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 // 混合表格
)

// 图表样式类型
const (
	CHART_TYPE_CURVE           = 1  //曲线图
	CHART_TYPE_BAR             = 7  //柱形图
	CHART_TYPE_SECTION_SCATTER = 10 //截面散点图样式
)

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

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

const (
	AiChatLimit = 50
)

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

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

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

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

const CrmEtaAuthorization = "NIi1RbEmH0C2rksXtPGDPBBgRgTZY87Q"

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