questionnaire_template.go 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. package questionnaire_template
  2. import (
  3. "surveyService/response"
  4. "surveyService/service/questionnaire_template"
  5. "surveyService/validators"
  6. "github.com/gin-gonic/gin"
  7. )
  8. // 修改或创建
  9. func UpdateOrCreate(c *gin.Context) {
  10. var validator validators.QuestionnaireTemplate
  11. err := c.ShouldBind(&validator)
  12. if err != nil {
  13. response.FailValidator(c, err)
  14. return
  15. }
  16. var updateErr *response.ErrCode
  17. if validator.ID > 0 {
  18. updateErr = questionnaire_template.Update(&validator)
  19. } else {
  20. updateErr = questionnaire_template.Create(&validator)
  21. }
  22. if updateErr != nil {
  23. response.Fail(c, updateErr)
  24. return
  25. }
  26. response.Success(c, map[string]any{})
  27. }
  28. // 分页获取列表
  29. func Paginate(c *gin.Context) {
  30. type Validator struct {
  31. Page int `json:"page" form:"page" binding:"omitempty,min=1"`
  32. PageSize int `json:"pageSize" form:"pageSize" binding:"omitempty,min=1,max=100"`
  33. Key string `json:"key" form:"key" binding:"omitempty"`
  34. }
  35. var validator Validator
  36. err := c.ShouldBindQuery(&validator)
  37. if err != nil {
  38. response.FailValidator(c, err)
  39. return
  40. }
  41. subjects, total := questionnaire_template.Paginate(validator.Page, validator.PageSize, validator.Key)
  42. var list []*validators.QuestionnaireTemplate = make([]*validators.QuestionnaireTemplate, 0)
  43. for _, item := range subjects {
  44. list = append(list, questionnaire_template.Format(item))
  45. }
  46. response.Success(c, map[string]any{
  47. "list": list,
  48. "total": total,
  49. })
  50. }
  51. // 分页获取列表
  52. func Detail(c *gin.Context) {
  53. type Validator struct {
  54. ID int64 `json:"id" form:"id" binding:"required"`
  55. }
  56. var validator Validator
  57. err := c.ShouldBindQuery(&validator)
  58. if err != nil {
  59. response.FailValidator(c, err)
  60. return
  61. }
  62. subject, errCode := questionnaire_template.Find(validator.ID)
  63. if errCode != nil {
  64. response.Fail(c, errCode)
  65. return
  66. }
  67. response.Success(c, map[string]any{
  68. "detail": questionnaire_template.Format(subject),
  69. })
  70. }
  71. // 获取全部列表
  72. func List(c *gin.Context) {
  73. type Validator struct {
  74. Key string `json:"key" form:"key" binding:"omitempty"`
  75. }
  76. var validator Validator
  77. err := c.ShouldBindQuery(&validator)
  78. if err != nil {
  79. response.FailValidator(c, err)
  80. return
  81. }
  82. subjects := questionnaire_template.List(validator.Key)
  83. var list []*validators.QuestionnaireTemplate = make([]*validators.QuestionnaireTemplate, 0)
  84. for _, item := range subjects {
  85. list = append(list, questionnaire_template.Format(item))
  86. }
  87. response.Success(c, map[string]any{
  88. "list": list,
  89. })
  90. }
  91. // 删除
  92. func Delete(c *gin.Context) {
  93. type Validator struct {
  94. ID int64 `json:"id" form:"id" binding:"required"`
  95. }
  96. var validator Validator
  97. err := c.ShouldBind(&validator)
  98. if err != nil {
  99. response.FailValidator(c, err)
  100. return
  101. }
  102. deleteErr := questionnaire_template.Delete(validator.ID)
  103. if deleteErr != nil {
  104. response.Fail(c, deleteErr)
  105. return
  106. }
  107. response.Success(c, map[string]any{})
  108. }
  109. // 删除
  110. func UpdatePeg(c *gin.Context) {
  111. type Validator struct {
  112. ID int64 `json:"id" form:"id" binding:"required"`
  113. Peg string `json:"peg" form:"peg" binding:"required"`
  114. }
  115. var validator Validator
  116. err := c.ShouldBind(&validator)
  117. if err != nil {
  118. response.FailValidator(c, err)
  119. return
  120. }
  121. updateErr := questionnaire_template.UpdatePeg(validator.ID, validator.Peg)
  122. if updateErr != nil {
  123. response.Fail(c, updateErr)
  124. return
  125. }
  126. response.Success(c, map[string]any{})
  127. }
  128. // 获取关联的问题库列表
  129. func ListQuestionnaireSubject(c *gin.Context) {
  130. type Validator struct {
  131. ID int64 `json:"id" form:"id" binding:"required"`
  132. }
  133. var validator Validator
  134. err := c.ShouldBind(&validator)
  135. if err != nil {
  136. response.FailValidator(c, err)
  137. return
  138. }
  139. subjects := questionnaire_template.ListSubjects(validator.ID)
  140. var list []*validators.QuestionnaireTemplateSubject
  141. for _, subject := range subjects {
  142. list = append(list, questionnaire_template.FormatTemplateSubject(subject))
  143. }
  144. response.Success(c, map[string]any{
  145. "list": list,
  146. })
  147. }
  148. // 批量添加关联的问题库
  149. func AddQuestionnaireSubject(c *gin.Context) {
  150. type Validator struct {
  151. ID int64 `json:"id" form:"id" binding:"required"`
  152. SubjectIds []int64 `json:"subjectIds" form:"subjectIds" binding:"required"`
  153. }
  154. var validator Validator
  155. err := c.ShouldBind(&validator)
  156. if err != nil {
  157. response.FailValidator(c, err)
  158. return
  159. }
  160. addErr := questionnaire_template.AddSubject(validator.ID, validator.SubjectIds)
  161. if addErr != nil {
  162. response.Fail(c, addErr)
  163. return
  164. }
  165. response.Success(c, map[string]any{})
  166. }
  167. // 移除关联的问题库
  168. func DeleteQuestionnaireSubject(c *gin.Context) {
  169. type Validator struct {
  170. ID int64 `json:"id" form:"id" binding:"required"`
  171. SubjectIds []int64 `json:"subjectIds" form:"subjectIds" binding:"required"`
  172. }
  173. var validator Validator
  174. err := c.ShouldBind(&validator)
  175. if err != nil {
  176. response.FailValidator(c, err)
  177. return
  178. }
  179. removeErr := questionnaire_template.DeleteSubject(validator.ID, validator.SubjectIds)
  180. if removeErr != nil {
  181. response.Fail(c, removeErr)
  182. return
  183. }
  184. response.Success(c, map[string]any{})
  185. }
  186. // 批量修改关联问题库的排序
  187. func UpdateQuestionnaireSubjectSort(c *gin.Context) {
  188. type Validator struct {
  189. ID int64 `json:"id" form:"id" binding:"required"`
  190. SubjectIds []int64 `json:"subjectIds" form:"subjectIds" binding:"required"`
  191. }
  192. var validator Validator
  193. err := c.ShouldBind(&validator)
  194. if err != nil {
  195. response.FailValidator(c, err)
  196. return
  197. }
  198. updateErr := questionnaire_template.UpdateSort(validator.ID, validator.SubjectIds)
  199. if updateErr != nil {
  200. response.Fail(c, updateErr)
  201. return
  202. }
  203. response.Success(c, map[string]any{})
  204. }