questionnaire_subject.go 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. package questionnaire_subject
  2. import (
  3. "surveyService/model"
  4. "surveyService/response"
  5. "surveyService/validators"
  6. "github.com/golang-module/carbon"
  7. )
  8. // 创建
  9. func Create(subject *validators.QuestionnaireSubject) *response.ErrCode {
  10. // 检查编号是否重复
  11. existsErr := ExistBySn(subject.SN, 0)
  12. if existsErr != nil {
  13. return existsErr
  14. }
  15. // 创建
  16. subjectModel := model.QuestionnaireSubject{
  17. SN: subject.SN,
  18. Type: subject.Type,
  19. Title: subject.Title,
  20. Validator: subject.Validator,
  21. Remark: subject.Remark,
  22. Mark: subject.Mark,
  23. }
  24. if err := model.DB.Create(&subjectModel).Error; err != nil {
  25. return &response.ErrCode{
  26. Code: response.ERROR,
  27. Msg: "创建失败",
  28. }
  29. }
  30. return nil
  31. }
  32. // 更新
  33. func Update(subject *validators.QuestionnaireSubject) *response.ErrCode {
  34. if subject.ID <= 0 {
  35. return &response.ErrCode{
  36. Code: response.VALIDATOR_ERROR,
  37. Msg: "ID不能为空",
  38. }
  39. }
  40. // 检查编号是否重复
  41. existsErr := ExistBySn(subject.SN, subject.ID)
  42. if existsErr != nil {
  43. return existsErr
  44. }
  45. // 更新
  46. model.DB.Where("id = ?", subject.ID).Select("type", "title", "remark", "validator").Updates(model.QuestionnaireSubject{
  47. Type: subject.Type,
  48. Title: subject.Title,
  49. Validator: subject.Validator,
  50. Remark: subject.Remark,
  51. })
  52. return nil
  53. }
  54. // 获取单个
  55. func Find(id int64) (*model.QuestionnaireSubject, *response.ErrCode) {
  56. var subject model.QuestionnaireSubject
  57. model.DB.Where("id = ?", id).First(&subject)
  58. if subject.ID <= 0 {
  59. return nil, &response.ErrCode{
  60. Code: response.ERROR,
  61. Msg: "没有找到有效的数据",
  62. }
  63. }
  64. return &subject, nil
  65. }
  66. // 删除
  67. func Delete(id int64) *response.ErrCode {
  68. // 检查问题库是否被问题模板关联
  69. var total int64
  70. model.DB.Model(&model.QuestionnaireTemplateSubject{}).Where("subject_id = ?", id).Count(&total)
  71. if total > 0 {
  72. return &response.ErrCode{
  73. Code: response.ERROR,
  74. Msg: "该题目已被问题模板关联,不能删除",
  75. }
  76. }
  77. // 检查问题库是否被问卷关联
  78. model.DB.Model(&model.QuestionnaireSubject{}).Where("subject_id = ?", id).Count(&total)
  79. if total > 0 {
  80. return &response.ErrCode{
  81. Code: response.ERROR,
  82. Msg: "该题目已被问卷关联,不能删除",
  83. }
  84. }
  85. // 执行删除
  86. model.DB.Where("id = ?", id).Delete(&model.QuestionnaireSubject{})
  87. return nil
  88. }
  89. // 修改备注
  90. func UpdateMark(id int64, mark string) *response.ErrCode {
  91. _, findErr := Find(id)
  92. if findErr != nil {
  93. return findErr
  94. }
  95. // 更新
  96. model.DB.Where("id = ?", id).Select("mark").Updates(model.QuestionnaireSubject{
  97. Mark: mark,
  98. })
  99. return nil
  100. }
  101. func ExistBySn(sn string, subjectId int64) *response.ErrCode {
  102. // 检查编号是否重复
  103. query := model.DB.Where("sn = ?", sn)
  104. if subjectId > 0 {
  105. query = query.Where("id <> ?", subjectId)
  106. }
  107. var total int64
  108. query.Model(&model.QuestionnaireSubject{}).Count(&total)
  109. if total > 0 {
  110. return &response.ErrCode{
  111. Code: response.ERROR,
  112. Msg: "编号已存在",
  113. }
  114. }
  115. return nil
  116. }
  117. // 获取列表
  118. func Paginate(page, pageSize int, key string) ([]*model.QuestionnaireSubject, int64) {
  119. var total int64
  120. var subjects []*model.QuestionnaireSubject = make([]*model.QuestionnaireSubject, 0)
  121. query := model.DB.Model(&model.QuestionnaireSubject{})
  122. if key != "" {
  123. query = query.Where("title like @key or sn like @key", map[string]interface{}{
  124. "key": "%" + key + "%",
  125. })
  126. }
  127. query.Count(&total)
  128. if total > 0 {
  129. query.Scopes(model.Paginate(page, pageSize)).Find(&subjects)
  130. }
  131. return subjects, total
  132. }
  133. // 获取所有列表
  134. func List(key string) []*model.QuestionnaireSubject {
  135. var subjects []*model.QuestionnaireSubject = make([]*model.QuestionnaireSubject, 0)
  136. query := model.DB.Model(&model.QuestionnaireSubject{})
  137. if key != "" {
  138. query = query.Where("title like @key or sn like @key", map[string]interface{}{
  139. "key": "%" + key + "%",
  140. })
  141. }
  142. query.Find(&subjects)
  143. return subjects
  144. }
  145. // 通过ID获取列表
  146. func ListByIds(ids []int64) []*model.QuestionnaireSubject {
  147. var subjects []*model.QuestionnaireSubject = make([]*model.QuestionnaireSubject, 0)
  148. model.DB.Where("id in (?)", ids).Find(&subjects)
  149. return subjects
  150. }
  151. // 格式化
  152. func Format(subject *model.QuestionnaireSubject) *validators.QuestionnaireSubject {
  153. if subject == nil {
  154. return nil
  155. }
  156. return &validators.QuestionnaireSubject{
  157. ID: subject.ID,
  158. SN: subject.SN,
  159. Type: subject.Type,
  160. Title: subject.Title,
  161. Validator: subject.Validator,
  162. Remark: subject.Remark,
  163. Mark: subject.Mark,
  164. CreatedAt: carbon.Time2Carbon(subject.CreatedAt).Format("Y/m/d H:i:s"),
  165. }
  166. }