xingzai 1 yıl önce
ebeveyn
işleme
f7e1207e44

+ 17 - 4
controllers/activity.go

@@ -1202,12 +1202,19 @@ func (this *ActivityController) SignupCancel() {
 		br.ErrMsg = "操作失败,Err:" + errInfo.Error()
 		return
 	}
-	checkTime, _ := services.CheckSiginupDeadline(activityInfo)
-	if !checkTime {
-		br.Msg = "报名名单已提交举办方,若想取消,请联系对口销售"
-		br.ErrMsg = "报名名单已提交举办方,若想取消,请联系对口销售"
+	//checkTime, _ := services.CheckSiginupDeadline(activityInfo)
+	//if !checkTime {
+	//	br.Msg = "报名名单已提交举办方,若想取消,请联系对口销售"
+	//	br.ErrMsg = "报名名单已提交举办方,若想取消,请联系对口销售"
+	//	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 {
@@ -2295,6 +2302,12 @@ func (this *ActivityController) 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 {

+ 7 - 0
models/activity.go

@@ -151,6 +151,7 @@ type ActivityDetail struct {
 	SiginupDeadline         string                     `description:"报名截止时间"`
 	IsExternalLabel         bool                       `description:"是否为外部资源"`
 	IsResearchPoints        bool                       `description:"是否为研选扣点"`
+	CancelDeadline          string                     `description:"取消报名截止时间"`
 }
 
 // 活动详情
@@ -227,12 +228,14 @@ type ActivityListResp struct {
 	IsExternalLabel         bool                       `description:"是否为外部资源"`
 	IsResearchPoints        bool                       `description:"是否为研选扣点"`
 	SiginupDeadline         string                     `description:"报名截止时间"`
+	CancelDeadline          string                     `description:"取消报名截止时间"`
 }
 
 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:"手机号"`
@@ -428,6 +431,7 @@ func GetActivitySpecialSearcheList(condition string, pars []interface{}, conditi
             art.city,
             art.is_research_points,
             art.siginup_deadline,
+            art.cancel_deadline,
 			art.activity_time 
 		FROM
 			cygx_activity AS art
@@ -463,6 +467,7 @@ func GetActivitySpecialSearcheList(condition string, pars []interface{}, conditi
 			"",
 			"",
 			"",
+			"",
 			art.activity_time 
 		FROM
 			cygx_activity_special AS art
@@ -559,6 +564,7 @@ func GetScheduleAndSpecilList(condition string, pars []interface{}, conditionSpe
 			art.is_yidong_conduct,
 			art.is_can_outbound_call,
 			art.is_research_points,
+			art.cancel_deadline,
 			art.host 
 		FROM
 			cygx_activity AS art
@@ -596,6 +602,7 @@ func GetScheduleAndSpecilList(condition string, pars []interface{}, conditionSpe
 			"",
 			"",
 			"",
+			"",
 			art.host 
 		FROM
 			cygx_activity_special AS art

+ 8 - 7
models/activity_points_set.go

@@ -19,13 +19,14 @@ type CygxActivityPointsSet struct {
 }
 
 type CygxActivityPointsSetRsq struct {
-	ActivityId       int    `gorm:"column:activity_id;NOT NULL" json:"ActivityId"`                        // 活动ID
-	PointsObject     int    `gorm:"column:points_object;default:1;NOT NULL" json:"PointsObject"`          // 扣点对象,1:参会人、2:办会人、3:办会人和参会人
-	CompanyId        int    `gorm:"column:company_id;default:0;NOT NULL" json:"CompanyId"`                // 公司ID
-	CompanyName      string `gorm:"column:company_name;NOT NULL" json:"CompanyName"`                      // 公司名称
-	UserPointsNum    string `gorm:"column:user_points_num;default:0;NOT NULL" json:"UserPointsNum"`       // 参会人扣点数量
-	PointsType       int    `gorm:"column:points_type;default:0;NOT NULL" json:"PointsType"`              // 扣点形式,1:报名即扣点,2:到会即扣点
-	CompanyPointsNum string `gorm:"column:company_points_num;default:0;NOT NULL" json:"CompanyPointsNum"` // 办会人扣点数量
+	ActivityId         int    `gorm:"column:activity_id;NOT NULL" json:"ActivityId"`                        // 活动ID
+	PointsObject       int    `gorm:"column:points_object;default:1;NOT NULL" json:"PointsObject"`          // 扣点对象,1:参会人、2:办会人、3:办会人和参会人
+	CompanyId          int    `gorm:"column:company_id;default:0;NOT NULL" json:"CompanyId"`                // 公司ID
+	CompanyName        string `gorm:"column:company_name;NOT NULL" json:"CompanyName"`                      // 公司名称
+	UserPointsNum      string `gorm:"column:user_points_num;default:0;NOT NULL" json:"UserPointsNum"`       // 参会人扣点数量
+	PointsType         int    `gorm:"column:points_type;default:0;NOT NULL" json:"PointsType"`              // 扣点形式,1:报名即扣点,2:到会即扣点
+	CompanyPointsNum   string `gorm:"column:company_points_num;default:0;NOT NULL" json:"CompanyPointsNum"` // 办会人扣点数量
+	CancelDeadlineType int    `description:"取消报名截止时间类型,0:不设置,1:同报名截止时间, 2:24小时之前、3:48小时之前"`
 }
 
 type YanXuanActivityPointsRedis struct {

+ 5 - 0
services/activity.go

@@ -606,6 +606,10 @@ func ActivityButtonShow(item *models.ActivityDetail, user *models.WxUserItem, pe
 	if articleDetail.SiginupDeadline == utils.FormatDateTimeInit { //报名截止时间处理
 		articleDetail.SiginupDeadline = ""
 	}
+	//如果报名截止时间不规范,或者是非研选扣点活动就把截止时间设置为空
+	if articleDetail.CancelDeadline == utils.FormatDateTimeInit || !articleDetail.IsResearchPoints {
+		articleDetail.CancelDeadline = ""
+	}
 
 	activityTimeText := articleDetail.ActivityTimeText
 	activityTimeText = strings.Replace(activityTimeText, "(", "(", -1)
@@ -769,6 +773,7 @@ func ActivityButtonShow(item *models.ActivityDetail, user *models.WxUserItem, pe
 		IsResearchPoints:        v.IsResearchPoints,
 		IsExternalLabel:         v.IsExternalLabel,
 		SiginupDeadline:         v.SiginupDeadline,
+		CancelDeadline:          v.CancelDeadline,
 	}
 	au := new(models.UserPermissionAuthInfo)
 	au.SellerName = authInfo.SellerName

+ 4 - 1
services/activity_button.go

@@ -306,7 +306,10 @@ func ActivityButtonShowSearch(item *models.ActivityDetail, user *models.WxUserIt
 	if articleDetail.SiginupDeadline == utils.FormatDateTimeInit { //报名截止时间处理
 		articleDetail.SiginupDeadline = ""
 	}
-
+	//如果报名截止时间不规范,或者是非研选扣点活动就把截止时间设置为空
+	if articleDetail.CancelDeadline == utils.FormatDateTimeInit || !articleDetail.IsResearchPoints {
+		articleDetail.CancelDeadline = ""
+	}
 	//articleDetail.SourceType = 1
 	activityTimeText := articleDetail.ActivityTimeText
 	activityTimeText = strings.Replace(activityTimeText, "(", "(", -1)

+ 45 - 0
services/activity_signup.go

@@ -128,6 +128,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)

+ 14 - 0
utils/common.go

@@ -759,3 +759,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
+}