package company

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

type Company struct {
	CompanyId       int       `orm:"column(company_id);pk"`
	CompanyName     string    `description:"客户名称"`
	CompanyType     int       `orm:"column(type)"`
	CreditCode      string    `description:"社会统一信用码"`
	CompanyCode     string    `description:"客户编码"`
	Sort            int       `description:"优先级"`
	IsFeeCustomer   int       `description:"是否付费用户"`
	Country         string    `description:"国家编码"`
	Province        string    `description:"省"`
	City            string    `description:"市"`
	Address         string    `description:"详细地址"`
	Enabled         int       `description:"用户状态"`
	CreatedTime     time.Time `description:"创建时间"`
	LastUpdatedTime time.Time `description:"最后一次阅读时间"`
	Seller          string    `description:"销售员"`
	SellsId         int       `description:"销售员id"`
	ShareSeller     string    `description:"共享销售员"`
	ShareSellerId   int       `description:"共享销售员id"`
	CompanyBelong   string    `description:"客户所属，ficc：ficc客户，public_offering：公募客户，partner：合作伙伴"`
	StartDate       string    `description:"合同开始日期"`
	EndDate         string    `description:"合同结束日期"`
	LastType        int       `description:"原客户标签"`
	IsVip           int       `description:"0:普通用户,1:大客户"`
	IsShare         int       `description:"0:非共享用户,1:共享客户"`
	FirstStartDate  string    `description:"首次设置为试用客户开始时间"`
	FirstEndDate    string    `description:"首次设置为试用客户结束时间"`
	DateType        int       `description:"设置流失类型，1：1个月，2：2个月，3：3个月"`
	Remark          string    `description:"备注信息"`
	RegionType      string    `description:"地区类型，国内，国外"`
	OpenCompanyCode string    `description:"开放给第三方的客户编码，不让第三方定位我们的客户信息"`
}

// 更新客户基础信息
func (company *Company) Update(cols []string) (err error) {
	o := orm.NewOrm()
	_, err = o.Update(company, cols...)
	return
}

func ModifyCompanyGroupId(sellerId, groupId int) (err error) {
	o := orm.NewOrm()
	sql := `UPDATE company_product SET group_id=? WHERE seller_id=? `
	_, err = o.Raw(sql, groupId, sellerId).Exec()
	return
}

func ModifyCompanyDepartmentId(sellerId, departmentId int) (err error) {
	o := orm.NewOrm()
	sql := `UPDATE company_product SET department_id=? WHERE seller_id=? `
	_, err = o.Raw(sql, departmentId, sellerId).Exec()
	return
}
