Эх сурвалжийг харах

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

xingzai 1 жил өмнө
parent
commit
7ad5a066ba

+ 24 - 11
controllers/activity.go

@@ -238,15 +238,15 @@ func (this *ActivityCoAntroller) ScheduleList() {
 	}
 
 	//添加我的日程访问记录
-	item := new(models.CygxPageHistoryRecord)
-	item.UserId = user.UserId
-	item.CreateTime = time.Now()
-	item.Mobile = user.Mobile
-	item.Email = user.Email
-	item.CompanyId = user.CompanyId
-	item.CompanyName = user.CompanyName
-	item.PageType = "MySchedule"
-	go models.AddCygxPageHistoryRecord(item)
+	//item := new(models.CygxPageHistoryRecord)
+	//item.UserId = user.UserId
+	//item.CreateTime = time.Now()
+	//item.Mobile = user.Mobile
+	//item.Email = user.Email
+	//item.CompanyId = user.CompanyId
+	//item.CompanyName = user.CompanyName
+	//item.PageType = "MySchedule"
+	//go models.AddCygxPageHistoryRecord(item)
 	resp := new(models.GetCygxActivityListRep)
 
 	//处理音频回放
@@ -959,6 +959,13 @@ func (this *ActivityCoAntroller) SignupCancel() {
 		br.ErrMsg = "操作失败,Err:" + errInfo.Error()
 		return
 	}
+	cancelDeadlineMsg := services.CheckCancelDeadline(activityInfo)
+	if cancelDeadlineMsg != "" {
+		br.Msg = cancelDeadlineMsg
+		br.ErrMsg = cancelDeadlineMsg
+		return
+	}
+
 	resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
 	if time.Now().After(resultTime.Add(-time.Minute * 60)) {
 		if signupType == 1 {
@@ -2338,6 +2345,7 @@ func (this *ActivityCoAntroller) LabelTypeListV5() {
 	}
 	mapActivity := make(map[int][]*models.CygxActivityLabelList)
 	mapkeyWord := make(map[string]string)
+	activityPointsByUserAllMap := services.GetActivityPointsByUserAllMap() // 获取对用户进行研选扣点的活动
 	for _, v := range listActivity {
 		if v.KeyWord == "" {
 			continue
@@ -2347,6 +2355,7 @@ func (this *ActivityCoAntroller) LabelTypeListV5() {
 			v.ActivityTypeId = 2
 		}
 		item := new(models.CygxActivityLabelList)
+		item.IsResearchPoints = activityPointsByUserAllMap[v.ActivityId]
 		item.City = mapCity[fmt.Sprint(v.KeyWord, "{|}", v.ActivityTypeId)]
 		item.KeyWord = services.LabelStrV5(v.KeyWord, v.IsShowSubjectName, v.TemporaryLabel)
 		if _, ok := mapkeyWord[fmt.Sprint(v.ActivityTypeId, "-", item.KeyWord)]; ok {
@@ -2356,7 +2365,6 @@ func (this *ActivityCoAntroller) LabelTypeListV5() {
 		item.ActivityId = v.ActivityId
 
 		item.IsExternalLabel = v.IsExternalLabel
-		item.IsResearchPoints = v.IsResearchPoints
 
 		mapActivity[v.ActivityTypeId] = append(mapActivity[v.ActivityTypeId], item)
 		mapkeyWord[fmt.Sprint(v.ActivityTypeId, "-", item.KeyWord)] = item.KeyWord
@@ -3979,6 +3987,12 @@ func (this *ActivityCoAntroller) Check() {
 	}
 	//这里的文案顺序提示 权限>时间>研选扣点>邮箱绑定。
 	resp := new(models.ActivityCheck)
+	resp.CancelPopupMsg, err = services.ActivityCancelDeadlineMsg(activityInfo) //处理取消报名截止时间的弹窗文案
+	if err != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "操作失败,Err:" + err.Error()
+		return
+	}
 	hasPermission := 0
 	havePower, isResearchSpecial, err := services.GetActivityDetailUserPower(user, activityInfo)
 	if err != nil {
@@ -4016,7 +4030,6 @@ func (this *ActivityCoAntroller) Check() {
 			return
 		}
 	}
-
 	if resp.CheckPoints {
 		//如果通过点数的校验,就来校验邮箱
 		resp.CheckEmail, resp.PopupMsg = services.CheckActivityUserEmail(activityInfo, user)

+ 8 - 2
models/activity.go

@@ -74,6 +74,7 @@ type ActivityCheck struct {
 	CheckPermission   bool   `description:"权限是否通过校验"`
 	HasPermission     int    `description:"操作方式,1:有该行业权限,正常展示,2:无该行业权限,3:潜在客户,未提交过申请,4:潜在客户,已提交过申请"`
 	PopupMsg          string `description:"权限弹窗信息"`
+	CancelPopupMsg    string `description:"取消报名时间弹窗信息"`
 	SellerMobile      string `description:"销售电话"`
 	SellerName        string `description:"销售姓名"`
 	Mobile            string `description:"手机号"`
@@ -231,6 +232,7 @@ type ActivityDetail struct {
 	SiginupDeadline         string                     `description:"报名截止时间"`
 	IsExternalLabel         bool                       `description:"是否为外部资源"`
 	IsResearchPoints        bool                       `description:"是否为研选扣点"`
+	CancelDeadline          string                     `description:"取消报名截止时间"`
 }
 type ListArticleActivity struct {
 	Title   string `description:"文章标题"`
@@ -465,7 +467,8 @@ func GetScheduleAndSpecilList(condition string, pars []interface{}, conditionSpe
 			art.city,
 			art.is_external_label,
 			art.siginup_deadline,
-			art.is_research_points
+			art.is_research_points,
+			art.cancel_deadline
 		FROM
 			cygx_activity AS art
 			INNER JOIN cygx_my_schedule AS my ON my.activity_id = art.activity_id
@@ -500,6 +503,7 @@ func GetScheduleAndSpecilList(condition string, pars []interface{}, conditionSpe
 			"",
 			"",
 			"",
+			"",
 			""
 		FROM
 			cygx_activity_special AS art
@@ -1121,7 +1125,8 @@ func GetActivitySpecialSearcheList(condition string, pars []interface{}, conditi
 			art.activity_time,
 			art.is_external_label,
 			art.siginup_deadline,
-			art.is_research_points
+			art.is_research_points,
+			art.cancel_deadline
 		FROM
 			cygx_activity AS art
 			INNER JOIN cygx_activity_type AS t ON t.activity_type_id = art.activity_type_id
@@ -1156,6 +1161,7 @@ func GetActivitySpecialSearcheList(condition string, pars []interface{}, conditi
 			art.activity_time,
 			"",
 			"",
+			"",
 			""
 		FROM
 			cygx_activity_special AS art

+ 11 - 10
models/activity_points_set.go

@@ -18,16 +18,17 @@ type YanXuanActivityPointsRedis struct {
 }
 
 type CygxActivityPointsSet struct {
-	Id               int       `gorm:"column:id;primary_key;AUTO_INCREMENT" json:"id"`
-	ActivityId       int       `gorm:"column:activity_id;NOT NULL" json:"activity_id"`                         // 活动ID
-	PointsObject     int       `gorm:"column:points_object;default:1;NOT NULL" json:"points_object"`           // 扣点对象,1:参会人、2:办会人、3:办会人和参会人
-	CompanyId        int       `gorm:"column:company_id;default:0;NOT NULL" json:"company_id"`                 // 公司ID
-	CompanyName      float64   `gorm:"column:company_name;NOT NULL" json:"company_name"`                       // 公司名称
-	UserPointsNum    float64   `gorm:"column:user_points_num;default:0;NOT NULL" json:"user_points_num"`       // 参会人扣点数量
-	PointsType       int       `gorm:"column:points_type;default:0;NOT NULL" json:"points_type"`               // 扣点形式,1:报名即扣点,2:到会即扣点
-	CompanyPointsNum float64   `gorm:"column:company_points_num;default:0;NOT NULL" json:"company_points_num"` // 办会人扣点数量
-	CreateTime       time.Time `gorm:"column:create_time;NOT NULL" json:"create_time"`                         // 创建时间
-	ModifyTime       time.Time `gorm:"column:modify_time;NOT NULL" json:"modify_time"`                         // 更新时间
+	Id                 int       `gorm:"column:id;primary_key;AUTO_INCREMENT" json:"id"`
+	ActivityId         int       `gorm:"column:activity_id;NOT NULL" json:"activity_id"`                         // 活动ID
+	PointsObject       int       `gorm:"column:points_object;default:1;NOT NULL" json:"points_object"`           // 扣点对象,1:参会人、2:办会人、3:办会人和参会人
+	CompanyId          int       `gorm:"column:company_id;default:0;NOT NULL" json:"company_id"`                 // 公司ID
+	CompanyName        float64   `gorm:"column:company_name;NOT NULL" json:"company_name"`                       // 公司名称
+	UserPointsNum      float64   `gorm:"column:user_points_num;default:0;NOT NULL" json:"user_points_num"`       // 参会人扣点数量
+	PointsType         int       `gorm:"column:points_type;default:0;NOT NULL" json:"points_type"`               // 扣点形式,1:报名即扣点,2:到会即扣点
+	CompanyPointsNum   float64   `gorm:"column:company_points_num;default:0;NOT NULL" json:"company_points_num"` // 办会人扣点数量
+	CancelDeadlineType int       `description:"取消报名截止时间类型,0:不设置,1:同报名截止时间, 2:24小时之前、3:48小时之前"`
+	CreateTime         time.Time `gorm:"column:create_time;NOT NULL" json:"create_time"` // 创建时间
+	ModifyTime         time.Time `gorm:"column:modify_time;NOT NULL" json:"modify_time"` // 更新时间
 }
 
 type CygxActivityPointsSetRsq struct {

+ 55 - 48
services/activity.go

@@ -2257,105 +2257,112 @@ func DoActivityOnenIdWxTemplateMsg(cont context.Context) (err error) {
 	return
 }
 
-func ActivityButtonShow(item *models.ActivityDetail) (articleDetail *models.ActivityDetail) {
-	articleDetail = item
+func ActivityButtonShow(item *models.ActivityDetail) (activityDetail *models.ActivityDetail) {
+	activityDetail = item
 	//IsShowAppointment       bool                       `description:"是否展示预约纪要"`
 	//IsShowOutboundCall      bool                       `description:"是否展示预约外呼"`
 	//IsShowMeetingReminder   bool                       `description:"是否展示会议提醒"`
 	//IsShowHelpSsk           bool                       `description:"是否展示帮我带问"`
 	//IsShowSignup            bool                       `description:"是否展示我要报名"`
-	if articleDetail.SiginupDeadline == utils.FormatDateTimeInit { //报名截止时间处理
-		articleDetail.SiginupDeadline = ""
+
+	activityPointsByUserAllMap := GetActivityPointsByUserAllMap() // 获取对用户进行研选扣点的活动
+	activityDetail.IsResearchPoints = activityPointsByUserAllMap[activityDetail.ActivityId]
+	if activityDetail.SiginupDeadline == utils.FormatDateTimeInit { //报名截止时间处理
+		activityDetail.SiginupDeadline = ""
+	}
+	//如果报名截止时间不规范,或者是非研选扣点活动就把截止时间设置为空
+	if activityDetail.CancelDeadline == utils.FormatDateTimeInit || !activityDetail.IsResearchPoints {
+		activityDetail.CancelDeadline = ""
 	}
-	activityTimeText := articleDetail.ActivityTimeText
+	activityTimeText := activityDetail.ActivityTimeText
 	activityTimeText = strings.Replace(activityTimeText, "(", "(", -1)
 	activityTimeText = strings.Replace(activityTimeText, ")", ")", -1)
-	articleDetail.ActivityTimeText = activityTimeText
-	if articleDetail.SourceType != 2 {
-		articleDetail.SourceType = 1
+	activityDetail.ActivityTimeText = activityTimeText
+	if activityDetail.SourceType != 2 {
+		activityDetail.SourceType = 1
 	}
-	articleDetail.IsShowAppointment = false
+	activityDetail.IsShowAppointment = false
 	//易董的操作按钮都隐藏
-	if articleDetail.YidongActivityId != "" {
-		articleDetail.SourceType = 1
-		articleDetail.IsShowSignup = false
-		articleDetail.IsShowDetails = true
+	if activityDetail.YidongActivityId != "" {
+		activityDetail.SourceType = 1
+		activityDetail.IsShowSignup = false
+		activityDetail.IsShowDetails = true
 		return
 	}
 
 	//专家电话会 1
-	if articleDetail.ActivityTypeId == 1 && articleDetail.IsLimitPeople == 0 && (articleDetail.ActiveState == "1" || articleDetail.ActiveState == "2") {
-		articleDetail.IsShowHelpSsk = true
+	if activityDetail.ActivityTypeId == 1 && activityDetail.IsLimitPeople == 0 && (activityDetail.ActiveState == "1" || activityDetail.ActiveState == "2") {
+		activityDetail.IsShowHelpSsk = true
 	}
 	//新的是否展示规则
-	if articleDetail.IsCanAppointmentMinutes == 1 {
-		articleDetail.IsShowAppointment = true
+	if activityDetail.IsCanAppointmentMinutes == 1 {
+		activityDetail.IsShowAppointment = true
 	} else {
-		articleDetail.IsShowAppointment = false
+		activityDetail.IsShowAppointment = false
 	}
-	if articleDetail.ActiveState == "1" {
+	if activityDetail.ActiveState == "1" {
 		//专家电话会 1
 		//专家电话会限制人数的展示我要报名,不限制的展示预约外外呼
-		if articleDetail.ActivityTypeId == 1 {
+		if activityDetail.ActivityTypeId == 1 {
 			//articleDetail.IsShowOutboundCall = true
-			if articleDetail.LimitPeopleNum == 0 {
-				articleDetail.IsShowOutboundCall = true
+			if activityDetail.LimitPeopleNum == 0 {
+				activityDetail.IsShowOutboundCall = true
 				//articleDetail.IsShowHelpSsk = true
 			} else {
-				articleDetail.IsShowSignup = true
+				activityDetail.IsShowSignup = true
 			}
-			articleDetail.IsShowMeetingReminder = true
-			articleDetail.IsShowHelpSsk = true
+			activityDetail.IsShowMeetingReminder = true
+			activityDetail.IsShowHelpSsk = true
 		}
 
 		//分析师电话会 2
-		if articleDetail.ActivityTypeId == 2 {
-			if articleDetail.LimitPeopleNum == 0 {
-				articleDetail.IsShowOutboundCall = true
+		if activityDetail.ActivityTypeId == 2 {
+			if activityDetail.LimitPeopleNum == 0 {
+				activityDetail.IsShowOutboundCall = true
 				//articleDetail.IsShowHelpSsk = true
 			} else {
-				articleDetail.IsShowSignup = true
+				activityDetail.IsShowSignup = true
 			}
-			articleDetail.IsShowMeetingReminder = true
+			activityDetail.IsShowMeetingReminder = true
 		}
 
 		//公司调研电话会 3
-		if articleDetail.ActivityTypeId == 3 {
-			if articleDetail.IsResearchPoints || articleDetail.LimitPeopleNum > 0 {
-				articleDetail.IsShowSignup = true
+		if activityDetail.ActivityTypeId == 3 {
+			if activityDetail.IsResearchPoints || activityDetail.LimitPeopleNum > 0 {
+				activityDetail.IsShowSignup = true
 			} else {
-				articleDetail.IsShowMeetingReminder = true
-				articleDetail.IsShowOutboundCall = true
+				activityDetail.IsShowMeetingReminder = true
+				activityDetail.IsShowOutboundCall = true
 			}
 		}
 
 		//公司线下调研 4
-		if articleDetail.ActivityTypeId == 4 {
-			articleDetail.IsShowSignup = true
+		if activityDetail.ActivityTypeId == 4 {
+			activityDetail.IsShowSignup = true
 		}
 
 		//专家线下沙龙 5
-		if articleDetail.ActivityTypeId == 5 {
-			articleDetail.IsShowSignup = true
+		if activityDetail.ActivityTypeId == 5 {
+			activityDetail.IsShowSignup = true
 		}
 
 		//分析师线下沙龙 6
-		if articleDetail.ActivityTypeId == 6 {
-			articleDetail.IsShowSignup = true
+		if activityDetail.ActivityTypeId == 6 {
+			activityDetail.IsShowSignup = true
 		}
 
 		//分析师电话会(C类) 7
-		if articleDetail.ActivityTypeId == 7 {
-			articleDetail.IsShowSignup = true
-			articleDetail.IsShowMeetingReminder = true
-			articleDetail.ActivityTypeName = "分析师电话会"
+		if activityDetail.ActivityTypeId == 7 {
+			activityDetail.IsShowSignup = true
+			activityDetail.IsShowMeetingReminder = true
+			activityDetail.ActivityTypeName = "分析师电话会"
 		}
 	}
 
 	//如果是易董创建的活动,展示我要报名,不展示预约外呼
-	if articleDetail.IsYidongConduct {
-		articleDetail.IsShowSignup = true
-		articleDetail.IsShowOutboundCall = false
+	if activityDetail.IsYidongConduct {
+		activityDetail.IsShowSignup = true
+		activityDetail.IsShowOutboundCall = false
 	}
 
 	return

+ 40 - 0
services/activity_points.go

@@ -6,6 +6,7 @@ import (
 	"fmt"
 	"hongze/hongze_cygx/models"
 	"hongze/hongze_cygx/utils"
+	"strconv"
 	"time"
 )
 
@@ -13,6 +14,45 @@ import (
 //	GetActivityPointsAll()
 //}
 
+// GetActivityPointsByUserAllMap 获取所有针对用户扣点的活动
+func GetActivityPointsByUserAllMap() (mapResp map[int]bool) {
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg("GetActivityPointsByUserAllMap,Err:"+err.Error(), 2)
+		}
+	}()
+	var condition string
+	var pars []interface{}
+	//获取所有研选类型的活动
+	condition = `  AND chart_permission_id =   ` + strconv.Itoa(utils.CHART_PERMISSION_ID_YANXUAN)
+	listActivity, e := models.GetActivityListByCondition(condition, pars)
+	if e != nil {
+		err = errors.New("GetActivityListByCondition, Err: " + e.Error())
+		return
+	}
+	var activityIds []int
+	condition = ""
+	pars = make([]interface{}, 0)
+	for _, v := range listActivity {
+		activityIds = append(activityIds, v.ActivityId)
+	}
+	condition += ` AND  points_object  IN  (1,3) `
+	condition += ` AND activity_id IN (` + utils.GetOrmInReplace(len(activityIds)) + `)   `
+	pars = append(pars, activityIds)
+	list, e := models.GetCygxActivityPointsSetList(condition, pars, 0, 0)
+	if e != nil {
+		err = errors.New("GetCygxActivityPointsSetList, Err: " + e.Error())
+		return
+	}
+	mapResp = make(map[int]bool, 0)
+	for _, v := range list {
+		mapResp[v.ActivityId] = true
+	}
+	return
+}
+
 // GetActivityPointsAll 获取所有带有扣点的活动
 func GetActivityPointsAll() (mapResp map[int]bool, err error) {
 	defer func() {

+ 45 - 0
services/activity_signup.go

@@ -125,6 +125,51 @@ func CheckActivityUserEmail(activityInfo *models.ActivityDetail, wxUser *models.
 	return
 }
 
+// 处理取消报名截止时间的弹窗文案
+func ActivityCancelDeadlineMsg(activityInfo *models.ActivityDetail) (popupMsg string, err error) {
+	if !activityInfo.IsResearchPoints {
+		return
+	}
+	activityId := activityInfo.ActivityId
+	//获取活动是否扣点以及扣点规则明细
+	activityPointsSetDetail, e := models.GetCygxActivityPointsSetDetail(activityId)
+	if e != nil {
+		err = errors.New("GetCygxActivityPointsSetDetail" + e.Error())
+		return
+	}
+	cancelDeadlineType := activityPointsSetDetail.CancelDeadlineType
+	popupMsg = "活动开始前1小时取消报名,可返还点数"
+	//if activityInfo.CancelDeadlineType == 0 {
+	//	popupMsg = "活动开始前1小时取消报名,可返还点数"
+	//}
+	if cancelDeadlineType == 1 && activityInfo.SiginupDeadline != utils.FormatDateTimeInit && activityInfo.SiginupDeadline != "" {
+		siginupDeadline := utils.GetTimeDateRemoveYearAndSecond(activityInfo.SiginupDeadline)
+		popupMsg = siginupDeadline + "前取消报名,可返还点数"
+	}
+	if cancelDeadlineType == 2 {
+		popupMsg = "活动开始前24小时取消报名,可返还点数"
+	}
+	if cancelDeadlineType == 3 {
+		popupMsg = "活动开始前48小时取消报名,可返还点数"
+	}
+	return
+}
+
+// 校验取消报名截止时间
+func CheckCancelDeadline(activityInfo *models.ActivityDetail) (popupMsg string) {
+	if !activityInfo.IsResearchPoints {
+		return
+	}
+	//获取活动是否扣点以及扣点规则明细
+	if activityInfo.CancelDeadline != utils.FormatDateTimeInit {
+		timeResp := utils.StrTimeToTime(activityInfo.CancelDeadline)
+		if timeResp.Before(time.Now()) {
+			popupMsg = "当前时间点已无法取消报名,\n\n若想取消,请联系对口销售"
+		}
+	}
+	return
+}
+
 // // 校验报名顺序 截止时间>点数>邮箱
 func CheckActivityUserAll(activityInfo *models.ActivityDetail, wxUser *models.WxUserItem) (popupMsg string, err error) {
 	_, popupMsg = CheckSiginupDeadline(activityInfo)

+ 17 - 0
services/init_10.5.1.go

@@ -2,6 +2,7 @@ package services
 
 import (
 	"fmt"
+	"github.com/beego/beego/v2/client/orm"
 	"hongze/hongze_cygx/models"
 	"hongze/hongze_cygx/utils"
 	"time"
@@ -455,3 +456,19 @@ func init5555() {
 		fmt.Println(err, "555")
 	}
 }
+
+func init10_12() {
+	var condition string
+	var pars []interface{}
+	condition = " AND active_state = 1 "
+	listAct, err := models.GetCygxActivityList(condition, pars, 0, 100000)
+	fmt.Println(err)
+	for _, v := range listAct {
+		resultTime := utils.StrTimeToTime(v.ActivityTime)                             //时间字符串格式转时间格式
+		cancelDeadline := resultTime.Add(-time.Hour * 1).Format(utils.FormatDateTime) //默认一小时
+		o := orm.NewOrm()
+		sql := `UPDATE cygx_activity SET cancel_deadline = ? WHERE activity_id  = ? `
+		_, err = o.Raw(sql, cancelDeadline, v.ActivityId).Exec()
+		fmt.Println(err)
+	}
+}

+ 14 - 0
utils/common.go

@@ -854,3 +854,17 @@ func GetTimeDateRemoveYear(strTime string) (dataStr string) {
 	dataStr = strings.TrimRight(dataStr, "-")
 	return dataStr
 }
+
+// 时间格式去掉年和秒
+func GetTimeDateRemoveYearAndSecond(strTime string) (dataStr string) {
+	slicePublishTime := strings.Split(strTime, "-")
+	for k, v := range slicePublishTime {
+		if k == 0 {
+			continue
+		}
+		dataStr += v + "-"
+	}
+	dataStr = strings.TrimRight(dataStr, "-")
+	dataStr = dataStr[:len(dataStr)-3]
+	return
+}