package cygx import ( "github.com/beego/beego/v2/client/orm" "github.com/rdlucklib/rdluck_tools/paging" "hongze/hz_crm_api/models/company" "hongze/hz_crm_api/utils" "time" ) // CygxEnterScore 结构体代表了 cygx_enter_score 表格 type CygxEnterScore struct { EnterScoreId int `orm:"column(enter_score_id);pk";comment:"主键"` CompanyId int `comment:"公司ID"` CompanyName string `comment:"客户名称"` StartDate string `comment:"开始日期"` EndDate string `comment:"结束日期"` Quarter string `comment:"季度"` QuarterDate string `comment:"季度带有年月日的多个数组转成的字符串"` EnterScoreType int `comment:"录入方式 1:按评分录入、2:按比例录入"` Ranking string `comment:"排名"` IsMergeScoring int `comment:"是否合并打分"` SecuritiesFirmsName string `comment:"券商名称"` MergeProportion float64 `comment:"合并占比"` RaiProportionTotal float64 `comment:"权益研究员占比"` FiccProportionTotal float64 `comment:"FICC研究员占比"` ProportionTotal float64 `comment:"合计总占比"` SellerId int `comment:"所属销售id"` SellerName string `comment:"所属销售名称"` AdminId int `comment:"操作人ID"` AdminName string `comment:"操作人姓名"` CreateTime time.Time `comment:"创建时间"` ModifyTime time.Time `comment:"更新时间"` } type CygxEnterScoreDetailResp struct { EnterScoreId int `comment:"录分ID"` CompanyId int `comment:"公司ID,公司标识符"` CompanyName string `comment:"公司名称"` StartDate string `comment:"开始日期"` EndDate string `comment:"结束日期"` Quarter []string `comment:"季度,评分季度"` EnterScoreType int `comment:"录入方式 1:按评分录入、2:按比例录入"` Ranking string `comment:"排名"` IsMergeScoring int `comment:"是否合并打分"` SecuritiesFirmsName string `comment:"券商名称"` MergeProportion float64 `comment:"合并占比"` ProportionTotal float64 `comment:"合计总占比"` RaiProportionTotal float64 `comment:"权益研究员占比"` FiccProportionTotal float64 `comment:"FICC研究员占比"` EnterScoreObj EnterScoreDateObj `comment:"按评分录入"` PercentageObj EnterScoreDateObj `comment:"按比例录入"` } // 行业 type EnterScoreDateObj struct { ListRai []*EnterScorePermissionListResp //权益列表 ListFicc []*EnterScorePermissionListResp //FICC列表 ListGroup []*EnterScoreGroupListResp //其他配置信息 } // 行业 type EnterScorePermissionListResp struct { ChartPermissionName string `description:"行业名称"` Proportion float64 `description:"占比"` ProportionListText []string `description:"占比列表"` EnterScoreId int `comment:"录分ID"` List []*EnterScoreRealNameListResp } // 占比描述 type EnterScoreProportionTextResp struct { ProportionText string } // 研究员 type EnterScoreRealNameListResp struct { RealName string `comment:"研究员姓名"` Proportion float64 `comment:"占比"` ProportionListText []string `description:"占比列表"` ChartPermissionName string `comment:"行业名称"` } // 其他分组 type EnterScoreGroupListResp struct { GroupName string `description:"组名"` Proportion float64 `description:"占比"` ProportionListText []string `description:"占比列表"` } // 添加或修改录分时的入参结构体 type UpdateEnterScoreReq struct { EnterScoreId int `comment:"录分ID"` CompanyId int `comment:"公司ID"` CompanyName string `comment:"客户名称"` StartDate string `comment:"开始日期"` EndDate string `comment:"结束日期"` Quarter []string `comment:"季度"` EnterScoreType int `comment:"录入方式 1:按评分录入、2:按比例录入"` Ranking string `comment:"排名"` IsMergeScoring int `comment:"是否合并打分"` SecuritiesFirmsName string `comment:"券商名称"` MergeProportion float64 `comment:"合并占比"` RaiProportionTotal float64 `comment:"权益研究员占比"` FiccProportionTotal float64 `comment:"FICC研究员占比"` ProportionTotal float64 `comment:"合计总占比"` ListRai []*EnterScorePermissionListResp //权益列表 ListFicc []*EnterScorePermissionListResp //FICC列表 ListGroup []*EnterScoreGroupListResp //其他配置信息 } type EnterScoreIdReq struct { EnterScoreId int `comment:"录分ID"` } // CygxEnterScoreGroup 结构体代表 cygx_enter_score_group 表 type CygxEnterScoreGroup struct { EnterScoreGroupId int `orm:"column(enter_score_group_id);pk";comment:"主键"` EnterScoreId int `comment:"cygx_enter_score主键"` CompanyId int `comment:"公司ID"` GroupName string `comment:"名称"` Proportion float64 `comment:"占比"` AdminId int `comment:"操作人ID"` AdminName string `comment:"操作人姓名"` CreateTime time.Time `comment:"创建时间"` ModifyTime time.Time `comment:"更新时间"` } // CygxEnterScorePermission 结构体代表 cygx_enter_score_permission 表 type CygxEnterScorePermission struct { EnterScorePermissionId int `orm:"column(enter_score_permission_id);pk";comment:"主键"` EnterScoreId int `comment:"cygx_enter_score主键"` CompanyId int `comment:"公司ID"` ChartPermissionName string `comment:"名称"` Proportion float64 `comment:"占比"` ProductId float64 `comment:"产品id,1:FICC、2:权益"` AdminId int `comment:"操作人ID"` AdminName string `comment:"操作人姓名"` CreateTime time.Time `comment:"创建时间"` ModifyTime time.Time `comment:"更新时间"` } // CygxEnterScoreResearcher 结构体代表 cygx_enter_score_researcher 表 type CygxEnterScoreResearcher struct { EnterScoreDataId int `orm:"column(enter_score_data_id);pk";comment:"主键"` EnterScoreId int `comment:"cygx_enter_score主键"` CompanyId int `comment:"公司ID"` Proportion float64 `comment:"占比"` RealName string `comment:"研究员姓名"` ChartPermissionName string `comment:"名称"` ProductId float64 `comment:"产品id,1:FICC、2:权益"` AdminId int `comment:"操作人ID"` AdminName string `comment:"操作人姓名"` CreateTime time.Time `comment:"创建时间"` ModifyTime time.Time `comment:"更新时间"` } // 更新派点信息 func AddCygxEnterScore(item *CygxEnterScore, itemsPermission []*CygxEnterScorePermission, itemsResearcher []*CygxEnterScoreResearcher, itemsGroup []*CygxEnterScoreGroup) (err error) { o := orm.NewOrmUsingDB("hz_cygx") to, err := o.Begin() if err != nil { return } defer func() { if err != nil { _ = to.Rollback() } else { _ = to.Commit() } }() newId, err := to.Insert(item) if err != nil { return } enterScoreId := int(newId) for _, v := range itemsPermission { v.EnterScoreId = enterScoreId } for _, v := range itemsResearcher { v.EnterScoreId = enterScoreId } for _, v := range itemsGroup { v.EnterScoreId = enterScoreId } //批量添加行业信息 _, err = to.InsertMulti(len(itemsPermission), itemsPermission) if err != nil { return } //批量添加研究员信息 _, err = to.InsertMulti(len(itemsResearcher), itemsResearcher) if err != nil { return } //批量添加自定义分组信息 _, err = to.InsertMulti(len(itemsGroup), itemsGroup) if err != nil { return } return } // 更新派点信息 func UpdateCygxEnterScore(item *CygxEnterScore, itemsPermission []*CygxEnterScorePermission, itemsResearcher []*CygxEnterScoreResearcher, itemsGroup []*CygxEnterScoreGroup) (err error) { o := orm.NewOrmUsingDB("hz_cygx") to, err := o.Begin() if err != nil { return } defer func() { if err != nil { _ = to.Rollback() } else { _ = to.Commit() } }() _, err = to.Update(item, "CompanyId", "CompanyName", "StartDate", "EndDate", "Quarter", "QuarterDate", "EnterScoreType", "Ranking", "IsMergeScoring", "SecuritiesFirmsName", "MergeProportion", "RaiProportionTotal", "FiccProportionTotal", "ProportionTotal", "SellerId", "SellerName", "AdminId", "AdminName", "ModifyTime") if err != nil { return } enterScoreId := item.EnterScoreId //批量删除行业信息 sql := `DELETE FROM cygx_enter_score_permission WHERE enter_score_id = ?` _, err = to.Raw(sql, enterScoreId).Exec() if err != nil { return } //批量删除研究员信息 sql = ` DELETE FROM cygx_enter_score_researcher WHERE enter_score_id = ?` _, err = to.Raw(sql, enterScoreId).Exec() if err != nil { return } //批量删除自定义分组信息 sql = ` DELETE FROM cygx_enter_score_group WHERE enter_score_id = ?` _, err = to.Raw(sql, enterScoreId).Exec() if err != nil { return } for _, v := range itemsPermission { v.EnterScoreId = enterScoreId } for _, v := range itemsResearcher { v.EnterScoreId = enterScoreId } for _, v := range itemsGroup { v.EnterScoreId = enterScoreId } //批量添加行业信息 _, err = to.InsertMulti(len(itemsPermission), itemsPermission) if err != nil { return } //批量添加研究员信息 _, err = to.InsertMulti(len(itemsResearcher), itemsResearcher) if err != nil { return } //批量添加自定义分组信息 _, err = to.InsertMulti(len(itemsGroup), itemsGroup) if err != nil { return } return } // 通过ID获取详情 func GetCygxEnterScoreInfoById(id int) (item *CygxEnterScore, err error) { o := orm.NewOrmUsingDB("hz_cygx") sql := `SELECT * FROM cygx_enter_score WHERE enter_score_id = ? ` err = o.Raw(sql, id).QueryRow(&item) return } // 行业列表 func GetCygxEnterScorePermissionListById(enterScoreId int) (items []*CygxEnterScorePermission, err error) { o := orm.NewOrmUsingDB("hz_cygx") sql := `SELECT * FROM cygx_enter_score_permission WHERE enter_score_id = ? ` _, err = o.Raw(sql, enterScoreId).QueryRows(&items) return } // 根据多个录分ID获取行业列表 func GetCygxEnterScorePermissionListByIds(enterScoreIds []int) (items []*CygxEnterScorePermission, err error) { lenArr := len(enterScoreIds) if lenArr == 0 { return } o := orm.NewOrmUsingDB("hz_cygx") sql := `SELECT * FROM cygx_enter_score_permission WHERE enter_score_id IN (` + utils.GetOrmInReplace(lenArr) + `) ` _, err = o.Raw(sql, enterScoreIds).QueryRows(&items) return } // 研究员列表 func GeCygxEnterScoreResearcherListById(enterScoreId int) (items []*CygxEnterScoreResearcher, err error) { o := orm.NewOrmUsingDB("hz_cygx") sql := `SELECT * FROM cygx_enter_score_researcher WHERE enter_score_id = ? ` _, err = o.Raw(sql, enterScoreId).QueryRows(&items) return } // 根据多个录分ID获取研究员列表 func GeCygxEnterScoreResearcherListByIds(enterScoreIds, newcompanyIds []int) (items []*CygxEnterScoreResearcher, err error) { lenArr := len(enterScoreIds) if lenArr == 0 { return } o := orm.NewOrmUsingDB("hz_cygx") sql := `SELECT * FROM cygx_enter_score_researcher WHERE enter_score_id IN (` + utils.GetOrmInReplace(lenArr) + `) AND proportion > 0 ` //过滤销售可见的公司与研究员 lenCompany := len(newcompanyIds) if lenCompany > 0 { sql += ` AND company_id IN (` + utils.GetOrmInReplace(lenCompany) + `) ` _, err = o.Raw(sql, enterScoreIds, newcompanyIds).QueryRows(&items) } else { _, err = o.Raw(sql, enterScoreIds).QueryRows(&items) } return } // 自定义分组列表 func GeCygxEnterScoreGroupListById(enterScoreId int) (items []*CygxEnterScoreGroup, err error) { o := orm.NewOrmUsingDB("hz_cygx") sql := `SELECT * FROM cygx_enter_score_group WHERE enter_score_id = ? ` _, err = o.Raw(sql, enterScoreId).QueryRows(&items) return } // 根据多个录分ID获取自定义分组列表 func GeCygxEnterScoreGroupListByIds(enterScoreIds []int) (items []*CygxEnterScoreGroup, err error) { lenArr := len(enterScoreIds) if lenArr == 0 { return } o := orm.NewOrmUsingDB("hz_cygx") sql := `SELECT * FROM cygx_enter_score_group WHERE enter_score_id IN (` + utils.GetOrmInReplace(lenArr) + `) ` _, err = o.Raw(sql, enterScoreIds).QueryRows(&items) return } // 获取列表 func GetCygxEnterScoreList(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxEnterScore, err error) { o := orm.NewOrmUsingDB("hz_cygx") sql := `SELECT * FROM cygx_enter_score WHERE 1 = 1 ` if condition != "" { sql += condition } sql += ` LIMIT ?,?` _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items) return } // 根据券商名称获取列表 func GetCygxEnterScoreListBySecuritiesFirmsName(keyWord string) (items []*CygxEnterScore, err error) { o := orm.NewOrmUsingDB("hz_cygx") sql := `SELECT company_id FROM cygx_enter_score WHERE 1 = 1 ` sql += ` AND securities_firms_name LIKE '%` + keyWord + `%' ` sql += ` GROUP BY company_id ` _, err = o.Raw(sql).QueryRows(&items) return } // 获取数量 func GetCygxEnterScoreCount(condition string, pars []interface{}) (count int, err error) { o := orm.NewOrmUsingDB("hz_cygx") sqlCount := ` SELECT COUNT(1) AS count FROM cygx_enter_score WHERE 1= 1 ` if condition != "" { sqlCount += condition } err = o.Raw(sqlCount, pars).QueryRow(&count) return } type EnterScoreListResp struct { EnterScoreId int `comment:"录分ID"` CompanyId int `comment:"公司ID,公司标识符"` CompanyName string `comment:"公司名称"` Quarter []string `comment:"季度,评分季度"` EnterScoreType int `comment:"录入方式 1:按评分录入、2:按比例录入"` Ranking string `comment:"排名"` IsMergeScoring int `comment:"是否合并打分"` SecuritiesFirmsName string `comment:"券商名称"` ProportionTotal float64 `comment:"合计总占比"` SellerId int `comment:"所属销售id"` SellerName string `comment:"所属销售名称"` CreateTime string `comment:"创建时间"` ModifyTime string `comment:"更新时间"` } type GetCygxEnterScoreListRep struct { Paging *paging.PagingItem `description:"分页数据"` List []*EnterScoreListResp } // 删除 func DeleteEnterScore(enterScoreId int) (err error) { o := orm.NewOrmUsingDB("hz_cygx") to, err := o.Begin() if err != nil { return } defer func() { if err != nil { _ = to.Rollback() } else { _ = to.Commit() } }() //删除单条录分信息 sql := `DELETE FROM cygx_enter_score WHERE enter_score_id = ?` _, err = to.Raw(sql, enterScoreId).Exec() if err != nil { return } //批量删除行业信息 sql = `DELETE FROM cygx_enter_score_permission WHERE enter_score_id = ?` _, err = to.Raw(sql, enterScoreId).Exec() if err != nil { return } //批量删除研究员信息 sql = ` DELETE FROM cygx_enter_score_researcher WHERE enter_score_id = ?` _, err = to.Raw(sql, enterScoreId).Exec() if err != nil { return } //批量删除自定义分组信息 sql = ` DELETE FROM cygx_enter_score_group WHERE enter_score_id = ?` _, err = to.Raw(sql, enterScoreId).Exec() if err != nil { return } return } type ScoreOverviewListResp struct { ListCompany []*company.CompanyNameAndId ListPermission []*EnterScorePermissionListResp ListGroup []*EnterScoreGroupListResp } type RankingOverviewListResp struct { ListCompany []*company.CompanyNameAndId ListQuarterDate []*QuarterDateListResp } // 排名总览 type QuarterDateListResp struct { Quarter string `description:"季度"` ProportionListText []string `description:"占比列表"` }