activity_attendance_detail.go 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  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. UseridEntity int `description:"参会者身份. 1:主讲人, 2:主持人, 3:嘉宾, 4:普通参会者, 5:联席主讲人, 6:会议助理"`
  25. ActivityTime string `description:"活动时间"`
  26. CrmCompanyMapStatusId int `description:"转换后的对应状态信息:1=正式客户, 2=曾使用客户, 3=其他"`
  27. }
  28. //添加会议提醒信息
  29. func AddCygxActivityAttendanceDetail(item *CygxActivityAttendanceDetail) (lastId int64, err error) {
  30. o, err := orm.NewOrm().Begin()
  31. defer func() {
  32. fmt.Println(err)
  33. if err == nil {
  34. o.Commit()
  35. } else {
  36. o.Rollback()
  37. }
  38. }()
  39. var count int
  40. var countMySchedule int
  41. sql := `SELECT COUNT(1) AS count FROM cygx_my_schedule WHERE user_id=? AND activity_id=? `
  42. err = o.Raw(sql, item, item.ActivityId).QueryRow(&countMySchedule)
  43. if err != nil {
  44. return
  45. }
  46. if countMySchedule == 0 {
  47. itemMy := new(CygxMySchedule)
  48. itemMy.ActivityId = item.ActivityId
  49. itemMy.CreateTime = time.Now()
  50. itemMy.Mobile = item.Mobile
  51. itemMy.CompanyId = item.CompanyId
  52. itemMy.CompanyName = item.CompanyName
  53. lastId, err = o.Insert(itemMy)
  54. if err != nil {
  55. return
  56. }
  57. }
  58. sql = `SELECT COUNT(1) AS count FROM cygx_activity_meeting_reminder WHERE user_id=? AND activity_id=? `
  59. err = o.Raw(sql, item, item.ActivityId).QueryRow(&count)
  60. if err != nil {
  61. return
  62. }
  63. if count > 0 {
  64. sql := `UPDATE cygx_activity_meeting_reminder SET is_cancel = 0 WHERE user_id=? AND activity_id=? `
  65. _, err = o.Raw(sql, item, item.ActivityId).Exec()
  66. } else {
  67. lastId, err = o.Insert(item)
  68. }
  69. itemLog := new(CygxActivityMeetingReminderLog)
  70. //itemLog.UserId = item.UserId
  71. itemLog.ActivityId = item.ActivityId
  72. itemLog.CreateTime = time.Now()
  73. itemLog.Mobile = item.Mobile
  74. //itemLog.Email = item.Email
  75. itemLog.CompanyId = item.CompanyId
  76. itemLog.CompanyName = item.CompanyName
  77. itemLog.Type = 1
  78. lastId, err = o.Insert(itemLog)
  79. return
  80. }
  81. type RoadshowData struct {
  82. Id int `orm:"column(id);pk;"description:"主键ID"`
  83. Company string `description:"公司名称"`
  84. UserName string `description:"用户名"`
  85. UserPhone string `description:"手机号"`
  86. UserinfoUource string `description:"用户来源"`
  87. AuthInfo string `description:"用户参会鉴权"`
  88. GuestUsername string `description:"嘉宾名称, 多个用,隔开"`
  89. FirstWatchTime string `description:"首次观看时间"`
  90. LastWatchTime string `description:"最后观看时间"`
  91. RoadshowId string `description:"路演ID"`
  92. RoadshowTitle string `description:"路演标题"`
  93. RoadshowBeginTime string `description:"路演开始时间"`
  94. RoadshowEndTime string `description:"路演结束时间"`
  95. JoinTime int `description:"参与时长"`
  96. JoinType int `description:"参与方式, 1网络, 2电话"`
  97. DataType int `description:"数据类型: 1直播, 2回放"`
  98. Occupation string `description:"职位"`
  99. UseridEntity int `description:"参会者身份. 1:主讲人, 2:主持人, 3:嘉宾, 4:普通参会者, 5:联席主讲人, 6:会议助理"`
  100. CrmCompanyMapStatusId int `description:"转换后的对应状态信息:1=正式客户, 2=曾使用客户, 3=其他"`
  101. }
  102. func AddAttendancDetail(items []*CygxActivityAttendanceDetail, activityId int, mobileStr string) (err error) {
  103. o := orm.NewOrm()
  104. //修改活动是否上传到会信息字段
  105. sql := `UPDATE cygx_activity SET is_submit_meeting=1 WHERE activity_id=? `
  106. _, err = o.Raw(sql, activityId).Exec()
  107. if err != nil {
  108. return
  109. }
  110. //修改单个报名信息是否到会
  111. sql = `UPDATE cygx_activity_signup SET is_meeting=0 WHERE activity_id=? `
  112. _, err = o.Raw(sql, activityId).Exec()
  113. if err != nil {
  114. return
  115. }
  116. sql = `UPDATE cygx_activity_signup SET is_meeting=1 WHERE activity_id=? AND outbound_mobile IN (` + mobileStr + `)`
  117. _, err = o.Raw(sql, activityId).Exec()
  118. if err != nil {
  119. return
  120. }
  121. //二次上传时删除原有数据
  122. sql = ` DELETE FROM cygx_activity_attendance_detail WHERE activity_id = ?`
  123. _, err = o.Raw(sql, activityId).Exec()
  124. if err != nil {
  125. return
  126. }
  127. //
  128. ////插入提交信息
  129. //for _, v := range items {
  130. // _, err = o.Insert(v)
  131. // if err != nil {
  132. // return
  133. // }
  134. //}
  135. _, err = o.InsertMulti(1, items)
  136. return
  137. }
  138. //获取用户参会列表
  139. func GetRoadshowDataList(title, findStartDate, findEndDate string) (list []*RoadshowData, err error) {
  140. o := orm.NewOrmUsingDB("comein_data")
  141. sql := `SELECT * FROM roadshow_data WHERE roadshow_title LIKE '%` + title + `%' AND roadshow_begin_time >= '` + findStartDate + `' AND roadshow_begin_time <= '` + findEndDate + `'`
  142. _, err = o.Raw(sql).QueryRows(&list)
  143. return
  144. }
  145. //获取这个时段内的进门财经参会活动
  146. func GetRoadshowDataListByDateTime(findStartDate, findEndDate string) (list []*RoadshowData, err error) {
  147. o := orm.NewOrmUsingDB("comein_data")
  148. sql := `SELECT * FROM roadshow_data WHERE roadshow_begin_time >= '` + findStartDate + `' AND roadshow_begin_time <= '` + findEndDate + `' GROUP BY roadshow_title `
  149. _, err = o.Raw(sql).QueryRows(&list)
  150. return
  151. }
  152. type WxUserOutboundMobile struct {
  153. RealName string `description:"姓名"`
  154. Mobile string `description:"手机号"`
  155. OutboundMobile string `description:"外呼手机号"`
  156. CompanyId int `description:"公司ID"`
  157. CompanyName string `description:"公司名称"`
  158. SellerName string `description:"所属销售"`
  159. }
  160. func GetWxUserOutboundMobile(mobileStr string) (item []*WxUserOutboundMobile, err error) {
  161. o := orm.NewOrm()
  162. 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
  163. FROM wx_user as u
  164. INNER JOIN company_product AS p ON p.company_id = u.company_id
  165. WHERE outbound_mobile IN (` + mobileStr + `) OR mobile IN (` + mobileStr + `) GROUP BY u.user_id`
  166. _, err = o.Raw(sql).QueryRows(&item)
  167. return
  168. }
  169. //我的日程列表
  170. func GetActivityAttendanceDetailList(activityIds string) (items []*CygxActivityAttendanceDetail, err error) {
  171. o := orm.NewOrm()
  172. sql := `SELECT * FROM cygx_activity_attendance_detail WHERE activity_id IN (` + activityIds + `) `
  173. _, err = o.Raw(sql).QueryRows(&items)
  174. return
  175. }
  176. //我的日程列表
  177. func GetActivityAttendanceDetailListAll() (items []*CygxActivityAttendanceDetail, err error) {
  178. o := orm.NewOrm()
  179. sql := `SELECT * FROM cygx_activity_attendance_detail WHERE activity_id >= 1000 ORDER BY activity_id ASC `
  180. _, err = o.Raw(sql).QueryRows(&items)
  181. return
  182. }