Browse Source

小程序报名限制提示消息修改

xingzai 3 years ago
parent
commit
6c4969c74f
3 changed files with 150 additions and 21 deletions
  1. 88 20
      controllers/activity.go
  2. 1 1
      models/activity.go
  3. 61 0
      models/activity_signup.go

+ 88 - 20
controllers/activity.go

@@ -156,6 +156,9 @@ func (this *ActivityCoAntroller) ActivityList() {
 		if strings.Contains(v.ActivityName, "【") {
 			list[k].IsBrackets = 1
 		}
+		if v.SignupNum > v.LimitPeopleNum {
+			list[k].SignupNum = v.LimitPeopleNum
+		}
 	}
 	page := paging.GetPaging(currentIndex, pageSize, total)
 	resp := new(models.GetCygxActivityListRep)
@@ -216,6 +219,9 @@ func (this *ActivityCoAntroller) ScheduleList() {
 		if strings.Contains(v.ActivityName, "【") {
 			list[k].IsBrackets = 1
 		}
+		if v.SignupNum > v.LimitPeopleNum {
+			list[k].SignupNum = v.LimitPeopleNum
+		}
 	}
 	page := paging.GetPaging(currentIndex, pageSize, total)
 	resp := new(models.GetCygxActivityListRep)
@@ -294,6 +300,8 @@ func (this *ActivityCoAntroller) Detail() {
 		if err != nil {
 			if err.Error() == utils.ErrNoRow() {
 				resp.HasPermission = 4
+				resp.OperationMode = "Apply"
+				resp.PopupMsg = "您暂无权限参加 【" + activityInfo.ChartPermissionName + "】行业活动,若想参加可以申请开通哦"
 				br.Ret = 200
 				br.Success = true
 				br.Msg = "获取成功"
@@ -305,12 +313,6 @@ func (this *ActivityCoAntroller) Detail() {
 				return
 			}
 		}
-		//if errcompanyItem.Error() == utils.ErrNoRow() {
-		//	br.Msg = "获取信息失败"
-		//	br.ErrMsg = "判断是否已申请过试用失败,Err:" + errcompanyItem.Error()
-		//	return
-		//}
-
 		//1专家电话会、2分析师电话会、3公司调研电话会、4公司线下调研、5专家线下沙龙、6分析师线下沙龙
 		//OperationMode     string `description:"操作方式 Apply:立即申请、Call:拨号 为空则为有权限"`
 		if activityInfo.ActivityTypeId != 1 && activityInfo.ActivityTypeId != 4 && permissionStr == "专家" {
@@ -339,6 +341,9 @@ func (this *ActivityCoAntroller) Detail() {
 		resp.PopupMsg = "您暂无权限参加 【" + activityInfo.ChartPermissionName + "】行业活动,若想参加可以申请开通哦"
 	}
 	if hasPermission == 1 {
+		if activityInfo.SignupNum > activityInfo.LimitPeopleNum {
+			activityInfo.SignupNum = activityInfo.LimitPeopleNum
+		}
 		resp.Detail = activityInfo
 	}
 	resp.HasPermission = hasPermission
@@ -370,6 +375,7 @@ func (this *ActivityCoAntroller) SignupAdd() {
 	//var signupStatus string
 	signupStatus := ""
 	var req models.ActivitySingnupRep
+	var total int
 	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
 	if err != nil {
 		br.Msg = "参数解析异常!"
@@ -378,16 +384,11 @@ func (this *ActivityCoAntroller) SignupAdd() {
 	}
 	activityId := req.ActivityId
 	signupType := req.SignupType
-	//if signupType != 1 && signupType != 2 {
-	//	br.Msg = "请选择正确的报名方式!"
-	//	return
-	//}
-	//SignupStatus string `description:"报名状态:人数已满:FullStarffed、单机构超过两人:TwoPeople、爽约次数过多:BreakPromise、超时:Overtime 、成功:Success"`
-	//HasPermission int    `description:"1:有该行业权限,正常展示,2:无该行业权限,3:潜在客户,未提交过申请,4:潜在客户,已提交过申请"`
+	//SignupStatus "报名状态:人数已满:FullStarffed、单机构超过两人:TwoPeople、爽约次数过多:BreakPromise、超时:Overtime 、成功:Success"`
+	//HasPermission "1:有该行业权限,正常展示,2:无该行业权限,3:潜在客户,未提交过申请,4:潜在客户,已提交过申请"`
 	item := new(models.CygxActivitySignup)
 	resp := new(models.SignupStatus)
 	hasPermission := 0
-
 	//判断是否已经申请过
 	applyCount, err := models.GetApplyRecordCount(uid)
 	if err != nil && err.Error() != utils.ErrNoRow() {
@@ -427,8 +428,6 @@ func (this *ActivityCoAntroller) SignupAdd() {
 			resp.OperationMode = "Call"
 			hasPermission = 2
 		} else {
-			fmt.Println(activityInfo.ChartPermissionName)
-			fmt.Println(permissionStr)
 			if strings.Contains(permissionStr, activityInfo.ChartPermissionName) {
 				hasPermission = 1
 				signupStatus = "Success"
@@ -436,10 +435,64 @@ func (this *ActivityCoAntroller) SignupAdd() {
 				if time.Now().After(resultTime.Add(-time.Minute * 60)) {
 					signupStatus = "Overtime"
 				}
-				total, errtotal := models.GetActivitySignupCount(uid, activityId)
-				if errtotal != nil {
+				//人数已满:FullStarffed、单机构超过两人:TwoPeople、爽约次数过多:BreakPromise、超时:Overtime 、成功:Success"`
+				//如果是下面几种情况则对报名信息做判断限制 (公司调研电话会(限制人数)、公司线下调研、专家/分析师线下沙龙)
+
+				if (activityInfo.ActivityTypeId == 3 && activityInfo.IsLimitPeople == 1) || activityInfo.ActivityTypeId > 3 {
+					//判断优先级:总人数限制→单机构2人限制→爽约3次限制
+					total, err = models.GetUserRestrictCount(user.UserId)
+					if err != nil {
+						br.Msg = "获取信息失败"
+						br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
+						return
+					}
+					if total >= 1 {
+						signupStatus = "BreakPromise"
+						item.FailType = 3
+					}
+					total, err = models.GetActivitySignupCompanyCount(activityId, user.CompanyId)
+					if err != nil {
+						br.Msg = "获取信息失败"
+						br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
+						return
+					}
+					if total >= 2 {
+						signupStatus = "TwoPeople"
+						item.FailType = 2
+					}
+					total, err = models.GetActivitySignupSuccessCount(activityId)
+					if err != nil {
+						br.Msg = "获取信息失败"
+						br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
+						return
+					}
+					if total >= activityInfo.LimitPeopleNum {
+						signupStatus = "FullStarffed"
+						item.FailType = 1
+					}
+					if signupStatus != "Success" {
+						item.UserId = uid
+						item.ActivityId = activityId
+						item.CreateTime = time.Now()
+						item.Mobile = user.Mobile
+						item.Email = user.Email
+						item.CompanyId = user.CompanyId
+						item.CompanyName = user.CompanyName
+						item.SignupType = signupType
+						//添加报名信息,但是不加入日程
+						_, errSignup := models.AddActivitySignupNoSchedule(item)
+						if errSignup != nil {
+							br.Msg = "操作失败"
+							br.ErrMsg = "操作失败,Err:" + errSignup.Error()
+							return
+						}
+					}
+				}
+
+				total, err = models.GetActivitySignupCount(uid, activityId)
+				if err != nil {
 					br.Msg = "获取失败"
-					br.ErrMsg = "获取失败,Err:" + errtotal.Error()
+					br.ErrMsg = "获取失败,Err:" + err.Error()
 					return
 				}
 				if total > 0 {
@@ -455,6 +508,7 @@ func (this *ActivityCoAntroller) SignupAdd() {
 					item.CompanyId = user.CompanyId
 					item.CompanyName = user.CompanyName
 					item.SignupType = signupType
+					item.FailType = 0
 					_, errSignup := models.AddActivitySignup(item)
 					if errSignup != nil {
 						br.Msg = "操作失败"
@@ -479,13 +533,20 @@ func (this *ActivityCoAntroller) SignupAdd() {
 		resp.OperationMode = "Apply"
 		resp.PopupMsg = "您暂无权限参加 【" + activityInfo.ChartPermissionName + "】行业活动,若想参加可以申请开通哦"
 	}
+
 	resp.SignupType = signupType
 	resp.SignupStatus = signupStatus
 	resp.HasPermission = hasPermission
 	if signupStatus == "Success" {
 		resp.ActivityId = activityId
 	}
-	if activityId%2 == 1 {
+	total, err = models.GetUserMeetingReminderCount(user.UserId)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取日程数量信息失败,Err:" + err.Error()
+		return
+	}
+	if total == 0 {
 		resp.GoFollow = true
 	}
 	br.Ret = 200
@@ -821,7 +882,14 @@ func (this *ActivityCoAntroller) MeetingReminderAdd() {
 	resp.HasPermission = hasPermission
 	resp.SignupStatus = signupStatus
 	resp.ActivityId = activityId
-	if activityId%2 == 1 {
+	var total int
+	total, err = models.GetUserMeetingReminderCount(user.UserId)
+	if err != nil {
+		br.Msg = "获取信息失败"
+		br.ErrMsg = "获取日程数量信息失败,Err:" + err.Error()
+		return
+	}
+	if total == 0 {
 		resp.GoFollow = true
 	}
 	br.Ret = 200

+ 1 - 1
models/activity.go

@@ -60,7 +60,7 @@ type ActivityDetail struct {
 	Body                    string `description:"内容"`
 	CreateTime              string `description:"创建时间"`
 	IsLimitPeople           int    `description:"是否限制人数 1是,0否"`
-	LimitPeopleNum          string `description:"限制的人数数量"`
+	LimitPeopleNum          int    `description:"限制的人数数量"`
 	LastUpdatedTime         string `description:"更新时间"`
 	ActivityTime            string `description:"活动时间"`
 	ActivityTimeText        string `description:"活动时间带文字"`

+ 61 - 0
models/activity_signup.go

@@ -116,6 +116,35 @@ func AddActivitySignup(item *CygxActivitySignup) (lastId int64, err error) {
 	return
 }
 
+//添加报名信息
+func AddActivitySignupNoSchedule(item *CygxActivitySignup) (lastId int64, err error) {
+	o := orm.NewOrm()
+	o.Begin()
+	defer func() {
+		fmt.Println(err)
+		if err == nil {
+			o.Commit()
+		} else {
+			o.Rollback()
+		}
+	}()
+	lastId, err = o.Insert(item)
+	if err != nil {
+		return
+	}
+	itemLog := new(CygxActivitySignupLog)
+	itemLog.UserId = item.UserId
+	itemLog.ActivityId = item.ActivityId
+	itemLog.CreateTime = time.Now()
+	itemLog.Mobile = item.Mobile
+	itemLog.Email = item.Email
+	itemLog.CompanyId = item.CompanyId
+	itemLog.CompanyName = item.CompanyName
+	itemLog.Type = 1
+	lastId, err = o.Insert(itemLog)
+	return
+}
+
 //获取用户报名数量
 func GetActivitySignupCount(uid, activityId int) (count int, err error) {
 	sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE is_cancel=0 AND user_id=? AND activity_id=? `
@@ -124,6 +153,38 @@ func GetActivitySignupCount(uid, activityId int) (count int, err error) {
 	return
 }
 
+//获取某一活动已经报名的数量
+func GetActivitySignupSuccessCount(activityId int) (count int, err error) {
+	sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE is_cancel=0 AND fail_type = 0 AND activity_id=? `
+	o := orm.NewOrm()
+	err = o.Raw(sqlCount, activityId).QueryRow(&count)
+	return
+}
+
+//获取某一活动某个机构已经报名的数量
+func GetActivitySignupCompanyCount(activityId, companyId int) (count int, err error) {
+	sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE is_cancel=0 AND fail_type = 0 AND activity_id=? AND company_id=? `
+	o := orm.NewOrm()
+	err = o.Raw(sqlCount, activityId, companyId).QueryRow(&count)
+	return
+}
+
+//获取某一用户是否被限制报名
+func GetUserRestrictCount(uid int) (count int, err error) {
+	sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_restrict_signup WHERE is_restrict=1  AND user_id=? `
+	o := orm.NewOrm()
+	err = o.Raw(sqlCount, uid).QueryRow(&count)
+	return
+}
+
+//获取某一用户的日程数量
+func GetUserMeetingReminderCount(uid int) (count int, err error) {
+	sqlCount := `SELECT COUNT(1) AS count FROM cygx_my_schedule WHERE  user_id=? `
+	o := orm.NewOrm()
+	err = o.Raw(sqlCount, uid).QueryRow(&count)
+	return
+}
+
 //取消报名
 func CancelActivitySignup(item *CygxActivitySignup) (lastId int64, err error) {
 	o := orm.NewOrm()