Browse Source

Merge branch 'cygx_10.4' of http://8.136.199.33:3000/hongze/hongze_cygx

xingzai 1 năm trước cách đây
mục cha
commit
38f06ce812

+ 3 - 0
controllers/activity.go

@@ -538,6 +538,9 @@ func (this *ActivityCoAntroller) Detail() {
 		} else {
 			activityInfo.ArticleList = make([]*models.ActivityArticleResp, 0)
 		}
+		if (activityInfo.ActivityTypeId == 5 || activityInfo.ActivityTypeId == 6) && services.GetBelongingRai(user.Mobile) {
+			activityInfo.IsShowSigninButton = true
+		}
 		//处理按钮是否展示问题
 		resp.Detail = services.ActivityButtonShow(activityInfo)
 	} else {

+ 338 - 0
controllers/activity_sign.go

@@ -0,0 +1,338 @@
+package controllers
+
+import (
+	"encoding/json"
+	"hongze/hongze_cygx/models"
+	"hongze/hongze_cygx/services"
+	"hongze/hongze_cygx/utils"
+	"strconv"
+	"time"
+)
+
+// 活动
+type ActivitySignCoAntroller struct {
+	BaseAuthController
+}
+
+// @Title  活动扫码自动签到
+// @Description 活动扫码签到接口
+// @Param   ActivityId   query   int  true       "活动ID"
+// @Success Ret=200 {object} models.CygxActivityResp
+// @router /detail [get]
+func (this *ActivitySignCoAntroller) Detail() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	user := this.User
+	if user == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,用户信息为空"
+		br.Ret = 408
+		return
+	}
+	uid := user.UserId
+	activityId, _ := this.GetInt("ActivityId")
+	if activityId < 1 {
+		br.Msg = "请输入活动ID"
+		return
+	}
+	resp := new(models.CygxActivitySigninDetailResp)
+	activityInfo, err := models.GetAddActivityInfoByIdShow(uid, activityId)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取活动详情信息失败,Err:" + err.Error()
+		return
+	}
+	if activityInfo == nil {
+		br.Msg = "活动不存在"
+		br.ErrMsg = "活动ID错误,Err:" + "activityId:" + strconv.Itoa(activityId)
+		return
+	}
+	totalMySuccess, err := models.GetActivitySignupCount(uid, activityId)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	detail := new(models.CygxActivitySigninResp)
+	if totalMySuccess > 0 {
+		detail.IsSignup = true
+	}
+	var condition string
+	var pars []interface{}
+	condition = " AND  open_id = ?  AND activity_id = ?  "
+	pars = append(pars, user.OpenId, activityId)
+	total, err := models.GetCygxActivitySigninCount(condition, pars)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	item := new(models.CygxActivitySignin)
+	item.ActivityId = activityId
+	item.UserId = user.UserId
+	item.Mobile = user.Mobile
+	item.Email = user.Email
+	item.CompanyId = user.CompanyId
+	item.RealName = user.RealName
+	item.CompanyName = user.CompanyName
+	item.IsSignup = totalMySuccess
+	item.CountryCode = user.CountryCode
+	item.OpenId = user.OpenId
+	item.CreateTime = time.Now()
+	if total == 0 && user.Mobile != "" {
+		err = models.AddCygxActivitySignin(item)
+		if err != nil {
+			br.Msg = "签到失败"
+			br.ErrMsg = "获取失败,Err:" + err.Error()
+			return
+		}
+	}
+
+	//记录签到信息到用户到会表
+	if user.CompanyId > 1 {
+		pars = make([]interface{}, 0)
+		condition = " AND  user_id = ?  AND activity_id = ?  "
+		pars = append(pars, user.UserId, activityId)
+		totalOfflineMeeting, err := models.GetCygxActivityOfflineMeetingDetailCount(condition, pars)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,Err:" + err.Error()
+			return
+		}
+		if totalOfflineMeeting == 0 {
+			itemOfflineMeeting := new(models.CygxActivityOfflineMeetingDetail)
+			itemOfflineMeeting.UserId = user.UserId
+			itemOfflineMeeting.ActivityId = activityId
+			itemOfflineMeeting.CreateTime = time.Now()
+			itemOfflineMeeting.Mobile = user.Mobile
+			itemOfflineMeeting.CompanyId = user.CompanyId
+			itemOfflineMeeting.CompanyName = user.CompanyName
+			itemOfflineMeeting.IsMeeting = 1
+			err = models.AddCygxActivityOfflineMeetingDetail(itemOfflineMeeting)
+			if err != nil {
+				br.Msg = "签到失败"
+				br.ErrMsg = "获取失败AddCygxActivityOfflineMeetingDetail,Err:" + err.Error()
+				return
+			}
+		}
+		//添加日志记录
+		services.AddCygxActivitySigninLog(item)
+
+		//把报名信息写入签到到会表
+		services.AddCygxActivityOfflineMeetingDetail(activityId, user)
+
+		//后期扫码签到,处理是否爽约限制
+		services.CygxActivityRestrictSignupByuid(user.UserId, activityId)
+	}
+
+	if user.Mobile != "" || total > 0 {
+		resp.IsBindingMobile = true
+	}
+	if user.CompanyId == 1 {
+		detail.IsNewUser = true
+	}
+	detail.ActivityId = activityId
+	detail.ActivityName = activityInfo.ActivityName
+	detail.Mobile = user.Mobile
+	detail.RealName = user.RealName
+	detail.CompanyName = user.CompanyName
+
+	//用于前端二次回显
+	if user.Mobile == "" {
+		pars = make([]interface{}, 0)
+		condition = " AND  open_id = ?  AND activity_id = ?  "
+		pars = append(pars, user.OpenId, activityId)
+		signinDetail, err := models.GetCygxActivitySigninDetail(condition, pars)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "签到失败"
+			br.ErrMsg = "获取失败GetCygxActivitySigninDetail,Err:" + err.Error()
+			return
+		}
+		if signinDetail != nil {
+			detail.BusinessCard = signinDetail.BusinessCard
+			detail.Mobile = signinDetail.Mobile
+			detail.RealName = signinDetail.RealName
+			detail.CompanyName = signinDetail.CompanyName
+			detail.IsNewUser = true
+		}
+	}
+	resp.Detail = detail
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
+// @Title  活动扫码手动签到
+// @Description 活动扫码手动签到接口
+// @Param   ActivityId   query   int  true       "活动ID"
+// @Success Ret=200 {object} models.CygxActivityResp
+// @router /byHand [post]
+func (this *ActivitySignCoAntroller) ByHand() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	user := this.User
+	if user == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,用户信息为空"
+		br.Ret = 408
+		return
+	}
+
+	uid := user.UserId
+	resp := new(models.CygxActivitySigninDetailResp)
+	var req models.CygxActivitySigninReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	signinType := req.SigninType
+	activityId := req.ActivityId
+	CountryCode := req.CountryCode
+	Mobile := req.Mobile
+	CompanyName := req.CompanyName
+	BusinessCard := req.BusinessCard
+	RealName := req.RealName
+	if activityId < 1 {
+		br.Msg = "请输入活动ID"
+		return
+	}
+	user.RealName = RealName
+	user.CompanyName = CompanyName
+	activityInfo, err := models.GetAddActivityInfoByIdShow(uid, activityId)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取活动详情信息失败,Err:" + err.Error()
+		return
+	}
+	if activityInfo == nil {
+		br.Msg = "活动不存在"
+		br.ErrMsg = "活动ID错误,Err:" + "activityId:" + strconv.Itoa(activityId)
+		return
+	}
+	totalMySuccess, err := models.GetActivitySignupCount(uid, activityId)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	item := new(models.CygxActivitySignin)
+
+	var condition string
+	var pars []interface{}
+	condition = " AND  open_id = ?  AND activity_id = ?  "
+	pars = append(pars, user.OpenId, activityId)
+	total, err := models.GetCygxActivitySigninCount(condition, pars)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	if signinType == 1 {
+		if req.Mobile == "" {
+			br.Msg = "参数错误"
+			br.ErrMsg = "参数错误,手机号为空 为空"
+			return
+		}
+		itemMsgCode, err := models.GetMsgCode(req.Mobile, req.VCode)
+		if err != nil {
+			if err.Error() == utils.ErrNoRow() {
+				br.Msg = "验证码错误,请重新输入"
+				br.ErrMsg = "校验验证码失败,Err:" + err.Error()
+				return
+			} else {
+				br.Msg = "验证码错误,请重新输入"
+				br.ErrMsg = "校验验证码失败,Err:" + err.Error()
+				return
+			}
+		}
+		if itemMsgCode == nil {
+			br.Msg = "验证码错误,请重新输入"
+			return
+		}
+		userMobile, err := models.GetWxUserItemByMobile(Mobile)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "签到失败"
+			br.ErrMsg = "获取失败,Err:" + err.Error()
+			return
+		}
+		if userMobile != nil {
+			user = userMobile
+		}
+	} else {
+		if BusinessCard == "" {
+			br.Msg = "签到失败"
+			br.ErrMsg = "签到失败名片地址为空,Err:"
+			return
+		}
+		item.BusinessCard = BusinessCard
+	}
+	item.ActivityId = activityId
+	item.UserId = user.UserId
+	item.Mobile = Mobile
+	item.CountryCode = CountryCode
+	item.Email = user.Email
+	item.CompanyId = user.CompanyId
+	item.RealName = user.RealName
+	item.CompanyName = user.CompanyName
+	item.IsSignup = totalMySuccess
+	item.BusinessCard = BusinessCard
+	item.OpenId = user.OpenId
+	item.CreateTime = time.Now()
+	if total == 0 {
+		err = models.AddCygxActivitySignin(item)
+		if err != nil {
+			br.Msg = "签到失败"
+			br.ErrMsg = "获取失败,Err:" + err.Error()
+			return
+		}
+	} else {
+		pars = make([]interface{}, 0)
+		condition = " AND  open_id = ?  AND activity_id = ?  "
+		pars = append(pars, user.OpenId, activityId)
+		signinDetail, err := models.GetCygxActivitySigninDetail(condition, pars)
+		if err != nil {
+			br.Msg = "签到失败"
+			br.ErrMsg = "获取失败GetCygxActivitySigninDetail,Err:" + err.Error()
+			return
+		}
+		item.Id = signinDetail.Id
+		err = models.UpdateCygxActivitySignin(item)
+		if err != nil {
+			br.Msg = "签到失败"
+			br.ErrMsg = "获取失败,UpdateCygxActivitySignin,Err:" + err.Error()
+			return
+		}
+	}
+	detail := new(models.CygxActivitySigninResp)
+	if totalMySuccess > 0 {
+		detail.IsSignup = true
+	}
+	//添加日志记录
+	go services.AddCygxActivitySigninLog(item)
+	if user.CompanyId <= 1 {
+		detail.IsNewUser = true
+	}
+	if user.UserId == 0 {
+		detail.IsNewUser = true
+	}
+	detail.ActivityId = activityId
+	detail.ActivityName = activityInfo.ActivityName
+	detail.Mobile = Mobile
+	detail.RealName = RealName
+	detail.CompanyName = CompanyName
+	resp.Detail = detail
+	resp.IsBindingMobile = true
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 10 - 0
models/activity.go

@@ -205,6 +205,8 @@ type ActivityDetail struct {
 	IsCanOutboundCall       int                        `description:"是否提供外呼 1:是 、0:否"`
 	TencentConferenceNumber string                     `description:"腾讯会议号"`
 	YidongActivityIdByCygx  string                     `description:"通过查研观向建会易董返回的活动ID"`
+	IsShowSigninButton      bool                       `description:"是否展示签到码按钮"`
+	SigninImg               string                     `description:"签到码图片"`
 }
 type ListArticleActivity struct {
 	Title   string `description:"文章标题"`
@@ -1024,6 +1026,14 @@ func GetActivityListByCondition(condition string, pars []interface{}) (items []*
 	return
 }
 
+// UpdateCygxActivitySubmitMeetingByActivityId  ,修改活动提交到会状态
+func UpdateCygxActivitySubmitMeetingByActivityId(activityId int) (err error) {
+	o := orm.NewOrm()
+	sql := `UPDATE cygx_activity SET is_submit_meeting = 1 WHERE activity_id  = ? `
+	_, err = o.Raw(sql, activityId).Exec()
+	return
+}
+
 // UpdateCygxActivitySubmitMeetingByYidong  ,跟易董返回的用户状态修改活动以提交到会状态
 func UpdateCygxActivitySubmitMeetingByYidong(yidongActivityId string) (err error) {
 	o := orm.NewOrm()

+ 121 - 7
models/activity_meet_detail_log.go

@@ -3,11 +3,12 @@ package models
 import (
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
+	"strconv"
 	"strings"
 	"time"
 )
 
-//报名
+// 报名
 type CygxActivityMeetDetailLog struct {
 	AttendanceId int       `orm:"column(attendance_id);pk;"description:"主键ID"`
 	ActivityId   int       `description:"活动ID"`
@@ -20,6 +21,9 @@ type CygxActivityMeetDetailLog struct {
 }
 
 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)
@@ -37,7 +41,7 @@ func GetOfflineMeetingDetailListCompanyName(companyName string) (item []*CygxAct
 	return
 }
 
-//添加
+// 添加
 func AddCygxActivityMeetDetailLog(item *CygxActivityMeetDetailLog) (lastId int64, err error) {
 	o := orm.NewOrm()
 	lastId, err = o.Insert(item)
@@ -45,6 +49,9 @@ func AddCygxActivityMeetDetailLog(item *CygxActivityMeetDetailLog) (lastId int64
 }
 
 func GetActivityMeetDetailLog(mobileStr string) (item []*CygxActivityMeetDetailLog, err error) {
+	if mobileStr == "" {
+		return
+	}
 	o := orm.NewOrm()
 	sql := `SELECT l.* 
 			FROM
@@ -62,7 +69,7 @@ func GetActivityMeetDetailLogByMobile() (item []*CygxActivityMeetDetailLog, err
 	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 `
@@ -73,7 +80,7 @@ func GetActivityMeetDetailLogCount(condition string) (count int, err error) {
 	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()
@@ -81,7 +88,7 @@ func UpdateActivityMeetDetailLog(companyName string, num int) (err error) {
 	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()
@@ -89,7 +96,7 @@ func UpdateActivityMeetDetailLogByUser(mobile string, num int) (err error) {
 	return
 }
 
-//添加线上到会记录(下载使用)
+// 添加线上到会记录(下载使用)
 func AddCygxActivityMeetDetailLogOnline(list []*CygxActivityAttendanceDetail, activityId int) (err error) {
 	o, err := orm.NewOrm().Begin()
 	if err != nil {
@@ -167,7 +174,7 @@ func AddCygxActivityMeetDetailLogOnline(list []*CygxActivityAttendanceDetail, ac
 	return
 }
 
-//添加线上到会记录
+// 添加线上到会记录
 func AddCygxActivityMeetDetailLogOnlineByList(list []*CygxActivityAttendanceDetail, activityIds string) (err error) {
 	o, err := orm.NewOrm().Begin()
 	if err != nil {
@@ -255,3 +262,110 @@ func AddCygxActivityMeetDetailLogOnlineByList(list []*CygxActivityAttendanceDeta
 	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
+}

+ 74 - 0
models/activity_offline_meeting_detail.go

@@ -0,0 +1,74 @@
+package models
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+// 报名
+type CygxActivityOfflineMeetingDetail struct {
+	Id          int       `orm:"column(id);pk"`
+	UserId      int       `description:"用户id"`
+	ActivityId  int       `description:"活动ID"`
+	CreateTime  time.Time `description:"创建时间"`
+	Mobile      string    `description:"手机号"`
+	Email       string    `description:"邮箱号"`
+	CompanyId   int       `description:"公司ID"`
+	CompanyName string    `description:"公司名称"`
+	IsMeeting   int       `description:"是否到会  1.是 ,0否"`
+	SigninTime  string    `description:"签到时间"`
+}
+
+// 列表
+func GetOfflineMeetingList(condition string, pars []interface{}) (items []*CygxActivitySignupList, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT  *
+			FROM cygx_activity_offline_meeting_detail   WHERE 1 =1 ` + condition
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
+// 批量添加
+func AddCygxActivityOfflineMeetingDetailList(items []*CygxActivityOfflineMeetingDetail) (lastId int64, err error) {
+	lenitems := len(items)
+	if lenitems == 0 {
+		return
+	}
+	o := orm.NewOrm()
+	_, err = o.InsertMulti(1, items)
+	return
+}
+
+// 添加
+func AddCygxActivityOfflineMeetingDetail(item *CygxActivityOfflineMeetingDetail) (err error) {
+	o := orm.NewOrm()
+	_, err = o.Insert(item)
+	return
+}
+
+// 获取数量
+func GetCygxActivityOfflineMeetingDetailCount(condition string, pars []interface{}) (count int, err error) {
+	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_activity_offline_meeting_detail as art WHERE 1= 1  `
+	if condition != "" {
+		sqlCount += condition
+	}
+	o := orm.NewOrm()
+	err = o.Raw(sqlCount, pars).QueryRow(&count)
+	return
+}
+
+// UpdateCygxActivityOfflineMeetingDetailSigninTime  修改签到时间
+func UpdateCygxActivityOfflineMeetingDetailSigninTime(activityId, userId int) (err error) {
+	o := orm.NewOrm()
+	sql := `UPDATE cygx_activity_offline_meeting_detail SET signin_time = NOW() ,is_meeting = 1  WHERE activity_id  = ? AND  user_id = ? `
+	_, err = o.Raw(sql, activityId, userId).Exec()
+	return
+}
+
+// 预约外呼列表
+func GetOfflineMeetingListByUser(meetingUids string, activityId int) (items []*CygxActivityOfflineMeetingDetail, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT s.* FROM cygx_activity_offline_meeting_detail  as s  WHERE activity_id = ? AND user_id IN  (` + meetingUids + `)`
+	_, err = o.Raw(sql, activityId).QueryRows(&items)
+	return
+}

+ 129 - 0
models/activity_signin.go

@@ -0,0 +1,129 @@
+package models
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type CygxActivitySignin 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:"公司名称"`
+	BusinessCard string    `description:"名片"`
+	RealName     string    `description:"用户实际名称"`
+	IsSignup     int       `description:"是否报名了"`
+	CountryCode  string    `description:"手机国家区号"`
+	OpenId       string    `description:"Openid"`
+}
+
+type CygxActivitySigninLog 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:"公司名称"`
+	BusinessCard string    `description:"名片"`
+	RealName     string    `description:"用户实际名称"`
+	IsSignup     int       `description:"是否报名了"`
+	CountryCode  string    `description:"手机国家区号"`
+	OpenId       string    `description:"Openid"`
+}
+
+type CygxActivitySigninResp struct {
+	ActivityId   int    `description:"活动ID"`
+	ActivityName string `description:"活动名称"`
+	RealName     string `description:"用户实际名称"`
+	Mobile       string `description:"手机号"`
+	CompanyName  string `description:"公司名称"`
+	BusinessCard string `description:"名片"`
+	IsNewUser    bool   `description:"是否属于新客户"`
+	IsSignup     bool   `description:"是否报名了"`
+}
+
+type CygxActivitySigninDetailResp struct {
+	Detail          *CygxActivitySigninResp
+	IsBindingMobile bool `description:"是否绑定手机号"`
+}
+
+// 获取数量
+func GetCygxActivitySigninCount(condition string, pars []interface{}) (count int, err error) {
+	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_activity_signin as art WHERE 1= 1  `
+	if condition != "" {
+		sqlCount += condition
+	}
+	o := orm.NewOrm()
+	err = o.Raw(sqlCount, pars).QueryRow(&count)
+	return
+}
+
+func GetCygxActivitySigninDetail(condition string, pars []interface{}) (item *CygxActivitySignin, err error) {
+	sql := `SELECT *  FROM cygx_activity_signin as art WHERE 1= 1 `
+	if condition != "" {
+		sql += condition
+	}
+	err = orm.NewOrm().Raw(sql, pars).QueryRow(&item)
+	return
+}
+
+// 修改创建时间,做签到时间使用
+func UpdatedateCygxActivitySignin(item *CygxActivitySignin) (err error) {
+	sql := ` UPDATE cygx_activity_signin SET  create_time= NOW()   WHERE   open_id = ?  AND activity_id = ? `
+	o := orm.NewOrm()
+	_, err = o.Raw(sql, item.OpenId, item.ActivityId).Exec()
+	return
+}
+
+// 添加
+func AddCygxActivitySignin(item *CygxActivitySignin) (err error) {
+	o := orm.NewOrm()
+	_, err = o.Insert(item)
+	return
+}
+
+// 修改
+func UpdateCygxActivitySignin(item *CygxActivitySignin) (err error) {
+	o := orm.NewOrm()
+	updateParams := make(map[string]interface{})
+	updateParams["UserId"] = item.UserId
+	updateParams["Mobile"] = item.Mobile
+	updateParams["Email"] = item.Email
+	updateParams["CompanyId"] = item.CompanyId
+	updateParams["CompanyName"] = item.CompanyName
+	updateParams["BusinessCard"] = item.BusinessCard
+	updateParams["RealName"] = item.RealName
+	updateParams["CountryCode"] = item.CountryCode
+	ptrStructOrTableName := "cygx_activity_signin"
+	whereParam := map[string]interface{}{"id": item.Id}
+	qs := o.QueryTable(ptrStructOrTableName)
+	for expr, exprV := range whereParam {
+		qs = qs.Filter(expr, exprV)
+	}
+	_, err = qs.Update(updateParams)
+	return
+}
+
+// 添加日志
+func AddCygxActivitySigninLog(item *CygxActivitySigninLog) (err error) {
+	o := orm.NewOrm()
+	_, err = o.Insert(item)
+	return
+}
+
+type CygxActivitySigninReq struct {
+	ActivityId   int    `description:"活动id"`
+	CountryCode  string `description:"手机国家区号"`
+	Mobile       string `description:"手机号"`
+	VCode        string `description:"验证码"`
+	CompanyName  string `description:"公司名称"`
+	BusinessCard string `description:"名片"`
+	RealName     string `description:"用户实际名称"`
+	SigninType   int    `description:"签到方式,1:填写手机号/机构名称;2:上传名片"`
+}

+ 5 - 1
models/activity_signup.go

@@ -515,13 +515,17 @@ type CygxActivitySignupList struct {
 	IsMeeting   int    `description:"是否到会 ,1是, 0否"`
 	Operation   bool   `description:"操作按钮,true,到会,false 未到会"`
 	Channel     int    `description:"报名渠道,0 空降、 1小程序报名"`
+	SellerName  string `description:"所属销售"`
+	Mobile      string `description:"手机号"`
+	Email       string `description:"邮箱"`
+	CompanyId   int    `description:"公司id"`
 }
 
 // 获取用户报名列表
 func GetActivitySignupNomeetingCountList(activityId int) (items []*CygxActivitySignupList, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT
-	s.user_id
+	s.*
 FROM
 	cygx_activity_signup AS s
 	INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id 

+ 53 - 0
models/activity_signup_break.go

@@ -0,0 +1,53 @@
+package models
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type CygxActivitySignupBreak 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:"公司名称"`
+	RealName    string    `description:"用户实际名称"`
+	SellerName  string    `description:"所属销售"`
+}
+
+// 添加爽约记录
+func AddCygxActivitySignupBreak(item *CygxActivitySignupBreak) (lastId int64, err error) {
+	o := orm.NewOrm()
+	lastId, err = o.Insert(item)
+	return
+}
+
+// 批量添加
+func AddCygxActivitySignupBreakList(items []*CygxActivitySignupBreak) (lastId int64, err error) {
+	lenitems := len(items)
+	if lenitems == 0 {
+		return
+	}
+	o := orm.NewOrm()
+	_, err = o.InsertMulti(1, items)
+	return
+}
+
+// 删除
+func DeleteCygxActivitySignupBreak(uid, activityId int) (err error) {
+	o := orm.NewOrm()
+	sql := ` DELETE FROM cygx_activity_signup_break  WHERE user_id=? AND activity_id =? `
+	_, err = o.Raw(sql, uid, activityId).Exec()
+	return
+}
+
+// 删除
+func DeleteCygxActivitySignupBreakById(activityId int) (err error) {
+	o := orm.NewOrm()
+	sql := ` DELETE FROM cygx_activity_signup_break  WHERE  activity_id =? `
+	_, err = o.Raw(sql, activityId).Exec()
+	return
+}

+ 4 - 0
models/db.go

@@ -135,12 +135,16 @@ func init() {
 		new(CygxXzsChooseCategory),
 		new(CygxReportSelectionSubjectHistory),
 		new(CygxTacticsTimeLineHistory),
+		new(CygxActivitySignin),
+		new(CygxActivitySigninLog),
+		new(CygxActivityOfflineMeetingDetail),
 		new(CygxProductInteriorHistory),
 		new(CygxMorningMeetingGather),
 		new(CygxArticleCategoryMapping),
 		new(CygxReportMappingCygx),
 		new(CygxReportMappingGroup),
 		new(CygxAboutUsVideoHistory),
+		new(CygxActivitySignupBreak),
 	)
 	// 记录ORM查询日志
 	orm.Debug = true

+ 18 - 0
routers/commentsRouter.go

@@ -232,6 +232,24 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ActivitySignCoAntroller"] = append(beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ActivitySignCoAntroller"],
+        beego.ControllerComments{
+            Method: "ByHand",
+            Router: `/byHand`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ActivitySignCoAntroller"] = append(beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ActivitySignCoAntroller"],
+        beego.ControllerComments{
+            Method: "Detail",
+            Router: `/detail`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ActivitySpecialCoAntroller"] = append(beego.GlobalControllerRouter["hongze/hongze_cygx/controllers:ActivitySpecialCoAntroller"],
         beego.ControllerComments{
             Method: "SpecialTripAdd",

+ 5 - 0
routers/router.go

@@ -139,6 +139,11 @@ func init() {
 				&controllers.ReportSelectionController{},
 			),
 		),
+		web.NSNamespace("/activity_signin",
+			web.NSInclude(
+				&controllers.ActivitySignCoAntroller{},
+			),
+		),
 		web.NSNamespace("/product_interior",
 			web.NSInclude(
 				&controllers.ProductInteriorController{},

+ 41 - 18
services/activity.go

@@ -1408,10 +1408,15 @@ func ActivityAttendanceDetail(cont context.Context) (err error) {
 
 // 判断是否加入黑名单
 func AddCygxActivityRestrictSignupByAdmin(activityId int) (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg("判断是否加入黑名单记录失败"+err.Error(), 2)
+		}
+	}()
 	total, err := models.GetActivitySignupNomeetingCount(activityId)
 	if err != nil {
-		utils.FileLog.Info("用户限制报名失败,Err:%s,%s", err.Error())
-		fmt.Println(" Err:", err.Error())
+		err = errors.New("GetActivitySignupNomeetingCount" + err.Error())
 		return err
 	}
 	if total == 0 {
@@ -1422,21 +1427,18 @@ func AddCygxActivityRestrictSignupByAdmin(activityId int) (err error) {
 		for _, v := range mobileList {
 			totalRestrict, err := models.GetRestrictSignupCountByUid(v.UserId)
 			if err != nil {
-				fmt.Println(" Err:", err.Error())
-				utils.FileLog.Info("用户限制报名失败,Err:%s,%s", err.Error())
+				err = errors.New("GetRestrictSignupCountByUid" + err.Error())
 				return err
 			}
 			totalNomeet, err := models.GetActivitySignupNomeetingCountByUid(v.UserId)
 			if err != nil {
-				fmt.Println(" Err:", err.Error())
-				utils.FileLog.Info("用户限制报名失败,Err:%s,%s", err.Error())
+				err = errors.New("GetActivitySignupNomeetingCountByUid" + err.Error())
 				return err
 			}
 			if totalRestrict > 0 && totalNomeet < 3 {
 				err = models.DeleteCygxActivityRestrictSignup(v.UserId)
 				if err != nil {
-					fmt.Println(" Err:", err.Error())
-					utils.FileLog.Info("用户限制报名失败,Err:%s,%s", err.Error())
+					err = errors.New("DeleteCygxActivityRestrictSignup" + err.Error())
 					return err
 				}
 			}
@@ -1445,29 +1447,27 @@ func AddCygxActivityRestrictSignupByAdmin(activityId int) (err error) {
 
 	list, err := models.GetActivitySignupNomeetingCountList(activityId)
 	if err != nil {
-		utils.FileLog.Info("用户限制报名失败,Err:%s,%s", err.Error())
-		fmt.Println(" 用户限制报名失败 Err:", err.Error())
+		err = errors.New("GetActivitySignupNomeetingCountList" + err.Error())
 		return err
 	}
+	var items []*models.CygxActivitySignupBreak
 	for _, v := range list {
 		totalRestrict, err := models.GetRestrictSignupCountByUid(v.UserId)
 		if err != nil {
-			fmt.Println(" Err:", err.Error())
-			utils.FileLog.Info("用户限制报名失败,Err:%s,%s", err.Error())
+			err = errors.New("GetRestrictSignupCountByUid" + err.Error())
 			return err
 		}
 		totalNomeet, err := models.GetActivitySignupNomeetingCountByUid(v.UserId)
 		if err != nil {
-			fmt.Println(" Err:", err.Error())
-			utils.FileLog.Info("用户限制报名失败,Err:%s,%s", err.Error())
+			err = errors.New("GetActivitySignupNomeetingCountByUid" + err.Error())
 			return err
 		}
 		if totalNomeet >= 3 {
 			if totalRestrict == 0 {
 				infoUser, err := models.GetUserAndCompanyNameList(v.UserId)
+				//if err != nil && err.Error() != utils.ErrNoRow() {
 				if err != nil {
-					fmt.Println(" Err:", err.Error())
-					utils.FileLog.Info("用户限制报名失败,Err:%s,%s", err.Error())
+					err = errors.New("GetUserAndCompanyNameList" + err.Error())
 					return err
 				}
 				if infoUser != nil {
@@ -1481,13 +1481,36 @@ func AddCygxActivityRestrictSignupByAdmin(activityId int) (err error) {
 					item.IsRestrict = 1
 					err = models.AddCygxActivityRestrictSignup(item)
 					if err != nil {
-						fmt.Println(" Err:", err.Error())
-						utils.FileLog.Info("用户限制报名失败,Err:%s,%s", err.Error())
+						err = errors.New("AddCygxActivityRestrictSignup" + err.Error())
 						return err
 					}
 				}
 			}
 		}
+
+		//处理未到会
+		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)
+	}
+
+	err = models.DeleteCygxActivitySignupBreakById(activityId)
+	if err != nil {
+		err = errors.New("DeleteCygxActivitySignupBreakById" + err.Error())
+		return
+	}
+	_, err = models.AddCygxActivitySignupBreakList(items)
+	if err != nil {
+		err = errors.New("AddCygxActivitySignupBreakList, Err: " + err.Error())
+		return
 	}
 	return
 }

+ 179 - 0
services/activity_signin.go

@@ -0,0 +1,179 @@
+package services
+
+import (
+	"context"
+	"errors"
+	"fmt"
+	"hongze/hongze_cygx/models"
+	"hongze/hongze_cygx/utils"
+	"strconv"
+	"time"
+)
+
+// AddCygxActivitySigninLog 扫码签到日志记录
+func AddCygxActivitySigninLog(item *models.CygxActivitySignin) (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg("扫码签到日志记录,失败,活动ID:"+strconv.Itoa(item.ActivityId)+err.Error(), 2)
+		}
+	}()
+	//添加日志记录
+	itemLog := new(models.CygxActivitySigninLog)
+	itemLog.ActivityId = item.ActivityId
+	itemLog.UserId = item.UserId
+	itemLog.Mobile = item.Mobile
+	itemLog.Email = item.Email
+	itemLog.CompanyId = item.CompanyId
+	itemLog.RealName = item.RealName
+	itemLog.CompanyName = item.CompanyName
+	itemLog.IsSignup = item.IsSignup
+	itemLog.BusinessCard = item.BusinessCard
+	itemLog.CountryCode = item.CountryCode
+	itemLog.OpenId = item.OpenId
+	itemLog.CreateTime = time.Now()
+	err = models.AddCygxActivitySigninLog(itemLog)
+	if err != nil {
+		return
+	}
+
+	err = models.UpdatedateCygxActivitySignin(item)
+	return
+}
+
+// AddCygxActivityOfflineMeetingDetail 扫码签到日志记录
+func AddCygxActivityOfflineMeetingDetail(activityid int, user *models.WxUserItem) (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg("扫码签到日志记录,失败,活动ID:"+strconv.Itoa(activityid)+err.Error(), 2)
+		}
+	}()
+
+	var condition string
+	var pars []interface{}
+
+	condition = `  AND activity_id = ?`
+	pars = append(pars, activityid)
+	listOfflineMeeting, err := models.GetOfflineMeetingList(condition, pars)
+	if err != nil {
+		err = errors.New("GetOfflineMeetingList, Err: " + err.Error())
+		return
+	}
+	mapOfflineMeeting := make(map[int]bool)
+	for _, v := range listOfflineMeeting {
+		mapOfflineMeeting[v.UserId] = true
+	}
+	pars = make([]interface{}, 0)
+	condition = ` AND do_fail_type = 0 AND activity_id  = ?`
+	pars = append(pars, activityid)
+	listSignup, e := models.GetActivitySignupList(condition, pars)
+	if e != nil {
+		err = errors.New("GetResourceDataList, Err: " + e.Error())
+		return
+	}
+
+	var items []*models.CygxActivityOfflineMeetingDetail
+	for _, v := range listSignup {
+		if !mapOfflineMeeting[v.UserId] {
+			item := new(models.CygxActivityOfflineMeetingDetail)
+			item.UserId = v.UserId
+			item.ActivityId = v.ActivityId
+			item.CreateTime = v.CreateTime
+			item.Mobile = v.Mobile
+			item.CompanyId = v.CompanyId
+			item.CompanyName = v.CompanyName
+			if user.UserId == v.UserId {
+				item.IsMeeting = 1
+				item.SigninTime = time.Now().Format(utils.FormatDateTime)
+			}
+			items = append(items, item)
+		}
+	}
+
+	//添加线下到会信息记录
+	_, err = models.AddCygxActivityOfflineMeetingDetailList(items)
+	if err != nil {
+		err = errors.New("AddCygxActivityOfflineMeetingDetailList, Err: " + err.Error())
+		return
+	}
+
+	//修改活动是否提交到会状态
+	err = models.UpdateCygxActivitySubmitMeetingByActivityId(activityid)
+	if err != nil {
+		err = errors.New("UpdateCygxActivitySubmitMeetingByActivityId, Err: " + err.Error())
+		return
+	}
+
+	//修改签到时间
+	err = models.UpdateCygxActivityOfflineMeetingDetailSigninTime(activityid, user.UserId)
+	if err != nil {
+		err = errors.New("UpdateCygxActivityOfflineMeetingDetailSigninTime, Err: " + err.Error())
+		return
+	}
+	return
+}
+
+// CygxActivityRestrictSignupByTask 定时任务处理未到会人员的爽约
+func CygxActivityRestrictSignupByTask(cont context.Context) (err error) {
+	//func CygxActivityRestrictSignupByTask() (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg("判断是否加入黑名单记录失败"+err.Error(), 2)
+		}
+	}()
+	var pars []interface{}
+	var condition string
+	startDate := time.Now().Add(-time.Minute * 120).Format(utils.FormatDateTime)
+	endDate := time.Now().Add(-time.Minute * 105).Format(utils.FormatDateTime)
+	condition = " AND  activity_type_id IN (5,6)  AND signin_img != ''  AND  publish_status = 1  AND activity_time  >= ?  AND  activity_time  <= ? "
+	pars = append(pars, startDate, endDate)
+	activityList, err := models.GetActivityListByCondition(condition, pars)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		return
+	}
+	if len(activityList) == 0 {
+		return
+	}
+	for _, v := range activityList {
+		go AddCygxActivityRestrictSignupByAdmin(v.ActivityId) // 处理爽约限制
+	}
+	for _, v := range activityList {
+		err = models.AddCygxActivityMeetDetailLogOffline(v.ActivityId)
+		if err != nil {
+			return
+		}
+		//修改活动是否提交到会状态
+		err = models.UpdateCygxActivitySubmitMeetingByActivityId(v.ActivityId)
+		if err != nil {
+			err = errors.New("UpdateCygxActivitySubmitMeetingByActivityId, Err: " + err.Error())
+			return
+		}
+	}
+	return
+}
+
+func CygxActivityRestrictSignupByuid(uid, activityId int) (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg("判断是否加入黑名单记录失败"+err.Error(), 2)
+		}
+	}()
+
+	err = models.DeleteCygxActivitySignupBreak(uid, activityId)
+	if err != nil {
+		err = errors.New("DeleteCygxActivitySignupBreak" + err.Error())
+		return err
+	}
+	totalNomeet, err := models.GetActivitySignupNomeetingCountByUid(uid)
+	if err != nil {
+		err = errors.New("GetActivitySignupNomeetingCountByUid" + err.Error())
+		return err
+	}
+	if totalNomeet < 3 {
+		err = models.DeleteCygxActivityRestrictSignup(uid)
+	}
+	return
+}

+ 11 - 11
services/activity_signup.go

@@ -58,17 +58,17 @@ func CheckActivitySignUpLimit(user *models.WxUserItem, activityInfo *models.Acti
 			return
 		}
 	}
-	totalRestrict, e := models.GetUserRestrictCount(user.Mobile)
-	if e != nil {
-		err = errors.New("GetUserRestrictCount, Err: " + e.Error())
-		return
-	}
-	if totalRestrict >= 1 {
-		signupStatus = "BreakPromise"
-		popupMsg = "由于爽约次数过多,您暂时被限制报名资格,请联系对口销售"
-		failType = 3
-		return
-	}
+	//totalRestrict, e := models.GetUserRestrictCount(user.Mobile)
+	//if e != nil {
+	//	err = errors.New("GetUserRestrictCount, Err: " + e.Error())
+	//	return
+	//}
+	//if totalRestrict >= 1 {
+	//	signupStatus = "BreakPromise"
+	//	popupMsg = "由于爽约次数过多,您暂时被限制报名资格,请联系对口销售"
+	//	failType = 3
+	//	return
+	//}
 	return
 
 }

+ 47 - 0
services/init_10.4.go

@@ -0,0 +1,47 @@
+package services
+
+import (
+	"fmt"
+	"hongze/hongze_cygx/models"
+	"time"
+)
+
+func init213() {
+	var condition string
+	var pars []interface{}
+	var err error
+	condition += `AND do_fail_type = 0 AND  is_meeting = 0`
+	listSignup, err := models.GetActivitySignuListByUser(condition, pars)
+	if err != nil {
+		fmt.Println(err)
+	}
+	var items []*models.CygxActivitySignupBreak
+	var numk int
+	for _, v := range listSignup {
+		numk++
+		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)
+		if numk%5000 == 0 {
+			fmt.Println(v)
+			_, err = models.AddCygxActivitySignupBreakList(items)
+			if err != nil {
+				fmt.Println(err)
+			}
+			items = make([]*models.CygxActivitySignupBreak, 0)
+			numk = 0
+		}
+	}
+	if len(items) > 0 {
+		_, err = models.AddCygxActivitySignupBreakList(items)
+	}
+	fmt.Println(len(listSignup))
+}

+ 3 - 0
services/task.go

@@ -108,6 +108,9 @@ func Task() {
 		makeMorningMeetingReviews := task.NewTask("makeMorningMeetingReviews", "0 30 10 * * *", MakeMorningMeetingReviews)
 		task.AddTask("makeMorningMeetingReviews", makeMorningMeetingReviews) //每天10::30定时生成晨会精华汇总
 
+		cygxActivityRestrictSignupByTask := task.NewTask("cygxActivityRestrictSignupByTask", "0 */10 6-23 * * *", CygxActivityRestrictSignupByTask)
+		task.AddTask("cygxActivityRestrictSignupByTask", cygxActivityRestrictSignupByTask) //定时任务处理为到会人员的爽约
+
 	}
 	if utils.RunMode != "release" {
 		getArticleListByApi := task.NewTask("getArticleListByApi", "0 */60 * * * *", GetArticleListByApi) //通过三方接口获取策略平台上的文章