member.go 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. package survey_mechanism
  2. import (
  3. "fmt"
  4. "surveyService/model"
  5. "surveyService/response"
  6. "surveyService/service/questionnaire_survey"
  7. "surveyService/service/survey"
  8. "surveyService/validators"
  9. "github.com/golang-module/carbon"
  10. "gogs.uu.mdfitnesscao.com/hys/sdk"
  11. "gorm.io/gorm"
  12. )
  13. type Member struct {
  14. MechanismId string // 机构ID
  15. Member *sdk.AuthMember
  16. }
  17. func InitMember(member *sdk.AuthMember, mechanismId string) *Member {
  18. return &Member{
  19. MechanismId: mechanismId,
  20. Member: member,
  21. }
  22. }
  23. // 获取问卷授权基本信息
  24. func (m *Member) Detail(sn string) (*model.SurveyMechanism, *response.ErrCode) {
  25. var surveyMechanismModel *model.SurveyMechanism
  26. findErr := model.DB.Where("sn = ?", sn).Preload("Survey").First(&surveyMechanismModel).Error
  27. if findErr != nil {
  28. return nil, &response.ErrCode{
  29. Code: response.ERROR,
  30. Msg: "问卷不存在或已下架",
  31. }
  32. }
  33. if surveyMechanismModel.Status != model.SURVEY_MECHANISM_STATUS_ENABLE {
  34. return nil, &response.ErrCode{
  35. Code: response.ERROR,
  36. Msg: "问卷未启用",
  37. }
  38. }
  39. if surveyMechanismModel.AuthorizeStatus != model.SURVEY_MECHANISM_AUTHORIZE_STATUS_ENABLE {
  40. return nil, &response.ErrCode{
  41. Code: response.ERROR,
  42. Msg: "问卷授权被禁用",
  43. }
  44. }
  45. return surveyMechanismModel, nil
  46. }
  47. // 获取授权的问卷列表
  48. func (m *Member) List(surveyType int64) []*model.SurveyMechanism {
  49. surveyTableName := (&model.Survey{}).TableName()
  50. surveyMechanismTableName := (&model.SurveyMechanism{}).TableName()
  51. var surveyMechanismModels []*model.SurveyMechanism
  52. var tx = model.DB.Preload("SurveyResult", func(db *gorm.DB) *gorm.DB {
  53. return db.Where(&model.SurveyResult{
  54. ArchivesId: m.Member.ID,
  55. }).Order("end_time desc")
  56. }).Preload("Survey").Where(&model.SurveyMechanism{
  57. Status: model.SURVEY_MECHANISM_STATUS_ENABLE,
  58. AuthorizeStatus: model.SURVEY_MECHANISM_AUTHORIZE_STATUS_ENABLE,
  59. MechanismId: m.MechanismId,
  60. }).Select(fmt.Sprintf("%s.*", surveyMechanismTableName)).Joins(fmt.Sprintf("right join %s on %s.id = %s.survey_id", surveyTableName, surveyTableName, surveyMechanismTableName))
  61. if surveyType > 0 {
  62. tx = tx.Where(fmt.Sprintf("%s.type = ?", surveyTableName), surveyType)
  63. }
  64. tx.Find(&surveyMechanismModels)
  65. return surveyMechanismModels
  66. }
  67. // 获取问卷详情(转译系统)
  68. func (m *Member) DetailSurveyQuestions(sn string) (*validators.QuestionnaireSurvey, *response.ErrCode) {
  69. _, findErr := m.Detail(sn)
  70. if findErr != nil {
  71. return nil, findErr
  72. }
  73. // if surveyMechanism.Survey.SurveyCode == "" {
  74. // return nil, &response.ErrCode{
  75. // Code: response.ERROR,
  76. // Msg: "该问卷未配置关联模型",
  77. // }
  78. // }
  79. surveyCode := "DZTJV1"
  80. // 获取问卷配置信息
  81. surveyConfig, detailErr := questionnaire_survey.FindBySN(surveyCode)
  82. if detailErr != nil {
  83. return nil, &response.ErrCode{
  84. Code: response.ERROR,
  85. Msg: "获取问卷配置失败",
  86. }
  87. }
  88. return questionnaire_survey.Format(surveyConfig), nil
  89. }
  90. // 获取问卷详情(转译系统)
  91. func (m *Member) FormatSurvey(surveyMechanism *model.SurveyMechanism) *validators.SurveyMechanism {
  92. if surveyMechanism == nil {
  93. return nil
  94. }
  95. formatedSurvey := survey.Format(&surveyMechanism.Survey)
  96. name := surveyMechanism.Name
  97. cover := surveyMechanism.Cover
  98. if name == "" {
  99. name = formatedSurvey.Name
  100. }
  101. if cover == "" {
  102. cover = formatedSurvey.Cover
  103. }
  104. lastVisitTime := ""
  105. var lastSurveyResultId string = ""
  106. if surveyMechanism.SurveyResult != nil {
  107. lastVisitTime = carbon.Time2Carbon(surveyMechanism.SurveyResult.StartTime).Format("Y/m/d H:i:s")
  108. lastSurveyResultId = surveyMechanism.SurveyResult.SN
  109. }
  110. return &validators.SurveyMechanism{
  111. ID: surveyMechanism.SN,
  112. MechanismId: surveyMechanism.MechanismId,
  113. Mechanism: nil,
  114. Name: name,
  115. Cover: cover,
  116. LastVisitTime: lastVisitTime,
  117. LastSurveyResultId: lastSurveyResultId,
  118. Description: surveyMechanism.Description,
  119. }
  120. }