123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352 |
- package models
- import (
- "github.com/beego/beego/v2/client/orm"
- "time"
- )
- type CompanyJson struct {
- CompanyName string `json:"name"` //公司名称
- ShortName string `json:"short_name"` //公司简称
- CreditCode string `json:"social"` //社会信用代码
- City string `json:"city"` //所在地级市或直辖市
- SignType string `json:"sign_type"` //客户重要度(A类、B类、C类、D类)
- Fe string `json:"f_e"` //客户类型(FICC、权益、策略)
- IndustryName string `json:"industry"` //所属行业(公募、私募、券商资管、保险、海外、其他类型)
- Mobile string `json:"sale_phone"` //所属销售(销售手机号)
- Status string `json:"status"` //客户状态(正式、试用)
- //Permission string `json:"permissions"` //客户权限(医药,科技,智造,消费,策略,专家,路演服务,研选)
- StartDate string `json:"start_time"` //服务期限开始时间
- EndDate string `json:"end_time"` //服务期限结束时间
- Info string `json:"info"` //简介
- CreatedTime string `json:"create_time"` //创建时间
- PermissionData []*PermissionData `json:"permission_data"` //创建时间
- //CreatedTimes string //创建时间
- EndDateTime time.Time //创建时间
- Cid int // 公司ID
- }
- type PermissionDataList struct {
- PermissionData []*PermissionData
- }
- type PermissionData struct {
- PermissionName string `json:"permission_name"` //权限名称
- StartTime string `json:"start_time"` //权限开始时间
- EndTime string `json:"end_time"` //权限结束时间
- IsTryOut int `json:"is_try_out"` //权限是否试用:0=否,1=是
- Money int `json:"money"` //权限是否试用:0=否,1=是
- }
- type UserJson struct {
- CreditCode string `json:"social"` //社会信用代码
- RealName string `json:"name"` //昵称
- Mobile string `json:"phone"` //手机号1
- CountryCode string `json:"area_code"` //国家号1(+86..)
- OutboundMobile string `json:"phone2"` //手机号2
- OutboundCountryCode string `json:"area_code2"` //国家号2(+86..)
- Telephone string `json:"machine"` //座机
- MachineAreaCode string `json:"machine_area_code"` //座机国家号(+86..)
- Sex string `json:"sex"` //性别(男、女)
- Email string `json:"email"` //电子邮箱,比如 example@qq.com
- Department string `json:"department"` //部门
- Position string `json:"position"` //职位
- Level string `json:"level"` //职位等级(研究员、基金经理、部门总监)
- IsMaker string `json:"policymakers"` //是否决策人(是、否)
- CreatedTime string `json:"create_time"` //创建时间
- }
- type CompanyJsonList struct {
- SyncData *[]CompanyJson `json:"sync_data"`
- }
- type CompanyUnJsonList struct {
- SyncData []CompanyJson `json:"sync_data"`
- }
- // 删除用户
- type ShangHaiCrmUserDeleteResp struct {
- Social string `json:"social"`
- Mobile string `json:"phone"`
- Name string `json:"name"`
- }
- // 获取公司
- func GetSendCompanyList(condition string) (items []*CompanyJson, err error) {
- o := orm.NewOrmUsingDB("weekly_report")
- sql := ` SELECT
- c.company_name,
- c.company_id as cid,
- c.credit_code,
- c.city,
- p.industry_name,
- am.real_name,
- am.mobile,
- p.status,
- p.end_date as end_date_time,
- UNIX_TIMESTAMP( p.start_date ) AS start_date,
- UNIX_TIMESTAMP( p.end_date ) AS end_date,
- UNIX_TIMESTAMP( a.created_time ) AS created_time,
- (SELECT GROUP_CONCAT(DISTINCT b.chart_permission_name ORDER BY b.sort ASC SEPARATOR ',')
- FROM company_report_permission AS a
- INNER JOIN chart_permission AS b ON a.chart_permission_id=b.chart_permission_id
- INNER JOIN company_product AS c ON a.company_id=c.company_id AND a.product_id=c.product_id
- WHERE a.company_id=cid
- AND c.enabled = 1
- AND b.cygx_auth=1
- AND a.STATUS IN ( '正式', '试用', '永续' )) AS permission
- FROM
- company_report_permission AS a
- INNER JOIN chart_permission AS b ON a.chart_permission_id = b.chart_permission_id
- INNER JOIN company_product AS p ON a.company_id = p.company_id
- INNER JOIN company AS c ON c.company_id = a.company_id
- INNER JOIN admin AS am ON am.admin_id = p.seller_id
- AND a.product_id = p.product_id
- WHERE
- 1 = 1
- AND c.enabled = 1
- AND b.cygx_auth = 1
- AND p.STATUS IN ( '正式', '试用','冻结','流失' )
- AND( c.credit_code LIKE '91%' OR c.credit_code LIKE 'HZ%' )
- AND p.product_id = 2 ` + condition +
- `GROUP BY
- c.company_id `
- _, err = o.Raw(sql).QueryRows(&items)
- return
- }
- type PermissionDataResp struct {
- CompanyId int `description:"公司ID"`
- PermissionName string `description:"行业名称"`
- Status string `description:"状态"`
- StartDate time.Time `description:"行业名称"`
- EndDate time.Time `description:"行业名称"`
- }
- func GetSendCompanyPermissionDataList(condition string, pars []interface{}) (items []*PermissionDataResp, err error) {
- o := orm.NewOrmUsingDB("weekly_report")
- sql := ` SELECT
- company_id,
- c.permission_name,
- cp.status,
- cp.end_date,
- cp.start_date
- FROM
- company_report_permission AS cp
- INNER JOIN chart_permission AS c ON cp.chart_permission_id = c.chart_permission_id
- WHERE
- 1 = 1
- AND cp.STATUS IN ( '正式', '试用', '永续' )
- AND c.chart_permission_name IN ( '医药', '消费', '科技', '智造', '策略', '买方研选', '专家', '路演服务' ) ` + condition + ` GROUP BY c.permission_name, cp.company_id `
- _, err = o.Raw(sql, pars).QueryRows(&items)
- return
- }
- // 获取FICC公司
- func GetSendCompanyFiccList(condition string) (items []*CompanyJson, err error) {
- o := orm.NewOrmUsingDB("weekly_report")
- sql := ` SELECT
- c.company_name,
- c.company_id AS cid,
- c.credit_code,
- c.city,
- p.industry_name,
- am.real_name,
- am.mobile,
- p.status,
- p.end_date AS end_date_time,
- UNIX_TIMESTAMP( p.start_date ) AS start_date,
- UNIX_TIMESTAMP( p.end_date ) AS end_date,
- UNIX_TIMESTAMP( a.created_time ) AS created_time,
- (
- SELECT
- GROUP_CONCAT( DISTINCT b.chart_permission_name ORDER BY b.sort ASC SEPARATOR ',' )
- FROM
- company_report_permission AS a
- INNER JOIN chart_permission AS b ON a.chart_permission_id = b.chart_permission_id
- INNER JOIN company_product AS c ON a.company_id = c.company_id
- AND a.product_id = c.product_id
- WHERE
- a.company_id = cid
- AND c.enabled = 1
- AND b.cygx_auth = 1
- AND a.STATUS IN ( '正式', '试用', '永续' )) AS permission
- FROM
- company_report_permission AS a
- INNER JOIN chart_permission AS b ON a.chart_permission_id = b.chart_permission_id
- INNER JOIN company_product AS p ON a.company_id = p.company_id
- INNER JOIN company AS c ON c.company_id = a.company_id
- INNER JOIN admin AS am ON am.admin_id = p.seller_id
- AND a.product_id = p.product_id
- WHERE
- 1 = 1
- AND c.enabled = 1
- AND b.cygx_auth = 1
- AND p.STATUS IN ( '正式', '试用','冻结','流失' )
- AND ( c.credit_code LIKE '91%' OR c.credit_code LIKE 'HZ%' )
- AND p.product_id = 1 ` + condition +
- `AND c.company_id NOT IN (
- SELECT
- c.company_id
- FROM
- company_report_permission AS a
- INNER JOIN chart_permission AS b ON a.chart_permission_id = b.chart_permission_id
- INNER JOIN company_product AS p ON a.company_id = p.company_id
- INNER JOIN company AS c ON c.company_id = a.company_id
- INNER JOIN admin AS am ON am.admin_id = p.seller_id
- AND a.product_id = p.product_id
- WHERE
- 1 = 1
- AND c.enabled = 1
- AND b.cygx_auth = 1
- AND p.STATUS IN ( '正式', '试用' ,'冻结','流失')
- AND ( c.credit_code LIKE '91%' OR c.credit_code LIKE 'HZ%' )
- AND p.product_id = 2
- GROUP BY
- c.company_id
- )
- GROUP BY
- c.company_id `
- _, err = o.Raw(sql).QueryRows(&items)
- return
- }
- // 获取用户
- func GetSendUserList(condition string) (items []*UserJson, err error) {
- o := orm.NewOrmUsingDB("weekly_report")
- sql := ` SELECT
- c.credit_code,
- u.real_name,
- u.mobile,
- u.country_code,
- u.outbound_mobile,
- u.outbound_country_code,
- u.telephone,
- u.sex,
- u.is_maker,
- c.company_id,
- UNIX_TIMESTAMP( us.create_time ) AS created_time
- FROM
- wx_user AS u
- INNER JOIN company AS c ON c.company_id = u.company_id
- INNER JOIN user_seller_relation AS us ON us.user_id = u.user_id
- WHERE
- 1 = 1
- AND u.company_id IN (
- SELECT
- c.company_id
- FROM
- company_report_permission AS a
- INNER JOIN chart_permission AS b ON a.chart_permission_id = b.chart_permission_id
- INNER JOIN company_product AS p ON a.company_id = p.company_id
- INNER JOIN company AS c ON c.company_id = a.company_id
- INNER JOIN admin AS am ON am.admin_id = p.seller_id
- AND a.product_id = p.product_id
- WHERE
- 1 = 1
- AND c.enabled = 1
- AND b.cygx_auth = 1
- AND p.STATUS IN ( '正式', '试用','冻结','流失')
- AND us.create_time != '' ` + condition +
- `GROUP BY
- c.company_id
- )
- AND us.create_time != ''
- AND u.real_name != ''
- AND u.mobile != ''
- AND ( c.credit_code LIKE '91%' OR c.credit_code LIKE 'HZ%' ) GROUP BY u.user_id ORDER BY c.company_id DESC `
- _, err = o.Raw(sql).QueryRows(&items)
- return
- }
- type WxUserOpLogResp struct {
- CompanyId int `description:"客户ID"`
- UserId int `description:"用户ID"`
- Mobile string `description:"用户ID"`
- }
- type WxUserOpLogDeleteResp struct {
- CompanyId int `description:"客户ID"`
- UserId int `description:"用户ID"`
- Mobile string `description:"用户ID"`
- OriginalUserInfo string `description:"用户详情"`
- CreditCode string `description:"社会信用码"`
- RealName string `description:"真实姓名"`
- }
- // 获取指定时间内更新的用户
- func GetWxUserOpLog(createTime string) (items []*WxUserOpLogResp, err error) {
- o := orm.NewOrmUsingDB("weekly_report")
- sql := ` SELECT
- u.company_id
- FROM
- wx_user_op_log AS l
- INNER JOIN wx_user AS u ON u.mobile = l.mobile
- WHERE
- l.create_time >= '` + createTime + `' GROUP BY u.company_id `
- _, err = o.Raw(sql).QueryRows(&items)
- return
- }
- // 获取指定时间内删除的用户
- func GetWxUserOpLogDelete(createTime string) (items []*WxUserOpLogDeleteResp, err error) {
- o := orm.NewOrmUsingDB("weekly_report")
- sql := `SELECT
- l.*,
- c.credit_code
- FROM
- wx_user_op_log AS l
- INNER JOIN company AS c ON c.company_id = l.company_id WHERE l.log_type = 'delete' AND l.create_time >= '` + createTime + `'`
- _, err = o.Raw(sql).QueryRows(&items)
- return
- }
- // 获取指定时间内被暂停的客户
- func GetWxUserOpLogSuspend(createTime string) (items []*WxUserOpLogDeleteResp, err error) {
- o := orm.NewOrmUsingDB("weekly_report")
- sql := `SELECT
- *
- FROM
- company_operation_record AS p
- WHERE
- remark = '暂停'
- AND p.id IN ( SELECT MAX( p.id ) AS max_id FROM company_operation_record AS p WHERE 1 = 1 AND p.create_time > '` + createTime + `' ) `
- _, err = o.Raw(sql).QueryRows(&items)
- return
- }
- // 获取指定时间内被移动的客户
- func GetCompanyOperationRecord(createTime string) (items []*WxUserOpLogDeleteResp, err error) {
- o := orm.NewOrmUsingDB("weekly_report")
- sql := `SELECT
- *
- FROM
- company_operation_record AS p
- WHERE
- 1=1
- AND p.create_time > '` + createTime + `' GROUP BY company_id `
- _, err = o.Raw(sql).QueryRows(&items)
- return
- }
- // 获取指定时间内试用转冻结,冻结转流失的客户
- func GetCompanyFreezeAndLoss(createTime string) (items []*WxUserOpLogResp, err error) {
- o := orm.NewOrmUsingDB("weekly_report")
- sql := ` SELECT * FROM company_operation_record WHERE status IN ('冻结','流失') AND create_time > '` + createTime + `' GROUP BY company_id `
- _, err = o.Raw(sql).QueryRows(&items)
- return
- }
- // 获取指定时间内被移动的用户
- func GetWxUserOpLogList(startDate, endDate string) (items []*WxUserOpLogResp, err error) {
- o := orm.NewOrmUsingDB("weekly_report")
- sql := ` SELECT company_id,user_id,mobile FROM wx_user_op_log WHERE log_type IN ('move','add') AND create_time >= '` + startDate + `' AND create_time <= '` + endDate + `' GROUP BY user_id `
- _, err = o.Raw(sql).QueryRows(&items)
- return
- }
- // 获取指定时间内被删除的用户
- func GetWxUserOpLogDeleteList(startDate, endDate string) (items []*WxUserOpLogResp, err error) {
- o := orm.NewOrmUsingDB("weekly_report")
- sql := ` SELECT company_id,user_id,mobile FROM wx_user_op_log WHERE log_type IN ('delete') AND create_time >= '` + startDate + `' AND create_time <= '` + endDate + `' GROUP BY user_id `
- _, err = o.Raw(sql).QueryRows(&items)
- return
- }
|