1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114 |
- package cygx
- import (
- "fmt"
- "hongze/hz_crm_api/models/company"
- "hongze/hz_crm_api/utils"
- //"hongze/hongze_admin/models"
- "github.com/beego/beego/v2/client/orm"
- "github.com/rdlucklib/rdluck_tools/paging"
- "time"
- )
- // 活动详情
- type CygxSignupList struct {
- ActivityId int `orm:"column(activity_id);pk";description:"活动ID 等于0新增活动,大于0修改活动"`
- ActivityName string `description:"活动名称"`
- ActivityTypeName string `description:"活动类型名称"`
- ChartPermissionName string `description:"行业名称"`
- ChartPermissionNames string `description:"行业名称辅助字段,区分研选子分类"`
- LimitPeopleNum int `description:"限制的人数数量"`
- ActivityTime string `description:"活动时间"`
- ActivityTimeText string `description:"活动时间带文字"`
- SignupPeopleNum int `description:"报名人数/预约外呼人数"`
- SignupFailPeopleNum int `description:"报名/预约外呼失败人数"`
- AskNum int `description:"带问人数"`
- AppointmentPeopleNum int `description:"预约纪要人数"`
- ReminderPeopleNum int `description:"设置会议提醒人数"`
- IsShowAppointment bool `description:"是否展示预约纪要"`
- IsHideAppointment int `description:"是否隐藏预约纪要按钮 1是,0 否"`
- ActivityTypeId int `description:"活动类型id"`
- Label string `description:"标签"`
- ActiveState int `description:"活动进行状态 未开始:1、进行中2、已结束3"`
- PublishStatus int `description:"发布状态 1已发布,0未发布"`
- TemporaryLabel string `description:"临时标签"`
- YidongActivityId string `description:"易董的活动ID"`
- IsCanAppointmentMinutes int `description:"是否可预约纪要 1是 ,0 否 默认0 "`
- IsCancel int `description:"是否取消,1是,0否"`
- IsYidongConduct int `description:"是否属于易董办会 1:是 、0:否"`
- IsResearchPoints int `description:"是否为研选扣点 1是,0否"`
- ChartPermissionNameDeputy string `description:"副行业名称"`
- }
- type GetCygxSignupListRep struct {
- Paging *paging.PagingItem `description:"分页数据"`
- List []*CygxSignupList
- }
- // 获取数量
- func GetCygxSignupCount(condition string, pars []interface{}) (count int, err error) {
- sqlCount := ` SELECT COUNT(1) AS count FROM cygx_activity as art WHERE 1= 1 `
- if condition != "" {
- sqlCount += condition
- }
- o := orm.NewOrmUsingDB("hz_cygx")
- err = o.Raw(sqlCount, pars).QueryRow(&count)
- return
- }
- // 列表
- func GetCygxSignupListAll(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxSignupList, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sql := `SELECT
- ( SELECT COUNT( 1 ) FROM cygx_activity_signup AS s WHERE s.activity_id = art.activity_id AND s.is_cancel = 0 AND s.do_fail_type = 0 AND s.company_id != 16 ) AS signup_people_num,
- ( SELECT COUNT( 1 ) FROM cygx_activity_signup AS s WHERE s.activity_id = art.activity_id AND s.is_cancel = 0 AND s.fail_type >= 1) AS signup_fail_people_num,
- ( SELECT COUNT( 1 ) FROM cygx_activity_help_ask AS k WHERE k.activity_id = art.activity_id ) AS ask_num,
- ( SELECT COUNT( 1 ) FROM cygx_activity_appointment AS ap WHERE ap.activity_id = art.activity_id ) AS appointment_people_num,
- ( SELECT COUNT( 1 ) FROM cygx_activity_meeting_reminder AS ap WHERE ap.activity_id = art.activity_id ) AS reminder_people_num,
- art.* FROM cygx_activity as art
- WHERE 1= 1 `
- if condition != "" {
- sql += condition
- }
- sql += ` LIMIT ?,?`
- _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
- return
- }
- type CygxAppointmentList struct {
- Id int `orm:"column(id);pk"`
- ActivityId int `description:"活动ID"`
- ActivityTime string `description:"活动时间"`
- UserId int `description:"用户ID"`
- CreateTime string `description:"创建时间"`
- Mobile string `description:"手机号"`
- OutboundMobile string `description:"外呼手机号"`
- CountryCode string `description:"手机国家区号"`
- CompanyName string `description:"公司名称"`
- CompanyId int `description:"公司ID"`
- RealName string `description:"姓名"`
- FailType int `description:"失败原因,0,未失败,1总人数已满,2单机构超限制,3,爽约次数超限"`
- //MeetingType int `description:"参会方式,0,无,1预约外呼,2自主拨入"`
- SellerName string `description:"销售姓名"`
- PsellerName string `description:"销售姓名"`
- SignupType int `description:"报名方式,1预约外呼,2自主拨入,3我要报名"`
- YidongExamineStatus int `description:"易董活动报名审核状态0审核中,1:审核通过、2审核不通过"`
- Email string `description:"邮箱"`
- }
- type CygxSignupUser struct {
- UserId int `description:"用户ID"`
- ActivityId int `description:"活动ID"`
- }
- type CygxSignupId struct {
- SignupId int `description:"报名ID"`
- CancelClass int `description:"取消类型 0取消报名,1取消外呼"`
- }
- // 预约外呼列表
- func GetCygxAppointmentLisssst(activityId int) (items []*CygxAppointmentList, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sql := `SELECT * FROM cygx_activity_signup WHERE activity_id= ? `
- _, err = o.Raw(sql, activityId).QueryRows(&items)
- return
- }
- func GetCygxAppointmentList(article_id int, sqlStr string) (item []*CygxAppointmentList, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sql := `SELECT s.*
- FROM
- cygx_activity_signup AS s
- LEFT JOIN cygx_activity AS a ON a.activity_id = s.activity_id
- WHERE a.activity_id = ? AND s.do_fail_type = 0 ` + sqlStr + ` GROUP BY s.user_id ORDER BY s.create_time DESC `
- _, err = o.Raw(sql, article_id).QueryRows(&item)
- return
- }
- type GetAppointmentListRep struct {
- ExcelType string `description:"EXcel下载类型 AppointmentCall:预约外呼、ExpertSalon:专家沙龙报名、Teleconference:公司调研电话会、OfflineResearch:公司线下调研 、CClass: C类电话会 、YiDong:易董 "`
- ActivityId int `description:"活动ID"`
- Total int `description:"总人数"`
- MyTotal int `description:"本人名下客户"`
- IsLimitPeople int `description:"是否限制人数 1是,0否"`
- MemberType string `description:"管理员身份 Admin:超级管理员、权益管理员、权益研究员、专家组;GroupLeader:组长;Sale:销售"`
- ActivityType int `description:"1线上 ,0 线下"`
- IsYidongConduct int `description:"是否属于易董办会 1:是 、0:否"`
- IsResearchPoints int `description:"是否为研选扣点 1是,0否"`
- List []*CygxAppointmentList
- }
- func GetCygxAppointmentCount(articleId int, sqlStr string) (count int, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sql := `SELECT COUNT(*) FROM
- cygx_activity_signup AS s
- LEFT JOIN cygx_activity AS a ON a.activity_id = s.activity_id
- WHERE
- s.activity_id = ? ` + sqlStr + `
- GROUP BY s.user_id)`
- sql = `SELECT COUNT(*) as count FROM (` + sql + ` a`
- err = o.Raw(sql, articleId).QueryRow(&count)
- return
- }
- // 新增外呼人员
- type GetOutboundPersonnelListRep struct {
- List []*GetOutboundPersonnelRep
- }
- type GetOutboundPersonnelRep struct {
- UserId int `description:"用户id"`
- RealName string `description:"姓名"`
- Mobile string `description:"手机号"`
- CompanyName string `description:"公司名称"`
- }
- // 列表
- func GetOutboundPersonnelList(name string) (items []*GetOutboundPersonnelRep, err error) {
- o := orm.NewOrm()
- sql := `SELECT u.user_id,u.real_name,u.mobile,p.company_name FROM wx_user as u INNER JOIN company AS p ON p.company_id = u.company_id WHERE real_name LIKE '%` + name + `%' AND u.company_id >1 GROUP BY u.user_id ORDER BY user_id ASC`
- _, err = o.Raw(sql).QueryRows(&items)
- return
- }
- type AddOutboundPersonnelItm struct {
- UserIds string `description:"用户id,多个用,隔开"`
- ActivityIds string `description:"活动ID,多个用,隔开"`
- }
- type AddOutboundPersonnelJsonItm struct {
- JsonStar string `description:"报名信息json字符串 :Uid 用户ID,int类型 。Type string类型,报名方式,1预约外呼,2自主拨入 "`
- ActivityIds string `description:"活动ID,多个用,隔开"`
- }
- type CygxActivitySignup struct {
- Id int `orm:"column(id);pk"`
- UserId int `description:"用户id,多个用,隔开"`
- ActivityId int `description:"活动ID"`
- CreateTime time.Time `description:"创建时间"`
- Mobile string `description:"手机号"`
- Email string `description:"邮箱号"`
- CompanyId int `description:"公司ID"`
- CompanyName string `description:"公司名称"`
- OutboundMobile string `description:"外呼手机号"`
- CountryCode string `description:"手机国家区号"`
- Source int `description:"来源,1小程序,2后台添加"`
- SignupType int `description:"报名方式,1预约外呼,2自主拨入,3我要报名"`
- RealName string `description:"用户实际名称"`
- SellerName string `description:"所属销售"`
- }
- // 我的日程
- type CygxMySchedule struct {
- Id int `orm:"column(id);pk"`
- ActivityId int `description:"活动ID"`
- UserId int `description:"用户ID"`
- CreateTime time.Time `description:"创建时间"`
- Mobile string `description:"手机号"`
- Email string `description:"邮箱"`
- CompanyId int `description:"公司id"`
- CompanyName string `description:"公司名称"`
- }
- type UserAndCompanyName struct {
- UserId int `orm:"column(user_id);pk"`
- Mobile string
- Email string
- CompanyId int
- CompanyName string `description:"公司名称"`
- CountryCode string `description:"手机国家区号"`
- OutboundMobile string `description:"外呼手机号"`
- OutboundCountryCode string `description:"外呼手机号区号"`
- SellerName string `description:"所属销售"`
- RealName string `description:"真实姓名"`
- }
- func GetUserAndCompanyNameList(uid int) (item *UserAndCompanyName, err error) {
- o := orm.NewOrm()
- sql := ` SELECT
- u.*,
- c.company_name,
- GROUP_CONCAT( DISTINCT p.seller_name SEPARATOR '/' ) AS seller_name
- FROM
- wx_user AS u
- INNER JOIN company AS c ON c.company_id = u.company_id
- LEFT JOIN company_product AS p ON p.company_id = u.company_id
- WHERE
- user_id = ?`
- err = o.Raw(sql, uid).QueryRow(&item)
- return
- }
- func GetUserAndCompanyNameListByUids(uids string) (items []*UserAndCompanyName, err error) {
- o := orm.NewOrm()
- sql := ` SELECT u.*,c.company_name FROM wx_user AS u
- INNER JOIN company AS c ON c.company_id = u.company_id
- WHERE user_id IN (` + uids + `)`
- _, err = o.Raw(sql).QueryRows(&items)
- return
- }
- // 新增预约人数
- func AddCygxActivitySignup(items []*CygxActivitySignup, itemsAppointment []*CygxActivityAppointment, mapYidongActivity map[int]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()
- }
- }()
- //添加预约纪要部分
- if len(itemsAppointment) > 0 {
- for _, item := range itemsAppointment {
- var count int
- sql := `SELECT COUNT(1) AS count FROM cygx_activity_appointment WHERE user_id=? AND activity_id=? `
- err = to.Raw(sql, item.UserId, item.ActivityId).QueryRow(&count)
- if err != nil {
- return
- }
- if count == 0 {
- _, err = to.Insert(item)
- if err != nil {
- return
- }
- }
- }
- }
- //添加会议提醒
- for _, item := range items {
- var count int
- sql := `SELECT COUNT(1) AS count FROM cygx_my_schedule WHERE user_id=? AND activity_id=? `
- err = to.Raw(sql, item.UserId, item.ActivityId).QueryRow(&count)
- if err != nil {
- return
- }
- //如果是易懂的活动就不加入日程
- if count == 0 && mapYidongActivity[item.ActivityId] == 0 {
- itemMy := new(CygxMySchedule)
- itemMy.UserId = item.UserId
- itemMy.ActivityId = item.ActivityId
- itemMy.CreateTime = time.Now()
- itemMy.Mobile = item.Mobile
- itemMy.Email = item.Email
- itemMy.CompanyId = item.CompanyId
- itemMy.CompanyName = item.CompanyName
- _, err = to.Insert(itemMy)
- if err != nil {
- return
- }
- }
- sql = `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE user_id=? AND activity_id=? `
- err = to.Raw(sql, item.UserId, item.ActivityId).QueryRow(&count)
- if err != nil {
- return
- }
- if count == 0 {
- _, err = to.Insert(item)
- } else {
- sql := `UPDATE cygx_activity_signup SET is_cancel=0, do_fail_type = 0 ,create_time = NOW() WHERE user_id=? AND activity_id=? `
- _, err = to.Raw(sql, item.UserId, item.ActivityId).Exec()
- }
- }
- return
- }
- // 获取用户报名数量
- func GetActivitySignupCount(uid, activityId int) (count int, err error) {
- sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE is_cancel=0 AND do_fail_type = 0 AND user_id=? AND activity_id=? `
- o := orm.NewOrmUsingDB("hz_cygx")
- err = o.Raw(sqlCount, uid, activityId).QueryRow(&count)
- return
- }
- func GetActivitySignupCountByActivityId(activityId int) (count int, err error) {
- sqlCount := `SELECT
- COUNT( 1 ) AS count
- FROM
- cygx_activity_signup AS s
- WHERE
- s.do_fail_type = 0
- AND s.company_id != 16
- AND s.activity_id = ? `
- o := orm.NewOrmUsingDB("hz_cygx")
- err = o.Raw(sqlCount, activityId).QueryRow(&count)
- return
- }
- func GetActivitySignupCountByThisUser(activityId int, uids string) (count int, err error) {
- sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE do_fail_type = 0 AND activity_id=? AND user_id IN (` + uids + `) `
- o := orm.NewOrmUsingDB("hz_cygx")
- err = o.Raw(sqlCount, activityId).QueryRow(&count)
- return
- }
- //end
- // 报名失败
- type FailSignupListRep struct {
- Id int `orm:"column(id);pk;"description:"报名ID"`
- ActivityId int `description:"活动ID"`
- CreateTime string `description:"创建时间"`
- Mobile string `description:"手机号"`
- CompanyName string `description:"公司名称"`
- CompanyId int `description:"公司ID"`
- RealName string `description:"姓名"`
- UserId int `description:"用户id"`
- SellerName string `description:"销售姓名"`
- PsellerName string `description:"销售姓名"`
- FailType int `description:"失败原因,0,未失败,1总人数已满,2单机构超限制,3,爽约次数超限"`
- DoFailType int `description:"报名失败之后的操作,失败原因,0,未失败,1总人数已满,2单机构超限制,3,爽约次数超限"`
- SalonOperation bool `description:"操作按钮1,true,加入报名,false 限制报名"`
- CallOperation int `description:"操作按钮2,1预约外呼,2自主拨入,3限制报名"`
- IsAdminAddSignup int `description:"(多余字段不使用)"`
- MeetingType int `description:"(多余字段不使用)"`
- IsMeeting int `description:"是否到会 ,1是, 0否"`
- SignupType int `description:"报名方式,1预约外呼,2自主拨入,3我要报名"`
- }
- type GetFailSignupListRep struct {
- ExcelType string `description:"EXcel下载类型 AppointmentCall:预约外呼、ExpertSalon:专家沙龙报名、Teleconference:公司调研电话会、OfflineResearch:公司线下调研 "`
- MemberType string `description:"管理员身份 Admin:超级管理员、权益管理员、权益研究员、专家组;GroupLeader:组长;Sale:销售"`
- //ActivityId int `description:"活动ID"`
- Total int `description:"预约外呼总人数"`
- MyTotal int `description:"预约外呼本人名下客户"`
- IsLimitPeople int `description:"是否限制人数 1是,0否"`
- IsFull bool `description:"报名人数是否已满"`
- List []*FailSignupListRep
- }
- func GetFailSignupList(activity_id int, sqlStr string) (item []*FailSignupListRep, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sql := `SELECT s.* ,a.is_limit_people
- FROM
- cygx_activity_signup AS s
- LEFT JOIN cygx_activity AS a ON a.activity_id = s.activity_id
- WHERE a.activity_id = ?` + sqlStr + ` GROUP BY s.id ORDER BY s.create_time DESC `
- _, err = o.Raw(sql, activity_id).QueryRows(&item)
- return
- }
- //end
- type SignupId struct {
- Id int `orm:"column(id);pk;"description:"报名ID"`
- }
- type SignupIdCall struct {
- Id int `description:"报名ID"`
- OperationStatus int `description:"操作方式:1预约外呼,2自主拨入,3限制报名"`
- }
- // 获取失败数量
- func GetCygxSignupCountFile(id int) (count int, err error) {
- sqlCount := ` SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE id= ?`
- o := orm.NewOrmUsingDB("hz_cygx")
- err = o.Raw(sqlCount, id).QueryRow(&count)
- return
- }
- func GetCygxSignupDetailById(id int) (item *FailSignupListRep, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sql := `SELECT * FROM cygx_activity_signup WHERE id=?`
- err = o.Raw(sql, id).QueryRow(&item)
- return
- }
- func GetCygxSignupDetailByUid(id int) (item *FailSignupListRep, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sql := `SELECT * FROM cygx_activity_signup WHERE user_id=? LIMIT 1`
- err = o.Raw(sql, id).QueryRow(&item)
- return
- }
- // 加入报名限制报名
- func SalonSignupEdit(newIsAdminAddSignup, doFailType, id int, item *CygxActivitySignup) (err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- to, err := o.Begin()
- if err != nil {
- return
- }
- defer func() {
- if err != nil {
- fmt.Println(err)
- _ = to.Rollback()
- } else {
- _ = to.Commit()
- }
- }()
- var count int
- sql := `SELECT COUNT(1) AS count FROM cygx_activity_meeting_reminder WHERE user_id=? AND activity_id=? `
- err = to.Raw(sql, item.UserId, item.ActivityId).QueryRow(&count)
- if err != nil {
- return
- }
- sql = `UPDATE cygx_activity_signup SET is_admin_add_signup=?,do_fail_type=? WHERE id=? `
- _, err = to.Raw(sql, newIsAdminAddSignup, doFailType, id).Exec()
- if doFailType == 0 && count == 0 {
- //加入报名后并添加到我的日程
- itemMy := new(CygxMySchedule)
- itemMy.UserId = item.UserId
- itemMy.ActivityId = item.ActivityId
- itemMy.CreateTime = time.Now()
- itemMy.Mobile = item.Mobile
- itemMy.Email = item.Email
- itemMy.CompanyId = item.CompanyId
- itemMy.CompanyName = item.CompanyName
- _, err = to.Insert(itemMy)
- if err != nil {
- return
- }
- } else {
- //删除我的日程
- if count == 0 {
- sql = `DELETE FROM cygx_my_schedule WHERE user_id=? AND activity_id=? `
- _, err = to.Raw(sql, item.UserId, item.ActivityId).Exec()
- if err != nil {
- return
- }
- }
- }
- return
- }
- func CallSignupEditByStatus3(doFailType, id int, item *CygxMySchedule) (err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- to, err := o.Begin()
- if err != nil {
- return
- }
- defer func() {
- if err != nil {
- fmt.Println(err)
- _ = to.Rollback()
- } else {
- _ = to.Commit()
- }
- }()
- sql := `UPDATE cygx_activity_signup SET is_admin_add_signup=0, do_fail_type = ? WHERE id=? `
- _, err = to.Raw(sql, id, doFailType).Exec()
- if err != nil {
- return
- }
- sql = `DELETE FROM cygx_my_schedule WHERE user_id=? AND activity_id=? `
- _, err = to.Raw(sql, item.UserId, item.ActivityId).Exec()
- if err != nil {
- return
- }
- return
- }
- func CallSignupEditByStatus1_2(operationStatus, id int, item *CygxMySchedule) (err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- to, err := o.Begin()
- if err != nil {
- return
- }
- defer func() {
- if err != nil {
- fmt.Println(err)
- _ = to.Rollback()
- } else {
- _ = to.Commit()
- }
- }()
- var count int
- sql := `UPDATE cygx_activity_signup SET is_admin_add_signup = 1,do_fail_type=0, signup_type =? WHERE id=? `
- _, err = to.Raw(sql, operationStatus, id).Exec()
- if err != nil {
- return
- }
- sql = `SELECT COUNT(1) AS count FROM cygx_my_schedule WHERE user_id=? AND activity_id=? `
- err = to.Raw(sql, item.UserId, item.ActivityId).QueryRow(&count)
- if err != nil {
- return
- }
- if count == 0 {
- //添加我的日程
- _, err = to.Insert(item)
- }
- return
- }
- //报名信息Excel下载
- type SignupExportRep struct {
- Mobile string `description:"手机号"`
- CompanyName string `description:"公司名称"`
- RealName string `description:"姓名"`
- CountryCode string `description:"区号"`
- SellerName string `description:"销售姓名"`
- OutboundMobile string `description:"外呼手机号"`
- }
- type CygxActivitySignupList struct {
- Id int `orm:"column(id);pk"`
- UserId int `description:"用户id"`
- ActivityId int `description:"活动ID"`
- CompanyName string `description:"公司名称"`
- RealName string `description:"姓名"`
- CreateTime string `description:"创建时间"`
- IsMeeting int `description:"是否到会 ,1是, 0否"`
- Operation bool `description:"操作按钮,true,到会,false 未到会"`
- Channel int `description:"报名渠道,0 空降、 1小程序报名"`
- SigninTime string `description:"签到时间"`
- SellerName string `description:"所属销售"`
- Mobile string `description:"手机号"`
- Email string `description:"邮箱"`
- CompanyId int `description:"公司id"`
- IsAirborne int `description:"是否属于空降 1.是 ,0否"`
- }
- type CygxActivitySignupListRep struct {
- ActivityId int `description:"活动ID"`
- List []*CygxActivitySignupList
- ListSignin []*CygxActivitySignin
- }
- // 预约外呼列表
- func GetCygxActivitySignup(condition string) (items []*CygxActivitySignupList, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sql := `SELECT s.* FROM cygx_activity_signup as s
- WHERE 1 =1 ` + condition
- _, err = o.Raw(sql).QueryRows(&items)
- return
- }
- // 获取用户报名数量
- func GetActivitySignupNomeetingCount(activityId int) (count int, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sqlCount := `SELECT
- COUNT( 1 ) count
- FROM
- cygx_activity_signup AS s
- INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
- WHERE
- 1 = 1
- AND a.is_limit_people > 0
- AND s.is_meeting = 0
- AND a.is_submit_meeting = 1
- AND a.activity_id = ?`
- err = o.Raw(sqlCount, activityId).QueryRow(&count)
- return
- }
- // 获取用户报名列表
- func GetActivitySignupNomeetingCountList(activityId int) (items []*CygxActivitySignupList, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sql := `SELECT
- s.*
- FROM
- cygx_activity_signup AS s
- INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
- WHERE
- 1 = 1
- AND s.do_fail_type = 0
- AND s.is_meeting = 0
- AND a.activity_id = ?`
- _, err = o.Raw(sql, activityId).QueryRows(&items)
- return
- }
- // 获取用户爽约次数
- func GetActivitySignupNomeetingCountByUid(uid int) (count int, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sqlCount := `SELECT
- COUNT( 1 ) count
- FROM
- cygx_activity_signup AS s
- INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
- WHERE
- 1 = 1
- AND a.is_limit_people > 0
- AND s.is_meeting = 0
- AND a.is_submit_meeting = 1
- AND s.do_fail_type = 0
- AND s.user_id = ?`
- err = o.Raw(sqlCount, uid).QueryRow(&count)
- return
- }
- func GetUserMeetingMobile(activityId int) (items []*CygxActivitySignup, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sql := `SELECT *
- FROM
- cygx_activity_signup AS s
- WHERE
- s.is_meeting = 1
- AND s.activity_id = ?`
- _, err = o.Raw(sql, activityId).QueryRows(&items)
- return
- }
- // 修改外呼电话以及区号
- type OutboundMobileEditResp struct {
- Id int `description:"报名ID"`
- OutboundMobile string `description:"外呼手机号"`
- CountryCode string `description:"手机国家区号"`
- }
- func OutboundMobileEdit(id int, outboundMobile, countryCode string) (err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sql := `UPDATE cygx_activity_signup SET outbound_mobile = ?,country_code=? WHERE id=? `
- _, err = o.Raw(sql, outboundMobile, countryCode, id).Exec()
- return
- }
- //end
- func AddCygxActivitySignupUser(items []*CygxActivitySignup) (err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- to, err := o.Begin()
- if err != nil {
- return
- }
- defer func() {
- if err != nil {
- fmt.Println(err)
- _ = to.Rollback()
- } else {
- _ = to.Commit()
- }
- }()
- for _, item := range items {
- var count int
- sql := `SELECT COUNT(1) AS count FROM cygx_my_schedule WHERE user_id=? AND activity_id=? `
- err = to.Raw(sql, item.UserId, item.ActivityId).QueryRow(&count)
- if err != nil {
- return
- }
- if count == 0 {
- itemMy := new(CygxMySchedule)
- itemMy.UserId = item.UserId
- itemMy.ActivityId = item.ActivityId
- itemMy.CreateTime = time.Now()
- itemMy.Mobile = item.Mobile
- itemMy.Email = item.Email
- itemMy.CompanyId = item.CompanyId
- itemMy.CompanyName = item.CompanyName
- _, err = to.Insert(itemMy)
- if err != nil {
- return
- }
- }
- sql = `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE user_id=? AND activity_id=? `
- err = to.Raw(sql, item.UserId, item.ActivityId).QueryRow(&count)
- if err != nil {
- return
- }
- if count == 0 {
- _, err = to.Insert(item)
- } else {
- sql := `UPDATE cygx_activity_signup SET is_cancel=0, do_fail_type = 0 ,create_time = NOW() WHERE user_id=? AND activity_id=? `
- _, err = to.Raw(sql, item.UserId, item.ActivityId).Exec()
- }
- }
- return
- }
- // 通过ID获取报名详情
- func GetActivitySignupInfoById(id int) (item *CygxActivitySignup, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sql := `SELECT * FROM cygx_activity_signup WHERE id=?`
- err = o.Raw(sql, id).QueryRow(&item)
- return
- }
- type RequestCommonPolicyConfigrep struct {
- Type string `description:"报名方式 ,1 预约外呼 ,2 自主拨入"`
- Uid int `description:"用户ID"`
- }
- type RequestCommonPolicyConfig struct {
- CommonPolicyconfig []interface{} `json:"common_policy_config"`
- CommonPolicyconfigs []RequestCommonPolicyConfigrep `json:"common_policy_configs"`
- }
- // 取消报名
- func CancelActivitySignup(item *CygxActivitySignup) (lastId int64, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- to, err := o.Begin()
- if err != nil {
- return
- }
- defer func() {
- if err != nil {
- fmt.Println(err)
- _ = to.Rollback()
- } else {
- _ = to.Commit()
- }
- }()
- //判断是否删除我的日程
- var count int
- sql := `SELECT COUNT(1) AS count FROM cygx_activity_meeting_reminder WHERE is_cancel = 0 AND user_id=? AND activity_id=? `
- err = to.Raw(sql, item.UserId, item.ActivityId).QueryRow(&count)
- if err != nil {
- return
- }
- if count == 0 {
- sql = `DELETE FROM cygx_my_schedule WHERE user_id=? AND activity_id=? `
- _, err = to.Raw(sql, item.UserId, item.ActivityId).Exec()
- if err != nil {
- return
- }
- }
- sql = `DELETE FROM cygx_activity_signup WHERE user_id=? AND activity_id=? `
- _, err = to.Raw(sql, item.UserId, item.ActivityId).Exec()
- if err != nil {
- return
- }
- return
- }
- func GetCompanyPermission(companyId int) (permission string, err error) {
- sql := ` SELECT GROUP_CONCAT(DISTINCT b.remark ORDER BY b.sort ASC SEPARATOR ',') 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 c ON a.company_id=c.company_id AND a.product_id=c.product_id
- WHERE a.company_id=?
- AND c.is_suspend=0
- AND b.cygx_auth=1
- AND c.status IN('正式','试用','永续')
- AND a.status IN('正式','试用','永续') `
- o := orm.NewOrm()
- err = o.Raw(sql, companyId).QueryRow(&permission)
- return
- }
- // 获取可查看升级权限的正式权限
- func GetCompanyPermissionByUserZhengShiTrip(companyId int) (permission string, err error) {
- sql := ` SELECT GROUP_CONCAT(DISTINCT b.chart_permission_name ORDER BY b.sort ASC SEPARATOR ',') 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 c ON a.company_id=c.company_id AND a.product_id=c.product_id
- WHERE a.company_id=?
- AND c.is_suspend=0
- AND b.cygx_auth=1
- AND ( a.is_upgrade = 1 AND c.STATUS = '正式' OR c.STATUS = '永续' ) `
- o := orm.NewOrm()
- err = o.Raw(sql, companyId).QueryRow(&permission)
- return
- }
- func GetCountCompanyDetailByIdGroup(companyId int) (count int, err error) {
- sql := ` SELECT COUNT(1) AS count
- FROM company AS a
- INNER JOIN company_product AS b ON a.company_id=b.company_id
- INNER JOIN company_report_permission AS p ON p.company_id = a.company_id
- INNER JOIN chart_permission AS cp ON cp.chart_permission_id = p.chart_permission_id
- LEFT JOIN admin AS c ON b.seller_id=c.admin_id
- WHERE a.company_id=? AND b.product_id = 2 OR (a.company_id = ? AND cp.permission_name = '策略' ) `
- o := orm.NewOrm()
- err = o.Raw(sql, companyId, companyId).QueryRow(&count)
- return
- }
- type CompanyDetail struct {
- CompanyId int `orm:"column(company_id);pk"`
- CompanyName string `description:"客户名称"`
- Status string `description:"客户状态"`
- SellerId int `description:"销售id"`
- SellerName string `description:"销售名称"`
- Mobile string `description:"销售手机号"`
- ProductId int `description:"1,FICC,2权益"`
- }
- func GetCompanyDetailByIdGroup(companyId int) (item *CompanyDetail, err error) {
- sql := ` SELECT a.company_id,a.company_name,b.status,b.seller_id,b.seller_name,c.mobile
- FROM company AS a
- INNER JOIN company_product AS b ON a.company_id=b.company_id
- INNER JOIN company_report_permission AS p ON p.company_id = a.company_id
- INNER JOIN chart_permission AS cp ON cp.chart_permission_id = p.chart_permission_id
- LEFT JOIN admin AS c ON b.seller_id=c.admin_id
- WHERE a.company_id=? AND b.product_id = 2
- OR (a.company_id = ? AND cp.permission_name = '策略' )
- ORDER BY b.product_id DESC LIMIT 0,1 `
- o := orm.NewOrm()
- err = o.Raw(sql, companyId, companyId).QueryRow(&item)
- return
- }
- func GetCompanyPermissionByUser(companyId int) (permission string, err error) {
- sql := ` SELECT GROUP_CONCAT(DISTINCT b.remark ORDER BY b.sort ASC SEPARATOR ',') 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 c ON a.company_id=c.company_id AND a.product_id=c.product_id
- WHERE a.company_id=?
- AND c.is_suspend=0
- AND b.cygx_auth=1`
- o := orm.NewOrm()
- err = o.Raw(sql, companyId).QueryRow(&permission)
- return
- }
- // 获取正式权限
- func GetCompanyPermissionByUserZhengShi(companyId int) (permission string, err error) {
- sql := ` SELECT GROUP_CONCAT(DISTINCT b.remark ORDER BY b.sort ASC SEPARATOR ',') 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 c ON a.company_id=c.company_id AND a.product_id=c.product_id
- WHERE a.company_id=?
- AND c.is_suspend=0
- AND b.cygx_auth=1
- AND c.status IN('正式')
- AND a.status IN('正式') `
- o := orm.NewOrm()
- err = o.Raw(sql, companyId).QueryRow(&permission)
- return
- }
- // 活动模板消息推送,权限处理start
- // GetCompanyDetailByIdGroupList 根据公司ID获取公司对应状态
- func GetCompanyDetailByIdGroupList(companyIds []int) (items []*CompanyDetail, err error) {
- lenCompanyId := len(companyIds)
- if lenCompanyId == 0 {
- return
- }
- sql := ` SELECT a.company_id,a.company_name,b.status
- FROM company AS a
- INNER JOIN company_product AS b ON a.company_id=b.company_id
- WHERE a.company_id IN (` + utils.GetOrmInReplace(lenCompanyId) + `) AND b.product_id = 2
- GROUP BY a.company_id `
- o := orm.NewOrm()
- _, err = o.Raw(sql, companyIds).QueryRows(&items)
- return
- }
- type CompanyPermission struct {
- CompanyId int `description:"公司ID"`
- PermissionName string `description:"权限名称"`
- }
- // 公司权限结构体
- type CompanyPermissionPower struct {
- CompanyId int `description:"公司ID"`
- UserType int `description:"用户类型 //1、永续客户 //2、大套餐客户(4个行业全开通的正式客户) //3、分行业套餐客户(开通对应行业的正式客户) //4、仅开通专家套餐的正式客户 //5、开通对应行业套餐或专家套餐的试用客户"`
- Status string `description:"客户状态"`
- PermissionName string `description:"权限名称"`
- PermissionNameZhengShi string `description:"权限名称(正式)"`
- HavePower bool `description:"是否有权限"`
- }
- // GetCompanyPermissionByCompanyIds 根据公司ID获取公司对应的权限
- func GetCompanyPermissionByCompanyIds(companyIds []int) (items []*CompanyPermission, err error) {
- lenCompanyId := len(companyIds)
- if lenCompanyId == 0 {
- return
- }
- sql := ` SELECT
- GROUP_CONCAT( DISTINCT b.remark ORDER BY b.sort ASC SEPARATOR ',' ) AS permission_name,
- a.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 c ON a.company_id = c.company_id
- AND a.product_id = c.product_id
- WHERE
- a.company_id IN (` + utils.GetOrmInReplace(lenCompanyId) + `)
- AND c.is_suspend = 0
- AND b.cygx_auth = 1
- GROUP BY
- a.company_id `
- o := orm.NewOrm()
- _, err = o.Raw(sql, companyIds).QueryRows(&items)
- return
- }
- // GetCompanyPermissionZhenShiByCompanyIds 根据公司ID获取正式公司对应的权限
- func GetCompanyPermissionZhenShiByCompanyIds(companyIds []int) (items []*CompanyPermission, err error) {
- lenCompanyId := len(companyIds)
- if lenCompanyId == 0 {
- return
- }
- sql := ` SELECT
- GROUP_CONCAT( DISTINCT b.remark ORDER BY b.sort ASC SEPARATOR ',' ) AS permission_name,
- a.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 c ON a.company_id = c.company_id
- AND a.product_id = c.product_id
- WHERE
- a.company_id IN (` + utils.GetOrmInReplace(lenCompanyId) + `)
- AND c.is_suspend = 0
- AND b.cygx_auth = 1
- AND c.STATUS IN ( '正式' )
- AND a.STATUS IN ( '正式' )
- GROUP BY
- a.company_id `
- o := orm.NewOrm()
- _, err = o.Raw(sql, companyIds).QueryRows(&items)
- return
- }
- type YidongActivitySignup struct {
- YidongActivityId string `description:"易董的活动ID"`
- Mobile string `description:"手机号"`
- RealName string `description:"用户实际名称"`
- CompanyName string `description:"公司名称"`
- CountryCode string `description:"手机国家区号"`
- ActivityJoinType string `description:"活动入会类型01报名审核后可入会 02预约即可入会 03仅定向邀请人员可入会"`
- }
- // GetCompanyByUserSignUp 获取客户ID列表
- func GetCompanyByUserSignUp(condition string, pars []interface{}) (items []*company.CompanyNameAndId, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sql := `SELECT
- s.company_id
- FROM
- cygx_activity_signup AS s
- INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
- INNER JOIN cygx_activity_type AS t ON t.activity_type_id = a.activity_type_id
- WHERE
- 1 = 1
- AND s.is_meeting = 1
- AND t.activity_type = 1 `
- if condition != `` {
- sql += condition
- }
- sql += ` GROUP BY s.company_id `
- _, err = o.Raw(sql, pars).QueryRows(&items)
- return
- }
- type UserSignUpLossResp struct {
- Mobile string `description:"手机号"`
- RealName string `description:"姓名"`
- TotalMeeting int `description:"参会次数"`
- }
- type UserSignUpLossListResp struct {
- CompanyId int `description:"公司Id"`
- CompanyName string `description:"公司名称"`
- SellerName string `description:"销售名称"`
- List []*UserSignUpLossResp
- }
- // GetUserSignUpList 获取用户报名列表
- func GetUserSignUpList(condition string, pars []interface{}) (items []*UserSignUpLossResp, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sql := `SELECT
- s.real_name,
- s.mobile
- FROM
- cygx_activity_signup_detail AS s
- INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
- INNER JOIN cygx_activity_type AS t ON t.activity_type_id = a.activity_type_id
- WHERE
- 1 = 1
- AND s.is_meeting = 1
- AND t.activity_type = 1 `
- if condition != `` {
- sql += condition
- }
- _, err = o.Raw(sql, pars).QueryRows(&items)
- return
- }
- type UserSignUpMeetLossListResp struct {
- Mobile string `description:"手机号"`
- RealName string `description:"姓名"`
- List []*AttendanceDetail `description:"预约客户"`
- }
- type ActivitySignupTempMsgReq struct {
- ActivityIds string `description:"活动id,用,隔开"`
- SendGroup string `description:"发送对象,1全部 2永续 3大套餐 4行业套餐 5其他行业正式 6试用 7已参与互动 用,隔开"`
- FirstText string `description:"首段提示文字"`
- ActivityName string `description:"活动名称"`
- Content string `description:"变更内容"`
- }
- type SendGroup struct {
- Id int
- Name string
- }
- type SendGroupStr struct {
- Id string
- Name string
- }
- type PermissionList struct {
- CompanyId int
- Permission string
- }
- // 获取正式权限
- func GetCompanyPermissionByUsersZhengShi(companyIds string) (items []*PermissionList, err error) {
- sql := ` SELECT a.company_id, b.remark 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 c ON a.company_id=c.company_id AND a.product_id=c.product_id
- WHERE a.company_id IN (` + companyIds + `)
- AND c.is_suspend=0
- AND b.cygx_auth=1
- AND c.status IN('正式')
- AND a.status IN('正式') `
- o := orm.NewOrm()
- _, err = o.Raw(sql).QueryRows(&items)
- return
- }
- // 获取某一活动某个机构已经报名的数量
- func GetActivitySignupCompanyCount(activityId, companyId int) (count int, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE is_cancel=0 AND do_fail_type = 0 AND activity_id=? AND company_id=? `
- err = o.Raw(sqlCount, activityId, companyId).QueryRow(&count)
- return
- }
- func GetCompanyPermissionByUserTrip(companyId int) (permission string, err error) {
- o := orm.NewOrm()
- sql := ` SELECT
- GROUP_CONCAT( DISTINCT b.remark ORDER BY b.sort ASC SEPARATOR ',' ) 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 c ON a.company_id = c.company_id
- AND a.product_id = c.product_id
- WHERE
- a.company_id = ?
- AND c.is_suspend = 0
- AND b.cygx_auth = 1
- AND a.is_upgrade = 1
- AND c.STATUS IN ( '正式' )
- OR ( a.company_id = ? AND c.is_suspend = 0 AND b.cygx_auth = 1 AND c.STATUS IN ( '永续' ) )
- OR ( a.company_id = ? AND c.is_suspend = 0 AND b.cygx_auth = 1 AND b.chart_permission_name = '策略' AND c.STATUS IN ( '正式' ) )`
- err = o.Raw(sql, companyId, companyId, companyId).QueryRow(&permission)
- return
- }
- // GetCygxCygxActivitySignupList 获取报名列表信息
- func GetActivitySignupList(condition string, pars []interface{}) (items []*CygxActivitySignup, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sql := `SELECT
- *
- FROM
- cygx_activity_signup AS v
- WHERE
- 1 = 1 ` + condition
- _, err = o.Raw(sql, pars).QueryRows(&items)
- return
- }
- // GetCygxCygxActivitySignupList 获取报名列表信息
- func GetActivitySignupInnerActivityList(condition string, pars []interface{}) (items []*CygxActivitySignup, err error) {
- o := orm.NewOrmUsingDB("hz_cygx")
- sql := `SELECT
- *
- FROM
- cygx_activity_signup AS v
- INNER JOIN cygx_activity as a ON v.activity_id = a.activity_id
- WHERE
- 1 = 1 ` + condition
- _, err = o.Raw(sql, pars).QueryRows(&items)
- return
- }
|