cmscase.go 7.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. package message
  2. import (
  3. "spaceofcheng/services/models"
  4. "spaceofcheng/services/models/course"
  5. "spaceofcheng/services/models/model"
  6. "spaceofcheng/services/utils"
  7. "strconv"
  8. "strings"
  9. "time"
  10. "github.com/astaxie/beego"
  11. )
  12. // CmsCaseInfo 项目专题
  13. type CmsCaseInfo struct {
  14. model.TaCmsCase `xorm:"extends"`
  15. CaseName string
  16. }
  17. const (
  18. STATUS_NOSHOW = 0
  19. )
  20. // GetCmsCaseList 获取项目专题列表
  21. func (m *MessageDAO) GetCmsCaseList(name, caseids, userid string, page int, pageSize int) ([]CmsCaseInfo, error) {
  22. var cases []CmsCaseInfo
  23. 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
  24. 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) + `
  25. and (b.status > ` + strconv.Itoa(models.STATUS_DEL) + ` or a.case_id='all')
  26. order by create_date desc limit ` + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
  27. err := m.db.Sql(sql).Find(&cases)
  28. return cases, err
  29. }
  30. // GetCmsCaseByOrg 获取列表
  31. func (m *MessageDAO) GetCmsCaseByOrg(orgid string) ([]CmsCase, error) {
  32. var cases []CmsCase
  33. 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`
  34. err := m.db.Sql(sql).Find(&cases)
  35. beego.Error(sql)
  36. // err := m.db.Where("org_id=?", orgid).Find(&cases)
  37. return cases, err
  38. }
  39. // GetCmsCaseListCount 获取项目专题Count
  40. func (m *MessageDAO) GetCmsCaseListCount(name, caseids, userid string) (int, error) {
  41. var cases []CmsCaseInfo
  42. 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
  43. where(a.case_id in ('` + strings.Replace(caseids, ",", "','", -1) + `') OR (a.create_user='` + userid + `' and a.case_id='all')) and a.name like '%` + name + `%'
  44. and a.status > ` + strconv.Itoa(models.STATUS_DEL) + ` and (b.status > ` + strconv.Itoa(models.STATUS_DEL) + ` or a.case_id='all')`
  45. err := m.db.Sql(sql).Find(&cases)
  46. if err != nil {
  47. return 0, err
  48. }
  49. return len(cases), nil
  50. }
  51. // CmsCase 项目详情
  52. type CmsCase struct {
  53. model.TaCmsCase `xorm:"extends"`
  54. CaseAddress string
  55. Coordinate string
  56. Courses []course.CourseDetail
  57. CmsCaseImgs []model.TaCmsCaseImage
  58. }
  59. // GetCmsCaseByID 获取项目专题详情
  60. func (m *MessageDAO) GetCmsCaseByID(cmscaseid string) (*CmsCase, error) {
  61. var cases []CmsCase
  62. 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)
  63. err := m.db.Sql(sql).Find(&cases)
  64. if err != nil {
  65. beego.Error(err)
  66. return nil, err
  67. }
  68. if len(cases) > 0 {
  69. return &cases[0], nil
  70. }
  71. return nil, nil
  72. }
  73. // GetCoursesByCmsCase 根据项目专题ID获取课程信息
  74. func (m *MessageDAO) GetCoursesByCmsCase(cmscaseid string) ([]course.CourseDetail, error) {
  75. var course []course.CourseDetail
  76. 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 = ?`
  77. err := m.db.Sql(sql, cmscaseid).Find(&course)
  78. return course, err
  79. }
  80. // GetCmsCaseImgs 根据项目专题ID获取课程图片
  81. func (m *MessageDAO) GetCmsCaseImgs(cmscaseid string) ([]model.TaCmsCaseImage, error) {
  82. var imgs []model.TaCmsCaseImage
  83. err := m.db.Where("cms_case_id=?", cmscaseid).And("status>" + strconv.Itoa(models.STATUS_DEL)).Asc("sort").Find(&imgs)
  84. return imgs, err
  85. }
  86. // GetCourseByCaseID 根据案场ID获取所有的课程信息
  87. func (m *MessageDAO) GetCourseByCaseID(caseid string) ([]course.CourseDetail, error) {
  88. var course []course.CourseDetail
  89. sql := `select * from ta_course where status = ` + strconv.Itoa(models.STATUS_NORMAL) + ` and case_id=?`
  90. err := m.db.Sql(sql, caseid).Find(&course)
  91. return course, err
  92. }
  93. // GetCourseByOrgID 根据机构id获取所有课程信息
  94. func (m *MessageDAO) GetCourseByOrgID(orgid string) ([]course.CourseDetail, error) {
  95. var course []course.CourseDetail
  96. sql := `select * from ta_course where status = ` + strconv.Itoa(models.STATUS_NORMAL) + ` and org_id=?`
  97. err := m.db.Sql(sql, orgid).Find(&course)
  98. return course, err
  99. }
  100. // AddCmsCase 新增项目专题
  101. func (m *MessageDAO) AddCmsCase(cmscase model.TaCmsCase) (*model.TaCmsCase, error) {
  102. cmscase.CreateDate = time.Now()
  103. cmscase.CmsCaseId = utils.GetGUID()
  104. user := m.ctx.Get("user").(model.SysUser)
  105. cmscase.CreateUser = user.UserId
  106. _, err := m.db.Insert(cmscase)
  107. return &cmscase, err
  108. }
  109. // UpdateCmsCase 修改项目专题
  110. func (m *MessageDAO) UpdateCmsCase(cmscase model.TaCmsCase) error {
  111. var col = []string{
  112. "name",
  113. "title",
  114. "detail_content",
  115. "is_all_course",
  116. "status",
  117. "sort",
  118. "case_id",
  119. }
  120. _, err := m.db.Cols(col...).Where("cms_case_id=?", cmscase.CmsCaseId).Update(cmscase)
  121. return err
  122. }
  123. // DelCmsCase 删除项目专题
  124. func (m *MessageDAO) DelCmsCase(cmscaseid string) error {
  125. var cmscase = model.TaCmsCase{}
  126. cmscase.Status = models.STATUS_DEL
  127. cmscase.CmsCaseId = cmscaseid
  128. var cols = []string{
  129. "status",
  130. }
  131. _, err := m.db.Cols(cols...).Where("cms_case_id=?", cmscase.CmsCaseId).Update(cmscase)
  132. return err
  133. }
  134. // DelCmsCaseCourse 删除项目专题对应的课程
  135. func (m *MessageDAO) DelCmsCaseCourse(cmscaseid string) error {
  136. sql := "delete from ta_cms_case_course where cms_case_id='" + cmscaseid + "'"
  137. _, err := m.db.Exec(sql)
  138. return err
  139. }
  140. // SaveCmsCaseCourse 保存项目对应的课程
  141. func (m *MessageDAO) SaveCmsCaseCourse(cmscaseid, courseids string) error {
  142. 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)
  143. _, err := m.db.Exec(sql)
  144. return err
  145. }
  146. // DelCmsCaseImg 删除项目专题对应的图片
  147. func (m *MessageDAO) DelCmsCaseImg(cmscaseid string) error {
  148. sql := "delete from ta_cms_case_image where cms_case_id='" + cmscaseid + "'"
  149. _, err := m.db.Exec(sql)
  150. return err
  151. }
  152. // SaveCmsCaseImg 保存项目专题对应的图片
  153. func (m *MessageDAO) SaveCmsCaseImg(img model.TaCmsCaseImage) error {
  154. img.CmsCaseImageId = utils.GetGUID()
  155. img.Status = models.STATUS_NORMAL
  156. _, err := m.db.Insert(img)
  157. return err
  158. }
  159. // CmsCaseShow 前台展示
  160. func (m *MessageDAO) CmsCaseShow(cmscaseid string) error {
  161. var cmscase = model.TaCmsCase{}
  162. cmscase.Status = models.STATUS_NORMAL
  163. cmscase.CmsCaseId = cmscaseid
  164. var cols = []string{
  165. "status",
  166. }
  167. _, err := m.db.Cols(cols...).Where("cms_case_id=?", cmscase.CmsCaseId).Update(cmscase)
  168. return err
  169. }
  170. // CmsCaseHide 前台隐藏
  171. func (m *MessageDAO) CmsCaseHide(cmscaseid string) error {
  172. var cmscase = model.TaCmsCase{}
  173. cmscase.Status = STATUS_NOSHOW
  174. cmscase.CmsCaseId = cmscaseid
  175. var cols = []string{
  176. "status",
  177. }
  178. _, err := m.db.Cols(cols...).Where("cms_case_id=?", cmscase.CmsCaseId).Update(cmscase)
  179. return err
  180. }