123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399 |
- package models
- import (
- "fmt"
- "rdluck_tools/orm"
- "time"
- )
- type CygxActivitySignup 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:"公司名称"`
- FailType int `description:"失败原因,0,未失败,1总人数已满,2单机构超限制,3,爽约次数超限"`
- SignupType int `description:"报名方式,1预约外呼,2自主拨入,3我要报名"`
- DoFailType int `description:"失败原因,0,未失败,1总人数已满,2单机构超限制,3,爽约次数超限"`
- OutboundMobile string `description:"外呼手机号"`
- CountryCode string `description:"手机国家区号"`
- }
- type SignupStatus struct {
- SignupStatus string `description:"返回状态:人数已满:FullStarffed、单机构超过两人:TwoPeople、爽约次数过多:BreakPromise、超时:Overtime 、成功:Success"`
- GoFollow bool `description:"是否去关注"`
- SignupType int `description:"报名方式,1预约外呼,2我要报名"`
- ActivityId int `description:"活动ID"`
- HaqveJurisdiction bool `description:"是否有权限"`
- OperationMode string `description:"操作方式 Apply:立即申请、Call:拨号 为空则为有权限"`
- HasPermission int `description:"操作方式,1:有该行业权限,正常展示,2:无该行业权限,3:潜在客户,未提交过申请,4:潜在客户,已提交过申请"`
- PopupMsg string `description:"权限弹窗信息"`
- SellerMobile string `description:"销售电话"`
- MsgType string `description:"Type : 类型 , Industry : 行业"`
- SellerName string `description:"销售姓名"`
- Mobile string `description:"外呼手机号"`
- CountryCode string `description:"外呼手机号区号"`
- GoOutboundMobile bool `description:"是否去绑定手机号"`
- GoBindEmail bool `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 CygxActivitySignupLog 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 int `description:"操作方式,1报名,2取消报名"`
- }
- //添加报名信息
- func AddActivitySignup(item *CygxActivitySignup) (lastId int64, err error) {
- o := orm.NewOrm()
- o.Begin()
- defer func() {
- fmt.Println(err)
- if err == nil {
- o.Commit()
- } else {
- o.Rollback()
- }
- }()
- var count int
- var countMySchedule int
- sql := `SELECT COUNT(1) AS count FROM cygx_my_schedule WHERE user_id=? AND activity_id=? `
- err = o.Raw(sql, item.UserId, item.ActivityId).QueryRow(&countMySchedule)
- if err != nil {
- return
- }
- if countMySchedule == 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
- lastId, err = o.Insert(itemMy)
- if err != nil {
- return
- }
- }
- sql = `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE user_id=? AND activity_id=? `
- err = o.Raw(sql, item.UserId, item.ActivityId).QueryRow(&count)
- if err != nil {
- return
- }
- if count > 0 {
- sql := `UPDATE cygx_activity_signup SET is_cancel = 0 ,do_fail_type = 0, signup_type=? WHERE user_id=? AND activity_id=? `
- _, err = o.Raw(sql, item.SignupType, item.UserId, item.ActivityId).Exec()
- } else {
- lastId, err = o.Insert(item)
- }
- if err != nil {
- return
- }
- itemLog := new(CygxActivitySignupLog)
- itemLog.UserId = item.UserId
- itemLog.ActivityId = item.ActivityId
- itemLog.CreateTime = time.Now()
- itemLog.Mobile = item.Mobile
- itemLog.Email = item.Email
- itemLog.CompanyId = item.CompanyId
- itemLog.CompanyName = item.CompanyName
- itemLog.Type = 1
- lastId, err = o.Insert(itemLog)
- return
- }
- //仅绑定邮箱的用户修改报名后,添加报名信息
- func AddActivitySignupFromEmail(item *CygxActivitySignup) (lastId int64, err error) {
- o := orm.NewOrm()
- o.Begin()
- defer func() {
- fmt.Println(err)
- if err == nil {
- o.Commit()
- } else {
- o.Rollback()
- }
- }()
- var count int
- var countMySchedule int
- sql := `UPDATE wx_user SET outbound_mobile=? ,outbound_country_code = ? ,is_msg_outbound_mobile = 1 WHERE user_id=? `
- _, err = o.Raw(sql, item.OutboundMobile, item.CountryCode, item.UserId).Exec()
- if err != nil {
- return
- }
- sql = `SELECT COUNT(1) AS count FROM cygx_my_schedule WHERE user_id=? AND activity_id=? `
- err = o.Raw(sql, item.UserId, item.ActivityId).QueryRow(&countMySchedule)
- if err != nil {
- return
- }
- if countMySchedule == 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
- lastId, err = o.Insert(itemMy)
- if err != nil {
- return
- }
- }
- sql = `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE user_id=? AND activity_id=? `
- err = o.Raw(sql, item.UserId, item.ActivityId).QueryRow(&count)
- if err != nil {
- return
- }
- if count > 0 {
- sql := `UPDATE cygx_activity_signup SET is_cancel = 0 ,do_fail_type = 0, signup_type=? WHERE user_id=? AND activity_id=? `
- _, err = o.Raw(sql, item.SignupType, item.UserId, item.ActivityId).Exec()
- } else {
- lastId, err = o.Insert(item)
- }
- if err != nil {
- return
- }
- itemLog := new(CygxActivitySignupLog)
- itemLog.UserId = item.UserId
- itemLog.ActivityId = item.ActivityId
- itemLog.CreateTime = time.Now()
- itemLog.Mobile = item.Mobile
- itemLog.Email = item.Email
- itemLog.CompanyId = item.CompanyId
- itemLog.CompanyName = item.CompanyName
- itemLog.Type = 1
- lastId, err = o.Insert(itemLog)
- return
- }
- //添加报名信息
- func AddActivitySignupNoSchedule(item *CygxActivitySignup) (lastId int64, err error) {
- o := orm.NewOrm()
- o.Begin()
- defer func() {
- fmt.Println(err)
- if err == nil {
- o.Commit()
- } else {
- o.Rollback()
- }
- }()
- lastId, err = o.Insert(item)
- if err != nil {
- return
- }
- itemLog := new(CygxActivitySignupLog)
- itemLog.UserId = item.UserId
- itemLog.ActivityId = item.ActivityId
- itemLog.CreateTime = time.Now()
- itemLog.Mobile = item.Mobile
- itemLog.Email = item.Email
- itemLog.CompanyId = item.CompanyId
- itemLog.CompanyName = item.CompanyName
- itemLog.Type = 1
- lastId, err = o.Insert(itemLog)
- 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.NewOrm()
- err = o.Raw(sqlCount, uid, activityId).QueryRow(&count)
- return
- }
- //获取用户报名数量
- func GetActivitySignupByUserCount(uid, activityId int) (count int, err error) {
- sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE is_cancel=0 AND user_id=? AND activity_id=? `
- o := orm.NewOrm()
- err = o.Raw(sqlCount, uid, activityId).QueryRow(&count)
- return
- }
- //获取用户报名禁止数量
- func GetActivitySignupByUserRestrictCount(uid, activityId int) (count int, err error) {
- sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE do_fail_type=3 AND user_id=? AND activity_id=? `
- o := orm.NewOrm()
- err = o.Raw(sqlCount, uid, activityId).QueryRow(&count)
- return
- }
- //获取某一活动已经报名的数量
- func GetActivitySignupSuccessCount(activityId int) (count int, err error) {
- sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE is_cancel=0 AND fail_type = 0 AND activity_id=? `
- o := orm.NewOrm()
- err = o.Raw(sqlCount, activityId).QueryRow(&count)
- return
- }
- //获取某一活动某个机构已经报名的数量
- func GetActivitySignupCompanyCount(activityId, companyId int) (count int, err error) {
- sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE is_cancel=0 AND fail_type = 0 AND activity_id=? AND company_id=? `
- o := orm.NewOrm()
- err = o.Raw(sqlCount, activityId, companyId).QueryRow(&count)
- return
- }
- //获取某一用户是否被限制报名
- func GetUserRestrictCount(mobile string) (count int, err error) {
- sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_restrict_signup WHERE is_restrict=1 AND mobile=? `
- o := orm.NewOrm()
- err = o.Raw(sqlCount, mobile).QueryRow(&count)
- return
- }
- //获取某一用户的日程数量
- func GetUserMeetingReminderCount(uid int) (count int, err error) {
- sqlCount := `SELECT COUNT(1) AS count FROM cygx_my_schedule WHERE user_id=? `
- o := orm.NewOrm()
- err = o.Raw(sqlCount, uid).QueryRow(&count)
- return
- }
- //获取某一用户的报名的数量
- func GetUserSignupCount(uid int) (count int, err error) {
- sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup_log WHERE user_id=? `
- o := orm.NewOrm()
- err = o.Raw(sqlCount, uid).QueryRow(&count)
- return
- }
- //取消报名
- func CancelActivitySignup(item *CygxActivitySignup) (lastId int64, err error) {
- o := orm.NewOrm()
- o.Begin()
- defer func() {
- fmt.Println(err)
- if err == nil {
- o.Commit()
- } else {
- o.Rollback()
- }
- }()
- //判断是否删除我的日程
- 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 = o.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 = o.Raw(sql, item.UserId, item.ActivityId).Exec()
- if err != nil {
- return
- }
- }
- sql = `DELETE FROM cygx_activity_signup WHERE user_id=? AND activity_id=? `
- _, err = o.Raw(sql, item.UserId, item.ActivityId).Exec()
- if err != nil {
- return
- }
- itemLog := new(CygxActivitySignupLog)
- itemLog.UserId = item.UserId
- itemLog.ActivityId = item.ActivityId
- itemLog.CreateTime = time.Now()
- itemLog.Mobile = item.Mobile
- itemLog.Email = item.Email
- itemLog.CompanyId = item.CompanyId
- itemLog.CompanyName = item.CompanyName
- itemLog.Type = 2
- lastId, err = o.Insert(itemLog)
- return
- }
- //详情
- func GetActivitySignupDetail(activityId, uid int) (item *CygxActivitySignup, err error) {
- o := orm.NewOrm()
- sql := `SELECT * FROM cygx_activity_signup WHERE activity_id = ? AND user_id =? `
- err = o.Raw(sql, activityId, uid).QueryRow(&item)
- return
- }
- //解除报名限制之后二次报名
- func AddActivitySignupByRestrict(item *CygxActivitySignup) (lastId int64, err error) {
- o := orm.NewOrm()
- o.Begin()
- defer func() {
- fmt.Println(err)
- if err == nil {
- o.Commit()
- } else {
- o.Rollback()
- }
- }()
- 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
- lastId, err = o.Insert(itemMy)
- if err != nil {
- return
- }
- sql := `UPDATE cygx_activity_signup SET do_fail_type = 0 , fail_type=0 WHERE user_id=? AND activity_id=? `
- _, err = o.Raw(sql, item.UserId, item.ActivityId).Exec()
- itemLog := new(CygxActivitySignupLog)
- itemLog.UserId = item.UserId
- itemLog.ActivityId = item.ActivityId
- itemLog.CreateTime = time.Now()
- itemLog.Mobile = item.Mobile
- itemLog.Email = item.Email
- itemLog.CompanyId = item.CompanyId
- itemLog.CompanyName = item.CompanyName
- itemLog.Type = 1
- lastId, err = o.Insert(itemLog)
- return
- }
- //列表
- func GetActivitySignupListAll() (items []*CygxActivitySignup, err error) {
- o := orm.NewOrm()
- sql := `SELECT * FROM cygx_activity_signup `
- _, err = o.Raw(sql).QueryRows(&items)
- return
- }
- //修改是否推送消息状态
- func UPdateSignup(item *CygxActivitySignup) (err error) {
- sql := ` UPDATE cygx_activity_signup SET outbound_mobile= ? , country_code=86 WHERE id = ?`
- o := orm.NewOrm()
- _, err = o.Raw(sql, item.Mobile, item.Id).Exec()
- return
- }
- //获取数量
- func GetActivityCountByIdWithUid(activityId, Uid int) (count int, err error) {
- o := orm.NewOrm()
- sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE activity_id = ? AND user_id = ?`
- err = o.Raw(sqlCount, activityId, Uid).QueryRow(&count)
- return
- }
|