Browse Source

Merge branch 'cygx_need-2_23_p2' of http://8.136.199.33:3000/hongze/hongze_cygx

xingzai 1 year ago
parent
commit
aba5eb932d
3 changed files with 71 additions and 31 deletions
  1. 10 30
      controllers/activity.go
  2. 16 0
      models/activity_signup.go
  3. 45 1
      services/activity_signup.go

+ 10 - 30
controllers/activity.go

@@ -333,6 +333,14 @@ func (this *ActivityCoAntroller) Detail() {
 		return
 	}
 
+	signupCount, err := models.GetActivitySignupSuccessByUserCountNoHz(activityId)
+	if err != nil {
+		br.Msg = "获取信息"
+		br.ErrMsg = "GetActivitySignupSuccessByUserCountNoHz,Err:" + err.Error()
+		return
+	}
+	activityInfo.SignupNum = signupCount
+
 	havePower, err := services.GetActivityDetailUserPower(user, activityInfo)
 	if err != nil {
 		br.Msg = "获取信息失败"
@@ -676,6 +684,7 @@ func (this *ActivityCoAntroller) SignupAdd() {
 		//如果是下面几种情况则对报名信息做判断限制 (公司调研电话会(限制人数)、公司线下调研、专家/分析师线下沙龙)
 		//if (activityInfo.ActivityTypeId == 3 && activityInfo.IsLimitPeople == 1) || activityInfo.ActivityTypeId > 3 {
 		if activityInfo.IsLimitPeople == 1 {
+			signupStatus, resp.PopupMsg, item.FailType, err = services.CheckActivitySignUpLimit(user, activityInfo)
 			//判断优先级:总人数限制→单机构2人限制→爽约3次限制
 			totalRestrict, err := models.GetUserRestrictCount(user.Mobile)
 			if err != nil {
@@ -683,36 +692,7 @@ func (this *ActivityCoAntroller) SignupAdd() {
 				br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
 				return
 			}
-			if totalRestrict >= 1 {
-				signupStatus = "BreakPromise"
-				resp.PopupMsg = "由于爽约次数过多,您暂时被限制报名资格,请联系对口销售"
-				item.FailType = 3
-			}
-			//弘则下面的用户不做单机构两人限制
-			if user.CompanyId != utils.HZ_COMPANY_ID {
-				totalSignupCompany, err := models.GetActivitySignupCompanyCount(activityId, user.CompanyId)
-				if err != nil {
-					br.Msg = "获取信息失败"
-					br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
-					return
-				}
-				if totalSignupCompany >= 2 {
-					signupStatus = "TwoPeople"
-					resp.PopupMsg = "单机构最多2人报名同一活动,您所在机构报名人数已满"
-					item.FailType = 2
-				}
-			}
-			totaSignupPeopleNum, err := models.GetActivitySignupSuccessCount(activityId)
-			if err != nil {
-				br.Msg = "获取信息失败"
-				br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
-				return
-			}
-			if totaSignupPeopleNum >= activityInfo.LimitPeopleNum {
-				signupStatus = "FullStarffed"
-				resp.PopupMsg = "此活动报名人数已满,请留意下期活动"
-				item.FailType = 1
-			}
+
 			totalUserRestrictCount, err := models.GetActivitySignupByUserRestrictCount(uid, activityId)
 			if err != nil {
 				br.Msg = "获取失败"

+ 16 - 0
models/activity_signup.go

@@ -243,6 +243,22 @@ func GetActivitySignupByUserCount(uid, activityId int) (count int, err error) {
 	return
 }
 
+// 获取除弘则以外所有成功报名的用户数量
+func GetActivitySignupSuccessByUserCountNoHz(activityId int) (count int, err error) {
+	sqlCount := `SELECT
+	COUNT( 1 ) AS count 
+FROM
+	cygx_activity_signup 
+WHERE
+	is_cancel = 0 
+	AND company_id != 16 
+	AND do_fail_type = 0 
+	AND activity_id =  ? `
+	o := orm.NewOrm()
+	err = o.Raw(sqlCount, activityId).QueryRow(&count)
+	return
+}
+
 // 获取用户报名禁止数量
 func GetActivitySignupByUserRestrictCount(uid, activityId int) (count int, err error) {
 	sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE do_fail_type=3 AND user_id=? AND activity_id=? `

+ 45 - 1
services/activity_signup.go

@@ -16,7 +16,6 @@ func GetActivitySignupResp(activityIdS []int, user *models.WxUserItem) (mapItem
 	}
 	condition = ` AND do_fail_type = 0 AND activity_id IN (` + utils.GetOrmInReplace(lenActivityId) + `) AND mobile = ?`
 	pars = append(pars, activityIdS, user.Mobile)
-
 	listSignup, e := models.GetActivitySignupList(condition, pars)
 	if e != nil {
 		err = errors.New("GetResourceDataList, Err: " + e.Error())
@@ -28,3 +27,48 @@ func GetActivitySignupResp(activityIdS []int, user *models.WxUserItem) (mapItem
 	}
 	return
 }
+
+// CheckActivitySignUpLimit 校验报名限制
+func CheckActivitySignUpLimit(user *models.WxUserItem, activityInfo *models.ActivityDetail) (signupStatus, popupMsg string, failType int, err error) {
+	//判断优先级:总人数限制→单机构2人限制→爽约3次限制
+	signupStatus = "Success"
+	activityId := activityInfo.ActivityId
+	//弘则下面的用户不做单机构两人限制、不受报名总人数限制
+	if user.CompanyId != utils.HZ_COMPANY_ID {
+		totaSignupPeopleNum, e := models.GetActivitySignupSuccessByUserCountNoHz(activityId)
+		if e != nil {
+			err = errors.New("GetActivitySignupSuccessByUserCountNoHz, Err: " + e.Error())
+			return
+		}
+		if totaSignupPeopleNum >= activityInfo.LimitPeopleNum {
+			signupStatus = "FullStarffed"
+			popupMsg = "此活动报名人数已满,请留意下期活动"
+			failType = 1
+			return
+		}
+		totalSignupCompany, e := models.GetActivitySignupCompanyCount(activityId, user.CompanyId)
+		if e != nil {
+			err = errors.New("GetActivitySignupCompanyCount, Err: " + e.Error())
+			return
+		}
+		if totalSignupCompany >= 2 {
+			signupStatus = "TwoPeople"
+			popupMsg = "单机构最多2人报名同一活动,您所在机构报名人数已满"
+			failType = 2
+			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
+
+}