stack_company_statistic.go 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package models
  2. import (
  3. "rdluck_tools/orm"
  4. "time"
  5. )
  6. //存量客户数据表
  7. type StackCompanyStatistic struct {
  8. StatisticId int `orm:"column(statistic_id);pk"`
  9. Type string `description:"数据类型,取值范围:新签客户,续约客户,未续约客户"`
  10. CompanyId int `description:"企业客户id"`
  11. CompanyName string `description:"企业客户名称"`
  12. ProductId int `description:"客户产品id"`
  13. ProductName string `description:"客户产品名称"`
  14. ContractNum int `description:"第几份合同,默认是:1"`
  15. SellerId int `description:"所属销售id"`
  16. SellerName string `description:"所属销售名称"`
  17. GroupId int `description:"所属销售分组id"`
  18. DepartmentId int `description:"所属销售部门id"`
  19. Date string `description:"记录日期"`
  20. StartDate string `description:"服务起始时间"`
  21. EndDate string `description:"服务截止时间"`
  22. RegionType string `description:"所属区域,国内,海外"`
  23. CreateTime time.Time `description:"记录添加时间"`
  24. }
  25. //添加存量客户记录
  26. func AddStackCompanyStatistic(item *StackCompanyStatistic) (err error) {
  27. o := orm.NewOrm()
  28. _, err = o.Insert(item)
  29. return
  30. }
  31. //获取某天的存量客户统计数据数量
  32. func GetStackCompanyCount(dayStr string) (count int, err error) {
  33. o := orm.NewOrm()
  34. //产品权限
  35. sql := `SELECT count(1) count FROM stack_company_statistic WHERE date = ?`
  36. err = o.Raw(sql,dayStr).QueryRow(&count)
  37. return
  38. }
  39. //待签约用户列表
  40. type WillExpireCompanyList struct {
  41. CompanyContractId int `description:"合同id"`
  42. ContractType string `description:"合同类型"`
  43. CompanyId int `description:"企业客户id"`
  44. CompanyName string `description:"企业客户名称"`
  45. ProductId int `description:"产品id"`
  46. ProductName string `description:"产品名称"`
  47. CompanyProductId int `description:"客户购买产品授权id"`
  48. ContractCode string `description:"合同编码"`
  49. StartDate string `description:"合同开始日期"`
  50. EndDate string `description:"合同结束日期"`
  51. Money float64 `description:"合同金额"`
  52. PayMethod string `description:"付款方式"`
  53. PayChannel string `description:"付款渠道"`
  54. ImgUrl string `description:"合同图片"`
  55. CreateTime string `description:"合同创建时间"`
  56. ModifyTime string `description:"合同修改时间"`
  57. Status string `description:"合同审批状态,0:待审批,1:已审批;默认:1"`
  58. RegionType string `description:"企业客户所属区域;可选范围:国内,海外"`
  59. SellerId int `description:"归属销售id"`
  60. GroupId int `description:"归属销售分组id"`
  61. DepartmentId int `description:"所属销售部门id"`
  62. SellerName string `description:"归属销售名称"`
  63. ProductStatus string `description:"产品状态"`
  64. Count int `description:"合同数量"`
  65. }
  66. //新签客户数(存量客户)
  67. func GetStackCompanyListV1() (total int64, items []*WillExpireCompanyList, err error) {
  68. o := orm.NewOrm()
  69. //产品权限
  70. sql := `SELECT *,count(1) count FROM (
  71. SELECT a.*,b.region_type,c.seller_id,c.seller_name,c.company_name,c.group_id,c.department_id,c.status as product_status FROM company_contract a
  72. LEFT JOIN company b ON a.company_id = b.company_id
  73. LEFT JOIN company_product c ON a.company_id = c.company_id and a.product_id=c.product_id where a.status = 1
  74. order by a.end_date desc ) d
  75. GROUP BY company_id,product_id `
  76. total, err = o.Raw(sql).QueryRows(&items)
  77. return
  78. }