package models import ( "fmt" "github.com/beego/beego/v2/client/orm" "hongze/hongze_cygx/utils" "strconv" "strings" "time" ) // 报名 type CygxActivityMeetDetailLog struct { AttendanceId int `orm:"column(attendance_id);pk;"description:"主键ID"` ActivityId int `description:"活动ID"` RealName string `description:"姓名"` Mobile string `description:"手机号"` CompanyName string `description:"公司名称"` CompanyId int `description:"公司id 不在数据库的用户为0"` CreateTime time.Time `description:"创建时间"` ActivityTime string `description:"活动时间"` } // 批量添加 func AddCygxActivityMeetDetailLogMulti(items []*CygxActivityMeetDetailLog) (err error) { o := orm.NewOrm() if len(items) > 0 { //批量添加 _, err = o.InsertMulti(len(items), items) } return } // 列表 func GetCygxActivityMeetDetailLogList(condition string, pars []interface{}) (items []*CygxActivityMeetDetailLog, err error) { o := orm.NewOrm() sql := `SELECT * FROM cygx_activity_meet_detail_log as art WHERE 1= 1 ` if condition != "" { sql += condition } _, err = o.Raw(sql, pars).QueryRows(&items) return } func GetOfflineMeetingDetailListCompanyIdStr(companyIdStr string) (item []*CygxActivityMeetDetailLog, err error) { if companyIdStr == "" { return } o := orm.NewOrm() sql := `SELECT * FROM cygx_activity_offline_meeting_detail WHERE company_id IN (` + companyIdStr + `)` _, err = o.Raw(sql).QueryRows(&item) return } func GetOfflineMeetingDetailListCompanyName(companyName string) (item []*CygxActivityMeetDetailLog, err error) { o := orm.NewOrm() sql := `SELECT l.* FROM cygx_activity_meet_detail_log AS l INNER JOIN company AS c ON c.company_name = l.company_name WHERE l.company_name IN (` + companyName + `) GROUP BY l.company_name` _, err = o.Raw(sql).QueryRows(&item) return } // 添加 func AddCygxActivityMeetDetailLog(item *CygxActivityMeetDetailLog) (lastId int64, err error) { o := orm.NewOrm() lastId, err = o.Insert(item) return } func GetActivityMeetDetailLog(mobileStr string) (item []*CygxActivityMeetDetailLog, err error) { if mobileStr == "" { return } o := orm.NewOrm() sql := `SELECT l.* FROM cygx_activity_meet_detail_log as l WHERE l.mobile IN (` + mobileStr + `) GROUP BY l.mobile ` _, err = o.Raw(sql).QueryRows(&item) return } func GetActivityMeetDetailLogByMobile() (item []*CygxActivityMeetDetailLog, err error) { o := orm.NewOrm() sql := `SELECT * FROM cygx_activity_meet_detail_log WHERE mobile !='' GROUP BY mobile ` _, err = o.Raw(sql).QueryRows(&item) return } // 获取数量 func GetActivityMeetDetailLogCount(condition string) (count int, err error) { o := orm.NewOrm() sqlCount := ` SELECT COUNT(1) AS count FROM cygx_activity_meet_detail_log WHERE 1=1 ` if condition != "" { sqlCount += condition } err = o.Raw(sqlCount).QueryRow(&count) return } // 报名 type CygxActivityMeetDetailLogCountResp struct { Mobile string `description:"手机号"` CompanyId int `description:"公司id 不在数据库的用户为0"` Count int `description:"公司id 不在数据库的用户为0"` } // 获取数量 func GetActivityMeetDetailLogCountCompany(companyIds []int) (item []*CygxActivityMeetDetailLogCountResp, err error) { lenArr := len(companyIds) if lenArr == 0 { return } o := orm.NewOrm() sql := ` SELECT company_id, COUNT(1) AS count FROM cygx_activity_meet_detail_log WHERE 1=1 AND company_id IN (` + utils.GetOrmInReplace(lenArr) + `) GROUP BY company_id` _, err = o.Raw(sql, companyIds).QueryRows(&item) return } // 获取数量 func GetActivityMeetDetailLogCountMobile(mobiles []string) (item []*CygxActivityMeetDetailLogCountResp, err error) { lenArr := len(mobiles) if lenArr == 0 { return } o := orm.NewOrm() sql := ` SELECT mobile, COUNT(1) AS count FROM cygx_activity_meet_detail_log WHERE 1=1 AND mobile IN (` + utils.GetOrmInReplace(lenArr) + `) GROUP BY company_id` _, err = o.Raw(sql, mobiles).QueryRows(&item) return } // 修改公司参会数量 func UpdateActivityMeetDetailLog(companyName string, num int) (err error) { sql := ` UPDATE cygx_activity_meet_detail_log SET company_meet_num= ? WHERE company_name = ?` o := orm.NewOrm() _, err = o.Raw(sql, num, companyName).Exec() return } // 修改个人参会数量 func UpdateActivityMeetDetailLogByUser(mobile string, num int) (err error) { sql := ` UPDATE cygx_activity_meet_detail_log SET user_meet_num= ? WHERE mobile = ?` o := orm.NewOrm() _, err = o.Raw(sql, num, mobile).Exec() return } // 添加线上到会记录(下载使用) func AddCygxActivityMeetDetailLogOnline(list []*CygxActivityAttendanceDetail, activityId int) (err error) { o, err := orm.NewOrm().Begin() if err != nil { return } defer func() { fmt.Println(err) if err == nil { o.Commit() } else { o.Rollback() } }() var CompanyName string var MobileStr string var items []*CygxActivityMeetDetailLog //删除原有数据 sql := ` DELETE FROM cygx_activity_meet_detail_log WHERE activity_id = ?` _, err = o.Raw(sql, activityId).Exec() if err != nil { return } //插入新的数据 for _, v := range list { item := new(CygxActivityMeetDetailLog) item.ActivityId = v.ActivityId item.Mobile = v.Mobile item.CompanyName = v.CompanyName item.CompanyId = v.CompanyId item.CreateTime = v.CreateTime CompanyName += "'" + v.CompanyName + "'," MobileStr += v.Mobile + "," items = append(items, item) } CompanyName = strings.TrimRight(CompanyName, ",") MobileStr = strings.TrimRight(MobileStr, ",") _, err = o.InsertMulti(1, items) listCompany, err := GetOfflineMeetingDetailListCompanyName(CompanyName) if err != nil { return } //修改公司对应的数量 var condition string for _, v := range listCompany { var total int condition = ` AND company_name = '` + v.CompanyName + `' ` total, err = GetActivityMeetDetailLogCount(condition) if err != nil { return } sql := ` UPDATE cygx_activity_meet_detail_log SET company_meet_num= ? WHERE company_name = ?` _, err = o.Raw(sql, total, v.CompanyName).Exec() if err != nil { return } } listMobile, err := GetActivityMeetDetailLog(MobileStr) if err != nil { return } //修改个人对应的数量 for _, v := range listMobile { var total int condition = ` AND mobile = '` + v.Mobile + `' ` total, err = GetActivityMeetDetailLogCount(condition) if err != nil { return } sql := ` UPDATE cygx_activity_meet_detail_log SET user_meet_num= ? WHERE mobile = ?` _, err = o.Raw(sql, total, v.Mobile).Exec() if err != nil { return } } return } // 添加线上到会记录 func AddCygxActivityMeetDetailLogOnlineByListNew(list []*CygxActivityAttendanceDetail, activityIds string) (err error) { o, err := orm.NewOrm().Begin() if err != nil { return } defer func() { fmt.Println(err) if err == nil { o.Commit() } else { o.Rollback() } }() var CompanyName string var MobileStr string var items []*CygxActivityMeetDetailLog //删除原有数据 sql := ` DELETE FROM cygx_activity_meet_detail_log WHERE activity_id IN (` + activityIds + `)` _, err = o.Raw(sql).Exec() if err != nil { return } //插入新的数据 for _, v := range list { item := new(CygxActivityMeetDetailLog) item.ActivityId = v.ActivityId item.Mobile = v.Mobile fmt.Println(v.CompanyName) item.CompanyName = v.CompanyName item.CompanyId = v.CompanyId item.ActivityTime = v.ActivityTime item.CreateTime = v.CreateTime if strings.Index(CompanyName, v.CompanyName) == -1 && v.CompanyName != "" { CompanyName += "'" + v.CompanyName + "'," } if strings.Index(MobileStr, v.Mobile) == -1 && v.Mobile != "" { MobileStr += v.Mobile + "," } items = append(items, item) } CompanyName = strings.TrimRight(CompanyName, ",") MobileStr = strings.TrimRight(MobileStr, ",") _, err = o.InsertMulti(1, items) listCompany, err := GetOfflineMeetingDetailListCompanyName(CompanyName) fmt.Println("公司数量", len(listCompany)) if err != nil { return } //修改公司对应的数量 var condition string for _, v := range listCompany { var total int condition = ` AND company_name = '` + v.CompanyName + `' ` total, err = GetActivityMeetDetailLogCount(condition) if err != nil { return } sql := ` UPDATE cygx_activity_meet_detail_log SET company_meet_num= ? WHERE company_name = ?` _, err = o.Raw(sql, total, v.CompanyName).Exec() fmt.Println("处理公司", v.CompanyName) if err != nil { return } } listMobile, err := GetActivityMeetDetailLog(MobileStr) fmt.Println("用户数量", len(listMobile)) if err != nil { return } //修改个人对应的数量 for _, v := range listMobile { var total int condition = ` AND mobile = '` + v.Mobile + `' ` total, err = GetActivityMeetDetailLogCount(condition) if err != nil { return } sql := ` UPDATE cygx_activity_meet_detail_log SET user_meet_num= ? WHERE mobile = ?` _, err = o.Raw(sql, total, v.Mobile).Exec() fmt.Println("处理用户", v.Mobile) if err != nil { return } } fmt.Println("user_end") return } // 添加线下到会记录 func AddCygxActivityMeetDetailLogOffline(activityId int) (err error) { o := orm.NewOrm() to, err := o.Begin() if err != nil { return } defer func() { if err != nil { fmt.Println(err) _ = to.Rollback() } else { _ = to.Commit() } }() var condition string var pars []interface{} condition = ` AND activity_id = ? ` pars = append(pars, activityId) listOfflineMeeting, err := GetOfflineMeetingList(condition, pars) if err != nil { return } var meetingUids string for _, v := range listOfflineMeeting { meetingUids += strconv.Itoa(v.UserId) + "," } meetingUids = strings.TrimRight(meetingUids, ",") if meetingUids == "" { meetingUids = "-1" } var CompanyIdStr string var MobileStr string var items []*CygxActivityMeetDetailLog list, err := GetOfflineMeetingListByUser(meetingUids, activityId) fmt.Println(len(list)) if err != nil { return } //删除原有数据 sql := ` DELETE FROM cygx_activity_meet_detail_log WHERE activity_id = ?` _, err = to.Raw(sql, activityId).Exec() if err != nil { return } //插入新的数据 for _, v := range list { item := new(CygxActivityMeetDetailLog) item.ActivityId = v.ActivityId item.Mobile = v.Mobile item.CompanyName = v.CompanyName item.CompanyId = v.CompanyId item.CreateTime = v.CreateTime CompanyIdStr += strconv.Itoa(v.CompanyId) + "," if v.Mobile != "" { MobileStr += v.Mobile + "," } items = append(items, item) } CompanyIdStr = strings.TrimRight(CompanyIdStr, ",") MobileStr = strings.TrimRight(MobileStr, ",") for _, v := range items { _, err = to.Insert(v) if err != nil { return } } listCompanyId, err := GetOfflineMeetingDetailListCompanyIdStr(CompanyIdStr) if err != nil { return } //修改公司对应的数量 //var condition string for _, v := range listCompanyId { var total int condition = ` AND company_name = '` + v.CompanyName + `' ` total, err = GetActivityMeetDetailLogCount(condition) if err != nil { return } sql := ` UPDATE cygx_activity_meet_detail_log SET company_meet_num= ? WHERE company_name = ?` _, err = to.Raw(sql, total, v.CompanyName).Exec() if err != nil { return } } listMobile, err := GetActivityMeetDetailLog(MobileStr) if err != nil { return } //修改个人对应的数量 for _, v := range listMobile { var total int condition = ` AND mobile = '` + v.Mobile + `' ` total, err = GetActivityMeetDetailLogCount(condition) if err != nil { return } sql := ` UPDATE cygx_activity_meet_detail_log SET user_meet_num= ? WHERE mobile = ?` _, err = to.Raw(sql, total, v.Mobile).Exec() if err != nil { return } } return } // 添加线上到会记录 func AddCygxActivityMeetDetailLogOnlineByList(list []*CygxActivityAttendanceDetail, activityIds string) (err error) { o, err := orm.NewOrm().Begin() if err != nil { return } defer func() { fmt.Println(err) if err == nil { o.Commit() } else { o.Rollback() } }() var CompanyName string var MobileStr string var items []*CygxActivityMeetDetailLog //删除原有数据 sql := ` DELETE FROM cygx_activity_meet_detail_log WHERE activity_id IN (` + activityIds + `)` _, err = o.Raw(sql).Exec() if err != nil { return } //插入新的数据 for _, v := range list { item := new(CygxActivityMeetDetailLog) item.ActivityId = v.ActivityId item.Mobile = v.Mobile fmt.Println(v.CompanyName) item.CompanyName = v.CompanyName item.CompanyId = v.CompanyId item.ActivityTime = v.ActivityTime item.CreateTime = v.CreateTime if strings.Index(CompanyName, v.CompanyName) == -1 && v.CompanyName != "" { CompanyName += "'" + v.CompanyName + "'," } if strings.Index(MobileStr, v.Mobile) == -1 && v.Mobile != "" { MobileStr += v.Mobile + "," } items = append(items, item) } CompanyName = strings.TrimRight(CompanyName, ",") MobileStr = strings.TrimRight(MobileStr, ",") _, err = o.InsertMulti(1, items) listCompany, err := GetOfflineMeetingDetailListCompanyName(CompanyName) fmt.Println("公司数量", len(listCompany)) if err != nil { return } //修改公司对应的数量 var condition string for _, v := range listCompany { var total int condition = ` AND company_name = '` + v.CompanyName + `' ` total, err = GetActivityMeetDetailLogCount(condition) if err != nil { return } sql := ` UPDATE cygx_activity_meet_detail_log SET company_meet_num= ? WHERE company_name = ?` _, err = o.Raw(sql, total, v.CompanyName).Exec() fmt.Println("处理公司", v.CompanyName) if err != nil { return } } listMobile, err := GetActivityMeetDetailLog(MobileStr) fmt.Println("用户数量", len(listMobile)) if err != nil { return } //修改个人对应的数量 for _, v := range listMobile { var total int condition = ` AND mobile = '` + v.Mobile + `' ` total, err = GetActivityMeetDetailLogCount(condition) if err != nil { return } sql := ` UPDATE cygx_activity_meet_detail_log SET user_meet_num= ? WHERE mobile = ?` _, err = o.Raw(sql, total, v.Mobile).Exec() fmt.Println("处理用户", v.Mobile) if err != nil { return } } fmt.Println("user_end") return } // UpdateActivitySpecialSignupNumMulti 批量修改个人参会数量 func UpdateCygxActivityMeetDetailLogMobileNumMulti(items []*CygxActivityMeetDetailLogCountResp) (err error) { o := orm.NewOrm() p, err := o.Raw("UPDATE cygx_activity_meet_detail_log SET user_meet_num = ? WHERE mobile = ?").Prepare() if err != nil { return } defer func() { _ = p.Close() }() for _, v := range items { _, err = p.Exec(v.Count, v.Mobile) if err != nil { return } } return } // UpdateActivitySpecialSignupNumMulti 批量修改机构参会数量 func UpdateCygxActivityMeetDetailLogCompanyNumMulti(items []*CygxActivityMeetDetailLogCountResp) (err error) { o := orm.NewOrm() p, err := o.Raw("UPDATE cygx_activity_meet_detail_log SET company_meet_num = ? WHERE company_id = ?").Prepare() if err != nil { return } defer func() { _ = p.Close() }() for _, v := range items { _, err = p.Exec(v.Count, v.CompanyId) if err != nil { return } } return }