Browse Source

no message

xingzai 1 year ago
parent
commit
4246554223
2 changed files with 203 additions and 98 deletions
  1. 45 0
      models/article_history_record_newpv.go
  2. 158 98
      services/elastic.go

+ 45 - 0
models/article_history_record_newpv.go

@@ -239,6 +239,40 @@ func GetCygxArticleHistoryRecordByCompanyList(condition string, startSize, pageS
 	return
 }
 
+// 机构阅读记录列表
+func GetCygxArticleHistoryRecordByCompanyListNew(condition string, pars interface{}, startSize, pageSize int) (items []*EsUserInteraction, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT
+			r.id,
+			art.title,
+			art.article_id,
+			art.article_id_md5,
+			art.publish_date,
+			art.category_name,
+			r.create_time,
+			r.mobile,
+			r.user_id,
+			r.company_name,
+			r.company_id,
+			r.real_name,
+			r.stop_time,
+			ci.article_history_num AS company_article_history_num,
+			ui.article_history_num AS user_article_history_num 
+		FROM
+			cygx_article_history_record_all AS r
+			INNER JOIN cygx_article AS art ON art.article_id = r.article_id
+			LEFT JOIN cygx_company_interaction_num AS ci ON ci.company_id = r.company_id
+			LEFT JOIN cygx_user_interaction_num AS ui ON ui.user_id = r.user_id 
+		WHERE
+			1 = 1 
+			AND r.is_del = 0 ` + condition + ` GROUP BY r.id  `
+	if startSize > 0 || pageSize > 0 {
+		sql += ` LIMIT ` + strconv.Itoa(startSize) + "," + strconv.Itoa(pageSize)
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
 // 获取阅读记录数量
 func GetCygxArticleHistoryCountByCompany(condition string) (count int, err error) {
 	o := orm.NewOrm()
@@ -324,3 +358,14 @@ func GetCygxArticleHistoryRecordNewpvListPv(condition string, pars []interface{}
 	_, err = o.Raw(sql, pars).QueryRows(&items)
 	return
 }
+
+// 获取数量
+func GetCygxArticleHistoryRecordAllCount(condition string, pars []interface{}) (count int, err error) {
+	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_article_history_record_all  WHERE 1= 1  `
+	if condition != "" {
+		sqlCount += condition
+	}
+	o := orm.NewOrm()
+	err = o.Raw(sqlCount, pars).QueryRow(&count)
+	return
+}

+ 158 - 98
services/elastic.go

@@ -3,6 +3,7 @@ package services
 import (
 	"context"
 	"encoding/json"
+	"errors"
 	"fmt"
 	"github.com/olivere/elastic/v7"
 	"hongze/hongze_cygx/models"
@@ -101,125 +102,184 @@ func CreateIndexNameArticleHistory() {
 	EsCreateIndex(indexName, mappingJson)
 }
 
-// func UpdateWxUserLabel(cont context.Context) (err error) {
+//
+//func init() {
+//	AddAllArticleHistory()
+//}
+
 func AddAllArticleHistory(cont context.Context) (err error) {
+	//func AddAllArticleHistory() (err error) {
 	defer func() {
 		if err != nil {
-			go utils.SendAlarmMsg("同步阅读记录到es失败;Err:"+err.Error(), 2)
-			go utils.SendEmail("同步阅读记录到es失败"+"【"+utils.APPNAME+"】"+time.Now().Format(utils.FormatDateTime), ";Err:"+err.Error(), utils.EmailSendToUsers)
-			utils.FileLog.Info("同步阅读记录到es失败,Err:%s", err.Error())
+			fmt.Println(err)
+			go utils.SendAlarmMsg("同步阅读记录到es失败;AddAllArticleHistory Err:"+err.Error(), 2)
 		}
 	}()
 
+	var pars []interface{}
+	var condition string
+
+	var companyIds []int
+	condition = " AND  product_id = 2  AND STATUS IN ( '正式', '试用', '冻结' ) "
+	list, e := models.GetCompanyProductList(condition, pars)
+	if e != nil {
+		err = errors.New("GetCompanyProductList, Err: " + e.Error())
+		return
+	}
+
+	for _, v := range list {
+		companyIds = append(companyIds, v.CompanyId)
+	}
+
 	var updateUserIds string //更改过的用户ID
 	userIdMap := make(map[int]int)
-	condition := `  AND r.create_time < '` + time.Now().Format(utils.FormatDate) + `' 	AND r.company_id IN (
-					SELECT a.company_id 
-					FROM  company AS a INNER JOIN company_product AS b ON a.company_id = b.company_id 
-					WHERE a.enabled = 1 AND b.STATUS IN ( '正式', '试用', '冻结' )) `
-	totalAll, err := models.GetCygxArticleHistoryCountByCompany(condition)
-	if err != nil {
-		fmt.Println("GetCygxArticleHistoryCountByCompany Err:totalAll", err.Error())
-		return err
+	//condition := `  AND r.create_time < '` + time.Now().Format(utils.FormatDate) + `' 	AND r.company_id IN (
+	//				SELECT a.company_id
+	//				FROM  company AS a INNER JOIN company_product AS b ON a.company_id = b.company_id
+	//				WHERE a.enabled = 1 AND b.STATUS IN ( '正式', '试用', '冻结' )) `
+	//
+	//totalAll, err := models.GetCygxArticleHistoryCountByCompany(condition)
+
+	//获取阅读总数
+	condition = " AND company_id IN (" + utils.GetOrmInReplace(len(companyIds)) + ") AND   is_del = 0  "
+	pars = append(pars, companyIds)
+	totalAll, e := models.GetCygxArticleHistoryRecordAllCount(condition, pars)
+	if e != nil {
+		err = errors.New("GetCygxArticleHistoryRecordAllCount, Err: " + e.Error())
+		return
 	}
+
 	//更改阅读总数
-	err = models.UpdateConfigByCode(strconv.Itoa(totalAll), "company_article_history_num")
-	if err != nil {
-		fmt.Println("UpdateConfigByCode Err:totalAll", err.Error())
-		return err
+	e = models.UpdateConfigByCode(strconv.Itoa(totalAll), "company_article_history_num")
+	if e != nil {
+		err = errors.New("UpdateConfigByCode, Err: " + e.Error())
+		return
 	}
 	//处理前一天新增的数据
-	condition += `  AND r.create_time >='` + time.Now().AddDate(0, 0, -1).Format(utils.FormatDate) + `'`
-	total, err := models.GetCygxArticleHistoryCountByCompany(condition)
+	//condition += `  AND create_time >= ?   AND is_del = 0 `
+	//pars = append(pars, time.Now().AddDate(0, 0, -1).Format(utils.FormatDate))
+	//total, err := models.GetCygxArticleHistoryRecordAllCount(condition, pars)
+	////fmt.Println(total)
+	////return
 	//fmt.Println(total)
-	//return
-	fmt.Println(total)
-	if err != nil {
-		fmt.Println("GetCygxArticleHistoryCountByCompany Err:", err.Error())
-		return err
+	//if err != nil {
+	//	fmt.Println("GetCygxArticleHistoryCountByCompany Err:", err.Error())
+	//	return err
+	//}
+
+	pars = make([]interface{}, 0)
+	condition = `     `
+	condition = " AND r.company_id IN (" + utils.GetOrmInReplace(len(companyIds)) + ") AND   r.is_del = 0  AND r.create_time >= ?   AND r.create_time <= ?  "
+	pars = append(pars, companyIds, time.Now().AddDate(0, 0, -1).Format(utils.FormatDate), time.Now().Format(utils.FormatDate))
+
+	allList, e := models.GetCygxArticleHistoryRecordByCompanyListNew(condition, pars, 0, 0)
+	if e != nil {
+		err = errors.New("GetCygxArticleHistoryRecordByCompanyListNew, Err: " + e.Error())
+		return
 	}
-	for i := 0; i <= total/1000; i++ {
-		allList, err := models.GetCygxArticleHistoryRecordByCompanyList(condition, 1000*i, 1000)
+	fmt.Println(len(allList))
+	//return
+	for k, v := range allList {
+		//fmt.Println(v)
+		fmt.Println(v.Id, "___", k)
+		err := EsAddArticleHistoryData(v)
 		if err != nil {
-			fmt.Println("GetCygxArticleHistoryRecordByCompanyList Err:", err.Error())
-			return err
+			fmt.Println("EsAddOrEditData Err:", err.Error())
+			//return err
 		}
-		for k, v := range allList {
-			fmt.Println(v.Id, "___", k)
-			err := EsAddArticleHistoryData(v)
-			if err != nil {
-				fmt.Println("EsAddOrEditData Err:", err.Error())
-				return err
-			}
-			if _, ok := userIdMap[v.UserId]; !ok {
-				updateUserIds += strconv.Itoa(v.UserId) + ","
-				userIdMap[v.UserId] = v.UserId
-			}
+		if _, ok := userIdMap[v.UserId]; !ok {
+			updateUserIds += strconv.Itoa(v.UserId) + ","
+			userIdMap[v.UserId] = v.UserId
 		}
 	}
+
+	//for i := 0; i <= total/1000; i++ {
+	//	allList, err := models.GetCygxArticleHistoryRecordByCompanyListNew(condition, pars, 1000*i, 1000)
+	//	if err != nil {
+	//		fmt.Println("GetCygxArticleHistoryRecordByCompanyListNew Err:", err.Error())
+	//		return err
+	//	}
+	//	for k, v := range allList {
+	//		fmt.Println(v.Id, "___", k)
+	//		//err := EsAddArticleHistoryData(v)
+	//		//if err != nil {
+	//		//	fmt.Println("EsAddOrEditData Err:", err.Error())
+	//		//	return err
+	//		//}
+	//		//if _, ok := userIdMap[v.UserId]; !ok {
+	//		//	updateUserIds += strconv.Itoa(v.UserId) + ","
+	//		//	userIdMap[v.UserId] = v.UserId
+	//		//}
+	//	}
+	//}
+
+	//return
 	//处理前一天新增的数据 end
 
 	//处理前一天被移动的用户
 
 	startDate := time.Now().AddDate(0, 0, -1).Format(utils.FormatDate)
 	endDate := time.Now().Format(utils.FormatDate)
-	var mobiles string
-	listUpdateUser, err := models.GetWxUserOpLogList(startDate, endDate)
-	if err != nil && err.Error() != utils.ErrNoRow() {
-		return err
+	var mobiles []string
+	listUpdateUser, e := models.GetWxUserOpLogList(startDate, endDate)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetWxUserOpLogList, Err: " + e.Error())
+		return
 	}
 	if len(listUpdateUser) > 0 {
 		for _, v := range listUpdateUser {
-			mobiles += "'" + v.Mobile + "',"
+			mobiles = append(mobiles, v.Mobile)
 		}
 	}
-	mobiles = strings.TrimRight(mobiles, ",")
-	if mobiles != "" {
-		condition = ` AND r.mobile IN (` + mobiles + `)`
+	//mobiles = strings.TrimRight(mobiles, ",")
+	if len(mobiles) > 0 {
+		pars = make([]interface{}, 0)
+		condition = ` AND r.mobile IN (` + utils.GetOrmInReplace(len(mobiles)) + `)`
+		pars = append(pars, mobiles)
 		//修改用户的阅读记录(es 自动判断,如果有他会修改数据)
-		listUpdatePv, err := models.GetCygxArticleHistoryRecordByCompanyList(condition, 0, 0)
-		if err != nil {
-			fmt.Println("GetArticleHistoryRecordAllByMobileList ,Err" + err.Error())
-			return err
+		listUpdatePv, e := models.GetCygxArticleHistoryRecordByCompanyListNew(condition, pars, 0, 0)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			err = errors.New("GetCygxArticleHistoryRecordByCompanyListNew,mobilesUpdate Err: " + e.Error())
+			return
 		}
 
 		for _, v := range listUpdatePv {
 			err := EsAddArticleHistoryData(v)
 			if err != nil {
 				fmt.Println("EsAddOrEditData Err:", err.Error())
-				return err
+				//return err
 			}
 		}
 	}
-
 	//处理前一天被移动的用户 end
 
 	//处理前一天被删除的用户
 	{
-		listDeleteUser, err := models.GetWxUserOpLogDeleteList(startDate, endDate)
-		if err != nil && err.Error() != utils.ErrNoRow() {
-			return err
+		listDeleteUser, e := models.GetWxUserOpLogDeleteList(startDate, endDate)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			err = errors.New("GetWxUserOpLogDeleteList, Err: " + e.Error())
+			return
 		}
-		mobiles = ""
+		var mobilesDel []string
 		if len(listUpdateUser) > 0 {
 			for _, v := range listDeleteUser {
-				mobiles += "'" + v.Mobile + "',"
+				mobilesDel = append(mobilesDel, v.Mobile)
 			}
 		}
-		mobiles = strings.TrimRight(mobiles, ",")
-		if mobiles != "" {
-			condition = ` AND r.mobile IN (` + mobiles + `)`
-			listDeletePv, err := models.GetCygxArticleHistoryRecordByCompanyList(condition, 0, 0)
-			if err != nil {
-				fmt.Println("GetArticleHistoryRecordAllByMobileList ,Err" + err.Error())
-				return err
+		if len(mobilesDel) > 0 {
+			pars = make([]interface{}, 0)
+			condition = ` AND r.mobile IN (` + utils.GetOrmInReplace(len(mobilesDel)) + `)`
+			pars = append(pars, mobilesDel)
+			listDeletePv, e := models.GetCygxArticleHistoryRecordByCompanyListNew(condition, pars, 0, 0)
+			if e != nil && e.Error() != utils.ErrNoRow() {
+				err = errors.New("GetCygxArticleHistoryRecordByCompanyListNew,mobilesDel Err: " + e.Error())
+				return
 			}
-			//fmt.Println("Es 删除")
 			for _, v := range listDeletePv {
 				err := EsDeleteData(utils.IndexNameArticleHistory, strconv.Itoa(v.Id))
 				if err != nil {
-					fmt.Println("EsAddOrEditData Err:", err.Error())
-					return err
+					fmt.Println("EsDeleteData Err:", err.Error())
+					//return err
 				}
 			}
 		}
@@ -227,37 +287,37 @@ func AddAllArticleHistory(cont context.Context) (err error) {
 	//处理前一天被删除的用户 end
 
 	//处理新增的阅读记录的用户阅读数量、机构阅读数量(暂未找到批量修改的方法,后期优化处理 2022.7.11)
-	updateUserIds = strings.TrimRight(updateUserIds, ",")
-	if updateUserIds != "" {
-		condition = `  AND r.create_time >='` + time.Now().AddDate(0, 0, -1).Format(utils.FormatDate) + `' AND r.user_id IN (` + updateUserIds + `)`
-		total, err := models.GetCygxArticleHistoryCountByCompany(condition)
-		//fmt.Println(total)
-		//return
-		fmt.Println(total)
-		if err != nil {
-			fmt.Println("GetCygxArticleHistoryCountByCompany Err:", err.Error())
-			return err
-		}
-		for i := 0; i <= total/1000; i++ {
-			allList, err := models.GetCygxArticleHistoryRecordByCompanyList(condition, 1000*i, 1000)
-			if err != nil {
-				fmt.Println("GetCygxArticleHistoryRecordByCompanyList Err:", err.Error())
-				return err
-			}
-			for k, v := range allList {
-				fmt.Println(v.Id, "___", k)
-				err := EsAddArticleHistoryData(v)
-				if err != nil {
-					fmt.Println("EsAddOrEditData Err:", err.Error())
-					return err
-				}
-				if _, ok := userIdMap[v.UserId]; !ok {
-					updateUserIds += strconv.Itoa(v.UserId) + ","
-					userIdMap[v.UserId] = v.UserId
-				}
-			}
-		}
-	}
+	//updateUserIds = strings.TrimRight(updateUserIds, ",")
+	//if updateUserIds != "" {
+	//	condition = `  AND r.create_time >='` + time.Now().AddDate(0, 0, -1).Format(utils.FormatDate) + `' AND r.user_id IN (` + updateUserIds + `)`
+	//	total, err := models.GetCygxArticleHistoryCountByCompany(condition)
+	//	//fmt.Println(total)
+	//	//return
+	//	fmt.Println(total)
+	//	if err != nil {
+	//		fmt.Println("GetCygxArticleHistoryCountByCompany Err:", err.Error())
+	//		return err
+	//	}
+	//	for i := 0; i <= total/1000; i++ {
+	//		allList, err := models.GetCygxArticleHistoryRecordByCompanyList(condition, 1000*i, 1000)
+	//		if err != nil {
+	//			fmt.Println("GetCygxArticleHistoryRecordByCompanyList Err:", err.Error())
+	//			return err
+	//		}
+	//		for k, v := range allList {
+	//			fmt.Println(v.Id, "___", k)
+	//			err := EsAddArticleHistoryData(v)
+	//			if err != nil {
+	//				fmt.Println("EsAddOrEditData Err:", err.Error())
+	//				return err
+	//			}
+	//			if _, ok := userIdMap[v.UserId]; !ok {
+	//				updateUserIds += strconv.Itoa(v.UserId) + ","
+	//				userIdMap[v.UserId] = v.UserId
+	//			}
+	//		}
+	//	}
+	//}
 	return
 }