Browse Source

fix:常量初始化

Roc 1 year ago
parent
commit
54b6a96d75

+ 1 - 3
controllers/resource.go

@@ -558,9 +558,7 @@ func (this *ResourceController) UploadImageBase64() {
 	utils.FileLog.Info("%s:", time.Now().Format(utils.FormatDateTime))
 	utils.FileLog.Info("end update oss ")
 
-	fileHost := "https://hzstatic.hzinsights.com/"
-
-	resourceUrl := fileHost + savePath
+	resourceUrl := utils.Imghost + savePath
 
 	item := new(models.Resource)
 	item.ResourceUrl = resourceUrl

+ 9 - 10
services/alarm_msg/alarm_msg.go

@@ -6,20 +6,19 @@ import (
 	"hongze/hongze_ETA_mobile_api/utils"
 )
 
-var (
-	AlarmMsgUrl = "http://127.0.0.1:8606/api/alarm/send"
-)
-
 type WechatWarningReq struct {
-	Content string `description:"预警信息" "`
+	Content string `description:"预警信息"`
 }
 
 // SendAlarmMsg
-//projectName-项目名称
-//runMode-运行模式
-//msgBody-消息内容
-//level:消息基本,1:提示消息,2:警告消息,3:严重错误信息,默认为1 提示消息
+// projectName-项目名称
+// runMode-运行模式
+// msgBody-消息内容
+// level:消息基本,1:提示消息,2:警告消息,3:严重错误信息,默认为1 提示消息
 func SendAlarmMsg(msgBody string, level int) {
+	if utils.AlarmMsgUrl == "" {
+		return
+	}
 	params := make(map[string]interface{})
 	params["ProjectName"] = utils.APPNAME
 	params["RunMode"] = utils.RunMode
@@ -30,5 +29,5 @@ func SendAlarmMsg(msgBody string, level int) {
 		utils.FileLog.Info("SendAlarmMsg json.Marshal Err:" + err.Error())
 		return
 	}
-	http.Post(AlarmMsgUrl, string(param))
+	http.Post(utils.AlarmMsgUrl, string(param))
 }

+ 4 - 11
services/aliyun_email.go

@@ -6,17 +6,10 @@ import (
 	dm "github.com/alibabacloud-go/dm-20151123/v2/client"
 	util "github.com/alibabacloud-go/tea-utils/v2/service"
 	"github.com/alibabacloud-go/tea/tea"
+	"hongze/hongze_ETA_mobile_api/utils"
 	"time"
 )
 
-var (
-	AliyunEmailAccountName       = "ficcemail@hzmail.hzinsights.com"
-	AliyunEmailAccessKeyId       = "LTAIFMZYQhS2BTvW"
-	AliyunEmailAccessKeySecret   = "12kk1ptCHoGWedhBnKRVW5hRJzq9Fq"
-	AliyunEmailReplyAddress      = "ficcemail@hzinsights.com"
-	AliyunEmailReplyAddressAlias = "弘则研究"
-)
-
 // AliyunEmail 阿里云邮件
 type AliyunEmail struct {
 	Client *dm.Client
@@ -25,8 +18,8 @@ type AliyunEmail struct {
 // NewClient
 func (em *AliyunEmail) NewClient() (err error) {
 	config := &openapi.Config{
-		AccessKeyId:     tea.String(AliyunEmailAccessKeyId),
-		AccessKeySecret: tea.String(AliyunEmailAccessKeySecret),
+		AccessKeyId:     tea.String(utils.AliyunEmailAccessKeyId),
+		AccessKeySecret: tea.String(utils.AliyunEmailAccessKeySecret),
 	}
 	// 访问的域名
 	config.Endpoint = tea.String("dm.aliyuncs.com")
@@ -66,7 +59,7 @@ func (em *AliyunEmail) SendEmail(item *EnglishReportSendEmailRequest) (ok bool,
 		}
 	}
 	singleSendMailRequest := &dm.SingleSendMailRequest{}
-	singleSendMailRequest.SetAccountName(AliyunEmailAccountName)
+	singleSendMailRequest.SetAccountName(utils.AliyunEmailAccountName)
 	singleSendMailRequest.SetAddressType(1)
 	singleSendMailRequest.SetReplyToAddress(false)
 	singleSendMailRequest.SetSubject(item.Subject)

+ 3 - 0
services/data/predict_edb_info_rule.go

@@ -1825,6 +1825,9 @@ func GetChartPredictEdbInfoDataListByRuleAnnualValueInversion(edbInfoId int, con
 
 		//同比年份相应的上一期日期的余额
 		lastYearDateBalance := yearTotalMap[lastPrevDateTime.Year()] - dateTotal
+		if lastYearDateBalance == 0 {
+			continue
+		}
 
 		// 同比增速=当年余额/同比年份上一期日期的余额
 		tbVal := decimal.NewFromFloat(currYearBalance).Div(decimal.NewFromFloat(lastYearDateBalance))

+ 3 - 17
services/elastic.go

@@ -3,20 +3,12 @@ package services
 import (
 	"context"
 	"fmt"
-	"github.com/olivere/elastic/v7"
 	"hongze/hongze_ETA_mobile_api/models"
 	"hongze/hongze_ETA_mobile_api/services/alarm_msg"
+	"hongze/hongze_ETA_mobile_api/utils"
 	"strings"
 )
 
-func NewClient() (client *elastic.Client, err error) {
-	client, err = elastic.NewClient(
-		elastic.SetURL(ES_URL),
-		elastic.SetBasicAuth(ES_USERNAME, ES_PASSWORD),
-		elastic.SetSniff(false))
-	return
-}
-
 // EsAddOrEditReport 新增编辑es报告
 func EsAddOrEditReport(indexName, docId string, item *models.ElasticReportDetail) (err error) {
 	defer func() {
@@ -24,10 +16,7 @@ func EsAddOrEditReport(indexName, docId string, item *models.ElasticReportDetail
 			fmt.Println("EsAddOrEditReport Err:", err.Error())
 		}
 	}()
-	client, err := NewClient()
-	if err != nil {
-		return
-	}
+	client := utils.EsClient
 	// docId为报告ID+章节ID
 	searchById, err := client.Get().Index(indexName).Id(docId).Do(context.Background())
 	if err != nil && !strings.Contains(err.Error(), "404") {
@@ -85,10 +74,7 @@ func EsAddOrEditEnglishReport(indexName, docId string, item *models.ElasticEngli
 			go alarm_msg.SendAlarmMsg("新增编辑es英文报告 EsAddOrEditEnglishReport,Err:"+err.Error(), 3)
 		}
 	}()
-	client, err := NewClient()
-	if err != nil {
-		return
-	}
+	client := utils.EsClient
 	// docId为报告ID
 	searchById, err := client.Get().Index(indexName).Id(docId).Do(context.Background())
 	if err != nil {

+ 14 - 60
services/elastic/elastic.go

@@ -7,24 +7,14 @@ import (
 	"fmt"
 	"github.com/olivere/elastic/v7"
 	"hongze/hongze_ETA_mobile_api/models/data_manage"
+	"hongze/hongze_ETA_mobile_api/utils"
 	"strconv"
 )
 
-func NewClient() (client *elastic.Client, err error) {
-	client, err = elastic.NewClient(
-		elastic.SetURL(ES_URL),
-		elastic.SetBasicAuth(ES_USERNAME, ES_PASSWORD),
-		elastic.SetSniff(false))
-	return
-}
-
 // indexName:索引名称
 // mappingJson:表结构
 func EsCreateIndex(indexName, mappingJson string) (err error) {
-	client, err := NewClient()
-	if err != nil {
-		return
-	}
+	client := utils.EsClient
 	//定义表结构
 	exists, err := client.IndexExists(indexName).Do(context.Background()) //<5>
 	if err != nil {
@@ -117,10 +107,7 @@ func EsCreateIndex(indexName, mappingJson string) (err error) {
 
 // 删除数据
 func EsDeleteData(indexName, docId string) (err error) {
-	client, err := NewClient()
-	if err != nil {
-		return
-	}
+	client := utils.EsClient
 	resp, err := client.Delete().Index(indexName).Id(docId).Do(context.Background())
 	fmt.Println(resp)
 	if err != nil {
@@ -135,10 +122,7 @@ func EsDeleteData(indexName, docId string) (err error) {
 }
 
 func MappingModify(indexName, mappingJson string) {
-	client, err := NewClient()
-	if err != nil {
-		return
-	}
+	client := utils.EsClient
 	result, err := client.PutMapping().Index(indexName).BodyString(mappingJson).Do(context.Background())
 	fmt.Println(err)
 	fmt.Println(result)
@@ -152,10 +136,7 @@ func EsAddOrEditEdbInfoData(indexName, docId string, item *data_manage.EdbInfoLi
 			fmt.Println("EsAddOrEditData Err:", err.Error())
 		}
 	}()
-	client, err := NewClient()
-	if err != nil {
-		return
-	}
+	client := utils.EsClient
 
 	resp, err := client.Index().Index(indexName).Id(docId).BodyJson(item).Do(context.Background())
 	if err != nil {
@@ -378,10 +359,7 @@ func SearchEdbInfoDataBak(indexName, keywordStr string, from, size, filterSource
 			fmt.Println("EsAddOrEditData Err:", err.Error())
 		}
 	}()
-	client, err := NewClient()
-	if err != nil {
-		return
-	}
+	client := utils.EsClient
 
 	//queryString := elastic.NewQueryStringQuery(keywordStr)
 	//boolQueryJson, err := json.Marshal(queryString)
@@ -746,10 +724,7 @@ func searchEdbInfoData(indexName string, mustMap, mustNotMap []interface{}, shou
 			fmt.Println("EsAddOrEditData Err:", err.Error())
 		}
 	}()
-	client, err := NewClient()
-	if err != nil {
-		return
-	}
+	client := utils.EsClient
 
 	//queryString := elastic.NewQueryStringQuery(keywordStr)
 	//boolQueryJson, err := json.Marshal(queryString)
@@ -864,10 +839,7 @@ func EsDeleteEdbInfoData(indexName, docId string) (err error) {
 			fmt.Println("EsDeleteEdbInfoData Err:", err.Error())
 		}
 	}()
-	client, err := NewClient()
-	if err != nil {
-		return
-	}
+	client := utils.EsClient
 
 	resp, err := client.Delete().Index(indexName).Id(docId).Do(context.Background())
 	fmt.Println(resp)
@@ -960,10 +932,7 @@ func Analyze(content string) (contentList []string, err error) {
 			fmt.Println("Analyze Err:", err.Error())
 		}
 	}()
-	client, err := NewClient()
-	if err != nil {
-		return
-	}
+	client := utils.EsClient
 	queryMap := map[string]string{
 		"text":     content,
 		"analyzer": "ik_max_word",
@@ -1152,10 +1121,7 @@ func EsAddOrEditChartInfoData(indexName, docId string, item *data_manage.ChartIn
 			fmt.Println("EsAddOrEditData Err:", err.Error())
 		}
 	}()
-	client, err := NewClient()
-	if err != nil {
-		return
-	}
+	client := utils.EsClient
 
 	resp, err := client.Index().Index(indexName).Id(docId).BodyJson(item).Do(context.Background())
 	if err != nil {
@@ -1179,10 +1145,7 @@ func EsDeleteDataV2(indexName, docId string) (err error) {
 			fmt.Println("EsDeleteEdbInfoData Err:", err.Error())
 		}
 	}()
-	client, err := NewClient()
-	if err != nil {
-		return
-	}
+	client := utils.EsClient
 
 	resp, err := client.Delete().Index(indexName).Id(docId).Do(context.Background())
 	fmt.Println(resp)
@@ -1205,10 +1168,7 @@ func SearchChartInfoData(indexName, keywordStr string, showSysId int, sourceList
 			fmt.Println("EsAddOrEditData Err:", err.Error())
 		}
 	}()
-	client, err := NewClient()
-	if err != nil {
-		return
-	}
+	client := utils.EsClient
 
 	//queryString := elastic.NewQueryStringQuery(keywordStr)
 	//boolQueryJson, err := json.Marshal(queryString)
@@ -1371,10 +1331,7 @@ func EsAddOrEditDataInterface(indexName, docId string, item interface{}) (err er
 			fmt.Println("EsAddOrEditData Err:", err.Error())
 		}
 	}()
-	client, err := NewClient()
-	if err != nil {
-		return
-	}
+	client := utils.EsClient
 
 	resp, err := client.Index().Index(indexName).Id(docId).BodyJson(item).Do(context.Background())
 	if err != nil {
@@ -1399,10 +1356,7 @@ func SearchMyChartInfoData(indexName, keywordStr string, adminId int, noPermissi
 			fmt.Println("EsAddOrEditData Err:", err.Error())
 		}
 	}()
-	client, err := NewClient()
-	if err != nil {
-		return
-	}
+	client := utils.EsClient
 
 	//queryString := elastic.NewQueryStringQuery(keywordStr)
 	//boolQueryJson, err := json.Marshal(queryString)

+ 1 - 9
services/elastic/elasticsearch.go

@@ -4,17 +4,9 @@ import (
 	"fmt"
 )
 
-const (
-	ES_URL      = "http://es-cn-nif227b580019rgw6.public.elasticsearch.aliyuncs.com:9200" //<1>
-	ES_USERNAME = "elastic"                                                               //<2>
-	ES_PASSWORD = "hongze@2021"                                                           //<3>
-	//Grafana pwd-> 20521bb9
-	//Grafana username-> emon
-)
-
 type tracelog struct{}
 
-//实现输出
+// 实现输出
 func (tracelog) Printf(format string, v ...interface{}) {
 	fmt.Printf(format, v...)
 }

+ 0 - 46
services/elasticsearch.go

@@ -1,18 +1,7 @@
 package services
 
 import (
-	"context"
-	"encoding/json"
 	"fmt"
-	"github.com/olivere/elastic/v7"
-)
-
-const (
-	ES_URL      = "http://es-cn-nif227b580019rgw6.public.elasticsearch.aliyuncs.com:9200" //<1>
-	ES_USERNAME = "elastic"                                                               //<2>
-	ES_PASSWORD = "hongze@2021"                                                           //<3>
-	//Grafana pwd-> 20521bb9
-	//Grafana username-> emon
 )
 
 type tracelog struct{}
@@ -32,38 +21,3 @@ func RemoveDuplicatesAndEmpty(a []string) (ret []string) {
 	}
 	return
 }
-
-func init21123() {
-	fmt.Println("start")
-	client, err := elastic.NewClient(elastic.SetURL(ES_URL), elastic.SetBasicAuth(ES_USERNAME, ES_PASSWORD), elastic.SetSniff(false))
-	if err != nil {
-		fmt.Println("err:", err)
-	}
-	fmt.Println(client)
-	keyWordStr := "医疗器械"
-	queryString := elastic.NewQueryStringQuery(`Title:(` + keyWordStr + `)`)
-
-	boolqueryJson, err := json.Marshal(queryString)
-	fmt.Println("err:", err)
-	fmt.Println("queryString ", string(boolqueryJson))
-
-	var esIndex = "cygx_article"
-	//boolquery.Must(elastic.NewMatchQuery("Title", keyWord), elastic.NewMatchQuery("BodyText", keyWord))
-	highlight := elastic.NewHighlight()
-	highlight = highlight.Fields(elastic.NewHighlighterField("Title"), elastic.NewHighlighterField("BodyText"))
-	highlight = highlight.PreTags("<font color='red'>").PostTags("</font>")
-	request := client.Search(esIndex).Highlight(highlight).Query(queryString)
-
-	requestJson, err := json.Marshal(request)
-	fmt.Println("err:", err)
-	fmt.Println("requestJson ", string(requestJson))
-
-	searchByMatch, err := request.Do(context.Background())
-
-	if searchByMatch.Hits != nil {
-
-	}
-
-	fmt.Println(searchByMatch)
-	fmt.Println("end")
-}

+ 15 - 33
services/oss.go

@@ -12,14 +12,6 @@ import (
 	"hongze/hongze_ETA_mobile_api/utils"
 )
 
-var (
-	RoleArn            = "acs:ram::1884217364581072:role/hzossrole"
-	RoleSessionName    = "hzossRole"
-	RAMAccessKeyId     = "LTAI5t9S36LXduhTnECVY6Hn"
-	RAMAccessKeySecret = "V6FG5bdzjKKqMpqEqxeWijJCdzDCuL"
-	STSTokenCacheKey   = "hongze_admin_sts_token"
-)
-
 /*
 上传demo
 func init() {
@@ -48,7 +40,7 @@ func UploadAliyun(filename, filepath string) (string, error) {
 	if err != nil {
 		return "2", err
 	}
-	path := utils.Upload_dir + time.Now().Format("200601/20060102/")
+	path := utils.UploadDir + time.Now().Format("200601/20060102/")
 	path += filename
 	err = bucket.PutObjectFromFile(path, filepath)
 	if err != nil {
@@ -60,21 +52,21 @@ func UploadAliyun(filename, filepath string) (string, error) {
 
 // UploadAliyunV2 图片上传到阿里云
 func UploadAliyunV2(filename, filepath string) (string, error) {
-	client, err := oss.New(Endpoint, AccessKeyId, AccessKeySecret)
+	client, err := oss.New(utils.Endpoint, utils.AccessKeyId, utils.AccessKeySecret)
 	if err != nil {
 		return "1", err
 	}
-	bucket, err := client.Bucket(Bucketname)
+	bucket, err := client.Bucket(utils.Bucketname)
 	if err != nil {
 		return "2", err
 	}
-	path := UploadDir + time.Now().Format("200601/20060102/")
+	path := utils.UploadDir + time.Now().Format("200601/20060102/")
 	path += filename
 	err = bucket.PutObjectFromFile(path, filepath)
 	if err != nil {
 		return "3", err
 	}
-	path = Imghost + path
+	path = utils.Imghost + path
 	return path, err
 }
 
@@ -168,7 +160,7 @@ func GetOssSTSToken() (item *STSToken, err error) {
 	}()
 	item = new(STSToken)
 	// 获取缓存中的Token
-	recent, _ := utils.Rc.RedisString(STSTokenCacheKey)
+	recent, _ := utils.Rc.RedisString(utils.STSTokenCacheKey)
 	if recent != "" {
 		lastToken := new(STSToken)
 		if e := json.Unmarshal([]byte(recent), &lastToken); e != nil {
@@ -202,7 +194,7 @@ func GetOssSTSToken() (item *STSToken, err error) {
 		return
 	}
 	// 覆盖缓存
-	if e := utils.Rc.Put(STSTokenCacheKey, newTokenJson, time.Hour); e != nil {
+	if e := utils.Rc.Put(utils.STSTokenCacheKey, newTokenJson, time.Hour); e != nil {
 		err = errors.New("GetOssSTSToken SetRedis Err: " + e.Error())
 		return
 	}
@@ -218,17 +210,17 @@ func NewSTSToken() (item *STSToken, err error) {
 		}
 	}()
 	item = new(STSToken)
-	client, e := sts.NewClientWithAccessKey("cn-shanghai", RAMAccessKeyId, RAMAccessKeySecret)
+	client, e := sts.NewClientWithAccessKey(utils.RegionId, utils.RAMAccessKeyId, utils.RAMAccessKeySecret)
 	if e != nil {
 		err = errors.New("NewSTSToken NewClient Err: " + e.Error())
 		return
 	}
 	request := sts.CreateAssumeRoleRequest()
 	request.Scheme = "https"
-	request.RegionId = "cn-shanghai"
-	request.RoleArn = RoleArn
+	request.RegionId = utils.RegionId
+	request.RoleArn = utils.RoleArn
 	now := time.Now().Format(utils.FormatDateTimeUnSpace)
-	request.RoleSessionName = RoleSessionName + now
+	request.RoleSessionName = utils.RoleSessionName + now
 	request.DurationSeconds = "3600"
 
 	response, e := client.AssumeRole(request)
@@ -247,28 +239,18 @@ func NewSTSToken() (item *STSToken, err error) {
 	return
 }
 
-// 后台用于传研报小程序二维码
-var (
-	Bucketname      string = "hzchart"
-	Endpoint        string = "oss-cn-shanghai.aliyuncs.com"
-	Imghost         string = "https://hzstatic.hzinsights.com/"
-	UploadDir       string = "static/images/"
-	AccessKeyId     string = "LTAIFMZYQhS2BTvW"
-	AccessKeySecret string = "12kk1ptCHoGWedhBnKRVW5hRJzq9Fq"
-)
-
 // UploadAliyunToDir 上传至hzchart
 func UploadAliyunToDir(filename, filepath, uploadDir, fileDir string) (string, error) {
-	client, err := oss.New(Endpoint, AccessKeyId, AccessKeySecret)
+	client, err := oss.New(utils.Endpoint, utils.AccessKeyId, utils.AccessKeySecret)
 	if err != nil {
 		return "1", err
 	}
-	bucket, err := client.Bucket(Bucketname)
+	bucket, err := client.Bucket(utils.Bucketname)
 	if err != nil {
 		return "2", err
 	}
 	if uploadDir == "" {
-		uploadDir = UploadDir
+		uploadDir = utils.UploadDir
 	}
 	if fileDir == "" {
 		fileDir = time.Now().Format("200601/20060102/")
@@ -279,6 +261,6 @@ func UploadAliyunToDir(filename, filepath, uploadDir, fileDir string) (string, e
 	if err != nil {
 		return "3", err
 	}
-	path = Imghost + path
+	path = utils.Imghost + path
 	return path, err
 }

+ 1 - 5
services/ppt.go

@@ -47,10 +47,7 @@ func pptContent2Html(content string, isEnglish bool) (htm string, err error) {
 	pageLen := len(contents)
 	htmlContent := ``
 	// iframe图表/表格域名
-	chartRoot := `https://chartlib.hzinsights.com`
-	if utils.RunMode == "debug" {
-		chartRoot = `https://charttest.hzinsights.com`
-	}
+	chartRoot := utils.PublicChartHost
 	if pageLen > 0 {
 		htmlPrefix := `<p style="text-align: left; margin-top: 10px; font-size: 16px;">`
 		htmlSuffix := `</p>`
@@ -144,4 +141,3 @@ func ResetPPTReport(reportId int, isEnglish bool) (err error) {
 	}
 	return
 }
-

+ 5 - 12
services/tencent_yun.go

@@ -6,17 +6,10 @@ import (
 	"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
 	"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
 	ses "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ses/v20201002"
+	"hongze/hongze_ETA_mobile_api/utils"
 	"time"
 )
 
-const (
-	TencentSDKSecretId  = "AKIDa4WvJar361NZXkogKoHgtyxvkVDqKclq" // 腾讯云主账号SecretId
-	TencentSDKSecretKey = "61sdMzVvMejjZFj2KTQ9tgR4adYMzR1a"     // 腾讯云主账号SecretKey
-
-	TencentEmailFromEmailAddress = "email@txhzmail.hzinsights.com" // 腾讯云邮件发信地址
-	TencentEmailTemplateID       = 54181                           // 腾讯云邮件模板ID
-)
-
 // TencentEmail 腾讯云邮件
 type TencentEmail struct {
 	Client *ses.Client
@@ -27,8 +20,8 @@ func (te *TencentEmail) NewClient() (err error) {
 	// 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey,此处还需注意密钥对的保密
 	// 密钥可前往https://console.cloud.tencent.com/cam/capi网站进行获取
 	credential := common.NewCredential(
-		TencentSDKSecretId,
-		TencentSDKSecretKey,
+		utils.TencentSDKSecretId,
+		utils.TencentSDKSecretKey,
 	)
 	// 实例化一个client选项,可选的,没有特殊需求可以跳过
 	cpf := profile.NewClientProfile()
@@ -82,10 +75,10 @@ func (te *TencentEmail) SendEmail(req *EnglishReportSendEmailRequest) (ok bool,
 	}
 	tmpDataStr := string(tmpDataByte)
 	request.Template = &ses.Template{
-		TemplateID:   common.Uint64Ptr(TencentEmailTemplateID),
+		TemplateID:   common.Uint64Ptr(utils.TencentEmailTemplateID),
 		TemplateData: common.StringPtr(tmpDataStr),
 	}
-	request.FromEmailAddress = common.StringPtr(TencentEmailFromEmailAddress)
+	request.FromEmailAddress = common.StringPtr(utils.TencentEmailFromEmailAddress)
 	request.Destination = common.StringPtrs([]string{req.Email})
 	request.Subject = common.StringPtr(req.Subject)
 

+ 2 - 18
services/wx_app.go

@@ -12,29 +12,13 @@ import (
 	"hongze/hongze_ETA_mobile_api/utils"
 )
 
-// 微信小程序配置信息
-var (
-	WxId        string //微信原始ID
-	WxAppId     string
-	WxAppSecret string
-	WxPlatform  int    //用户来源,需要入库,用来保存该用户来自哪个平台,默认是:1
-	EnvVersion  string // 小程序版本, release-正式版; trial-体验版; develop-开发版
-)
-
-func init() {
-	WxAppId = `wxb059c872d79b9967`
-	WxId = `gh_75abb562a946`
-	WxAppSecret = `1737c73e9f69a21de1a345b8f0800258`
-	WxPlatform = 6 //弘则研报来源
-}
-
 func GetWxApp() (miniprogram *miniprogram.MiniProgram) {
 	wc := wechat.NewWechat()
 	memory := cache.NewMemory()
 	//memory := cache.NewRedis(global.Redis)
 	cfg := &config.Config{
-		AppID:     WxAppId,
-		AppSecret: WxAppSecret,
+		AppID:     utils.WxYbAppId,
+		AppSecret: utils.WxYbAppSecret,
 		Cache:     memory,
 	}
 

+ 221 - 309
utils/config.go

@@ -5,139 +5,145 @@ import (
 	beeLogger "github.com/beego/bee/v2/logger"
 	"github.com/beego/beego/v2/server/web"
 	"github.com/rdlucklib/rdluck_tools/cache"
+	"strconv"
 )
 
 var (
-	RunMode                string //运行模式
-	MYSQL_URL              string //数据库连接
-	MYSQL_URL_RDDP         string //数据库连接
-	MYSQL_URL_EDB          string
-	MYSQL_URL_DATA         string
-	MYSQL_URL_GL           string
-	MYSQL_LOG_URL          string
-	MYSQL_URL_COMEIN_DATA  string // 路演记录数据库
+	RunMode               string //运行模式
+	MYSQL_URL             string //数据库连接
+	MYSQL_URL_RDDP        string //数据库连接
+	MYSQL_URL_EDB         string
+	MYSQL_URL_DATA        string
+	MYSQL_URL_GL          string
+	MYSQL_LOG_URL         string
+	MYSQL_URL_COMEIN_DATA string // 路演记录数据库
 
 	REDIS_CACHE string       //缓存地址
 	Rc          *cache.Cache //redis缓存
 	Re          error        //redis错误
 )
 
+// SystemType 系统类型; hz:弘则;trial:试用平台;custom:客户
+var SystemType string
+
+// 基础配置
 var (
-	STATIC_DIR string
+	STATIC_DIR       string
+	DesKey           string // 接口返回加密KEY
+	APPNAME          string //项目中文名称
+	EmailSendToUsers string // 邮件提醒人员
+	// LibreOfficePath LibreOfficePath的地址
+	LibreOfficePath string
 )
 
-// 微信配置信息
+// 公共api内部服务调用
 var (
-	WxId                string //微信原始ID
-	WxAppId             string
-	WxAppSecret         string
-	TemplateIdByProduct string //产品运行报告通知-模板ID
+	// EDB_LIB_URL 公共指标库
+	EDB_LIB_URL         string
+	APP_EDB_LIB_NAME_EN string
+	EDB_LIB_Md5_KEY     string
 
-	TemplateRedirectUrl                   string //模板消息跳转地址
-	DayReportTemplateRedirectUrl          string //模板消息跳转地址(晨报、周报)
-	TemplateIdByCompanyApply              string //客户申请单审批通知-模板ID
-	TemplateCompanyApplyRedirectUrl       string //审批单模板消息跳转地址
-	TemplateIdByCompanyReceive            string //销售跨部门领取客户通知-模板ID
-	TemplateIdByCompanyReceivePermission  string //销售"添加客户/领取客户"权限变更通知
-	WxMsgTemplateIdActivityChangeApply    string //查研观向活动变更通知-模板ID
-	WxMsgTemplateIdActivityChangeApplyXzs string //查研观向活动变更通知-模板ID(小助手)
-	TemplateIdByProductXzs                string //产品运行报告通知-模板ID(小助手)
-	WxCygxAppId                           string //查研观向小程序APPID
-	WxMsgTemplateIdAskByUser              string //查研观向用户提问新消息推送ID
-	WxCrmAppId                            string //随手办公小程序APPID
-	WxPublicIdXzs                         string //查研观向小助手公众号
-	WxPublicSecretXzs                     string //查研观向小助手公众号
-	WxYbAppId                             string //弘则研报小程序APPID
-	YiDongHuaWeiYunUrl                    string //易董 华为云请求域名
-
-	WxMsgTemplateIdWithRoadshowPending      string //路演->研究员收到待处理的申请
-	WxMsgTemplateIdWithRoadshowDetailResult string //路演->销售收到处理结果
-	WxMsgTemplateIdWithRoadshowDeleteNotice string //路演->研究员收到活动删除通知
-
-	WxMsgTemplateIdWithYbCommunityQuestion string // 研报小程序->问答社区回复通知
-	WxMsgTemplateIdWithSealApplyFinished   string // 用印申请-已签回通知
-
-	//内部员工公众号(弘则部门)
-	AdminWxAppId            string
-	AdminWxAppSecret        string
-	UserTemplateIdByProduct string //客户产品运行报告通知-模板ID
+	// PublicChartHost 公共图库的host
+	PublicChartHost string
 
-)
+	// SendWxTemplateMsgUrl 模板消息推送
+	SendWxTemplateMsgUrl string
 
-var (
-	THS_SendUrl string //同花顺地址url
-	THS_PubKey  string //同花顺公钥
+	// SendTemplateMsgAuthorization 模板推送秘钥
+	SendTemplateMsgAuthorization string
+
+	// HandleVideoDecibelUrl 处理音频分贝的url
+	HandleVideoDecibelUrl string
+
+	// Ppt2ImageUrl ppt转图片服务的地址
+	Ppt2ImageUrl string
+
+	// EnglishShareUrl 英文研报群发邮件分享地址
+	EnglishShareUrl string
+
+	// AlarmMsgUrl 报警服务地址
+	AlarmMsgUrl string
 )
 
+// TemplateIdByProduct 微信配置信息
 var (
-	IndexName                      string //Es索引
-	IndexNameArticleHistory        string //文章阅读记录Es索引
-	SummaryArticleId               int    //手动添加的纪要库开始ID
-	YanxSummaryPermissionId        int    //研选纪要分类ID
-	YanxViewpointPermissionId      int    //研选观点分类ID
-	DATA_INDEX_NAME                string //数据指标库索引
-	CHART_INDEX_NAME               string //研究图库索引
-	EsReportIndexName              string //研报ES索引
-	EsEnglishReportIndexName       string //英文研报ES索引
-	Hz_CeLue_Article_Url           string //策略平台报告地址
-	MY_CHART_INDEX_NAME            string //研究图库(MY ETA)索引
-	EsSemanticAnalysisDocIndexName string //ES语义分析文档索引名
+	TemplateIdByProduct string //产品运行报告通知-模板ID
+	WxYbAppId           string // 研报小程序appid
+	WxYbId              string // 研报小程序微信原始ID
+	WxYbAppSecret       string // 研报小程序秘钥
+	WxYbPlatform        int    //弘则研报来源
 )
 
+// ES配置
 var (
-	Bucketname       string = "hongze"
-	Endpoint         string
-	Imghost          string = "https://hongze.oss-accelerate.aliyuncs.com/"
-	Upload_dir       string = "static/images/"
-	Upload_Audio_Dir string = "static/audio/"
-	AccessKeyId      string = "LTAIFMZYQhS2BTvW"
-	AccessKeySecret  string = "12kk1ptCHoGWedhBnKRVW5hRJzq9Fq"
+	ES_URL      string // ES服务器地址
+	ES_USERNAME string // ES账号
+	ES_PASSWORD string // ES密码
 )
 
-// LibreOfficePath LibreOfficePath的地址
-var LibreOfficePath string
-
-// 经济数据库
+// ES索引配置
 var (
-	EDB_LIB_URL string
+	DATA_INDEX_NAME          string //数据指标库索引
+	CHART_INDEX_NAME         string //研究图库索引
+	EsReportIndexName        string //研报ES索引
+	EsEnglishReportIndexName string //英文研报ES索引
+	MY_CHART_INDEX_NAME      string //研究图库(MY ETA)索引
 )
 
-// 上海crm开放api配置
+// 阿里云配置
 var (
-	CRM_OPEN_API_URL        string
-	CRM_OPEN_API_APP_KEY    string
-	CRM_OPEN_API_APP_SECRET string
+	Bucketname       string
+	Endpoint         string
+	Imghost          string
+	UploadDir        string
+	Upload_Audio_Dir string
+	AccessKeyId      string
+	AccessKeySecret  string
 )
 
-// 全时会议账号信息
+// 阿里云oss前端上传用
 var (
-	QsAppID     string
-	QsSecretKey string
-	QsUserId    int64
-	QsUserName  string
+	AliStsScheme       string
+	RegionId           string
+	RoleArn            string
+	RoleSessionName    string
+	RAMAccessKeyId     string
+	RAMAccessKeySecret string
+	STSTokenCacheKey   string
 )
 
-// 进门财经账号信息
+// 科大讯飞--语音合成
 var (
-	COMEIN_URL      string
-	COMEIN_APPID    string
-	COMEIN_SECREKEY string
+	XfSTATUS_FIRST_FRAME    = 0 //第一帧标识
+	XfSTATUS_CONTINUE_FRAME = 1 //中间帧标识
+	XfSTATUS_LAST_FRAME     = 2 //最后一帧标识
+	XfHost                  = "tts-api.xfyun.cn"
+	XfMaxFontSize           = 8000
+	XfAPPID                 string
+	XfAPIKey                string
+	XfAPISecret             string
+	XfHostUrl               string
+	XfOrigin                string
+	XfVcn                   string //发言人
 )
 
-// 模板消息推送
+// 阿里云邮箱配置
 var (
-	SendWxTemplateMsgUrl string
+	AliyunEmailAccountName       string
+	AliyunEmailAccessKeyId       string
+	AliyunEmailAccessKeySecret   string
+	AliyunEmailReplyAddress      string
+	AliyunEmailReplyAddressAlias string
 )
 
-// ppt转图片服务的地址
-var Ppt2ImageUrl string
-
-// 开放openapi的地址
-var HongzeOpenApiHost string
-
-var EnglishShareUrl string //英文研报群发邮件分享地址
+// 腾讯云邮箱配置
+var (
+	TencentSDKSecretId  string // 腾讯云主账号SecretId
+	TencentSDKSecretKey string // 腾讯云主账号SecretKey
 
-var EnPolicyReportUrl string
+	TencentEmailFromEmailAddress string // 腾讯云邮件发信地址
+	TencentEmailTemplateID       uint64 // 云邮件模板ID
+)
 
 func init() {
 	tmpRunMode, err := web.AppConfig.String("run_mode")
@@ -185,250 +191,156 @@ func init() {
 		fmt.Println(Re)
 		panic(Re)
 	}
-	WxCygxAppId = "wxcc32b61f96720d2f"
-	SummaryArticleId = 1000000                                       //手动添加的纪要库开始ID
-	YanxSummaryPermissionId = 1001                                   //研选纪要分类ID
-	YanxViewpointPermissionId = 1002                                 //研选观点分类ID
-	Hz_CeLue_Article_Url = "https://vmp.hzinsights.com/v2/articles/" //策略平台项目报告地址
-
-	//随手办公 微信小程序appid
-	WxCrmAppId = `wx67b68e39913e511e`
-	WxYbAppId = `wxb059c872d79b9967` //弘则研报小程序
-
-	//内部员工公众号(弘则部门)
-	AdminWxAppId = "wx1392111da5426e9e"
-	AdminWxAppSecret = "30eceb7cf29bf2f046031155ab55d7b4"
-
-	THS_PubKey = `-----BEGIN PUBLIC KEY-----
-MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqugglfCboOEfWtHlGBOW
-40a4Y3xOs0MPBwjTOzHgcaWzx5XCc20VftGVXkWlpjs8u4dza/Bp1SV7SJ5Y7U95
-jgUOP8Js9Qgp6UVqBJDJf3i1KpjHzlk3ma8zxAYUAdieEUE+SKSxSY+BD9A6lpf5
-n+igXLmzR5GeVGFeLzoMhB1+pXgGhW30ao9wPwuRF7DBl+FKa/ACi7iXLiwXVgqT
-FFi29TKeerEENu3EpMXvPml7tNUiVmVW6d83hlascfbAlkShwuHLSGpLqK7brtg6
-jRS9hreKFKb0BUQ4TB26e7IDCstbMRvUp4+OGezexzic5NYPQ8uLo5OTaS7f7PrW
-ZwIDAQAB
------END PUBLIC KEY-----`
-
-	if RunMode == "release" {
-
-		TemplateRedirectUrl = "https://ficc.hzinsights.com/reportdtl?id="
-		DayReportTemplateRedirectUrl = "https://report.hzinsights.com/#/allindex/" //晨报模板跳转url
-
-		TemplateCompanyApplyRedirectUrl = "https://ficc.hzinsights.com/approval/approval/list"
-
-		STATIC_DIR = "/home/static/imgs/"
-		Endpoint = "oss-cn-shanghai-internal.aliyuncs.com"
-		//Endpoint = "oss-cn-shanghai.aliyuncs.com"
-		IndexName = "cygx_article_v03_23"
-		IndexNameArticleHistory = "cygx_article_history_v07_08"
-		TemplateCompanyApplyRedirectUrl = "https://ficc.hzinsights.com/approval/approval/list"
-
-		//同花顺正式地址
-		THS_SendUrl = `https://board.10jqka.com.cn/gateway/ps/syncNews`
-
-		DATA_INDEX_NAME = "hz_data_lib_v20220214"
-		CHART_INDEX_NAME = "hz_chart_lib_v2"
-		MY_CHART_INDEX_NAME = "hz_my_chart_v1"
-		//同花顺,万得接口服务地址(阿里云windows服务器地址;内网地址)
-		Hz_Server_Data_Url = "http://172.19.173.231:7000/"
-		EDB_LIB_URL = "http://172.19.173.232:8300/edbapi/"
-		EsReportIndexName = "research_report_v1"
-		EsEnglishReportIndexName = "english_report_v1"
-		EsSemanticAnalysisDocIndexName = "semantic_analysis_v1"
-
-		WxRelease()
-
-		SendWxTemplateMsgUrl = "http://127.0.0.1:8086/v1/wechat/send_template_msg"
-		HongzeOpenApiHost = "http://127.0.0.1:8609"
-		EnglishShareUrl = "https://ybpcen.hzinsights.com"
-		EnPolicyReportUrl = "https://en.hzinsights.com/v2api/"
-	} else {
-
-		TemplateRedirectUrl = "http://rddpweb.brilliantstart.cn/reportdtl?id="
-		DayReportTemplateRedirectUrl = "http://report.brilliantstart.cn/#/allindex/" //晨报模板跳转url
-
-		TemplateCompanyApplyRedirectUrl = "http://advisoryadmin.brilliantstart.cn/approval/approval/list"
-
-		STATIC_DIR = "static/imgs/"
-		Endpoint = "oss-cn-shanghai.aliyuncs.com"
-		IndexName = "cygx_article_v1"
-		IndexNameArticleHistory = "cygx_article_history_v1"
-
-		//同花顺测试地址
-		THS_SendUrl = `https://mtest.10jqka.com.cn/gateway/ps/syncNews`
-		DATA_INDEX_NAME = "test_hz_data_lib_v20220120"
-		CHART_INDEX_NAME = "test_hz_chart_lib_v2"
-		MY_CHART_INDEX_NAME = "test_hz_my_chart_v1"
-		//同花顺,万得接口服务地址(阿里云windows服务器地址;外网地址)
-		Hz_Server_Data_Url = "http://139.196.136.213:7000/"
-		EDB_LIB_URL = "http://8.136.199.33:8300/edbapi/"
-		//EDB_LIB_URL = "http://127.0.0.1:8900/edbapi/"
-		EsReportIndexName = "test_research_report_v1"
-		EsEnglishReportIndexName = "test_english_report_v1"
-		EsSemanticAnalysisDocIndexName = "test_semantic_analysis_v1"
-
-		WxDebug()
-		SendWxTemplateMsgUrl = "http://127.0.0.1:8086/v1/wechat/send_template_msg"
-		HongzeOpenApiHost = "http://127.0.0.1:8608"
-		EnglishShareUrl = "http://8.136.199.33:8301"
-		//EnPolicyReportUrl = "https://beta.internal.hzinsights.com/v2api/"
-		EnPolicyReportUrl = "https://en.hzinsights.com/v2api/"
-	}
-	tmpLibreOfficePath, err := web.AppConfig.String("libreOfficePath")
+
+	// 系统类型
+	systemType, err := web.AppConfig.String("system_type")
 	if err != nil {
-		panic("配置文件读取libreOfficePath错误 " + err.Error())
+		panic(any("配置文件读取system_type错误 " + err.Error()))
 	}
-	LibreOfficePath = tmpLibreOfficePath
+	SystemType = systemType
 
-	//上海crm开放api配置
-	CrmOpenApiConfig()
+	// 项目中文名称
+	appNameCn, err := web.AppConfig.String("app_name_cn")
+	if err != nil {
+		panic(any("配置文件读取app_name_cn错误 " + err.Error()))
+	}
+	APPNAME = appNameCn
 
-	//初始化全时开放api配置
-	initQsOpenApiConfig()
+	// 初始化内部服务配置
 
-	//进门财经开放api配置
-	ComeinOpenApiConfig()
+	// 接口返回加密KEY
+	DesKey = config["des_key"]
 
-	//易董开放api配置
-	YiDongApiConfig()
+	// 服务基本配置
+	{
+		// 邮件提醒人员
+		EmailSendToUsers = config["email_send_to_users"]
 
-	// 初始化内部服务配置
-	initSystemServer()
-}
+		// 静态文件目录
+		STATIC_DIR = config["static_dir"]
+	}
 
-// 测试环境模板消息
-func WxDebug() {
-	WxAppId = "wx9b5d7291e581233a"
-	WxAppSecret = "f4d52e34021eee262dce9682b31f8861"
-	WxId = "gh_5dc508325c6f"
-	//模板消息
+	// 系统内部服务地址
 	{
-		TemplateIdByProduct = "-YjuPOB7Fqd-S3ilabYa6wvjDY9aXmeEfPN6DCiy-EY"
-		WxMsgTemplateIdAskByUser = `qfNuops-sKrfIkbA7U97A7gSrX03mUpoEpJksRUdloo`
-		TemplateIdByCompanyApply = "yqaDUavXAKBpsPqTr0zYXAGIQYeCijZtWwFsT07wTbE"
-		//销售跨部门领取客户通知
-		TemplateIdByCompanyReceive = "-ccp916f5rjMhwj8CtOAW_d_Os6ran8q5okVCENg924"
-		//销售"添加客户/领取客户"权限变更通知
-		TemplateIdByCompanyReceivePermission = "rciDm9ThigRBGi1SZ4TFd74XA4aoAxSz_ugdv_tZ450"
-		WxMsgTemplateIdActivityChangeApply = "CB7bOl7f3viMG4s1uhRo7WM0Jbx3WvodKuIZ8A_z8fM"
-
-		//路演
-		WxMsgTemplateIdWithRoadshowPending = "1JG9fvKx9o9B-wkZe_gBFQQzMBnp07-hvpZI9QiFcKQ"      //路演->研究员收到待处理的申请
-		WxMsgTemplateIdWithRoadshowDetailResult = "rciDm9ThigRBGi1SZ4TFd74XA4aoAxSz_ugdv_tZ450" //路演->销售收到处理结果
-		WxMsgTemplateIdWithRoadshowDeleteNotice = "rciDm9ThigRBGi1SZ4TFd74XA4aoAxSz_ugdv_tZ450" //路演->研究员收到活动删除通知
-
-		// 研报小程序
-		WxMsgTemplateIdWithYbCommunityQuestion = "rciDm9ThigRBGi1SZ4TFd74XA4aoAxSz_ugdv_tZ450" // 研报小程序->问答社区回复通知
-		WxMsgTemplateIdWithSealApplyFinished = "rciDm9ThigRBGi1SZ4TFd74XA4aoAxSz_ugdv_tZ450"   // 用印申请-已签回通知
-		UserTemplateIdByProduct = "-YjuPOB7Fqd-S3ilabYa6wvjDY9aXmeEfPN6DCiy-EY"
+		// 公共指标库相关
+		EDB_LIB_URL = config["edb_lib_url"]
+		APP_EDB_LIB_NAME_EN = config["app_edb_lib_name_en"]
+		EDB_LIB_Md5_KEY = config["edb_lib_md5_key"]
+
+		// 图表项目域名
+		PublicChartHost = config["public_chart_host"]
+
+		// 发送微信模板消息地址
+		SendWxTemplateMsgUrl = config["send_wx_template_msg_url"]
+
+		// 发送微信模板消息地址
+		SendTemplateMsgAuthorization = config["send_template_msg_authorization"]
+
+		// 语音分贝处理的地址
+		HandleVideoDecibelUrl = config["handle_video_decibel_url"]
+
+		// 英文研报分享的地址
+		EnglishShareUrl = config["english_share_url"]
+
+		// 报警服务地址
+		AlarmMsgUrl = config["alarm_msg_url"]
+
+		// ppt 转图片服务地址
+		Ppt2ImageUrl = config["ppt2_image_url"]
 	}
 
-	//查研观向小助手
+	// ES配置
 	{
-		//原有的模板ID
-		WxPublicIdXzs = "wx9b5d7291e581233a"                                                  //查研观向小助手
-		WxPublicSecretXzs = "f4d52e34021eee262dce9682b31f8861"                                //查研观向小助手
-		WxMsgTemplateIdActivityChangeApplyXzs = "CB7bOl7f3viMG4s1uhRo7WM0Jbx3WvodKuIZ8A_z8fM" //查研观向活动变更通知-模板ID(小助手)
-		TemplateIdByProductXzs = "-YjuPOB7Fqd-S3ilabYa6wvjDY9aXmeEfPN6DCiy-EY"                //产品运行报告通知-模板ID(小助手)
+		ES_URL = config["es_url"]
+		ES_USERNAME = config["es_username"]
+		ES_PASSWORD = config["es_password"]
 	}
 
-}
-
-// 生产环境模板消息
-func WxRelease() {
-	WxAppId = "wx4a844c734d8c8e56"
-	WxAppSecret = "26c586e7ccb3c575433f0f37797b3eeb"
-	WxId = "gh_b67e0049fb8c"
-	//模板消息
+	// ES 索引
 	{
-		TemplateIdByProduct = "Cp2wF8gvBtxyWV4DeYuI172oqwyYXVRSm3AyJO42d84"
-		TemplateIdByCompanyApply = "yqaDUavXAKBpsPqTr0zYXAGIQYeCijZtWwFsT07wTbE"
-		WxMsgTemplateIdActivityChangeApply = "dYg6iHooRq74PyCXmw_Ns7qdJZmbtLoKS2p2FKeaXl0"
-		//销售跨部门领取客户通知
-		TemplateIdByCompanyReceive = "-ccp916f5rjMhwj8CtOAW_d_Os6ran8q5okVCENg924"
-		//销售"添加客户/领取客户"权限变更通知
-		TemplateIdByCompanyReceivePermission = "rciDm9ThigRBGi1SZ4TFd74XA4aoAxSz_ugdv_tZ450"
-		//路演
-		WxMsgTemplateIdWithRoadshowPending = "1JG9fvKx9o9B-wkZe_gBFQQzMBnp07-hvpZI9QiFcKQ"      //路演->研究员收到待处理的申请
-		WxMsgTemplateIdWithRoadshowDetailResult = "rciDm9ThigRBGi1SZ4TFd74XA4aoAxSz_ugdv_tZ450" //路演->销售收到处理结果
-		WxMsgTemplateIdWithRoadshowDeleteNotice = "rciDm9ThigRBGi1SZ4TFd74XA4aoAxSz_ugdv_tZ450" //路演->研究员收到活动删除通知
-
-		// 研报小程序
-		WxMsgTemplateIdWithYbCommunityQuestion = "rciDm9ThigRBGi1SZ4TFd74XA4aoAxSz_ugdv_tZ450" // 研报小程序->问答社区回复通知
-		WxMsgTemplateIdWithSealApplyFinished = "rciDm9ThigRBGi1SZ4TFd74XA4aoAxSz_ugdv_tZ450"   // 用印申请-已签回通知
-		UserTemplateIdByProduct = "Cp2wF8gvBtxyWV4DeYuI172oqwyYXVRSm3AyJO42d84"                //用户产品允许通知模版
+		DATA_INDEX_NAME = config["data_index_name"]
+		CHART_INDEX_NAME = config["chart_index_name"]
+		MY_CHART_INDEX_NAME = config["my_chart_index_name"]
+		EsReportIndexName = config["es_report_index_name"]
+		EsEnglishReportIndexName = config["es_english_report_index_name"]
 	}
 
-	//查研观向小助手
+	// 微信相关
 	{
-		//新的模板ID
-		WxPublicIdXzs = "wxb7cb8a15abad5b8e"                                                  //查研观向小助手
-		WxPublicSecretXzs = "f425ba2863084249722af1e2a5cfffd3"                                //查研观向小助手
-		WxMsgTemplateIdActivityChangeApplyXzs = "7qe3i4MrGxAIPhJeMgoqqw6j0A_foUB65DLSmxKe05s" //查研观向活动变更通知-模板ID(小助手)
-		TemplateIdByProductXzs = "tNcCUiK_uUkuxaFF7M9NP2RwLkw8uHFjG-TDIxGUKxo"                //产品运行报告通知-模板ID(小助手)
+		//模板消息
+		TemplateIdByProduct = config["template_id_by_product"]
+		WxYbAppId = config["wx_yb_appid"]          //弘则研报小程序
+		WxYbId = config["wx_yb_id"]                // 研报小程序微信原始ID
+		WxYbAppSecret = config["wx_yb_app_secret"] // 研报小程序秘钥
+		wxYbPlatformStr := config["wx_yb_platform"]
+		if wxYbPlatformStr != `` {
+			WxYbPlatform, err = strconv.Atoi(wxYbPlatformStr) //弘则研报来源
+			if err != nil {
+				panic(any("配置文件读取wx_yb_platform错误 " + err.Error()))
+			}
+		}
 	}
-}
 
-// CrmOpenApiConfig 上海crm开放api配置
-func CrmOpenApiConfig() {
-	if RunMode == "release" {
-		CRM_OPEN_API_URL = "http://crm.hzinsights.com/openapi"
-		CRM_OPEN_API_APP_KEY = "26945134"
-		CRM_OPEN_API_APP_SECRET = "b99cb2bdec70d20156000f664ec5ac30"
-	} else {
-		CRM_OPEN_API_URL = "http://106.15.192.100:8100/openapi"
-		CRM_OPEN_API_APP_KEY = "26945134"
-		CRM_OPEN_API_APP_SECRET = "b99cb2bdec70d20156000f664ec5ac30"
+	// OSS相关
+	{
+		Endpoint = config["endpoint"]
+		Bucketname = config["bucket_name"]
+		Imghost = config["img_host"]
+		UploadDir = config["upload_dir"]
+		Upload_Audio_Dir = config["upload_audio_dir"]
+		AccessKeyId = config["access_key_id"]
+		AccessKeySecret = config["access_key_secret"]
 	}
-}
 
-// initQsOpenApiConfig 全时开放api配置
-func initQsOpenApiConfig() {
-	QsAppID = "ed1cc7c87c97089263fc899fbab193b0"
-	QsSecretKey = "d92b91265dbbc5e3af44edfb82503635"
-	if RunMode == "release" {
-		QsUserId = 22330940
-		QsUserName = "1406228535@qq.com"
-	} else {
-		QsUserId = 19896481
-		QsUserName = "pyan@hzinsights.com"
+	// OSS相关(前端使用)
+	{
+		AliStsScheme = config["ali_sts_scheme"]
+		RegionId = config["region_id"]
+		RoleArn = config["role_arn"]
+		RoleSessionName = config["role_session_name"]
+		RAMAccessKeyId = config["ram_access_key_id"]
+		RAMAccessKeySecret = config["ram_access_key_secret"]
+		STSTokenCacheKey = config["sts_token_cache_key"]
 	}
-}
 
-// ComeinOpenApiConfig 进门开放api配置
-func ComeinOpenApiConfig() {
-	if RunMode == "release" {
-		COMEIN_URL = "https://server.comein.cn/comein/index.php"
-		COMEIN_APPID = "39b48779-debd-446a-a303-900322d8e356"
-		COMEIN_SECREKEY = "9102a767f20f11ecb5d6b8599f142ed4"
-	} else {
-		COMEIN_URL = "https://testserver.comein.cn/comein/index.php"
-		COMEIN_APPID = "7b966708-4a8b-4d24-9066-fe29920e7eee"
-		COMEIN_SECREKEY = "76e004876fae4b3c8721a3f4c2d115da"
+	// 阿里云邮箱配置
+	{
+		AliyunEmailAccountName = config["aliyun_email_account_name"]
+		AliyunEmailAccessKeyId = config["aliyun_email_access_key_id"]
+		AliyunEmailAccessKeySecret = config["aliyun_email_access_key_secret"]
+		AliyunEmailReplyAddress = config["aliyun_email_reply_address"]
+		AliyunEmailReplyAddressAlias = config["aliyun_email_reply_address_alias"]
 	}
-}
 
-// YiDongApiConfig 易董开放api配置
-func YiDongApiConfig() {
-	if RunMode == "release" {
-		YiDongHuaWeiYunUrl = "https://achievement.valueonline.cn/"
-	} else {
-		YiDongHuaWeiYunUrl = "https://achievement-test.valueonline.cn/"
+	// 腾讯云邮箱配置
+	{
+		TencentSDKSecretId = config["tencent_sdk_secret_id"]                      // 腾讯云主账号SecretId
+		TencentSDKSecretKey = config["tencent_sdk_secret_key"]                    // 腾讯云主账号SecretKey
+		TencentEmailFromEmailAddress = config["tencent_email_from_email_address"] // 腾讯云邮件发信地址
+
+		tencentEmailTemplateIDtr := config["tencent_email_template_id"]
+		if tencentEmailTemplateIDtr != `` {
+			tmpTencentEmailTemplateID, err := strconv.Atoi(tencentEmailTemplateIDtr) //弘则研报来源
+			if err != nil {
+				panic(any("配置文件读取tencent_email_template_id错误 " + err.Error()))
+			}
+			TencentEmailTemplateID = uint64(tmpTencentEmailTemplateID)
+		}
 	}
-}
 
-// initSystemServer 内部服务配置
-func initSystemServer() {
-	if RunMode == "release" {
-		// ppt 转图片服务地址
-		Ppt2ImageUrl = "http://172.19.173.232:8086/v1/image/ppt2img"
-	} else {
-		// ppt 转图片服务地址
-		Ppt2ImageUrl = "http://127.0.0.1:8086/v1/image/ppt2img"
+	// 科大讯飞
+	{
+
+		XfAPPID = config["xf_appid"]
+		XfAPIKey = config["xf_api_key"]
+		XfAPISecret = config["xf_api_secret"]
+		XfHostUrl = config["xf_host_url"]
+		XfOrigin = config["xf_origin"]
+		XfVcn = config["xf_vcn"]
 	}
 
-}
+	LibreOfficePath = config["libre_office_path"]
 
-//http://adminapi.brilliantstart.cn/admin/
-//http://adminapi.brilliantstart.cn/swagger/
-//http://8.136.199.33:8602/swagger/
+	// 初始化ES
+	initEs()
+}

+ 0 - 132
utils/constants.go

@@ -27,80 +27,12 @@ const (
 	PageSize50                 = 50
 )
 
-const (
-	APPNAME          = "弘则-移动ETA"
-	EmailSendToUsers = "glji@hzinsights.com;pyan@hzinsights.com;cxzhang@hzinsights.com;zwxi@hzinsights.com;hsun@hzinsights.com"
-)
-
 // 手机号,电子邮箱正则
 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               //登录
-)
-
-// 聚合短信
-var (
-	JhGnTplId  = "65692"                            //聚合国内模板编码
-	JhGjTplId  = "10054"                            //聚合国内模板编码
-	JhGnAppKey = "4c8504c49dd335e99cfd7b6a3a9e2415" //聚合国内AppKey
-	JhGjAppKey = "3326ad2c1047a4cd92ace153e6044ca3"
-)
-
-// 科大讯飞--语音合成
-const (
-	XfSTATUS_FIRST_FRAME    = 0 //第一帧标识
-	XfSTATUS_CONTINUE_FRAME = 1 //中间帧标识
-	XfSTATUS_LAST_FRAME     = 2 //最后一帧标识
-	XfAPPID                 = "5ed70e9d"
-	XfAPIKey                = "d580509ca262e9586fb65a7064d5ce77"
-	XfAPISecret             = "a085720dc55850c720fa5576335f847a"
-	XfHostUrl               = "wss://tts-api.xfyun.cn/v2/tts"
-	XfOrigin                = "http://tts-api.xfyun.cn/"
-	XfHost                  = "tts-api.xfyun.cn"
-	XfMaxFontSize           = 8000
-	XfVcn                   = "x2_chaoge" //发言人
-)
-
-//OSS
-/*var (
-	Endpoint   string = "oss-cn-shanghai.aliyuncs.com"
-	Bucketname string = "hongze"
-
-	Imghost          string = "http://hongze.oss-cn-shanghai.aliyuncs.com/"
-	Upload_dir       string = "static/images/"
-	Upload_Audio_Dir string = "static/audio/"
-
-	AccessKeyId     string = "LTAIFMZYQhS2BTvW"
-	AccessKeySecret string = "12kk1ptCHoGWedhBnKRVW5hRJzq9Fq"
-)
-*/
-
-// baidu
-const (
-	BdAppID     = "23047694"
-	BdApiKey    = "RlisEen1Imd8haXx5Tqirstd"
-	BdSecretKey = "tT75bhMW5UlmoA0flyQsjgurZzSWfuB9"
-)
-
-// 客户状态
-const (
-	COMPANY_STATUS_TRY_OUT       = "试用"
-	COMPANY_STATUS_FOREVER       = "永续"
-	COMPANY_STATUS_FREEZE        = "冻结"
-	COMPANY_STATUS_LOSE          = "流失"
-	COMPANY_STATUS_FORMAL        = "正式"
-	COMPANY_STATUS_POTENTIAL     = "潜在"
-	COMPANY_STATUS_TRY_OUT_COUNT = 60
-
-	COMPANY_APPROVE_STATUS = "待审批"
-)
-
 // 管理员,ficc管理员,ficc销售,权益管理员,权益销售。
 // 角色类型/类型编码
 const (
@@ -136,13 +68,6 @@ const (
 	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_CLASSIFY_FICC    = "ficc"
-	COMPANY_CLASSIFY_RAI     = "权益"
-	COMPANY_CLASSIFY_PARTNER = "合作伙伴"
-)
-
 const (
 	COMPANY_PRODUCT_FICC_ID   = 1
 	COMPANY_PRODUCT_FICC_NAME = "ficc"
@@ -236,30 +161,12 @@ const (
 	DATA_END_DATE_LIMIT      = 4 //数据结束日期为,当前日期,加上4年时间
 )
 
-// 数据缓存
-const (
-	CATCH_EDB_DATA = "EDB_DATA_"
-)
-
 const (
 	DATA_PREFIX       = "hz_data"
 	CHART_PREFIX      = "hz_chart"
 	EXCEL_DATA_PREFIX = "hz_excel_data"
 )
 
-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 Hz_Data_WIND_Url_List = []string{"http://datawind.hzinsights.com:8040/", "http://datawind2.hzinsights.com:8040/"}
-
-var (
-	Hz_Server_Data_Url string //同花顺,万得接口服务地址(阿里云windows服务器地址)
-)
-
 const (
 	HZ_CHART_LIB_DETAIL             = "HZ_CHART_LIB_DETAIL_"            //图表数据缓存
 	HZ_CHART_LIB_EXCEL_TABLE_DETAIL = "HZ_CHART_LIB_EXCEL_TABLE_DETAIL" //excel表格数据缓存
@@ -309,12 +216,6 @@ const (
 	TEMPLATE_MSG_CYGX_ACTIVITY_CUSTOMIZE            //查研观向活动自定义模版消息 23
 )
 
-// EDB_LIB
-var (
-	APP_EDB_LIB_NAME_EN = "hongze_edb_lib"
-	EDB_LIB_Md5_KEY     = "GuRaB6dY1bXOJcwG"
-)
-
 // 研报类型标识
 var (
 	REPORT_TYPE_DAY      = "day"
@@ -324,11 +225,6 @@ var (
 	REPORT_TYPE_OTHER    = "other"
 )
 
-// 策略平台对接地址
-const (
-	HZ_CELUE_API_Url = "https://vmp.hzinsights.com/v2api/"
-)
-
 // 微信用户user_record注册平台
 const (
 	USER_RECORD_PLATFORM_RDDP      = iota + 1 // 日度点评公众号
@@ -378,10 +274,6 @@ const (
 	PERMISSION_ID_UPGRADE                   = 100000 //行业权限升级的时候所添加的起步值
 )
 
-const (
-	SendTemplateMsgAuthorization = "dc855fce962a639faa779cbdd4cd332f"
-)
-
 const (
 	ReportFrequencyDay     = "日度"
 	ReportFrequencyWeek    = "周度"
@@ -390,26 +282,6 @@ const (
 	ReportFrequencyDefault = "不定时"
 )
 
-const (
-	HZ_COMPANY_ID        = 16
-	DEFAULT_COUNTRY_CODE = "86"
-)
-
-// 微信用户wx_user注册平台
-const (
-	WX_USER_REGISTER_PLATFORM_wechat = iota + 1 // 微信端
-	WX_USER_REGISTER_PLATFORM_web               // 网页端
-	WX_USER_REGISTER_PLATFORM_ADMIN             // 管理后台
-	WX_USER_REGISTER_PLATFORM_mini              // 小程序端
-)
-
-// 模板消息地址路由
-const (
-	WX_MSG_PATH_ARTICLE_DETAIL          = "pageMy/reportDetail/reportDetail?id="          //文章详情模板消息地址
-	WX_MSG_PATH_ACTIVITY_SPECIAL_DETAIL = "activityPages/specialDetail/specialDetail?id=" //专项调研活动模板消息地址
-	WX_MSG_PATH_ROAD_ESSENCE            = "reportPages/roadEssence/roadEssence?id="       //路演精华模板消息地址
-)
-
 // 图表类型
 const (
 	CHART_SOURCE_DEFAULT                         = 1
@@ -450,10 +322,6 @@ const (
 	PREDICT_EDB_INFO_TYPE = 1 //指标类型 1:预测指标
 )
 
-const (
-	key = "Y2kBxILL6jTkc80N860qbHc6" //全局加密KEY
-)
-
 // FrequencyDaysMap 频度日期的map关系
 var FrequencyDaysMap = map[string]int{
 	"天": 1, "周": 7, "月": 30, "季": 90, "年": 365,

+ 6 - 6
utils/des3.go

@@ -1,4 +1,4 @@
-//加密工具类,用了3des和base64
+// 加密工具类,用了3des和base64
 package utils
 
 import (
@@ -11,9 +11,9 @@ import (
 	"strings"
 )
 
-//des3 + base64 encrypt
+// des3 + base64 encrypt
 func DesBase64Encrypt(origData []byte) []byte {
-	result, err := TripleDesEncrypt(origData, []byte(key))
+	result, err := TripleDesEncrypt(origData, []byte(DesKey))
 	if err != nil {
 		panic(err)
 	}
@@ -29,7 +29,7 @@ func DesBase64Decrypt(crypted []byte) []byte {
 			result = append(result, 0)
 		}
 	}
-	origData, err := TripleDesDecrypt(result, []byte(key))
+	origData, err := TripleDesDecrypt(result, []byte(DesKey))
 	if err != nil {
 		panic(err)
 	}
@@ -90,7 +90,7 @@ func PKCS5UnPadding(origData []byte) []byte {
 	return origData[:(length - unpadding)]
 }
 
-//DES加密
+// DES加密
 func DesEncrypt(content string, key string) string {
 	contents := []byte(content)
 	keys := []byte(key)
@@ -117,7 +117,7 @@ func byteToHexString(bytes []byte) string {
 	return str
 }
 
-//DES解密
+// DES解密
 func DesDecrypt(content string, key string) string {
 	contentBytes, err := hex.DecodeString(content)
 	if err != nil {

+ 21 - 0
utils/elastic.go

@@ -0,0 +1,21 @@
+package utils
+
+import (
+	"github.com/olivere/elastic/v7"
+)
+
+// EsClient es客户端
+var EsClient *elastic.Client
+
+func initEs() {
+	client, err := elastic.NewClient(
+		elastic.SetURL(ES_URL),
+		elastic.SetBasicAuth(ES_USERNAME, ES_PASSWORD),
+		elastic.SetSniff(false))
+	EsClient = client
+	if err != nil {
+		panic("ElasticSearch连接失败,err:" + err.Error())
+		//go alarm_msg.SendAlarmMsg("ElasticSearch连接失败", 2)
+	}
+	return
+}