package models

import (
	"github.com/beego/beego/v2/client/orm"
	"time"
)

type CygxSearchKeyWord struct {
	Id               int `orm:"column(id);" description:"id"`
	KeyWord          string
	UserId           int
	CreateTime       time.Time
	Mobile           string `description:"手机号"`
	Email            string `description:"邮箱"`
	CompanyId        int    `description:"公司id"`
	CompanyName      string `description:"公司名称"`
	RealName         string `description:"用户实际名称"`
	RegisterPlatform int    // 来源 1小程序,2:网页、5:研选小程序
}

// 新增搜索
func AddSearchKeyWord(item *CygxSearchKeyWord) (lastId int64, err error) {
	o := orm.NewOrm()
	lastId, err = o.Insert(item)
	return
}

// 获取用户搜索这个关键词的最新时间
func GetNewSearchKeyWordByThisUser(uid int, keyWord string) (item *CygxSearchKeyWord, err error) {
	o := orm.NewOrm()
	sql := `SELECT * FROM cygx_search_key_word WHERE user_id = ? AND key_word = ? ORDER BY id DESC LIMIT 1 `
	err = o.Raw(sql, uid, keyWord).QueryRow(&item)
	return
}

// 获取用户搜索词汇频率较高的词
func GetSearchKeyWordTop(condition string, pars []interface{}) (items []*CygxSearchKeyWord, err error) {
	o := orm.NewOrm()
	sql := `SELECT key_word, MAX(create_time) as create_time, COUNT(*) AS num FROM cygx_search_key_word  WHERE 1=1  ` + condition + ` GROUP BY key_word ORDER BY num DESC,create_time DESC LIMIT 12 `
	_, err = o.Raw(sql, pars).QueryRows(&items)
	return
}

func GetCygxSearchKeyWordList(condition string) (items []*CygxSearchKeyWord, err error) {
	o := orm.NewOrm()
	sql := `SELECT * FROM cygx_search_key_word   WHERE 1 = 1 ` + condition + `  GROUP BY user_id  `
	_, err = o.Raw(sql).QueryRows(&items)
	return
}

// 修改用户搜索的相关信息
func UpdateCygxSearchKeyWord(wxUser *WxUserItem) (err error) {
	o := orm.NewOrm()
	var sql string
	if wxUser.Mobile != "" {
		sql = `UPDATE cygx_search_key_word SET email=?,company_id=?,company_name=?,user_id=?,real_name=? WHERE mobile=? `
		_, err = o.Raw(sql, wxUser.Email, wxUser.CompanyId, wxUser.CompanyName, wxUser.UserId, wxUser.RealName, wxUser.Mobile).Exec()
	} else if wxUser.Email != "" {
		sql = `UPDATE cygx_search_key_word SET mobile=?,company_id=?,company_name=?,user_id=?,real_name=? WHERE email=? `
		_, err = o.Raw(sql, wxUser.Mobile, wxUser.CompanyId, wxUser.CompanyName, wxUser.UserId, wxUser.RealName, wxUser.Email).Exec()
	}
	return
}

// GetSearchKeyWordByUser 获取用户搜索历史记录
func GetSearchKeyWordByUser(uid int) (items []*KeyWord, err error) {
	o := orm.NewOrm()
	sql := `SELECT key_word, MAX( id ) AS maxId  FROM	cygx_search_key_word_log WHERE	user_id = ? GROUP BY	key_word ORDER BY	maxId DESC 	LIMIT 8 `
	_, err = o.Raw(sql, uid).QueryRows(&items)
	return
}