package message import ( "spaceofcheng/services/models" "spaceofcheng/services/models/course" "spaceofcheng/services/models/model" "spaceofcheng/services/utils" "strconv" "strings" "time" "github.com/astaxie/beego" ) // CmsCaseInfo 项目专题 type CmsCaseInfo struct { model.TaCmsCase `xorm:"extends"` CaseName string } const ( STATUS_NOSHOW = 0 ) // GetCmsCaseList 获取项目专题列表 func (m *MessageDAO) GetCmsCaseList(name, caseids, userid string, page int, pageSize int) ([]CmsCaseInfo, error) { var cases []CmsCaseInfo sql := `select a.*, (case when a.case_id='all' then '所有案场' else b.case_name end) case_name from ta_cms_case a LEFT join sys_case b on a.case_id = b.case_id where (a.case_id in ('` + strings.Replace(caseids, ",", "','", -1) + `') OR (a.create_user='` + userid + `' and a.case_id='all')) and a.name like '%` + name + `%' and a.status > ` + strconv.Itoa(models.STATUS_DEL) + ` and (b.status > ` + strconv.Itoa(models.STATUS_DEL) + ` or a.case_id='all') order by create_date desc limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize) err := m.db.Sql(sql).Find(&cases) return cases, err } // GetCmsCaseByOrg 获取列表 func (m *MessageDAO) GetCmsCaseByOrg(orgid string) ([]CmsCase, error) { var cases []CmsCase sql := `select a.*,b.coordinate,b.case_address from ta_cms_case a left join sys_case b on a.case_id = b.case_id where a.org_id='` + orgid + `' and a.status=` + strconv.Itoa(models.STATUS_NORMAL) + ` order by a.create_date desc` err := m.db.Sql(sql).Find(&cases) beego.Error(sql) // err := m.db.Where("org_id=?", orgid).Find(&cases) return cases, err } // GetCmsCaseListCount 获取项目专题Count func (m *MessageDAO) GetCmsCaseListCount(name, caseids, userid string) (int, error) { var cases []CmsCaseInfo sql := `select a.*, (case when a.case_id='all' then '所有案场' else b.case_name end) case_name from ta_cms_case a LEFT join sys_case b on a.case_id = b.case_id where(a.case_id in ('` + strings.Replace(caseids, ",", "','", -1) + `') OR (a.create_user='` + userid + `' and a.case_id='all')) and a.name like '%` + name + `%' and a.status > ` + strconv.Itoa(models.STATUS_DEL) + ` and (b.status > ` + strconv.Itoa(models.STATUS_DEL) + ` or a.case_id='all')` err := m.db.Sql(sql).Find(&cases) if err != nil { return 0, err } return len(cases), nil } // CmsCase 项目详情 type CmsCase struct { model.TaCmsCase `xorm:"extends"` CaseAddress string Coordinate string Courses []course.CourseDetail CmsCaseImgs []model.TaCmsCaseImage } // GetCmsCaseByID 获取项目专题详情 func (m *MessageDAO) GetCmsCaseByID(cmscaseid string) (*CmsCase, error) { var cases []CmsCase sql := `select a.*,b.case_address from ta_cms_case a left join sys_case b on a.case_id=b.case_id where a.cms_case_id='` + cmscaseid + `' and (b.status>` + strconv.Itoa(models.STATUS_DEL) + ` or a.case_id='all') and a.status>` + strconv.Itoa(models.STATUS_DEL) err := m.db.Sql(sql).Find(&cases) if err != nil { beego.Error(err) return nil, err } if len(cases) > 0 { return &cases[0], nil } return nil, nil } // GetCoursesByCmsCase 根据项目专题ID获取课程信息 func (m *MessageDAO) GetCoursesByCmsCase(cmscaseid string) ([]course.CourseDetail, error) { var course []course.CourseDetail sql := `select a.* from ta_course a inner join ta_cms_case_course b on a.course_id=b.course_id where a.status>` + strconv.Itoa(models.STATUS_DEL) + ` and b.cms_case_id = ?` err := m.db.Sql(sql, cmscaseid).Find(&course) return course, err } // GetCmsCaseImgs 根据项目专题ID获取课程图片 func (m *MessageDAO) GetCmsCaseImgs(cmscaseid string) ([]model.TaCmsCaseImage, error) { var imgs []model.TaCmsCaseImage err := m.db.Where("cms_case_id=?", cmscaseid).And("status>" + strconv.Itoa(models.STATUS_DEL)).Asc("sort").Find(&imgs) return imgs, err } // GetCourseByCaseID 根据案场ID获取所有的课程信息 func (m *MessageDAO) GetCourseByCaseID(caseid string) ([]course.CourseDetail, error) { var course []course.CourseDetail sql := `select * from ta_course where status = ` + strconv.Itoa(models.STATUS_NORMAL) + ` and case_id=?` err := m.db.Sql(sql, caseid).Find(&course) return course, err } // GetCourseByOrgID 根据机构id获取所有课程信息 func (m *MessageDAO) GetCourseByOrgID(orgid string) ([]course.CourseDetail, error) { var course []course.CourseDetail sql := `select * from ta_course where status = ` + strconv.Itoa(models.STATUS_NORMAL) + ` and org_id=?` err := m.db.Sql(sql, orgid).Find(&course) return course, err } // AddCmsCase 新增项目专题 func (m *MessageDAO) AddCmsCase(cmscase model.TaCmsCase) (*model.TaCmsCase, error) { cmscase.CreateDate = time.Now() cmscase.CmsCaseId = utils.GetGUID() user := m.ctx.Get("user").(model.SysUser) cmscase.CreateUser = user.UserId _, err := m.db.Insert(cmscase) return &cmscase, err } // UpdateCmsCase 修改项目专题 func (m *MessageDAO) UpdateCmsCase(cmscase model.TaCmsCase) error { var col = []string{ "name", "title", "detail_content", "is_all_course", "status", "sort", "case_id", } _, err := m.db.Cols(col...).Where("cms_case_id=?", cmscase.CmsCaseId).Update(cmscase) return err } // DelCmsCase 删除项目专题 func (m *MessageDAO) DelCmsCase(cmscaseid string) error { var cmscase = model.TaCmsCase{} cmscase.Status = models.STATUS_DEL cmscase.CmsCaseId = cmscaseid var cols = []string{ "status", } _, err := m.db.Cols(cols...).Where("cms_case_id=?", cmscase.CmsCaseId).Update(cmscase) return err } // DelCmsCaseCourse 删除项目专题对应的课程 func (m *MessageDAO) DelCmsCaseCourse(cmscaseid string) error { sql := "delete from ta_cms_case_course where cms_case_id='" + cmscaseid + "'" _, err := m.db.Exec(sql) return err } // SaveCmsCaseCourse 保存项目对应的课程 func (m *MessageDAO) SaveCmsCaseCourse(cmscaseid, courseids string) error { sql := `insert into ta_cms_case_course(cms_case_id,course_id) select '` + cmscaseid + `', course_id from ta_course where course_id in ('` + strings.Replace(courseids, ",", "','", -1) + `') and status > ` + strconv.Itoa(models.STATUS_DEL) _, err := m.db.Exec(sql) return err } // DelCmsCaseImg 删除项目专题对应的图片 func (m *MessageDAO) DelCmsCaseImg(cmscaseid string) error { sql := "delete from ta_cms_case_image where cms_case_id='" + cmscaseid + "'" _, err := m.db.Exec(sql) return err } // SaveCmsCaseImg 保存项目专题对应的图片 func (m *MessageDAO) SaveCmsCaseImg(img model.TaCmsCaseImage) error { img.CmsCaseImageId = utils.GetGUID() img.Status = models.STATUS_NORMAL _, err := m.db.Insert(img) return err } // CmsCaseShow 前台展示 func (m *MessageDAO) CmsCaseShow(cmscaseid string) error { var cmscase = model.TaCmsCase{} cmscase.Status = models.STATUS_NORMAL cmscase.CmsCaseId = cmscaseid var cols = []string{ "status", } _, err := m.db.Cols(cols...).Where("cms_case_id=?", cmscase.CmsCaseId).Update(cmscase) return err } // CmsCaseHide 前台隐藏 func (m *MessageDAO) CmsCaseHide(cmscaseid string) error { var cmscase = model.TaCmsCase{} cmscase.Status = STATUS_NOSHOW cmscase.CmsCaseId = cmscaseid var cols = []string{ "status", } _, err := m.db.Cols(cols...).Where("cms_case_id=?", cmscase.CmsCaseId).Update(cmscase) return err }