123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469 |
- package cygx
- import (
- "errors"
- "fmt"
- "hongze/hz_crm_api/models"
- "hongze/hz_crm_api/models/cygx"
- "hongze/hz_crm_api/services/alarm_msg"
- "hongze/hz_crm_api/utils"
- "strconv"
- )
- // 获取线上活动到会更新时间
- func GetActivityMeetUpdateTime(activityIdS []int) (mapResp map[int]string, err error) {
- defer func() {
- if err != nil {
- fmt.Println("err:", err)
- go alarm_msg.SendAlarmMsg("获取线上活动到会更新时间失败,Err:"+err.Error()+fmt.Sprint(activityIdS), 3)
- }
- }()
- lenNum := len(activityIdS)
- if lenNum == 0 {
- return
- }
- var condition string
- var pars []interface{}
- condition = ` AND a.activity_id IN (` + utils.GetOrmInReplace(lenNum) + `)`
- pars = append(pars, activityIdS)
- condition += ` GROUP BY a.activity_id `
- list, e := cygx.GetCygxActivityAttendanceDetailList(condition, pars, 0, lenNum)
- if e != nil {
- err = errors.New("GetCygxActivityAttendanceDetailList,Err" + e.Error())
- return
- }
- mapResp = make(map[int]string, 0)
- for _, v := range list {
- mapResp[v.ActivityId] = v.CreateTime.Format(utils.FormatDateTime)
- }
- return
- }
- func AddCygxActivityMeetDetailLogOffline(meetingUids string, activityId int) (err error) {
- defer func() {
- if err != nil {
- fmt.Println("err:", err)
- go alarm_msg.SendAlarmMsg("添加线下到会记录失败,Err:"+err.Error()+fmt.Sprint(activityId), 3)
- }
- }()
- if meetingUids == "" {
- return
- }
- list, e := cygx.GetOfflineMeetingListByUser(meetingUids, activityId)
- if e != nil {
- err = errors.New("GetOfflineMeetingListByUser" + e.Error())
- return
- }
- var companyIdArr []int
- var mobileArr []string
- var items []*cygx.CygxActivityMeetDetailLog
- if err != nil {
- return
- }
- //插入新的数据
- for _, v := range list {
- item := new(cygx.CygxActivityMeetDetailLog)
- item.ActivityId = v.ActivityId
- item.Mobile = v.Mobile
- item.CompanyName = v.CompanyName
- item.CompanyId = v.CompanyId
- item.CreateTime = v.CreateTime
- if v.Mobile != "" {
- mobileArr = append(mobileArr, v.Mobile)
- }
- if v.CompanyId > 0 {
- companyIdArr = append(companyIdArr, v.CompanyId)
- }
- items = append(items, item)
- }
- var condition string
- var pars []interface{}
- var itemsUpdateCompany []*cygx.MeetDetailLoggGroupCount
- lencompanyIdArr := len(companyIdArr)
- if lencompanyIdArr > 0 {
- condition = ` AND company_id IN (` + utils.GetOrmInReplace(lencompanyIdArr) + `) GROUP BY company_id `
- pars = append(pars, companyIdArr)
- listCompanyIdCount, e := cygx.GetMeetDetailLogGroupCount(condition, pars)
- if e != nil {
- err = errors.New("GetMeetDetailLogGroupCount" + e.Error())
- return
- }
- for _, v := range listCompanyIdCount {
- item := new(cygx.MeetDetailLoggGroupCount)
- item.CompanyId = v.CompanyId
- item.Count = v.Count
- itemsUpdateCompany = append(itemsUpdateCompany, item)
- }
- }
- fmt.Println(111)
- var itemsUpdateMobile []*cygx.MeetDetailLoggGroupCount
- lenmobileArr := len(mobileArr)
- if lenmobileArr > 0 {
- pars = make([]interface{}, 0)
- condition = ` AND mobile IN (` + utils.GetOrmInReplace(lenmobileArr) + `) GROUP BY mobile `
- pars = append(pars, mobileArr)
- listMobileCount, e := cygx.GetMeetDetailLogGroupCount(condition, pars)
- if e != nil {
- err = errors.New("GetMeetDetailLogGroupCount" + e.Error())
- return
- }
- for _, v := range listMobileCount {
- item := new(cygx.MeetDetailLoggGroupCount)
- item.Mobile = v.Mobile
- item.Count = v.Count
- itemsUpdateMobile = append(itemsUpdateMobile, item)
- }
- }
- e = cygx.UpdatecygxActivityMeetDetailLogOffline(items, itemsUpdateCompany, itemsUpdateMobile, activityId)
- if e != nil {
- err = errors.New("UpdatecygxActivityMeetDetailLogOffline" + e.Error())
- return
- }
- return
- }
- // AddctivitySignupDetailList
- func AddctivitySignupDetailList(itemsDetail []*cygx.CygxActivitySignupDetail, activityId int) (err error) {
- defer func() {
- if err != nil {
- fmt.Println(err)
- go alarm_msg.SendAlarmMsg("通过进门财经添加用户参数信息失败 ErrMsg:"+err.Error(), 2)
- }
- }()
- activityIds := make([]int, 0)
- activityIds = append(activityIds, activityId)
- actLen := len(activityIds)
- var condition string
- var pars []interface{}
- if actLen > 0 {
- condition += ` AND activity_id IN (` + utils.GetOrmInReplace(actLen) + `)`
- pars = append(pars, activityIds)
- }
- signUpDetailList, err := cygx.GetSignupDetailList(condition, pars)
- if err != nil && err.Error() != utils.ErrNoRow() {
- return err
- }
- mapsignUpDetai := make(map[string]string)
- if len(signUpDetailList) > 0 {
- for _, v := range signUpDetailList {
- mapsignUpDetai[fmt.Sprint("ActivityId", v.ActivityId, "Mobile", v.Mobile)] = v.Mobile
- }
- }
- //获取当天已经结束了 活动的报名人数
- signUpList, err := cygx.GetSignupDetailBySignup(condition, pars)
- if err != nil && err.Error() != utils.ErrNoRow() {
- return err
- }
- //建立外呼号与手机号的绑定
- mapsignUp := make(map[string]string)
- if len(signUpList) > 0 {
- for _, v := range signUpList {
- mapsignUp[fmt.Sprint(v.OutboundMobile)] = v.Mobile
- }
- }
- var itemsAdd []*cygx.CygxActivitySignupDetail
- var itemsUpdate []*cygx.CygxActivitySignupDetail
- for _, v := range itemsDetail {
- var item = new(cygx.CygxActivitySignupDetail)
- item.ActivityId = v.ActivityId
- //item.RealName = v.RealName
- //如果手机号存在那么就是报名的,不存在就是直接参与的
- if _, ok := mapsignUp[v.Mobile]; ok {
- item.Mobile = mapsignUp[v.Mobile]
- } else {
- item.Mobile = v.Mobile
- }
- item.UserId = v.UserId
- item.RealName = v.RealName
- item.OutboundMobile = v.Mobile
- item.CompanyName = v.CompanyName
- item.CompanyId = v.CompanyId
- item.SellerName = v.SellerName
- item.FirstMeetingTime = v.FirstMeetingTime
- item.LastMeetingTime = v.LastMeetingTime
- item.Duration = v.Duration
- item.MeetingTypeStr = v.MeetingTypeStr
- item.MeetingAuthentication = v.MeetingAuthentication
- item.MeetingStatusStr = v.MeetingStatusStr
- item.CreateTime = v.CreateTime
- item.Position = v.Position
- item.IsMeeting = v.IsMeeting
- item.UseridEntity = v.UseridEntity
- item.ActivityTime = v.ActivityTime
- item.CrmCompanyMapStatusId = v.CrmCompanyMapStatusId
- if _, ok := mapsignUpDetai[fmt.Sprint("ActivityId", v.ActivityId, "Mobile", item.Mobile)]; !ok {
- itemsAdd = append(itemsAdd, item)
- } else {
- itemsUpdate = append(itemsUpdate, item)
- }
- }
- //return err
- if len(itemsAdd) > 0 {
- err = cygx.AddCygxActivitySignupDetail(itemsAdd)
- if err != nil {
- return
- }
- }
- if len(itemsUpdate) > 0 {
- err = cygx.UpdateActivitySignupDetailMulti(itemsUpdate)
- if err != nil {
- return
- }
- }
- return err
- }
- // AddctivitySignupDetailListByHand 手动匹配进门财经信息
- func AddctivitySignupDetailListByHand(itemsDetail []*cygx.CygxActivityAttendanceDetail, activityId int) (err error) {
- defer func() {
- if err != nil {
- fmt.Println(err)
- go alarm_msg.SendAlarmMsg("通过进门财经添加用户参数信息失败 ErrMsg:"+err.Error(), 2)
- }
- }()
- activityIds := make([]int, 0)
- activityIds = append(activityIds, activityId)
- actLen := len(activityIds)
- var condition string
- var pars []interface{}
- if actLen > 0 {
- condition += ` AND activity_id IN (` + utils.GetOrmInReplace(actLen) + `)`
- pars = append(pars, activityIds)
- }
- signUpDetailList, err := cygx.GetSignupDetailList(condition, pars)
- if err != nil && err.Error() != utils.ErrNoRow() {
- return err
- }
- mapsignUpDetai := make(map[string]string)
- if len(signUpDetailList) > 0 {
- for _, v := range signUpDetailList {
- mapsignUpDetai[fmt.Sprint("ActivityId", v.ActivityId, "Mobile", v.Mobile)] = v.Mobile
- }
- }
- //获取当天已经结束了 活动的报名人数
- signUpList, err := cygx.GetSignupDetailBySignup(condition, pars)
- if err != nil && err.Error() != utils.ErrNoRow() {
- return err
- }
- //建立外呼号与手机号的绑定
- mapsignUp := make(map[string]string)
- if len(signUpList) > 0 {
- for _, v := range signUpList {
- mapsignUp[fmt.Sprint(v.OutboundMobile)] = v.Mobile
- }
- }
- var itemsAdd []*cygx.CygxActivitySignupDetail
- var itemsUpdate []*cygx.CygxActivitySignupDetail
- var mobiles []string
- mobileMap := make(map[string]bool)
- mobileUserMap := make(map[string]int)
- for _, v := range itemsDetail {
- if !mobileMap[v.Mobile] {
- mobiles = append(mobiles, v.Mobile)
- }
- mobileMap[v.Mobile] = true
- }
- //根据手机号获取这些用户的信息
- listUser, e := models.GetWxUserByOutboundMobiles(mobiles)
- if e != nil {
- err = errors.New("GetWxUserOutboundMobiles, Err: " + e.Error())
- return
- }
- for _, v := range listUser {
- mobileUserMap[v.Mobile] = int(v.UserId)
- }
- for _, v := range itemsDetail {
- var item = new(cygx.CygxActivitySignupDetail)
- item.ActivityId = v.ActivityId
- //item.RealName = v.RealName
- //如果手机号存在那么就是报名的,不存在就是直接参与的
- if _, ok := mapsignUp[v.Mobile]; ok {
- item.Mobile = mapsignUp[v.Mobile]
- } else {
- item.Mobile = v.Mobile
- }
- item.UserId = mobileUserMap[v.Mobile]
- item.RealName = v.RealName
- item.OutboundMobile = v.Mobile
- item.CompanyName = v.CompanyName
- item.CompanyId = v.CompanyId
- item.SellerName = v.SellerName
- item.FirstMeetingTime = v.FirstMeetingTime
- item.LastMeetingTime = v.LastMeetingTime
- item.Duration = v.Duration
- item.MeetingTypeStr = v.MeetingTypeStr
- item.MeetingAuthentication = v.MeetingAuthentication
- item.MeetingStatusStr = v.MeetingStatusStr
- item.CreateTime = v.CreateTime
- item.Position = v.Position
- item.IsMeeting = 1
- item.UseridEntity = v.UseridEntity
- item.ActivityTime = v.ActivityTime
- item.CrmCompanyMapStatusId = v.CrmCompanyMapStatusId
- if _, ok := mapsignUpDetai[fmt.Sprint("ActivityId", v.ActivityId, "Mobile", item.Mobile)]; !ok {
- itemsAdd = append(itemsAdd, item)
- } else {
- itemsUpdate = append(itemsUpdate, item)
- }
- }
- //return err
- if len(itemsAdd) > 0 {
- err = cygx.AddCygxActivitySignupDetail(itemsAdd)
- if err != nil {
- return
- }
- }
- if len(itemsUpdate) > 0 {
- err = cygx.UpdateActivitySignupDetailMulti(itemsUpdate)
- if err != nil {
- return
- }
- }
- return err
- }
- // AddctivitySignupDetailListByAdminSignup 已结束的活动,管理员手动添加报名,把信息写入到联系人列表参会信息中
- func AddctivitySignupDetailListByAdminSignup(activityIdsStr string) (err error) {
- defer func() {
- if err != nil {
- fmt.Println(err)
- go alarm_msg.SendAlarmMsg(fmt.Sprint("已结束的活动,管理员手动添加报名,把信息写入到联系人列表参会信息中 ErrMsg:"+err.Error(), "activityIds:", activityIdsStr), 2)
- }
- }()
- var condition string
- var pars []interface{}
- condition = ` AND active_state = 3 AND activity_id IN (` + activityIdsStr + `) `
- list, e := cygx.GetActivityListAll(condition, pars, 0, 9999)
- if e != nil && e.Error() != utils.ErrNoRow() {
- err = errors.New("GetWxUserOutboundMobiles, Err: " + e.Error())
- return
- }
- if len(list) == 0 {
- return
- }
- var activityIds []int
- for _, v := range list {
- activityIds = append(activityIds, v.ActivityId)
- }
- actLen := len(activityIds)
- condition = ` AND activity_id IN (` + utils.GetOrmInReplace(actLen) + `)`
- pars = append(pars, activityIds)
- //获取已经写入的信息,并建立map
- signUpDetailList, err := cygx.GetSignupDetailList(condition, pars)
- if err != nil && err.Error() != utils.ErrNoRow() {
- return err
- }
- mapsignUpDetai := make(map[string]string)
- if len(signUpDetailList) > 0 {
- for _, v := range signUpDetailList {
- mapsignUpDetai[fmt.Sprint("ActivityId", v.ActivityId, "Mobile", v.Mobile)] = v.Mobile
- }
- }
- pars = make([]interface{}, 0)
- condition = ` AND activity_id IN (` + utils.GetOrmInReplace(actLen) + `) AND do_fail_type = 0`
- pars = append(pars, activityIds)
- //获取成功报名的人员信息
- signUpList, err := cygx.GetSignupDetailBySignup(condition, pars)
- if err != nil && err.Error() != utils.ErrNoRow() {
- return err
- }
- //建立外呼号与手机号的绑定
- mapsignUp := make(map[string]string)
- if len(signUpList) > 0 {
- for _, v := range signUpList {
- mapsignUp[fmt.Sprint(v.OutboundMobile)] = v.Mobile
- }
- }
- var items []*cygx.CygxActivitySignupDetail
- if len(signUpList) > 0 {
- for _, v := range signUpList {
- if _, ok := mapsignUpDetai[fmt.Sprint("ActivityId", v.ActivityId, "Mobile", v.Mobile)]; !ok {
- item := new(cygx.CygxActivitySignupDetail)
- item.UserId = v.UserId
- item.RealName = v.RealName
- item.SellerName = v.SellerName
- item.ActivityId = v.ActivityId
- item.CreateTime = v.CreateTime
- item.Mobile = v.Mobile
- item.OutboundMobile = v.OutboundMobile
- item.Email = v.Email
- item.CompanyId = v.CompanyId
- item.CompanyName = v.CompanyName
- item.SignupType = v.SignupType
- item.FailType = v.FailType
- item.DoFailType = v.DoFailType
- items = append(items, item)
- }
- }
- }
- if len(items) > 0 {
- e = cygx.AddCygxActivitySignupDetail(items)
- if e != nil {
- err = errors.New("AddCygxActivitySignupDetail, Err: " + e.Error())
- return
- }
- }
- return err
- }
- func init77777() {
- var condition string
- var pars []interface{}
- listAct, errList := cygx.GetActivityListAll(condition+"AND active_state = 3 AND activity_id > 3000 AND publish_status = 1 ", pars, 0, 9999)
- if errList != nil {
- fmt.Println(errList)
- return
- }
- fmt.Println(len(listAct))
- for _, v := range listAct {
- condition = ` AND a.activity_id = ` + strconv.Itoa(v.ActivityId)
- //pars = append(pars)
- list, e := cygx.GetCygxActivityAttendanceDetailList(condition, pars, 0, 999)
- if e != nil {
- fmt.Println(e)
- return
- }
- fmt.Println("ActivityId", v.ActivityId, "list", len(list))
- AddctivitySignupDetailListByHand(list, v.ActivityId)
- }
- }
|