123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- package survey
- import (
- "surveyService/model"
- "surveyService/response"
- "surveyService/validators"
- "github.com/golang-module/carbon"
- )
- // 创建或修改问卷
- func UpdateOrCreate(surveyForm *validators.Survey) *response.ErrCode {
- if surveyForm.ID == "" {
- return Create(surveyForm)
- } else {
- return Update(surveyForm)
- }
- }
- // 创建问卷
- func Create(surveyForm *validators.Survey) *response.ErrCode {
- // // 如果是定制体检,要禁止他创建多个
- // if surveyForm.Type == model.SURVEY_TYPE_PHYSICAL {
- // // 检查是否有定制体检
- // var physicalSurveyTotal int64
- // model.DB.Model(&model.Survey{}).Where("type = ?", model.SURVEY_TYPE_PHYSICAL).Count(&physicalSurveyTotal)
- // if physicalSurveyTotal > 0 {
- // return &response.ErrCode{
- // Code: response.ERROR,
- // Msg: "当前已设置有定制体检,请先修改原问卷的类型后再添加",
- // }
- // }
- // }
- surveyModel := &model.Survey{
- Name: surveyForm.Name,
- Cover: surveyForm.Cover,
- SurveyCode: surveyForm.SurveyCode,
- Type: surveyForm.Type,
- Status: model.SURVEY_STATUS_ENABLE,
- }
- err := model.DB.Create(surveyModel).Error
- if err != nil {
- return &response.ErrCode{
- Code: response.ERROR,
- Msg: "创建问卷失败",
- }
- }
- return nil
- }
- // 修改问卷
- func Update(surveyForm *validators.Survey) *response.ErrCode {
- if surveyForm.ID == "" {
- return &response.ErrCode{
- Code: response.ERROR,
- Msg: "问卷编号不能为空",
- }
- }
- // 获取问卷信息
- surveyModel, errCode := FindBySn(surveyForm.ID)
- if errCode != nil {
- return errCode
- }
- // 如果没有SurveyCode,表示是默认值,不允许修改类型、模型编号
- if surveyModel.SurveyCode == "" {
- if surveyForm.Type != surveyModel.Type {
- return &response.ErrCode{
- Code: response.ERROR,
- Msg: "问卷类型不允许修改",
- }
- }
- if surveyForm.SurveyCode != "" {
- return &response.ErrCode{
- Code: response.ERROR,
- Msg: "问卷模型编号不允许修改",
- }
- }
- }
- // // 如果是定制体检,要禁止他创建多个
- // if surveyForm.Type == model.SURVEY_TYPE_PHYSICAL {
- // // 检查是否有定制体检
- // var physicalSurveyTotal int64
- // model.DB.Model(&model.Survey{}).Where("type = ? and sn != ?", model.SURVEY_TYPE_PHYSICAL, surveyForm.ID).Count(&physicalSurveyTotal)
- // if physicalSurveyTotal > 0 {
- // return &response.ErrCode{
- // Code: response.ERROR,
- // Msg: "当前已设置有定制体检,请先修改原问卷的类型后再添加",
- // }
- // }
- // }
- err := model.DB.Model(model.Survey{}).Where("id = ?", surveyModel.ID).Select("name", "cover", "survey_code", "type").Updates(map[string]any{
- "name": surveyForm.Name,
- "cover": surveyForm.Cover,
- "survey_code": surveyForm.SurveyCode,
- "type": surveyForm.Type,
- }).Error
- if err != nil {
- return &response.ErrCode{
- Code: response.ERROR,
- Msg: "修改问卷失败",
- }
- }
- return nil
- }
- // 获取问卷信息
- func Find(id int64) (*model.Survey, *response.ErrCode) {
- var surveyModel model.Survey
- err := model.DB.Where("id = ?", id).First(&surveyModel).Error
- if err != nil {
- return nil, &response.ErrCode{
- Code: response.ERROR,
- Msg: "获取问卷信息失败",
- }
- }
- return &surveyModel, nil
- }
- // 通过编号获取问卷信息
- func FindBySn(sn string) (*model.Survey, *response.ErrCode) {
- var surveyModel model.Survey
- err := model.DB.Where("sn = ?", sn).First(&surveyModel).Error
- if err != nil {
- return nil, &response.ErrCode{
- Code: response.ERROR,
- Msg: "获取问卷信息失败",
- }
- }
- return &surveyModel, nil
- }
- // 修改备注
- func UpdateRemark(sn string, remark string) *response.ErrCode {
- // 检查是否存在
- _, errCode := FindBySn(sn)
- if errCode != nil {
- return errCode
- }
- err := model.DB.Model(&model.Survey{}).Where("sn = ?", sn).Update("remark", remark).Error
- if err != nil {
- return &response.ErrCode{
- Code: response.ERROR,
- Msg: "修改备注失败",
- }
- }
- return nil
- }
- // 修改状态
- func UpdateStatus(sn string, status int) *response.ErrCode {
- if status != model.SURVEY_STATUS_ENABLE && status != model.SURVEY_STATUS_DISABLE {
- return &response.ErrCode{
- Code: response.ERROR,
- Msg: "状态不在许可范围内",
- }
- }
- // 检查是否存在
- _, errCode := FindBySn(sn)
- if errCode != nil {
- return errCode
- }
- err := model.DB.Model(&model.Survey{}).Where("sn = ?", sn).Update("status", status).Error
- if err != nil {
- return &response.ErrCode{
- Code: response.ERROR,
- Msg: "修改状态失败",
- }
- }
- return nil
- }
- // 获取列表
- func List(key string, surveyCode string, status int) []*model.Survey {
- var surveyModels []*model.Survey
- query := model.DB.Model(&model.Survey{})
- if key != "" {
- query = query.Where("name like @key or remark like @key", map[string]any{
- "key": "%" + key + "%",
- })
- }
- if surveyCode != "" {
- query = query.Where("survey_code = ?", surveyCode)
- }
- if status != 0 {
- query = query.Where("status = ?", status)
- }
- query.Order("id desc").Find(&surveyModels)
- return surveyModels
- }
- // 分页获取列表
- func Paginate(page, pageSize int, key string, surveyCode string, status int) ([]*model.Survey, int64) {
- var surveyModels []*model.Survey
- var total int64
- query := model.DB.Model(&model.Survey{})
- if key != "" {
- query = query.Where("name like @key or remark like @key", map[string]any{
- "key": "%" + key + "%",
- })
- }
- if surveyCode != "" {
- query = query.Where("survey_code = ?", surveyCode)
- }
- if status != 0 {
- query = query.Where("status = ?", status)
- }
- query.Count(&total)
- query.Scopes(model.Paginate(page, pageSize)).Order("id desc").Find(&surveyModels)
- return surveyModels, total
- }
- // 格式化
- func Format(surveyModel *model.Survey) *validators.Survey {
- return &validators.Survey{
- ID: surveyModel.SN,
- Name: surveyModel.Name,
- Cover: surveyModel.Cover,
- SurveyCode: surveyModel.SurveyCode,
- Status: surveyModel.Status,
- Remark: surveyModel.Remark,
- Type: surveyModel.Type,
- CreatedAt: carbon.Time2Carbon(surveyModel.CreatedAt).Format("Y/m/d H:i:s"),
- UpdatedAt: carbon.Time2Carbon(surveyModel.UpdatedAt).Format("Y/m/d H:i:s"),
- }
- }
|