|
@@ -0,0 +1,327 @@
|
|
|
+package cygx
|
|
|
+
|
|
|
+import (
|
|
|
+ "encoding/json"
|
|
|
+ "github.com/rdlucklib/rdluck_tools/paging"
|
|
|
+ "hongze/hz_crm_api/controllers"
|
|
|
+ "hongze/hz_crm_api/models"
|
|
|
+ "hongze/hz_crm_api/models/cygx"
|
|
|
+ cygxService "hongze/hz_crm_api/services/cygx"
|
|
|
+ "hongze/hz_crm_api/utils"
|
|
|
+ "time"
|
|
|
+)
|
|
|
+
|
|
|
+// 问卷调查
|
|
|
+type QuestionnaireController struct {
|
|
|
+ controllers.BaseAuthController
|
|
|
+}
|
|
|
+
|
|
|
+// @Title 新增、修改问卷内容
|
|
|
+// @Description 新增、修改问卷内容接口
|
|
|
+// @Param request body cygx.AddCygxQuestionnaireReq true "type json string"
|
|
|
+// @Success 200 {object} "保存成功"
|
|
|
+// @router /questionnaire/preserveAndEdit [post]
|
|
|
+func (this *QuestionnaireController) PreserveAndPublish() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+ sysUser := this.SysUser
|
|
|
+ if sysUser == nil {
|
|
|
+ br.Msg = "请登录"
|
|
|
+ br.ErrMsg = "请登录,SysUser Is Empty"
|
|
|
+ br.Ret = 408
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ var req cygx.AddCygxQuestionnaireReq
|
|
|
+ err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "参数解析异常!"
|
|
|
+ br.ErrMsg = "参数解析失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ endTime := utils.StrDateToDate(req.EndTime) //时间字符串格式转时间格式
|
|
|
+ questionnaireId := req.QuestionnaireId
|
|
|
+ activityTypeId := req.ActivityTypeId
|
|
|
+ content := req.Content
|
|
|
+ maxChooseTotal := req.MaxChooseTotal
|
|
|
+ listTheme := req.ListTheme
|
|
|
+
|
|
|
+ activityTypeInfo, errType := cygx.GetActivityTypeDetailById(activityTypeId)
|
|
|
+ if errType != nil {
|
|
|
+ br.Msg = "请选择活动类型"
|
|
|
+ br.ErrMsg = "获取活动类型信息失败,Err:" + errType.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ item := new(cygx.CygxQuestionnaire)
|
|
|
+ item.QuestionnaireId = req.QuestionnaireId
|
|
|
+ item.ActivityTypeId = activityTypeId
|
|
|
+ item.ActivityTypeName = activityTypeInfo.ActivityTypeName
|
|
|
+ item.Content = content
|
|
|
+ item.EndTime = endTime
|
|
|
+ item.PublishTime = time.Now()
|
|
|
+ item.CreateTime = time.Now()
|
|
|
+ item.ModifyTime = time.Now()
|
|
|
+ item.AdminId = sysUser.AdminId
|
|
|
+ item.MaxChooseTotal = maxChooseTotal
|
|
|
+
|
|
|
+ if questionnaireId == 0 {
|
|
|
+ newId, err := cygx.AddCygxQuestionnaire(item, listTheme)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "保存失败"
|
|
|
+ br.ErrMsg = "保存失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //投票发布时,给所有开通买方研选正式试用的客户,推送模板消息
|
|
|
+ go cygxService.SendWxMsgCygxQuestionnaire(int(newId))
|
|
|
+
|
|
|
+ } else {
|
|
|
+ err = cygx.EditCygxQuestionnaire(item, listTheme)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "保存失败"
|
|
|
+ br.ErrMsg = "保存失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.IsAddLog = true
|
|
|
+ br.Msg = "操作成功"
|
|
|
+}
|
|
|
+
|
|
|
+// @Title 列表
|
|
|
+// @Description 列表接口
|
|
|
+// @Param PageSize query int true "每页数据条数"
|
|
|
+// @Param CurrentIndex query int true "当前页页码,从1开始"
|
|
|
+// @Success Ret=200 {object} cygx.GetCygxQuestionnaireResp
|
|
|
+// @router /questionnaire/list [get]
|
|
|
+func (this *QuestionnaireController) List() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+ sysUser := this.SysUser
|
|
|
+ if sysUser == nil {
|
|
|
+ br.Msg = "请登录"
|
|
|
+ br.ErrMsg = "请登录,SysUser Is Empty"
|
|
|
+ br.Ret = 408
|
|
|
+ return
|
|
|
+ }
|
|
|
+ resp := new(cygx.GetCygxQuestionnaireResp)
|
|
|
+ pageSize, _ := this.GetInt("PageSize")
|
|
|
+ currentIndex, _ := this.GetInt("CurrentIndex")
|
|
|
+
|
|
|
+ var startSize int
|
|
|
+ if pageSize <= 0 {
|
|
|
+ pageSize = utils.PageSize20
|
|
|
+ }
|
|
|
+ if currentIndex <= 0 {
|
|
|
+ currentIndex = 1
|
|
|
+ }
|
|
|
+ startSize = utils.StartIndex(currentIndex, pageSize)
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
+
|
|
|
+ total, err := cygx.GetCygxQuestionnaireCount(condition, pars)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ condition += " ORDER BY art.publish_time DESC "
|
|
|
+ list, err := cygx.GetCygxQuestionnaireList(condition, pars, startSize, pageSize)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range list {
|
|
|
+ endTime := utils.StrTimeToTime(v.EndTime + " 23:59:59") //时间字符串格式转时间格式
|
|
|
+ if endTime.Before(time.Now()) {
|
|
|
+ v.State = "已截止"
|
|
|
+ } else {
|
|
|
+ v.State = "发布中"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ page := paging.GetPaging(currentIndex, pageSize, total)
|
|
|
+ resp.List = list
|
|
|
+ resp.Paging = page
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = resp
|
|
|
+}
|
|
|
+
|
|
|
+// @Title 详情
|
|
|
+// @Description 详情接口
|
|
|
+// @Param QuestionnaireId query int true "问卷ID"
|
|
|
+// @Success Ret=200 {object} cygx.GetCygxTacticsTimeLineResp
|
|
|
+// @router /questionnaire/detail [get]
|
|
|
+func (this *QuestionnaireController) Detail() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+ sysUser := this.SysUser
|
|
|
+ if sysUser == nil {
|
|
|
+ br.Msg = "请登录"
|
|
|
+ br.ErrMsg = "请登录,SysUser Is Empty"
|
|
|
+ br.Ret = 408
|
|
|
+ return
|
|
|
+ }
|
|
|
+ resp := new(cygx.GetCygxQuestionnaireDetailResp)
|
|
|
+ questionnaireId, _ := this.GetInt("QuestionnaireId")
|
|
|
+ detail, err := cygx.GetCygxQuestionnaireDetail(questionnaireId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "详情不存在"
|
|
|
+ br.ErrMsg = "获取失败,GetCygxQuestionnaireDetail Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ ListTheme, err := cygx.GetCygxQuestionnaireThemeListByQuestionnaireId(questionnaireId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "详情不存在"
|
|
|
+ br.ErrMsg = "获取失败,GetCygxQuestionnaireThemeListByQuestionnaireId Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ detail.ListTheme = ListTheme
|
|
|
+ resp.Detail = detail
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = resp
|
|
|
+}
|
|
|
+
|
|
|
+// @Title 投票结果
|
|
|
+// @Description 投票结果接口
|
|
|
+// @Param QuestionnaireId query int true "问卷ID"
|
|
|
+// @Success Ret=200 {object} cygx.CygxQuestionnaireVoteListResp
|
|
|
+// @router /questionnaire/vote_detail [get]
|
|
|
+func (this *QuestionnaireController) VoteDetail() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+ sysUser := this.SysUser
|
|
|
+ if sysUser == nil {
|
|
|
+ br.Msg = "请登录"
|
|
|
+ br.ErrMsg = "请登录,SysUser Is Empty"
|
|
|
+ br.Ret = 408
|
|
|
+ return
|
|
|
+ }
|
|
|
+ resp := new(cygx.CygxQuestionnaireVoteListResp)
|
|
|
+ questionnaireId, _ := this.GetInt("QuestionnaireId")
|
|
|
+
|
|
|
+ listTheme, err := cygx.GetCygxQuestionnaireThemeListByQuestionnaireId(questionnaireId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "详情不存在"
|
|
|
+ br.ErrMsg = "获取失败,GetCygxQuestionnaireThemeListByQuestionnaireId Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ listVote, err := cygx.GetCygxCygxQuestionnaireVoteListByQuestionnaireId(questionnaireId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "详情不存在"
|
|
|
+ br.ErrMsg = "获取失败,GetCygxCygxQuestionnaireVoteListByQuestionnaireId Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //计算每个主题的投票数量
|
|
|
+ mapVoteTotal := make(map[int]int)
|
|
|
+ for _, v := range listVote {
|
|
|
+ mapVoteTotal[v.QuestionnaireThemeId] += 1
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, v := range listTheme {
|
|
|
+ item := new(cygx.AddCygxQuestionnaireThemeReq)
|
|
|
+ item.QuestionnaireThemeId = v.QuestionnaireThemeId
|
|
|
+ item.ActivityTheme = v.ActivityTheme
|
|
|
+ item.VoteTotal = mapVoteTotal[v.QuestionnaireThemeId]
|
|
|
+ resp.List = append(resp.List, item)
|
|
|
+ }
|
|
|
+ if len(resp.List) == 0 {
|
|
|
+ resp.List = make([]*cygx.AddCygxQuestionnaireThemeReq, 0)
|
|
|
+ }
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = resp
|
|
|
+}
|
|
|
+
|
|
|
+// @Title 票数明细
|
|
|
+// @Description 票数明细接口
|
|
|
+// @Param QuestionnaireThemeId query int true "主题问卷ID"
|
|
|
+// @Success Ret=200 {object} cygx.GetCygxTacticsTimeLineResp
|
|
|
+// @router /questionnaire/vote_list [get]
|
|
|
+func (this *QuestionnaireController) VoteList() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+ sysUser := this.SysUser
|
|
|
+ if sysUser == nil {
|
|
|
+ br.Msg = "请登录"
|
|
|
+ br.ErrMsg = "请登录,SysUser Is Empty"
|
|
|
+ br.Ret = 408
|
|
|
+ return
|
|
|
+ }
|
|
|
+ resp := new(cygx.CygxCygxQuestionnaireVoteListResp)
|
|
|
+ questionnaireThemeId, _ := this.GetInt("QuestionnaireThemeId")
|
|
|
+ listVote, err := cygx.GetCygxQuestionnaireVoteListByQuestionnaireThemeId(questionnaireThemeId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "详情不存在"
|
|
|
+ br.ErrMsg = "获取失败,GetCygxQuestionnaireVoteListByQuestionnaireThemeId Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ resp.List = listVote
|
|
|
+ if len(resp.List) == 0 {
|
|
|
+ resp.List = make([]*cygx.CygxQuestionnaireVoteResp, 0)
|
|
|
+ }
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = resp
|
|
|
+}
|
|
|
+
|
|
|
+// @Title 其余主题投票结果
|
|
|
+// @Description 其余主题投票结果接口
|
|
|
+// @Param QuestionnaireId query int true "问卷ID"
|
|
|
+// @Success Ret=200 {object} cygx.CygxQuestionnaireVoteListResp
|
|
|
+// @router /questionnaire/vote_other [get]
|
|
|
+func (this *QuestionnaireController) VoteOther() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+ sysUser := this.SysUser
|
|
|
+ if sysUser == nil {
|
|
|
+ br.Msg = "请登录"
|
|
|
+ br.ErrMsg = "请登录,SysUser Is Empty"
|
|
|
+ br.Ret = 408
|
|
|
+ return
|
|
|
+ }
|
|
|
+ resp := new(cygx.CygxQuestionnaireVoteOtherThemeListResp)
|
|
|
+ questionnaireId, _ := this.GetInt("QuestionnaireId")
|
|
|
+
|
|
|
+ listOther, err := cygx.GetCygxQuestionnaireVoteOtherThemeListByQuestionnaireId(questionnaireId)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "详情不存在"
|
|
|
+ br.ErrMsg = "获取失败,GetCygxCygxQuestionnaireVoteListByQuestionnaireId Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ resp.List = listOther
|
|
|
+ if len(resp.List) == 0 {
|
|
|
+ resp.List = make([]*cygx.CygxQuestionnaireVoteOtherThemeResp, 0)
|
|
|
+ }
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ br.Data = resp
|
|
|
+}
|