Browse Source

报名与取消报名

xingzai 3 years ago
parent
commit
f2831572fd
4 changed files with 160 additions and 56 deletions
  1. 111 37
      controllers/activity.go
  2. 5 0
      models/activity.go
  3. 44 17
      models/activity_signup.go
  4. 0 2
      models/activity_user_search_content.go

+ 111 - 37
controllers/activity.go

@@ -246,12 +246,12 @@ func (this *ActivityCoAntroller) Detail() {
 	br.Data = activityInfo
 }
 
-// @Title 活动报名
-// @Description 活动报名接口
-// @Param	request	body models.ActivityIdRep true "type json string"
+// @Title 活动报名
+// @Description 活动报名接口
+// @Param	request	body models.ActivitySingnupRep true "type json string"
 // @Success 200 操作成功
 // @router /signup/add [post]
-func (this *ActivityCoAntroller) PublishAndCancel() {
+func (this *ActivityCoAntroller) SignupAdd() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br
@@ -265,7 +265,7 @@ func (this *ActivityCoAntroller) PublishAndCancel() {
 		return
 	}
 	uid := user.UserId
-	var req models.ActivityIdRep
+	var req models.ActivitySingnupRep
 	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
 	if err != nil {
 		br.Msg = "参数解析异常!"
@@ -273,6 +273,11 @@ func (this *ActivityCoAntroller) PublishAndCancel() {
 		return
 	}
 	activityId := req.ActivityId
+	signupType := req.SignupType
+	if signupType != 1 && signupType != 2 {
+		br.Msg = "请选择正确的报名方式!"
+		return
+	}
 	item := new(models.CygxActivitySignup)
 	activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
 	if activityInfo == nil {
@@ -285,6 +290,25 @@ func (this *ActivityCoAntroller) PublishAndCancel() {
 		br.ErrMsg = "操作失败,Err:" + errInfo.Error()
 		return
 	}
+	resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
+	if time.Now().After(resultTime.Add(-time.Minute * 60)) {
+		if signupType == 1 {
+			br.Msg = "活动开始前1小时内无法预约外呼,请联系对口销售处理"
+		} else {
+			br.Msg = "活动开始前1小时内无法报名,请联系对口销售处理"
+		}
+		return
+	}
+	total, err := models.GetActivitySignupCount(uid, activityId)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	if total > 0 {
+		br.Msg = "您已报名这个活动"
+		return
+	}
 	item.UserId = uid
 	item.ActivityId = activityId
 	item.CreateTime = time.Now()
@@ -303,6 +327,87 @@ func (this *ActivityCoAntroller) PublishAndCancel() {
 	br.Msg = "操作成功"
 }
 
+// @Title 活动取消报名
+// @Description 活动取消报名接口
+// @Param	request	body models.ActivitySingnupRep true "type json string"
+// @Success 200 操作成功
+// @router /signup/cancel [post]
+func (this *ActivityCoAntroller) SignupCancel() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	user := this.User
+	if user == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,用户信息为空"
+		br.Ret = 408
+		return
+	}
+	uid := user.UserId
+	var req models.ActivitySingnupRep
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	activityId := req.ActivityId
+	signupType := req.SignupType
+	if signupType != 1 && signupType != 2 {
+		br.Msg = "请选择正确的报名方式!"
+		return
+	}
+	item := new(models.CygxActivitySignup)
+	activityInfo, errInfo := models.GetAddActivityInfoById(activityId)
+	if activityInfo == nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "活动ID错误,不存在activityId:" + strconv.Itoa(activityId)
+		return
+	}
+	if errInfo != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "操作失败,Err:" + errInfo.Error()
+		return
+	}
+	resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
+	if time.Now().After(resultTime.Add(-time.Minute * 60)) {
+		if signupType == 1 {
+			br.Msg = "活动开始前1小时内无法取消预约外呼,请联系对口销售处理"
+		} else {
+			br.Msg = "活动开始前1小时内无法取消报名,请联系对口销售处理"
+		}
+		return
+	}
+	total, err := models.GetActivitySignupCount(uid, activityId)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	if total == 0 {
+		br.Msg = "您暂未报名这个活动"
+		return
+	}
+	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
+	_, errSignup := models.CancelActivitySignup(item)
+	if errSignup != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "操作失败,Err:" + errSignup.Error()
+		return
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+}
+
 // @Title  用户搜索详情
 // @Description 获取用户搜索详情接口
 // @Param   IsShowJurisdiction   query   int  true       "是否仅展示有权限的,1是,0否 默认为0"
@@ -328,17 +433,9 @@ func (this *ActivityCoAntroller) GetUserSearchContent() {
 		br.ErrMsg = "获取信息失败,Err:" + err.Error()
 		return
 	}
-
-	//ChartPermissionids string    `description:"行业id"`
-	//ActivityTypeids    string    `description:"活动类型id"`
-	//ActiveState        string    `description:
-	//IsShowJurisdiction int       `description:"是否仅展示有权限的,1是,0否"`
 	chartPermissionidsSlice := strings.Split(detail.ChartPermissionids, ",")
 	activityTypeidsSlice := strings.Split(detail.ActivityTypeids, ",")
-	activeStateSlice := strings.Split(detail.ActiveState, ",")
-
-	//activeStateSlice := [3]int{1, 2, 3} //"活动进行状态 未开始:1、进行中2、已结束3"`
-
+	activeStateSlice := strings.Split(detail.ActiveState, ",") //"活动进行状态 未开始:1、进行中2、已结束3"`
 	listActivityType, errActivityType := models.GetActivityTypeList()
 	if errActivityType != nil {
 		br.Msg = "获取失败"
@@ -368,12 +465,10 @@ func (this *ActivityCoAntroller) GetUserSearchContent() {
 	resp := new(models.ActivityUserSearchContentList)
 	resp.ListActivityType = listActivityType
 	resp.ListChartPermission = listChartPermissionid
-
 	if detail.IsShowJurisdiction == 1 {
 		resp.IsShowJurisdiction = true
 	}
 	activeStateList := []models.ActivityStaus{models.ActivityStaus{Id: 1, StatusName: "未开始"}, models.ActivityStaus{Id: 2, StatusName: "进行中"}, models.ActivityStaus{Id: 3, StatusName: "已结束"}}
-
 	for _, v := range activeStateSlice {
 		for k2, v2 := range activeStateList {
 			if strconv.Itoa(v2.Id) == v {
@@ -390,24 +485,3 @@ func (this *ActivityCoAntroller) GetUserSearchContent() {
 	br.Msg = "获取成功"
 	br.Data = resp
 }
-
-type Arrayse struct {
-	Id       int
-	IsChoose bool
-	Name     string
-}
-
-//"list" : [
-//	{
-//		"id" :1,
-//		"IsChoose": bool
-//	},
-//	{
-//		"id" :2,
-//		"IsChoose": bool
-//	},
-//	{
-//		"id" :3,
-//		"IsChoose": bool
-//	}
-//]

+ 5 - 0
models/activity.go

@@ -22,6 +22,11 @@ type ActivityIdRep struct {
 	ActivityId int `description:"活动id"`
 }
 
+type ActivitySingnupRep struct {
+	ActivityId int `description:"活动id"`
+	SignupType int `description:"报名方式,1预约外呼,2我要报名"`
+}
+
 type ActivityCcustomerType struct {
 	CustomerTypeId int    `description:"活动类型id"`
 	CustomerName   string `description:"活动名称"`

+ 44 - 17
models/activity_signup.go

@@ -42,18 +42,19 @@ func AddActivitySignup(item *CygxActivitySignup) (lastId int64, err error) {
 			o.Rollback()
 		}
 	}()
-	var count int
-	sql := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE user_id=? AND activity_id=? `
-	err = o.Raw(sql, item.UserId, item.ActivityId).QueryRow(&count)
-	if err != nil {
-		return
-	}
-	if count > 0 {
-		sql := `DELETE  FROM cygx_activity_signup  WHERE user_id=? AND activity_id=? `
-		_, err = o.Raw(sql, item.UserId, item.ActivityId).Exec()
-	} else {
-		lastId, err = o.Insert(item)
-	}
+	//var count int
+	//sql := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE user_id=? AND activity_id=? `
+	//err = o.Raw(sql, item.UserId, item.ActivityId).QueryRow(&count)
+	//if err != nil {
+	//	return
+	//}
+	//if count > 0 {
+	//	sql := `DELETE  FROM cygx_activity_signup  WHERE user_id=? AND activity_id=? `
+	//	_, err = o.Raw(sql, item.UserId, item.ActivityId).Exec()
+	//} else {
+	//	lastId, err = o.Insert(item)
+	//}
+	lastId, err = o.Insert(item)
 	if err != nil {
 		return
 	}
@@ -65,11 +66,7 @@ func AddActivitySignup(item *CygxActivitySignup) (lastId int64, err error) {
 	itemLog.Email = item.Email
 	itemLog.CompanyId = item.CompanyId
 	itemLog.CompanyName = item.CompanyName
-	if count == 0 {
-		itemLog.Type = 1
-	} else {
-		itemLog.Type = 2
-	}
+	itemLog.Type = 1
 	lastId, err = o.Insert(itemLog)
 	return
 }
@@ -81,3 +78,33 @@ func GetActivitySignupCount(uid, activityId int) (count int, err error) {
 	err = o.Raw(sqlCount, uid, activityId).QueryRow(&count)
 	return
 }
+
+//取消报名
+func CancelActivitySignup(item *CygxActivitySignup) (lastId int64, err error) {
+	o := orm.NewOrm()
+	o.Begin()
+	defer func() {
+		fmt.Println(err)
+		if err == nil {
+			o.Commit()
+		} else {
+			o.Rollback()
+		}
+	}()
+	sql := `UPDATE cygx_activity_signup SET is_cancel = 1  WHERE user_id=?  AND activity_id=? `
+	_, err = o.Raw(sql, item.UserId, item.ActivityId).Exec()
+	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 = 2
+	lastId, err = o.Insert(itemLog)
+	return
+}

+ 0 - 2
models/activity_user_search_content.go

@@ -40,9 +40,7 @@ func AddUserSearchContent(item *CygxActivityUserSearchContent) (lastId int64, er
 		return
 	}
 	if count > 0 {
-		//sql := `UPDATE cygx_activity_user_search_content SET chart_permissionids = '` + item.ChartPermissionids + `',activity_typeids = '` + item.ActivityTypeids + `',active_state = '` + item.ActiveState + `',is_show_jurisdiction = '` + strconv.Itoa(item.IsShowJurisdiction) + `' ,modify_time=NOW() WHERE user_id=? `
 		sql := `UPDATE cygx_activity_user_search_content SET chart_permissionids = ?,activity_typeids = ?,active_state = ?,is_show_jurisdiction = ? ,modify_time=NOW() WHERE user_id=? `
-		//_, err = o.Raw(sql,item.UserId).Exec()
 		_, err = o.Raw(sql, item.ChartPermissionids, item.ActivityTypeids, item.ActiveState, item.IsShowJurisdiction, item.UserId).Exec()
 		return
 	} else {