questionnaire.go 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. package eta_trial
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/models"
  5. "eta/eta_api/models/eta_trial"
  6. etaTrialService "eta/eta_api/services/eta_trial"
  7. "eta/eta_api/utils"
  8. "time"
  9. )
  10. // QuestionnairePopUp
  11. // @Title 获取问卷调查弹窗信息
  12. // @Description 获取问卷调查弹窗信息
  13. // @Success 200 {object} response.TryOutCompanyListResp
  14. // @router /questionnaire/popup [get]
  15. func (this *EtaTrialController) QuestionnairePopUp() {
  16. br := new(models.BaseResponse).Init()
  17. defer func() {
  18. if br.ErrMsg == "" {
  19. br.IsSendEmail = false
  20. }
  21. this.Data["json"] = br
  22. this.ServeJSON()
  23. }()
  24. sysUser := this.SysUser
  25. if sysUser == nil {
  26. br.Msg = "请登录"
  27. br.ErrMsg = "请登录,SysUser Is Empty"
  28. br.Ret = 408
  29. return
  30. }
  31. // 仅试用平台用
  32. if utils.BusinessCode != utils.BusinessCodeSandbox {
  33. br.Ret = 200
  34. br.Success = true
  35. br.Msg = "获取成功"
  36. return
  37. }
  38. var resp eta_trial.QuestionnairePopupResp
  39. var userReq etaTrialService.GetEtaTrialUserReq
  40. userReq.Mobile = sysUser.Mobile
  41. item, e := etaTrialService.GetEtaTrialUser(userReq)
  42. if e != nil {
  43. br.Msg = "获取失败"
  44. br.ErrMsg = "获取ETA试用客户失败, GetEtaTrialUser Err:" + e.Error()
  45. return
  46. }
  47. if item.EtaTrialId <= 0 {
  48. br.Ret = 200
  49. br.Success = true
  50. br.Msg = "获取成功"
  51. return
  52. }
  53. fillItem, e := eta_trial.GetQuestionnaireFillRecordCountByMobile(sysUser.Mobile)
  54. if e != nil && e.Error() != utils.ErrNoRow() {
  55. br.Msg = "获取失败"
  56. br.ErrMsg = "获取数据失败失败,GetQuestionnaireFillRecordCountByMobile Err:" + e.Error()
  57. return
  58. }
  59. if fillItem == nil {
  60. //没填过
  61. if item.ModifyTime.AddDate(0, 0, 6).Before(time.Now()) {
  62. //弹窗
  63. resp.IsPopup = 1
  64. }
  65. } else {
  66. //填过,判断是否超过了14天
  67. if fillItem.IsFill == 2 && fillItem.CreateTime.AddDate(0, 0, 13).Before(time.Now()) {
  68. //弹窗
  69. resp.IsPopup = 1
  70. } else if fillItem.IsFill == 1 {
  71. //显示图标但不弹窗
  72. resp.IsShow = 1
  73. }
  74. }
  75. // TODO:测试
  76. resp.IsPopup = 1
  77. resp.IsShow = 1
  78. questionnaireList, e := etaTrialService.GetEtaTrialQuestionnaireList()
  79. if e != nil {
  80. br.Msg = "获取失败"
  81. br.ErrMsg = "获取问卷调查列表失败, GetEtaTrialQuestionnaireList Err: " + e.Error()
  82. return
  83. }
  84. resp.Question = questionnaireList
  85. br.Data = resp
  86. br.Ret = 200
  87. br.Success = true
  88. br.Msg = "获取成功"
  89. }
  90. // QuestionnaireCommit
  91. // @Title 提交问卷
  92. // @Description 提交问卷
  93. // @Success 200 {object} response.TryOutCompanyListResp
  94. // @router /questionnaire/commit [post]
  95. func (this *EtaTrialController) QuestionnaireCommit() {
  96. br := new(models.BaseResponse).Init()
  97. defer func() {
  98. this.Data["json"] = br
  99. this.ServeJSON()
  100. }()
  101. sysUser := this.SysUser
  102. if sysUser == nil {
  103. br.Msg = "请登录"
  104. br.ErrMsg = "请登录,SysUser Is Empty"
  105. br.Ret = 408
  106. return
  107. }
  108. var req eta_trial.EtaTrialQuestionnaireReq
  109. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  110. if err != nil {
  111. br.Msg = "参数解析异常!"
  112. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  113. return
  114. }
  115. var userReq etaTrialService.GetEtaTrialUserReq
  116. userReq.Mobile = sysUser.Mobile
  117. admin, e := etaTrialService.GetEtaTrialUser(userReq)
  118. if e != nil {
  119. br.Msg = "操作失败"
  120. br.ErrMsg = "获取ETA试用客户失败, GetEtaTrialUser Err:" + e.Error()
  121. return
  122. }
  123. if admin.EtaTrialId <= 0 {
  124. br.Ret = 200
  125. br.Success = true
  126. br.Msg = "操作成功"
  127. return
  128. }
  129. if req.IsFill == 0 {
  130. // 稍后再填
  131. fillItem := &eta_trial.QuestionnaireFillRecord{
  132. Mobile: admin.Mobile,
  133. IsFill: 1,
  134. CreateTime: time.Now(),
  135. ModifyTime: time.Now(),
  136. }
  137. err := eta_trial.AddQuestionnaireFillRecord(fillItem)
  138. if err != nil {
  139. br.Msg = "新增填写记录失败"
  140. br.ErrMsg = "新增填写记录失败, Err:" + err.Error()
  141. return
  142. }
  143. } else {
  144. // 已填写
  145. list := make([]eta_trial.EtaTrialQuestionnaireRecord, 0)
  146. for _, q := range req.List {
  147. v := eta_trial.EtaTrialQuestionnaireRecord{
  148. UserName: admin.UserName,
  149. CompanyName: admin.CompanyName,
  150. Position: admin.Position,
  151. Options: q.Options,
  152. Mobile: admin.Mobile,
  153. Type: q.Type,
  154. QuestionnaireId: q.QuestionnaireId,
  155. CreateTime: time.Now(),
  156. }
  157. list = append(list, v)
  158. }
  159. var commitReq etaTrialService.EtaTrialQuestionnaireCommitReq
  160. commitReq.List = list
  161. commitRes, e := etaTrialService.EtaTrialQuestionnaireCommit(commitReq)
  162. if e != nil {
  163. br.Msg = "操作失败"
  164. br.ErrMsg = "新增问卷记录失败, EtaTrialQuestionnaireCommit Err: " + e.Error()
  165. return
  166. }
  167. if !commitRes {
  168. br.Msg = "操作失败"
  169. br.ErrMsg = "新增问卷记录失败" + e.Error()
  170. return
  171. }
  172. fillItem := &eta_trial.QuestionnaireFillRecord{
  173. Mobile: admin.Mobile,
  174. IsFill: 2,
  175. CreateTime: time.Now(),
  176. ModifyTime: time.Now(),
  177. }
  178. err := eta_trial.AddQuestionnaireFillRecord(fillItem)
  179. if err != nil {
  180. br.Msg = "新增填写记录失败"
  181. br.ErrMsg = "新增填写记录失败, Err:" + err.Error()
  182. return
  183. }
  184. }
  185. br.Ret = 200
  186. br.Success = true
  187. br.Msg = "提交成功"
  188. }