package mongo_model

import (
	"time"
)

type AdvicerProjectMongo struct {
	ProjectId             int32                 `json:"projectId" bson:"projectId"`
	ProjectInfo           ProjectInfo           `json:"projectInfo" bson:"projectInfo"`
	RegionValue           RegionValue           `json:"regionValue" bson:"regionValue"`
	CompetitionComparison CompetitionComparison `json:"competitionComparison" bson:"competitionComparison"`
	CoreSellingPoints     CoreSellingPoints     `json:"coreSellingPoints" bson:"coreSellingPoints"`
	SupportingFacilities  SupportingFacilities  `json:"supportingFacilities" bson:"supportingFacilities"`
	DeveloperBacking      DeveloperBacking      `json:"developerBacking" bson:"developerBacking"`
	LastUpdateTime        time.Time             `json:"lastUpdateTime" bson:"lastUpdateTime"`
}

func NewAdvicerProjectMongo() *AdvicerProjectMongo {
	return &AdvicerProjectMongo{}
}

func (a *AdvicerProjectMongo) MongoTableName() string {
	return "advicer_project"
}

type AdvicerProjectMongoEntity struct {
	RegionValue           RegionValue           `json:"regionValue" bson:"regionValue"`
	CompetitionComparison CompetitionComparison `json:"competitionComparison" bson:"competitionComparison"`
	CoreSellingPoints     CoreSellingPoints     `json:"coreSellingPoints" bson:"coreSellingPoints"`
	SupportingFacilities  SupportingFacilities  `json:"supportingFacilities" bson:"supportingFacilities"`
	DeveloperBacking      DeveloperBacking      `json:"developerBacking" bson:"developerBacking"`
}

func (a *AdvicerProjectMongo) Entity() *AdvicerProjectMongoEntity {
	return &AdvicerProjectMongoEntity{
		RegionValue:           a.RegionValue,
		CompetitionComparison: a.CompetitionComparison,
		CoreSellingPoints:     a.CoreSellingPoints,
		SupportingFacilities:  a.SupportingFacilities,
		DeveloperBacking:      a.DeveloperBacking,
	}
}

type ProjectInfo struct {
	Name       string      `json:"projectName" bson:"projectName"`
	Address    string      `json:"projectAddress" bson:"projectAddress"`
	Area       string      `json:"area" bson:"area"`
	HouseTypes []HouseType `json:"houseTypes" bson:"houseTypes"`
}

type HouseType struct {
	Name       string `json:"name" bson:"name"`
	BuildArea  string `json:"buildArea" bson:"buildArea"`
	InnerArea  string `json:"innerArea" bson:"innerArea"`
	UnitPrice  string `json:"unitPrice" bson:"unitPrice"`
	TotalPrice string `json:"totalPrice" bson:"totalPrice"`
}

// RegionValue 区域价值话术库
type RegionValue map[string][]string

func (e *RegionValue) Example() string {
	return `{"区位层级":["成华区2.5环内侧，这个位置真的稀缺","槐树店板块现在是成华区的number one板块","北接三板桥商圈，西靠万象城，东临火车东站","属于淮舜板块，万象城东的核心位置"],"地价论证":["我们地价19500，华晨府20400，棕榈也是2万+","2.5环内现在地价没有低于19000的","面粉贵了，面包不可能便宜"],"板块热度":["从21年新希望锦麟一品开始，这边全是高端盘","龙湖最高端的滨江系列在这里，新希望的锦麟系列也在这里","各大品牌开发商争相恐后都在这边拿地"],"发展规划":["槐树店板块是棋盘成钢之后第二个富人区","整个板块都是300万到900万的总价段","未来全是改善型住宅，没有刚需盘"]}`
}
func (e *RegionValue) Copy() AdviceData {
	return new(RegionValue)
}

func (e *RegionValue) Role() AdviceRole {
	return RoleProject
}

func (e *RegionValue) Desc() string {
	return "区域价值话术"
}

// CompetitionComparison 竞品对比话术
type CompetitionComparison map[string]map[string]string

func (e *CompetitionComparison) Example() string {
	return `{"龙湖滨江云河颂":{"优点承认":"龙湖位置确实好，看沙河公园","价格对比":"他们单价32000-35000，但得房率只有95%，套内算下来36000+","优势突出":"我们得房率118平实得132平，套内单价才33000"},"邦泰云锦":{"定位相似":"邦泰也是首个项目，要打造口碑","价格参考":"他们当时12800拿地，现在卖34000","品质对比":"我们外立面全玻璃幕墙，比他们成本高30%"}}`
}

func (e *CompetitionComparison) Copy() AdviceData {
	return new(CompetitionComparison)
}

func (e *CompetitionComparison) Role() AdviceRole {
	return RoleProject
}

func (e *CompetitionComparison) Desc() string {
	return "竞品对比话术"
}

// CoreSellingPoints  核心卖点
type CoreSellingPoints map[string]string

func (e *CoreSellingPoints) Example() string {
	return `{"产品配置高端":"全玻璃幕墙+铝单板外立面，三层中空氩气玻璃，3.2米层高，方太Y9烟机灶具，高仪卫浴","地段稀缺性":"成华区2.5环内侧核心地段，槐树店板块是成华区number one板块，被三板桥、万象城、火车东站包围","得房率高":"118平实得132平，套内单价33000，比龙湖滨江云河颂套内单价低3000"}`
}
func (e *CoreSellingPoints) Copy() AdviceData {
	return new(CoreSellingPoints)
}

func (e *CoreSellingPoints) Role() AdviceRole {
	return RoleProject
}

func (e *CoreSellingPoints) Desc() string {
	return "核心卖点"
}

// SupportingFacilities  配套体系
type SupportingFacilities map[string]map[string]string

func (e *SupportingFacilities) Example() string {
	return `{"交通配套":{"地铁":"双店路站350米（7号线），槐树店站550米（4号线），未来12号线","道路":"中环路、成洛大道，到春熙路5个站","通达性":"到火车东站2个站，到华西30分钟内"},"教育配套":{"幼儿园":"楼下公立幼儿园","小学":"城市附小锦汇东城（成华区生源最好的学校）","生源优势":"周边新盘都是300万+，生源纯粹"},"医疗配套":{"三甲医院":"市六医院、市二医院3公里内","顶尖医疗":"华西医院锦江院区30分钟车程","便利性":"到华西本部也是30分钟内"}}`
}

func (e *SupportingFacilities) Copy() AdviceData {
	return new(SupportingFacilities)
}

func (e *SupportingFacilities) Role() AdviceRole {
	return RoleProject
}

func (e *SupportingFacilities) Desc() string {
	return "配套体系"
}

// DeveloperBacking  开发商背书
type DeveloperBacking map[string]string

func (e *DeveloperBacking) Example() string {
	return `{"公司实力":"中信资产，多元化民营企业","资金安全":"在河南渑池有铝土矿，每年稳定收入10亿","开发经验":"宜宾有5个项目，贵州2个，成都是首个项目","合作方":"招商铂金物业，首次与外部企业合作"}`
}

func (e *DeveloperBacking) Copy() AdviceData {
	return new(DeveloperBacking)
}

func (e *DeveloperBacking) Role() AdviceRole {
	return RoleProject
}

func (e *DeveloperBacking) Desc() string {
	return "开发商背书"
}
