123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- package statistic_report
- import (
- "github.com/beego/beego/v2/client/orm"
- )
- type CompanyAreaGroup struct {
- Province string `description:"所属省份"`
- City string `description:"所属城市"`
- AdminName string `description:"所属销售名称"`
- Num int `description:"汇总次数"`
- CompanyIds string `description:"客户id字符串"`
- TryStage int `description:"试用客户标签:1未分类、2 推进、3 跟踪、4 预备"`
- }
- // GetGroupCompanyList 获取城市分组数据
- func GetGroupCompanyAreaList(condition string, pars []interface{}) (list []*CompanyAreaGroup, err error) {
- o := orm.NewOrm()
- sql := ` SELECT c.province,c.city,count(1) num, GROUP_CONCAT(DISTINCT c.company_id SEPARATOR ',') AS company_ids
- FROM company AS c
- INNER JOIN company_product AS p
- WHERE 1=1
- AND c.company_id = p.company_id
- AND c.enabled = 1
-
- `
- if condition != "" {
- sql += condition
- }
- sql += ` GROUP BY c.city `
- _, err = o.Raw(sql, pars).QueryRows(&list)
- return
- }
- // GetTryGroupCompanyAreaList 获取城市试用分组数据
- func GetTryGroupCompanyAreaList(productId int) (list []*CompanyAreaGroup, err error) {
- o := orm.NewOrm()
- sql := ` SELECT c.province,c.city,count(1) num,b.try_stage, GROUP_CONCAT(DISTINCT c.company_id SEPARATOR ',') AS company_ids
- FROM company AS c
- left JOIN (select * from company_product where product_id=? AND status = "试用") b on b.company_id= c.company_id
- WHERE 1=1
- AND c.enabled = 1 and b.status = "试用" and b.product_id = ? GROUP BY c.city, b.try_stage`
- _, err = o.Raw(sql, productId, productId).QueryRows(&list)
- return
- }
- // CompanyViewTotalAreaSlice 获取客户的浏览次数
- type CompanyViewTotalAreaSlice struct {
- CompanyIds string `description:"客户id字符串"`
- Num int `description:"用户浏览次数"`
- Province string `description:"所属省份"`
- City string `description:"所属城市"`
- }
- // GetCompanyViewTotalAreaList 获取客户的浏览数
- func GetCompanyViewTotalAreaList(condition string, pars []interface{}, viewNum int, sumNumType string) (items []*CompanyViewTotalAreaSlice, err error) {
- o := orm.NewOrm()
- sql := `SELECT
- count(
- DISTINCT ( company_id )) num,
- GROUP_CONCAT( DISTINCT company_id SEPARATOR ',' ) AS company_ids,
- city,
- province
- FROM
- (
- SELECT
- sum( a.view_num ) sum_num,
- a.company_id,
- c.city,
- c.province,
- b.product_id
- FROM
- company_view_statistics a
- JOIN company c ON a.company_id = c.company_id
- JOIN company_product b ON a.company_id = b.company_id
- WHERE
- 1 =1
- AND c.enabled = 1`
- if condition != "" {
- sql += condition
- }
- childSql := ` sum_num >= `
- if sumNumType == "<" {
- childSql = ` sum_num ` + sumNumType + ` `
- }
- sql += ` GROUP BY company_id) b where 1 = 1 and ` + childSql + `? GROUP BY city`
- _, err = o.Raw(sql, pars, viewNum).QueryRows(&items)
- return
- }
- func GetCompanyCountGroupByCity(condition string) (list []*CompanyAreaGroup, err error) {
- o := orm.NewOrm()
- sqlCount := ` SELECT
- c.province,
- c.city,
- count(
- DISTINCT ( c.company_id )) num,
- GROUP_CONCAT( DISTINCT c.company_id SEPARATOR ',' ) AS company_ids
- FROM company_product AS p
- INNER JOIN company AS c
- WHERE 1=1 AND p.status="试用" AND p.company_id = c.company_id" ` + condition
- if condition != "" {
- sqlCount += condition
- }
- sqlCount += ` GROUP BY c.city `
- _, err = o.Raw(sqlCount).QueryRows(&list)
- return
- }
- func GetAllCompanyArea() (list []*CompanyAreaGroup, err error) {
- o := orm.NewOrm()
- sql := ` SELECT province,city FROM company GROUP BY city `
- _, err = o.Raw(sql).QueryRows(&list)
- return
- }
|