package services

import (
	"encoding/json"
	"fmt"
	"github.com/beego/beego/v2/server/web/context"
	"hongze/hongze_cygx/models"
	"hongze/hongze_cygx/utils"
	"strings"
	"time"
)

func AddCygxPageHistoryRecord(user *models.WxUserItem, Ctx *context.Context) {
	item := new(models.CygxPageHistoryRecord)
	item.UserId = user.UserId
	item.CreateTime = time.Now()
	item.Mobile = user.Mobile
	item.Email = user.Email
	item.CompanyId = user.CompanyId
	item.CompanyName = user.CompanyName
	item.Router = Ctx.Request.RequestURI
	item.PageRouter = Ctx.Input.Query("PageRouter")
	index := strings.Index(item.Router, "?")
	if index != -1 {
		item.Parameter = item.Router[index+1:]
	}
	if Ctx.Input.Method() == "POST" && string(Ctx.Input.RequestBody) != "" {
		item.Parameter = string(Ctx.Input.RequestBody)
		var pr models.PageRouter
		err := json.Unmarshal(Ctx.Input.RequestBody, &pr)
		if err != nil {
			fmt.Println(err)
			utils.FileLog.Info(err.Error())
		}
		item.PageRouter = pr.PageRouter
	}
	if strings.Contains(item.Router, "/api/article/detail") {
		cacheKey := fmt.Sprint("uid:", user.UserId, "_Parameter:", item.Parameter)
		isExist := utils.Rc.IsExist(cacheKey)
		if !isExist {
			setNX := utils.Rc.SetNX(cacheKey, user.Mobile, time.Second*10)
			if !setNX {
				go utils.SendAlarmMsg("记录用户阅读文章,设置Redis Key 过期时间失败:key"+cacheKey, 3)
			}
			return
		}
	}

	_, err := models.AddCygxPageHistoryRecord(item)
	if err != nil {
		fmt.Println(err)
		utils.FileLog.Info(err.Error())
		return
	}
}