소스 검색

fix:将常量配置调整为从配置文件获取

Roc 1 년 전
부모
커밋
23ab631389

+ 0 - 106
controllers/company_permission.go

@@ -1,12 +1,10 @@
 package controllers
 
 import (
-	"fmt"
 	"hongze/hz_eta_api/models"
 	"hongze/hz_eta_api/models/company"
 	"hongze/hz_eta_api/services"
 	"hongze/hz_eta_api/utils"
-	"strings"
 )
 
 // CompanyPermissionController 客户权限管理
@@ -37,7 +35,6 @@ func (this *CompanyPermissionController) List() {
 	// Tips:目前这个接口权益在添加客户、申请转正、领取客户、续约申请均有用到
 
 	companyType := this.GetString("CompanyType")
-	noUpgrade, _ := this.GetBool("NoUpgrade", false) // 添加客户、领取客户=true; 申请转正、续约申请=false
 	var productId int
 	resp := new(company.PermissionSetResp)
 
@@ -70,109 +67,6 @@ func (this *CompanyPermissionController) List() {
 		return
 	}
 
-	// 权益
-	if productId == utils.COMPANY_PRODUCT_RAI_ID || companyType == utils.COMPANY_PRODUCT_RAI_NAME {
-		p := new(company.PermissionSetList)
-		items, err := company.GetPermissionSetItemsByType(utils.COMPANY_PRODUCT_RAI_ID, utils.COMPANY_PRODUCT_RAI_NAME)
-		if err != nil {
-			br.Msg = "获取失败"
-			br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
-			return
-		}
-
-		// 原始版的权限
-		if noUpgrade {
-			for _, v := range items {
-				p.Items = append(p.Items, v)
-			}
-		}
-
-		// 展示升级权限, 需要有套餐的展示, 行业可能需要拆分主客观, 买方研选需要分为3w和5w两种
-		if !noUpgrade {
-			p.Items = append(p.Items, &company.PermissionSetItem{
-				PermissionName: utils.CHART_PERMISSION_NAME_45W,
-			}, &company.PermissionSetItem{
-				PermissionName: utils.CHART_PERMISSION_NAME_70W,
-			})
-
-			// 是否为内部人员
-			isRai, e := services.CheckRaiAdmin(sysUser.AdminId)
-			if e != nil {
-				br.Msg = "获取失败"
-				br.ErrMsg = "判断是否为权益内部人员失败, GetRaiAdmin Err: " + e.Error()
-				return
-			}
-
-			// 获取行业主客观权限ID
-			childSubMap, childObjMap := make(map[string]int), make(map[string]int)
-			{
-				permissions, e := models.GetChartPermissionList()
-				if e != nil {
-					br.Msg = "获取失败"
-					br.ErrMsg = "获取权限列表失败, GetChartPermissionList Err: " + e.Error()
-					return
-				}
-				for _, v := range permissions {
-					if !strings.Contains("医药消费科技智造", v.PermissionName) {
-						continue
-					}
-					if strings.Contains(v.Remark, "主观") {
-						childSubMap[v.PermissionName] = v.ChartPermissionId
-						continue
-					}
-					childObjMap[v.PermissionName] = v.ChartPermissionId
-				}
-			}
-
-			for _, v := range items {
-				// 处理四大行业的升级展示
-				if strings.Contains("医药消费科技智造", v.PermissionName) {
-					// 内部人员需要拆分主客观权限
-					if isRai {
-						v.Child = make([]*company.PermissionSetItem, 0)
-						v.Child = append(v.Child, &company.PermissionSetItem{
-							ChartPermissionId: childSubMap[v.PermissionName],
-							PermissionName:    "主观",
-							PermissionType:    1,
-						}, &company.PermissionSetItem{
-							ChartPermissionId: childObjMap[v.PermissionName],
-							PermissionName:    "客观",
-							PermissionType:    2,
-						})
-					}
-					p.Items = append(p.Items, v)
-
-					t := new(company.PermissionSetItem)
-					t.ChartPermissionId = v.ChartPermissionId + utils.PERMISSION_ID_UPGRADE
-					t.PermissionName = v.PermissionName + "(升级)"
-					t.PermissionType = v.PermissionType
-					t.Checked = v.Checked
-					p.Items = append(p.Items, t)
-					continue
-				}
-
-				// 买方研选划分为3w和5w两种
-				if v.PermissionName == utils.CHART_PERMISSION_NAME_MF_YANXUAN {
-					m3, m5 := new(company.PermissionSetItem), new(company.PermissionSetItem)
-					m3.ChartPermissionId = v.ChartPermissionId
-					m3.PermissionName = fmt.Sprint(v.PermissionName, "(3w)")
-					p.Items = append(p.Items, m3)
-
-					m5.ChartPermissionId = v.ChartPermissionId + utils.PERMISSION_ID_YANXUAN_DIFF
-					m5.PermissionName = fmt.Sprint(v.PermissionName, "(5w)")
-					p.Items = append(p.Items, m5)
-					continue
-				}
-
-				p.Items = append(p.Items, v)
-			}
-		}
-
-		p.ClassifyName = utils.COMPANY_PRODUCT_RAI_NAME
-		p.CheckList = make([]int, 0)
-		resp.List = append(resp.List, p)
-	}
-
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "获取成功"

+ 0 - 678
models/company/company_user.go

@@ -1,678 +0,0 @@
-package company
-
-import (
-	"fmt"
-	"github.com/beego/beego/v2/client/orm"
-	"github.com/rdlucklib/rdluck_tools/paging"
-	"hongze/hz_eta_api/utils"
-	"time"
-)
-
-// 新增客户请求参数
-type AddUserReq struct {
-	RealName        string `description:"姓名"`
-	Sex             int    `description:"用户性别,1为男性,2为女性"`
-	Source          string `description:"来源,新增客户时添加:add_custom;领取客户时添加:pick_custom;普通领取联系人时添加:add_user"`
-	RegionType      string `description:"区域,枚举值:国内、海外"`
-	CountryCode     string `description:"区号,86、852、886等"`
-	MobileOne       string `description:"手机号1"`
-	MobileTwo       string `description:"手机号2"`
-	Email           string `description:"邮箱"`
-	Position        string `description:"职位"`
-	IsMaker         int    `description:"是否决策人,1:是,0:否"`
-	BusinessCardUrl string `description:"名片地址"`
-	CompanyId       int    `description:"客户id"`
-	DepartmentName  string `description:"联系人部门"`
-	CompanyName     string `description:"客户名称(公司名称)"`
-}
-
-type CompanyUser struct {
-	UserId                   int64     `orm:"column(user_id);pk"`
-	CountryCode              string    `description:"区号,86、852、886等"`
-	Mobile                   string    `description:"手机号"`
-	Email                    string    `description:"邮箱"`
-	CompanyId                int       `description:"公司id"`
-	CompanyName              string    `description:"公司名称"`
-	RealName                 string    `description:"姓名"`
-	CreatedTime              string    `description:"创建时间"`
-	MobileTwo                string    `description:"备用手机号"`
-	BusinessCardUrl          string    `description:"名片地址"`
-	IsMaker                  int       `description:"是否决策人,1:是,0:否"`
-	Position                 string    `description:"职位"`
-	Sex                      int       `description:"普通用户性别,1为男性,2为女性"`
-	IsRegister               bool      `description:"是否注册,true:已注册,false:未注册"`
-	OpenId                   string    `json:"-"`
-	DepartmentName           string    `description:"联系人部门"`
-	SellerRealName           string    `description:"销售"`
-	Status                   string    `description:"客户状态"`
-	HasMove                  bool      `description:"true:可移动,false:显示知道了"`
-	ViewTotal                int       `description:"累计阅读次数"`
-	LastViewTime             time.Time `json:"-" description:"最后一次阅读时间"`
-	LastViewTimeStr          string    `description:"最后一次阅读时间"`
-	ApplyMethod              int       `description:"0:未申请,1:已付费客户申请试用,2:非客户申请试用"`
-	RegisterTime             string    `description:"注册时间"`
-	RegisterPlatform         int       `description:"注册平台,1:微信端,2:网页端"`
-	SellerId                 int       `description:"销售id"`
-	SellerName               string    `description:"销售名称"`
-	GroupId                  int       `description:"所属销售分组id"`
-	DepartmentId             int       `description:"所属销售分组id"`
-	IsShared                 bool      `description:"是否共享联系人"`
-	ProductIds               string    `description:"商品权限集合,用英文,隔开"`
-	IsChartPermissionSetting int       `description:"是否设置过图表权限, 0-未设置,1-已设置,2-无需设置"`
-	YbProductViewTotal       int       `description:"研报分产品阅读统计"`
-	IsSubscribe              int       `description:"是否关注了微信公众号: 0-未关注; 1-已关注"`
-	IsSubscribeHzyj          int       `description:"是否关注了弘则研究微信公众号: 0-未关注; 1-已关注"`
-	IsSubscribeCygx          int       `description:"是否关注了查研观向微信公众号: 0-未关注; 1-已关注"`
-}
-
-type CompanyUserListResp struct {
-	Paging *paging.PagingItem
-	List   []*CompanyUser
-}
-
-// 联系人数量总数返回数据结构体
-type CompanyUserTotal struct {
-	Total int `description:"联系人总数"`
-}
-
-func GetCompanyUserListCount(condition string, pars []interface{}, companyId int) (count int, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT COUNT(1) AS count FROM wx_user AS a WHERE company_id=? `
-	if condition != "" {
-		sql += condition
-	}
-	err = o.Raw(sql, companyId, pars).QueryRow(&count)
-	return
-}
-
-func GetCompanyUserList(condition string, pars []interface{}, companyId, startSize, pageSize int) (items []*CompanyUser, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT a.*,b.company_name,
-             (SELECT count(1) FROM user_view_history AS uvh WHERE uvh.user_id=a.user_id GROUP BY a.user_id) AS view_total,
-             (SELECT max(uvh.created_time) FROM user_view_history AS uvh WHERE uvh.user_id=a.user_id GROUP BY a.user_id) AS last_view_time
-              FROM wx_user AS a 
-			 INNER JOIN company AS b ON a.company_id=b.company_id
-			 WHERE a.company_id=? `
-	if condition != "" {
-		sql += condition
-	}
-	sql += `ORDER BY  a.last_updated_time DESC LIMIT ?,? `
-	_, err = o.Raw(sql, companyId, pars, startSize, pageSize).QueryRows(&items)
-	return
-}
-
-// 获取该用户下联系人数量(跟销售绑定,2021年03月09日16:35:11)
-func GetCompanyUserListCountV2(condition string, pars []interface{}, companyId int) (count int, err error) {
-	o := orm.NewOrm()
-	tmpSql := `SELECT
-				a.*, c.subscribe AS is_subscribe
-			FROM
-				wx_user AS a
-			LEFT JOIN user_seller_relation AS b ON a.user_id = b.user_id
-			LEFT JOIN (SELECT * FROM user_record WHERE create_platform = 1 GROUP BY user_id) AS c ON a.user_id = c.user_id
-			WHERE
-				a.company_id = ? `
-	if condition != "" {
-		tmpSql += condition
-	}
-	sql := `SELECT COUNT(1) AS count FROM (` + tmpSql + ` group by a.user_id) AS c `
-	err = o.Raw(sql, companyId, pars).QueryRow(&count)
-	return
-}
-
-// 获取该用户下联系人切片列表(跟销售绑定,2021年03月09日16:35:11)
-func GetCompanyUserListV2(condition string, pars []interface{}, companyId, startSize, pageSize int) (items []*CompanyUser, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT
-				a.*, a.cygx_subscribe as is_subscribe_cygx,  c.subscribe AS is_subscribe_hzyj   
-			FROM
-				wx_user AS a
-			LEFT JOIN user_seller_relation AS b ON a.user_id = b.user_id
-			LEFT JOIN (SELECT * FROM user_record WHERE create_platform = 1 GROUP BY user_id) AS c ON a.user_id = c.user_id
-			WHERE
-				a.company_id = ? `
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` group by a.user_id ORDER BY a.is_register desc,a.report_last_view_time desc,a.last_updated_time DESC LIMIT ?,? `
-	_, err = o.Raw(sql, companyId, pars, startSize, pageSize).QueryRows(&items)
-	return
-}
-
-// GetCompanyUserListById 获取该用户下联系人切片列表
-func GetCompanyUserListById(companyId int) (items []*CompanyUser, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT a.* FROM wx_user AS a WHERE a.company_id=? `
-	_, err = o.Raw(sql, companyId).QueryRows(&items)
-	return
-}
-
-// 删除客户请求参数
-type DeleteUserReq struct {
-	UserId int `orm:"column(user_id);pk"`
-}
-
-func DeleteCompanyUser(userId int) (err error) {
-	o := orm.NewOrm()
-	sql := ` DELETE FROM wx_user WHERE user_id=? `
-	_, err = o.Raw(sql, userId).Exec()
-	return
-}
-
-// 新增客户请求参数
-type EditUserReq struct {
-	UserId          int    `orm:"column(user_id);pk"`
-	RealName        string `description:"姓名"`
-	Sex             int    `description:"用户性别,1为男性,2为女性"`
-	CountryCode     string `description:"区号,86、852、886等"`
-	MobileOne       string `description:"手机号1"`
-	MobileTwo       string `description:"手机号2"`
-	Email           string `description:"邮箱"`
-	Position        string `description:"职位"`
-	IsMaker         int    `description:"是否决策人,1:是,0:否"`
-	BusinessCardUrl string `description:"名片地址"`
-	CompanyId       int    `description:"客户id"`
-	DepartmentName  string `description:"联系人部门"`
-}
-
-func EditCompanyUser(item *EditUserReq) (err error) {
-	o := orm.NewOrm()
-	sql := ` UPDATE  wx_user
-			SET
-			  real_name=?,
-			  mobile= ?,
-			  email = ?,
-			  sex = ?,
-			  last_updated_time = NOW(),
-			  position = ?,
-			  is_maker = ?,
-			  business_card_url = ?,
-			  mobile_two= ?,
-			  department_name=?,
-              company_id=?,country_code=?
-			WHERE user_id = ? `
-	_, err = o.Raw(sql, item.RealName, item.MobileOne, item.Email, item.Sex, item.Position, item.IsMaker, item.BusinessCardUrl, item.MobileTwo, item.DepartmentName, item.CompanyId, item.CountryCode, item.UserId).Exec()
-	return
-}
-
-// 修改联系人的联系方式
-func EditCompanyUserContact(userId int64, mobileOne, mobileTwo, email, businessCardUrl string) (err error) {
-	o := orm.NewOrm()
-	sql := ` UPDATE  wx_user
-			SET
-			  mobile= ?,
-			  mobile_two= ?,
-			  email = ?,
-business_card_url = ?,
-			  last_updated_time = NOW()
-			WHERE user_id = ? `
-	_, err = o.Raw(sql, mobileOne, mobileTwo, email, businessCardUrl, userId).Exec()
-	return
-}
-
-func GetCompanyIdByKeyWord(keyWord string) (company_id string, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT GROUP_CONCAT(DISTINCT company_id) AS company_id FROM wx_user WHERE  mobile LIKE '%` + keyWord + `%' OR email LIKE '%` + keyWord + `%'`
-	err = o.Raw(sql).QueryRow(&company_id)
-	return
-}
-
-func GetCompanyIdByKeyWordAll(keyWord string) (company_id string, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT GROUP_CONCAT(DISTINCT company_id) AS company_id FROM wx_user WHERE  mobile LIKE '%` + keyWord + `%' OR email LIKE '%` + keyWord + `%' `
-	err = o.Raw(sql).QueryRow(&company_id)
-	return
-}
-
-func GetCompanyUserCount(companyId int) (count int, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT COUNT(1) AS count FROM wx_user WHERE  company_id =? `
-	err = o.Raw(sql, companyId).QueryRow(&count)
-	return
-}
-
-func CheckCompanyUserCountByMobileTwo(mobileTwo string) (item *CompanyUser, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT a.*,b.company_name,GROUP_CONCAT(DISTINCT d.real_name SEPARATOR '/') AS seller_real_name,GROUP_CONCAT(DISTINCT c.status SEPARATOR '/') AS status
-             FROM wx_user AS a
-			 LEFT JOIN company AS b ON a.company_id=b.company_id
-             LEFT  JOIN company_product AS c ON b.company_id=c.company_id 
-			 LEFT  JOIN admin AS d ON c.seller_id=d.admin_id
-			 WHERE a.mobile_two =? GROUP BY a.company_id `
-	err = o.Raw(sql, mobileTwo).QueryRow(&item)
-	return
-}
-
-func CheckCompanyUserCountByEmail(email string) (item *CompanyUser, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT a.*,b.company_name,GROUP_CONCAT(DISTINCT d.real_name SEPARATOR '/') AS seller_real_name,GROUP_CONCAT(DISTINCT c.status SEPARATOR '/') AS status
-             FROM wx_user AS a
-			 LEFT JOIN company AS b ON a.company_id=b.company_id
-			 LEFT  JOIN company_product AS c ON b.company_id=c.company_id 
-			 LEFT  JOIN admin AS d ON c.seller_id=d.admin_id
-			 WHERE a.email =? GROUP BY a.company_id `
-	err = o.Raw(sql, email).QueryRow(&item)
-	return
-}
-
-func GetUserCountByMobile(mobile string) (item *CompanyUser, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT a.*,b.company_name,GROUP_CONCAT(DISTINCT d.real_name SEPARATOR '/') AS seller_real_name,GROUP_CONCAT(DISTINCT c.status SEPARATOR '/') AS status
-			FROM wx_user AS a
-			LEFT JOIN company AS b ON a.company_id=b.company_id
-			LEFT  JOIN company_product AS c ON b.company_id=c.company_id
-			LEFT  JOIN admin AS d ON c.seller_id=d.admin_id
-			WHERE a.mobile=? GROUP BY a.company_id  `
-	err = o.Raw(sql, mobile).QueryRow(&item)
-	return
-}
-
-//<template slot-scope="scope">{{scope.row.ReportType=='day'?'晨报':scope.row.ReportType=='week'?'周报':scope.row.ReportType=='twoweek'?'双周报':scope.row.ReportType=='month'?'月报':scope.row.ReportType=='rddp'?'日度点评':scope.row.ReportType=='cygx'?'查研观向':scope.row.ReportType=='advisory'?'每日商品聚焦':''}}</template>
-
-type ViewReportList struct {
-	ResearchReportName string `description:"报告标题"`
-	ReportType         string `description:"报告类型 'day 晨报'、'week 周报'、'twoweek 双周报'、'month 月报'、'rddp 日度点评'、'cygx 查研观向'、'advisory 每日商品聚焦'"`
-	CreatedTime        string `description:"创建时间"`
-	TxtType            string `description:"类型 ficc:ficc  、 rights:权益"`
-	MatchTypeName      string `description:"匹配类型"`
-	StopTime           string `description:"停留时间"`
-}
-
-type ViewReportListResp struct {
-	Total int `description:"数量"`
-	List  []*ViewReportList
-}
-
-func GetViewReportListByMobile(mobile string, txtType int) (items []*ViewReportList, err error) {
-	dataName := ""
-	sql := ``
-	if utils.RunMode == "debug" {
-		dataName = "test_v2_hongze_rddp"
-	} else {
-		dataName = "hongze_rddp"
-	}
-
-	ficcSql := `SELECT
-	rr.research_report_name,
-		rr.type AS report_type,
-		'ficc' AS txt_type,
-		'--' AS match_type_name,
-		'--' AS stop_time,
-	uvh.created_time AS created_time
-	FROM
-	user_view_history uvh
-	LEFT JOIN research_report rr ON rr.research_report_id = uvh.research_report_id
-	WHERE
-	uvh.mobile = ?
-	UNION ALL
-	SELECT
-	r.title AS research_report_name,
-		'rddp' AS report_type,
-		'ficc' AS txt_type,
-		r.classify_name_first AS match_type_name,
-		'--' AS stop_time,
-		rvr.create_time AS created_time
-	FROM %s.report_view_record rvr
-	LEFT JOIN %s.report r ON r.id = rvr.report_id
-	WHERE
-	rvr.mobile=?
-	UNION ALL
-	SELECT
-	cha.permission_name AS research_report_name,
-		'advisory' AS report_type,
-		'ficc' AS txt_type,
-		cha.classify_name AS match_type_name,
-		'--' AS stop_time,
-		auc.create_time AS created_time
-	FROM
-	advisory_user_chart_article_record auc
-	LEFT JOIN chart_permission cha ON cha.chart_permission_id = auc.chart_permission_id
-	WHERE
-	auc.mobile = ?`
-
-	rightsSql := `SELECT
-		art.title AS research_report_name,
-		'cygx' AS report_type,
-		'rights' AS txt_type,
-		art.match_type_name,
-		h.stop_time,
-		h.create_time AS created_time 
-	FROM
-		cygx_article_history_record_all h
-		INNER JOIN cygx_article art ON art.article_id = h.article_id
-	WHERE
-		h.mobile = ? AND h.company_id != 16  AND h.is_del = 0 `
-
-	if txtType == 1 {
-		sql = ` SELECT * FROM ( ` + rightsSql + `
-	      )AS t ORDER BY t.created_time DESC`
-	} else if txtType == 2 {
-		sql = ` SELECT * FROM ( ` + ficcSql + `
-	      )AS t ORDER BY t.created_time DESC`
-	} else {
-		sql = ` SELECT * FROM ( ` + ficcSql + " UNION ALL " + rightsSql + `
-	      )AS t ORDER BY t.created_time DESC`
-	}
-
-	//报告统计删除晨报部分统计加入每日资讯 2021-4-9
-	//sql := ` SELECT * FROM (
-	//					SELECT
-	//							r.title AS research_report_name,
-	//							'rddp' AS report_type,
-	//							rvr.create_time AS created_time
-	//						FROM %s.report_view_record rvr
-	//						INNER JOIN %s.report r ON r.id = rvr.report_id
-	//						WHERE
-	//							rvr.mobile=?
-	//					UNION ALL
-	//					SELECT
-	//					cha.permission_name AS research_report_name,
-	//					'advisory' AS report_type,
-	//					auc.create_time AS created_time
-	//				FROM
-	//					advisory_user_chart_article_record auc
-	//					INNER JOIN chart_permission cha ON cha.chart_permission_id = auc.chart_permission_id
-	//				WHERE
-	//					auc.mobile = ?
-	//       )AS t ORDER BY t.created_time DESC
-	//    `
-
-	o := orm.NewOrm()
-
-	if txtType == 1 {
-		_, err = o.Raw(sql, mobile).QueryRows(&items)
-	} else if txtType == 2 {
-		sql = fmt.Sprintf(sql, dataName, dataName)
-		_, err = o.Raw(sql, mobile, mobile, mobile).QueryRows(&items)
-	} else {
-		sql = fmt.Sprintf(sql, dataName, dataName)
-		_, err = o.Raw(sql, mobile, mobile, mobile, mobile).QueryRows(&items)
-	}
-
-	return
-}
-
-func GetViewReportListByEmail2(email string, txtType int) (items []*ViewReportList, err error) {
-	dataName := ""
-	sql := ``
-	if utils.RunMode == "debug" {
-		dataName = "test_v2_hongze_rddp"
-	} else {
-		dataName = "hongze_rddp"
-	}
-
-	ficcSql := `SELECT
-	rr.research_report_name,
-		rr.type AS report_type,
-		'ficc' AS txt_type,
-		'--' AS match_type_name,
-		'--' AS stop_time,
-	uvh.created_time AS created_time
-	FROM
-	user_view_history uvh
-	INNER JOIN research_report rr ON rr.research_report_id = uvh.research_report_id
-	WHERE
-	uvh.email = ?
-	UNION ALL
-	SELECT
-	r.title AS research_report_name,
-		'rddp' AS report_type,
-		'ficc' AS txt_type,
-		r.classify_name_first AS match_type_name,
-		'--' AS stop_time,
-		rvr.create_time AS created_time
-	FROM %s.report_view_record rvr
-	INNER JOIN %s.report r ON r.id = rvr.report_id
-	WHERE
-	rvr.email=?
-	UNION ALL
-	SELECT
-	cha.permission_name AS research_report_name,
-		'advisory' AS report_type,
-		'ficc' AS txt_type,
-		cha.classify_name AS match_type_name,
-		'--' AS stop_time,
-		auc.create_time AS created_time
-	FROM
-	advisory_user_chart_article_record auc
-	INNER JOIN chart_permission cha ON cha.chart_permission_id = auc.chart_permission_id
-	WHERE
-	auc.email = ?`
-
-	rightsSql := `SELECT
-		art.title AS research_report_name,
-		'cygx' AS report_type,
-		'rights' AS txt_type,
-		art.match_type_name,
-		h.stop_time,
-		h.create_time AS created_time 
-	FROM
-		cygx_article_history_record_all h
-		INNER JOIN cygx_article art ON art.article_id = h.article_id
-	WHERE
-		h.email = ? AND h.company_id != 16 AND h.is_del = 0 `
-
-	if txtType == 1 {
-		sql = ` SELECT * FROM ( ` + rightsSql + `
-	      )AS t ORDER BY t.created_time DESC`
-	} else if txtType == 2 {
-		sql = ` SELECT * FROM ( ` + ficcSql + `
-	      )AS t ORDER BY t.created_time DESC`
-	} else {
-		sql = ` SELECT * FROM ( ` + ficcSql + " UNION ALL " + rightsSql + `
-	      )AS t ORDER BY t.created_time DESC`
-	}
-
-	//报告统计删除晨报部分统计加入每日资讯 2021-4-9
-	//sql := ` SELECT * FROM (
-	//					SELECT
-	//							r.title AS research_report_name,
-	//							'rddp' AS report_type,
-	//							rvr.create_time AS created_time
-	//						FROM %s.report_view_record rvr
-	//						INNER JOIN %s.report r ON r.id = rvr.report_id
-	//						WHERE
-	//							rvr.mobile=?
-	//					UNION ALL
-	//					SELECT
-	//					cha.permission_name AS research_report_name,
-	//					'advisory' AS report_type,
-	//					auc.create_time AS created_time
-	//				FROM
-	//					advisory_user_chart_article_record auc
-	//					INNER JOIN chart_permission cha ON cha.chart_permission_id = auc.chart_permission_id
-	//				WHERE
-	//					auc.mobile = ?
-	//       )AS t ORDER BY t.created_time DESC
-	//    `
-
-	o := orm.NewOrm()
-	if txtType == 1 {
-		_, err = o.Raw(sql, email).QueryRows(&items)
-	} else if txtType == 2 {
-		sql = fmt.Sprintf(sql, dataName, dataName)
-		_, err = o.Raw(sql, email, email, email).QueryRows(&items)
-	} else {
-		sql = fmt.Sprintf(sql, dataName, dataName)
-		_, err = o.Raw(sql, email, email, email, email).QueryRows(&items)
-	}
-
-	return
-}
-
-func GetViewReportListByEmail(email string) (items []*ViewReportList, err error) {
-	dataName := ""
-	if utils.RunMode == "debug" {
-		dataName = "test_v2_hongze_rddp"
-	} else {
-		dataName = "hongze_rddp"
-	}
-	sql := ` SELECT * FROM (
-				SELECT
-							rr.research_report_name,
-							rr.type AS report_type,
-							uvh.created_time AS created_time
-						FROM
-							user_view_history uvh
-							INNER JOIN research_report rr ON rr.research_report_id = uvh.research_report_id
-						WHERE
-							uvh.email = ?
-						UNION ALL
-						SELECT
-								r.title AS research_report_name,
-								'rddp' AS report_type,
-								rvr.create_time AS created_time
-							FROM %s.report_view_record rvr
-							INNER JOIN %s.report r ON r.id = rvr.report_id
-							WHERE
-								rvr.email=?
-						UNION ALL
-						SELECT
-						cha.permission_name AS research_report_name,
-						'advisory' AS report_type,
-						auc.create_time AS created_time 
-					FROM
-						advisory_user_chart_article_record auc
-						INNER JOIN chart_permission cha ON cha.chart_permission_id = auc.chart_permission_id 
-					WHERE
-						auc.email = ?
-	      )AS t ORDER BY t.created_time DESC
-       `
-	//报告统计删除晨报部分统计加入每日资讯 2021-4-9
-	//sql := ` SELECT * FROM (
-	//					SELECT
-	//							r.title AS research_report_name,
-	//							'rddp' AS report_type,
-	//							rvr.create_time AS created_time
-	//						FROM %s.report_view_record rvr
-	//						INNER JOIN %s.report r ON r.id = rvr.report_id
-	//						WHERE
-	//							rvr.email=?
-	//					UNION ALL
-	//					SELECT
-	//					cha.permission_name AS research_report_name,
-	//					'advisory' AS report_type,
-	//					auc.create_time AS created_time
-	//				FROM
-	//					advisory_user_chart_article_record auc
-	//					INNER JOIN chart_permission cha ON cha.chart_permission_id = auc.chart_permission_id
-	//				WHERE
-	//					auc.email = ?
-	//       )AS t ORDER BY t.created_time DESC
-	//    `
-	sql = fmt.Sprintf(sql, dataName, dataName)
-	o := orm.NewOrm()
-	_, err = o.Raw(sql, email, email, email).QueryRows(&items)
-	return
-}
-
-func GetCompanyUserByCompanyId(companyId int) (items []*CompanyUser, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT a.*,b.company_name,
-             (SELECT count(1) FROM user_view_history AS uvh WHERE uvh.user_id=a.user_id GROUP BY a.user_id) AS view_total,
-             (SELECT max(uvh.created_time) FROM user_view_history AS uvh WHERE uvh.user_id=a.user_id GROUP BY a.user_id) AS last_view_time
-              FROM wx_user AS a 
-			 INNER JOIN company AS b ON a.company_id=b.company_id
-			 WHERE a.company_id=? `
-	sql += `ORDER BY  a.last_updated_time DESC `
-	_, err = o.Raw(sql, companyId).QueryRows(&items)
-	return
-}
-
-func GetCompanyUserExportByCompanyId(companyId int) (items []*CompanyUser, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT a.*,b.company_name,
-             (SELECT count(1) FROM user_view_history AS uvh WHERE uvh.user_id=a.user_id GROUP BY a.user_id) AS view_total,
-             (SELECT max(uvh.created_time) FROM user_view_history AS uvh WHERE uvh.user_id=a.user_id GROUP BY a.user_id) AS last_view_time
-              FROM wx_user AS a 
-			 INNER JOIN company AS b ON a.company_id=b.company_id
-			 WHERE a.company_id=? AND a.company_id<>1 `
-	sql += `ORDER BY  a.last_updated_time DESC `
-	_, err = o.Raw(sql, companyId).QueryRows(&items)
-	return
-}
-
-func ModifyCompanyUserCompanyId(userId, companyId int) (err error) {
-	o := orm.NewOrm()
-	sql := ` UPDATE wx_user SET company_id=?  WHERE user_id=? `
-	_, err = o.Raw(sql, companyId, userId).Exec()
-	return
-}
-
-func GetCompanyUserBusinessCardCount(companyId int) (count int, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT COUNT(1) AS count FROM wx_user WHERE  company_id =? AND business_card_url<>'' `
-	err = o.Raw(sql, companyId).QueryRow(&count)
-	return
-}
-
-// 标记用户
-func DealCompanyUser(userId int) (err error) {
-	o := orm.NewOrm()
-	sql := ` UPDATE wx_user SET is_deal=1  WHERE user_id=? `
-	_, err = o.Raw(sql, userId).Exec()
-	return
-}
-
-type CompanyActivityUser struct {
-	UserId      int64
-	Mobile      string `description:"手机号"`
-	Email       string `description:"邮箱"`
-	CompanyId   int    `description:"公司id"`
-	CompanyName string `description:"公司名称"`
-	RealName    string `description:"姓名"`
-}
-
-// GetNoPotentialCompanyUserList 获取不是潜在客户的联系人列表
-func GetNoPotentialCompanyUserList(condition string, pars []interface{}) (items []*CompanyActivityUser, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT a.user_id,a.mobile,a.email,a.company_id,a.real_name,b.company_name FROM wx_user AS a 
-			 INNER JOIN company AS b ON a.company_id=b.company_id WHERE a.company_id>1 `
-	if condition != "" {
-		sql += condition
-	}
-	sql += `ORDER BY  a.last_updated_time DESC `
-	_, err = o.Raw(sql, pars).QueryRows(&items)
-	return
-}
-
-// GetFiccCompanyUserByUserIds 批量查询用户的购买ficc的产品详情
-func GetFiccCompanyUserByUserIds(userIds string) (list []*CompanyUser, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT a.user_id, a.real_name, if(b.company_id=1,"",b.company_name) as company_name, c.status, b.company_id, c.seller_name
-             FROM wx_user AS a
-             LEFT  JOIN company AS b ON a.company_id=b.company_id 
-             LEFT  JOIN company_product AS c ON a.company_id=c.company_id and c.product_id=1
-			 WHERE a.user_id in (` + userIds + `)`
-	_, err = o.Raw(sql).QueryRows(&list)
-	return
-}
-
-// UserImportMatchResp 联系人名单导入匹配响应体
-type UserImportMatchResp struct {
-	List []*UserImportMatch `description:"名单列表"`
-	Code string             `description:"下载名单的code"`
-}
-
-// UserImportMatch 联系人名单导入匹配
-type UserImportMatch struct {
-	UserName       string `description:"姓名"`
-	CountryCode    string `description:"国际(区号)"`
-	Mobile         string `description:"手机号"`
-	CompanyName    string `description:"导入的客户名称"`
-	SysCompanyName string `description:"系统匹配的客户名称"`
-	FiccStatus     string `descripiton:"FICC状态"`
-	FiccSeller     string `description:"FICC销售"`
-	RaiStatus      string `description:"权益状态"`
-	RaiSeller      string `description:"权益销售"`
-}
-
-// GetCompanyUsersByCondition 获取联系人列表
-func GetCompanyUsersByCondition(condition string, pars []interface{}) (list []*CompanyUser, err error) {
-	sql := `SELECT * FROM wx_user WHERE 1 = 1 `
-	if condition != `` {
-		sql += condition
-	}
-	_, err = orm.NewOrm().Raw(sql, pars).QueryRows(&list)
-	return
-}

+ 0 - 98
models/data_manage/edb_data_fubao.go

@@ -1,14 +1,7 @@
 package data_manage
 
 import (
-	"encoding/json"
-	"errors"
-	"fmt"
 	"github.com/beego/beego/v2/client/orm"
-	"github.com/rdlucklib/rdluck_tools/http"
-	"hongze/hz_eta_api/utils"
-	"strconv"
-	"strings"
 	"time"
 )
 
@@ -71,94 +64,3 @@ type EdbDataFromFubao struct {
 		Value []float64 `json:"value"`
 	} `json:"tables"`
 }
-
-// 刷新所有数据
-func RefreshAllEdbDataByFubao(edbInfoId, source int, edbCode, startDate, endDate string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
-	defer func() {
-		if err != nil {
-			_ = to.Rollback()
-		} else {
-			_ = to.Commit()
-		}
-	}()
-
-	thsUrl := utils.Hz_Data_Url + `edbInfo/ths?EdbCode=%s&StartDate=%s&EndDate=%s`
-	thsUrl = fmt.Sprintf(thsUrl, edbCode, startDate, endDate)
-	utils.FileLog.Info("thsUrl:%s", thsUrl)
-	body, err := http.Get(thsUrl)
-	fmt.Println("GetEdbDataByThs body:")
-	fmt.Println(string(body))
-
-	if err != nil {
-		return
-	}
-	item := new(EdbDataFromThs)
-	err = json.Unmarshal(body, &item)
-	if err != nil {
-		return
-	}
-	if item.Errorcode != 0 {
-		err = errors.New(string(body))
-		return
-	}
-	//获取指标所有数据
-	dataList := make([]*EdbDataBase, 0)
-	dataTableName := GetEdbDataTableName(source)
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-	_, err = to.Raw(sql, edbInfoId).QueryRows(&dataList)
-	if err != nil {
-		return err
-	}
-	dataMap := make(map[string]string)
-	for _, v := range dataList {
-		dataMap[v.DataTime] = v.Value
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	if len(item.Tables) > 0 {
-		table := item.Tables[0]
-		dataLen := len(table.Time)
-		addSql := ` INSERT INTO edb_data_ths(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
-		var isAdd bool
-		for i := 0; i < dataLen; i++ {
-			eDate := table.Time[i]
-			sValue := table.Value[i]
-			saveValue := utils.SubFloatToString(sValue, 30)
-			if existVal, ok := dataMap[eDate]; !ok {
-				dataTime, err := time.Parse(utils.FormatDate, eDate)
-				if err != nil {
-
-				}
-				timestamp := dataTime.UnixNano() / 1e6
-				timeStr := fmt.Sprintf("%d", timestamp)
-
-				addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, saveValue)
-				isAdd = true
-			} else {
-				if existVal != saveValue {
-					sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-					sql = fmt.Sprintf(sql, dataTableName)
-					_, err = to.Raw(sql, sValue, edbInfoId, eDate).Exec()
-					if err != nil {
-						return err
-					}
-				}
-			}
-		}
-
-		if isAdd {
-			addSql = strings.TrimRight(addSql, ",")
-			_, err = to.Raw(addSql).Exec()
-			if err != nil {
-				fmt.Println("RefreshAllEdbDataByThs add Err", err.Error())
-				return
-			}
-		}
-	}
-	return
-}

+ 0 - 175
models/data_manage/edb_data_lt.go

@@ -1,175 +0,0 @@
-package data_manage
-
-import (
-	"encoding/json"
-	"fmt"
-	"github.com/beego/beego/v2/client/orm"
-	"github.com/rdlucklib/rdluck_tools/http"
-	"hongze/hz_eta_api/utils"
-	"reflect"
-	"strconv"
-	"strings"
-	"time"
-)
-
-type EdbDataLt struct {
-	EdbDataId     int `orm:"column(edb_data_id);pk"`
-	EdbInfoId     int
-	EdbCode       string
-	DataTime      string
-	Value         float64
-	Status        int
-	CreateTime    time.Time
-	ModifyTime    time.Time
-	DataTimestamp int64
-}
-
-// AddEdbDataLtBySql 执行添加数据的sql
-func AddEdbDataLtBySql(sqlStr string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Raw(sqlStr).Exec()
-	return
-}
-
-// ModifyEdbDataLt 修改路透社数据
-func ModifyEdbDataLt(edbInfoId int64, dataTime string, value float64) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	sql := ` UPDATE edb_data_lt SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-	_, err = o.Raw(sql, value, edbInfoId, dataTime).Exec()
-	return
-}
-
-func GetEdbDataLtMaxOrMinDate(edbCode string) (min_date, max_date string, err error) {
-	o := orm.NewOrmUsingDB("data")
-	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM edb_data_lt WHERE edb_code=? `
-	err = o.Raw(sql, edbCode).QueryRow(&min_date, &max_date)
-	return
-}
-
-func GetEdbDataLtByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	o := orm.NewOrmUsingDB("data")
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_lt WHERE edb_code=? AND data_time=? `
-	err = o.Raw(sql, edbCode, startDate).QueryRow(&count)
-	return
-}
-
-func GetEdbDataLtByCode(edbCode string, size int) (items []*EdbInfoSearchData, err error) {
-	o := orm.NewOrmUsingDB("data")
-	sql := ` SELECT * FROM edb_data_lt WHERE edb_code=? ORDER BY data_time DESC LIMIT ? `
-	_, err = o.Raw(sql, edbCode, size).QueryRows(&items)
-	return
-}
-
-// 刷新所有数据
-func RefreshAllEdbDataByLt(edbInfoId, source int, edbCode, startDate, endDate string) (err error) {
-	// 获取路透社数据
-	ltDataList, err := QueryEdbDataByLt(edbCode, startDate, endDate)
-	if err != nil {
-		return
-	}
-
-	o := orm.NewOrmUsingDB("data")
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
-	defer func() {
-		if err != nil {
-			_ = to.Rollback()
-		} else {
-			_ = to.Commit()
-		}
-	}()
-
-	//获取指标所有数据
-	dataList := make([]*EdbDataBase, 0)
-	dataTableName := GetEdbDataTableName(source)
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-	_, err = to.Raw(sql, edbInfoId).QueryRows(&dataList)
-	if err != nil {
-		return err
-	}
-	dataMap := make(map[string]string)
-	for _, v := range dataList {
-		dataMap[v.DataTime] = v.Value
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-
-	addSql := ` INSERT INTO edb_data_lt(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
-	var isAdd bool
-
-	for timestampInt, edbValue := range ltDataList {
-		dataTime := time.Unix(timestampInt/1000, 0)
-
-		//校验数据类型对不对
-		valType := reflect.TypeOf(edbValue)
-		if valType == nil {
-			continue
-		}
-		if valType.String() != "float64" {
-			continue
-		}
-		sValue := edbValue.(float64)
-
-		eDate := dataTime.Format(utils.FormatDate)
-		if err != nil {
-			return err
-		}
-
-		saveValue := utils.SubFloatToString(sValue, 30)
-		if existVal, ok := dataMap[eDate]; !ok {
-			timestamp := dataTime.UnixNano() / 1e6
-			timeStr := fmt.Sprintf("%d", timestamp)
-
-			addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, saveValue)
-			isAdd = true
-		} else {
-			if existVal != saveValue {
-				sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-				sql = fmt.Sprintf(sql, dataTableName)
-				_, err = to.Raw(sql, sValue, edbInfoId, eDate).Exec()
-				if err != nil {
-					return err
-				}
-			}
-		}
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		_, err = to.Raw(addSql).Exec()
-		if err != nil {
-			fmt.Println("RefreshAllEdbDataByLt add Err", err.Error())
-			return
-		}
-	}
-	return
-}
-
-type EdbDataFromLt struct {
-	Close map[int64]interface{} `json:"CLOSE"`
-}
-
-// QueryEdbDataByLt 获取路透社数据
-func QueryEdbDataByLt(edbCode, startDate, endDate string) (dataList map[int64]interface{}, err error) {
-	dataList = make(map[int64]interface{})
-
-	ltUrl := utils.Hz_Data_LT_Url + `edbInfo/ek?EdbCode=%s&StartDate=%s&EndDate=%s`
-	ltUrl = fmt.Sprintf(ltUrl, edbCode, startDate, endDate)
-	utils.FileLogData.Info("ltUrl:%s", ltUrl)
-	body, err := http.Get(ltUrl)
-	utils.FileLogData.Info("lt result:%s", string(body))
-
-	if err != nil {
-		return
-	}
-	//fmt.Println(string(body))
-	item := new(EdbDataFromLt)
-	err = json.Unmarshal(body, &item)
-
-	if err != nil {
-		return
-	}
-	dataList = item.Close
-	return
-}

+ 0 - 140
models/data_manage/edb_data_pb.go

@@ -1,14 +1,7 @@
 package data_manage
 
 import (
-	"encoding/json"
-	"fmt"
 	"github.com/beego/beego/v2/client/orm"
-	"github.com/rdlucklib/rdluck_tools/http"
-	"hongze/hz_eta_api/utils"
-	"net/url"
-	"strconv"
-	"strings"
 	"time"
 )
 
@@ -26,142 +19,9 @@ type EdbDataPb struct {
 	DataTimestamp int64
 }
 
-func AddEdbDataPb(items []*EdbDataPb) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.InsertMulti(1, items)
-	return
-}
-
-func AddEdbDataPbBySql(sqlStr string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Raw(sqlStr).Exec()
-	return
-}
-
-func ModifyEdbDataPb(edbInfoId int, dataTime string, value float64) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	sql := ` UPDATE edb_data_pb SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-	_, err = o.Raw(sql, value, edbInfoId, dataTime).Exec()
-	return
-}
-
 func GetEdbDataPbMaxOrMinDate(edbCode string) (min_date, max_date string, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM edb_data_pb WHERE edb_code=? `
 	err = o.Raw(sql, edbCode).QueryRow(&min_date, &max_date)
 	return
 }
-
-func GetEdbDataPbByCode(edbCode string, size int) (items []*EdbInfoSearchData, err error) {
-	o := orm.NewOrmUsingDB("data")
-	sql := ` SELECT * FROM edb_data_pb WHERE edb_code=? ORDER BY data_time DESC LIMIT ? `
-	_, err = o.Raw(sql, edbCode, size).QueryRows(&items)
-	return
-}
-
-func GetEdbDataPbByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	o := orm.NewOrmUsingDB("data")
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_pb WHERE edb_code=? AND data_time>=? `
-	err = o.Raw(sql, edbCode, startDate).QueryRow(&count)
-	return
-}
-
-type EdbDataFromPb struct {
-	Date   map[string]int64   `json:"date"`
-	Ticker map[string]string  `json:"ticker"`
-	Field  map[string]string  `json:"field"`
-	Value  map[string]float64 `json:"value"`
-}
-
-// 全部刷新
-func RefreshAllEdbDataByPb(edbInfoId, source int, edbCode, startDate, endDate string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
-	defer func() {
-		if err != nil {
-			_ = to.Rollback()
-		} else {
-			_ = to.Commit()
-		}
-	}()
-
-	refreshEdbCode := edbCode
-	edbCode = url.QueryEscape(edbCode)
-	bpUrl := utils.Hz_Data_PB_Url + `edbInfo/pb?EdbCode=%s&StartDate=%s&EndDate=%s`
-	bpUrl = fmt.Sprintf(bpUrl, edbCode, startDate, endDate)
-	utils.FileLog.Info("thsUrl:%s", bpUrl)
-	body, err := http.Get(bpUrl)
-	fmt.Println("RefreshAllEdbDataByPb body:")
-	fmt.Println(string(body))
-
-	if err != nil {
-		return
-	}
-	item := new(EdbDataFromPb)
-	err = json.Unmarshal(body, &item)
-	if err != nil {
-		return
-	}
-	//获取指标所有数据
-	dataList := make([]*EdbDataBase, 0)
-	dataTableName := GetEdbDataTableName(source)
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-	_, err = to.Raw(sql, edbInfoId).QueryRows(&dataList)
-	if err != nil {
-		return err
-	}
-	dataMap := make(map[string]string)
-	for _, v := range dataList {
-		dataMap[v.DataTime] = v.Value
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-
-	if len(item.Date) > 0 {
-		dateMap := item.Date
-		var isAdd bool
-		addSql := ` INSERT INTO edb_data_pb(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,ticker,field,data_timestamp) values `
-		nowStr := time.Now().Format(utils.FormatDateTime)
-		for k, v := range dateMap {
-			timeStr := fmt.Sprintf("%d", v)
-			v = v / 1000
-			t := time.Unix(v, 0)
-			dateTime := t.Format(utils.FormatDate)
-			val := item.Value[k]
-			field := item.Field[k]
-			ticker := item.Ticker[k]
-			saveValue := utils.SubFloatToString(val, 30)
-			if field == "PX_LAST" {
-				if existVal, ok := dataMap[dateTime]; !ok {
-					addSql += "("
-					addSql += edbInfoIdStr + "," + "'" + refreshEdbCode + "'" + "," + "'" + dateTime + "'" + "," + saveValue + "," + "'" + nowStr + "'" +
-						"," + "'" + nowStr + "'" + "," + "1" + "," + "'" + ticker + "'" + "," + "'" + field + "'" + "," + "'" + timeStr + "'"
-					addSql += "),"
-					isAdd = true
-				} else {
-					if existVal != saveValue {
-						sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-						sql = fmt.Sprintf(sql, dataTableName)
-						_, err = to.Raw(sql, saveValue, edbInfoId, dateTime).Exec()
-						if err != nil {
-							return err
-						}
-					}
-				}
-			}
-		}
-
-		if isAdd {
-			addSql = strings.TrimRight(addSql, ",")
-			_, err = to.Raw(addSql).Exec()
-			if err != nil {
-				fmt.Println("RefreshAllEdbDataByPb add Err", err.Error())
-				return
-			}
-		}
-	}
-	return
-}

+ 0 - 137
models/data_manage/edb_data_ths.go

@@ -1,14 +1,7 @@
 package data_manage
 
 import (
-	"encoding/json"
-	"errors"
-	"fmt"
 	"github.com/beego/beego/v2/client/orm"
-	"github.com/rdlucklib/rdluck_tools/http"
-	"hongze/hz_eta_api/utils"
-	"strconv"
-	"strings"
 	"time"
 )
 
@@ -24,139 +17,9 @@ type EdbDataThs struct {
 	DataTimestamp int64
 }
 
-func AddEdbDataThsBySql(sqlStr string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.Raw(sqlStr).Exec()
-	return
-}
-
-func ModifyEdbDataThs(edbInfoId int64, dataTime string, value float64) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	sql := ` UPDATE edb_data_ths SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-	_, err = o.Raw(sql, value, edbInfoId, dataTime).Exec()
-	return
-}
-
 func GetEdbDataThsMaxOrMinDate(edbCode string) (min_date, max_date string, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date FROM edb_data_ths WHERE edb_code=? `
 	err = o.Raw(sql, edbCode).QueryRow(&min_date, &max_date)
 	return
 }
-
-func GetEdbDataThsByCodeAndDate(edbCode string, startDate string) (count int, err error) {
-	o := orm.NewOrmUsingDB("data")
-	sql := ` SELECT COUNT(1) AS count FROM edb_data_ths WHERE edb_code=? AND data_time=? `
-	err = o.Raw(sql, edbCode, startDate).QueryRow(&count)
-	return
-}
-
-func GetEdbDataThsByCode(edbCode string, size int) (items []*EdbInfoSearchData, err error) {
-	o := orm.NewOrmUsingDB("data")
-	sql := ` SELECT * FROM edb_data_ths WHERE edb_code=? ORDER BY data_time DESC LIMIT ? `
-	_, err = o.Raw(sql, edbCode, size).QueryRows(&items)
-	return
-}
-
-type EdbDataFromThs struct {
-	DataVol   int64       `json:"dataVol"`
-	Errmsg    string      `json:"errmsg"`
-	Errorcode int64       `json:"errorcode"`
-	Perf      interface{} `json:"perf"`
-	Tables    []struct {
-		ID    []string  `json:"id"`
-		Time  []string  `json:"time"`
-		Value []float64 `json:"value"`
-	} `json:"tables"`
-}
-
-// 刷新所有数据
-func RefreshAllEdbDataByThs(edbInfoId, source int, edbCode, startDate, endDate string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
-	defer func() {
-		if err != nil {
-			_ = to.Rollback()
-		} else {
-			_ = to.Commit()
-		}
-	}()
-
-	thsUrl := utils.Hz_Data_Url + `edbInfo/ths?EdbCode=%s&StartDate=%s&EndDate=%s`
-	thsUrl = fmt.Sprintf(thsUrl, edbCode, startDate, endDate)
-	utils.FileLog.Info("thsUrl:%s", thsUrl)
-	body, err := http.Get(thsUrl)
-	fmt.Println("GetEdbDataByThs body:")
-	fmt.Println(string(body))
-
-	if err != nil {
-		return
-	}
-	item := new(EdbDataFromThs)
-	err = json.Unmarshal(body, &item)
-	if err != nil {
-		return
-	}
-	if item.Errorcode != 0 {
-		err = errors.New(string(body))
-		return
-	}
-	//获取指标所有数据
-	dataList := make([]*EdbDataBase, 0)
-	dataTableName := GetEdbDataTableName(source)
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-	_, err = to.Raw(sql, edbInfoId).QueryRows(&dataList)
-	if err != nil {
-		return err
-	}
-	dataMap := make(map[string]string)
-	for _, v := range dataList {
-		dataMap[v.DataTime] = v.Value
-	}
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	if len(item.Tables) > 0 {
-		table := item.Tables[0]
-		dataLen := len(table.Time)
-		addSql := ` INSERT INTO edb_data_ths(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
-		var isAdd bool
-		for i := 0; i < dataLen; i++ {
-			eDate := table.Time[i]
-			sValue := table.Value[i]
-			saveValue := utils.SubFloatToString(sValue, 30)
-			if existVal, ok := dataMap[eDate]; !ok {
-				dataTime, err := time.Parse(utils.FormatDate, eDate)
-				if err != nil {
-
-				}
-				timestamp := dataTime.UnixNano() / 1e6
-				timeStr := fmt.Sprintf("%d", timestamp)
-
-				addSql += GetAddSql(edbInfoIdStr, edbCode, eDate, timeStr, saveValue)
-				isAdd = true
-			} else {
-				if existVal != saveValue {
-					sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-					sql = fmt.Sprintf(sql, dataTableName)
-					_, err = to.Raw(sql, sValue, edbInfoId, eDate).Exec()
-					if err != nil {
-						return err
-					}
-				}
-			}
-		}
-
-		if isAdd {
-			addSql = strings.TrimRight(addSql, ",")
-			_, err = to.Raw(addSql).Exec()
-			if err != nil {
-				fmt.Println("RefreshAllEdbDataByThs add Err", err.Error())
-				return
-			}
-		}
-	}
-	return
-}

+ 0 - 96
models/data_manage/edb_data_wind.go

@@ -1,13 +1,7 @@
 package data_manage
 
 import (
-	"encoding/json"
-	"fmt"
 	"github.com/beego/beego/v2/client/orm"
-	"github.com/rdlucklib/rdluck_tools/http"
-	"hongze/hz_eta_api/utils"
-	"strconv"
-	"strings"
 	"time"
 )
 
@@ -23,12 +17,6 @@ type EdbDataWind struct {
 	DataTimestamp int64
 }
 
-func AddEdbDataWind(items []*EdbDataWind) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	_, err = o.InsertMulti(1, items)
-	return
-}
-
 func AddEdbDataWindBySql(sqlStr string) (err error) {
 	o := orm.NewOrmUsingDB("data")
 	_, err = o.Raw(sqlStr).Exec()
@@ -75,87 +63,3 @@ type EdbDataFromWind struct {
 	Dt     map[string]int64   `json:"DT"`
 	ErrMsg string
 }
-
-func RefreshAllEdbDataByWind(edbInfoId, source int, edbCode, startDate, endDate string) (err error) {
-	o := orm.NewOrmUsingDB("data")
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
-	defer func() {
-		if err != nil {
-			_ = to.Rollback()
-		} else {
-			_ = to.Commit()
-		}
-	}()
-	fmt.Println("wind start:", time.Now())
-	thsUrl := utils.Hz_Data_Url + `edbInfo/wind?EdbCode=%s&StartDate=%s&EndDate=%s`
-	thsUrl = fmt.Sprintf(thsUrl, edbCode, startDate, endDate)
-	utils.FileLog.Info("thsUrl:%s", thsUrl)
-	body, err := http.Get(thsUrl)
-	utils.FileLog.Info("wind %s", string(body))
-	fmt.Println("wind end:", time.Now())
-	if err != nil {
-		return
-	}
-	item := new(EdbDataFromWind)
-	err = json.Unmarshal(body, &item)
-	if err != nil {
-		return
-	}
-	//获取指标所有数据
-	dataList := make([]*EdbDataBase, 0)
-	dataTableName := GetEdbDataTableName(source)
-	sql := `SELECT * FROM %s WHERE edb_info_id=? `
-	sql = fmt.Sprintf(sql, dataTableName)
-	_, err = to.Raw(sql, edbInfoId).QueryRows(&dataList)
-	if err != nil {
-		return err
-	}
-	dataMap := make(map[string]string)
-	for _, v := range dataList {
-		dataMap[v.DataTime] = v.Value
-	}
-
-	addSql := ` INSERT INTO edb_data_wind(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
-	var isAdd bool
-	edbInfoIdStr := strconv.Itoa(edbInfoId)
-	existDataMap := make(map[string]string)
-	fmt.Println("start for:", time.Now())
-	for k, v := range item.Dt {
-		timeStr := fmt.Sprintf("%d", v)
-
-		v = v / 1000
-		t := time.Unix(v, 0)
-		dateTime := t.Format(utils.FormatDate)
-		val := item.Close[k]
-		saveVal := utils.SubFloatToString(val, 30)
-		if existVal, ok := dataMap[dateTime]; !ok {
-			if _, existOk := existDataMap[dateTime]; !existOk {
-				isAdd = true
-				addSql += GetAddSql(edbInfoIdStr, edbCode, dateTime, timeStr, saveVal)
-			}
-			existDataMap[dateTime] = dateTime
-		} else {
-			if existVal != saveVal {
-				sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
-				sql = fmt.Sprintf(sql, dataTableName)
-				_, err = to.Raw(sql, saveVal, edbInfoId, dateTime).Exec()
-				if err != nil {
-					return err
-				}
-			}
-		}
-	}
-	fmt.Println("end for:", time.Now())
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		_, err = to.Raw(addSql).Exec()
-		if err != nil {
-			fmt.Println("RefreshAllEdbDataByWind add Err", err.Error())
-			return
-		}
-	}
-	return
-}

+ 0 - 2
models/db.go

@@ -184,7 +184,6 @@ func initReport() {
 		new(ReportChapter),                       // 报告章节表
 		new(ReportChapterTicker),                 // 晨报章节ticker
 		new(ReportChapterTypePermission),         // 晨周报章节类型权限表
-		new(ReportSendThsDetail),                 //报告发送至同花顺记录
 		new(GroupSendMsg),                        //群发消息
 		new(UserTemplateRecord),                  //模板消息记录
 		new(ChartPermission),                     // 权限表
@@ -193,7 +192,6 @@ func initReport() {
 		new(ReportAuthor),                  //报告作者
 		new(ClassifyMenu),                  // 报告分类-子目录表
 		new(ClassifyMenuRelation),          // 报告分类-子目录关联表
-		new(ReportSendThsConfig),           //产品推送给同花顺的配置表
 		new(ChartPermissionChapterMapping), // 权限mapping表
 		new(ReportChapterType),             // 报告章节类型表
 	)

+ 0 - 109
models/report_send_ths_config.go

@@ -1,109 +0,0 @@
-package models
-
-import (
-	"github.com/beego/beego/v2/client/orm"
-	"github.com/rdlucklib/rdluck_tools/paging"
-	"time"
-)
-
-// ReportSendThsConfig 产品推送给同花顺的配置的表结构体
-type ReportSendThsConfig struct {
-	ConfigId     int       `orm:"column(config_id);pk" description:"配置Id"`
-	ConfigType   string    `description:"产品类型:研报、视频社区、线上路演"`
-	ClassifyId   int       `description:"分类id(该产品类型对应的所属分类id)"`
-	ClassifyName string    `description:"分类名称(该产品类型对应的所属分类名称)"`
-	Level        int       `description:"等级,1:紧急,2:优先,3:普通"`
-	Time         int       `description:"间隔时间,单位:分"`
-	SysUserId    int       `description:"操作人用户id"`
-	SysRealName  string    `description:"操作人用户名称"`
-	ModifyTime   time.Time `description:"最近修改时间"`
-	CreateTime   time.Time `description:"创建时间"`
-}
-
-// Update 更新产品推送给同花顺的配置
-func (item *ReportSendThsConfig) Update(cols []string) (err error) {
-	o := orm.NewOrm()
-	_, err = o.Update(item, cols...)
-	return
-}
-
-// GetReportSendThsConfigByConfigId 根据配置id获取对应的配置信息
-func GetReportSendThsConfigByConfigId(configId int) (item *ReportSendThsConfig, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT * FROM report_send_ths_config WHERE config_id=? order by config_id desc`
-	err = o.Raw(sql, configId).QueryRow(&item)
-	return
-}
-
-type ReportSendThsConfigListResp struct {
-	Paging *paging.PagingItem
-	List   []*ReportSendThsConfigListItem
-}
-
-type ReportSendThsConfigListItem struct {
-	ConfigId     int    `orm:"column(config_id);pk" description:"配置Id"`
-	ConfigType   string `description:"产品类型:研报、视频社区、线上路演"`
-	ClassifyId   int    `description:"分类id(该产品类型对应的所属分类id)"`
-	ClassifyName string `description:"分类名称(该产品类型对应的所属分类名称)"`
-	Level        int    `description:"等级,1:紧急,2:优先,3:普通"`
-	ModifyTime   string `description:"最近修改时间"`
-	CreateTime   string `description:"创建时间"`
-}
-
-// AddReportSendThsConfig 新增产品推送给同花顺的配置的记录
-func AddReportSendThsConfig(item *ReportSendThsConfig) (err error) {
-	o := orm.NewOrm()
-	lastId, err := o.Insert(item)
-	if err == nil {
-		item.ConfigId = int(lastId)
-	}
-	return
-}
-
-// GetReportSendThsConfigByClassifyId 根据分类id获取对应的配置信息
-func GetReportSendThsConfigByClassifyId(configType string, classifyId int) (item *ReportSendThsConfig, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT * FROM report_send_ths_config WHERE classify_id=? AND config_type=? order by config_id desc`
-	err = o.Raw(sql, classifyId, configType).QueryRow(&item)
-	return
-}
-
-// GetCountReportSendThsConfigByClassifyId 根据分类id查询是否添加对应的配置
-func GetCountReportSendThsConfigByClassifyId(configType string, classifyId int) (total int, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT count(1) total FROM report_send_ths_config WHERE classify_id=? AND config_type=? `
-	err = o.Raw(sql, classifyId, configType).QueryRow(&total)
-	return
-}
-
-// GetReportSendThsConfigList 获取同花顺推送配置列表
-func GetReportSendThsConfigList(condition string, pars []interface{}, startSize, pageSize int, orderBy string) (items []*ReportSendThsConfig, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT * FROM report_send_ths_config WHERE 1 = 1 `
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` ORDER BY ` + orderBy
-	sql += `  limit ?,? `
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
-	return
-}
-
-// GetReportSendThsConfigCount 获取同花顺推送配置数量
-func GetReportSendThsConfigCount(condition string, pars []interface{}) (count int64, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT COUNT(1) AS count FROM report_send_ths_config WHERE 1 = 1 `
-	if condition != "" {
-		sql += condition
-	}
-	err = o.Raw(sql, pars).QueryRow(&count)
-	return
-}
-
-// DeleteReportSendThsConfigByConfigId 删除配置id获取对应的配置信息
-func DeleteReportSendThsConfigByConfigId(configId int) (err error) {
-	o := orm.NewOrm()
-	sql := ` DELETE from report_send_ths_config WHERE config_id=? `
-	_, err = o.Raw(sql, configId).Exec()
-	return
-}

+ 0 - 230
models/report_send_ths_detail.go

@@ -1,230 +0,0 @@
-package models
-
-import (
-	"github.com/beego/beego/v2/client/orm"
-	"github.com/rdlucklib/rdluck_tools/paging"
-	"time"
-)
-
-// 报告推送给同花顺的表结构体
-type ReportSendThsDetail struct {
-	SendId     int       `orm:"column(send_id);pk" description:"发送给同花顺的Id"`
-	ReportId   int       `description:"报告id"`
-	ReportType string    `description:"报告类型"`
-	Status     int8      `description:"发送结果,0:待发送,-1发送失败,1发送成功"`
-	Remark     string    `description:"失败原因"`
-	MsgType    int       `description:"消息类型,1:h5链接;2:小程序,3:文字;4:图片"`
-	Title      string    `description:"推送标题"`
-	LabelStr   string    `description:"推送标签"`
-	Content    string    `description:"推送内容"`
-	JumpUrl    string    `description:"跳转地址"`
-	Pic        string    `description:"推送图片"`
-	Level      int       `description:"等级,1:紧急,2:优先,3:普通"`
-	PushTime   time.Time `description:"实际开始推送时间/预推送时间"`
-	CreateTime time.Time `description:"发送时间"`
-}
-
-type ReportSendThsListResp struct {
-	Paging *paging.PagingItem
-	List   []*ReportSendThsListItem
-}
-
-type ReportSendThsTypeListResp struct {
-	List []*ReportSendThsTypeListItem
-}
-
-type ReportSendThsTypeListItem struct {
-	ReportType string `description:"报告类型"`
-}
-type ReportSendThsListItem struct {
-	SendId     int    `description:"发送给同花顺的Id"`
-	ReportId   int    `description:"报告id"`
-	ReportType string `description:"报告类型"`
-	Status     int8   `description:"发送结果,0:待发送,-1发送失败,1发送成功"`
-	Remark     string `description:"失败原因"`
-	Title      string `description:"推送标题"`
-	LabelStr   string `description:"推送标签"`
-	PushTime   string `description:"实际开始推送时间/预推送时间"`
-	CreateTime string `description:"发送时间"`
-	Level      int    `description:"等级,1:紧急,2:优先,3:普通"`
-}
-
-// 新增报告发送给同花顺的记录
-func AddReportSendThsDetail(item *ReportSendThsDetail) (lastId int64, err error) {
-	o := orm.NewOrm()
-	//o.Using("rddp")
-	lastId, err = o.Insert(item)
-	return
-}
-
-// 修改报告发送给同花顺的记录状态
-func ModifyReportSendThsDetailStatus(sendId int, status int8, remark string) (err error) {
-	o := orm.NewOrm()
-	//o.Using("rddp")
-	sql := `UPDATE report_send_ths_detail SET status = ?,remark=? WHERE send_id = ? `
-	_, err = o.Raw(sql, status, remark, sendId).Exec()
-	return
-}
-
-// 根据报告id获取发送记录
-func GetReportSendThsDetailByReportId(reportId int, reportType string) (item *ReportSendThsDetail, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT * FROM report_send_ths_detail WHERE report_id=? and report_type=? order by send_id desc`
-	//o.Using("rddp")
-	err = o.Raw(sql, reportId, reportType).QueryRow(&item)
-	return
-}
-
-// GetLatelyReportSendThsDetail 获取发送中/发送成功的 距离现在最近的一条记录
-func GetLatelyReportSendThsDetail() (item *ReportSendThsDetail, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT * FROM report_send_ths_detail WHERE status >=0  order by push_time desc,send_id desc`
-	//o.Using("rddp")
-	err = o.Raw(sql).QueryRow(&item)
-	return
-}
-
-// GetLatelyWaitReportSendThs 获取待发送的 距离现在最近的一条记录
-func GetLatelyWaitReportSendThs() (item *ReportSendThsDetail, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT * FROM report_send_ths_detail WHERE status =2  order by push_time desc,send_id desc`
-	//o.Using("rddp")
-	err = o.Raw(sql).QueryRow(&item)
-	return
-}
-
-// GetNearlyWaitReportSendThsByPushTime 查询是否存在和设置时间相近的待推送记录
-func GetNearlyWaitReportSendThsByPushTime(sendId int, pushTimeStart, pushTimeEnd time.Time) (item *ReportSendThsDetail, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT * FROM report_send_ths_detail WHERE send_id !=? and status =2 and (push_time >= ? and push_time <= ?) order by push_time desc,send_id desc`
-	//o.Using("rddp")
-	err = o.Raw(sql, sendId, pushTimeStart, pushTimeEnd).QueryRow(&item)
-	return
-}
-
-func GetWaitReportSendThsList(condition string, pars []interface{}, startSize, pageSize int) (items []*ReportSendThsDetail, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT * FROM report_send_ths_detail WHERE status = 2 `
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` order by push_time asc,send_id asc limit ?,? `
-	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
-	return
-}
-
-func GetWaitReportSendThsType() (items []*ReportSendThsDetail, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT * FROM report_send_ths_detail WHERE status = 2 group by report_type`
-	_, err = o.Raw(sql).QueryRows(&items)
-	return
-}
-
-func GetWaitReportSendThsCount(condition string, pars []interface{}) (count int64, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT COUNT(1) AS count FROM report_send_ths_detail WHERE status = 2 `
-	if condition != "" {
-		sql += condition
-	}
-	err = o.Raw(sql, pars).QueryRow(&count)
-	return
-}
-
-func GetWaitReportSendThsAll(condition string, pars []interface{}) (items []*ReportSendThsDetail, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT * FROM report_send_ths_detail WHERE status = 2 `
-	if condition != "" {
-		sql += condition
-	}
-	sql += ` order by push_time asc,send_id asc`
-	_, err = o.Raw(sql, pars).QueryRows(&items)
-	return
-}
-
-// 根据sendId获取发送记录
-func GetReportSendThsBySendId(sendId int) (item *ReportSendThsDetail, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT * FROM report_send_ths_detail WHERE send_id=? `
-	//o.Using("rddp")
-	err = o.Raw(sql, sendId).QueryRow(&item)
-	return
-}
-
-// MultiUpdateReportSendThsPushTime 批量修改配置时间
-func MultiUpdateReportSendThsPushTime(sendId int, newTime, multiSql, updateSendIds string) (err error) {
-	o := orm.NewOrm()
-	to, err := o.Begin()
-	if err != nil {
-		return
-	}
-	defer func() {
-		if err != nil {
-			_ = to.Rollback()
-		} else {
-			_ = to.Commit()
-		}
-	}()
-	//修改单条数据
-	sql := ` UPDATE report_send_ths_detail SET push_time = ? WHERE send_id = ? `
-	_, err = to.Raw(sql, newTime, sendId).Exec()
-	if err != nil {
-		return
-	}
-	if multiSql != "" {
-		//修改定时推送时间
-		sql = `UPDATE report_send_ths_detail 
-SET push_time =
-CASE send_id ` + multiSql + ` END 
-WHERE 
-	status = 2 AND send_id IN (` + updateSendIds + ` ) AND push_time > ? `
-		_, err = to.Raw(sql, newTime).Exec()
-	}
-	return
-}
-
-// GetLatelyWaitLevelReportSendThs 获取相同推送等级level下待发送的 距离现在最近的一条记录
-func GetLatelyWaitLevelReportSendThs(level int) (item *ReportSendThsDetail, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT * FROM report_send_ths_detail WHERE status =2 AND level=? order by push_time desc,send_id desc`
-	err = o.Raw(sql, level).QueryRow(&item)
-	return
-}
-
-// GetEarliestWaitGtLevelReportSendThs 获取大于该推送等级level(推送级别更低)下待发送的 距离现在最早的一条记录
-func GetEarliestWaitGtLevelReportSendThs(level int) (item *ReportSendThsDetail, err error) {
-	o := orm.NewOrm()
-	sql := ` SELECT * FROM report_send_ths_detail WHERE status = 2 AND level > ? order by push_time asc,send_id asc`
-	err = o.Raw(sql, level).QueryRow(&item)
-	return
-}
-
-// UpdateReportSendThsPushTime 批量修改配置时间
-func UpdateReportSendThsPushTime(pushTime time.Time, newTime string) (err error) {
-	o := orm.NewOrm()
-	//UPDATE comment c set c.time = DATE_ADD(c.time, INTERVAL 7 DAY) ;
-	//select date_add(@dt, interval 1 minute); - 加1分钟
-	//修改定时推送时间
-	sql := `UPDATE report_send_ths_detail 
-SET push_time = ` + newTime + ` WHERE status = 2 AND push_time > ? `
-	_, err = o.Raw(sql, pushTime).Exec()
-	return
-}
-
-// UpdateReportSendThsPushTimeByEqGtPushTime 根据发布时间批量修改配置时间(大于等于该发布时间)
-func UpdateReportSendThsPushTimeByEqGtPushTime(pushTime time.Time, newTime string) (err error) {
-	o := orm.NewOrm()
-	//修改定时推送时间
-	sql := `UPDATE report_send_ths_detail 
-SET push_time = ` + newTime + ` WHERE status = 2 AND push_time >= ? `
-	_, err = o.Raw(sql, pushTime).Exec()
-	return
-}
-
-// GetLatelyIsSendSendThsDetail 获取发送中/发送成功/发送失败的 距离现在最近的一条记录
-func GetLatelyIsSendSendThsDetail() (item *ReportSendThsDetail, err error) {
-	o := orm.NewOrm()
-	//`status` tinyint(1) DEFAULT '0' COMMENT '发送结果,0:待发送,1发送成功,2:等待系统定时发送',
-	sql := ` SELECT * FROM report_send_ths_detail WHERE status in (0,1)  order by push_time desc,send_id desc`
-	err = o.Raw(sql).QueryRow(&item)
-	return
-}

+ 0 - 88
models/wechat.go

@@ -7,7 +7,6 @@ import (
 	"github.com/beego/beego/v2/client/orm"
 	"github.com/rdlucklib/rdluck_tools/http"
 	"hongze/hz_eta_api/utils"
-	"strings"
 	"time"
 )
 
@@ -103,93 +102,6 @@ type WxBase struct {
 	Errmsg  string
 }
 
-func WxUsersGet() (openIdStr string) {
-	accessToken, err := GetWxAccessToken()
-	if err != nil {
-		utils.FileLog.Info("GetWxAccessToken Err:%s", err.Error())
-		return
-	}
-
-	//关注的openid切片
-	openIdList := make([]string, 0)
-	//下一个openid
-	nextOpenid := ""
-
-QUERY_WX:
-	url := "https://api.weixin.qq.com/cgi-bin/user/get?access_token=" + accessToken + "&next_openid=" + nextOpenid
-	result, err := http.Get(url)
-	if err != nil {
-		utils.FileLog.Info("GetUser Err:", err.Error())
-		return
-	}
-	item := new(WxUsers)
-	err = json.Unmarshal(result, &item)
-	if err != nil {
-		fmt.Println("Unmarshal Err:", err.Error())
-		return
-	}
-	if item.Errcode != 0 {
-		utils.FileLog.Info("微信接口返回异常 Err:", item.Errmsg)
-		return
-	}
-	err = errors.New(item.Errmsg)
-
-	openIdList = append(openIdList, item.Data.Openid...)
-
-	//如果数量大于10000条,同时下个openid不为空,那么继续查询
-	if item.Count >= 10000 && item.NextOpenid != "" {
-		nextOpenid = item.NextOpenid
-		goto QUERY_WX
-	}
-
-	openIdStr = strings.Join(openIdList, "','")
-	openIdStr = "'" + openIdStr + "'"
-	return
-}
-
-func GetWxAccessTokenByXzs() (accessTokenStr string, err error) {
-	if utils.RunMode == "release" {
-		cacheKey := "xygxxzs_wxtoken"
-		accessTokenStr, _ = utils.Rc.RedisString(cacheKey)
-		if accessTokenStr != "" {
-			return
-		} else {
-			WxAccessToken, errWx := GetWxTokenByXzs()
-			if errWx != nil {
-				err = errWx
-				return
-			}
-			accessTokenStr = WxAccessToken.AccessToken
-			utils.Rc.Put(cacheKey, WxAccessToken.AccessToken, time.Second*7000)
-		}
-	} else {
-		accessTokenStr, err = GetWxAccessToken()
-		if err != nil {
-			return
-		}
-	}
-	return
-}
-
-// 获取小助手的微信Token
-func GetWxTokenByXzs() (item *WxAccessToken, err error) {
-	getUrl := "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + utils.WxPublicIdXzs + "&secret=" + utils.WxPublicSecretXzs
-	result, err := http.Get(getUrl)
-	if err != nil {
-		return
-	}
-	err = json.Unmarshal(result, &item)
-	if err != nil {
-		fmt.Println("GetWxToken Unmarshal Err:%s", err.Error())
-		return
-	}
-	if item.Errmsg != "" {
-		utils.FileLog.Info("GetWxToken fail result:%s", string(result))
-		err = fmt.Errorf(item.Errmsg)
-	}
-	return
-}
-
 func WxUsersGetV1() (openIdList []string) {
 	accessToken, err := GetWxAccessToken()
 	if err != nil {

+ 0 - 179
services/data/edb_data_lt.go

@@ -1,179 +0,0 @@
-package data
-
-import (
-	"encoding/json"
-	"fmt"
-	"github.com/rdlucklib/rdluck_tools/http"
-	"hongze/hz_eta_api/models/data_manage"
-	"hongze/hz_eta_api/utils"
-	"reflect"
-	"strings"
-	"time"
-)
-
-type EdbDataFromLt struct {
-	Close map[int64]interface{} `json:"CLOSE"`
-}
-
-// GetEdbDataByLt 获取路透社指标
-func GetEdbDataByLt(edbCode, startDate, endDate string) (searchItem *data_manage.EdbInfoSearch, err error) {
-	// 获取路透社数据
-	ltDataList, err := QueryEdbDataByLt(edbCode, startDate, endDate)
-	if err != nil {
-		return
-	}
-
-	searchItem = new(data_manage.EdbInfoSearch)
-	searchItem.EdbCode = edbCode
-	if len(ltDataList) > 0 {
-		var isAdd bool
-
-		addSql := ` INSERT INTO edb_data_lt(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
-		nowStr := time.Now().Format(utils.FormatDateTime)
-		dataList := make([]*data_manage.EdbInfoSearchData, 0)
-		for timestampInt, edbValue := range ltDataList {
-			dataTime := time.Unix(timestampInt/1000, 0)
-
-			//校验数据类型对不对
-			valType := reflect.TypeOf(edbValue)
-			if valType == nil {
-				continue
-			}
-			if valType.String() != "float64" {
-				continue
-			}
-			sValue := edbValue.(float64)
-
-			eDate := dataTime.Format(utils.FormatDate)
-			if err != nil {
-				return nil, err
-			}
-			timestamp := dataTime.UnixNano() / 1e6
-			timeStr := fmt.Sprintf("%d", timestamp)
-			addSql += "("
-			addSql += "0," + "'" + edbCode + "'" + "," + "'" + eDate + "'" + "," + utils.SubFloatToString(sValue, 20) + "," + "'" + nowStr + "'" +
-				"," + "'" + nowStr + "'" + "," + "0" + "," + "'" + timeStr + "'"
-			addSql += "),"
-			isAdd = true
-		}
-		if isAdd {
-			addSql = strings.TrimRight(addSql, ",")
-			err = data_manage.AddEdbDataLtBySql(addSql)
-			if err != nil {
-				utils.FileLogData.Info("AddEdbDataLtBySql Err:%s", err.Error())
-				return
-			}
-		}
-
-		size := utils.EDB_DATA_LIMIT
-		dataList, err := data_manage.GetEdbDataAllByEdbCode(edbCode, utils.DATA_SOURCE_LT, size)
-		if err != nil {
-			utils.FileLogData.Info("GetEdbDataLtByCode Err:%s", err.Error())
-			return searchItem, err
-		}
-		edbInfoMaxAndMinInfo, err := data_manage.GetEdbInfoMaxAndMinInfo(utils.DATA_SOURCE_LT, edbCode)
-		if err != nil {
-			return searchItem, err
-		}
-		searchItem.DataList = dataList
-		searchItem.StartDate = edbInfoMaxAndMinInfo.MinDate
-		searchItem.EndDate = edbInfoMaxAndMinInfo.MaxDate
-	}
-	if searchItem.DataList == nil {
-		searchItem.DataList = make([]*data_manage.EdbInfoSearchData, 0)
-	}
-	return
-}
-
-//func init() {
-//	fmt.Println("aa")
-//	searchInfo, err := GetEdbDataByLt("OMA-1Mdubsw-A", "2021-01-01", "2021-12-28")
-//	if err != nil {
-//		fmt.Println("err:", err)
-//	} else {
-//		fmt.Println(searchInfo)
-//	}
-//}
-
-// RefreshEdbDataByLt 刷新路透社指标数据
-func RefreshEdbDataByLt(edbInfoId int, edbCode, startDate, endDate string) (err error) {
-	// 获取路透社数据
-	//ltDataList,err := QueryEdbDataByLt(edbCode, startDate, endDate)
-	//if err != nil{
-	//	return
-	//}
-	//if item.Errorcode != 0 {
-	//	err = errors.New(string(body))
-	//	return
-	//}
-	//if len(item.Tables) > 0 {
-	//	table := item.Tables[0]
-	//	dataLen := len(table.Time)
-	//	addSql := ` INSERT INTO edb_data_lt(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
-	//	nowStr := time.Now().Format(utils.FormatDateTime)
-	//	var isAdd bool
-	//	for i := 0; i < dataLen; i++ {
-	//		eDate := table.Time[i]
-	//		sValue := table.Value[i]
-	//
-	//		count, err := data_manage.GetEdbDataLtByCodeAndDate(edbCode, eDate)
-	//		if err != nil && err.Error() != utils.ErrNoRow() {
-	//			return err
-	//		}
-	//		if count <= 0 {
-	//			dataTime, err := time.Parse(utils.FormatDate, eDate)
-	//			if err != nil {
-	//
-	//			}
-	//			timestamp := dataTime.UnixNano() / 1e6
-	//			timeStr := fmt.Sprintf("%d", timestamp)
-	//
-	//			addSql += "("
-	//			addSql += strconv.Itoa(edbInfoId) + "," + "'" + edbCode + "'" + "," + "'" + eDate + "'" + "," + utils.SubFloatToString(sValue, 30) + "," + "'" + nowStr + "'" +
-	//				"," + "'" + nowStr + "'" + "," + "1"
-	//			addSql += "," + "'" + timeStr + "'"
-	//			addSql += "),"
-	//			isAdd = true
-	//		} else {
-	//			err = data_manage.ModifyEdbDataLt(int64(edbInfoId), eDate, sValue)
-	//			if err != nil {
-	//				return err
-	//			}
-	//		}
-	//	}
-	//
-	//	if isAdd {
-	//		addSql = strings.TrimRight(addSql, ",")
-	//		err = data_manage.AddEdbDataLtBySql(addSql)
-	//		if err != nil {
-	//			fmt.Println("AddEdbDataLt Err", err.Error())
-	//			return
-	//		}
-	//	}
-	//}
-	return
-}
-
-// QueryEdbDataByLt 获取路透社数据
-func QueryEdbDataByLt(edbCode, startDate, endDate string) (dataList map[int64]interface{}, err error) {
-	dataList = make(map[int64]interface{})
-
-	ltUrl := utils.Hz_Data_LT_Url + `edbInfo/ek?EdbCode=%s&StartDate=%s&EndDate=%s`
-	ltUrl = fmt.Sprintf(ltUrl, edbCode, startDate, endDate)
-	utils.FileLogData.Info("ltUrl:%s", ltUrl)
-	body, err := http.Get(ltUrl)
-	utils.FileLogData.Info("lt result:%s", string(body))
-
-	if err != nil {
-		return
-	}
-	//fmt.Println(string(body))
-	item := new(EdbDataFromLt)
-	err = json.Unmarshal(body, &item)
-
-	if err != nil {
-		return
-	}
-	dataList = item.Close
-	return
-}

+ 0 - 169
services/data/edb_data_pb.go

@@ -1,169 +0,0 @@
-package data
-
-import (
-	"encoding/json"
-	"fmt"
-	"github.com/rdlucklib/rdluck_tools/http"
-	"hongze/hz_eta_api/models/data_manage"
-	"hongze/hz_eta_api/utils"
-	"net/url"
-	"strings"
-	"time"
-)
-
-type EdbDataFromPb struct {
-	Date   map[string]int64   `json:"date"`
-	Ticker map[string]string  `json:"ticker"`
-	Field  map[string]string  `json:"field"`
-	Value  map[string]float64 `json:"value"`
-}
-
-func GetEdbDataByPb(edbCode, startDate, endDate string) (searchItem *data_manage.EdbInfoSearch, err error) {
-	defer func() {
-		if err != nil {
-			utils.FileLog.Info("GetEdbDataByPb Err:%s", err.Error())
-		}
-	}()
-	edbCode = url.QueryEscape(edbCode)
-	bpUrl := utils.Hz_Data_PB_Url + `edbInfo/pb?EdbCode=%s&StartDate=%s&EndDate=%s`
-	bpUrl = fmt.Sprintf(bpUrl, edbCode, startDate, endDate)
-	utils.FileLog.Info("bpUrl:%s", bpUrl)
-	body, err := http.Get(bpUrl)
-	if err != nil {
-		utils.FileLog.Info("GetEdbDataByPb Err:%s", err.Error())
-		return
-	}
-	utils.FileLog.Info("GetEdbDataByPb result:%s", string(body))
-	item := new(EdbDataFromPb)
-	err = json.Unmarshal(body, &item)
-	if err != nil {
-		utils.FileLog.Info("GetEdbDataByPb Unmarshal Err:%s", err.Error())
-		return
-	}
-	edbCode, _ = url.QueryUnescape(edbCode)
-	searchItem = new(data_manage.EdbInfoSearch)
-	searchItem.EdbCode = edbCode
-	if len(item.Date) > 0 {
-		var isAdd bool
-		dateMap := item.Date
-		addSql := ` INSERT INTO edb_data_pb(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,ticker,field,data_timestamp) values `
-		nowStr := time.Now().Format(utils.FormatDateTime)
-		for k, v := range dateMap {
-			timeStr := fmt.Sprintf("%d", v)
-			v = v / 1000
-			t := time.Unix(v, 0)
-			dateTime := t.Format(utils.FormatDate)
-
-			val := item.Value[k]
-			field := item.Field[k]
-			ticker := item.Ticker[k]
-
-			if field == "PX_LAST" {
-				addSql += "("
-				addSql += "0," + "'" + edbCode + "'" + "," + "'" + dateTime + "'" + "," + utils.SubFloatToString(val, 20) + "," + "'" + nowStr + "'" +
-					"," + "'" + nowStr + "'" + "," + "0" + "," + "'" + ticker + "'" + "," + "'" + field + "'" + "," + "'" + timeStr + "'"
-				addSql += "),"
-				isAdd = true
-			}
-		}
-		if isAdd {
-			addSql = strings.TrimRight(addSql, ",")
-			err = data_manage.AddEdbDataPbBySql(addSql)
-			if err != nil {
-				utils.FileLogData.Info("GetEdbDataByPb AddEdbDataPbBySql Err:%s", err.Error())
-				return searchItem, err
-			}
-		}
-
-		size := utils.EDB_DATA_LIMIT
-		dataList, err := data_manage.GetEdbDataPbByCode(edbCode, size)
-		if err != nil {
-			fmt.Println("GetEdbDataWindByCode Err", err.Error())
-			return searchItem, err
-		}
-		minDate, maxDate, err := data_manage.GetEdbDataPbMaxOrMinDate(edbCode)
-		if err != nil {
-			return searchItem, err
-		}
-		searchItem.DataList = dataList
-		searchItem.StartDate = minDate
-		searchItem.EndDate = maxDate
-	}
-
-	if searchItem.DataList == nil {
-		searchItem.DataList = make([]*data_manage.EdbInfoSearchData, 0)
-	}
-
-	return
-}
-
-func RefreshEdbDataByPb(edbInfoId int, edbCode, startDate, endDate string) (err error) {
-	refreshEdbCode := edbCode
-	edbCode = url.QueryEscape(edbCode)
-	bpUrl := utils.Hz_Data_PB_Url + `edbInfo/pb?EdbCode=%s&StartDate=%s&EndDate=%s`
-	bpUrl = fmt.Sprintf(bpUrl, edbCode, startDate, endDate)
-	utils.FileLog.Info("bpUrl+" + bpUrl)
-	body, err := http.Get(bpUrl)
-	fmt.Println("RefreshEdbDataByPb body:")
-	fmt.Println(string(body))
-	utils.FileLog.Info("RefreshEdbDataByPb:" + string(body))
-
-	if err != nil {
-		return
-	}
-	item := new(EdbDataFromPb)
-	err = json.Unmarshal(body, &item)
-	if err != nil {
-		return
-	}
-	if len(item.Date) > 0 {
-		dateMap := item.Date
-		pbList := make([]*data_manage.EdbDataPb, 0)
-		for k, v := range dateMap {
-			timestamp := v
-			v = v / 1000
-			t := time.Unix(v, 0)
-			dateTime := t.Format(utils.FormatDate)
-
-			val := item.Value[k]
-			field := item.Field[k]
-			ticker := item.Ticker[k]
-			if field == "PX_LAST" {
-				//判断数据是否已经存在
-				count, err := data_manage.GetEdbDataPbByCodeAndDate(refreshEdbCode, dateTime)
-				if err != nil && err.Error() != utils.ErrNoRow() {
-					return err
-				}
-				fmt.Println("field:", field)
-				if count <= 0 {
-					item := new(data_manage.EdbDataPb)
-					item.EdbCode, _ = url.QueryUnescape(edbCode)
-					item.EdbInfoId = edbInfoId
-					item.CreateTime = time.Now()
-					item.ModifyTime = time.Now()
-					item.DataTime = dateTime
-					item.Value = val
-					item.Status = 1
-					item.Field = field
-					item.Ticker = ticker
-					item.DataTimestamp = timestamp
-					pbList = append(pbList, item)
-				} else {
-					err = data_manage.ModifyEdbDataPb(edbInfoId, dateTime, val)
-					if err != nil {
-						return err
-					}
-				}
-			}
-		}
-
-		if len(pbList) > 0 {
-			err = data_manage.AddEdbDataPb(pbList)
-			if err != nil {
-				fmt.Println("AddEdbDataPb Err", err.Error())
-				return
-			}
-		}
-	}
-	return
-}

+ 0 - 166
services/data/edb_data_ths.go

@@ -1,166 +0,0 @@
-package data
-
-import (
-	"encoding/json"
-	"errors"
-	"fmt"
-	"github.com/rdlucklib/rdluck_tools/http"
-	"hongze/hz_eta_api/models/data_manage"
-	"hongze/hz_eta_api/utils"
-	"strconv"
-	"strings"
-	"time"
-)
-
-type EdbDataFromThs struct {
-	DataVol   int64       `json:"dataVol"`
-	Errmsg    string      `json:"errmsg"`
-	Errorcode int64       `json:"errorcode"`
-	Perf      interface{} `json:"perf"`
-	Tables    []struct {
-		ID    []string  `json:"id"`
-		Time  []string  `json:"time"`
-		Value []float64 `json:"value"`
-	} `json:"tables"`
-}
-
-func GetEdbDataByThs(edbCode, startDate, endDate string) (searchItem *data_manage.EdbInfoSearch, err error) {
-	thsUrl := utils.Hz_Server_Data_Url + `edbInfo/ths?EdbCode=%s&StartDate=%s&EndDate=%s`
-	thsUrl = fmt.Sprintf(thsUrl, edbCode, startDate, endDate)
-	utils.FileLogData.Info("thsUrl:%s", thsUrl)
-	body, err := http.Get(thsUrl)
-	utils.FileLogData.Info("ths result:%s", string(body))
-
-	if err != nil {
-		return
-	}
-	item := new(EdbDataFromThs)
-	err = json.Unmarshal(body, &item)
-	if err != nil {
-		return
-	}
-	if item.Errorcode != 0 {
-		err = errors.New(string(body))
-		return
-	}
-	searchItem = new(data_manage.EdbInfoSearch)
-	searchItem.EdbCode = edbCode
-	if len(item.Tables) > 0 {
-		table := item.Tables[0]
-		dataLen := len(table.Time)
-
-		var isAdd bool
-		addSql := ` INSERT INTO edb_data_ths(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
-		nowStr := time.Now().Format(utils.FormatDateTime)
-		dataList := make([]*data_manage.EdbInfoSearchData, 0)
-		for i := 0; i < dataLen; i++ {
-			eDate := table.Time[i]
-			sValue := table.Value[i]
-			dataTime, err := time.Parse(utils.FormatDate, eDate)
-			if err != nil {
-				return nil, err
-			}
-			timestamp := dataTime.UnixNano() / 1e6
-			timeStr := fmt.Sprintf("%d", timestamp)
-			addSql += "("
-			addSql += "0," + "'" + edbCode + "'" + "," + "'" + eDate + "'" + "," + utils.SubFloatToString(sValue, 20) + "," + "'" + nowStr + "'" +
-				"," + "'" + nowStr + "'" + "," + "0" + "," + "'" + timeStr + "'"
-			addSql += "),"
-			isAdd = true
-		}
-		if isAdd {
-			addSql = strings.TrimRight(addSql, ",")
-			err = data_manage.AddEdbDataThsBySql(addSql)
-			if err != nil {
-				utils.FileLogData.Info("AddEdbDataThsBySql Err:%s", err.Error())
-				return
-			}
-		}
-
-		size := utils.EDB_DATA_LIMIT
-		dataList, err := data_manage.GetEdbDataThsByCode(edbCode, size)
-		if err != nil {
-			utils.FileLogData.Info("GetEdbDataThsByCode Err:%s", err.Error())
-			return searchItem, err
-		}
-		minDate, maxDate, err := data_manage.GetEdbDataThsMaxOrMinDate(edbCode)
-		if err != nil {
-			return searchItem, err
-		}
-		searchItem.DataList = dataList
-		searchItem.StartDate = minDate
-		searchItem.EndDate = maxDate
-	}
-	if searchItem.DataList == nil {
-		searchItem.DataList = make([]*data_manage.EdbInfoSearchData, 0)
-	}
-	return
-}
-
-func RefreshEdbDataByThs(edbInfoId int, edbCode, startDate, endDate string) (err error) {
-	thsUrl := utils.Hz_Server_Data_Url + `edbInfo/ths?EdbCode=%s&StartDate=%s&EndDate=%s`
-	thsUrl = fmt.Sprintf(thsUrl, edbCode, startDate, endDate)
-	utils.FileLog.Info("thsUrl:%s", thsUrl)
-	body, err := http.Get(thsUrl)
-	fmt.Println("GetEdbDataByThs body:")
-	fmt.Println(string(body))
-
-	if err != nil {
-		return
-	}
-	item := new(EdbDataFromThs)
-	err = json.Unmarshal(body, &item)
-	if err != nil {
-		return
-	}
-	if item.Errorcode != 0 {
-		err = errors.New(string(body))
-		return
-	}
-	if len(item.Tables) > 0 {
-		table := item.Tables[0]
-		dataLen := len(table.Time)
-		addSql := ` INSERT INTO edb_data_ths(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
-		nowStr := time.Now().Format(utils.FormatDateTime)
-		var isAdd bool
-		for i := 0; i < dataLen; i++ {
-			eDate := table.Time[i]
-			sValue := table.Value[i]
-
-			count, err := data_manage.GetEdbDataThsByCodeAndDate(edbCode, eDate)
-			if err != nil && err.Error() != utils.ErrNoRow() {
-				return err
-			}
-			if count <= 0 {
-				dataTime, err := time.Parse(utils.FormatDate, eDate)
-				if err != nil {
-
-				}
-				timestamp := dataTime.UnixNano() / 1e6
-				timeStr := fmt.Sprintf("%d", timestamp)
-
-				addSql += "("
-				addSql += strconv.Itoa(edbInfoId) + "," + "'" + edbCode + "'" + "," + "'" + eDate + "'" + "," + utils.SubFloatToString(sValue, 30) + "," + "'" + nowStr + "'" +
-					"," + "'" + nowStr + "'" + "," + "1"
-				addSql += "," + "'" + timeStr + "'"
-				addSql += "),"
-				isAdd = true
-			} else {
-				err = data_manage.ModifyEdbDataThs(int64(edbInfoId), eDate, sValue)
-				if err != nil {
-					return err
-				}
-			}
-		}
-
-		if isAdd {
-			addSql = strings.TrimRight(addSql, ",")
-			err = data_manage.AddEdbDataThsBySql(addSql)
-			if err != nil {
-				fmt.Println("AddEdbDataThs Err", err.Error())
-				return
-			}
-		}
-	}
-	return
-}

+ 0 - 155
services/data/edb_data_wind.go

@@ -1,155 +0,0 @@
-package data
-
-import (
-	"encoding/json"
-	"fmt"
-	"github.com/rdlucklib/rdluck_tools/http"
-	"hongze/hz_eta_api/models/data_manage"
-	"hongze/hz_eta_api/utils"
-	"strconv"
-	"strings"
-	"time"
-)
-
-type EdbDataFromWind struct {
-	Close  map[string]float64 `json:"CLOSE"`
-	Dt     map[string]int64   `json:"DT"`
-	ErrMsg string
-}
-
-// 万得
-func GetEdbDataByWind(edbCode, startDate, endDate string) (searchItem *data_manage.EdbInfoSearch, err error) {
-	defer func() {
-		if err != nil {
-			fmt.Println("GetEdbDataByWind Err:" + err.Error())
-		}
-	}()
-
-	thsUrl := utils.Hz_Data_Url + `edbInfo/wind?EdbCode=%s&StartDate=%s&EndDate=%s`
-	thsUrl = fmt.Sprintf(thsUrl, edbCode, startDate, endDate)
-	utils.FileLog.Info("thsUrl:%s", thsUrl)
-	body, err := http.Get(thsUrl)
-	fmt.Println("GetEdbDataByThs body:")
-	fmt.Println(string(body))
-	utils.FileLog.Info("wind %s", string(body))
-
-	if err != nil {
-		return
-	}
-	item := new(EdbDataFromWind)
-	err = json.Unmarshal(body, &item)
-	if err != nil {
-		return
-	}
-	var isAdd bool
-	addSql := ` INSERT INTO edb_data_wind(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
-	nowStr := time.Now().Format(utils.FormatDateTime)
-	for k, v := range item.Dt {
-		timeStr := fmt.Sprintf("%d", v)
-		v = v / 1000
-		t := time.Unix(v, 0)
-		dateTime := t.Format(utils.FormatDate)
-		val := item.Close[k]
-
-		addSql += "("
-		addSql += "0," + "'" + edbCode + "'" + "," + "'" + dateTime + "'" + "," + utils.SubFloatToString(val, 20) + "," + "'" + nowStr + "'" +
-			"," + "'" + nowStr + "'" + "," + "0" + "," + "'" + timeStr + "'"
-		addSql += "),"
-		isAdd = true
-	}
-	searchItem = new(data_manage.EdbInfoSearch)
-	searchItem.EdbCode = edbCode
-
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		err = data_manage.AddEdbDataWindBySql(addSql)
-		if err != nil {
-			utils.FileLogData.Info("GetEdbDataByPb AddEdbDataPbBySql Err:%s", err.Error())
-			return searchItem, err
-		}
-	}
-	size := utils.EDB_DATA_LIMIT
-	dataList, err := data_manage.GetEdbDataWindByCode(edbCode, size)
-	if err != nil {
-		fmt.Println("GetEdbDataWindByCode Err", err.Error())
-		return searchItem, err
-	}
-	minDate, maxDate, err := data_manage.GetEdbDataWindMaxOrMinDate(edbCode)
-	if err != nil {
-		fmt.Println("GetEdbDataWindByCode Err", err.Error())
-		return searchItem, err
-	}
-	searchItem.DataList = dataList
-	searchItem.StartDate = minDate
-	searchItem.EndDate = maxDate
-	if searchItem.DataList == nil {
-		searchItem.DataList = make([]*data_manage.EdbInfoSearchData, 0)
-	}
-	return
-}
-
-func RefreshEdbDataByWind(edbInfoId int, edbCode, startDate, endDate string) (err error) {
-	defer func() {
-		if err != nil {
-			fmt.Println("GetEdbDataByWind Err:" + err.Error())
-		}
-	}()
-
-	fmt.Println("startDate,endDate:", startDate, endDate)
-
-	thsUrl := utils.Hz_Data_Url + `edbInfo/wind?EdbCode=%s&StartDate=%s&EndDate=%s`
-	thsUrl = fmt.Sprintf(thsUrl, edbCode, startDate, endDate)
-	utils.FileLog.Info("thsUrl:%s", thsUrl)
-	body, err := http.Get(thsUrl)
-	fmt.Println("GetEdbDataByThs body:")
-	fmt.Println(string(body))
-	utils.FileLog.Info("wind result:" + string(body))
-
-	if err != nil {
-		return
-	}
-	item := new(EdbDataFromWind)
-	err = json.Unmarshal(body, &item)
-	if err != nil {
-		return
-	}
-	addSql := ` INSERT INTO edb_data_wind(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values `
-	nowStr := time.Now().Format(utils.FormatDateTime)
-	var isAdd bool
-	for k, v := range item.Dt {
-		timeStr := fmt.Sprintf("%d", v)
-
-		v = v / 1000
-		t := time.Unix(v, 0)
-		dateTime := t.Format(utils.FormatDate)
-		val := item.Close[k]
-
-		count, err := data_manage.GetEdbDataWindByCodeAndDate(edbCode, dateTime)
-		if err != nil && err.Error() != utils.ErrNoRow() {
-			return err
-		}
-		if count <= 0 {
-			isAdd = true
-			fmt.Println(dateTime)
-			addSql += "("
-			addSql += strconv.Itoa(edbInfoId) + "," + "'" + edbCode + "'" + "," + "'" + dateTime + "'" + "," + utils.SubFloatToString(val, 30) + "," + "'" + nowStr + "'" +
-				"," + "'" + nowStr + "'" + "," + "1"
-			addSql += "," + "'" + timeStr + "'"
-			addSql += "),"
-		} else {
-			err = data_manage.ModifyEdbDataWind(int64(edbInfoId), dateTime, val)
-			if err != nil {
-				return err
-			}
-		}
-	}
-	if isAdd {
-		addSql = strings.TrimRight(addSql, ",")
-		err = data_manage.AddEdbDataWindBySql(addSql)
-		if err != nil {
-			fmt.Println("AddEdbDataWind Err", err.Error())
-			return
-		}
-	}
-	return
-}

+ 12 - 65
services/oss.go

@@ -20,26 +20,8 @@ var (
 	STSTokenCacheKey   = "hongze_admin_sts_token"
 )
 
-/*
-上传demo
-func init() {
-	fmt.Println("start")
-	randStr := utils.GetRandStringNoSpecialChar(28)
-	fileName :=  randStr + ".jpg"
-	fmt.Println("fileName:",fileName)
-	fpath:="./1.png"
-	resourceUrl,err:=UploadAliyun(fileName,fpath)
-	if err!=nil {
-		fmt.Println("UploadAliyun Err:",err.Error())
-		return
-	}
-	fmt.Println("resourceUrl:",resourceUrl)
-	fmt.Println("end")
-}
-*/
-
-// 图片上传到阿里云
-func UploadAliyun(filename, filepath string) (string, error) {
+// UploadAliyunV2 图片上传到阿里云
+func UploadAliyunV2(filename, filepath string) (string, error) {
 	client, err := oss.New(utils.Endpoint, utils.AccessKeyId, utils.AccessKeySecret)
 	if err != nil {
 		return "1", err
@@ -48,7 +30,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 {
@@ -58,27 +40,7 @@ func UploadAliyun(filename, filepath string) (string, error) {
 	return path, err
 }
 
-// UploadAliyunV2 图片上传到阿里云
-func UploadAliyunV2(filename, filepath string) (string, error) {
-	client, err := oss.New(Endpoint, AccessKeyId, AccessKeySecret)
-	if err != nil {
-		return "1", err
-	}
-	bucket, err := client.Bucket(Bucketname)
-	if err != nil {
-		return "2", err
-	}
-	path := UploadDir + time.Now().Format("200601/20060102/")
-	path += filename
-	err = bucket.PutObjectFromFile(path, filepath)
-	if err != nil {
-		return "3", err
-	}
-	path = Imghost + path
-	return path, err
-}
-
-// 音频上传到阿里云
+// UploadAudioAliyun 音频上传到阿里云
 func UploadAudioAliyun(filename, filepath string) (string, error) {
 	client, err := oss.New(utils.Endpoint, utils.AccessKeyId, utils.AccessKeySecret)
 	if err != nil {
@@ -98,7 +60,7 @@ func UploadAudioAliyun(filename, filepath string) (string, error) {
 	return path, err
 }
 
-// 视频上传到阿里云
+// UploadVideoAliyun 视频上传到阿里云
 func UploadVideoAliyun(filename, filepath, savePath string) error {
 	defer func() {
 		os.Remove(filepath)
@@ -122,21 +84,16 @@ func UploadVideoAliyun(filename, filepath, savePath string) error {
 	return err
 }
 
-const (
-	HzEndpoint          = "oss-cn-shanghai.aliyuncs.com"
-	HzBucketName string = "hzchart"
-)
-
-// 上传文件到阿里云
+// UploadFileToAliyun 上传文件到阿里云
 func UploadFileToAliyun(filename, filepath, savePath string) error {
 	defer func() {
 		os.Remove(filepath)
 	}()
-	client, err := oss.New(HzEndpoint, utils.AccessKeyId, utils.AccessKeySecret)
+	client, err := oss.New(utils.Endpoint, utils.AccessKeyId, utils.AccessKeySecret)
 	if err != nil {
 		return err
 	}
-	bucket, err := client.Bucket(HzBucketName)
+	bucket, err := client.Bucket(utils.Bucketname)
 	if err != nil {
 		return err
 	}
@@ -247,28 +204,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 +226,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
 }

+ 4 - 883
services/report_push.go

@@ -1,18 +1,11 @@
 package services
 
 import (
-	"encoding/json"
-	"errors"
 	"fmt"
-	"github.com/wenzhenxi/gorsa"
 	"hongze/hz_eta_api/models"
 	"hongze/hz_eta_api/services/alarm_msg"
 	"hongze/hz_eta_api/utils"
-	"io/ioutil"
-	"net/http"
-	"net/url"
 	"strconv"
-	"strings"
 	"time"
 )
 
@@ -21,349 +14,12 @@ import (
 //	SendReportToThs(report)
 //}
 
-var permissionMap map[string]string = map[string]string{
-	"化里化外日评":    "原油,PTA,MEG,织造终端,甲醇,聚烯烃,沥青,橡胶,苯乙烯,玻璃纯碱",
-	"股债日评":      "宏观,利率债,原油,PTA,MEG,织造终端,甲醇,聚烯烃,沥青,橡胶,苯乙烯,玻璃纯碱,钢材,铁矿,双焦(焦煤、焦炭),有色(铜、铝),有色(锌、铅),镍+不锈钢",
-	"贵金属复盘":     "宏观,利率债,原油,PTA,MEG,织造终端,甲醇,聚烯烃,沥青,橡胶,苯乙烯,玻璃纯碱,钢材,铁矿,双焦(焦煤、焦炭),有色(铜、铝),有色(锌、铅),镍+不锈钢",
-	"每日经济数据备忘录": "宏观,利率债,原油,PTA,MEG,织造终端,甲醇,聚烯烃,沥青,橡胶,苯乙烯,玻璃纯碱,钢材,铁矿,双焦(焦煤、焦炭),有色(铜、铝),有色(锌、铅),镍+不锈钢",
-	"宏观商品复盘":    "宏观,利率债,原油,PTA,MEG,织造终端,甲醇,聚烯烃,沥青,橡胶,苯乙烯,玻璃纯碱,钢材,铁矿,双焦(焦煤、焦炭),有色(铜、铝),有色(锌、铅),镍+不锈钢",
-	"知白守黑日评":    "钢材,铁矿,双焦(焦煤、焦炭)",
-	"有声有色日度闲篇":  "有色(铜、铝),有色(锌、铅),镍+不锈钢",
-	"EIA原油库存点评": "原油",
-	"苯乙烯数据点评":   "苯乙烯",
-	"API原油库存点评": "原油",
-	"铁矿航运数据点评":  "铁矿",
-	"中观需求点评":    "宏观,利率债,原油,PTA,MEG,织造终端,甲醇,聚烯烃,沥青,橡胶,苯乙烯,玻璃纯碱,钢材,铁矿,双焦(焦煤、焦炭),有色(铜、铝),有色(锌、铅),镍+不锈钢",
-	"聚酯数据点评":    "PTA,MEG",
-	"钢材周度数据点评":  "钢材",
-	"寻根知本":      "宏观,利率债,原油,PTA,MEG,织造终端,甲醇,聚烯烃,沥青,橡胶,苯乙烯,玻璃纯碱,钢材,铁矿,双焦(焦煤、焦炭),有色(铜、铝),有色(锌、铅),镍+不锈钢",
-	"国际宏观":      "宏观,利率债,原油,PTA,MEG,织造终端,甲醇,聚烯烃,沥青,橡胶,苯乙烯,玻璃纯碱,钢材,铁矿,双焦(焦煤、焦炭),有色(铜、铝),有色(锌、铅),镍+不锈钢",
-	"能化百家谈":     "原油,PTA,MEG,织造终端,甲醇,聚烯烃,沥青,橡胶,苯乙烯,玻璃纯碱",
-	"有色百家谈":     "有色(铜、铝),有色(锌、铅),镍+不锈钢",
-	"黑色百家谈":     "钢材,铁矿,双焦(焦煤、焦炭)",
-}
-
-// permissionLabelMap 品种与同花顺标签的映射关系
-var permissionLabelMap = map[string]string{
-	"宏观经济":      "宏观",
-	"利率债":       "利率债",
-	"原油":        "原油",
-	"PTA":       "PTA",
-	"MEG":       "MEG",
-	"织造终端":      "织造终端",
-	"甲醇":        "甲醇",
-	"聚烯烃":       "聚烯烃",
-	"沥青":        "沥青",
-	"纯苯+苯乙烯":    "纯苯+苯乙烯",
-	"玻璃纯碱":      "玻璃纯碱",
-	"钢材":        "钢材",
-	"铁矿":        "铁矿",
-	"双焦(焦煤、焦炭)": "双焦(焦煤、焦炭)",
-	"有色(锌)":     "有色(锌)",
-	"有色(铜、铝)":   "有色(铜、铝)",
-	"镍+不锈钢":     "镍+不锈钢",
-	"PVC":       "PVC",
-	"聚酯":        "聚酯",
-	"钴锂":        "钴锂",
-	"策略":        "策略",
-	"苯乙烯":       "纯苯+苯乙烯",
-	"锌":         "有色(锌)",
-	"双焦":        "双焦(焦煤、焦炭)",
-	"铜/铝":       "有色(铜、铝)",
-	"镍/不锈钢":     "镍+不锈钢",
-	"成品油":       "成品油",
-	"油品":        "成品油",
-	"纺服":        "织造终端",
-}
-
-// TshResult 同花顺返回信息
-type TshResult struct {
-	ErrorCode int    `json:"error" description:"错误状态码"`
-	Message   string `json:"message" description:"提示信息"`
-}
-
-// SendReportToThs 发送报告到同花顺
-func SendReportToThs(report *models.ReportDetail) (err error) {
-	defer func() {
-		if err != nil {
-			//fmt.Println(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "发送消息至同花顺失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
-			go alarm_msg.SendAlarmMsg("发送报告至同花顺失败 ErrMsg:"+err.Error(), 3)
-			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "发送报告至同花顺失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
-		}
-	}()
-	jumpBaseUrl := `http://rddpweb.brilliantstart.cn/reportdtl?id=`
-	//生产环境地址
-	if utils.RunMode == "release" {
-		jumpBaseUrl = `https://ficc.hzinsights.com/reportdtl?id=`
-	}
-
-	logoUrl := `https://hongze.oss-cn-shanghai.aliyuncs.com/hzyj.png`
-
-	//获取分类信息(标签)
-	permissionName := report.ClassifyNameSecond
-	classifyItem, tmpErr := models.GetClassifyById(report.ClassifyIdSecond)
-	if tmpErr != nil {
-		err = errors.New(fmt.Sprint("获取分类失败:", tmpErr.Error()))
-		return
-	}
-
-	//获取权限标签名称
-	var permissionStr string
-	if classifyItem != nil {
-		permissionStr = classifyItem.ClassifyLabel
-		if permissionStr == "" {
-			var isOk bool
-			permissionStr, isOk = permissionMap[permissionName]
-			if !isOk {
-				err = errors.New(fmt.Sprint("没有该权限的标签,权限名:", permissionName))
-				return
-			}
-		}
-	} else {
-		var isOk bool
-		permissionStr, isOk = permissionMap[permissionName]
-		if !isOk {
-			err = errors.New(fmt.Sprint("没有该权限的标签,权限名:", permissionName))
-			return
-		}
-	}
-	if permissionStr == "" {
-		err = errors.New(fmt.Sprint("没有该权限的标签,权限名:", permissionName))
-		return
-	}
-
-	sendDetail, err := models.GetReportSendThsDetailByReportId(report.Id, "日度点评")
-	if err != nil && err.Error() != utils.ErrNoRow() {
-		return
-	} else if err == nil && sendDetail != nil {
-		if sendDetail.Status >= 0 {
-			fmt.Println("重复发送")
-			return
-		}
-	}
-
-	pushTime := time.Now()      //预发送时间
-	isPrePush := false          //是否预发布
-	addTime := time.Minute * 40 //短时间内多次发布报告,每篇报告的间隔时间(目前暂定40分钟,只有日度点评的报告需要限制)
-
-	//获取距离现在最近的一条发送成功失败记录
-	latelySendDetail, err := models.GetLatelyReportSendThsDetail()
-	//如果存在最近一条发送记录,那么去校验时间
-	if (err == nil && latelySendDetail != nil) || err.Error() == utils.ErrNoRow() {
-		pushTime = latelySendDetail.PushTime.Add(addTime)
-		//如果最近一条的发送记录 的 (发送时间 + 每篇报告的间隔时间)  晚于 当前时间
-		if pushTime.After(time.Now()) {
-			isPrePush = true
-		} else {
-			pushTime = time.Now()
-		}
-	}
-	//fmt.Println("sendDetailId:", sendDetailId)
-	stageStr := fmt.Sprintf("%v", report.Stage)
-	createDate, _ := time.Parse(utils.FormatDateTime, report.CreateTime)
-	createDateFrom := createDate.Format("0102")
-	title := `【第` + stageStr + `期|FICC】` + report.Title + `(` + createDateFrom + ")"
-
-	if isPrePush { //预发布,只添加预发布记录,不立马发送报告,等待定时任务推送消息给同花顺
-		newSendDetail := &models.ReportSendThsDetail{
-			Title:      title,
-			LabelStr:   permissionStr,
-			ReportId:   report.Id,
-			ReportType: "日度点评",
-			Status:     2,
-			Level:      3,
-			PushTime:   pushTime,
-			CreateTime: time.Now(),
-			MsgType:    1,
-			Content:    report.Abstract,
-			JumpUrl:    fmt.Sprint(jumpBaseUrl, report.Id),
-			Pic:        logoUrl,
-		}
-		_, tmpErr := models.AddReportSendThsDetail(newSendDetail)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}
-	} else {
-		newSendDetail := &models.ReportSendThsDetail{
-			Title:      title,
-			LabelStr:   permissionStr,
-			ReportId:   report.Id,
-			ReportType: "日度点评",
-			Status:     0,
-			Level:      1,
-			PushTime:   pushTime,
-			CreateTime: time.Now(),
-			MsgType:    1,
-			Content:    report.Abstract,
-			JumpUrl:    fmt.Sprint(jumpBaseUrl, report.Id),
-			Pic:        logoUrl,
-		}
-		sendDetailId, tmpErr := models.AddReportSendThsDetail(newSendDetail)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}
-
-		dataType := "1" //内容类型:1文字 2小程序
-		tmpErr = SendThs(title, permissionStr, report.Abstract, fmt.Sprint(jumpBaseUrl, report.Id), logoUrl, dataType)
-		if tmpErr != nil {
-			_ = models.ModifyReportSendThsDetailStatus(int(sendDetailId), -1, tmpErr.Error())
-			return
-		}
-		_ = models.ModifyReportSendThsDetailStatus(int(sendDetailId), 1, "")
-	}
-
-	go SendReportToEmail(report)
-	return
-}
-
-// SendMsgToThs 发送群发消息到同花顺
-func SendMsgToThs(groupSendMsg *models.GroupSendMsg) (err error) {
-	sendDetail, err := models.GetReportSendThsDetailByReportId(groupSendMsg.MsgId, "群发消息")
-	if err != nil && err.Error() != utils.ErrNoRow() {
-		return
-	} else if err == nil && sendDetail != nil {
-		if sendDetail.Status >= 0 {
-			err = errors.New("重复发送")
-			return
-		}
-	}
-	newSendDetail := &models.ReportSendThsDetail{
-		Title:      groupSendMsg.Title,
-		LabelStr:   groupSendMsg.Label,
-		ReportId:   groupSendMsg.MsgId,
-		ReportType: "群发消息",
-		Status:     0,
-		Level:      1,
-		PushTime:   time.Now(),
-		CreateTime: time.Now(),
-		MsgType:    int(groupSendMsg.JumpType),
-		Content:    groupSendMsg.Description,
-		JumpUrl:    groupSendMsg.LinkUrl,
-		Pic:        groupSendMsg.ImgUrl,
-	}
-	sendDetailId, err := models.AddReportSendThsDetail(newSendDetail)
-	if err != nil {
-		return
-	}
-	dataType := fmt.Sprint(groupSendMsg.JumpType)
-	//dataType := "1" //内容类型:1文字 2小程序
-	err = SendThs(groupSendMsg.Title, groupSendMsg.Label, groupSendMsg.Description, groupSendMsg.LinkUrl, groupSendMsg.ImgUrl, dataType)
-	if err != nil {
-		_ = models.ModifyReportSendThsDetailStatus(int(sendDetailId), -1, err.Error())
-		return
-	}
-	_ = models.ModifyReportSendThsDetailStatus(int(sendDetailId), 1, "")
-
-	return
-}
-
-// SendThs 发送消息到同花顺
-func SendThs(title, labelStr, abstract, jumpBaseUrl, logoUrl, dataType string) (err error) {
-	defer func() {
-		if err != nil {
-			//fmt.Println(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "发送消息至同花顺失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
-			go alarm_msg.SendAlarmMsg("发送消息至同花顺失败 ErrMsg:"+err.Error(), 3)
-			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "发送报告至同花顺失败 ErrMsg:"+err.Error(), utils.EmailSendToUsers)
-		}
-	}()
-	pubKey := utils.THS_PubKey
-	sendUrl := utils.THS_SendUrl
-	//fmt.Println("sendUrl:", sendUrl)
-	utils.FileLog.Info(fmt.Sprintf("jumpBaseUrl:%s", jumpBaseUrl))
-	utils.FileLog.Info(fmt.Sprintf("dataType:%s", dataType))
-
-	//标题字符长度截取,最多50位字符
-	title = utils.SubStr(title, 50)
-	utils.FileLog.Info(fmt.Sprintf("title:%s", title))
-	title, err = gorsa.PublicEncrypt(title, pubKey)
-	if err != nil {
-		return
-	}
-
-	//简介字符长度截取,最多50位字符
-	if dataType != `3` {
-		abstract = utils.SubStr(abstract, 50)
-		utils.FileLog.Info(fmt.Sprintf("abstract:%s", abstract))
-		abstract, err = gorsa.PublicEncrypt(abstract, pubKey)
-		if err != nil {
-			return
-		}
-	} else {
-		utils.FileLog.Info(fmt.Sprintf("abstract:%s", abstract))
-	}
-
-	// 关联后的标签数据
-	newLabelList := make([]string, 0)
-	labelList := strings.Split(labelStr, ",")
-	for _, v := range labelList {
-		tmpLabel, ok := permissionLabelMap[v] //判断是否在关联标签里面
-		if !ok {                              //如果不在关联标签里面,那么就把原始的值赋值给
-			tmpLabel = v
-		}
-		newLabelList = append(newLabelList, tmpLabel)
-	}
-	labelStr = strings.Join(newLabelList, ",")
-	utils.FileLog.Info(fmt.Sprintf("labelStr:%s", labelStr))
-	label, err := gorsa.PublicEncrypt(labelStr, pubKey)
-	if err != nil {
-		return
-	}
-
-	jumpUrl, err := gorsa.PublicEncrypt(jumpBaseUrl, pubKey)
-	if err != nil {
-		return
-	}
-
-	picUrl, err := gorsa.PublicEncrypt(logoUrl, pubKey)
-	if err != nil {
-		return
-	}
-
-	dataTypeEncript, err := gorsa.PublicEncrypt(dataType, pubKey)
-	if err != nil {
-		return
-	}
-
-	//开始发送
-	client := http.Client{}
-	form := url.Values{}
-	form.Add("title", title)
-	form.Add("description", abstract)
-	form.Add("label", label)
-	form.Add("url", jumpUrl)
-	form.Add("icon", picUrl)
-	form.Add("dataType", dataTypeEncript)
-
-	utils.FileLog.Info(fmt.Sprintf("SendThs parms:%s", form.Encode()))
-	resp, err := client.PostForm(sendUrl, form)
-	if err != nil {
-		return
-	}
-	defer resp.Body.Close()
-
-	body, _ := ioutil.ReadAll(resp.Body)
-
-	//fmt.Println(string(body))
-	utils.FileLog.Info(fmt.Sprintf("ThsResult parms:%s", string(body)))
-
-	//同花顺接口返回数据
-	var tshResult TshResult
-	err = json.Unmarshal(body, &tshResult)
-	if err != nil {
-		err = errors.New(fmt.Sprintf("同花顺接口返回数据转换成结构体异常;body:%s;Err:%s;", string(body), err.Error()))
-		return
-	}
-	if tshResult.ErrorCode != 1 {
-		err = errors.New(fmt.Sprint("发送数据到同花顺接口异常,result:", string(body)))
-		return
-	}
-	return
-}
-
 // SendReportToEmail 发送报告邮件
 func SendReportToEmail(report *models.ReportDetail) (err error) {
+	if utils.SystemType == "custom" {
+		// 客户不做报告邮件推送
+		return
+	}
 	fmt.Println("SendReportToEmail")
 	defer func() {
 		if err != nil {
@@ -421,543 +77,8 @@ func SendReportMiniToThs(report *models.ReportDetail) (err error) {
 			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "SendReportMiniToThs发送报告至同花顺失败, ReportId:" + strconv.Itoa(report.Id) + ", ErrMsg:" + err.Error(), utils.EmailSendToUsers)
 		}
 	}()
-
-	//小程序跳转地址
-	jumpBaseUrl := utils.WxYbAppId + `/pages-report/reportDetail?reportId=`
-
-	// 如果是晨报、周报,那么地址还不一样 (2023-4-7 09:24:25:添加晨报推送)
-	if utils.InArrayByStr([]string{utils.REPORT_TYPE_DAY, utils.REPORT_TYPE_WEEK}, report.ChapterType) {
-		jumpBaseUrl = utils.WxYbAppId + `/pages-report/chapterList?reportId=`
-	}
-
-	logoUrl := `https://hongze.oss-cn-shanghai.aliyuncs.com/hzyj.png`
-
-	var permissionStr string
-	if report.HasChapter == 0 {
-		// 获取分类信息(标签)
-		permissionName := report.ClassifyNameSecond
-		classifyItem, tmpErr := models.GetClassifyById(report.ClassifyIdSecond)
-		if tmpErr != nil {
-			err = errors.New(fmt.Sprint("获取分类失败:", permissionName))
-			return
-		}
-		// 获取权限标签名称
-		if classifyItem != nil {
-			permissionStr = classifyItem.ClassifyLabel
-			if permissionStr == "" {
-				var isOk bool
-				permissionStr, isOk = permissionMap[permissionName]
-				if !isOk {
-					err = errors.New(fmt.Sprint("没有该权限的标签,权限名:", permissionName))
-					return
-				}
-			}
-		} else {
-			var isOk bool
-			permissionStr, isOk = permissionMap[permissionName]
-			if !isOk {
-				err = errors.New(fmt.Sprint("没有该权限的标签,权限名:", permissionName))
-				return
-			}
-		}
-		if permissionStr == "" {
-			err = errors.New(fmt.Sprint("没有该权限的标签,权限名:", permissionName))
-			return
-		}
-	} else {
-		// 同php的
-		permissionStr = "宏观,利率债,原油,PTA,MEG,织造终端,甲醇,聚烯烃,沥青,橡胶,苯乙烯,玻璃纯碱,钢材,铁矿,双焦(焦煤、焦炭),有色(铜、铝),有色(锌、铅),镍+不锈钢"
-	}
-
-	sendDetail, err := models.GetReportSendThsDetailByReportId(report.Id, "研报小程序")
-	if err != nil {
-		// 如果不是找不到数据,那么直接返回报错
-		if err.Error() != utils.ErrNoRow() {
-			return
-		}
-		//如果是找不到数据,那么就将err置空
-		err = nil
-	} else if err == nil && sendDetail != nil {
-		if sendDetail.Status >= 0 {
-			fmt.Println("重复发送")
-			return
-		}
-	}
-
-	//pushTime := time.Now()      //预发送时间
-	//isPrePush := false          //是否预发布
-	//addTime := time.Minute * 40 //短时间内多次发布报告,每篇报告的间隔时间(目前暂定40分钟,只有日度点评的报告需要限制)
-	//level := 3                  //默认是普通的推送等级
-	classifyId := report.ClassifyIdSecond
-	if classifyId <= 0 {
-		classifyId = report.ClassifyIdFirst
-	}
-	level, pushTime, isPrePush, err := getPushTime("研报", classifyId)
-
-	if isPrePush { //预发布,只添加预发布记录,不立马发送报告,等待定时任务推送消息给同花顺
-		newSendDetail := &models.ReportSendThsDetail{
-			Title:      report.Title,
-			LabelStr:   permissionStr,
-			ReportId:   report.Id,
-			ReportType: "研报",
-			Status:     2,
-			Level:      level,
-			PushTime:   pushTime,
-			CreateTime: time.Now(),
-			MsgType:    2,
-			Content:    report.Abstract,
-			JumpUrl:    fmt.Sprint(jumpBaseUrl, report.Id),
-			Pic:        logoUrl,
-		}
-		_, tmpErr := models.AddReportSendThsDetail(newSendDetail)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}
-	} else {
-		newSendDetail := &models.ReportSendThsDetail{
-			Title:      report.Title,
-			LabelStr:   permissionStr,
-			ReportId:   report.Id,
-			ReportType: "研报",
-			Status:     0,
-			Level:      level,
-			PushTime:   pushTime,
-			CreateTime: time.Now(),
-			MsgType:    2,
-			Content:    report.Abstract,
-			JumpUrl:    fmt.Sprint(jumpBaseUrl, report.Id),
-			Pic:        logoUrl,
-		}
-		sendDetailId, tmpErr := models.AddReportSendThsDetail(newSendDetail)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}
-		//及时发送
-		dataType := "2" //内容类型:1文字 2小程序
-		err = SendThs(report.Title, permissionStr, report.Abstract, fmt.Sprint(jumpBaseUrl, report.Id), logoUrl, dataType)
-		if err != nil {
-			_ = models.ModifyReportSendThsDetailStatus(int(sendDetailId), -1, err.Error())
-			return
-		}
-		_ = models.ModifyReportSendThsDetailStatus(int(sendDetailId), 1, "")
-	}
 	if report.HasChapter == 0 {
 		go SendReportToEmail(report)
 	}
 	return
 }
-
-// SendYbPriceDrivenToThs 推送研报小程序价格驱动客群消息
-func SendYbPriceDrivenToThs(priceDrivenId, varietyTagId int) (err error) {
-	defer func() {
-		if err != nil {
-			errMsg := "SendReportMiniToThs 推送研报小程序价格驱动到同花顺失败, PriceDrivenId:" + strconv.Itoa(priceDrivenId) + ", ErrMsg:" + err.Error()
-			utils.FileLog.Info("%s", errMsg)
-			go alarm_msg.SendAlarmMsg(errMsg, 3)
-		}
-	}()
-	// 标签信息
-	if varietyTagId <= 0 {
-		return
-	}
-	varietyTag, err := models.GetVarietyTagById(varietyTagId)
-	if err != nil {
-		return
-	}
-
-	permissionName := varietyTag.ChartPermissionName
-	if permissionName == "" {
-		err = errors.New("客群标签为空, 不可推送")
-		return
-	}
-	if permissionName == "宏观经济" {
-		permissionName = "宏观"
-	}
-	title := fmt.Sprintf("%s价格驱动", permissionName)
-	jumpUrl := fmt.Sprintf(`%s/pages/pricedriven/pricedriven?default_classify_first=%d&default_classify_sub=%d`, utils.WxYbAppId, varietyTag.VarietyClassifyId, varietyTag.VarietyTagId)
-	logoUrl := `https://hongze.oss-cn-shanghai.aliyuncs.com/hzyj.png`
-	// 校验发送类型: 0-不发送 1-即时发送 2-预发送
-	reportType := "研报价格驱动"
-	sendType, pushTime, err := checkPreparePush(priceDrivenId, reportType)
-	if err != nil || sendType == 0 {
-		return
-	}
-	thsDetail := &models.ReportSendThsDetail{
-		Title:      title,
-		LabelStr:   permissionName,
-		ReportId:   priceDrivenId,
-		ReportType: reportType,
-		Status:     0,
-		Level:      1,
-		PushTime:   pushTime,
-		CreateTime: time.Now(),
-		MsgType:    2,
-		Content:    title,
-		JumpUrl:    jumpUrl,
-		Pic:        logoUrl,
-	}
-	// 延时发送
-	if sendType == 2 {
-		thsDetail.Status = 2
-		thsDetail.Level = 3
-		if _, e := models.AddReportSendThsDetail(thsDetail); e != nil {
-			err = errors.New("AddReportSendThsDetail-新增发送记录失败, Err:" + e.Error())
-			return
-		}
-		return
-	}
-	// 即时发送
-	if sendType == 1 {
-		lastId, e := models.AddReportSendThsDetail(thsDetail)
-		if e != nil {
-			err = errors.New("AddReportSendThsDetail-新增发送记录失败, Err:" + e.Error())
-			return
-		}
-		dataType := "2" // 内容类型: 1-文字 2-小程序
-		if e := SendThs(title, permissionName, title, jumpUrl, logoUrl, dataType); e != nil {
-			err = errors.New("SendThs-推送失败, Err:" + e.Error())
-			_ = models.ModifyReportSendThsDetailStatus(int(lastId), -1, e.Error())
-			return
-		}
-		_ = models.ModifyReportSendThsDetailStatus(int(lastId), 1, "")
-	}
-	return
-}
-
-// checkPreparePush 校验发送类型
-func checkPreparePush(reportId int, reportType string) (sendType int, pushTime time.Time, err error) {
-	// sendType 发送类型 0-不发送 1-即时发送 2-预发送
-	sendDetail, e := models.GetReportSendThsDetailByReportId(reportId, reportType)
-	if e != nil && e.Error() != utils.ErrNoRow() {
-		err = errors.New("checkPreparePush-获取发送记录失败, Err:" + e.Error())
-		return
-	}
-	// 重复发送
-	if sendDetail != nil && sendDetail.Status >= 0 {
-		return
-	}
-	// 最新一条(发送中/发送成功)的记录
-	latelySendDetail, e := models.GetLatelyReportSendThsDetail()
-	if e != nil && e.Error() != utils.ErrNoRow() {
-		err = errors.New("checkPreparePush-获取最近一条发送记录失败, Err:" + e.Error())
-		return
-	}
-	sendType = 1
-	pushTime = time.Now()
-	if latelySendDetail != nil {
-		addTime := time.Minute * 40 // 报告间隔时间
-		delayTime := latelySendDetail.PushTime.Add(addTime)
-		// 最近一条发送记录的(发送时间+间隔时间)晚于当前时间, 则预发送
-		if delayTime.After(time.Now()) {
-			sendType = 2
-			pushTime = delayTime
-		}
-	}
-	return
-}
-
-// SendYbCommunityVideoThs 发送研报视频社区到同花顺
-func SendYbCommunityVideoThs(videoId int, title string) (err error) {
-	defer func() {
-		if err != nil {
-			errMsg := "SendYbCommunityVideoThs 发送视频社区到同花顺失败, CommunityVideoId:" + strconv.Itoa(videoId) + ", ErrMsg:" + err.Error()
-			utils.FileLog.Info("%s", errMsg)
-			go alarm_msg.SendAlarmMsg(errMsg, 3)
-		}
-	}()
-	permissionName := "宏观" //写死宏观,默认所有群都推
-	jumpUrl := fmt.Sprint(utils.WxYbAppId+`/pages/video/videoList?videoId=`, videoId)
-	logoUrl := `https://hongze.oss-cn-shanghai.aliyuncs.com/hzyj.png`
-
-	reportType := "视频社区"
-	sendDetail, err := models.GetReportSendThsDetailByReportId(videoId, reportType)
-	if err != nil && err.Error() != utils.ErrNoRow() {
-		return
-	} else if err == nil && sendDetail != nil {
-		if sendDetail.Status >= 0 {
-			fmt.Println("重复发送")
-			return
-		}
-	}
-	//pushTime := time.Now()      // 预发送时间
-	//isPrePush := false          // 是否预发布
-	//addTime := time.Minute * 40 // 短时间内多次发布报告,每篇报告的间隔时间(目前暂定40分钟,只有日度点评的报告需要限制)
-	//// 获取距离现在最近的一条发送成功失败记录
-
-	level, pushTime, isPrePush, err := getPushTime("视频社区", 0)
-
-	if isPrePush {
-		// 预发布,只添加预发布记录,不立马发送报告,等待定时任务推送消息给同花顺
-		newSendDetail := &models.ReportSendThsDetail{
-			Title:      title,
-			LabelStr:   permissionName,
-			ReportId:   videoId,
-			ReportType: reportType,
-			Status:     2,
-			Level:      level,
-			PushTime:   pushTime,
-			CreateTime: time.Now(),
-			MsgType:    2,
-			Content:    title,
-			JumpUrl:    jumpUrl,
-			Pic:        logoUrl,
-		}
-		_, tmpErr := models.AddReportSendThsDetail(newSendDetail)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}
-	} else {
-		// 即时发送
-		newSendDetail := &models.ReportSendThsDetail{
-			Title:      title,
-			LabelStr:   permissionName,
-			ReportId:   videoId,
-			ReportType: reportType,
-			Status:     0,
-			Level:      level,
-			PushTime:   pushTime,
-			CreateTime: time.Now(),
-			MsgType:    2,
-			Content:    title,
-			JumpUrl:    jumpUrl,
-			Pic:        logoUrl,
-		}
-		sendDetailId, tmpErr := models.AddReportSendThsDetail(newSendDetail)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}
-		dataType := "2" // 内容类型:1-文字 2-小程序
-		err = SendThs(title, permissionName, title, jumpUrl, logoUrl, dataType)
-		if err != nil {
-			_ = models.ModifyReportSendThsDetailStatus(int(sendDetailId), -1, err.Error())
-			return
-		}
-		_ = models.ModifyReportSendThsDetailStatus(int(sendDetailId), 1, "")
-	}
-	return
-}
-
-// SendYbRoadVideoThs 发送研报线上路演到同花顺
-func SendYbRoadVideoThs(videoId int, title, chartPermissionIds string) (err error) {
-	defer func() {
-		if err != nil {
-			errMsg := "SendYbRoadVideoThs 发送研报线上路演到同花顺, RoadVideoId:" + strconv.Itoa(videoId) + ", ErrMsg:" + err.Error()
-			utils.FileLog.Info("%s", errMsg)
-			go alarm_msg.SendAlarmMsg(errMsg, 3)
-		}
-	}()
-	// 标签信息
-	if chartPermissionIds == "" {
-		return
-	}
-	chartPermissionIdSlice := strings.Split(chartPermissionIds, ",")
-	chartList, e := models.GetChartPermissionByIds(chartPermissionIdSlice)
-	if e != nil {
-		err = errors.New("获取品种信息失败, Err:" + e.Error())
-		return
-	}
-	permissionName := ""
-	for _, v := range chartList {
-		if v.PermissionName == "宏观经济" {
-			v.PermissionName = "宏观"
-		}
-		permissionName += v.PermissionName + ","
-	}
-	if permissionName == "" {
-		err = errors.New("客群标签为空, 不可推送")
-		return
-	}
-	permissionName = strings.Trim(permissionName, ",")
-	//permissionName := "宏观" //写死宏观,默认所有群都推
-	jumpUrl := fmt.Sprint(utils.WxYbAppId+`/pages/roadShow/video/list?videoId=`, videoId)
-	logoUrl := `https://hongze.oss-cn-shanghai.aliyuncs.com/hzyj.png`
-
-	reportType := "线上路演"
-	sendDetail, err := models.GetReportSendThsDetailByReportId(videoId, reportType)
-	if err != nil && err.Error() != utils.ErrNoRow() {
-		return
-	} else if err == nil && sendDetail != nil {
-		if sendDetail.Status >= 0 {
-			fmt.Println("重复发送")
-			return
-		}
-	}
-	//pushTime := time.Now()      // 预发送时间
-	//isPrePush := false          // 是否预发布
-	//addTime := time.Minute * 40 // 短时间内多次发布报告,每篇报告的间隔时间(目前暂定40分钟,只有日度点评的报告需要限制)
-	//// 获取距离现在最近的一条发送成功失败记录
-	level, pushTime, isPrePush, err := getPushTime("线上路演", 0)
-	if isPrePush {
-		// 预发布,只添加预发布记录,不立马发送报告,等待定时任务推送消息给同花顺
-		newSendDetail := &models.ReportSendThsDetail{
-			Title:      title,
-			LabelStr:   permissionName,
-			ReportId:   videoId,
-			ReportType: reportType,
-			Status:     2,
-			Level:      level,
-			PushTime:   pushTime,
-			CreateTime: time.Now(),
-			MsgType:    2,
-			Content:    title,
-			JumpUrl:    jumpUrl,
-			Pic:        logoUrl,
-		}
-		_, tmpErr := models.AddReportSendThsDetail(newSendDetail)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}
-	} else {
-		// 即时发送
-		newSendDetail := &models.ReportSendThsDetail{
-			Title:      title,
-			LabelStr:   permissionName,
-			ReportId:   videoId,
-			ReportType: reportType,
-			Status:     0,
-			Level:      level,
-			PushTime:   pushTime,
-			CreateTime: time.Now(),
-			MsgType:    2,
-			Content:    title,
-			JumpUrl:    jumpUrl,
-			Pic:        logoUrl,
-		}
-		sendDetailId, tmpErr := models.AddReportSendThsDetail(newSendDetail)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}
-		dataType := "2" // 内容类型:1-文字 2-小程序
-		err = SendThs(title, permissionName, title, jumpUrl, logoUrl, dataType)
-		if err != nil {
-			_ = models.ModifyReportSendThsDetailStatus(int(sendDetailId), -1, err.Error())
-			return
-		}
-		_ = models.ModifyReportSendThsDetailStatus(int(sendDetailId), 1, "")
-	}
-	return
-}
-
-// getPushTime 获取下次推送时间
-func getPushTime(configType string, classifyId int) (level int, pushTime time.Time, isPrePush bool, err error) {
-	addTime := 40 //默认间隔40分钟
-	level = 3     //默认是普通的推送等级
-	pushTime = time.Now()
-	isPrePush = true // 是否预发送
-	// 查找对应的推送配置
-	{
-
-		findConfig, tmpErr := models.GetReportSendThsConfigByClassifyId(configType, classifyId)
-		if tmpErr != nil {
-			if tmpErr.Error() != utils.ErrNoRow() {
-				err = tmpErr
-				return
-			}
-		} else {
-			addTime = findConfig.Time
-			level = findConfig.Level
-		}
-	}
-
-	// 如果是紧急的,那么立马推送
-	if level == 1 {
-		isPrePush = false
-		return
-	}
-	updateMinuteStr := fmt.Sprintf(" DATE_ADD(push_time, INTERVAL %d minute) ", addTime)
-
-	//获取相同推送等级level下待发送的 距离现在最近的一条等待发送的记录
-	latelyLevelSendDetail, tmpErr := models.GetLatelyWaitLevelReportSendThs(level)
-	//如果当前推送等级下,存在最近一条等待发送的记录,那么将该记录的推送时间后面的全部给往后推迟对应的时间
-	if tmpErr == nil {
-		err = models.UpdateReportSendThsPushTime(latelyLevelSendDetail.PushTime, updateMinuteStr)
-		pushTime = latelyLevelSendDetail.PushTime.Add(time.Duration(addTime) * time.Minute)
-		return
-	}
-	// 如果是查询sql报错,那么直接返回
-	if tmpErr.Error() != utils.ErrNoRow() {
-		err = tmpErr
-		return
-	}
-
-	// 当前情况是:当前是同等级下没有待发送的消息
-
-	var latelyPushTime time.Time
-	//查询最近的发送中/已经成功/发送失败的记录
-	latelyThsIsSendDetail, err := models.GetLatelyIsSendSendThsDetail()
-	if err == nil {
-		latelyPushTime = latelyThsIsSendDetail.PushTime
-	} else {
-		// 如果是查询sql报错,那么直接返回
-		if err.Error() != utils.ErrNoRow() {
-			return
-		}
-	}
-
-	// 那么需要寻找下一个推送等级的第一条推送记录
-	// 获取当前下一个推送等级下面的第一条数据
-	earliestLevelSendDetail, tmpErr := models.GetEarliestWaitGtLevelReportSendThs(level)
-	// 如果当前下一个推送等级下面存在数据数据,那么将该记录的推送时间以及后面时间的记录全部给往后推迟对应的时间
-	if tmpErr == nil {
-		if latelyPushTime.IsZero() {
-			err = models.UpdateReportSendThsPushTimeByEqGtPushTime(earliestLevelSendDetail.PushTime, updateMinuteStr)
-		} else {
-			// 新记录需要发送的时间
-			pushTime = latelyPushTime.Add(time.Duration(addTime) * time.Minute)
-
-			// 如果当前时间晚于 新记录需要发送的时间 的话,那么发布时间就是现在
-			if time.Now().After(pushTime) {
-				pushTime = time.Now()
-				isPrePush = false
-			}
-
-			// 下一篇报告 与 新报告的发布间隔时间
-			differenceTime := earliestLevelSendDetail.PushTime.Sub(pushTime)
-
-			updateMinuteStr := fmt.Sprintf(" DATE_ADD(push_time, INTERVAL %d minute) ", 40+int(differenceTime.Minutes()))
-			err = models.UpdateReportSendThsPushTimeByEqGtPushTime(earliestLevelSendDetail.PushTime, updateMinuteStr)
-		}
-		return
-	} else {
-		// 如果是查询sql报错,那么直接返回
-		if tmpErr.Error() != utils.ErrNoRow() {
-			err = tmpErr
-			return
-		}
-
-		// 后面没有报告了,那么就是直接往后面加就好了
-		if !latelyPushTime.IsZero() {
-			// 新记录需要发送的时间
-			pushTime = latelyPushTime.Add(time.Duration(addTime) * time.Minute)
-
-			// 如果当前时间晚于 新记录需要发送的时间 的话,那么发布时间就是现在
-			if time.Now().After(pushTime) {
-				pushTime = time.Now()
-				isPrePush = false
-			}
-			return
-		}
-	}
-	err = nil
-	isPrePush = false
-
-	return
-}
-
-// Demo 发送文字和图片
-func Demo() {
-	description := `先说下玻璃吧,前面两三周还是比较看多05的,年报也是大方向上认为明年选择做多。但是,现在价格和成交已经不是很匹配了,短期盘面给出的升水以及绝对价格的角度来看,认为阶段性到目标位了,年前高位震荡看,策略上维持周报看法,前期多单可以适当止盈部分,轻仓观望。`
-	description = `话不多说,到此结束。[翻白眼][翻白眼][旺柴][翻白眼]
-这里是换行![翻白眼][捂脸]`
-	urlStr := `https://hongze.oss-accelerate.aliyuncs.com/static/images/202301/20230103/CddIbfsYrcMCmhpmVgJyUU5Jyhjw.jpeg`
-	urlStr = `https://hongze.oss-accelerate.aliyuncs.com/static/images/202301/20230103/siP2p9VjQMasEAZ52uFtl1CgNInS.png`
-
-	//dataType, h5:1; 小程序:2;3:文字;4:图片
-	SendThs("测试图片", "宏观", description, urlStr, "", "4")
-}

+ 1 - 625
services/wechat_send_msg.go

@@ -1,223 +1,18 @@
 package services
 
 import (
-	"bytes"
 	"encoding/json"
 	"errors"
 	"fmt"
 	"hongze/hz_eta_api/models"
-	"hongze/hz_eta_api/models/system"
 	"hongze/hz_eta_api/services/alarm_msg"
 	"hongze/hz_eta_api/utils"
 	"io/ioutil"
 	"net/http"
 	"strconv"
 	"strings"
-	"time"
 )
 
-func SendWxTemplateMsg(reportId int) (err error) {
-	var msg string
-	defer func() {
-		if err != nil {
-			go alarm_msg.SendAlarmMsg("发送模版消息失败,Err:"+err.Error()+";msg:"+msg, 3)
-			//go utils.SendEmail("发送模版消息失败"+time.Now().Format("2006-01-02 15:04:05"), msg+";Err:"+err.Error(), utils.EmailSendToUsers)
-			utils.FileLog.Info(fmt.Sprintf("发送模版消息失败,Err:%s,%s", err.Error(), msg))
-		}
-		if msg != "" {
-			utils.FileLog.Info(fmt.Sprintf("发送模版消息失败,msg:%s", msg))
-		}
-	}()
-	utils.FileLog.Info("%s", "services SendMsg")
-
-	report, err := models.GetReportById(reportId)
-	if err != nil {
-		msg = "GetReportInfo Err:" + err.Error()
-		return
-	}
-	if report == nil {
-		utils.FileLog.Info("报告信息不存在")
-		return
-	}
-	//accessToken, err := models.GetWxAccessToken()
-	//if err != nil {
-	//	msg = "GetWxAccessToken Err:" + err.Error()
-	//	return
-	//}
-	//if accessToken == "" {
-	//	msg = "accessToken is empty"
-	//	return
-	//}
-	openIdArr, err := models.GetOpenIdArr()
-	if err != nil {
-		msg = "get GetOpenIdArr err:" + err.Error()
-		return
-	}
-
-	//sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
-	//fmt.Println("send start")
-	//utils.FileLog.Info("send start")
-	////if report.MsgIsSend == 0 {
-	//sendMap := make(map[string]interface{})
-	//sendData := make(map[string]interface{})
-
-	redirectUrl := utils.TemplateRedirectUrl + strconv.Itoa(reportId)
-	keyword1 := "弘则日度点评"
-	first := "Hi,最新一期日度点评已上线,欢迎查看"
-	if CheckTwoWeekOrMonthReport(report.ClassifyIdFirst, report.ClassifyNameFirst) {
-		keyword1 = fmt.Sprintf("弘则%s", report.ClassifyNameSecond)
-		first = fmt.Sprintf("Hi,最新一期%s已上线,欢迎查看", report.ClassifyNameFirst)
-	}
-	keyword2 := report.Title
-	//keyword3 := report.PublishTime.Format(utils.FormatDateTime)
-	keyword3 := report.PublishTime
-	keyword4 := report.Abstract
-
-	//sendData["first"] = map[string]interface{}{"value": first, "color": "#173177"}
-	//sendData["keyword1"] = map[string]interface{}{"value": keyword1, "color": "#173177"}
-	//sendData["keyword2"] = map[string]interface{}{"value": keyword2, "color": "#173177"}
-	//sendData["keyword3"] = map[string]interface{}{"value": keyword3, "color": "#173177"}
-	//sendData["keyword4"] = map[string]interface{}{"value": keyword4, "color": "#173177"}
-	//
-	//sendMap["template_id"] = utils.TemplateIdByProduct
-	//sendMap["url"] = redirectUrl
-	//sendMap["data"] = sendData
-	//sendTemplateMsg(sendUrl, sendMap, openIdList, strconv.Itoa(reportId), utils.TEMPLATE_MSG_REPORT)
-	//}
-	sendInfo := new(SendWxTemplate)
-	sendInfo.First = first
-	sendInfo.Keyword1 = keyword1
-	sendInfo.Keyword2 = keyword2
-	sendInfo.Keyword3 = keyword3
-	sendInfo.Keyword4 = keyword4
-	sendInfo.TemplateId = utils.TemplateIdByProduct
-	sendInfo.RedirectUrl = redirectUrl
-	sendInfo.RedirectTarget = 1
-	sendInfo.Resource = strconv.Itoa(reportId)
-	sendInfo.SendType = utils.TEMPLATE_MSG_REPORT
-	sendInfo.OpenIdArr = openIdArr
-	err = SendTemplateMsg(sendInfo)
-	return
-}
-
-func sendTemplateMsg(sendUrl string, sendMap map[string]interface{}, items []*models.OpenIdList, resource string, sendType int) (err error) {
-	for _, v := range items {
-		sendMap["touser"] = v.OpenId
-		data, err := json.Marshal(sendMap)
-		if err != nil {
-			fmt.Println("SendTemplateMsgOne Marshal Err:", err.Error())
-			utils.FileLog.Info(fmt.Sprintf("SendTemplateMsgOne Marshal Err:%s", err.Error()))
-			return err
-		}
-		err = toSendTemplateMsg(sendUrl, data, resource, sendType, v)
-		if err != nil {
-			fmt.Println("send err:", err.Error())
-			utils.FileLog.Info(fmt.Sprintf("ToSendTemplateMsg Err:%s", err.Error()))
-		}
-	}
-	return
-}
-
-func toSendTemplateMsg(sendUrl string, data []byte, resource string, sendType int, dataItem *models.OpenIdList) (err error) {
-	var msg string
-	utils.FileLog.Info("Send:" + string(data))
-	client := http.Client{}
-	resp, err := client.Post(sendUrl, "application/json", bytes.NewBuffer(data))
-	if err != nil {
-		return
-	}
-	defer resp.Body.Close()
-
-	body, _ := ioutil.ReadAll(resp.Body)
-	utils.FileLog.Info("SendResult:" + string(body))
-	var templateResponse SendTemplateResponse
-	err = json.Unmarshal(body, &templateResponse)
-	if err != nil {
-		utils.FileLog.Info(fmt.Sprintf("SendResult Unmarshal Err:%s", err.Error()))
-		return err
-	}
-	//新增模板消息推送记录
-	{
-		tr := new(models.UserTemplateRecord)
-		tr.UserId = dataItem.UserId
-		tr.OpenId = dataItem.OpenId
-		tr.Resource = resource
-		tr.SendData = string(data)
-		tr.Result = string(body)
-		tr.CreateDate = time.Now().Format(utils.FormatDate)
-		tr.CreateTime = time.Now().Format(utils.FormatDateTime)
-		if templateResponse.Errcode == 0 {
-			tr.SendStatus = 1
-		} else {
-			tr.SendStatus = 0
-		}
-		tr.SendType = sendType
-		go func() {
-			err = models.AddUserTemplateRecord(tr)
-			if err != nil {
-				utils.FileLog.Info(fmt.Sprintf("AddUserTemplateRecord Err:%s", err.Error()))
-			}
-		}()
-	}
-	accessToken, err := models.GetWxAccessToken()
-	if err != nil {
-		msg = "GetWxAccessToken Err:" + err.Error()
-		utils.FileLog.Info("获取Token失败,msg:" + msg)
-		return
-	}
-	if accessToken == "" {
-		msg = "accessToken is empty"
-		utils.FileLog.Info("accessToken为空,msg:" + msg)
-		return
-	}
-	//模板消息发送超过当日10万次限制错误处理
-	if templateResponse.Errcode == 45009 {
-		key := "CACHE_SendTemplateMsg_ERR"
-		isExist := utils.Rc.IsExist(key)
-		if isExist == true {
-			return
-		} else {
-			result, _ := json.Marshal(templateResponse)
-			if err != nil {
-				utils.FileLog.Info(fmt.Sprintf("templateResponse Marshal Err:%s", err.Error()))
-				return err
-			}
-			//发送邮件提醒异常
-			go alarm_msg.SendAlarmMsg("模板消息发送超过当日10万次限制,templateResponse = "+string(result), 3)
-			//go utils.SendEmail("异常提醒:", "模板消息发送超过当日10万次限制,templateResponse = "+string(result), utils.EmailSendToUsers)
-			//设置3分钟缓存,不允许重复添加
-			utils.Rc.SetNX(key, 1, 6*time.Minute)
-		}
-		//清空发送次数
-		sendUrl := fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/clear_quota?access_token=%s", accessToken)
-		clearData := make(map[string]interface{})
-		clearData["appid"] = utils.WxAppId
-		clearJson, _ := json.Marshal(clearData)
-		utils.FileLog.Info("clear_quota data:" + string(clearJson))
-		resp, err := client.Post(sendUrl, "application/json", bytes.NewBuffer(clearJson))
-		if err != nil {
-			return err
-		}
-		defer resp.Body.Close()
-		clearBody, err := ioutil.ReadAll(resp.Body)
-		utils.FileLog.Info("clear_quota result:" + string(clearBody))
-		var clearQuotaResponse ClearQuotaResponse
-		err = json.Unmarshal(clearBody, &clearQuotaResponse)
-		if err != nil {
-			utils.FileLog.Info(fmt.Sprintf("clearQuotaResponse Unmarshal Err:%s", err.Error()))
-			return err
-		}
-		if clearQuotaResponse.Errcode == 0 {
-			//发送邮件解决异常
-			go alarm_msg.SendAlarmMsg("异常已解决,自动清理限制接口,调用成功", 3)
-			//go utils.SendEmail("异常已解决:", "自动清理限制接口,调用成功", utils.EmailSendToUsers)
-			//重新推送一次
-			toSendTemplateMsg(sendUrl, data, resource, sendType, dataItem)
-		}
-	}
-	return
-}
-
 type SendTemplateResponse struct {
 	Errcode int    `json:"errcode"`
 	Errmsg  string `json:"errmsg"`
@@ -229,407 +24,6 @@ type ClearQuotaResponse struct {
 	Errmsg  string `json:"errmsg"`
 }
 
-// SendCompanyApplyWxTemplateMsg  微信审批通知模板消息
-func SendCompanyApplyWxTemplateMsg(mobile, redirectUrl, wxAppPath string, wxMsgMap map[int]string) (err error) {
-	var msg string
-	defer func() {
-		if err != nil {
-			go alarm_msg.SendAlarmMsg("发送模版消息失败,Err:"+err.Error()+";msg:"+msg, 3)
-			//go utils.SendEmail("发送模版消息失败"+time.Now().Format("2006-01-02 15:04:05"), msg+";Err:"+err.Error(), utils.EmailSendToUsers)
-			utils.FileLog.Info(fmt.Sprintf("发送模版消息失败,Err:%s,%s", err.Error(), msg))
-		}
-		if msg != "" {
-			utils.FileLog.Info("发送模版消息失败,msg:%s", msg)
-		}
-	}()
-	utils.FileLog.Info("%s", "services SendMsg")
-
-	//accessToken, err := models.GetWxAccessToken()
-	//if err != nil {
-	//	msg = "GetWxAccessToken Err:" + err.Error()
-	//	return
-	//}
-	//if accessToken == "" {
-	//	msg = "accessToken is empty"
-	//	return
-	//}
-	utils.FileLog.Info("mobile:%s", mobile)
-	openIdList, err := system.GetAdminOpenIdListByMobile(mobile)
-	if err != nil {
-		msg = "get openIdList err:" + err.Error()
-		return
-	}
-	utils.FileLog.Info("openIdListCount:%s", len(openIdList))
-	//fmt.Println("openIdListCount:", len(openIdList))
-	if len(openIdList) > 0 && utils.TemplateIdByCompanyApply != "" {
-		utils.FileLog.Info("start send")
-		//sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
-		fmt.Println("send start")
-		utils.FileLog.Info("send start")
-		//sendMap := make(map[string]interface{})
-		//sendData := make(map[string]interface{})
-
-		var first, keyword1, keyword2, keyword3, remark string
-		if tmpStr, ok := wxMsgMap[0]; ok {
-			first = tmpStr
-		} else {
-			first = "Hi,有新的订单需要审批"
-		}
-		if tmpStr, ok := wxMsgMap[1]; ok {
-			keyword1 = tmpStr
-		}
-		if tmpStr, ok := wxMsgMap[2]; ok {
-			keyword2 = tmpStr
-		}
-		if tmpStr, ok := wxMsgMap[3]; ok {
-			keyword3 = tmpStr
-		}
-		if tmpStr, ok := wxMsgMap[4]; ok {
-			remark = tmpStr
-		}
-
-		//sendData["first"] = map[string]interface{}{"value": first, "color": "#173177"}
-		//sendData["keyword1"] = map[string]interface{}{"value": keyword1, "color": "#173177"}
-		//sendData["keyword2"] = map[string]interface{}{"value": keyword2, "color": "#173177"}
-		//sendData["keyword3"] = map[string]interface{}{"value": keyword3, "color": "#173177"}
-		//sendData["remark"] = map[string]interface{}{"value": remark, "color": "#173177"}
-		//
-		//sendMap["template_id"] = utils.TemplateIdByCompanyApply
-		//sendMap["url"] = redirectUrl //跳转地址
-		//sendMap["data"] = sendData
-
-		//if wxAppPath != "" {
-		//	sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxCrmAppId, "pagepath": wxAppPath}
-		//}
-		//sendTemplateMsg(sendUrl, sendMap, openIdList, mobile, utils.TEMPLATE_MSG_APPLY)
-
-		openIdArr := make([]string, len(openIdList))
-		for i, v := range openIdList {
-			openIdArr[i] = v.OpenId
-		}
-
-		sendInfo := new(SendWxTemplate)
-		sendInfo.WxAppId = utils.AdminWxAppId
-		sendInfo.First = first
-		sendInfo.Keyword1 = keyword1
-		sendInfo.Keyword2 = keyword2
-		sendInfo.Keyword3 = keyword3
-		sendInfo.Remark = remark
-		sendInfo.TemplateId = utils.TemplateIdByCompanyApply
-		sendInfo.RedirectUrl = redirectUrl
-		sendInfo.RedirectTarget = 2
-		sendInfo.Resource = mobile
-		sendInfo.SendType = utils.TEMPLATE_MSG_APPLY
-		sendInfo.OpenIdArr = openIdArr
-		if wxAppPath != "" {
-			sendInfo.RedirectUrl = wxAppPath
-		}
-		err = SendTemplateMsg(sendInfo)
-	}
-	utils.FileLog.Info("send end")
-	return
-}
-
-// SendDayReportWxTemplateMsg 发送日报(周报、双周报、月报)模板消息
-func SendDayReportWxTemplateMsg(researchReport *models.ResearchReport) (err error) {
-	var msg string
-	defer func() {
-		if err != nil {
-			go alarm_msg.SendAlarmMsg("发送日报(周报)模版消息失败,Err:"+err.Error()+";msg:"+msg, 3)
-			//go utils.SendEmail("发送日报(周报)模版消息失败"+time.Now().Format("2006-01-02 15:04:05"), msg+";Err:"+err.Error(), utils.EmailSendToUsers)
-			utils.FileLog.Info(fmt.Sprintf("发送日报(周报)模版消息失败,Err:%s,%s", err.Error(), msg))
-		}
-		if msg != "" {
-			utils.FileLog.Info("发送日报(周报)模版消息失败,msg:%s", msg)
-		}
-	}()
-
-	utils.FileLog.Info("%s", "services SendMsg")
-	resource := strconv.Itoa(researchReport.ResearchReportId)
-	//跳转地址
-	redirectUrl := fmt.Sprint(utils.DayReportTemplateRedirectUrl, researchReport.ResearchReportId, "/", researchReport.Type)
-	first := "Hi,最新一期晨报已上线,欢迎查看"
-	keyword1 := "弘则晨报"
-	keyword2 := researchReport.ResearchReportName
-	keyword3 := researchReport.ResearchReportDate.Format(utils.FormatDate)
-	keyword4 := researchReport.ResearchReportName
-	switch researchReport.Type {
-	case "day":
-		first = "Hi,最新一期晨报已上线,欢迎查看"
-		keyword1 = "弘则晨报"
-	case "week":
-		first = "Hi,最新一期周报已上线,欢迎查看"
-		keyword1 = "弘则周报"
-	case "two_week":
-		first = "Hi,最新一期双周报已上线,欢迎查看"
-		keyword1 = "弘则双周报"
-	case "month":
-		first = "Hi,最新一期月报已上线,欢迎查看"
-		keyword1 = "弘则月报"
-
-		// 模板消息的名称替换
-		tmpReport, _ := models.GetReportByOldReportId(researchReport.ResearchReportId)
-		if tmpReport != nil {
-			keyword1 = fmt.Sprintf("弘则%s", tmpReport.ClassifyNameSecond)
-		}
-	case "other":
-		first = "Hi,最新一期点评已上线,欢迎查看"
-		keyword1 = "数据点评"
-	}
-
-	//accessToken, err := models.GetWxAccessToken()
-	//if err != nil {
-	//	msg = "GetWxAccessToken Err:" + err.Error()
-	//	return
-	//}
-	//fmt.Println(accessToken)
-	//if accessToken == "" {
-	//	msg = "accessToken is empty"
-	//	return
-	//}
-	openIdList, err := models.GetOpenIdList()
-	if err != nil {
-		msg = "get openIdList err:" + err.Error()
-		return
-	}
-	fmt.Println("openIdListCount:", len(openIdList))
-	//sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
-	fmt.Println("send start")
-	utils.FileLog.Info("send start")
-	//if report.MsgIsSend == 0 {
-	//sendMap := make(map[string]interface{})
-	//sendData := make(map[string]interface{})
-
-	//sendData["first"] = map[string]interface{}{"value": first, "color": "#173177"}
-	//sendData["keyword1"] = map[string]interface{}{"value": keyword1, "color": "#173177"}
-	//sendData["keyword2"] = map[string]interface{}{"value": keyword2, "color": "#173177"}
-	//sendData["keyword3"] = map[string]interface{}{"value": keyword3, "color": "#173177"}
-	//sendData["keyword4"] = map[string]interface{}{"value": keyword4, "color": "#173177"}
-
-	//sendMap["template_id"] = utils.TemplateIdByProduct
-	//sendMap["url"] = redirectUrl
-	//sendMap["data"] = sendData
-	//sendTemplateMsg(sendUrl, sendMap, openIdList, resource, utils.TEMPLATE_MSG_CYGX_DAY_REPORT)
-	//}
-
-	openIdArr := make([]string, len(openIdList))
-	for i, v := range openIdList {
-		openIdArr[i] = v.OpenId
-	}
-
-	sendInfo := new(SendWxTemplate)
-	sendInfo.First = first
-	sendInfo.Keyword1 = keyword1
-	sendInfo.Keyword2 = keyword2
-	sendInfo.Keyword3 = keyword3
-	sendInfo.Keyword4 = keyword4
-	sendInfo.TemplateId = utils.TemplateIdByProduct
-	sendInfo.RedirectUrl = redirectUrl
-	sendInfo.RedirectTarget = 1
-	sendInfo.Resource = resource
-	sendInfo.SendType = utils.TEMPLATE_MSG_CYGX_DAY_REPORT
-	sendInfo.OpenIdArr = openIdArr
-
-	err = SendTemplateMsg(sendInfo)
-
-	fmt.Println("send end")
-	utils.FileLog.Info("send end")
-	return
-}
-
-// 路演->研究员收到待处理的申请
-func SendWxMsgWithRoadshowPending(first, keyword1, keyword2, keyword3, keyword4, remark, wxAppPath string, openIdList []*system.OpenIdList) (err error) {
-	var msg string
-	defer func() {
-		if err != nil {
-			go alarm_msg.SendAlarmMsg("发送模版消息失败,Err:"+err.Error()+";msg:"+msg, 3)
-			//go utils.SendEmail("发送模版消息失败"+"【"+utils.APPNAME+"】"+time.Now().Format("2006-01-02 15:04:05"), msg+";Err:"+err.Error(), utils.EmailSendToUsers)
-			utils.FileLog.Info(fmt.Sprintf("发送模版消息失败,Err:%s", err.Error()))
-		}
-	}()
-	utils.FileLog.Info("%s", "services SendMsg")
-	//accessToken, err := models.GetWxAccessToken()
-	//if err != nil {
-	//	msg = "GetWxAccessToken Err:" + err.Error()
-	//	return
-	//}
-	//if accessToken == "" {
-	//	msg = "accessToken is empty"
-	//	return
-	//}
-
-	//sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
-	//sendMap := make(map[string]interface{})
-	//sendData := make(map[string]interface{})
-
-	//sendMap["template_id"] = utils.WxMsgTemplateIdWithRoadshowPending
-	//sendData["first"] = map[string]interface{}{"value": first, "color": "#173177"}
-	//sendData["keyword1"] = map[string]interface{}{"value": keyword1, "color": "#173177"}
-	//sendData["keyword2"] = map[string]interface{}{"value": keyword2, "color": "#173177"}
-	//sendData["keyword3"] = map[string]interface{}{"value": keyword3, "color": "#173177"}
-	//sendData["keyword4"] = map[string]interface{}{"value": keyword4, "color": "#173177"}
-	//sendData["remark"] = map[string]interface{}{"value": remark, "color": "#173177"}
-
-	//if wxAppPath != "" && utils.RunMode == "release" {
-	//	sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxCrmAppId, "pagepath": wxAppPath}
-	//}
-	//sendMap["data"] = sendData
-	//sendTemplateMsg(sendUrl, sendMap, openIdList, wxAppPath, utils.TEMPLATE_MSG_ACTIVITY_APPOINTMENT)
-
-	openIdArr := make([]string, len(openIdList))
-	for i, v := range openIdList {
-		openIdArr[i] = v.OpenId
-	}
-
-	sendInfo := new(SendWxTemplate)
-	sendInfo.WxAppId = utils.AdminWxAppId
-	sendInfo.First = first
-	sendInfo.Keyword1 = keyword1
-	sendInfo.Keyword2 = keyword2
-	sendInfo.Keyword3 = keyword3
-	sendInfo.Keyword4 = keyword4
-	sendInfo.Remark = remark
-	sendInfo.TemplateId = utils.WxMsgTemplateIdWithRoadshowPending
-	if wxAppPath != "" && utils.RunMode == "release" {
-		sendInfo.RedirectUrl = wxAppPath
-	}
-	sendInfo.RedirectTarget = 2
-	sendInfo.Resource = wxAppPath
-	sendInfo.SendType = utils.TEMPLATE_MSG_ACTIVITY_APPOINTMENT
-	sendInfo.OpenIdArr = openIdArr
-
-	err = SendTemplateMsg(sendInfo)
-
-	return
-}
-
-// 路演->销售收到处理结果
-func SendWxMsgWithRoadshowDetailResult(first, keyword1, keyword2, keyword3, keyword4, keyword5, remark, wxAppPath string, openIdList []*system.OpenIdList) (err error) {
-	var msg string
-	defer func() {
-		if err != nil {
-			go alarm_msg.SendAlarmMsg("发送模版消息失败,Err:"+err.Error()+";msg:"+msg, 3)
-			//go utils.SendEmail("发送模版消息失败"+"【"+utils.APPNAME+"】"+time.Now().Format("2006-01-02 15:04:05"), msg+";Err:"+err.Error(), utils.EmailSendToUsers)
-			utils.FileLog.Info(fmt.Sprintf("发送模版消息失败,Err:%s", err.Error()))
-		}
-	}()
-	utils.FileLog.Info("%s", "services SendMsg")
-	//accessToken, err := models.GetWxAccessToken()
-	//if err != nil {
-	//	msg = "GetWxAccessToken Err:" + err.Error()
-	//	return
-	//}
-	//if accessToken == "" {
-	//	msg = "accessToken is empty"
-	//	return
-	//}
-
-	//sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
-	//sendMap := make(map[string]interface{})
-	//sendData := make(map[string]interface{})
-
-	//sendMap["template_id"] = utils.WxMsgTemplateIdWithRoadshowDetailResult
-	//sendData["first"] = map[string]interface{}{"value": first, "color": "#173177"}
-	//sendData["keyword1"] = map[string]interface{}{"value": keyword1, "color": "#173177"}
-	//sendData["keyword2"] = map[string]interface{}{"value": keyword2, "color": "#173177"}
-	//sendData["remark"] = map[string]interface{}{"value": remark, "color": "#173177"}
-	//
-	//if wxAppPath != "" && utils.RunMode == "release" {
-	//	sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxCrmAppId, "pagepath": wxAppPath}
-	//}
-	//sendMap["data"] = sendData
-	//sendTemplateMsg(sendUrl, sendMap, openIdList, wxAppPath, utils.TEMPLATE_MSG_ACTIVITY_APPOINTMENT)
-
-	openIdArr := make([]string, len(openIdList))
-	for i, v := range openIdList {
-		openIdArr[i] = v.OpenId
-	}
-
-	sendInfo := new(SendWxTemplate)
-	sendInfo.WxAppId = utils.AdminWxAppId
-	sendInfo.First = first
-	sendInfo.Keyword1 = keyword1
-	sendInfo.Keyword2 = keyword2
-	sendInfo.Keyword3 = keyword3
-	sendInfo.Keyword4 = keyword4
-	sendInfo.Keyword5 = keyword5
-	sendInfo.Remark = remark
-	sendInfo.TemplateId = utils.WxMsgTemplateIdWithRoadshowDetailResult
-	if wxAppPath != "" && utils.RunMode == "release" {
-		sendInfo.RedirectUrl = wxAppPath
-	}
-	sendInfo.RedirectTarget = 2
-	sendInfo.Resource = wxAppPath
-	sendInfo.SendType = utils.TEMPLATE_MSG_ACTIVITY_APPOINTMENT
-	sendInfo.OpenIdArr = openIdArr
-
-	err = SendTemplateMsg(sendInfo)
-
-	return
-}
-
-// 路演->研究员收到活动删除通知
-func SendWxMsgWithRoadshowDeleteNotice(first, keyword1, keyword2, remark, wxAppPath string, openIdList []*system.OpenIdList) (err error) {
-	var msg string
-	defer func() {
-		if err != nil {
-			go alarm_msg.SendAlarmMsg("发送模版消息失败,Err:"+err.Error()+";msg:"+msg, 3)
-			//go utils.SendEmail("发送模版消息失败"+"【"+utils.APPNAME+"】"+time.Now().Format("2006-01-02 15:04:05"), msg+";Err:"+err.Error(), utils.EmailSendToUsers)
-			utils.FileLog.Info(fmt.Sprintf("发送模版消息失败,Err:%s", err.Error()))
-		}
-	}()
-	utils.FileLog.Info("%s", "services SendMsg")
-	//accessToken, err := models.GetWxAccessToken()
-	//if err != nil {
-	//	msg = "GetWxAccessToken Err:" + err.Error()
-	//	return
-	//}
-	//if accessToken == "" {
-	//	msg = "accessToken is empty"
-	//	return
-	//}
-
-	//sendUrl := "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken
-	//sendMap := make(map[string]interface{})
-	//sendData := make(map[string]interface{})
-
-	//sendMap["template_id"] = utils.WxMsgTemplateIdWithRoadshowDeleteNotice
-	//sendData["first"] = map[string]interface{}{"value": first, "color": "#173177"}
-	//sendData["keyword1"] = map[string]interface{}{"value": keyword1, "color": "#173177"}
-	//sendData["keyword2"] = map[string]interface{}{"value": keyword2, "color": "#173177"}
-	//sendData["remark"] = map[string]interface{}{"value": remark, "color": "#173177"}
-
-	//if wxAppPath != "" && utils.RunMode == "release" {
-	//	sendMap["miniprogram"] = map[string]interface{}{"appid": utils.WxCrmAppId, "pagepath": wxAppPath}
-	//}
-	//sendMap["data"] = sendData
-	//sendTemplateMsg(sendUrl, sendMap, openIdList, wxAppPath, utils.TEMPLATE_MSG_ACTIVITY_APPOINTMENT)
-
-	openIdArr := make([]string, len(openIdList))
-	for i, v := range openIdList {
-		openIdArr[i] = v.OpenId
-	}
-
-	sendInfo := new(SendWxTemplate)
-	sendInfo.WxAppId = utils.AdminWxAppId
-	sendInfo.First = first
-	sendInfo.Keyword1 = keyword1
-	sendInfo.Keyword2 = keyword2
-	sendInfo.Remark = remark
-	sendInfo.TemplateId = utils.WxMsgTemplateIdWithRoadshowDeleteNotice
-	if wxAppPath != "" && utils.RunMode == "release" {
-		sendInfo.RedirectUrl = wxAppPath
-	}
-	sendInfo.RedirectTarget = 2
-	sendInfo.Resource = wxAppPath
-	sendInfo.SendType = utils.TEMPLATE_MSG_ACTIVITY_APPOINTMENT
-	sendInfo.OpenIdArr = openIdArr
-
-	err = SendTemplateMsg(sendInfo)
-
-	return
-}
-
 // SendMiniProgramReportWxMsg 推送报告微信模板消息-小程序链接
 func SendMiniProgramReportWxMsg(reportId int) (err error) {
 	var msg string
@@ -788,7 +182,7 @@ type SendWxTemplate struct {
 	OpenIdArr      []string `description:"消息接收者openid"`
 }
 
-// 推送模板消息
+// SendTemplateMsg 推送模板消息
 func SendTemplateMsg(sendInfo *SendWxTemplate) (err error) {
 	postData, err := json.Marshal(sendInfo)
 	if err != nil {
@@ -826,21 +220,3 @@ func SendTemplateMsg(sendInfo *SendWxTemplate) (err error) {
 	}
 	return
 }
-
-func PublicsendTemplateMsg(sendUrl string, sendMap map[string]interface{}, items []*models.OpenIdList, resource string, sendType int) (err error) {
-	for _, v := range items {
-		sendMap["touser"] = v.OpenId
-		data, err := json.Marshal(sendMap)
-		if err != nil {
-			fmt.Println("SendTemplateMsgOne Marshal Err:", err.Error())
-			utils.FileLog.Info(fmt.Sprintf("SendTemplateMsgOne Marshal Err:%s", err.Error()))
-			return err
-		}
-		err = toSendTemplateMsg(sendUrl, data, resource, sendType, v)
-		if err != nil {
-			fmt.Println("send err:", err.Error())
-			utils.FileLog.Info(fmt.Sprintf("ToSendTemplateMsg Err:%s", err.Error()))
-		}
-	}
-	return
-}

+ 0 - 8
utils/common.go

@@ -214,14 +214,6 @@ func StrListToString(strList []string) (str string) {
 	return ""
 }
 
-// Token
-func GetToken() string {
-	randStr := GetRandString(64)
-	token := MD5(randStr + Md5Key)
-	tokenLen := 64 - len(token)
-	return strings.ToUpper(token + GetRandString(tokenLen))
-}
-
 // 数据没有记录
 func ErrNoRow() string {
 	return "<QuerySeter> no row found"

+ 120 - 340
utils/config.go

@@ -21,8 +21,38 @@ var (
 	Re          error        //redis错误
 )
 
+var SystemType string // 系统类型; hz:弘则;trial:试用平台;custom:客户
+
+// 基础配置
 var (
-	STATIC_DIR string
+	STATIC_DIR       string
+	DesKey           string // 接口返回加密KEY
+	APPNAME          string //项目中文名称
+	EmailSendToUsers string // 邮件提醒人员
+)
+
+// 公共api内部服务调用
+var (
+	// EDB_LIB_URL 公共指标库
+	EDB_LIB_URL string
+
+	// SendWxTemplateMsgUrl 模板消息推送
+	SendWxTemplateMsgUrl string
+
+	// HandleVideoDecibelUrl 处理音频分贝的url
+	HandleVideoDecibelUrl string
+
+	// Ppt2ImageUrl ppt转图片服务的地址
+	Ppt2ImageUrl string
+
+	// HongzeOpenApiHost 开放openapi的地址
+	HongzeOpenApiHost string
+
+	// EnglishShareUrl 英文研报群发邮件分享地址
+	EnglishShareUrl string
+
+	// EnPolicyReportUrl 英文策略报告
+	EnPolicyReportUrl string
 )
 
 // 微信配置信息
@@ -32,122 +62,47 @@ var (
 	WxAppSecret         string
 	TemplateIdByProduct string //产品运行报告通知-模板ID
 
-	TemplateRedirectUrl                      string //模板消息跳转地址
-	DayReportTemplateRedirectUrl             string //模板消息跳转地址(晨报、周报)
-	TemplateIdByCompanyApply                 string //客户申请单审批通知-模板ID
-	TemplateCompanyApplyRedirectUrl          string //审批单模板消息跳转地址
-	TemplateIdByCompanyReceive               string //销售跨部门领取客户通知-模板ID
-	TemplateIdByCompanyReceivePermission     string //销售"添加客户/领取客户"权限变更通知
-	WxMsgTemplateIdActivityChangeApply       string //查研观向活动变更通知-模板ID
-	WxMsgTemplateIdActivityChangeApplyXzs    string //查研观向活动变更通知-模板ID(小助手)
-	TemplateIdByProductXzs                   string //产品运行报告通知-模板ID(小助手)
-	WxMsgTemplateIdActivityApplyXzs          string //查研观向销售帮对应客户报名通知-模板ID
-	WxMsgTemplateIdCompanyApprovalMessageRai string //权益销售签约成功通知查研观向小助手模版消息
-	WxCygxAppId                              string //查研观向小程序APPID
-	WxCygxAppSecret                          string //查研观向小程序 秘钥
-	WxMsgTemplateIdAskByUser                 string //查研观向用户提问新消息推送ID
-	WxCrmAppId                               string //随手办公小程序APPID
-	WxPublicIdXzs                            string //查研观向小助手公众号
-	WxPublicSecretXzs                        string //查研观向小助手公众号
-	WxYbAppId                                string //弘则研报小程序APPID
-	YiDongHuaWeiYunUrl                       string //易董 华为云请求域名
-	YiDongZhengTongYunUrl                    string //易董 证通云请求域名
-	YiDongZhengTongYunClientId               string //易董 证通云client_id
-	YiDongZhengTongYunClientSecret           string //易董 证通云client_secret
-	WxMsgTemplateIdWithRoadshowPending       string //路演->研究员收到待处理的申请
-	WxMsgTemplateIdWithRoadshowDetailResult  string //路演->销售收到处理结果
-	WxMsgTemplateIdWithRoadshowDeleteNotice  string //路演->研究员收到活动删除通知
-
-	WxMsgTemplateIdWithYbCommunityQuestion string // 研报小程序->问答社区回复通知
-	WxMsgTemplateIdWithSealApplyFinished   string // 用印申请-已签回通知
-
-	//内部员工公众号(弘则部门)
-	AdminWxAppId            string
-	AdminWxAppSecret        string
-	UserTemplateIdByProduct string //客户产品运行报告通知-模板ID
-
+	WxYbAppId string // 研报小程序appid
 )
 
+// ES索引配置
 var (
-	THS_SendUrl string //同花顺地址url
-	THS_PubKey  string //同花顺公钥
-)
-
-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语义分析文档索引名
 )
 
+// 阿里云配置
 var (
-	Bucketname       string = "hongze"
+	Bucketname       string
 	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"
-)
-
-// LibreOfficePath LibreOfficePath的地址
-var LibreOfficePath string
-
-// 经济数据库
-var (
-	EDB_LIB_URL string
-)
-
-// 上海crm开放api配置
-var (
-	CRM_OPEN_API_URL        string
-	CRM_OPEN_API_APP_KEY    string
-	CRM_OPEN_API_APP_SECRET string
-)
-
-// 全时会议账号信息
-var (
-	QsAppID     string
-	QsSecretKey string
-	QsUserId    int64
-	QsUserName  string
+	Imghost          string
+	UploadDir        string
+	Upload_Audio_Dir string
+	AccessKeyId      string
+	AccessKeySecret  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 //发言人
 )
 
-// 公共api内部服务调用
-var (
-	// SendWxTemplateMsgUrl 模板消息推送
-	SendWxTemplateMsgUrl string
-	// HandleVideoDecibelUrl 处理音频分贝的url
-	HandleVideoDecibelUrl string
-)
-
-// ppt转图片服务的地址
-var Ppt2ImageUrl string
-
-// 开放openapi的地址
-var HongzeOpenApiHost string
-
-var EnglishShareUrl string //英文研报群发邮件分享地址
-
-var EnPolicyReportUrl string
-
-// MayCurBaseUrl 每刻报销地址
-var MayCurBaseUrl string
+// LibreOfficePath LibreOfficePath的地址
+var LibreOfficePath string
 
 func init() {
 	tmpRunMode, err := web.AppConfig.String("run_mode")
@@ -194,268 +149,93 @@ func init() {
 		fmt.Println(Re)
 		panic(any(Re))
 	}
-	WxCygxAppId = "wxcc32b61f96720d2f"                               //查研观向小程序
-	WxCygxAppSecret = "06894933fafb24dafead7eaae09c08e0"             //查研观向小程序
-	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"
-		HandleVideoDecibelUrl = "http://172.19.173.232:8086/v1/report/handle_video_decibel"
-		HongzeOpenApiHost = "http://127.0.0.1:8609"
-		EnglishShareUrl = "https://ybpcen.hzinsights.com"
-		EnPolicyReportUrl = "https://en.hzinsights.com/v2api/"
-
-		MayCurBaseUrl = "https://ng.maycur.com"
-	} 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"
-		HandleVideoDecibelUrl = "http://127.0.0.1:8086/v1/report/handle_video_decibel"
-		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/"
-
-		//MayCurBaseUrl = "https://ng-uat.maycur.com"
-		MayCurBaseUrl = "https://ng.maycur.com"
+
+	// 系统类型
+	systemType, err := web.AppConfig.String("system_type")
+	if err != nil {
+		panic(any("配置文件读取system_type错误 " + err.Error()))
 	}
-	tmpLibreOfficePath, err := web.AppConfig.String("libreOfficePath")
+	SystemType = systemType
+
+	// 项目中文名称
+	appNameCn, err := web.AppConfig.String("app_name_cn")
 	if err != nil {
-		panic(any("配置文件读取libreOfficePath错误 " + err.Error()))
+		panic(any("配置文件读取app_name_cn错误 " + err.Error()))
 	}
-	LibreOfficePath = tmpLibreOfficePath
+	APPNAME = appNameCn
 
-	//上海crm开放api配置
-	CrmOpenApiConfig()
+	// 初始化内部服务配置
 
-	//初始化全时开放api配置
-	initQsOpenApiConfig()
+	// 接口返回加密KEY
+	DesKey = config["des_key"]
+	// 邮件提醒人员
+	EmailSendToUsers = config["email_send_to_users"]
 
-	//进门财经开放api配置
-	ComeinOpenApiConfig()
+	// ppt 转图片服务地址
+	Ppt2ImageUrl = config["ppt2_image_url"]
 
-	//易董开放api配置
-	YiDongApiConfig()
+	// 静态文件目录
+	STATIC_DIR = config["static_dir"]
 
-	// 初始化内部服务配置
-	initSystemServer()
-}
+	EDB_LIB_URL = config["edb_lib_url"]
 
-// 测试环境模板消息
-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 = "D6AFTJ7CbDDFBYg1R-HRir5bBXkIqGrwUtb2bjN-Wr4" //路演->销售收到处理结果
-		WxMsgTemplateIdWithRoadshowDeleteNotice = "rciDm9ThigRBGi1SZ4TFd74XA4aoAxSz_ugdv_tZ450" //路演->研究员收到活动删除通知
-
-		// 研报小程序
-		WxMsgTemplateIdWithYbCommunityQuestion = "rciDm9ThigRBGi1SZ4TFd74XA4aoAxSz_ugdv_tZ450" // 研报小程序->问答社区回复通知
-		WxMsgTemplateIdWithSealApplyFinished = "rciDm9ThigRBGi1SZ4TFd74XA4aoAxSz_ugdv_tZ450"   // 用印申请-已签回通知
-		UserTemplateIdByProduct = "-YjuPOB7Fqd-S3ilabYa6wvjDY9aXmeEfPN6DCiy-EY"
-	}
+	// 发送微信模板消息地址
+	SendWxTemplateMsgUrl = config["send_wx_template_msg_url"]
 
-	//查研观向小助手
-	{
-		//原有的模板ID
-		WxPublicIdXzs = "wx9b5d7291e581233a"                                                     //查研观向小助手
-		WxPublicSecretXzs = "f4d52e34021eee262dce9682b31f8861"                                   //查研观向小助手
-		WxMsgTemplateIdActivityChangeApplyXzs = "CB7bOl7f3viMG4s1uhRo7WM0Jbx3WvodKuIZ8A_z8fM"    //查研观向活动变更通知-模板ID(小助手)
-		TemplateIdByProductXzs = "-YjuPOB7Fqd-S3ilabYa6wvjDY9aXmeEfPN6DCiy-EY"                   //产品运行报告通知-模板ID(小助手)
-		WxMsgTemplateIdActivityApplyXzs = "U3su--7d6xsCDcP6Tya0N0wWpKn_uI0zO1cutRK52cc"          //查研观向销售帮对应客户报名通知-模板ID
-		WxMsgTemplateIdCompanyApprovalMessageRai = "RcV2uM5nFSiUtOHsq4SdYz2Fhk-OVfg5rutWz2IsSJQ" //权益销售签约成功通知查研观向小助手模版消息-模板ID
-	}
+	// 语音分贝处理的地址
+	HandleVideoDecibelUrl = config["handle_video_decibel_url"]
 
-}
+	// 弘则open api的地址
+	HongzeOpenApiHost = config["hongze_open_api_host"]
 
-// 生产环境模板消息
-func WxRelease() {
-	WxAppId = "wx4a844c734d8c8e56"
-	WxAppSecret = "26c586e7ccb3c575433f0f37797b3eeb"
-	WxId = "gh_b67e0049fb8c"
-	//模板消息
-	{
-		TemplateIdByProduct = "Cp2wF8gvBtxyWV4DeYuI172oqwyYXVRSm3AyJO42d84"
-		TemplateIdByCompanyApply = "yqaDUavXAKBpsPqTr0zYXAGIQYeCijZtWwFsT07wTbE"
-		WxMsgTemplateIdActivityChangeApply = "dYg6iHooRq74PyCXmw_Ns7qdJZmbtLoKS2p2FKeaXl0"
-		//销售跨部门领取客户通知
-		TemplateIdByCompanyReceive = "-ccp916f5rjMhwj8CtOAW_d_Os6ran8q5okVCENg924"
-		//销售"添加客户/领取客户"权限变更通知
-		TemplateIdByCompanyReceivePermission = "rciDm9ThigRBGi1SZ4TFd74XA4aoAxSz_ugdv_tZ450"
-		//路演
-		WxMsgTemplateIdWithRoadshowPending = "1JG9fvKx9o9B-wkZe_gBFQQzMBnp07-hvpZI9QiFcKQ"      //路演->研究员收到待处理的申请
-		WxMsgTemplateIdWithRoadshowDetailResult = "D6AFTJ7CbDDFBYg1R-HRir5bBXkIqGrwUtb2bjN-Wr4" //路演->销售收到处理结果
-		WxMsgTemplateIdWithRoadshowDeleteNotice = "rciDm9ThigRBGi1SZ4TFd74XA4aoAxSz_ugdv_tZ450" //路演->研究员收到活动删除通知
-
-		// 研报小程序
-		WxMsgTemplateIdWithYbCommunityQuestion = "rciDm9ThigRBGi1SZ4TFd74XA4aoAxSz_ugdv_tZ450" // 研报小程序->问答社区回复通知
-		WxMsgTemplateIdWithSealApplyFinished = "rciDm9ThigRBGi1SZ4TFd74XA4aoAxSz_ugdv_tZ450"   // 用印申请-已签回通知
-		UserTemplateIdByProduct = "Cp2wF8gvBtxyWV4DeYuI172oqwyYXVRSm3AyJO42d84"                //用户产品允许通知模版
-	}
+	// 英文研报分享的地址
+	EnglishShareUrl = config["english_share_url"]
 
-	//查研观向小助手
-	{
-		//新的模板ID
-		WxPublicIdXzs = "wxb7cb8a15abad5b8e"                                                     //查研观向小助手
-		WxPublicSecretXzs = "f425ba2863084249722af1e2a5cfffd3"                                   //查研观向小助手
-		WxMsgTemplateIdActivityChangeApplyXzs = "7qe3i4MrGxAIPhJeMgoqqw6j0A_foUB65DLSmxKe05s"    //查研观向活动变更通知-模板ID(小助手)
-		TemplateIdByProductXzs = "tNcCUiK_uUkuxaFF7M9NP2RwLkw8uHFjG-TDIxGUKxo"                   //产品运行报告通知-模板ID(小助手)
-		WxMsgTemplateIdActivityApplyXzs = "mItHdTF6swcunM4P36lOjnLknGbHaLqYdbOsRKscBq4"          //查研观向销售帮对应客户报名通知-模板ID
-		WxMsgTemplateIdCompanyApprovalMessageRai = "JlGx2rKZKIsolvkQ1ZbGSBDNzIIJAaF1bbwcdLuJwQ8" //权益销售签约成功通知查研观向小助手模版消息-模板ID
-	}
-}
+	// 策略报告地址
+	EnPolicyReportUrl = config["en_policy_report_url"]
 
-// 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"
+	// 微信相关
+	{
+		WxYbAppId = config["wx_yb_appid"] //弘则研报小程序
+		WxAppId = config["wx_appid"]
+		WxAppSecret = config["wx_app_secret"]
+		WxId = config["wx_id"]
+		//模板消息
+		TemplateIdByProduct = config["template_id_by_product"]
 	}
-}
 
-// 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相关
+	{
+		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"]
 	}
-}
 
-// 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"
-	}
-}
+	// 科大讯飞
+	{
 
-// YiDongApiConfig 易董开放api配置
-func YiDongApiConfig() {
-	if RunMode == "release" {
-		YiDongHuaWeiYunUrl = "https://achievement.valueonline.cn/"
-		YiDongZhengTongYunUrl = "https://services.valueonline.cn/"
-		YiDongZhengTongYunClientId = "ca86a257ebb46fce"
-		YiDongZhengTongYunClientSecret = "338db2b2ca86a257ebb46fced9003f53"
-	} else {
-		YiDongHuaWeiYunUrl = "https://achievement-test.valueonline.cn/"
-		YiDongZhengTongYunUrl = "https://services-dev.valueonline.cn/"
-		YiDongZhengTongYunClientId = "d9bfb79627ac30d0"
-		YiDongZhengTongYunClientSecret = "96a61dd2d9bfb79627ac30d02188bbe2"
+		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"]
 	}
-}
 
-// 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"
+	// ES 索引
+	{
+		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"]
+		EsSemanticAnalysisDocIndexName = config["es_semantic_analysis_doc_index_name"]
 	}
 
+	LibreOfficePath = config["libre_office_path"]
+	return
 }
-
-//http://adminapi.brilliantstart.cn/admin/
-//http://adminapi.brilliantstart.cn/swagger/
-//http://8.136.199.33:8602/swagger/

+ 1 - 183
utils/constants.go

@@ -1,10 +1,5 @@
 package utils
 
-const (
-	Md5Key = "Ks@h64WJ#tcVgG8$&WlNfqvLAtMgpxWN"
-	DesKey = "6WpHp4vSvLVQK8SLioNZ7WMq" // 接口返回加密KEY
-)
-
 // 常量定义
 const (
 	FormatTime                 = "15:04:05"                //时间格式
@@ -28,11 +23,6 @@ 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}$" //手机号码
@@ -47,59 +37,7 @@ const (
 
 // 聚合短信
 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销售,权益管理员,权益销售。
@@ -139,13 +77,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"
@@ -239,11 +170,6 @@ const (
 	DATA_END_DATE_LIMIT      = 4 //数据结束日期为,当前日期,加上4年时间
 )
 
-// 数据缓存
-const (
-	CATCH_EDB_DATA = "EDB_DATA_"
-)
-
 const (
 	DATA_PREFIX       = "hz_data"
 	CHART_PREFIX      = "hz_chart"
@@ -251,18 +177,11 @@ const (
 )
 
 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表格数据缓存
@@ -281,7 +200,6 @@ const (
 	CACHE_IMPORT_MANUAL_DATA          = "import:manual:data"                  //手工数据导入后刷新
 	CACHE_ACCESS_TOKEN_LOGIN          = "pc_admin:login:"                     //管理后台登录
 	CACHE_ACCESS_TOKEN_LOGIN_NO_TRUST = "pc_admin:login:no_trust:"            //管理后台登录(不可信登录态)
-	CACHE_KEY_COMPANY_MATCH_PRE       = "admin:company:match:"                //客户名单匹配
 	CACHE_KEY_MYSTEEL_REFRESH         = "mysteel_chemical:refresh"            //钢联化工刷新
 	CACHE_KEY_DAYNEW_REFRESH          = "admin:day_new:refresh"               //每日资讯拉取企业微信聊天记录
 	CACHE_KEY_DAYNEW_TRANSLATE        = "admin:day_new:translate"             //每日资讯中翻英
@@ -290,27 +208,7 @@ const (
 
 // 模板消息推送类型
 const (
-	TEMPLATE_MSG_REPORT                  = iota + 1 //日度点评报告推送
-	TEMPLATE_MSG_INDEX                              //指标更新
-	TEMPLATE_MSG_APPLY                              //审批通知
-	TEMPLATE_MSG_RECEIVE                            //销售领取客户通知
-	TEMPLATE_MSG_CYGX_ACTIVITY_CACLE                //查研观向活动取消通知
-	TEMPLATE_MSG_CYGX_ACTIVITY_UPDATE               //查研观向活动更改时间通知
-	TEMPLATE_MSG_CYGX_ARTICLE                       //关注的作者发布报告通知
-	TEMPLATE_MSG_CYGX_DAY_REPORT                    //发送日报(周报、双周报、月报)
-	TEMPLATE_MSG_ACTIVITY_APPOINTMENT               //活动预约/报名时间通知
-	TEMPLATE_MSG_RECEIVE_PERMISSION                 //销售"添加客户/领取客户"权限变更通知
-	TEMPLATE_MSG_YB_COMMUNITY_QUESTION              //研报问答社区
-	TEMPLATE_MSG_CYGX_ACTIVITY_ADD                  //查研观向小程序活动更新推送 12
-	TEMPLATE_MSG_CYGX_ARTICLE_ADD                   //查研观向报告更新推送  13
-	TEMPLATE_MSG_YB_PRICE_DRIVEN                    //研报价格驱动 14
-	TEMPLATE_MSG_SEAL_FINISHED                      //用印申请已迁回通知 15
-	TEMPLATE_MSG_YB_COMMUNITY_VIDEO                 //研报视频社区 16
-	TEMPLATE_MSG_YB_ROAD_VIDEO                      //研报线上路演 17
-	TEMPLATE_MSG_CYGX_ROADSHOW_VIDEO                //查研观向微路演视频 18
-	TEMPLATE_MSG_CYGX_MORNING_MEETING               //查研观向晨会点评 19
-	TEMPLATE_MSG_YB_VOICE_BROADCAST                 //研报语音播报 20 (hongze_yb,hongze_task在用,此处占位)
-	TEMPLATE_MSG_CYGX_ACTIVITY_CUSTOMIZE            //查研观向活动自定义模版消息 21
+	TEMPLATE_MSG_REPORT = iota + 1 //日度点评报告推送
 )
 
 // EDB_LIB
@@ -328,21 +226,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 // 日度点评公众号
-	USER_RECORD_PLATFORM_BACKSTAGE            // 管理后台
-	USER_RECORD_PLATFORM_PC                   // PC端网站
-	USER_RECORD_PLATFORM_CYGX                 // 查研观向小程序
-	_
-	USER_RECORD_PLATFORM_YB // 研报小程序
-)
-
 // 留言管理员头像
 const DEFAULT_HONGZE_SYS_LOGO = "https://hzstatic.hzinsights.com/static/yb_wx/hongze_sys_default_head.png" //弘则官方默认头像
 const DEFAULT_HONGZE_USER_LOGO = "https://hzstatic.hzinsights.com/static/icon/hzyb/default_avatar.png"     //个人中心默认头像、匿名用户留言默认头像
@@ -357,43 +240,6 @@ func GetFiccAdminDepartmentIds() (idStr string) {
 	return
 }
 
-const (
-	CHART_PERMISSION_NAME_MF_YANXUAN        string = "买方研选"
-	LU_YAN_FU_WU                            string = "路演服务"
-	CHART_PERMISSION_NAME_YANXUAN           string = "研选"
-	CHART_PERMISSION_ID_YANXUAN             int    = 31
-	CE_LUE_NAME                             string = "策略"
-	CE_LUE_ID                               int    = 23
-	YI_YAO_NAME                             string = "医药"
-	YI_YAO_ID                               int    = 22
-	XIAO_FEI_NAME                           string = "消费"
-	XIAO_FEI_ID                             int    = 21
-	KE_JI_NAME                              string = "科技"
-	KE_JI_ID                                int    = 20
-	ZHI_ZAO_NAME                            string = "智造"
-	ZHI_ZAO_ID                              int    = 19
-	GU_SHOU_NAME                            string = "固收"
-	GU_SHOU_ID                              int    = 100000 // 自定义权限类型ID ,十万起步
-	YI_DONG_NAME                            string = "(易董)"
-	YI_DONG_NAME_TWO                        string = "--易董"
-	CYGX_ACTIVITY_TYPE_NAME_HZ              string = "弘则活动"
-	CYGX_ACTIVITY_TYPE_NAME_YX              string = "研选活动"
-	CYGX_LYJH                               string = "路演精华"
-	PERMISSION_ID_UPGRADE                   int    = 100000 //行业权限升级的时候所添加的起步值
-	CYGX_TACTICS_TIME_LINE_STATUS           string = "cygx_tactics_time_line_status"
-	TEMPLATE_MSG_CYGX_ACTIVITY_LIMIT_PEOPLE int    = 1001                               //查研观向修改活动人数限制之后,对于因为人数已满而失败的用户,推送模板消息 1001
-	YI_DONG_ZHENG_TONG_YUN_TOKEN_KEY        string = "YI_DONG_ZHENG_TONG_YUN_TOKEN_KEY" //易董证通云的token,存Redis使用
-	CYGX_USER_KEY_LABEL                            = "CYGX_USER_KEY_LABEL"              //查研观向用户标签
-	TPL_MSG_WANG_YANG                              = "tpl_msg_wang_yang"                //汪洋手机号地址参数
-	PERMISSION_ID_YANXUAN_DIFF                     = 20000                              // 买方研选区分3w和5w的差值
-	ZHUAN_JIA_NAME                          string = "专家"
-	ZHUAN_JIA_ID                            int    = 29
-	CHART_PERMISSION_NAME_70W                      = "70w大套餐" // 权益70w大套餐名称
-	CHART_PERMISSION_ID_70W                        = 2001     // 权益70w大套餐表示的权限ID(自定义)
-	CHART_PERMISSION_NAME_45W                      = "45w大套餐" // 权益45w大套餐名称
-	CHART_PERMISSION_ID_45W                        = 2002     // 权益45w大套餐表示的权限ID(自定义)
-)
-
 const (
 	SendTemplateMsgAuthorization = "dc855fce962a639faa779cbdd4cd332f"
 )
@@ -406,34 +252,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="                       //路演精华模板消息地址
-	WX_MSG_PATH_ACTIVITY_DETAIL                = "activityPages/activityDetail/activityDetail?id="               //活动模板消息地址
-	WX_MSG_PATH_PRODUCTINTERIOR_DETAIL         = "reportPages/internalDetials/internalDetials?id="               //产品内测模版消息地址
-	WX_MSG_PATH_ACTIVITY_SIGNIN                = "pages-signIn/isSignIn/isSignIn"                                //扫s码签到地址
-	WX_MSG_PATH_THIS_WEEK_DETAIL               = "/reportPages/reportSecretDetail/reportSecretDetail?type=2&id=" //本周研究汇总详情模板消息地址
-	WX_MSG_PATH_LAST_WEEK_DETAIL               = "/reportPages/reportSecretDetail/reportSecretDetail?type=3&id=" //上周纪要汇总详情模板消息地址
-	WX_MSG_PATH_KEY_COMPANY_DETAIL             = "/reportPages/keyCompany/keyCompany?id="                        //重点公司详情模板消息地址
-	WX_MSG_PATH_INDUSTRY_DETAIL                = "/reportPages/IndustryReport/IndustryReport?id="                //产业详情模板消息地址
-	CYGX_YANXUAN_POINTS_KEY             string = "CYGX_YANXUAN_POINTS_KEY"                                       //查研观向研选活动扣点KEY(冲突,先放这里)
-)
-
 // 图表类型
 const (
 	CHART_SOURCE_DEFAULT                         = 1