xingzai 3 жил өмнө
parent
commit
32a0419f14

+ 89 - 34
controllers/activity.go

@@ -205,8 +205,8 @@ func (this *ActivityCoAntroller) ActivityList() {
 	br.Data = resp
 }
 
-// @Title 活动列表
-// @Description 获取活动列表接口
+// @Title 我的日程
+// @Description 我的日程列表接口
 // @Param   PageSize   query   int  true       "每页数据条数"
 // @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
 // @Success 200 {object} models.GetCygxActivityListRep
@@ -217,7 +217,6 @@ func (this *ActivityCoAntroller) ScheduleList() {
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
-
 	user := this.User
 	if user == nil {
 		br.Msg = "请登录"
@@ -227,7 +226,6 @@ func (this *ActivityCoAntroller) ScheduleList() {
 	uid := user.UserId
 	pageSize, _ := this.GetInt("PageSize")
 	currentIndex, _ := this.GetInt("CurrentIndex")
-
 	var startSize int
 	if pageSize <= 0 {
 		pageSize = utils.PageSize20
@@ -238,41 +236,14 @@ func (this *ActivityCoAntroller) ScheduleList() {
 	startSize = utils.StartIndex(currentIndex, pageSize)
 	var condition string
 	var pars []interface{}
-
-	condition += ` AND art.publish_status = 1 `
-
-	total, err := models.GetActivityCount(condition, pars)
+	condition += ` AND art.publish_status = 1  AND art.active_state IN(1,2)	 AND s.is_cancel = 0  AND s.fail_type = 0  `
+	total, err := models.GetScheduleCount(condition, uid)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取失败,Err:" + err.Error()
 		return
 	}
-
-	list, errList := models.GetActivityListAll(condition, pars, uid, startSize, pageSize)
-	srt30min := "1,2,3"
-	srt60min := "4,5,6"
-	for k, v := range list {
-		if strings.Contains(srt30min, strconv.Itoa(v.ActivityTypeId)) {
-			resultTime := utils.StrTimeToTime(v.ActivityTime) //时间字符串格式转时间格式
-			if resultTime.After(time.Now()) {
-				list[k].ActiveState = "1"
-			} else if time.Now().After(resultTime) && resultTime.After(time.Now().Add(+time.Minute*30)) {
-				list[k].ActiveState = "2"
-			} else {
-				list[k].ActiveState = "3"
-			}
-		}
-		if strings.Contains(srt60min, strconv.Itoa(v.ActivityTypeId)) {
-			resultTime := utils.StrTimeToTime(v.ActivityTime) //时间字符串格式转时间格式
-			if resultTime.After(time.Now()) {
-				list[k].ActiveState = "1"
-			} else if time.Now().After(resultTime) && resultTime.After(time.Now().Add(+time.Minute*60)) {
-				list[k].ActiveState = "2"
-			} else {
-				list[k].ActiveState = "3"
-			}
-		}
-	}
+	list, errList := models.GetScheduleList(condition, pars, uid, startSize, pageSize)
 	if errList != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取失败,Err:" + errList.Error()
@@ -596,3 +567,87 @@ func (this *ActivityCoAntroller) GetUserSearchContent() {
 	br.Msg = "获取成功"
 	br.Data = resp
 }
+
+// @Title 添加会议提醒
+// @Description 添加会议提醒接口
+// @Param	request	body models.ActivityIdRep true "type json string"
+// @Success Ret=200 {object} models.SignupStatus
+// @router /meetingReminder/add [post]
+func (this *ActivityCoAntroller) MeetingReminderAdd() {
+	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 signupStatus string
+	signupStatus := ""
+	var req models.ActivityIdRep
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+	activityId := req.ActivityId
+	signupStatus = "Success"
+	//SignupStatus string `description:"报名状态:人数已满:FullStarffed、单机构超过两人:TwoPeople、爽约次数过多:BreakPromise、超时:Overtime 、成功:Success"`
+	item := new(models.CygxActivityMeetingReminder)
+	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 * 15)) {
+		signupStatus = "Overtime"
+		return
+	}
+	if signupStatus == "Success" {
+		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.AddActivityMeetingReminder(item)
+		if errSignup != nil {
+			br.Msg = "操作失败"
+			br.ErrMsg = "操作失败,Err:" + errSignup.Error()
+			return
+		}
+	}
+	resp := new(models.SignupStatus)
+	resp.SignupStatus = signupStatus
+	if activityId%2 == 1 {
+		resp.GoFollow = true
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+	br.Data = resp
+}

+ 49 - 32
models/activity.go

@@ -148,7 +148,7 @@ func GetAddActivityInfoById(ActivityId int) (item *ActivityDetail, err error) {
 	return
 }
 
-//通过纪要ID获取活动详情
+//通过ID获取活动详情
 func GetAddActivityInfoEditById(ActivityId int) (item *CygxActivityEditDetail, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT * FROM cygx_activity  WHERE activity_id=?`
@@ -156,43 +156,33 @@ func GetAddActivityInfoEditById(ActivityId int) (item *CygxActivityEditDetail, e
 	return
 }
 
-//修改文章
+//修改
 func EditActivity(item *CygxActivity, oldPublishStatus int) (err error) {
 	o := orm.NewOrm()
-	//if oldPublishStatus == 1 {
 	sql := `UPDATE cygx_activity SET activity_type_id=?, activity_type_name=?, chart_permission_id=?, chart_permission_name=?, body=?, is_limit_people=?,limit_people_num = ?,customer_type_ids=?,publish_status =?, last_updated_time=? ,activity_time=?, activity_time_text=?, distinguished_guest=?, host=?, mainland_tell=?, hong_kong_tell=?, taiwan_tell=?, america_tell=?, participation_code=?, theme=?, expert=?, activity_name=?, online_participation=?, report_link=?, city=?, address=?, highlights=?, remarks=? WHERE activity_id=?`
 	_, err = o.Raw(sql, item.ActivityTypeId, item.ActivityTypeName, item.ChartPermissionId, item.ChartPermissionName, item.Body, item.IsLimitPeople, item.LimitPeopleNum, item.CustomerTypeIds, item.PublishStatus, item.LastUpdatedTime, item.ActivityTime, item.ActivityTimeText, item.DistinguishedGuest, item.Host, item.MainlandTell, item.HongKongTell, item.TaiwanTell, item.AmericaTell, item.ParticipationCode, item.Theme, item.Expert, item.ActivityName, item.OnlineParticipation, item.ReportLink, item.City, item.Address, item.Highlights, item.Remarks, item.ActivityId).Exec()
-	//} else {
-	//if item.PublishStatus == 1 {
-	//	sql := `UPDATE cygx_article SET category_name=?, title=?, abstract=?, body=?, body_text=?, publish_status=?, publish_date =? ,last_updated_time = ?,seller_and_mobile=?,expert_background =?, expert_number=? ,interview_date=?, file_link=? WHERE id=? AND source = 1`
-	//	_, err = o.Raw(sql, item.CategoryName, item.Title, item.Abstract, item.Body, item.BodyText, item.PublishStatus, item.PublishDate, item.LastUpdatedTime, item.SellerAndMobile, item.ExpertBackground, item.ExpertNumber, item.InterviewDate, item.FileLink, item.SummaryManageId).Exec()
-	//} else {
-	//	sql := `UPDATE cygx_article SET category_name=?, title=?, abstract=?, body=?, body_text=?, publish_status=?,last_updated_time = ?, publish_date = '' ,seller_and_mobile=?,expert_background =?, expert_number=? ,interview_date=?, file_link=? WHERE id=? AND source = 1`
-	//	_, err = o.Raw(sql, item.CategoryName, item.Title, item.Abstract, item.Body, item.BodyText, item.PublishStatus, item.LastUpdatedTime, item.SellerAndMobile, item.ExpertBackground, item.ExpertNumber, item.InterviewDate, item.FileLink, item.SummaryManageId).Exec()
-	//}
-	//}
-
 	return
 }
 
 //活动详情
 type CygxActivityList struct {
-	ActivityId          int    `orm:"column(activity_id);pk";description:"活动ID 等于0新增活动,大于0修改活动"`
-	ActivityTypeId      int    `description:"活动类型id"`
-	ActivityName        string `description:"活动名称"`
-	ActivityTypeName    string `description:"活动类型名称"`
-	ChartPermissionId   int    `description:"行业id"`
-	ChartPermissionName string `description:"行业名称"`
-	IsLimitPeople       int    `description:"是否限制人数 1是,0否"`
-	LimitPeopleNum      int    `description:"限制的人数数量"`
-	ActivityTime        string `description:"活动时间"`
-	ActivityTimeText    string `description:"活动时间带文字"`
-	City                string `description:"城市"`
-	DistinguishedGuest  string `description:"嘉宾"`
-	Expert              string `description:"专家"`
-	IsSignup            int    `description:"是否已报名 1是 ,0 否"`
-	SignupNum           int    `description:"已报名人数"`
-	ActiveState         string `description:"活动进行状态 未开始:1、进行中2、已结束3"`
+	ActivityId              int    `orm:"column(activity_id);pk";description:"活动ID 等于0新增活动,大于0修改活动"`
+	ActivityTypeId          int    `description:"活动类型id"`
+	ActivityName            string `description:"活动名称"`
+	ActivityTypeName        string `description:"活动类型名称"`
+	ChartPermissionId       int    `description:"行业id"`
+	ChartPermissionName     string `description:"行业名称"`
+	IsLimitPeople           int    `description:"是否限制人数 1是,0否"`
+	LimitPeopleNum          int    `description:"限制的人数数量"`
+	ActivityTime            string `description:"活动时间"`
+	ActivityTimeText        string `description:"活动时间带文字"`
+	City                    string `description:"城市"`
+	DistinguishedGuest      string `description:"嘉宾"`
+	Expert                  string `description:"专家"`
+	IsSignup                int    `description:"是否已报名 1是 ,0 否"`
+	SignupNum               int    `description:"已报名人数"`
+	ActiveState             string `description:"活动进行状态 未开始:1、进行中2、已结束3"`
+	IsCancelMeetingReminder int    `description:"是否取消会议提醒 1展示取消会议提醒 ,0展示会议提醒"`
 }
 
 type GetCygxActivityListRep struct {
@@ -211,12 +201,11 @@ func GetActivityListAll(condition string, pars []interface{}, uid, startSize, pa
 		sql += condition
 	}
 	sql += ` LIMIT ?,?`
-
 	_, err = o.Raw(sql, pars, uid, startSize, pageSize).QueryRows(&items)
 	return
 }
 
-//获取文章数量
+//获取数量
 func GetActivityCount(condition string, pars []interface{}) (count int, err error) {
 	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_activity as art WHERE 1= 1  `
 	if condition != "" {
@@ -227,7 +216,35 @@ func GetActivityCount(condition string, pars []interface{}) (count int, err erro
 	return
 }
 
-//获取文章数量
+//获取我的日程数量
+func GetScheduleCount(condition string, uid int) (count int, err error) {
+	o := orm.NewOrm()
+	sqlCount := ` SELECT COUNT( 1 ) AS count  FROM cygx_activity AS art  INNER JOIN cygx_activity_signup as s ON s.activity_id = art.activity_id
+					WHERE  	s.user_id = ? `
+	if condition != "" {
+		sqlCount += condition
+	}
+	err = o.Raw(sqlCount, uid).QueryRow(&count)
+	return
+}
+
+//我的日程列表
+func GetScheduleList(condition string, pars []interface{}, uid, startSize, pageSize int) (items []*CygxActivityList, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT *,( SELECT COUNT( 1 ) FROM cygx_activity_signup AS s WHERE s.activity_id = art.activity_id AND s.user_id = ? ) AS is_signup,
+                     ( SELECT COUNT( DISTINCT user_id ) FROM cygx_activity_signup AS s WHERE s.activity_id = art.activity_id AND  s.is_cancel = 0  AND s.fail_type = 0 ) AS signup_num 
+            FROM cygx_activity AS art
+	        INNER JOIN cygx_activity_signup AS s ON s.activity_id = art.activity_id 
+            WHERE s.user_id = ? `
+	if condition != "" {
+		sql += condition
+	}
+	sql += ` LIMIT ?,?`
+	_, err = o.Raw(sql, pars, uid, uid, startSize, pageSize).QueryRows(&items)
+	return
+}
+
+//获取数量
 func GetActivityCountById(activityId int) (count int, err error) {
 	o := orm.NewOrm()
 	sqlCount := `SELECT COUNT(1) AS count  FROM cygx_activity WHERE activity_id = ?`

+ 98 - 0
models/activity_meeting_reminder.go

@@ -0,0 +1,98 @@
+package models
+
+import (
+	"fmt"
+	"rdluck_tools/orm"
+	"time"
+)
+
+type CygxActivityMeetingReminder struct {
+	Id          int       `orm:"column(id);pk"`
+	ActivityId  int       `description:"活动ID"`
+	UserId      int       `description:"用户ID"`
+	CreateTime  time.Time `description:"创建时间"`
+	Mobile      string    `description:"手机号"`
+	Email       string    `description:"邮箱"`
+	CompanyId   int       `description:"公司id"`
+	CompanyName string    `description:"公司名称"`
+}
+
+//记录日志
+type CygxActivityMeetingReminderLog struct {
+	Id          int       `orm:"column(id);pk"`
+	ActivityId  int       `description:"活动ID"`
+	UserId      int       `description:"用户ID"`
+	CreateTime  time.Time `description:"创建时间"`
+	Mobile      string    `description:"手机号"`
+	Email       string    `description:"邮箱"`
+	CompanyId   int       `description:"公司id"`
+	CompanyName string    `description:"公司名称"`
+	Type        int       `description:"操作方式,1报名,2取消报名"`
+}
+
+//添加会议提醒信息
+func AddActivityMeetingReminder(item *CygxActivityMeetingReminder) (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(CygxActivityMeetingReminderLog)
+	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 GetActivityMeetingReminderCount(uid, activityId int) (count int, err error) {
+	sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_MeetingReminder WHERE is_cancel=0 AND user_id=? AND activity_id=? `
+	o := orm.NewOrm()
+	err = o.Raw(sqlCount, uid, activityId).QueryRow(&count)
+	return
+}
+
+//取消报名
+func CancelActivityMeetingReminder(item *CygxActivityMeetingReminder) (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_MeetingReminder 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(CygxActivityMeetingReminderLog)
+	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
+}