package cygx import ( "fmt" "github.com/beego/beego/v2/client/orm" "time" ) type CygxActivityMeetingReminder 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:"公司名称"` Source int `description:"来源,1小程序,2后台添加"` } // 记录日志 type CygxActivityMeetingReminderLog 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取消报名"` } type AddMeetingReminderReq struct { List []*AddUserList ActivityIds string `description:"活动ID,多个用,隔开"` } type AddUserList struct { UserId int `description:"用户ID"` IsAppointment int `description:"是否预约纪要,1:是,0:否"` SignupType int `description:"报名方式,1预约外呼,2自主拨入,3我要报名"` } // 取消会议提醒 func CancelActivityMeetingReminder(item *CygxActivityMeetingReminder) (lastId int64, err error) { o, err := orm.NewOrmUsingDB("hz_cygx").Begin() if err != nil { return } defer func() { fmt.Println(err) if err == nil { o.Commit() } else { o.Rollback() } }() //判断是否删除我的日程 var countSignup int var countAppointment int sql := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE is_cancel = 0 AND user_id=? AND activity_id=? ` err = o.Raw(sql, item.UserId, item.ActivityId).QueryRow(&countSignup) sql = `SELECT COUNT(1) AS count FROM cygx_activity_appointment WHERE user_id=? AND activity_id=? ` err = o.Raw(sql, item.UserId, item.ActivityId).QueryRow(&countAppointment) if err != nil { return } if countSignup == 0 && countAppointment == 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_meeting_reminder WHERE user_id=? AND activity_id=? ` _, err = o.Raw(sql, item.UserId, item.ActivityId).Exec() return } // 会议提醒的人数列表 func GetCygxActivityMeetingReminderList(activityId int, sqlStr string) (item []*CygxAppointmentList, err error) { o := orm.NewOrmUsingDB("hz_cygx") sql := `SELECT s.*,a.activity_time FROM cygx_activity_meeting_reminder AS s LEFT JOIN cygx_activity AS a ON a.activity_id = s.activity_id WHERE a.activity_id = ? ` + sqlStr + ` GROUP BY s.user_id ORDER BY s.create_time DESC ` _, err = o.Raw(sql, activityId).QueryRows(&item) return } // 会议提醒的人数数量 func GetCygxActivityMeetingReminderCount(activityId int, sqlStr string) (count int, err error) { o := orm.NewOrmUsingDB("hz_cygx") sql := `SELECT COUNT(*) FROM cygx_activity_meeting_reminder 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, activityId).QueryRow(&count) return } // 通过ID获取会议提醒详情 func GetCygxActivityMeetingReminderInfoById(id int) (item *CygxActivityMeetingReminder, err error) { o := orm.NewOrmUsingDB("hz_cygx") sql := `SELECT * FROM cygx_activity_meeting_reminder WHERE id=?` err = o.Raw(sql, id).QueryRow(&item) return } // 添加会议提醒 func AddActivityMeetingReminderUser(items []*CygxActivityAppointment, itemsReminder []*CygxActivityMeetingReminder) (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(items) > 0 { for _, item := range items { 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 itemsReminder { 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_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 } } } return }