123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295 |
- package yb
- import (
- "github.com/beego/beego/v2/client/orm"
- "time"
- )
- type ApplyRecord struct {
- ApplyRecordId int `orm:"column(apply_record_id);pk" description:"申请记录ID"`
- UserId int `description:"微信用户ID"`
- BusinessCardUrl string `description:"名片"`
- RealName string `description:"用户姓名"`
- CompanyName string `description:"公司名称"`
- Mobile string `description:"手机号"`
- Email string `description:"邮箱"`
- Permission string `description:"关注品种/申请权限,多个权限用英文,隔开"`
- FiccSellerId int `description:"ficc销售id,没有开通ficc权限的话,那么所属销售id为0"`
- SellerName string `description:"销售姓名,多个产品销售用/隔开"`
- Status string `description:"用户状态"`
- CompanyIdPay int `description:"已付费客户公司id"`
- CompanyNamePay string `description:"已付费客户公司名称"`
- OpStatus int `description:"操作状态,0:未处理,1:已处理"`
- DealTime time.Time `description:"处理时间"`
- SysUserId int `description:"处理人id"`
- CreateTime time.Time `description:"创建时间"`
- IsMove int `description:"是否已移动"`
- Source int `description:"申请来源:1-我的 2-活动 3-图库"`
- MarkGroup string `description:"标记分组"`
- }
- func (applyRecord *ApplyRecord) TableName() string {
- return "yb_apply_record"
- }
- type ApplyList struct {
- ApplyRecordId int `orm:"column(apply_record_id);pk" description:"申请记录ID"`
- UserId int `description:"微信用户ID"`
- BusinessCardUrl string `description:"名片"`
- RealName string `description:"用户姓名"`
- CompanyId int `description:"现有用户公司ID/潜在用户此ID=1"`
- CompanyName string `description:"现有用户公司名称"`
- UserCompanyName string `description:"潜在客户自填公司名称"`
- Mobile string `description:"手机号"`
- Email string `description:"邮箱"`
- Permission string `description:"关注品种/申请权限,多个权限用英文,隔开"`
- SellerName string `description:"销售姓名"`
- Status string `description:"用户状态"`
- OpStatus int `description:"操作状态"`
- IsMove int `description:"是否已移动"`
- Source int `description:"申请来源 1-我的 2-活动 3-图库"`
- SourceAgent int `description:"申请入口来源,1:小程序,2:pc"`
- FromPage string `description:"申请来源具体页面"`
- CreateTime time.Time `description:"申请时间"`
- }
- type ApplyListV2 struct {
- UserId int `description:"微信用户ID"`
- BusinessCardUrl string `description:"名片"`
- RealName string `description:"用户姓名"`
- CompanyId int `description:"现有用户公司ID/潜在用户此ID=1"`
- CompanyName string `description:"现有用户公司名称"`
- Mobile string `description:"手机号"`
- Email string `description:"邮箱"`
- Permission string `description:"关注品种/申请权限,多个权限用英文,隔开"`
- SellerName string `description:"现销售姓名"`
- SellerId int `description:"现销售ID"`
- Status string `description:"用户状态"`
- OpStatus int `description:"操作状态"`
- IsMove int `description:"是否已移动"`
- Source int `description:"申请来源 1-我的 2-活动 3-图库"`
- SourceAgent int `description:"申请入口来源,1:小程序,2:pc"`
- FromPage string `description:"申请来源具体页面`
- ApplyStatus string `description: 申请状态:已申请,未申请`
- LastTime time.Time `description:"最新提交时间"`
- LastTimeStr string `description:"最新提交时间"`
- ViewTotal int `description:"累计阅读次数"`
- ApplyTotal int `description:"累计提交次数"`
- LastViewTimeStr string `description:"最近一次阅读时间"`
- LastViewTime time.Time `description:"最近一次阅读时间"`
- ApplyRecordId int `description:"申请记录ID"`
- OriginSellerName string `description:"原销售姓名"`
- RegisterSource int `description:"注册来源"`
- SourceStr string `description:"来源"`
- DelBtn bool `description:"是否展示删除按钮,true展示,false隐藏"`
- MarkGroup string `description:"标记分组"`
- }
- // GetApplyRecordList 获取申请记录列表
- func GetApplyRecordList(condition string, pars []interface{}, startSize, pageSize int) (total int, list []*ApplyList, err error) {
- o := orm.NewOrm()
- fields := "a.apply_record_id, a.user_id, a.real_name, a.business_card_url, a.company_name AS user_company_name," +
- " a.mobile, a.email, a.permission, a.seller_name, a.op_status, a.create_time, a.status, a.is_move, a.source, a.source_agent, a.from_page," +
- " b.company_id, b.company_name"
- sql := "SELECT " + fields + " FROM yb_apply_record AS a LEFT JOIN company_product AS b ON a.company_id_pay = b.company_id AND b.product_id = 1 WHERE 1=1"
- sql += condition
- sql += ` ORDER BY a.create_time desc`
- totalSql := `SELECT COUNT(1) total FROM (` + sql + `) z `
- err = o.Raw(totalSql, pars).QueryRow(&total)
- sql += ` LIMIT ?,?`
- _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&list)
- return
- }
- // Update 更新申请记录
- func (applyRecord *ApplyRecord) Update(cols []string) (err error) {
- o := orm.NewOrm()
- _, err = o.Update(applyRecord, cols...)
- return
- }
- // GetApplyRecordById 获取申请记录
- func GetApplyRecordById(applyRecordId int) (item *ApplyRecord, err error) {
- o := orm.NewOrm()
- sql := "select * from yb_apply_record where apply_record_id = ?"
- err = o.Raw(sql, applyRecordId).QueryRow(&item)
- return
- }
- // DealUnDealFiccApplyByIds 批量处理用户申请标记状态
- func DealUnDealFiccApplyByIds(userId, sysUserId int, dealTime time.Time) (err error) {
- sql := `update yb_apply_record set op_status=1, is_move=1, sys_user_id=?, deal_time=? where user_id=? and (op_status = 0 or is_move=0)`
- _, err = orm.NewOrm().Raw(sql, sysUserId, dealTime, userId).Exec()
- return
- }
- // DealUserApplyRecords 标记处理用户所有待处理申请记录
- func DealUserApplyRecords(userId, sysUserId int, dealTime time.Time) (err error) {
- o := orm.NewOrm()
- sql := `UPDATE yb_apply_record SET op_status=1, sys_user_id=?, deal_time=? WHERE op_status=0 AND user_id=?`
- _, err = o.Raw(sql, sysUserId, dealTime, userId).Exec()
- return
- }
- // GetApplyRecordListV2 获取用户申请记录列表
- func GetApplyRecordListV2(condition string, pars []interface{}, startTime string, startSize, pageSize int) (list []*ApplyListV2, err error) {
- o := orm.NewOrm()
- sql := `
- SELECT
- a.user_id,
- a.real_name,
- a.mobile,
- a.email,
- a.company_id,
- IF(a.company_id > 1,b.company_name,a.note) AS company_name,
- #(SELECT count(1) FROM yb_apply_record AS ya WHERE ya.user_id=a.user_id GROUP BY a.user_id) AS apply_total,
- a.report_last_view_time AS last_view_time,
- a.source as register_source,
- #a.created_time as register_time,
- y.apply_record_id,
- IF(y.apply_record_id > 0,y.create_time, a.created_time) as last_time,
- y.seller_name as origin_seller_name,
- IF(y.apply_record_id > 0,y.status, "潜在用户") as status,
- IF(y.apply_record_id > 0,"已申请", "未申请") as apply_status,
- y.source_agent,
- IF(y.apply_record_id > 0,y.op_status, a.is_deal) as op_status,
- y.permission,
- y.is_move,
- y.source,
- y.from_page,
- IF(y.mark_group = '' OR y.mark_group IS NULL OR y.apply_record_id = 0 OR y.apply_record_id IS NULL , a.mark_group, y.mark_group) AS mark_group,
- y.company_name as user_company_name
- #bp.seller_id,
- #bp.seller_name
- FROM
- wx_user AS a
- LEFT JOIN company AS b ON a.company_id = b.company_id
- LEFT JOIN (SELECT * from company_product where product_id = 1) AS bp ON a.company_id = bp.company_id
- LEFT JOIN (SELECT user_record_id, create_platform, user_id from user_record) AS c ON a.user_id = c.user_id
- LEFT JOIN (SELECT * from yb_apply_record where apply_record_id in (SELECT max(apply_record_id) from yb_apply_record GROUP BY user_id)) as y on a.user_id = y.user_id
- WHERE
- b.enabled = 1
- AND ( y.apply_record_id > 0 or a.company_id=1 )
- AND ( a.mobile IS NOT NULL || a.email IS NOT NULL )
- AND ( a.mobile <> '' OR a.email <> '' )
- AND ( c.create_platform in (1,3,6,9) OR (c.create_platform IS NULL and a.register_platform!=7) )
- AND ((y.apply_record_id > 0 and y.create_time > ?) OR (y.apply_record_id is null AND a.created_time > ?) )
- AND ( y.source > 0 OR y.source IS NULL)
- `
- sql += condition
- sql += ` GROUP BY a.user_id ORDER BY last_time desc`
- sql += ` LIMIT ?,?`
- //pars = append(pars, startTime)
- //pars = append(pars, startTime)
- _, err = o.Raw(sql, startTime, startTime, pars, startSize, pageSize).QueryRows(&list)
- return
- }
- func GetApplyRecordTotal(condition string, pars []interface{}, startTime string) (total int, err error) {
- o := orm.NewOrm()
- sql := `
- SELECT
- a.user_id
- FROM
- wx_user AS a
- LEFT JOIN company AS b ON a.company_id = b.company_id
- LEFT JOIN (SELECT * from company_product where product_id = 1) AS bp ON a.company_id = bp.company_id
- LEFT JOIN (SELECT user_record_id, create_platform, user_id from user_record) AS c ON a.user_id = c.user_id
- LEFT JOIN (SELECT * from yb_apply_record where apply_record_id in (SELECT max(apply_record_id) from yb_apply_record GROUP BY user_id)) as y on a.user_id = y.user_id
- WHERE
- b.enabled = 1
- AND ( y.apply_record_id > 0 or a.company_id=1)
- AND ( a.mobile IS NOT NULL || a.email IS NOT NULL )
- AND ( a.mobile <> '' OR a.email <> '' )
- AND ( c.create_platform in (1,3,6,9) OR (c.create_platform IS NULL and a.register_platform!=7) )
- AND ((y.apply_record_id > 0 and y.create_time > ?) OR (y.apply_record_id is null AND a.created_time > ?) )
- AND ( y.source > 0 OR y.source IS NULL)
- `
- pars = append(pars, startTime)
- pars = append(pars, startTime)
- sql += condition
- sql += ` GROUP BY a.user_id`
- totalSql := `SELECT COUNT(1) total FROM (` + sql + `) z `
- err = o.Raw(totalSql, pars).QueryRow(&total)
- return
- }
- // GetApplyRecordListV2Export 用户申请记录列表导出
- func GetApplyRecordListV2Export(condition string, pars []interface{}, startTime string) (list []*ApplyListV2, err error) {
- o := orm.NewOrm()
- sql := `
- SELECT
- a.user_id,
- a.real_name,
- a.mobile,
- a.email,
- a.company_id,
- IF(a.company_id > 1,b.company_name,a.note) AS company_name,
- # IF( b.type IN ( 1, 2 ), 1, 0 ) AS is_fee_customer,
- # (SELECT count(1) FROM yb_apply_record AS ya WHERE ya.user_id=a.user_id GROUP BY a.user_id) AS apply_total,
- a.report_last_view_time AS last_view_time,
- a.source as register_source,
- #a.created_time as register_time,
- y.apply_record_id,
- IF(y.apply_record_id > 0,y.create_time, a.created_time) as last_time,
- y.seller_name as origin_seller_name,
- IF(y.apply_record_id > 0,y.status, "潜在用户") as status,
- IF(y.apply_record_id > 0,"已申请", "未申请") as apply_status,
- y.source_agent,
- y.op_status,
- y.permission,
- y.is_move,
- y.source,
- y.from_page,
- y.company_name as user_company_name
- #bp.seller_id,
- #bp.seller_name
- FROM
- wx_user AS a
- LEFT JOIN company AS b ON a.company_id = b.company_id
- LEFT JOIN (SELECT * from company_product where product_id = 1) AS bp ON a.company_id = bp.company_id
- LEFT JOIN (SELECT user_record_id, create_platform, user_id from user_record) AS c ON a.user_id = c.user_id
- LEFT JOIN (SELECT * from yb_apply_record where apply_record_id in (SELECT max(apply_record_id) from yb_apply_record GROUP BY user_id)) as y on a.user_id = y.user_id
- WHERE
- b.enabled = 1
- AND ( y.apply_record_id > 0 or a.company_id=1)
- AND ( a.mobile IS NOT NULL || a.email IS NOT NULL )
- AND ( a.mobile <> '' OR a.email <> '' )
- AND ( c.create_platform in (1,3,6,9) OR (c.create_platform IS NULL and a.register_platform!=7) )
- AND ((y.apply_record_id > 0 and y.create_time > ?) OR (y.apply_record_id is null AND a.created_time > ?) )
- AND ( y.source > 0 OR y.source IS NULL)
- `
- sql += condition
- sql += ` GROUP BY a.user_id ORDER BY last_time desc`
- //pars = append(pars, startTime)
- //pars = append(pars, startTime)
- _, err = o.Raw(sql, startTime, startTime, pars).QueryRows(&list)
- return
- }
- type UserApplyTotal struct {
- UserId int
- Total int
- }
- // GetTotalByUserIds 获取用户的申请数
- func GetTotalByUserIds(userIdsStr string) (list []*UserApplyTotal, err error) {
- o := orm.NewOrm()
- sql := "SELECT count(*) as total, user_id FROM yb_apply_record WHERE user_id in (" + userIdsStr + ") GROUP BY user_id"
- _, err = o.Raw(sql).QueryRows(&list)
- return
- }
- // DelApplyRecordByUserId 根据用户id删除该用户的所有申请
- func DelApplyRecordByUserId(userId int64) (err error) {
- o := orm.NewOrm()
- sql := ` DELETE FROM yb_apply_record WHERE user_id=? `
- _, err = o.Raw(sql, userId).Exec()
- return
- }
|