activity_attendance_detail.go 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. package models
  2. import (
  3. "fmt"
  4. "github.com/beego/beego/v2/client/orm"
  5. "time"
  6. )
  7. type CygxActivityAttendanceDetail struct {
  8. AttendanceId int `orm:"column(attendance_id);pk;"description:"主键ID"`
  9. ActivityId int `description:"活动ID"`
  10. RealName string `description:"姓名"`
  11. Mobile string `description:"手机号"`
  12. CompanyName string `description:"公司名称"`
  13. CompanyId int `description:"公司id 不在数据库的用户为0"`
  14. SellerName string `description:"销售姓名"`
  15. FirstMeetingTime string `description:"首次入会时间"`
  16. LastMeetingTime string `description:"最后退出时间"`
  17. Duration string `description:"参会时长"`
  18. MeetingTypeStr string `description:"参会方式"`
  19. MeetingAuthentication string `description:"参会权鉴"`
  20. MeetingStatusStr string `description:"参会状态"`
  21. CreateTime time.Time `description:"创建时间"`
  22. Position string `description:"职位"`
  23. IsMeetingStr int `description:"是否到会,1到会,0未到会"`
  24. }
  25. //添加会议提醒信息
  26. func AddCygxActivityAttendanceDetail(item *CygxActivityAttendanceDetail) (lastId int64, err error) {
  27. o := orm.NewOrm()
  28. tx, err := o.Begin()
  29. //o.Begin()
  30. //defer func() {
  31. // fmt.Println(err)
  32. // if err == nil {
  33. // o.C
  34. // } else {
  35. // o.Rollback()
  36. // }
  37. //}()
  38. defer func() {
  39. fmt.Println(err)
  40. if err == nil {
  41. tx.Commit()
  42. } else {
  43. tx.Rollback()
  44. }
  45. }()
  46. var count int
  47. var countMySchedule int
  48. sql := `SELECT COUNT(1) AS count FROM cygx_my_schedule WHERE user_id=? AND activity_id=? `
  49. err = o.Raw(sql, item, item.ActivityId).QueryRow(&countMySchedule)
  50. if err != nil {
  51. return
  52. }
  53. if countMySchedule == 0 {
  54. itemMy := new(CygxMySchedule)
  55. itemMy.ActivityId = item.ActivityId
  56. itemMy.CreateTime = time.Now()
  57. itemMy.Mobile = item.Mobile
  58. itemMy.CompanyId = item.CompanyId
  59. itemMy.CompanyName = item.CompanyName
  60. lastId, err = o.Insert(itemMy)
  61. if err != nil {
  62. return
  63. }
  64. }
  65. sql = `SELECT COUNT(1) AS count FROM cygx_activity_meeting_reminder WHERE user_id=? AND activity_id=? `
  66. err = o.Raw(sql, item, item.ActivityId).QueryRow(&count)
  67. if err != nil {
  68. return
  69. }
  70. if count > 0 {
  71. sql := `UPDATE cygx_activity_meeting_reminder SET is_cancel = 0 WHERE user_id=? AND activity_id=? `
  72. _, err = o.Raw(sql, item, item.ActivityId).Exec()
  73. } else {
  74. lastId, err = o.Insert(item)
  75. }
  76. itemLog := new(CygxActivityMeetingReminderLog)
  77. //itemLog.UserId = item.UserId
  78. itemLog.ActivityId = item.ActivityId
  79. itemLog.CreateTime = time.Now()
  80. itemLog.Mobile = item.Mobile
  81. //itemLog.Email = item.Email
  82. itemLog.CompanyId = item.CompanyId
  83. itemLog.CompanyName = item.CompanyName
  84. itemLog.Type = 1
  85. lastId, err = o.Insert(itemLog)
  86. return
  87. }
  88. type RoadshowData struct {
  89. Id int `orm:"column(id);pk;"description:"主键ID"`
  90. Company string `description:"公司名称"`
  91. UserName string `description:"用户名"`
  92. UserPhone string `description:"手机号"`
  93. UserinfoUource string `description:"用户来源"`
  94. AuthInfo string `description:"用户参会鉴权"`
  95. GuestUsername string `description:"嘉宾名称, 多个用,隔开"`
  96. FirstWatchTime string `description:"首次观看时间"`
  97. LastWatchTime string `description:"最后观看时间"`
  98. RoadshowId string `description:"路演ID"`
  99. RoadshowTitle string `description:"路演标题"`
  100. RoadshowBeginTime time.Time `description:"路演开始时间"`
  101. RoadshowEndTime time.Time `description:"路演结束时间"`
  102. JoinTime int `description:"参与时长"`
  103. JoinType int `description:"参与方式, 1网络, 2电话"`
  104. DataType int `description:"数据类型: 1直播, 2回放"`
  105. Occupation string `description:"职位"`
  106. }
  107. func AddAttendancDetail(items []*CygxActivityAttendanceDetail, activityId int, mobileStr string) (err error) {
  108. o := orm.NewOrm()
  109. //o.Begin()
  110. //defer func() {
  111. // fmt.Println(err)
  112. // if err == nil {
  113. // o.Commit()
  114. // } else {
  115. // o.Rollback()
  116. // }
  117. //}()
  118. //修改活动是否上传到会信息字段
  119. sql := `UPDATE cygx_activity SET is_submit_meeting=1 WHERE activity_id=? `
  120. _, err = o.Raw(sql, activityId).Exec()
  121. if err != nil {
  122. return
  123. }
  124. //修改单个报名信息是否到会
  125. sql = `UPDATE cygx_activity_signup SET is_meeting=0 WHERE activity_id=? `
  126. _, err = o.Raw(sql, activityId).Exec()
  127. if err != nil {
  128. return
  129. }
  130. sql = `UPDATE cygx_activity_signup SET is_meeting=1 WHERE activity_id=? AND outbound_mobile IN (` + mobileStr + `)`
  131. _, err = o.Raw(sql, activityId).Exec()
  132. if err != nil {
  133. return
  134. }
  135. //二次上传时删除原有数据
  136. sql = ` DELETE FROM cygx_activity_attendance_detail WHERE activity_id = ?`
  137. _, err = o.Raw(sql, activityId).Exec()
  138. if err != nil {
  139. return
  140. }
  141. //插入提交信息
  142. for _, v := range items {
  143. _, err = o.Insert(v)
  144. if err != nil {
  145. return
  146. }
  147. }
  148. return
  149. }
  150. //获取用户报名数量
  151. func GetRoadshowDataList(title, findStartDate, findEndDate string) (list []*RoadshowData, err error) {
  152. //o := orm.NewOrm()
  153. o := orm.NewOrmUsingDB("comein_data")
  154. //o.Using("comein_data")
  155. sql := `SELECT * FROM roadshow_data WHERE roadshow_title LIKE '%` + title + `%' AND roadshow_begin_time >= '` + findStartDate + `' AND roadshow_begin_time <= '` + findEndDate + `'`
  156. _, err = o.Raw(sql).QueryRows(&list)
  157. return
  158. }
  159. type WxUserOutboundMobile struct {
  160. RealName string `description:"姓名"`
  161. Mobile string `description:"手机号"`
  162. OutboundMobile string `description:"外呼手机号"`
  163. CompanyId int `description:"公司ID"`
  164. CompanyName string `description:"公司名称"`
  165. SellerName string `description:"所属销售"`
  166. }
  167. func GetWxUserOutboundMobile(mobileStr string) (item []*WxUserOutboundMobile, err error) {
  168. o := orm.NewOrm()
  169. sql := `SELECT u.real_name,u.mobile,u.outbound_mobile,u.company_id,p.company_name ,GROUP_CONCAT( DISTINCT p.seller_name SEPARATOR '/' ) AS seller_name
  170. FROM wx_user as u
  171. INNER JOIN company_product AS p ON p.company_id = u.company_id
  172. WHERE outbound_mobile IN (` + mobileStr + `) GROUP BY u.user_id`
  173. _, err = o.Raw(sql).QueryRows(&item)
  174. return
  175. }