package survey_mechanism import ( "fmt" "surveyService/model" "surveyService/response" "surveyService/service/questionnaire_survey" "surveyService/service/survey" "surveyService/validators" "github.com/golang-module/carbon" "gogs.uu.mdfitnesscao.com/cuiguohai/sdk" "gorm.io/gorm" ) type Member struct { MechanismId string // 机构ID Member *sdk.AuthMember } func InitMember(member *sdk.AuthMember, mechanismId string) *Member { return &Member{ MechanismId: mechanismId, Member: member, } } // 获取问卷授权基本信息 func (m *Member) Detail(sn string) (*model.SurveyMechanism, *response.ErrCode) { var surveyMechanismModel *model.SurveyMechanism findErr := model.DB.Where("sn = ?", sn).Preload("Survey").First(&surveyMechanismModel).Error if findErr != nil { return nil, &response.ErrCode{ Code: response.ERROR, Msg: "问卷不存在或已下架", } } if surveyMechanismModel.Status != model.SURVEY_MECHANISM_STATUS_ENABLE { return nil, &response.ErrCode{ Code: response.ERROR, Msg: "问卷未启用", } } if surveyMechanismModel.AuthorizeStatus != model.SURVEY_MECHANISM_AUTHORIZE_STATUS_ENABLE { return nil, &response.ErrCode{ Code: response.ERROR, Msg: "问卷授权被禁用", } } return surveyMechanismModel, nil } // 获取授权的问卷列表 func (m *Member) List(surveyType int64) []*model.SurveyMechanism { surveyTableName := (&model.Survey{}).TableName() surveyMechanismTableName := (&model.SurveyMechanism{}).TableName() var surveyMechanismModels []*model.SurveyMechanism var tx = model.DB.Preload("SurveyResult", func(db *gorm.DB) *gorm.DB { return db.Where(&model.SurveyResult{ ArchivesId: m.Member.ID, }).Order("end_time desc") }).Preload("Survey").Where(&model.SurveyMechanism{ Status: model.SURVEY_MECHANISM_STATUS_ENABLE, AuthorizeStatus: model.SURVEY_MECHANISM_AUTHORIZE_STATUS_ENABLE, MechanismId: m.MechanismId, }).Select(fmt.Sprintf("%s.*", surveyMechanismTableName)).Joins(fmt.Sprintf("right join %s on %s.id = %s.survey_id", surveyTableName, surveyTableName, surveyMechanismTableName)) if surveyType > 0 { tx = tx.Where(fmt.Sprintf("%s.type = ?", surveyTableName), surveyType) } tx.Find(&surveyMechanismModels) return surveyMechanismModels } // 获取问卷详情(转译系统) func (m *Member) DetailSurveyQuestions(sn string) (*validators.QuestionnaireSurvey, *response.ErrCode) { _, findErr := m.Detail(sn) if findErr != nil { return nil, findErr } // if surveyMechanism.Survey.SurveyCode == "" { // return nil, &response.ErrCode{ // Code: response.ERROR, // Msg: "该问卷未配置关联模型", // } // } surveyCode := "DZTJV1" // 获取问卷配置信息 surveyConfig, detailErr := questionnaire_survey.FindBySN(surveyCode) if detailErr != nil { return nil, &response.ErrCode{ Code: response.ERROR, Msg: "获取问卷配置失败", } } return questionnaire_survey.Format(surveyConfig), nil } // 获取问卷详情(转译系统) func (m *Member) FormatSurvey(surveyMechanism *model.SurveyMechanism) *validators.SurveyMechanism { if surveyMechanism == nil { return nil } formatedSurvey := survey.Format(&surveyMechanism.Survey) name := surveyMechanism.Name cover := surveyMechanism.Cover if name == "" { name = formatedSurvey.Name } if cover == "" { cover = formatedSurvey.Cover } lastVisitTime := "" var lastSurveyResultId string = "" if surveyMechanism.SurveyResult != nil { lastVisitTime = carbon.Time2Carbon(surveyMechanism.SurveyResult.StartTime).Format("Y/m/d H:i:s") lastSurveyResultId = surveyMechanism.SurveyResult.SN } return &validators.SurveyMechanism{ ID: surveyMechanism.SN, MechanismId: surveyMechanism.MechanismId, Mechanism: nil, Name: name, Cover: cover, LastVisitTime: lastVisitTime, LastSurveyResultId: lastSurveyResultId, Description: surveyMechanism.Description, } }