package cygx import ( //"hongze/hongze_admin/models" "github.com/beego/beego/v2/client/orm" "time" ) type CygxActivitySpecialTrip 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:"公司名称"` RealName string `description:"用户实际名称"` SellerName string `description:"所属销售"` AdminId int `description:"销售/管理员ID"` Source int `description:"来源,1小程序,2后台添加"` IsMeeting int `description:"是否到会"` OutboundMobile string `description:"外呼手机号"` CountryCode string `description:"手机国家区号"` } type CygxActivitySpecialTripResp struct { Id int `description:"ID"` UserId int `description:"用户id"` ActivityId int `description:"活动ID"` CreateTime string `description:"创建时间"` Mobile string `description:"手机号"` Email string `description:"邮箱号"` CompanyId int `description:"公司ID"` CompanyName string `description:"公司名称"` RealName string `description:"用户实际名称"` SellerName string `description:"所属销售"` AdminId int `description:"销售/管理员ID"` Source int `description:"来源,1小程序,2后台添加"` OutboundMobile string `description:"外呼手机号"` CountryCode string `description:"手机国家区号"` SpecialType int `description:"调研形式、 1 线上 , 2 线下"` } // 修改外呼电话以及区号 type ActivitySpecialTripCancelReq struct { UserId int `description:"用户id"` ActivityId int `description:"活动ID"` } func GetActivitySpecialTripCountByActivityId(activityId int) (count int, err error) { sqlCount := `SELECT COUNT( 1 ) AS count FROM cygx_activity_special_trip AS s WHERE s.is_cancel = 0 AND s.activity_id = ? ` o := orm.NewOrmUsingDB("hz_cygx") err = o.Raw(sqlCount, activityId).QueryRow(&count) return } func GetActivitySpecialTripCountByThisUser(activityId int, uids string) (count int, err error) { sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_special_trip WHERE is_cancel = 0 AND activity_id=? AND user_id IN (` + uids + `) ` o := orm.NewOrmUsingDB("hz_cygx") err = o.Raw(sqlCount, activityId).QueryRow(&count) return } // 获取用户报名数量 func GetActivitySpecialTripCount(uid, activityId int) (count int, err error) { sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_special_trip WHERE is_cancel=0 AND user_id=? AND activity_id=? ` o := orm.NewOrmUsingDB("hz_cygx") err = o.Raw(sqlCount, uid, activityId).QueryRow(&count) return } // 新增预约人数 func AddCygxActivitySpecialTrip(items []*CygxActivitySpecialTrip, itemsBill []*CygxActivitySpecialTripBill, itemsMeet []*CygxActivitySpecialMeetingDetail) (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() } }() var count int var sql string //添加会议提醒 for _, item := range items { sql = `SELECT COUNT(1) AS count FROM cygx_activity_special_trip 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_special_trip SET is_cancel=0 ,create_time = NOW() WHERE user_id=? AND activity_id=? ` _, err = to.Raw(sql, item.UserId, item.ActivityId).Exec() } if err != nil { return } } //添加流水记录 //倒序插入,让流水表看起来是正的 for i := len(itemsBill) - 1; i >= 0; i-- { _, err = to.Insert(itemsBill[i]) if err != nil { return } } //添加到会信息记录查询表 for _, item := range itemsMeet { _, err = to.Insert(item) if err != nil { return } } return } type GetAppointmentSpecialListRsep struct { Source int `description:"来源 专项调研:1 "` ActivityId int `description:"活动ID"` Total int `description:"总人数"` MyTotal int `description:"本人名下客户"` IsLimitPeople int `description:"是否限制人数 1是,0否"` MemberType string `description:"管理员身份 Admin:超级管理员、权益管理员、权益研究员、专家组;GroupLeader:组长;Sale:销售"` SpecialType int `description:"调研形式、 1 线上 , 2 线下"` List []*CygxActivitySpecialTripResp } func GetCygxActivitySpecialTripList(activityId int, condition string) (item []*CygxActivitySpecialTripResp, err error) { o := orm.NewOrmUsingDB("hz_cygx") sql := `SELECT s.*, a.activity_time, a.special_type FROM cygx_activity_special_trip AS s INNER JOIN cygx_activity_special AS a ON a.activity_id = s.activity_id WHERE a.activity_id = ? ` + condition + ` GROUP BY s.user_id ORDER BY s.create_time DESC ` _, err = o.Raw(sql, activityId).QueryRows(&item) return } func GetActivitySpecialTripTotal(activityId int, sqlStr string) (count int, err error) { o := orm.NewOrmUsingDB("hz_cygx") sql := `SELECT COUNT(*) FROM cygx_activity_special_trip AS s LEFT JOIN cygx_activity_special 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, activityId).QueryRow(&count) return } // ActivitySpecialTripCancel 取消报名 func ActivitySpecialTripCancel(isValid, activityId, uid int) (err error) { o, err := orm.NewOrmUsingDB("hz_cygx").Begin() if err != nil { return } defer func() { if err != nil { _ = o.Rollback() } else { _ = o.Commit() } }() sql := `UPDATE cygx_activity_special_trip SET is_valid= ?, is_cancel = 1 WHERE activity_id=? AND user_id = ? ` _, err = o.Raw(sql, isValid, activityId, uid).Exec() if err != nil { return } //删除到会记录表信息 sql = ` DELETE FROM cygx_activity_special_meeting_detail WHERE activity_id = ? AND user_id = ? ` _, err = o.Raw(sql, activityId, uid).Exec() return } // 获取报名了的用户IDs func GetSpecialTripUserIds(activityId int, uIds string) (signupUids string, err error) { sql := ` SELECT GROUP_CONCAT( DISTINCT s.user_id SEPARATOR ',' ) AS signupUids FROM cygx_activity_special_trip AS s WHERE s.activity_id = ? AND s.is_cancel = 0 AND s.user_id not IN (` + uIds + `)` o := orm.NewOrmUsingDB("hz_cygx") err = o.Raw(sql, activityId).QueryRow(&signupUids) return } // 修改外呼手机号 func SpecialTripOutboundMobileEdit(id int, outboundMobile, countryCode string) (err error) { o := orm.NewOrmUsingDB("hz_cygx") sql := `UPDATE cygx_activity_special_trip SET outbound_mobile = ?,country_code=? WHERE id=? ` _, err = o.Raw(sql, outboundMobile, countryCode, id).Exec() return } func GetCygxActivitySpecialTripListByActivityId(activityId int) (item []*CygxActivitySpecialTripResp, err error) { o := orm.NewOrmUsingDB("hz_cygx") sql := `SELECT * FROM cygx_activity_special_trip WHERE activity_id = ? AND is_cancel = 0 ` _, err = o.Raw(sql, activityId).QueryRows(&item) return } // 获取公司报名的记录 func GetCygxActivitySpecialTripListByComapnyId(companyId int) (item []*CygxActivitySpecial, err error) { o := orm.NewOrmUsingDB("hz_cygx") sql := `SELECT t.*, a.chart_permission_id, a.chart_permission_name FROM cygx_activity_special_trip AS t INNER JOIN cygx_activity_special AS a ON a.activity_id = t.activity_id WHERE t.company_id = ? AND t.is_valid = 1 ` _, err = o.Raw(sql, companyId).QueryRows(&item) return } // 获取空降的公司报名的记录 func GetCygxActivitySpecialTripAirborneListByComapnyId(companyId int) (item []*CygxActivitySpecial, err error) { o := orm.NewOrmUsingDB("hz_cygx") sql := `SELECT t.*, a.chart_permission_id, a.chart_permission_name FROM cygx_activity_special_meeting_detail AS t INNER JOIN cygx_activity_special AS a ON a.activity_id = t.activity_id WHERE t.company_id = ? AND t.is_airborne = 1 ` _, err = o.Raw(sql, companyId).QueryRows(&item) return } type ActivitySpecialSignupTempMsgReq struct { ActivityIds string `description:"活动id,用,隔开"` SendGroup string `description:"发送对象,1已报名 用,隔开"` ResearchTheme string `description:"调研主题"` Content string `description:"推送内容"` } // 列表 func GetCygxActivitySpecialTripListCondition(condition string, pars []interface{}, startSize, pageSize int) (items []*CygxActivitySpecialTrip, err error) { o := orm.NewOrmUsingDB("hz_cygx") sql := `SELECT * FROM cygx_activity_special_trip as art WHERE 1= 1 ` if condition != "" { sql += condition } if startSize+pageSize > 0 { sql += ` LIMIT ?,? ` _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items) } else { _, err = o.Raw(sql, pars).QueryRows(&items) } return } // 获取某一用户的报名的数量 func GetUserActivitySpecialTripCount(uid, activityId int) (count int, err error) { sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_special_trip WHERE user_id=? AND activity_id =? ` o := orm.NewOrmUsingDB("hz_cygx") err = o.Raw(sqlCount, uid, activityId).QueryRow(&count) return } func UpdateSpecialTrip(isValid, isCancel, userId, activityId int) (err error) { o := orm.NewOrmUsingDB("hz_cygx") sql := `UPDATE cygx_activity_special_trip SET is_valid = ?,create_time=NOW(),is_cancel=? WHERE user_id=? AND activity_id=? ` _, err = o.Raw(sql, isValid, isCancel, userId, activityId).Exec() return }