Browse Source

no message

xingzai 1 year ago
parent
commit
afd0f58546

+ 116 - 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"`
@@ -37,7 +38,7 @@ func GetOfflineMeetingDetailListCompanyName(companyName string) (item []*CygxAct
 	return
 }
 
-//添加
+// 添加
 func AddCygxActivityMeetDetailLog(item *CygxActivityMeetDetailLog) (lastId int64, err error) {
 	o := orm.NewOrm()
 	lastId, err = o.Insert(item)
@@ -62,7 +63,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 +74,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 +82,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 +90,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 +168,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 +256,111 @@ 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
+}

+ 8 - 0
models/activity_offline_meeting_detail.go

@@ -64,3 +64,11 @@ func UpdateCygxActivityOfflineMeetingDetailSigninTime(activityId, userId int) (e
 	_, 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
+}

+ 16 - 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,26 @@ 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
 	}
 	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,8 +1480,7 @@ 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
 					}
 				}

+ 33 - 1
services/activity_signin.go

@@ -1,6 +1,7 @@
 package services
 
 import (
+	"context"
 	"errors"
 	"fmt"
 	"hongze/hongze_cygx/models"
@@ -110,7 +111,38 @@ func AddCygxActivityOfflineMeetingDetail(activityid int, user *models.WxUserItem
 		err = errors.New("UpdateCygxActivityOfflineMeetingDetailSigninTime, Err: " + err.Error())
 		return
 	}
-
 	return
+}
 
+// CygxActivityRestrictSignupByTask 定时任务处理未到会人员的爽约
+func CygxActivityRestrictSignupByTask(cont context.Context) (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 * 45).Format(utils.FormatDateTime)
+	endDate := time.Now().Add(+time.Minute * 60).Format(utils.FormatDateTime)
+	condition = " AND  activity_type_id IN (5,6)  AND signin_img != ''  AND  publish_status = 1  AND activity_time  BETWEEN ?  AND  ? "
+	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
+		}
+	}
+	return
 }

+ 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) //通过三方接口获取策略平台上的文章