package cygx import ( //"hongze/hz_crm_api/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后台添加"` 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 INNER JOIN wx_user AS u ON u.user_id = s.user_id WHERE s.is_cancel = 0 AND s.activity_id = ? ` o := orm.NewOrm() 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.NewOrm() 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.NewOrm() err = o.Raw(sqlCount, uid, activityId).QueryRow(&count) return } // 新增预约人数 func AddCygxActivitySpecialTrip(items []*CygxActivitySpecialTrip, itemsBill []*CygxActivitySpecialTripBill) (err error) { o := orm.NewOrm() 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 _, item := range itemsBill { _, 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.NewOrm() sql := `SELECT s.id,s.activity_id,s.user_id,s.create_time,s.mobile,s.company_id,u.real_name,c.company_name,a.activity_time,s.outbound_mobile,s.country_code,a.special_type, (SELECT p.seller_name from company_product as p WHERE p.company_id = u.company_id AND p.product_id = 2 ) AS seller_name, GROUP_CONCAT( DISTINCT p.seller_name SEPARATOR '/' ) AS pseller_name FROM cygx_activity_special_trip AS s INNER JOIN wx_user AS u ON u.user_id = s.user_id INNER JOIN cygx_activity_special AS a ON a.activity_id = s.activity_id LEFT JOIN company_product AS p ON p.company_id = u.company_id LEFT JOIN company AS c ON c.company_id = u.company_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.NewOrm() sql := `SELECT COUNT(*) FROM cygx_activity_special_trip AS s INNER JOIN wx_user AS u ON u.user_id = s.user_id LEFT JOIN cygx_activity_special AS a ON a.activity_id = s.activity_id LEFT JOIN company_product AS p ON p.company_id = u.company_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 := orm.NewOrm() 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() 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.NewOrm() err = o.Raw(sql, activityId).QueryRow(&signupUids) return } // 修改外呼手机号 func SpecialTripOutboundMobileEdit(id int, outboundMobile, countryCode string) (err error) { o := orm.NewOrm() 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.NewOrm() 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.NewOrm() 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.NewOrm() 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 }