verify.go 6.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. package verify
  2. import (
  3. "errors"
  4. "spaceofcheng/services/models"
  5. "spaceofcheng/services/models/model"
  6. "spaceofcheng/services/utils"
  7. "strconv"
  8. "strings"
  9. "github.com/go-xorm/xorm"
  10. )
  11. // VerifyDAO 当前数据库操作对象
  12. type VerifyDAO struct {
  13. ctx *utils.Context
  14. db *xorm.Session
  15. }
  16. // NewVerifyDAO New Inst
  17. func NewVerifyDAO(ctx *utils.Context) *VerifyDAO {
  18. return &VerifyDAO{
  19. ctx: ctx,
  20. db: ctx.DB,
  21. }
  22. }
  23. type MyCourse struct {
  24. model.TaCustomerCourseDetail `xorm:"extends"`
  25. CaseName string
  26. DetailName string
  27. LocationName string
  28. CustomerId string
  29. }
  30. func (m *VerifyDAO) GetCustomerCourseDetailById(id string) (*model.TaCustomerCourseDetail, error) {
  31. var customerCourseDerail []model.TaCustomerCourseDetail
  32. err := m.db.Where("customer_detail_id =?", id).Find(&customerCourseDerail)
  33. if err != nil {
  34. return nil, err
  35. }
  36. if len(customerCourseDerail) > 0 {
  37. return &customerCourseDerail[0], nil
  38. }
  39. return nil, nil
  40. }
  41. // GetCustomerCourseList 根据我的课程id获取我的课程详情
  42. func (m *VerifyDAO) GetCustomerCourseList(customerCourseId, caseids string, page int, pageSize int) ([]MyCourse, error) {
  43. var courseList []MyCourse
  44. sql := `SELECT
  45. a.*,
  46. d.case_name,
  47. c.detail_name,
  48. f.location_name,
  49. b.customer_id
  50. FROM
  51. ta_customer_course_detail a
  52. INNER JOIN ta_customer_course b ON a.customer_course_id = b.customer_course_id
  53. INNER JOIN ta_course_detail c ON c.detail_id = a.detail_id
  54. INNER JOIN sys_case d ON d.case_id = a.case_id
  55. LEFT JOIN td_cms_image_location f on b.location_id=f.location_id
  56. WHERE DATE_FORMAT(a.start_date,'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d')
  57. AND a.customer_course_id = '` + customerCourseId + `'
  58. and b.case_id in ('` + strings.Replace(caseids, ",", "','", -1) + `')`
  59. sql = sql + " limit " + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
  60. err := m.db.Sql(sql).Find(&courseList)
  61. return courseList, err
  62. }
  63. // GetCustomerCourseListCount 根据我的课程id获取我的课程详情数量
  64. func (m *VerifyDAO) GetCustomerCourseListCount(customerCourseId, caseids string) (int, error) {
  65. var courseList []MyCourse
  66. sql := `SELECT
  67. a.*,
  68. d.case_name,
  69. c.detail_name
  70. FROM
  71. ta_customer_course_detail a
  72. INNER JOIN ta_customer_course b ON a.customer_course_id = b.customer_course_id
  73. INNER JOIN ta_course_detail c ON c.detail_id = a.detail_id
  74. INNER JOIN sys_case d ON d.case_id = a.case_id
  75. WHERE DATE_FORMAT(a.start_date,'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d')
  76. AND a.customer_course_id = '` + customerCourseId + `'
  77. and b.case_id in ('` + strings.Replace(caseids, ",", "','", -1) + `')`
  78. err := m.db.Sql(sql).Find(&courseList)
  79. return len(courseList), err
  80. }
  81. // UpdateCustomerCourseDetail 更新我的课程详情
  82. func (m *VerifyDAO) UpdateCustomerCourseDetail(customerCourse *model.TaCustomerCourseDetail) error {
  83. var cols = []string{
  84. "verify_status",
  85. "verify_date",
  86. "verify_user",
  87. }
  88. _, err := m.db.Cols(cols...).Where("customer_detail_id=?", customerCourse.CustomerDetailId).Update(customerCourse)
  89. return err
  90. }
  91. // GetCustomerCourseListByTel 根据客户电话获取我的课程详情
  92. func (m *VerifyDAO) GetCustomerCourseListByTel(tel, caseids string, page, pageSize int) ([]MyCourse, error) {
  93. var courseList []MyCourse
  94. sql := `SELECT
  95. a.*,
  96. d.case_name,
  97. c.detail_name,
  98. f.location_name,
  99. b.customer_id
  100. FROM
  101. ta_customer_course_detail a
  102. INNER JOIN ta_customer_course b ON a.customer_course_id = b.customer_course_id
  103. INNER JOIN ta_course_detail c ON c.detail_id = a.detail_id
  104. INNER JOIN sys_case d ON d.case_id = a.case_id
  105. INNER JOIN ta_customer e ON b.customer_id = e.customer_id
  106. LEFT JOIN td_cms_image_location f on b.location_id=f.location_id
  107. WHERE DATE_FORMAT(a.start_date,'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d')
  108. AND e.phone = '` + tel + `'
  109. and b.case_id in ('` + strings.Replace(caseids, ",", "','", -1) + `')`
  110. sql = sql + " limit " + strconv.Itoa((page-1)*pageSize) + `, ` + strconv.Itoa(pageSize)
  111. err := m.db.Sql(sql).Find(&courseList)
  112. return courseList, err
  113. }
  114. // GetCustomerCourseListByTelCount 根据客户电话获取我的课程详情数量
  115. func (m *VerifyDAO) GetCustomerCourseListByTelCount(tel, caseids string) (int, error) {
  116. var courseList []MyCourse
  117. sql := `SELECT
  118. a.*,
  119. d.case_name,
  120. c.detail_name
  121. FROM
  122. ta_customer_course_detail a
  123. INNER JOIN ta_customer_course b ON a.customer_course_id = b.customer_course_id
  124. INNER JOIN ta_course_detail c ON c.detail_id = a.detail_id
  125. INNER JOIN sys_case d ON d.case_id = a.case_id
  126. INNER JOIN ta_customer e ON b.customer_id = e.customer_id
  127. WHERE DATE_FORMAT(a.start_date,'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d')
  128. AND e.phone = '` + tel + `'
  129. and b.case_id in ('` + strings.Replace(caseids, ",", "','", -1) + `')`
  130. err := m.db.Sql(sql).Find(&courseList)
  131. return len(courseList), err
  132. }
  133. // UpdateCustomerCard 更新客户体验卡
  134. func (m *VerifyDAO) UpdateCustomerCard(customerCard *model.TaCustomerCard) error {
  135. var cols = []string{
  136. "verify_date",
  137. "verify_status",
  138. "status",
  139. }
  140. _, err := m.db.Cols(cols...).Where("customer_card_id=?", customerCard.CustomerCardId).Update(customerCard)
  141. return err
  142. }
  143. // UpdateCustomerCourse 更新我的课程
  144. func (m *VerifyDAO) UpdateCustomerCourse(customerCourse *model.TaCustomerCourse) error {
  145. var cols = []string{
  146. "join_num",
  147. "is_done",
  148. }
  149. _, err := m.db.Cols(cols...).Where("customer_course_id=?", customerCourse.CustomerCourseId).Update(customerCourse)
  150. return err
  151. }
  152. // GetCustomerCardByDetailId 根据我的课程详情ID查询用户体验卡
  153. func (m *VerifyDAO) GetCustomerCardByDetailId(detailId string) (*model.TaCustomerCard, error) {
  154. var customerCard []model.TaCustomerCard
  155. sql := `SELECT
  156. a.*
  157. FROM
  158. ta_customer_card a
  159. INNER JOIN ta_customer_course b ON a.customer_card_id = b.source_id
  160. INNER JOIN ta_customer_course_detail c ON c.customer_course_id = b.customer_course_id
  161. WHERE b.course_obtaim_type = 'card'
  162. and c.customer_detail_id = '` + detailId + `'`
  163. err := m.db.Sql(sql).Find(&customerCard)
  164. return &customerCard[0], err
  165. }
  166. // GetCustomerCourseByDetailId 根据我的课程详情ID查询我的课程
  167. func (m *VerifyDAO) GetCustomerCourseByDetailId(detailId string) (*model.TaCustomerCourse, error) {
  168. var customerCard []model.TaCustomerCourse
  169. sql := `SELECT
  170. a.*
  171. FROM
  172. ta_customer_course a
  173. INNER JOIN ta_customer_course_detail b ON a.customer_course_id = b.customer_course_id
  174. WHERE
  175. b.customer_detail_id = '` + detailId + `'`
  176. err := m.db.Sql(sql).Find(&customerCard)
  177. return &customerCard[0], err
  178. }
  179. // GetCustomerCourseIdByQrcode 根据QRcode
  180. func (m *VerifyDAO) GetCustomerCourseIdByQrcode(qrcode string) (string, error) {
  181. var customerQrcode []model.TaCustomerCourseQrcode
  182. err := m.db.Where("customer_qrcode = ?", qrcode).And("status > ?", models.STATUS_DEL).Find(&customerQrcode)
  183. if err != nil {
  184. return "", err
  185. }
  186. if len(customerQrcode) > 0 {
  187. return customerQrcode[0].CustomerCourseId, nil
  188. }
  189. return "", errors.New("无效二维码")
  190. }