package models

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

type CygxApplyRecord struct {
	ApplyRecordId       int       `orm:"column(apply_record_id);pk" description:"申请试用id"`
	UserId              int       `description:"用户ID"`
	BusinessCardUrl     string    `description:"名片地址"`
	RealName            string    `description:"姓名"`
	CompanyName         string    `description:"公司名称"`
	CompanyIdPay        int       `description:"已付费客户公司id"`
	CompanyIdType       int       `description:"用户状态,1:潜在客户 、2:现有客户 、3:FICC客户 、4:现有客户(正式,无对应权限) 、5:现有客户(试用,无对应权限)  、6:现有客户(试用暂停) 、7:现有客户(冻结) 、8:现有客户(流失) "`
	CompanyNamePay      string    `description:"公司名称"`
	Mobile              string    `description:"手机号"`
	CreateTime          time.Time `description:"创建时间"`
	ApplyMethod         int       `description:"1:已付费客户申请试用,2:非客户申请试用"`
	RegisterPlatform    int       `description:"来源 1小程序,2:网页"`
	InviteCompanySource int       `description:"来源 1小程序,2:网页"`
	SourceId            int       `description:"资源ID"`
	Source              string    `description:"资源类型 报告 :article 、图表 :newchart、微路演 :roadshow、活动 :activity、活动视频:activityvideo、活动音频:activityvoice、专项调研活动:activityspecial"`
	Title               string    `description:"标题"`
}

func AddApplyRecord(item *CygxApplyRecord) (err error) {
	o, err := orm.NewOrm().Begin()
	if err != nil {
		return
	}
	defer func() {
		if err != nil {
			o.Rollback()
		} else {
			o.Commit()
		}
	}()
	_, err = o.Insert(item)
	ow := orm.NewOrmUsingDB("weekly_report")
	if err != nil {
		return
	}
	msql := `UPDATE  wx_user
		SET
		  note = ?,
		  is_note = 1,
		  apply_method = ?,
          real_name=?,
		  mobile=?
		WHERE user_id = ? `
	_, err = ow.Raw(msql, item.CompanyName, item.ApplyMethod, item.RealName, item.Mobile, item.UserId).Exec()
	return
}

func GetApplyRecordCount(userId int) (count int, err error) {
	o := orm.NewOrm()
	sql := `SELECT COUNT(1) AS count FROM cygx_apply_record WHERE user_id=? AND status=0 `
	err = o.Raw(sql, userId).QueryRow(&count)
	return
}

// 通过手机号获取详情
func GetCygxApplyRecordByMobile(mobile string) (item *CygxApplyRecord, err error) {
	o := orm.NewOrm()
	sql := `SELECT * FROM cygx_apply_record   WHERE mobile=? AND status=0   ORDER BY apply_record_id DESC   LIMIT 1 `
	err = o.Raw(sql, mobile).QueryRow(&item)
	return
}

// 获取客户的试用申请次数
func GetApplyRecordCountByCompanyIdPay(companyIdPay int) (count int, err error) {
	o := orm.NewOrm()
	sql := `SELECT COUNT(1) AS count FROM cygx_apply_record WHERE  company_id_pay = ?  `
	err = o.Raw(sql, companyIdPay).QueryRow(&count)
	return
}