Browse Source

策略平台用户不存的时候,图表信息同步

xingzai 2 years ago
parent
commit
da8a6a586e
3 changed files with 156 additions and 68 deletions
  1. 125 68
      controllers/chart.go
  2. 25 0
      models/chart.go
  3. 6 0
      models/chart_collect.go

+ 125 - 68
controllers/chart.go

@@ -32,7 +32,7 @@ func (this *BaseChartController) Patg() {
 	list, err := services.GetChartPtagByApi()
 	if err != nil {
 		br.Msg = "获取图表分类失败!"
-		br.ErrMsg = "获取图表分类失败"
+		br.ErrMsg = "获取图表分类失败 Err:" + err.Error()
 		return
 	}
 	br.Ret = 200
@@ -70,7 +70,8 @@ func (this *ChartController) Collection() {
 	if currentIndex <= 0 {
 		currentIndex = 1
 	}
-	startSize = utils.StartIndex(currentIndex, pageSize)
+	startSize = paging.StartIndex(currentIndex, pageSize)
+
 	resp := new(models.HomeChartListItem)
 	if mobile == "" {
 		page := paging.GetPaging(currentIndex, pageSize, 0)
@@ -84,38 +85,56 @@ func (this *ChartController) Collection() {
 	} else {
 		resp.IsBindingMobile = true
 	}
-	list, err, _ := services.GetChartCollectionByApi(mobile, 9999, 0)
-	if err != nil {
-		br.Msg = "获取图表分类失败!"
-		br.ErrMsg = "获取图表分类失败"
-		return
-	}
-	var chartIds string
-	var condition string
-	var pars []interface{}
-
-	if len(list) > 0 {
-		for _, v := range list {
-			chartIds += strconv.Itoa(v.ChartId) + ","
+	var listCollection []*models.HomeChartListResp
+	var total int
+	//var err error
+	chartUserTokenByMobile, _ := services.GetUserTokenByMobile(mobile)
+	if chartUserTokenByMobile != "" {
+		list, err, _ := services.GetChartCollectionByApi(mobile, 9999, 0)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "获取我的收藏失败!"
+			br.ErrMsg = "获取图表分类失败 Err:" + err.Error()
+			return
+		}
+		var chartIds string
+		var condition string
+		var pars []interface{}
+		if len(list) > 0 {
+			for _, v := range list {
+				chartIds += strconv.Itoa(v.ChartId) + ","
+			}
+		}
+		chartIds = strings.TrimRight(chartIds, ",")
+		if chartIds == "" {
+			chartIds = "0"
+		}
+		condition = ` AND a.chart_id IN (` + chartIds + `) `
+		total, err = models.GetChartCount(condition, pars)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.Msg = "获取帖子总数失败,Err:" + err.Error()
+			return
+		}
+		listCollection, err = models.GetChartListCollection(chartIds, uid, startSize, pageSize)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.Msg = "获取信息失败,GetChartListCollection Err:" + err.Error()
+			return
+		}
+	} else {
+		var err error
+		total, err = models.GetChartCountByUser(uid)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.Msg = "获取总数失败,Err:" + err.Error()
+			return
+		}
+		listCollection, err = models.GetChartListCollectionWithCygx(uid, startSize, pageSize)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.Msg = "获取信息失败,GetChartListCollection Err:" + err.Error()
+			return
 		}
-	}
-	chartIds = strings.TrimRight(chartIds, ",")
-	if chartIds == "" {
-		chartIds = "0"
-	}
-	condition = ` AND a.chart_id IN (` + chartIds + `) `
-	total, err := models.GetChartCount(condition, pars)
-	if err != nil {
-		br.Msg = "获取信息失败"
-		br.Msg = "获取帖子总数失败,Err:" + err.Error()
-		return
-	}
-	startSize = paging.StartIndex(currentIndex, pageSize)
-	listCollection, err := models.GetChartListCollection(chartIds, uid, startSize, pageSize)
-	if err != nil {
-		br.Msg = "获取信息失败"
-		br.Msg = "获取帖子总数失败,GetChartListCollection Err:" + err.Error()
-		return
 	}
 	for k, v := range listCollection {
 		if v.NumTop > 0 {
@@ -165,15 +184,22 @@ func (this *ChartController) Detail() {
 		br.ErrMsg = "获取信息失败,Err:" + err.Error()
 		return
 	}
-	GetIsCollectionChart, err := services.GetIsCollectionChart(mobile, chartId)
-	if err != nil {
-		br.Msg = "获取信息失败"
-		br.ErrMsg = "获取三方关注信息失败,Err:" + err.Error()
-		return
-	}
-	detail.IsCollection = GetIsCollectionChart
-	if !detail.IsCollection {
-		err = models.RemoveChartCollect(user.UserId, chartId)
+	chartUserTokenByMobile, _ := services.GetUserTokenByMobile(mobile)
+	if chartUserTokenByMobile != "" {
+		GetIsCollectionChart, err := services.GetIsCollectionChart(mobile, chartId)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取三方关注信息失败,Err:" + err.Error()
+			return
+		}
+		detail.IsCollection = GetIsCollectionChart
+		//if !detail.IsCollection {
+		//	err = models.RemoveChartCollect(user.UserId, chartId)
+		//}
+	} else {
+		if detail.CollectionNum > 0 {
+			detail.IsCollection = true
+		}
 	}
 	br.Ret = 200
 	br.Success = true
@@ -207,21 +233,58 @@ func (this *ChartController) ChartCollect() {
 		br.ErrMsg = "参数解析失败,Err:" + err.Error()
 		return
 	}
-
-	GetIsCollectionChart, err := services.GetIsCollectionChart(mobile, req.ChartId)
-	if err != nil {
-		br.Msg = "获取信息失败"
-		br.ErrMsg = "获取三方关注信息失败,Err:" + err.Error()
-		return
-	}
+	resp := new(models.ArticleCollectResp)
 	count, err := models.GetChartCountByUserId(uid, req.ChartId)
 	if err != nil {
 		br.Msg = "获取数据失败!"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
 		return
 	}
-	resp := new(models.ArticleCollectResp)
-	if !GetIsCollectionChart {
+	chartUserTokenByMobile, _ := services.GetUserTokenByMobile(mobile)
+	if chartUserTokenByMobile != "" {
+		GetIsCollectionChart, err := services.GetIsCollectionChart(mobile, req.ChartId)
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取三方关注信息失败,Err:" + err.Error()
+			return
+		}
+		if !GetIsCollectionChart {
+			if count <= 0 {
+				item := new(models.CygxChartCollect)
+				item.ChartId = req.ChartId
+				item.UserId = uid
+				item.RealName = user.RealName
+				item.CreateTime = time.Now()
+				item.Mobile = user.Mobile
+				item.Email = user.Email
+				item.CompanyId = user.CompanyId
+				item.CompanyName = user.CompanyName
+				_, err = models.AddCygxChartCollect(item)
+				if err != nil {
+					br.Msg = "收藏失败"
+					br.ErrMsg = "收藏失败,Err:" + err.Error()
+					return
+				}
+			}
+			br.Msg = "收藏成功"
+			resp.Status = 1
+		} else {
+			err = models.RemoveChartCollect(uid, req.ChartId)
+			if err != nil {
+				br.Msg = "取消收藏失败"
+				br.ErrMsg = "取消收藏失败,Err:" + err.Error()
+				return
+			}
+			br.Msg = "已取消收藏"
+			resp.Status = 2
+		}
+		//如果存在就取消收藏、反之添加收藏
+		if GetIsCollectionChart {
+			go services.DeleteCollectionChart(mobile, req.ChartId)
+		} else {
+			go services.AddCollectionChart(mobile, req.ChartId)
+		}
+	} else {
 		if count <= 0 {
 			item := new(models.CygxChartCollect)
 			item.ChartId = req.ChartId
@@ -238,24 +301,18 @@ func (this *ChartController) ChartCollect() {
 				br.ErrMsg = "收藏失败,Err:" + err.Error()
 				return
 			}
+			br.Msg = "收藏成功"
+			resp.Status = 1
+		} else {
+			err = models.RemoveChartCollect(uid, req.ChartId)
+			if err != nil {
+				br.Msg = "取消收藏失败"
+				br.ErrMsg = "取消收藏失败,Err:" + err.Error()
+				return
+			}
+			br.Msg = "已取消收藏"
+			resp.Status = 2
 		}
-		br.Msg = "收藏成功"
-		resp.Status = 1
-	} else {
-		err = models.RemoveChartCollect(uid, req.ChartId)
-		if err != nil {
-			br.Msg = "取消收藏失败"
-			br.ErrMsg = "取消收藏失败,Err:" + err.Error()
-			return
-		}
-		br.Msg = "已取消收藏"
-		resp.Status = 2
-	}
-	//如果存在就取消收藏、反之添加收藏
-	if GetIsCollectionChart {
-		go services.DeleteCollectionChart(mobile, req.ChartId)
-	} else {
-		go services.AddCollectionChart(mobile, req.ChartId)
 	}
 	br.Ret = 200
 	br.Success = true

+ 25 - 0
models/chart.go

@@ -201,6 +201,31 @@ func GetChartListCollection(chartIds string, userId, startSize, pageSize int) (i
 	return
 }
 
+//获取图表列表本地
+func GetChartListCollectionWithCygx(userId, startSize, pageSize int) (items []*HomeChartListResp, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT
+			a.*,
+			t.create_time AS t_create_time,
+			c.create_time AS c_create_time,
+			( SELECT COUNT(*) FROM cygx_chart_top AS t WHERE t.chart_id = a.chart_id AND t.user_id = ? ) AS num_top,
+			( SELECT COUNT(*) FROM cygx_chart_collect AS c WHERE c.chart_id = a.chart_id AND c.user_id = ? ) AS num_c 
+		FROM
+			cygx_chart_collect AS c
+			INNER JOIN cygx_chart AS a ON c.chart_id = a.chart_id
+			LEFT JOIN cygx_chart_top AS t ON t.chart_id = a.chart_id 
+		WHERE
+			a.publish_status = 1 
+			AND c.user_id =? 
+		GROUP BY
+			a.chart_id 
+		ORDER BY
+			t_create_time DESC,
+			c_create_time DESC LIMIT ?,? `
+	_, err = o.Raw(sql, userId, userId, userId, startSize, pageSize).QueryRows(&items)
+	return
+}
+
 func GetChartListConfig() (items []*HomeChartListResp, err error) {
 	o := orm.NewOrm()
 	sql := ` SELECT * FROM cygx_chart AS a WHERE a.publish_status=1    AND  ctag_id IN (7,8,9,10) GROUP BY ctag_id  ORDER BY create_date  DESC LIMIT 4 `

+ 6 - 0
models/chart_collect.go

@@ -43,6 +43,12 @@ func GetChartCountByUserId(userId, chartID int) (count int, err error) {
 	return
 }
 
+func GetChartCountByUser(userId int) (count int, err error) {
+	sql := `SELECT COUNT(1) AS count FROM cygx_chart_collect WHERE user_id=?  `
+	err = orm.NewOrm().Raw(sql, userId).QueryRow(&count)
+	return
+}
+
 type CygxChartTop struct {
 	Id          int       `orm:"column(id);pk"`
 	ChartId     int       `description:"图表ID"`