package services

import (
	"context"
	"errors"
	"fmt"
	"hongze/hongze_cygx/models"
	"hongze/hongze_cygx/utils"
	"strconv"
	"strings"
	"time"
)

//func init() {
//	fmt.Println(strings.Contains("渠道新声第583期运动服饰渠道调研更新反馈", "运动服饰渠道调研更新反馈"))
//	fmt.Println(len("反馈"))
//	GroupingActivityToJmcj()
//	GetActivityMeetingByJmcj()
//}

// GroupingActivityToJmcj 建立与进门财经的活动关联
func GroupingActivityToJmcj(cont context.Context) (err error) {
	//func GroupingActivityToJmcj() (err error) {
	defer func() {
		if err != nil {
			fmt.Println(err)
			go utils.SendAlarmMsg("建立与进门财经的活动关联失败"+err.Error(), 2)
		}
	}()
	dateTime := time.Now().AddDate(0, 0, -7).Format(utils.FormatDate)
	dateNow := time.Now().AddDate(0, 0, 0).Format(utils.FormatDate)
	startDate := dateTime + " 00:00:00"
	endDate := dateNow + " 23:59:59"
	var condition string
	var pars []interface{}
	condition = " AND roadshow_begin_time BETWEEN ? AND ? "
	//condition += " AND roadshow_id = 95871  "
	pars = append(pars, startDate, endDate)
	condition += ` GROUP BY roadshow_id `
	listJmcj, e := models.GetJmcjRoadshowDataList(condition, pars)
	if e != nil {
		err = errors.New("GetJmcjRoadshowDataList, Err: " + e.Error())
		return
	}
	textLen := 15
	pars = make([]interface{}, 0)
	//进门财经的不匹配的易董办会的
	condition = " AND activity_time BETWEEN ? AND ? AND publish_status = 1  AND jmcj_activity_id = '' AND yidong_activity_id_by_cygx = '' AND yidong_activity_id = '' "
	//condition += " AND activity_id = 1339   "
	pars = append(pars, startDate, endDate)
	listHz, e := models.GetActivityListByCondition(condition, pars)
	if e != nil {
		err = errors.New("GetActivityListByCondition, Err: " + e.Error())
		return
	}

	mapGroupActivityid := make(map[int]string)
	//通过进门财经匹配弘则
	for _, vJmcj := range listJmcj {
		var roadshowTitle, roadshowTitle1, roadshowTitle2, roadshowTitle3, roadshowTitle4 string
		roadshowTitle = vJmcj.RoadshowTitle
		roadshowTitle = strings.Replace(roadshowTitle, " ", "", -1)
		roadshowBeginTime := utils.TimeRemoveHms2(vJmcj.RoadshowBeginTime)
		nameSlice1 := strings.Split(roadshowTitle, "|")
		nameSlice2 := strings.Split(roadshowTitle, "：")
		nameSlice3 := strings.Split(roadshowTitle, "】")
		nameSlice4 := strings.Split(roadshowTitle, "-")
		if len(nameSlice1) >= 1 {
			roadshowTitle1 = nameSlice1[len(nameSlice1)-1]
		}
		if len(nameSlice2) >= 1 {
			roadshowTitle2 = nameSlice2[len(nameSlice2)-1]
		}
		if len(nameSlice3) >= 1 {
			roadshowTitle3 = nameSlice3[len(nameSlice3)-1]
		}
		if len(nameSlice4) >= 1 {
			roadshowTitle4 = nameSlice4[len(nameSlice4)-1]
		}

		if roadshowTitle == "" {
			continue
		}
		//fmt.Println(roadshowTitle1)
		//fmt.Println(roadshowTitle2)
		//fmt.Println(roadshowTitle3)
		//fmt.Println(roadshowTitle4)

		for _, vHz := range listHz {
			//如果同一时间标题匹配就建立匹配关系
			if roadshowBeginTime == utils.TimeRemoveHms2(vHz.ActivityTime) {
				if strings.Contains(vHz.ActivityNameTask, roadshowTitle) || strings.Contains(vHz.JmcjRoadshowTitle, roadshowTitle) {
					mapGroupActivityid[vHz.ActivityId] = vJmcj.RoadshowId
					break
				}

				//去掉空格标识，完全等于时候的匹配
				if strings.Replace(vHz.ActivityName, " ", "", -1) == strings.Replace(vJmcj.RoadshowTitle, " ", "", -1) {
					mapGroupActivityid[vHz.ActivityId] = vJmcj.RoadshowId
					break
				}

				if len(roadshowTitle1) > textLen {
					if strings.Contains(vHz.ActivityNameTask, roadshowTitle1) || strings.Contains(vHz.JmcjRoadshowTitle, roadshowTitle1) {
						mapGroupActivityid[vHz.ActivityId] = vJmcj.RoadshowId
						break
					}
				}
				if len(roadshowTitle2) > textLen {
					if strings.Contains(vHz.ActivityNameTask, roadshowTitle2) || strings.Contains(vHz.JmcjRoadshowTitle, roadshowTitle2) {
						mapGroupActivityid[vHz.ActivityId] = vJmcj.RoadshowId
						break
					}
				}
				if len(roadshowTitle3) > textLen {
					if strings.Contains(vHz.ActivityNameTask, roadshowTitle3) || strings.Contains(vHz.JmcjRoadshowTitle, roadshowTitle3) {
						mapGroupActivityid[vHz.ActivityId] = vJmcj.RoadshowId
						break
					}
				}
				if len(roadshowTitle4) > textLen {
					if strings.Contains(vHz.ActivityNameTask, roadshowTitle4) || strings.Contains(vHz.JmcjRoadshowTitle, roadshowTitle4) {
						mapGroupActivityid[vHz.ActivityId] = vJmcj.RoadshowId
						break
					}
				}
			}
		}
	}

	//通过弘则匹配进门财经
	for _, vHz := range listHz {
		if mapGroupActivityid[vHz.ActivityId] != "" {
			continue
		}
		var roadshowTitle string
		roadshowTitle = vHz.ActivityName
		nameSlice := strings.Split(roadshowTitle, "】")
		if len(nameSlice) >= 1 {
			roadshowTitle = nameSlice[len(nameSlice)-1]
			if len(roadshowTitle) > textLen {
				vHz.ActivityTime = utils.TimeRemoveHms2(vHz.ActivityTime)
				for _, vJmcj := range listJmcj {
					//如果同一时间标题匹配就建立匹配关系
					if vHz.ActivityTime == utils.TimeRemoveHms2(vJmcj.RoadshowBeginTime) {
						if strings.Contains(vJmcj.RoadshowTitle, roadshowTitle) {
							mapGroupActivityid[vHz.ActivityId] = vJmcj.RoadshowId
							break
						}
						if strings.Contains(vJmcj.RoadshowTitle, vHz.JmcjRoadshowTitle) && vHz.JmcjRoadshowTitle != "" {
							mapGroupActivityid[vHz.ActivityId] = vJmcj.RoadshowId
							break
						}
					}
				}
			}
		}
	}

	if len(mapGroupActivityid) > 0 {
		e = models.UpdateJmcjActivityIdGroup(mapGroupActivityid)
		if e != nil {
			err = errors.New("UpdateJmcjActivityIdGroup, Err: " + e.Error())
		}
	}

	return

}

// GetActivityMeetingByJmcj 同步进门财经到会信息，并处理爽约记录
func GetActivityMeetingByJmcj(cont context.Context) (err error) {
	defer func() {
		if err != nil {
			fmt.Println(err)
			go utils.SendAlarmMsg("获取进门财经的到会信息失败，Err"+err.Error(), 2)
		}
	}()

	//获取需要一直同步的活动信息
	configCode := "jin_meng_activity_id"
	detail, e := models.GetConfigByCode(configCode)
	if e != nil {
		err = errors.New("GetConfigByCode, Err: " + e.Error())
		return
	}
	mapActivityIdlLongTime := make(map[string]string)
	sliceValue := strings.Split(detail.ConfigValue, ",")
	for _, v := range sliceValue {
		mapActivityIdlLongTime[v] = v
	}
	dateTime := time.Now().AddDate(0, 0, -14).Format(utils.FormatDate)
	dateNow := time.Now().AddDate(0, 0, 0).Format(utils.FormatDate)
	startDate := dateTime + " 00:00:00"
	endDate := dateNow + " 23:59:59"
	var condition string
	var pars []interface{}
	//获取弘则要同步到会信息的活动
	condition = ` AND activity_time BETWEEN ? AND ? AND publish_status = 1  AND  jmcj_activity_id != '' AND yidong_activity_id_by_cygx = '' AND yidong_activity_id = ''  OR (  activity_id IN (` + detail.ConfigValue + `) AND publish_status = 1 AND  jmcj_activity_id != '' ) `
	pars = append(pars, startDate, endDate)
	listHz, e := models.GetActivityListByCondition(condition, pars)
	if e != nil && e.Error() != utils.ErrNoRow() {
		err = errors.New("GetActivityListByCondition, Err: " + e.Error())
		return
	}

	var jmcjActivityIds []string
	var activityIds []int
	mapGroupActivityid := make(map[string]int)
	mapGroupActivityTime := make(map[string]string)
	for _, v := range listHz {
		jmcjActivityIds = append(jmcjActivityIds, v.JmcjActivityId)
		activityIds = append(activityIds, v.ActivityId)
		mapGroupActivityid[v.JmcjActivityId] = v.ActivityId
		mapGroupActivityTime[v.JmcjActivityId] = v.ActivityTime
	}

	//return
	lenjmcjActivityIds := len(jmcjActivityIds)
	if lenjmcjActivityIds == 0 {
		return
	}
	//获取进门财经对应的路演ID的到会列表
	pars = make([]interface{}, 0)
	condition = ` AND roadshow_id IN (` + utils.GetOrmInReplace(lenjmcjActivityIds) + `)`
	pars = append(pars, jmcjActivityIds)
	listJmcj, e := models.GetJmcjRoadshowDataList(condition, pars)
	if e != nil {
		err = errors.New("GetJmcjRoadshowDataList, Err: " + e.Error())
		return
	}

	//获取已经写入到会信息的参会人员
	lenactivityIds := len(activityIds)
	pars = make([]interface{}, 0)
	condition = ` AND activity_id IN (` + utils.GetOrmInReplace(lenactivityIds) + `)`
	pars = append(pars, activityIds)
	attendanceDetailList, e := models.GetActivityAttendanceDetailListCondition(condition, pars)
	if e != nil {
		err = errors.New("GetActivityAttendanceDetailListCondition, Err: " + e.Error())
		return
	}
	mapAttendanceDetail := make(map[string]int)
	for _, v := range attendanceDetailList {
		mapAttendanceDetail[fmt.Sprint("ActivityId:", v.ActivityId, "Mobile:", v.Mobile)] = v.ActivityId
	}

	var mobiles []string
	var mobileMap = make(map[string]string)
	//var isPlayback bool                    // 是否包含回放
	var isPlaybackMap = make(map[int]bool) // 是否包含回放map
	var activityIdsLongTime string         //包含回放的活动ID
	needAddAttendanc := make([]*models.CygxActivityAttendanceDetail, 0)
	for _, v := range listJmcj {
		if v.UserPhone == "" {
			continue
		}
		if mapGroupActivityid[v.RoadshowId] == 0 {
			continue
		}
		//如果数据已经存在了那么就不做数据更新
		if mapAttendanceDetail[fmt.Sprint("ActivityId:", mapGroupActivityid[v.RoadshowId], "Mobile:", v.UserPhone)] > 0 {
			continue
		}
		item := new(models.CygxActivityAttendanceDetail)
		item.ActivityId = mapGroupActivityid[v.RoadshowId]
		item.RealName = v.UserName
		item.Mobile = v.UserPhone
		item.CompanyName = v.Company
		item.FirstMeetingTime = v.FirstWatchTime
		item.LastMeetingTime = v.LastWatchTime
		item.IsMeetingStr = 1
		item.Duration = utils.GetAttendanceDetailSeconds(v.JoinTime)
		if v.JoinType == 1 {
			item.MeetingTypeStr = "网络"
		} else {
			item.MeetingTypeStr = "电话"
		}
		item.MeetingAuthentication = v.AuthInfo
		if v.DataType == 1 {
			item.MeetingStatusStr = "直播"
		} else {
			item.MeetingStatusStr = "回放"
			if !isPlaybackMap[item.ActivityId] && mapActivityIdlLongTime[strconv.Itoa(item.ActivityId)] == "" {
				activityIdsLongTime += strconv.Itoa(item.ActivityId) + ","
			}
			isPlaybackMap[item.ActivityId] = true
		}
		item.Position = v.Occupation
		item.UseridEntity = v.UseridEntity
		item.ActivityTime = mapGroupActivityTime[v.RoadshowId]
		item.CrmCompanyMapStatusId = v.CrmCompanyMapStatusId
		item.CreateTime = time.Now()
		needAddAttendanc = append(needAddAttendanc, item)
		if mobileMap[v.UserPhone] == "" {
			mobiles = append(mobiles, v.UserPhone)
			mobileMap[v.UserPhone] = v.UserPhone
		}
	}

	if len(needAddAttendanc) == 0 {
		return
	}

	//根据手机号获取这些用户的信息
	listUser, e := models.GetWxUserOutboundMobiles(mobiles)
	if e != nil {
		err = errors.New("GetWxUserOutboundMobiles, Err: " + e.Error())
		return
	}

	mapUser := make(map[string]*models.WxUserOutboundMobile)
	for _, v := range listUser {
		mapUser[v.Mobile] = v
		mapUser[v.OutboundMobile] = v
	}

	var updateActivityIds []int                   // 需要更新的活动ID
	var updateActivityIdsMap = make(map[int]bool) // 需要更新的活动ID
	for k, v := range needAddAttendanc {
		if needAddAttendanc[k].CompanyId == 0 && mapUser[v.Mobile] != nil {
			needAddAttendanc[k].CompanyId = mapUser[v.Mobile].CompanyId
			needAddAttendanc[k].SellerName = mapUser[v.Mobile].SellerName
			needAddAttendanc[k].CompanyName = mapUser[v.Mobile].CompanyName
			needAddAttendanc[k].IsMeetingStr = 1
		}
		if !updateActivityIdsMap[v.ActivityId] {
			updateActivityIds = append(updateActivityIds, v.ActivityId)
			updateActivityIdsMap[v.ActivityId] = true
		}
		attendanceDetailList = append(attendanceDetailList, v)
	}
	if len(updateActivityIds) == 0 {
		return
	}

	// 更新需要长时间同步到会信息的活动
	if activityIdsLongTime != "" {
		activityIdsLongTime = strings.TrimRight(activityIdsLongTime, ",")
		activityIdsLongTime = detail.ConfigValue + "," + activityIdsLongTime
		e = models.UpdateConfigByCode(activityIdsLongTime, configCode)
		if e != nil {
			err = errors.New("UpdateConfigByCode, Err: " + e.Error())
			return
		}
	}

	//return
	{
		//参会记录
		e = models.AddAttendancDetailNew(needAddAttendanc, updateActivityIds)
		if e != nil {
			err = errors.New("AddAttendancDetailNew, Err: " + e.Error())
			return err
		}
	}

	{
		//标记到会信息
		e = models.UpdateCygxActivitySignupIsMeeting(needAddAttendanc)
		if e != nil {
			err = errors.New("UpdateCygxActivitySignupIsMeeting, Err: " + e.Error())
			return err
		}
	}

	{
		//处理是否限制报名
		AddCygxActivityRestrictSignupByAdminNew(updateActivityIds)
	}

	{
		//通过进门财经添加用户参数信息
		AddctivitySignupDetailByJmcjNew(needAddAttendanc, updateActivityIds)
	}

	{
		//添加报名日志 (对个人以及机构互动数量进行排序下载使用)
		CygxActivityMeetSort(needAddAttendanc, updateActivityIds)
	}
	return
}

// 查研观向处理活动用户限制报名
func AddCygxActivityRestrictSignupByAdminNew(activityIds []int) (err error) {
	defer func() {
		if err != nil {
			fmt.Println("err：", err)
			go utils.SendAlarmMsg("查研观向处理活动用户限制报名失败，AddCygxActivityRestrictSignupByAdminNew，Err："+err.Error()+"activityIds"+fmt.Sprint(activityIds), 3)
		}
	}()

	var condition string
	var pars []interface{}
	lenactivityIds := len(activityIds)
	if lenactivityIds == 0 {
		return
	}
	condition = ` AND	is_meeting = 1  AND activity_id IN (` + utils.GetOrmInReplace(lenactivityIds) + `)`
	pars = append(pars, activityIds)
	//获取到会了的人员
	meetingList, e := models.GetActivitySignupList(condition, pars)
	if e != nil {
		err = errors.New("GetActivitySignupList" + e.Error())
		return
	}
	var userIdArr []int
	if len(meetingList) > 0 {
		for _, v := range meetingList {
			userIdArr = append(userIdArr, v.UserId)
		}
		lenuserIdArr := len(userIdArr)
		var condition string
		var pars []interface{}
		condition = ` AND user_id IN (` + utils.GetOrmInReplace(lenuserIdArr) + `)`
		pars = append(pars, userIdArr)
		restrictSignupList, e := models.GetCygxActivityRestrictSignupList(condition, pars, 0, 9999)
		if e != nil {
			err = errors.New("GetCygxActivityRestrictSignupList" + e.Error())
			return
		}

		//获取这些用户是否被加入到限制报名了
		maptotalRestrict := make(map[int]bool)
		for _, v := range restrictSignupList {
			maptotalRestrict[v.UserId] = true
		}

		pars = make([]interface{}, 0)
		condition = `   AND a.is_limit_people  = 1  AND  v.is_meeting = 0 	AND  v.do_fail_type = 0   AND  v.user_id IN (` + utils.GetOrmInReplace(lenuserIdArr) + `) AND a.activity_id IN (` + utils.GetOrmInReplace(lenactivityIds) + `)`
		pars = append(pars, userIdArr, activityIds)
		listSignup, e := models.GetActivitySignupInnerActivityList(condition, pars)
		if e != nil && e.Error() != utils.ErrNoRow() {
			err = errors.New("GetActivitySignupInnerActivityList" + e.Error())
			return
		}

		mapNomeet := make(map[int]int)
		if len(listSignup) > 0 {
			for _, v := range listSignup {
				mapNomeet[v.UserId]++
			}
		}
		var userIdDelArr []int
		for _, v := range meetingList {
			//如果加入了爽约限制但是爽约次数少于3条就删除爽约记录
			if maptotalRestrict[v.UserId] && mapNomeet[v.UserId] < 3 {
				userIdDelArr = append(userIdDelArr, v.UserId)
			}
		}
		//if len(userIdDelArr) > 0 {
		//	e = models.DeleteCygxActivityRestrictSignupByUserIds(userIdDelArr)
		//	if e != nil {
		//		err = errors.New("DeleteCygxActivityRestrictSignupByUserIds" + e.Error())
		//		return
		//	}
		//}
	}

	//获取未到会的人员
	pars = make([]interface{}, 0)
	condition = `   AND  v.is_meeting = 0 	AND  v.do_fail_type = 0  AND v.activity_id IN (` + utils.GetOrmInReplace(lenactivityIds) + `)`
	pars = append(pars, activityIds)
	nomeetingListlist, e := models.GetActivitySignupInnerActivityList(condition, pars)
	if e != nil {
		err = errors.New("GetActivitySignupNomeetingCountList" + e.Error())
		return
	}
	var userIdSiginArr []int
	var items []*models.CygxActivitySignupBreak
	for _, v := range nomeetingListlist {
		userIdSiginArr = append(userIdSiginArr, v.UserId)
		//添加爽约记录
		item := new(models.CygxActivitySignupBreak)
		item.UserId = v.UserId
		item.ActivityId = v.ActivityId
		item.CreateTime = time.Now()
		item.Mobile = v.Mobile
		item.Email = v.Email
		item.CompanyId = v.CompanyId
		item.CompanyName = v.CompanyName
		item.RealName = v.RealName
		item.SellerName = v.SellerName
		items = append(items, item)
	}
	lenuserIdSiginArr := len(userIdSiginArr)
	if lenuserIdSiginArr == 0 {
		return
	}

	var itemsRestrict []*models.CygxActivityRestrictSignup
	maptotalRestrict := make(map[int]bool)

	//var condition string
	pars = make([]interface{}, 0)
	condition = ""
	restrictSignupList, e := models.GetCygxActivityRestrictSignupList(condition, pars, 0, 9999)
	if e != nil {
		err = errors.New("GetCygxActivityRestrictSignupList" + e.Error())
		return
	}

	//获取这些用户是否被加入到限制报名了
	for _, v := range restrictSignupList {
		maptotalRestrict[v.UserId] = true
	}

	pars = make([]interface{}, 0)
	condition = `    AND a.is_limit_people  = 1  AND  v.is_meeting = 0 	AND  v.do_fail_type = 0  AND user_id IN (` + utils.GetOrmInReplace(lenuserIdSiginArr) + `)`
	pars = append(pars, userIdSiginArr)
	listSignup, e := models.GetActivitySignupInnerActivityList(condition, pars)
	if e != nil && e.Error() != utils.ErrNoRow() {
		err = errors.New("GetActivitySignupInnerActivityList" + e.Error())
		return
	}
	mapNomeet := make(map[int]int)
	if len(listSignup) > 0 {
		for _, v := range listSignup {
			mapNomeet[v.UserId]++
		}
	}

	for _, v := range meetingList {
		//如果加入了爽约限制但是爽约次数少于3条就删除爽约记录
		if !maptotalRestrict[v.UserId] && mapNomeet[v.UserId] >= 3 {
			itemRestrict := new(models.CygxActivityRestrictSignup)
			itemRestrict.UserId = v.UserId
			itemRestrict.CreateTime = time.Now()
			itemRestrict.Mobile = v.Mobile
			itemRestrict.Email = v.Email
			itemRestrict.CompanyId = v.CompanyId
			itemRestrict.CompanyName = v.CompanyName
			itemRestrict.IsRestrict = 1
			itemsRestrict = append(itemsRestrict, itemRestrict)
			maptotalRestrict[v.UserId] = true
		}
	}

	e = models.DeleteCygxActivitySignupBreakByIds(activityIds)
	if e != nil {
		err = errors.New("DeleteCygxActivitySignupBreakById" + e.Error())
		return
	}

	//添加爽约记录
	if len(items) > 0 {
		_, e = models.AddCygxActivitySignupBreakList(items)
		if e != nil {
			err = errors.New("AddCygxActivitySignupBreakList, Err: " + e.Error())
			return
		}
	}

	//添加报名限制
	if len(itemsRestrict) > 0 {
		_, e = models.AddCygxActivityRestrictSignupList(itemsRestrict)
		if e != nil {
			err = errors.New("AddCygxActivityRestrictSignupList, Err: " + e.Error())
			return
		}
	}

	return
}

// 对个人以及机构互动数量进行排序下载使用
func CygxActivityMeetSort(list []*models.CygxActivityAttendanceDetail, activityIds []int) (err error) {
	defer func() {
		if err != nil {
			fmt.Println("err：", err)
			go utils.SendAlarmMsg("查研观向处理活动用户限制报名失败，AddCygxActivityRestrictSignupByAdminNew，Err："+err.Error()+"activityIds"+fmt.Sprint(activityIds), 3)
		}
	}()
	var items []*models.CygxActivityMeetDetailLog
	var condition string
	var pars []interface{}
	lenactivityIds := len(activityIds)
	if lenactivityIds == 0 {
		return
	}
	//获取已经写入到会信息的参会人员
	pars = make([]interface{}, 0)
	condition = ` AND activity_id IN (` + utils.GetOrmInReplace(lenactivityIds) + `)`
	pars = append(pars, activityIds)
	activityMeetDetailLogList, e := models.GetCygxActivityMeetDetailLogList(condition, pars)
	if e != nil {
		err = errors.New("GetCygxActivityMeetDetailLogList, Err: " + e.Error())
		return
	}
	mapActivityMeetDetailL := make(map[string]int)
	for _, v := range activityMeetDetailLogList {
		mapActivityMeetDetailL[fmt.Sprint("ActivityId:", v.ActivityId, "Mobile:", v.Mobile)] = v.ActivityId
	}

	var companyIds []int
	var companyIdsMap = make(map[int]bool)
	var mobiles []string
	var mobilesMap = make(map[string]bool)
	for _, v := range list {
		if mapActivityMeetDetailL[fmt.Sprint("ActivityId:", v.ActivityId, "Mobile:", v.Mobile)] > 0 {
			continue
		}
		item := new(models.CygxActivityMeetDetailLog)
		item.ActivityId = v.ActivityId
		item.Mobile = v.Mobile
		item.CompanyName = v.CompanyName
		item.CompanyId = v.CompanyId
		item.ActivityTime = v.ActivityTime
		item.CreateTime = v.CreateTime
		if !companyIdsMap[v.CompanyId] {
			companyIds = append(companyIds, v.CompanyId)
		}
		if !mobilesMap[v.Mobile] {
			mobiles = append(mobiles, v.Mobile)
		}
		items = append(items, item)
	}
	//插入
	e = models.AddCygxActivityMeetDetailLogMulti(items)
	if e != nil {
		err = errors.New("AddCygxActivityMeetDetailLogMulti, Err: " + e.Error())
		return
	}

	{
		//批量修改个人参会数量
		listMobileCount, e := models.GetActivityMeetDetailLogCountMobile(mobiles)
		if e != nil {
			err = errors.New("GetActivityMeetDetailLogCountCompany, Err: " + e.Error())
			return
		}

		if len(listMobileCount) > 0 {
			e = models.UpdateCygxActivityMeetDetailLogMobileNumMulti(listMobileCount)
			if e != nil {
				err = errors.New("UpdateCygxActivityMeetDetailLogMobileNumMulti, Err: " + e.Error())
				return
			}
		}
	}

	{
		//批量修改机构参会数量
		listCompanyCount, e := models.GetActivityMeetDetailLogCountCompany(companyIds)
		if e != nil {
			err = errors.New("GetActivityMeetDetailLogCountCompany, Err: " + e.Error())
			return
		}

		if len(listCompanyCount) > 0 {
			e = models.UpdateCygxActivityMeetDetailLogCompanyNumMulti(listCompanyCount)
			if e != nil {
				err = errors.New("UpdateCygxActivityMeetDetailLogCompanyNumMulti, Err: " + e.Error())
				return
			}
		}
	}
	return

}
