瀏覽代碼

Merge branch 'master' into feature/google_translate

xyxie 1 年之前
父節點
當前提交
bf049dbf84

+ 3 - 3
controllers/base_auth.go

@@ -128,7 +128,7 @@ func (c *BaseAuth) Prepare() {
 	utils.FileLog.Info(fmt.Sprintf("URI:%s", uri))
 }
 
-//将请求传入的数据格式转换成签名需要的格式
+// 将请求传入的数据格式转换成签名需要的格式
 func convertParam(params map[string][]string) (signData map[string]string) {
 	signData = make(map[string]string)
 	for key := range params {
@@ -137,7 +137,7 @@ func convertParam(params map[string][]string) (signData map[string]string) {
 	return signData
 }
 
-//将请求传入的数据格式转换成签名需要的格式(目前只能处理简单的类型,数组、对象暂不支持)
+// 将请求传入的数据格式转换成签名需要的格式(目前只能处理简单的类型,数组、对象暂不支持)
 func convertParamInterface(params map[string]interface{}) (signData map[string]string) {
 	signData = make(map[string]string)
 	for key := range params {
@@ -167,7 +167,7 @@ func convertParamInterface(params map[string]interface{}) (signData map[string]s
 	return signData
 }
 
-//请求参数签名校验
+// 请求参数签名校验
 func checkSign(postData map[string]string, ip string) (err error) {
 	isSandbox := postData["is_sandbox"]
 	//如果是测试环境,且是沙箱环境的话,那么绕过测试

+ 56 - 0
controllers/chart.go

@@ -0,0 +1,56 @@
+package controllers
+
+import (
+	"encoding/json"
+	"hongze/hongze_open_api/models/request/chart"
+	celuePushTable "hongze/hongze_open_api/models/tables/cygx/cygx_chart"
+	"hongze/hongze_open_api/utils"
+	"time"
+)
+
+// 图表模块
+type ChartController struct {
+	BaseAuth
+}
+
+// ChartChange
+// @Title 图表变更通知的插入点接口
+// @Description 图表变更通知的插入点接口
+// @Param	request	body chart.CreatChartCeluePushReq true "type json string"
+// @Success 200 创建成功
+// @router /change [post]
+func (c *ChartController) ChartChange() {
+	var req chart.CreatChartCeluePushReq
+	err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		c.FailWithMessage("参数解析异常")
+		return
+	}
+	//appid权限校验
+	appid := req.Appid
+	if utils.RunMode == "release" && appid != utils.CLPT_APPID {
+		c.FailWithMessage("无权限")
+		return
+	}
+	chartId := req.ChartId
+	action := req.Action
+	if chartId < 0 {
+		c.FailWithMessage("缺少 chart_id 参数")
+		return
+	}
+	if action != "add" && action != "edit" && action != "move" {
+		c.FailWithMessage("action参数类型错误")
+		return
+	}
+	item := new(celuePushTable.CygxChartCeluePush)
+	item.ChartId = chartId
+	item.Action = action
+	item.CreateTime = time.Now()
+	item.ModifyTime = time.Now()
+	err = celuePushTable.AddCygxChartCeluePush(item)
+	if err != nil {
+		c.OkWithMessage("创建失败")
+		return
+	}
+	c.OkWithMessage("创建成功")
+}

+ 64 - 0
controllers/edb.go

@@ -0,0 +1,64 @@
+package controllers
+
+import (
+	"hongze/hongze_open_api/models/response/edb"
+	"hongze/hongze_open_api/services/edb_data"
+)
+
+// EdbController 指标模块
+type EdbController struct {
+	BaseAuth
+}
+
+// Detail
+// @Title 获取指标详情
+// @Description 图表变更通知的插入点接口
+// @Param   unique_code   query   string  true       "指标唯一编码"
+// @Param	request	body chart.CreatChartCeluePushReq true "type json string"
+// @Success 200 创建成功
+// @router /detail [get]
+func (c *EdbController) Detail() {
+	uniqueCode := c.GetString("unique_code")
+	if uniqueCode == `` {
+		c.FailWithMessage("指标编码必传")
+		return
+	}
+	edbInfoDetail, err, errMsg := edb_data.EdbDetail(uniqueCode)
+	if err != nil {
+		if errMsg == `` {
+			errMsg = "获取失败"
+		}
+		c.FailWithMessage(errMsg)
+		return
+	}
+
+	dataList := make([]edb.EdbInfoSearchData, 0)
+	if edbInfoDetail.DataList != nil && len(edbInfoDetail.DataList) > 0 {
+		for _, data := range edbInfoDetail.DataList {
+			dataList = append(dataList, edb.EdbInfoSearchData{
+				DataTime: data.DataTime,
+				Value:    data.Value,
+			})
+		}
+	}
+	resp := edb.EdbInfoDetailResp{
+		SourceName:  edbInfoDetail.SourceName,
+		EdbCode:     edbInfoDetail.EdbCode,
+		EdbName:     edbInfoDetail.EdbName,
+		Frequency:   edbInfoDetail.Frequency,
+		Unit:        edbInfoDetail.Unit,
+		StartDate:   edbInfoDetail.StartDate,
+		EndDate:     edbInfoDetail.EndDate,
+		UniqueCode:  edbInfoDetail.UniqueCode,
+		MinValue:    edbInfoDetail.MinValue,
+		MaxValue:    edbInfoDetail.MaxValue,
+		EdbNameEn:   edbInfoDetail.EdbNameEn,
+		UnitEn:      edbInfoDetail.UnitEn,
+		LatestDate:  edbInfoDetail.LatestDate,
+		LatestValue: edbInfoDetail.LatestValue,
+		ChartImage:  edbInfoDetail.ChartImage,
+		DataList:    dataList,
+	}
+
+	c.OkDetailed(resp, "获取成功")
+}

+ 1 - 1
controllers/report.go

@@ -6,7 +6,7 @@ import (
 	"hongze/hongze_open_api/logic"
 	"hongze/hongze_open_api/models/request/article"
 	"hongze/hongze_open_api/models/response/report"
-	celuePushTable "hongze/hongze_open_api/models/tables/article"
+	celuePushTable "hongze/hongze_open_api/models/tables/cygx/article"
 	"hongze/hongze_open_api/models/tables/rddp/classify"
 	tables "hongze/hongze_open_api/models/tables/report"
 	"hongze/hongze_open_api/models/tables/wx_user"

+ 77 - 35
controllers/yidong.go

@@ -4,7 +4,9 @@ import (
 	"encoding/json"
 	"fmt"
 	"hongze/hongze_open_api/models/request/yidong"
-	cygxActivity "hongze/hongze_open_api/models/tables/cygx_activity"
+	"hongze/hongze_open_api/models/tables/company_product"
+	cygxActivity "hongze/hongze_open_api/models/tables/cygx/cygx_activity"
+	"hongze/hongze_open_api/models/tables/cygx/cygx_three_api_log"
 	"hongze/hongze_open_api/services/alarm_msg"
 	servicesYidong "hongze/hongze_open_api/services/yidong"
 	"hongze/hongze_open_api/utils"
@@ -52,8 +54,6 @@ func (c *YiDongController) ActivityExamine() {
 	//校验 签名
 
 	signStr := servicesYidong.GetSign(activityIdYiDong, timeInt)
-	fmt.Println("____")
-	fmt.Println(signStr)
 	ownSign := req.Sign
 	if ownSign != signStr {
 		c.FailWithMessage("签名错误!")
@@ -264,38 +264,6 @@ func (c *YiDongController) ActivityExamine() {
 	c.OkWithMessage("操作成功")
 }
 
-func init2342() {
-	//allow 59.46.229.165;
-	//allow 123.185.222.0/24;
-	//allow 123.185.223.0/24;
-	//allow 59.36.22.17;
-	//allow 120.86.187.82;
-	//202.105.122.162
-
-	//	@张怀民 您好,不好意思,刚才发错了,我们这边生产IP是个地址池,
-	//生产:
-	//	49.4.0.0/16
-	//	119.3.0.0/16
-	//	117.78.0.0/16
-	//	43.254.0.0/16
-	//allow 59.36.22.17;
-	//allow 120.86.187.82;
-	//测试:
-	//	121.36.45.174
-	//	麻烦帮忙配置一下白名单
-
-	var ipstr string
-	var ipstrs string
-	ipstr = "43.254.0.0."
-
-	for i := 0; i <= 16; i++ {
-		fmt.Println(i)
-		ipstrs += ipstr + strconv.Itoa(i) + ","
-		//ipstr += ipstr + strconv.Itoa(i)
-	}
-	fmt.Println(ipstrs)
-}
-
 // YiDongController
 // @Title 易董提交报名时,获取用户信息接口
 // @Description 易董提交报名时,获取用户信息接口
@@ -374,3 +342,77 @@ func (c *YiDongController) UserSignup() {
 	}
 	c.OkDetailed(userInfo, "获取成功")
 }
+
+// YiDongController
+// @Title 校验用户是否有对应权限
+// @Description 校验用户是否有对应权限接口
+// @Param	request	body yidong.ActivityExamineReq true "type json string"
+// @Success 200 创建成功
+// @router /activity/user/check [post]
+func (c *YiDongController) UserCheck() {
+	var req yidong.ActivitySignUpReq
+	err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		c.FailWithMessage("参数解析异常")
+		return
+	}
+	activityIdYiDong := req.ActivityId
+	timeInt := req.Time
+	appid := req.Appid
+	mobile := req.Mobile
+	timeUnix := time.Now().Unix() //当前格林威治时间,int64类型
+	timestamp := int64(timeInt)
+	if math.Abs(float64(timeUnix-timestamp)) > 600 {
+		c.FailWithMessage("当前时间异常,请调整设备时间与北京时间一致:" + strconv.Itoa(timeInt))
+		return
+	}
+	//校验 APPID 与ip白名单
+	ip := c.Ctx.Input.IP()
+	err = servicesYidong.CheckAppidAndIp(appid, ip)
+	if err != nil {
+		c.FailWithMessage(err.Error())
+		return
+	}
+	signStr := servicesYidong.GetSign(activityIdYiDong, timeInt)
+	ownSign := req.Sign
+	if ownSign != signStr {
+		c.FailWithMessage("签名错误!")
+		return
+	}
+	_, err = cygxActivity.GetAddActivityInfoById(activityIdYiDong)
+	if err != nil {
+		c.FailWithMessage("会议id异常:" + activityIdYiDong)
+		return
+	}
+	var dateTxt = []byte(mobile)
+	resultDe := utils.DesBase64Decrypt(dateTxt)
+	deMobile := string(resultDe)
+	if deMobile == "" {
+		go alarm_msg.SendAlarmMsg("加密手机号解密失败:"+mobile, 3)
+		c.FailWithMessage("加密手机号解密失败:" + mobile)
+		return
+	}
+	resp := new(yidong.CheckHaspermissionResp)
+	total, err := company_product.CheckUserAaiPerssionByMobile(deMobile)
+	if err != nil {
+		c.FailWithMessage("校验失败!" + err.Error())
+		return
+	}
+	if total > 0 {
+		resp.Haspermission = true
+	}
+	//添加请求日志记录
+	itemApiLog := new(cygx_three_api_log.CygxThreeApiLog)
+	itemApiLog.CreateTime = time.Now()
+	itemApiLog.Source = 2
+	itemApiLog.Url = c.Ctx.Input.URI()
+	data, _ := json.Marshal(req)
+	jsonstr := string(data)
+	itemApiLog.Body = fmt.Sprint(jsonstr, "deMobile=", deMobile)
+	itemApiLog.Result = fmt.Sprint(resp)
+	_, errlog := cygx_three_api_log.AddCygxThreeApiLog(itemApiLog)
+	if errlog != nil {
+		go alarm_msg.SendAlarmMsg("易董校验用户是否有对应权限日志记录失败 AddCygxThreeApiLog:"+errlog.Error()+fmt.Sprint(req, "deMobile=", deMobile), 3)
+	}
+	c.OkDetailed(resp, "获取成功")
+}

二進制
hongze_open_api.exe


+ 19 - 8
models/db_init.go

@@ -5,10 +5,12 @@ import (
 	_ "github.com/go-sql-driver/mysql"
 	"hongze/hongze_open_api/models/tables"
 	"hongze/hongze_open_api/models/tables/admin"
-	"hongze/hongze_open_api/models/tables/article"
 	"hongze/hongze_open_api/models/tables/company"
 	"hongze/hongze_open_api/models/tables/company_product"
-	"hongze/hongze_open_api/models/tables/cygx_activity"
+	"hongze/hongze_open_api/models/tables/cygx/article"
+	"hongze/hongze_open_api/models/tables/cygx/cygx_activity"
+	"hongze/hongze_open_api/models/tables/cygx/cygx_chart"
+	"hongze/hongze_open_api/models/tables/cygx/cygx_three_api_log"
 	"hongze/hongze_open_api/models/tables/day_new"
 	"hongze/hongze_open_api/models/tables/open_api_user"
 	"hongze/hongze_open_api/models/tables/qs_event"
@@ -35,15 +37,24 @@ func init() {
 	report_db, _ := orm.GetDB("rddp")
 	report_db.SetConnMaxLifetime(10 * time.Minute)
 
+	_ = orm.RegisterDataBase("hz_cygx", "mysql", utils.MYSQL_URL_CYGX)
+	orm.SetMaxIdleConns("hz_cygx", 50)
+	orm.SetMaxOpenConns("hz_cygx", 100)
+
+	cygx_db, _ := orm.GetDB("hz_cygx")
+	cygx_db.SetConnMaxLifetime(10 * time.Minute)
+
 	//注册对象
 	orm.RegisterModel(
 		new(open_api_user.OpenApiUser),                     //开放API用户表
 		new(admin.Admin),                                   //系统用户表
 		new(article.CygxArticleCeluePush),                  //策略平台推送过来更新的文章
+		new(cygx_chart.CygxChartCeluePush),                 //策略平台推送过来更新的图表
 		new(cygx_activity.CygxActivitySignup),              //易董报名审核
 		new(cygx_activity.CygxYidongActivitySignupLog),     //易董报名记录日志
 		new(cygx_activity.CygxYidongActivityExamineStatus), //易董审核记录日志
 		new(cygx_activity.CygxMySchedule),                  //易董审核通过之后添加我的日程
+		new(cygx_three_api_log.CygxThreeApiLog),            //易董审核通过之后添加我的日程
 	)
 	orm.Debug = true
 	orm.DebugLog = orm.NewLog(utils.Binlog)
@@ -63,9 +74,9 @@ func initYb() {
 		new(yb_activity.Activity),      //研报活动
 		new(qs_event.QsEvent),          //全时与ficc研报活动的关系表
 		new(qs_event_user.QsEventUser), //全时参会信息
-		new(day_new.WeworkMsg),               // 企业微信会话存档表
-		new(day_new.WeworkMsgLog),         // 企业微信群消息拉取日志表
-		new(day_new.WeworkUser),              // 企业微信用户信息表
+		new(day_new.WeworkMsg),         // 企业微信会话存档表
+		new(day_new.WeworkMsgLog),      // 企业微信群消息拉取日志表
+		new(day_new.WeworkUser),        // 企业微信用户信息表
 	)
 }
 
@@ -81,8 +92,8 @@ func initCompany() {
 // initEnglishReport 英文研报
 func initEnglishReport() {
 	orm.RegisterModel(
-		new(tables.EnglishClassify),           //EnglishClassify 英文分类表
-		new(tables.EnglishPolicyReport),       //EnglishPolicyReport 英文策略表
-		new(tables.EnglishReport),             //英文研报表
+		new(tables.EnglishClassify),     //EnglishClassify 英文分类表
+		new(tables.EnglishPolicyReport), //EnglishPolicyReport 英文策略表
+		new(tables.EnglishReport),       //英文研报表
 	)
 }

+ 8 - 0
models/request/chart/chart.go

@@ -0,0 +1,8 @@
+package chart
+
+// CreateUserReq 新增用户的结构体
+type CreatChartCeluePushReq struct {
+	ChartId int    `description:"图表ID" json:"chart_id"`
+	Appid   string `description:"APPID" json:"appid"`
+	Action  string `description:"操作方式 add:新增、edit:修改、move:删除" json:"action"`
+}

+ 5 - 0
models/request/yidong/yidong.go

@@ -23,3 +23,8 @@ type ActivitySignUpReq struct {
 	Appid      string `description:"开放平台给分配的appid" json:"appid"`
 	Sign       string `description:"签名" json:"sign"`
 }
+
+// CheckHaspermissionResp 用户是否有权益报名权限
+type CheckHaspermissionResp struct {
+	Haspermission bool `description:"是否有权限" json:"haspermission"`
+}

+ 70 - 0
models/response/edb/edb_lib.go

@@ -0,0 +1,70 @@
+package edb
+
+import "time"
+
+type BaseResponse struct {
+	Ret         int
+	Msg         string
+	ErrMsg      string
+	ErrCode     string
+	Data        interface{}
+	Success     bool `description:"true 执行成功,false 执行失败"`
+	IsSendEmail bool `json:"-" description:"true 发送邮件,false 不发送邮件"`
+	IsAddLog    bool `json:"-" description:"true 新增操作日志,false 不新增操作日志" `
+}
+
+// BaseEdbInfoDetailResp 指标详情
+type BaseEdbInfoDetailResp struct {
+	SourceName    string    `description:"来源名称"`
+	EdbCode       string    `description:"指标编码" `
+	EdbName       string    `description:"指标名称" `
+	EdbNameSource string    `description:"指标名称来源" `
+	Frequency     string    `description:"频率"`
+	Unit          string    `description:"单位" `
+	StartDate     string    `description:"起始日期" `
+	EndDate       string    `description:"终止日期" `
+	UniqueCode    string    `description:"指标唯一编码" `
+	CreateTime    time.Time `description:"create_time"`
+	ModifyTime    time.Time `description:"modify_time" `
+	MinValue      float64   `description:"指标最小值" `
+	MaxValue      float64   `description:"指标最大值" `
+	EdbNameEn     string    `description:"英文指标名称" `
+	UnitEn        string    `description:"英文单位" `
+	LatestDate    string    `description:"数据最新日期"`
+	LatestValue   float64   `description:"数据最新值" `
+	ChartImage    string    `description:"图表图片" `
+	DataList      []BaseEdbInfoSearchData
+}
+
+// BaseEdbInfoSearchData 数据日期
+type BaseEdbInfoSearchData struct {
+	EdbDataId int     `description:"数据ID"`
+	DataTime  string  `description:"数据日期"`
+	Value     float64 `description:"数据"`
+}
+
+// EdbInfoDetailResp 指标详情
+type EdbInfoDetailResp struct {
+	SourceName  string              `description:"来源名称" json:"source_name"`
+	EdbCode     string              `description:"指标编码" json:"edb_code"`
+	EdbName     string              `description:"指标名称" json:"edb_name"`
+	Frequency   string              `description:"频率" json:"frequency"`
+	Unit        string              `description:"单位" json:"unit"`
+	StartDate   string              `description:"起始日期" json:"start_date"`
+	EndDate     string              `description:"终止日期" json:"end_date"`
+	UniqueCode  string              `description:"指标唯一编码" json:"unique_code"`
+	MinValue    float64             `description:"指标最小值" json:"min_value"`
+	MaxValue    float64             `description:"指标最大值" json:"max_value"`
+	EdbNameEn   string              `description:"英文指标名称" json:"edb_name_en"`
+	UnitEn      string              `description:"英文单位" json:"unit_en"`
+	LatestDate  string              `description:"数据最新日期" json:"latest_date"`
+	LatestValue float64             `description:"数据最新值" json:"latest_value"`
+	ChartImage  string              `description:"图表图片" json:"chart_image"`
+	DataList    []EdbInfoSearchData `json:"data_list"`
+}
+
+// EdbInfoSearchData 数据日期
+type EdbInfoSearchData struct {
+	DataTime string  `description:"数据日期" json:"data_time"`
+	Value    float64 `description:"数据" json:"value"`
+}

+ 17 - 0
models/tables/company_product/company_product.go

@@ -60,3 +60,20 @@ func GetCompanyProductByCompanyIdAndProductId(companyId, productId int) (item *C
 	err = o.Raw(sql, companyId, productId).QueryRow(&item)
 	return
 }
+
+// CheckUserAaiPerssionByMobile 校验手机号是否有对应的权益权限
+func CheckUserAaiPerssionByMobile(mobile string) (count int, err error) {
+	sql := `SELECT
+			COUNT( 1 ) AS count 
+		FROM
+			wx_user AS u
+			INNER JOIN company_product AS p ON p.company_id = u.company_id 
+		WHERE
+			1 = 1 
+			AND u.mobile = ? 
+			AND p.STATUS IN ( '正式', '试用', '永续' ) 
+			AND p.product_id = 2`
+	o := orm.NewOrm()
+	err = o.Raw(sql, mobile).QueryRow(&count)
+	return
+}

+ 1 - 1
models/tables/article/cygx_article_celue_push.go → models/tables/cygx/article/cygx_article_celue_push.go

@@ -16,7 +16,7 @@ type CygxArticleCeluePush struct {
 
 // 新增
 func AddCygxArticleCeluePush(item *CygxArticleCeluePush) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Insert(item)
 	return
 }

+ 20 - 20
models/tables/cygx_activity/cygx_activity.go → models/tables/cygx/cygx_activity/cygx_activity.go

@@ -5,7 +5,7 @@ import (
 	"time"
 )
 
-//活动详情
+// 活动详情
 type CygxActivity struct {
 	ActivityId           int       `orm:"column(activity_id);pk";description:"活动ID 等于0新增活动,大于0修改活动"`
 	ActivityTypeId       int       `description:"活动类型id"`
@@ -83,16 +83,16 @@ type CygxYidongActivityExamineStatus struct {
 	YidongExamineStatus int       `description:"易董活动报名审核状态0审核中,1:审核通过、2审核不通过"`
 }
 
-//通过纪要ID获取活动详情
+// 通过ID获取活动详情
 func GetAddActivityInfoById(activityIdYiDong string) (item *CygxActivity, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT
 			a.*
 		FROM
 			cygx_activity  as a
 		WHERE
-			yidong_activity_id =?`
-	err = o.Raw(sql, activityIdYiDong).QueryRow(&item)
+			yidong_activity_id =? OR yidong_activity_id_by_cygx = ?  LIMIT 1 `
+	err = o.Raw(sql, activityIdYiDong, activityIdYiDong).QueryRow(&item)
 	return
 }
 
@@ -104,7 +104,7 @@ type ExamineStatusReq struct {
 
 // UpdateActivitySignupNumMulti 批量修改易董报名用户审核状态
 func UpdateActivitySignupNumMulti(items []*ExamineStatusReq) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	p, err := o.Raw("UPDATE cygx_activity_signup SET yidong_examine_status = ? WHERE mobile = ? AND activity_id = ? ").Prepare()
 	if err != nil {
 		return
@@ -126,7 +126,7 @@ func UpdateActivitySignupNumMulti(items []*ExamineStatusReq) (err error) {
 
 // AddActivitySignupNumMulti 批量新增易董报名用户审核状态
 func AddActivitySignupNumMulti(items []*CygxActivitySignup) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	if len(items) > 0 {
 		//批量新增易董报名用户审核状态
 		_, err = o.InsertMulti(len(items), items)
@@ -134,9 +134,9 @@ func AddActivitySignupNumMulti(items []*CygxActivitySignup) (err error) {
 	return
 }
 
-//GetActivitySignupListByActivity获取已经报名了的用户列表
+// GetActivitySignupListByActivity获取已经报名了的用户列表
 func GetActivitySignupListByActivity(activityId int) (items []*CygxActivitySignup, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_activity_signup WHERE activity_id = ?`
 	_, err = o.Raw(sql, activityId).QueryRows(&items)
 	return
@@ -174,7 +174,7 @@ type CygxYidongActivitySignupLog struct {
 
 // AddCygxYidongActivitySignup 记录易董传过来的报名信息
 func AddCygxYidongActivitySignupLog(item *CygxYidongActivitySignupLog) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	_, err = o.Insert(item)
 	return
 }
@@ -188,7 +188,7 @@ type CygxYidongActivitySignupReq struct {
 	Job         string `description:"职务" json:"job"`
 }
 
-//通过纪要ID获取活动详情
+// 通过纪要ID获取活动详情
 func GetAddActivityInfoByMobile(mobile string) (item *CygxYidongActivitySignupReq, err error) {
 	o := orm.NewOrm()
 	sql := ` SELECT u.*, c.company_name FROM wx_user AS u
@@ -200,7 +200,7 @@ func GetAddActivityInfoByMobile(mobile string) (item *CygxYidongActivitySignupRe
 
 // AddActivityItemsLogNumMulti 记录审核日志
 func AddActivityItemsLogNumMulti(items []*CygxYidongActivityExamineStatus) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	if len(items) > 0 {
 		//批量添加记录审核日志
 		_, err = o.InsertMulti(len(items), items)
@@ -208,7 +208,7 @@ func AddActivityItemsLogNumMulti(items []*CygxYidongActivityExamineStatus) (err
 	return
 }
 
-//我的日程
+// 我的日程
 type CygxMySchedule struct {
 	Id          int       `orm:"column(id);pk"`
 	ActivityId  int       `description:"活动ID"`
@@ -220,9 +220,9 @@ type CygxMySchedule struct {
 	CompanyName string    `description:"公司名称"`
 }
 
-//GetCygxMyScheduleList 获取我的日程数据
+// GetCygxMyScheduleList 获取我的日程数据
 func GetCygxMyScheduleList(activityId int) (items []*CygxMySchedule, err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := `SELECT * FROM cygx_my_schedule WHERE activity_id = ?`
 	_, err = o.Raw(sql, activityId).QueryRows(&items)
 	return
@@ -230,7 +230,7 @@ func GetCygxMyScheduleList(activityId int) (items []*CygxMySchedule, err error)
 
 // AddCygxMyScheduleLNumMulti 添加我的日程
 func AddCygxMyScheduleLNumMulti(items []*CygxMySchedule) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	if len(items) > 0 {
 		//添加我的日程
 		_, err = o.InsertMulti(len(items), items)
@@ -238,17 +238,17 @@ func AddCygxMyScheduleLNumMulti(items []*CygxMySchedule) (err error) {
 	return
 }
 
-//DelCygxMyScheduleList 删除我的日程
+// DelCygxMyScheduleList 删除我的日程
 func DelCygxMyScheduleList(mobile string, activityId int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` DELETE  FROM cygx_my_schedule   WHERE mobile IN (` + mobile + `)  AND activity_id=?`
 	_, err = o.Raw(sql, activityId).Exec()
 	return
 }
 
-//DelCygxcActivitySignup 删除我的报名信息
+// DelCygxcActivitySignup 删除我的报名信息
 func DelCygxcActivitySignup(mobile string, activityId int) (err error) {
-	o := orm.NewOrm()
+	o := orm.NewOrmUsingDB("hz_cygx")
 	sql := ` DELETE  FROM cygx_activity_signup   WHERE mobile IN (` + mobile + `)  AND activity_id=?`
 	_, err = o.Raw(sql, activityId).Exec()
 	return

+ 22 - 0
models/tables/cygx/cygx_chart/cygx_chart_celue_push.go

@@ -0,0 +1,22 @@
+package cygx_chart
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type CygxChartCeluePush struct {
+	Id         int       `orm:"column(id)" description:"自增Id"`
+	ChartId    int       `description:"图表ID"`
+	Action     string    `description:"日志类型:add,edit,move"`
+	ModifyTime time.Time `description:"更新时间"`
+	CreateTime time.Time `description:"添加时间"`
+	IsHandle   int       `description:"是否处理过"`
+}
+
+// 新增
+func AddCygxChartCeluePush(item *CygxChartCeluePush) (err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	_, err = o.Insert(item)
+	return
+}

+ 22 - 0
models/tables/cygx/cygx_three_api_log/cygx_three_api_log.go

@@ -0,0 +1,22 @@
+package cygx_three_api_log
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type CygxThreeApiLog struct {
+	Id         int       `orm:"column(id);pk"`
+	Url        string    `description:"链接"`
+	Body       string    `description:"请求参数"`
+	Result     string    `description:"返回参数"`
+	CreateTime time.Time `description:"活动模板,带P标签"`
+	Source     int       `description:"来源1,易董"`
+}
+
+// 添加日志记录
+func AddCygxThreeApiLog(item *CygxThreeApiLog) (lastId int64, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	lastId, err = o.Insert(item)
+	return
+}

+ 27 - 0
routers/commentsRouter.go

@@ -16,6 +16,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_open_api/controllers:ChartController"] = append(beego.GlobalControllerRouter["hongze/hongze_open_api/controllers:ChartController"],
+        beego.ControllerComments{
+            Method: "ChartChange",
+            Router: `/change`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_open_api/controllers:CompanyUser"] = append(beego.GlobalControllerRouter["hongze/hongze_open_api/controllers:CompanyUser"],
         beego.ControllerComments{
             Method: "GetUserReportList",
@@ -52,6 +61,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_open_api/controllers:EdbController"] = append(beego.GlobalControllerRouter["hongze/hongze_open_api/controllers:EdbController"],
+        beego.ControllerComments{
+            Method: "Detail",
+            Router: `/detail`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_open_api/controllers:EnglishReportController"] = append(beego.GlobalControllerRouter["hongze/hongze_open_api/controllers:EnglishReportController"],
         beego.ControllerComments{
             Method: "PublishNotify",
@@ -169,6 +187,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_open_api/controllers:YiDongController"] = append(beego.GlobalControllerRouter["hongze/hongze_open_api/controllers:YiDongController"],
+        beego.ControllerComments{
+            Method: "UserCheck",
+            Router: `/activity/user/check`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_open_api/controllers:YiDongController"] = append(beego.GlobalControllerRouter["hongze/hongze_open_api/controllers:YiDongController"],
         beego.ControllerComments{
             Method: "UserSignup",

+ 10 - 0
routers/router.go

@@ -66,6 +66,16 @@ func init() {
 				&controllers.DayNewController{},
 			),
 		),
+		web.NSNamespace("/chart",
+			web.NSInclude(
+				&controllers.ChartController{},
+			),
+		),
+		web.NSNamespace("/edb",
+			web.NSInclude(
+				&controllers.EdbController{},
+			),
+		),
 	)
 	web.AddNamespace(ns)
 }

+ 79 - 0
services/edb_data/base_edb_lib.go

@@ -0,0 +1,79 @@
+package edb_data
+
+import (
+	"encoding/json"
+	"errors"
+	"fmt"
+	"hongze/hongze_open_api/models/response/edb"
+	"hongze/hongze_open_api/utils"
+	"io/ioutil"
+	"net/http"
+	"strings"
+)
+
+// EdbDetail 指标详情
+func EdbDetail(uniqueCode string) (edbInfoDetail *edb.BaseEdbInfoDetailResp, err error, msg string) {
+	param := make(map[string]interface{})
+	param["UniqueCode"] = uniqueCode
+	urlStr := `open/edb/detail`
+	resp, err := postRefreshEdbData(param, urlStr)
+	if err != nil {
+		return
+	}
+
+	if resp.Ret != 200 {
+		msg = resp.Msg
+		err = errors.New(resp.ErrMsg)
+		return
+	}
+
+	dataBytes, err := json.Marshal(resp.Data)
+	if err != nil {
+		return
+	}
+
+	err = json.Unmarshal(dataBytes, &edbInfoDetail)
+	if err != nil {
+		return
+	}
+	return
+}
+
+// postRefreshEdbData 刷新指标数据
+func postRefreshEdbData(param map[string]interface{}, urlStr string) (resp *edb.BaseResponse, err error) {
+	postUrl := utils.EDB_LIB_URL + urlStr
+	postData, err := json.Marshal(param)
+	if err != nil {
+		return
+	}
+	result, err := HttpPost(postUrl, string(postData), "application/json")
+	if err != nil {
+		return
+	}
+	utils.FileLog.Info("postRefreshEdbData:" + postUrl + ";" + string(postData) + ";result:" + string(result))
+	err = json.Unmarshal(result, &resp)
+	if err != nil {
+		return
+	}
+	return resp, nil
+}
+
+func HttpPost(url, postData string, params ...string) ([]byte, error) {
+	body := ioutil.NopCloser(strings.NewReader(postData))
+	client := &http.Client{}
+	req, err := http.NewRequest("POST", url, body)
+	if err != nil {
+		return nil, err
+	}
+	contentType := "application/x-www-form-urlencoded;charset=utf-8"
+	if len(params) > 0 && params[0] != "" {
+		contentType = params[0]
+	}
+	req.Header.Set("Content-Type", contentType)
+	req.Header.Set("authorization", utils.MD5(utils.APP_EDB_LIB_NAME_EN+utils.EDB_LIB_Md5_KEY))
+	resp, err := client.Do(req)
+	defer resp.Body.Close()
+	b, err := ioutil.ReadAll(resp.Body)
+	fmt.Println("HttpPost:" + string(b))
+	return b, err
+}

+ 3 - 0
services/google_translate.go

@@ -4,6 +4,7 @@ import (
 	"bytes"
 	"encoding/json"
 	"fmt"
+	"hongze/hongze_open_api/utils"
 	"io/ioutil"
 	"net/http"
 	"strconv"
@@ -34,6 +35,8 @@ func GoogleTranslateApi(content string) (contentEnMap map[string]string, err err
 		err = fmt.Errorf("json.Marshal Err:" + err.Error())
 		return
 	}
+
+	utils.FileLog.Info("googleTranslateData:"+string(bytesData))
 	// 将解析之后的数据转为*Reader类型
 	reader := bytes.NewReader(bytesData)
 	resp, err := http.Post(googleTranslateUrl, "application/json", reader)

+ 139 - 2
swagger/swagger.json

@@ -14,6 +14,31 @@
     },
     "basePath": "/api",
     "paths": {
+        "/chart/change": {
+            "post": {
+                "tags": [
+                    "chart"
+                ],
+                "description": "图表变更通知的插入点接口\n\u003cbr\u003e",
+                "operationId": "ChartController.图表变更通知的插入点接口",
+                "parameters": [
+                    {
+                        "in": "body",
+                        "name": "request",
+                        "description": "type json string",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/chart.CreatChartCeluePushReq"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "创建成功"
+                    }
+                }
+            }
+        },
         "/company_user/user_report_list": {
             "get": {
                 "tags": [
@@ -77,6 +102,33 @@
                 }
             }
         },
+        "/day_new/refresh": {
+            "get": {
+                "tags": [
+                    "day_new"
+                ],
+                "description": "手动刷新\n\u003cbr\u003e",
+                "operationId": "DayNewController.手动刷新企业微信群消息"
+            }
+        },
+        "/day_new/translate": {
+            "get": {
+                "tags": [
+                    "day_new"
+                ],
+                "description": "手动翻译内容\n\u003cbr\u003e",
+                "operationId": "DayNewController.手动翻译内容"
+            }
+        },
+        "/en/report/notify": {
+            "get": {
+                "tags": [
+                    "en/report"
+                ],
+                "description": "策略报告发布通知\n\u003cbr\u003e",
+                "operationId": "EnglishReportController.策略报告发布通知"
+            }
+        },
         "/quanshi/callback": {
             "post": {
                 "tags": [
@@ -466,7 +518,23 @@
                 }
             }
         },
-        "/yidong/activity/examine": {
+        "/wework/notify": {
+            "get": {
+                "tags": [
+                    "wework"
+                ],
+                "description": "企业微信通知\n\u003cbr\u003e",
+                "operationId": "WeworkController.企业微信通知"
+            },
+            "post": {
+                "tags": [
+                    "wework"
+                ],
+                "description": "企业微信通知\n\u003cbr\u003e",
+                "operationId": "WeworkController.企业微信通知"
+            }
+        },
+        "/yidong/activity/examine/signup": {
             "post": {
                 "tags": [
                     "yidong"
@@ -490,6 +558,31 @@
                     }
                 }
             }
+        },
+        "/yidong/activity/user/signup": {
+            "post": {
+                "tags": [
+                    "yidong"
+                ],
+                "description": "易董提交报名时,获取用户信息接口\n\u003cbr\u003e",
+                "operationId": "YiDongController.易董提交报名时,获取用户信息接口",
+                "parameters": [
+                    {
+                        "in": "body",
+                        "name": "request",
+                        "description": "type json string",
+                        "required": true,
+                        "schema": {
+                            "$ref": "#/definitions/yidong.ActivityExamineReq"
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "创建成功"
+                    }
+                }
+            }
         }
     },
     "definitions": {
@@ -531,6 +624,25 @@
                 }
             }
         },
+        "chart.CreatChartCeluePushReq": {
+            "title": "CreatChartCeluePushReq",
+            "type": "object",
+            "properties": {
+                "action": {
+                    "description": "操作方式 add:新增、edit:修改、move:删除",
+                    "type": "string"
+                },
+                "appid": {
+                    "description": "APPID",
+                    "type": "string"
+                },
+                "chart_id": {
+                    "description": "图表ID",
+                    "type": "integer",
+                    "format": "int64"
+                }
+            }
+        },
         "classify.ClassifyList": {
             "title": "ClassifyList",
             "type": "object",
@@ -1429,12 +1541,25 @@
                     "description": "文章ID",
                     "type": "string"
                 },
+                "appid": {
+                    "description": "开放平台给分配的appid",
+                    "type": "string"
+                },
                 "list": {
                     "description": "审核结果",
                     "type": "array",
                     "items": {
                         "$ref": "#/definitions/yidong.ExamineStatusReq"
                     }
+                },
+                "sign": {
+                    "description": "签名",
+                    "type": "string"
+                },
+                "time": {
+                    "description": "时间戳",
+                    "type": "integer",
+                    "format": "int64"
                 }
             }
         },
@@ -1442,8 +1567,12 @@
             "title": "ExamineStatusReq",
             "type": "object",
             "properties": {
+                "create_time": {
+                    "description": "报名时间",
+                    "type": "string"
+                },
                 "examine_status": {
-                    "description": "审核状态 1,通过、2:未通过",
+                    "description": "审核状态 1,通过、2:未通过、3:取消报名",
                     "type": "integer",
                     "format": "int64"
                 },
@@ -1478,6 +1607,14 @@
         {
             "name": "yidong",
             "description": "易董\n"
+        },
+        {
+            "name": "wework",
+            "description": "用户\n"
+        },
+        {
+            "name": "chart",
+            "description": "图表模块\n"
         }
     ]
 }

+ 110 - 2
swagger/swagger.yml

@@ -11,6 +11,24 @@ info:
     url: http://www.apache.org/licenses/LICENSE-2.0.html
 basePath: /api
 paths:
+  /chart/change:
+    post:
+      tags:
+      - chart
+      description: |-
+        图表变更通知的插入点接口
+        <br>
+      operationId: ChartController.图表变更通知的插入点接口
+      parameters:
+      - in: body
+        name: request
+        description: type json string
+        required: true
+        schema:
+          $ref: '#/definitions/chart.CreatChartCeluePushReq'
+      responses:
+        "200":
+          description: 创建成功
   /company_user/user_report_list:
     get:
       tags:
@@ -56,6 +74,30 @@ paths:
             type: array
             items:
               $ref: '#/definitions/logic.UserView'
+  /day_new/refresh:
+    get:
+      tags:
+      - day_new
+      description: |-
+        手动刷新
+        <br>
+      operationId: DayNewController.手动刷新企业微信群消息
+  /day_new/translate:
+    get:
+      tags:
+      - day_new
+      description: |-
+        手动翻译内容
+        <br>
+      operationId: DayNewController.手动翻译内容
+  /en/report/notify:
+    get:
+      tags:
+      - en/report
+      description: |-
+        策略报告发布通知
+        <br>
+      operationId: EnglishReportController.策略报告发布通知
   /quanshi/callback:
     post:
       tags:
@@ -342,7 +384,22 @@ paths:
       responses:
         "200":
           description: 创建成功
-  /yidong/activity/examine:
+  /wework/notify:
+    get:
+      tags:
+      - wework
+      description: |-
+        企业微信通知
+        <br>
+      operationId: WeworkController.企业微信通知
+    post:
+      tags:
+      - wework
+      description: |-
+        企业微信通知
+        <br>
+      operationId: WeworkController.企业微信通知
+  /yidong/activity/examine/signup:
     post:
       tags:
       - yidong
@@ -360,6 +417,24 @@ paths:
       responses:
         "200":
           description: 创建成功
+  /yidong/activity/user/signup:
+    post:
+      tags:
+      - yidong
+      description: |-
+        易董提交报名时,获取用户信息接口
+        <br>
+      operationId: YiDongController.易董提交报名时,获取用户信息接口
+      parameters:
+      - in: body
+        name: request
+        description: type json string
+        required: true
+        schema:
+          $ref: '#/definitions/yidong.ActivityExamineReq'
+      responses:
+        "200":
+          description: 创建成功
 definitions:
   admin.CreateUserReq:
     title: CreateUserReq
@@ -389,6 +464,20 @@ definitions:
         description: 文章ID
         type: integer
         format: int64
+  chart.CreatChartCeluePushReq:
+    title: CreatChartCeluePushReq
+    type: object
+    properties:
+      action:
+        description: 操作方式 add:新增、edit:修改、move:删除
+        type: string
+      appid:
+        description: APPID
+        type: string
+      chart_id:
+        description: 图表ID
+        type: integer
+        format: int64
   classify.ClassifyList:
     title: ClassifyList
     type: object
@@ -1049,17 +1138,30 @@ definitions:
       activity_id:
         description: 文章ID
         type: string
+      appid:
+        description: 开放平台给分配的appid
+        type: string
       list:
         description: 审核结果
         type: array
         items:
           $ref: '#/definitions/yidong.ExamineStatusReq'
+      sign:
+        description: 签名
+        type: string
+      time:
+        description: 时间戳
+        type: integer
+        format: int64
   yidong.ExamineStatusReq:
     title: ExamineStatusReq
     type: object
     properties:
+      create_time:
+        description: 报名时间
+        type: string
       examine_status:
-        description: 审核状态 1,通过、2:未通过
+        description: 审核状态 1,通过、2:未通过、3:取消报名
         type: integer
         format: int64
       mobile:
@@ -1086,3 +1188,9 @@ tags:
 - name: yidong
   description: |
     易董
+- name: wework
+  description: |
+    用户
+- name: chart
+  description: |
+    图表模块

+ 13 - 1
utils/config.go

@@ -12,6 +12,7 @@ var (
 	RunMode        string //运行模式
 	MYSQL_URL      string //数据库连接
 	MYSQL_URL_RDDP string //数据库连接
+	MYSQL_URL_CYGX string // 查研观向
 
 	REDIS_CACHE string       //缓存地址
 	Rc          *cache.Cache //redis缓存
@@ -35,7 +36,7 @@ var (
 	YIDONG_HONGZE_KEY    string //易董加密的盐值
 )
 
-//全时会议账号信息
+// 全时会议账号信息
 var (
 	QsAppID     string
 	QsSecretKey string
@@ -45,6 +46,11 @@ var (
 
 var EnPolicyReportUrl string
 
+// 经济数据库
+var (
+	EDB_LIB_URL string
+)
+
 func init() {
 	tmpRunMode, err := web.AppConfig.String("run_mode")
 	if err != nil {
@@ -76,6 +82,7 @@ func init() {
 	logs.Info(RunMode + " 模式")
 	MYSQL_URL = config["mysql_url"]
 	MYSQL_URL_RDDP = config["mysql_url_rddp"]
+	MYSQL_URL_CYGX = config["mysql_url_cygx"]
 
 	// 初始化redis
 	REDIS_CACHE = config["beego_cache"]
@@ -98,6 +105,8 @@ func init() {
 		ReportSecret = "vRVFCk182Hpv8CyrHsxaHhA3CgGhh4Uu" //AppSecret
 		YIDONG_HONGZE_KEY = "YIDONG20220816VshIcFonYccA"  //易董加密的盐值
 		EnPolicyReportUrl = "https://en.hzinsights.com/v2api/"
+
+		EDB_LIB_URL = "http://172.19.173.232:8300/edbapi/"
 	} else {
 		ApiLog = log.Init("20060102.api")
 		ResearchReportUrl = "http://advisoryadmin.brilliantstart.cn/xcx_h5/"
@@ -107,6 +116,9 @@ func init() {
 		YIDONG_HONGZE_KEY = "YIDONG20220816QxbNHiYNnnhT"  //易董加密的盐值
 		//EnPolicyReportUrl = "https://beta.internal.hzinsights.com/v2api/"
 		EnPolicyReportUrl = "https://en.hzinsights.com/v2api/"
+
+		EDB_LIB_URL = "http://8.136.199.33:8300/edbapi/"
+		//EDB_LIB_URL = "http://127.0.0.1:8900/edbapi/"
 	}
 
 	//初始化系统用户角色map集合

+ 19 - 11
utils/constants.go

@@ -4,7 +4,7 @@ const (
 	Md5Key = ""
 )
 
-//常量定义
+// 常量定义
 const (
 	FormatTime            = "15:04:05"                //时间格式
 	FormatDate            = "2006-01-02"              //日期格式
@@ -25,13 +25,13 @@ const (
 	EmailSendToUsers = "glji@hzinsights.com;pyan@hzinsights.com;cxzhang@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+)*`                                             //匹配电子邮箱
 )
 
-//客户状态
+// 客户状态
 const (
 	COMPANY_STATUS_TRY_OUT       = "试用"
 	COMPANY_STATUS_FOREVER       = "永续"
@@ -44,8 +44,8 @@ const (
 	COMPANY_APPROVE_STATUS = "待审批"
 )
 
-//管理员,ficc管理员,ficc销售,权益管理员,权益销售。
-//角色类型/类型编码
+// 管理员,ficc管理员,ficc销售,权益管理员,权益销售。
+// 角色类型/类型编码
 const (
 	ROLE_TYPE_ADMIN       = "管理员"
 	ROLE_TYPE_FICC_ADMIN  = "ficc管理员"
@@ -76,7 +76,7 @@ const (
 	ROLE_TYPE_SELLERS = "'ficc_admin','ficc_seller','rai_admin','rai_seller','ficc_group','rai_group','ficc_department','rai_department','compliance'"
 )
 
-//客户类型
+// 客户类型
 const (
 	COMPANY_CLASSIFY_FICC    = "ficc"
 	COMPANY_CLASSIFY_RAI     = "权益"
@@ -98,14 +98,22 @@ const (
 	REPORT_KEY = "Zdhuef3ajCLTpfGLn10cOJLJ" //报告加密Key
 )
 
-//缓存key
+// 缓存key
 const (
-	CACHE_KEY_ADMIN = "calendar:admin:list" //系统用户列表缓存key
-	CACHE_KEY_DAYNEW_REFRESH     = "admin:day_new:refresh"           //每日资讯拉取企业微信聊天记录
-	CACHE_KEY_DAYNEW_TRANSLATE   = "admin:day_new:translate"         //每日资讯中翻英
+	CACHE_KEY_ADMIN            = "calendar:admin:list"     //系统用户列表缓存key
+	CACHE_KEY_DAYNEW_REFRESH   = "admin:day_new:refresh"   //每日资讯拉取企业微信聊天记录
+	CACHE_KEY_DAYNEW_TRANSLATE = "admin:day_new:translate" //每日资讯中翻英
 )
 
 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 HZPHONE = "057187186319" //弘则电话
+const HZPHONE = "057187186319" //弘则电话
+
+const CLPT_APPID = "XVuGlcyEEVNYVWx5" //策略平台APPID
+
+// EDB_LIB
+var (
+	APP_EDB_LIB_NAME_EN = "hongze_edb_lib"
+	EDB_LIB_Md5_KEY     = "GuRaB6dY1bXOJcwG"
+)