Browse Source

no message

xingzai 1 year ago
parent
commit
9cf0c2a361
3 changed files with 78 additions and 6 deletions
  1. 58 6
      controllers/questionnaire.go
  2. 9 0
      models/questionnaire.go
  3. 11 0
      models/questionnaire_vote.go

+ 58 - 6
controllers/questionnaire.go

@@ -4,6 +4,7 @@ import (
 	"encoding/json"
 	"hongze/hongze_cygx/models"
 	"hongze/hongze_cygx/utils"
+	"strconv"
 	"time"
 )
 
@@ -14,6 +15,7 @@ type QuestionnaireController struct {
 
 // @Title 详情
 // @Description 详情接口
+// @Param   IsBestNew   query   bool  false       "是否获取最新的一条问卷消息"
 // @Param   QuestionnaireId   query   int  true       "问卷ID"
 // @Success Ret=200 {object} cygx.GetCygxTacticsTimeLineResp
 // @router /detail [get]
@@ -32,12 +34,27 @@ func (this *QuestionnaireController) Detail() {
 	}
 	resp := new(models.GetCygxQuestionnaireDetailResp)
 	questionnaireId, _ := this.GetInt("QuestionnaireId")
-	detail, err := models.GetCygxQuestionnaireDetail(questionnaireId)
-	if err != nil {
-		br.Msg = "详情不存在"
-		br.ErrMsg = "获取失败,GetCygxQuestionnaireDetail Err:" + err.Error()
-		return
+	isBestNew, _ := this.GetBool("IsBestNew", false)
+	var err error
+	detail := new(models.CygxQuestionnaireResp)
+	//如果是最新的就获取最新的一套问卷信息
+	if isBestNew {
+		detail, err = models.GetCygxQuestionnaireDetailBestNew()
+		if err != nil {
+			br.Msg = "详情不存在"
+			br.ErrMsg = "获取失败,GetCygxQuestionnaireDetailBestNew Err:" + err.Error()
+			return
+		}
+		questionnaireId = detail.QuestionnaireId
+	} else {
+		detail, err = models.GetCygxQuestionnaireDetail(questionnaireId)
+		if err != nil {
+			br.Msg = "详情不存在"
+			br.ErrMsg = "获取失败,GetCygxQuestionnaireDetail Err:" + err.Error()
+			return
+		}
 	}
+
 	ListTheme, err := models.GetCygxQuestionnaireThemeListByQuestionnaireId(questionnaireId)
 	if err != nil {
 		br.Msg = "详情不存在"
@@ -91,6 +108,26 @@ func (this *QuestionnaireController) VoteAdd() {
 		br.Msg = "提交信息不能为空"
 		return
 	}
+
+	detail, err := models.GetCygxQuestionnaireDetail(questionnaireId)
+	if err != nil {
+		br.Msg = "提交失败"
+		br.ErrMsg = "获取失败,GetCygxQuestionnaireDetail Err:" + err.Error()
+		return
+	}
+
+	endTime := utils.StrTimeToTime(detail.EndTime + " 23:59:59") //时间字符串格式转时间格式
+	if endTime.Before(time.Now()) {
+		br.Msg = "此次投票已截止"
+		return
+	}
+
+	lenCheck := len(questionnaireThemeIds)
+	if lenCheck > detail.MaxChooseTotal {
+		br.Msg = "最多可选择" + strconv.Itoa(detail.MaxChooseTotal) + "项"
+		return
+	}
+
 	sellerItem, err := models.GetSellerByCompanyIdCheckFicc(user.CompanyId, 2)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		return
@@ -98,7 +135,22 @@ func (this *QuestionnaireController) VoteAdd() {
 
 	var voteItems []*models.CygxQuestionnaireVote
 	//主题ID提交问卷需要写入的信息
-	if len(questionnaireThemeIds) > 0 {
+	if lenCheck > 0 {
+		var condition string
+		var pars []interface{}
+		condition += " AND  user_id = ?  AND questionnaire_id = ? "
+		pars = append(pars, user.UserId, questionnaireId)
+
+		totalhistory, err := models.GetCygxQuestionnaireVoteCount(condition, pars)
+		if err != nil {
+			br.Msg = "提交失败"
+			br.ErrMsg = "获取失败,GetCygxQuestionnaireDetail Err:" + err.Error()
+			return
+		}
+		if totalhistory > 0 {
+			br.Msg = "您已投过票"
+			return
+		}
 		for _, v := range questionnaireThemeIds {
 			item := new(models.CygxQuestionnaireVote)
 			item.QuestionnaireId = questionnaireId

+ 9 - 0
models/questionnaire.go

@@ -8,6 +8,7 @@ import (
 type AddCygxQuestionnaireThemeReq struct {
 	QuestionnaireThemeId int    `description:"ID"`
 	ActivityTheme        string `description:"活动主题"`
+	DisabledRadio        bool   `description:"是否选择,配合前端添加的字段"`
 }
 
 type CygxQuestionnaireResp struct {
@@ -39,6 +40,14 @@ func GetCygxQuestionnaireDetail(questionnaireId int) (item *CygxQuestionnaireRes
 	return
 }
 
+// 通过ID获取详情
+func GetCygxQuestionnaireDetailBestNew() (item *CygxQuestionnaireResp, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM cygx_questionnaire ORDER BY publish_time DESC LIMIT 1     `
+	err = o.Raw(sql).QueryRow(&item)
+	return
+}
+
 // 列表
 func GetCygxQuestionnaireThemeListByQuestionnaireId(questionnaireId int) (items []*AddCygxQuestionnaireThemeReq, err error) {
 	o := orm.NewOrm()

+ 11 - 0
models/questionnaire_vote.go

@@ -37,6 +37,17 @@ type CygxQuestionnaireVoteOtherTheme struct {
 	RegisterPlatform              int       `description:"来源 1小程序,2:网页"`
 }
 
+// 获取数量
+func GetCygxQuestionnaireVoteCount(condition string, pars []interface{}) (count int, err error) {
+	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_questionnaire_vote as art WHERE 1= 1  `
+	if condition != "" {
+		sqlCount += condition
+	}
+	o := orm.NewOrm()
+	err = o.Raw(sqlCount, pars).QueryRow(&count)
+	return
+}
+
 type CygxQuestionnaireVoteReq struct {
 	QuestionnaireId       int    `description:"问卷ID"`
 	QuestionnaireThemeIds []int  `description:"问卷主题ID"`