partner_info.go 2.7 KB
package domain

import "time"

// 客户价值
type PartnerInfo struct {
	// 合伙人ID
	Id int64 `json:"id"`
	// 公司id
	CompanyId int64 `json:"companyId"`
	// 合伙人姓名
	PartnerName string `json:"partnerName"`
	// 登录账号
	Account string `json:"account"`
	// 登录密码
	Password string `json:"password"`
	// 状态(1:启用或者0:禁用)
	Status int `json:"status"`
	// 合伙类别 (1.事业合伙人 2.业务合伙人  3.研发合伙人)
	PartnerCategory int `json:"partnerCategory"`
	//所属区域信息
	RegionInfo *RegionInfo `json:"regionId"`
	//合作时间
	CooperateTime time.Time `json:"cooperateTime"`
	//创建时间
	CreateAt time.Time `json:"createAt"`
	//更新时间
	UpdateAt time.Time `json:"updateAt"`
	//关联业务员
	Salesman []*Salesman `json:"salesman"`
	//合伙人分类信息
	PartnerCategoryInfos []*PartnerCategoryInfo `partnerCategoryInfos`
}

type PartnerInfoRepository interface {
	Save(dm *PartnerInfo) (*PartnerInfo, error)
	Remove(dm *PartnerInfo) (*PartnerInfo, error)
	FindOne(queryOptions map[string]interface{}) (*PartnerInfo, error)
	Find(queryOptions map[string]interface{}) (int64, []*PartnerInfo, error)
}

func (m *PartnerInfo) Identify() interface{} {
	if m.Id == 0 {
		return nil
	}
	return m.Id
}

func (m *PartnerInfo) Update(data map[string]interface{}) error {
	if partnerName, ok := data["partnerName"]; ok && partnerName != "" {
		m.PartnerName = partnerName.(string)
	}
	if account, ok := data["account"]; ok && account != "" {
		m.Account = account.(string)
	}
	if password, ok := data["password"]; ok && password != "" {
		m.Password = password.(string)
	}
	if status, ok := data["status"]; ok && status != 0 {
		m.Status = status.(int)
	}
	if partnerCategory, ok := data["partnerCategory"]; ok && partnerCategory != 0 {
		m.PartnerCategory = partnerCategory.(int)
	}
	if salesman, ok := data["salesman"]; ok {
		m.Salesman = salesman.([]*Salesman)
	}
	m.UpdateAt = time.Now()
	return nil
}

func (m *PartnerInfo) PartnerCategoryInfo() *PartnerCategoryInfo {
	var name string
	switch m.PartnerCategory {
	case 1:
		name = "事业合伙人"
		break
	case 2:
		name = "业务合伙人"
		break
	case 3:
		name = "研发合伙人"
		break
	case 4:
		name = "业务-产品应用合伙人"
		break
	default:
		name = "事业合伙人"
		break
	}
	return &PartnerCategoryInfo{
		Id:   int64(m.PartnerCategory),
		Name: name,
	}
}

//账号是否有效
func (m *PartnerInfo) IsEnable() bool {
	return m.Status == 1
}

type RegionInfo struct {
	RegionId   int    `json:"regionId"`
	RegionName string `json:"regionName"`
}

//业务员
type Salesman struct {
	//Id int64 `json:"id"`
	Name      string `json:"name"`
	Telephone string `json:"telephone"`
}