123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- package yb
- import (
- "fmt"
- "hongze/hongze_open_api/models/tables/company"
- "hongze/hongze_open_api/models/tables/company_product"
- "hongze/hongze_open_api/models/tables/qs_event"
- "hongze/hongze_open_api/models/tables/qs_event_user"
- "hongze/hongze_open_api/models/tables/user_view_statistics"
- "hongze/hongze_open_api/models/tables/wx_user"
- "hongze/hongze_open_api/services/alarm_msg"
- "hongze/hongze_open_api/services/quanshi"
- "hongze/hongze_open_api/utils"
- "strings"
- "time"
- )
- // SyncUser 用户同步
- func SyncUser(qsEventId int) (err error) {
- errMsgList := make([]string, 0)
- defer func() {
- if err != nil {
- errMsgList = append(errMsgList, err.Error())
- }
- if len(errMsgList) > 0 {
- //for _, v := range errMsgList {
- // fmt.Println(v)
- //}
- go alarm_msg.SendAlarmMsg("同步全时会议参会人员数据失败:"+strings.Join(errMsgList, "/n"), 3)
- }
- }()
- qsEventInfo, err := qs_event.GetQsEventByQsEventId(qsEventId)
- if err != nil {
- return
- }
- //if qsEventInfo.IsSync == 1 {
- // return
- //}
- //获取全时的参会人员信息
- qsData, err := quanshi.QsEventReportSummary(qsEventId)
- if err != nil {
- fmt.Println(err)
- return
- }
- companyProductMap := make(map[string]*company_product.CompanyProduct)
- companyMap := make(map[string]*company.Company)
- people := 0 //参与人数
- productIdList := []int{1, 2} //ficc和权益
- companyIdProductIdMap := make(map[int]int) //客户与产品的id map
- if qsData.Summary != nil {
- for _, v := range qsData.Summary {
- if v.Mobile == "" { //如果手机号为空,那么就不处理了,进入下一个循环
- continue
- }
- tmpQsEventUser, tmpErr := qs_event_user.GetQsEventUserByQsId(qsEventInfo.QsId, v.Mobile)
- if tmpErr != nil && tmpErr.Error() != utils.ErrNoRow() {
- errMsgList = append(errMsgList, fmt.Sprintf("路演id:%d,用户手机号:%s,会议用户入库失败,err:%s", qsEventInfo.QsId, v.Mobile, err.Error()))
- continue
- }
- // 如果已经有数据了,那么不需要再处理了
- if tmpQsEventUser != nil {
- continue
- }
- people++
- mobile := v.Mobile
- trimMobile := mobile
- countryCode := "86"
- var companyProductInfo *company_product.CompanyProduct
- var companyInfo *company.Company
- var wxUserInfo *wx_user.WxUser
- if mobile != "" {
- trimMobileSlice := strings.Split(v.Mobile, "-")
- lenTrimMobileSlice := len(trimMobileSlice)
- if lenTrimMobileSlice > 1 {
- trimMobile = trimMobileSlice[1]
- countryCode = strings.Replace(trimMobileSlice[0], "+", "", -1)
- }
- wxUserInfo, _ = wx_user.GetWxUserByMobileCountryCode(trimMobile, countryCode)
- if wxUserInfo != nil && wxUserInfo.CompanyId != 1 {
- //获取客户产品信息
- productId, ok := companyIdProductIdMap[wxUserInfo.CompanyId]
- if ok { //已经查询过
- if productId > 0 {
- // 获取客户产品信息
- key := fmt.Sprint(wxUserInfo.CompanyId, "_", productId)
- if tmpCompanyProductInfo, ok := companyProductMap[key]; ok {
- companyProductInfo = tmpCompanyProductInfo
- }
- }
- } else {
- for _, productId := range productIdList {
- key := fmt.Sprint(wxUserInfo.CompanyId, "_", productId)
- companyProductInfo, _ = company_product.GetCompanyProductByCompanyIdAndProductId(wxUserInfo.CompanyId, productId)
- if companyProductInfo != nil {
- companyProductMap[key] = companyProductInfo
- companyIdProductIdMap[wxUserInfo.CompanyId] = productId
- //退出产品查询
- break
- }
- }
- if companyProductInfo == nil {
- companyIdProductIdMap[wxUserInfo.CompanyId] = 0
- }
- }
- // 获取客户信息
- key := fmt.Sprint(wxUserInfo.CompanyId)
- if tmpCompanyInfo, ok := companyMap[key]; ok {
- companyInfo = tmpCompanyInfo
- } else {
- companyInfo, _ = company.GetCompanyById(wxUserInfo.CompanyId)
- if companyInfo != nil {
- companyMap[key] = companyInfo
- }
- }
- }
- }
- name := ``
- if v.Mobile != v.Name {
- name = v.Name
- }
- qsEventUserInfo := &qs_event_user.QsEventUser{
- QsId: qsEventInfo.QsId,
- UserId: 0,
- Mobile: v.Mobile,
- Email: v.Email,
- Name: name,
- //RegisterTime: time.Time{},
- ViewTotal: 0,
- //LastViewTime: time.Time{},
- CompanyId: 0,
- ProductId: 0,
- CompanyName: "",
- Status: "",
- SellerId: 0,
- SellerName: "",
- CompanyViewTotal: 0,
- CompanyRoadTotal: 0,
- CreateTime: time.Now(),
- }
- //这个时候是系统用户了,美滋滋
- if companyProductInfo != nil {
- qsEventUserInfo.RegisterTime = wxUserInfo.RegisterTime
- userViewStatisticsInfo, _ := user_view_statistics.GetUserViewStatisticsByMobile(trimMobile) //用户阅读信息
- if userViewStatisticsInfo != nil {
- qsEventUserInfo.ViewTotal = userViewStatisticsInfo.Total
- qsEventUserInfo.LastViewTime = userViewStatisticsInfo.LastViewTime
- }
- qsEventUserInfo.UserId = int(wxUserInfo.UserId)
- qsEventUserInfo.Name = wxUserInfo.RealName
- qsEventUserInfo.CompanyId = companyProductInfo.CompanyId
- qsEventUserInfo.ProductId = companyProductInfo.ProductId
- qsEventUserInfo.CompanyName = companyInfo.CompanyName
- qsEventUserInfo.Status = companyProductInfo.Status
- qsEventUserInfo.SellerId = companyProductInfo.SellerId
- qsEventUserInfo.SellerName = companyProductInfo.SellerName
- qsEventUserInfo.CompanyViewTotal = companyProductInfo.ViewTotal
- qsEventUserInfo.CompanyRoadTotal = companyProductInfo.RoadShowTotal
- }
- _ = qs_event_user.AddQsEventUser(qsEventUserInfo)
- }
- }
- qsEventInfo.IsSync = 1
- qsEventInfo.QsStatus = 2
- qsEventInfo.People = qsEventInfo.People + people
- err = qsEventInfo.Update([]string{"IsSync", "QsStatus", "People"})
- return
- }
- // SyncVideo 录音同步
- func SyncVideo(qsEventId int, videoUrl string) (err error) {
- qsEventInfo, err := qs_event.GetQsEventByQsEventId(qsEventId)
- if err != nil {
- return
- }
- qsEventInfo.VideoUrl = videoUrl
- err = qsEventInfo.Update([]string{"VideoUrl"})
- return
- }
|