123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- package questionnaire_subject
- import (
- "surveyService/model"
- "surveyService/response"
- "surveyService/validators"
- "github.com/golang-module/carbon"
- )
- // 创建
- func Create(subject *validators.QuestionnaireSubject) *response.ErrCode {
- // 检查编号是否重复
- existsErr := ExistBySn(subject.SN, 0)
- if existsErr != nil {
- return existsErr
- }
- // 创建
- subjectModel := model.QuestionnaireSubject{
- SN: subject.SN,
- Type: subject.Type,
- Title: subject.Title,
- Validator: subject.Validator,
- Remark: subject.Remark,
- Mark: subject.Mark,
- }
- if err := model.DB.Create(&subjectModel).Error; err != nil {
- return &response.ErrCode{
- Code: response.ERROR,
- Msg: "创建失败",
- }
- }
- return nil
- }
- // 更新
- func Update(subject *validators.QuestionnaireSubject) *response.ErrCode {
- if subject.ID <= 0 {
- return &response.ErrCode{
- Code: response.VALIDATOR_ERROR,
- Msg: "ID不能为空",
- }
- }
- // 检查编号是否重复
- existsErr := ExistBySn(subject.SN, subject.ID)
- if existsErr != nil {
- return existsErr
- }
- // 更新
- model.DB.Where("id = ?", subject.ID).Select("type", "title", "remark", "validator").Updates(model.QuestionnaireSubject{
- Type: subject.Type,
- Title: subject.Title,
- Validator: subject.Validator,
- Remark: subject.Remark,
- })
- return nil
- }
- // 获取单个
- func Find(id int64) (*model.QuestionnaireSubject, *response.ErrCode) {
- var subject model.QuestionnaireSubject
- model.DB.Where("id = ?", id).First(&subject)
- if subject.ID <= 0 {
- return nil, &response.ErrCode{
- Code: response.ERROR,
- Msg: "没有找到有效的数据",
- }
- }
- return &subject, nil
- }
- // 删除
- func Delete(id int64) *response.ErrCode {
- // 检查问题库是否被问题模板关联
- var total int64
- model.DB.Model(&model.QuestionnaireTemplateSubject{}).Where("subject_id = ?", id).Count(&total)
- if total > 0 {
- return &response.ErrCode{
- Code: response.ERROR,
- Msg: "该题目已被问题模板关联,不能删除",
- }
- }
- // 检查问题库是否被问卷关联
- model.DB.Model(&model.QuestionnaireSubject{}).Where("subject_id = ?", id).Count(&total)
- if total > 0 {
- return &response.ErrCode{
- Code: response.ERROR,
- Msg: "该题目已被问卷关联,不能删除",
- }
- }
- // 执行删除
- model.DB.Where("id = ?", id).Delete(&model.QuestionnaireSubject{})
- return nil
- }
- // 修改备注
- func UpdateMark(id int64, mark string) *response.ErrCode {
- _, findErr := Find(id)
- if findErr != nil {
- return findErr
- }
- // 更新
- model.DB.Where("id = ?", id).Select("mark").Updates(model.QuestionnaireSubject{
- Mark: mark,
- })
- return nil
- }
- func ExistBySn(sn string, subjectId int64) *response.ErrCode {
- // 检查编号是否重复
- query := model.DB.Where("sn = ?", sn)
- if subjectId > 0 {
- query = query.Where("id <> ?", subjectId)
- }
- var total int64
- query.Model(&model.QuestionnaireSubject{}).Count(&total)
- if total > 0 {
- return &response.ErrCode{
- Code: response.ERROR,
- Msg: "编号已存在",
- }
- }
- return nil
- }
- // 获取列表
- func Paginate(page, pageSize int, key string) ([]*model.QuestionnaireSubject, int64) {
- var total int64
- var subjects []*model.QuestionnaireSubject = make([]*model.QuestionnaireSubject, 0)
- query := model.DB.Model(&model.QuestionnaireSubject{})
- if key != "" {
- query = query.Where("title like @key or sn like @key", map[string]interface{}{
- "key": "%" + key + "%",
- })
- }
- query.Count(&total)
- if total > 0 {
- query.Scopes(model.Paginate(page, pageSize)).Find(&subjects)
- }
- return subjects, total
- }
- // 获取所有列表
- func List(key string) []*model.QuestionnaireSubject {
- var subjects []*model.QuestionnaireSubject = make([]*model.QuestionnaireSubject, 0)
- query := model.DB.Model(&model.QuestionnaireSubject{})
- if key != "" {
- query = query.Where("title like @key or sn like @key", map[string]interface{}{
- "key": "%" + key + "%",
- })
- }
- query.Find(&subjects)
- return subjects
- }
- // 通过ID获取列表
- func ListByIds(ids []int64) []*model.QuestionnaireSubject {
- var subjects []*model.QuestionnaireSubject = make([]*model.QuestionnaireSubject, 0)
- model.DB.Where("id in (?)", ids).Find(&subjects)
- return subjects
- }
- // 格式化
- func Format(subject *model.QuestionnaireSubject) *validators.QuestionnaireSubject {
- if subject == nil {
- return nil
- }
- return &validators.QuestionnaireSubject{
- ID: subject.ID,
- SN: subject.SN,
- Type: subject.Type,
- Title: subject.Title,
- Validator: subject.Validator,
- Remark: subject.Remark,
- Mark: subject.Mark,
- CreatedAt: carbon.Time2Carbon(subject.CreatedAt).Format("Y/m/d H:i:s"),
- }
- }
|