activity_signin.go 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. package services
  2. import (
  3. "context"
  4. "errors"
  5. "fmt"
  6. "hongze/hongze_cygx/models"
  7. "hongze/hongze_cygx/utils"
  8. "strconv"
  9. "time"
  10. )
  11. // AddCygxActivitySigninLog 扫码签到日志记录
  12. func AddCygxActivitySigninLog(item *models.CygxActivitySignin) (err error) {
  13. defer func() {
  14. if err != nil {
  15. fmt.Println(err)
  16. go utils.SendAlarmMsg("扫码签到日志记录,失败,活动ID:"+strconv.Itoa(item.ActivityId)+err.Error(), 2)
  17. }
  18. }()
  19. //添加日志记录
  20. itemLog := new(models.CygxActivitySigninLog)
  21. itemLog.ActivityId = item.ActivityId
  22. itemLog.UserId = item.UserId
  23. itemLog.Mobile = item.Mobile
  24. itemLog.Email = item.Email
  25. itemLog.CompanyId = item.CompanyId
  26. itemLog.RealName = item.RealName
  27. itemLog.CompanyName = item.CompanyName
  28. itemLog.IsSignup = item.IsSignup
  29. itemLog.BusinessCard = item.BusinessCard
  30. itemLog.CountryCode = item.CountryCode
  31. itemLog.OpenId = item.OpenId
  32. itemLog.CreateTime = time.Now()
  33. err = models.AddCygxActivitySigninLog(itemLog)
  34. if err != nil {
  35. return
  36. }
  37. err = models.UpdatedateCygxActivitySignin(item)
  38. return
  39. }
  40. // AddCygxActivityOfflineMeetingDetail 扫码签到日志记录
  41. func AddCygxActivityOfflineMeetingDetail(activityid, userId int) (err error) {
  42. defer func() {
  43. if err != nil {
  44. fmt.Println(err)
  45. go utils.SendAlarmMsg("扫码签到日志记录,失败,活动ID:"+strconv.Itoa(activityid)+err.Error(), 2)
  46. }
  47. }()
  48. var condition string
  49. var pars []interface{}
  50. condition = ` AND activity_id = ?`
  51. pars = append(pars, activityid)
  52. listOfflineMeeting, err := models.GetOfflineMeetingList(condition, pars)
  53. if err != nil {
  54. err = errors.New("GetOfflineMeetingList, Err: " + err.Error())
  55. return
  56. }
  57. mapOfflineMeeting := make(map[int]bool)
  58. for _, v := range listOfflineMeeting {
  59. mapOfflineMeeting[v.UserId] = true
  60. }
  61. pars = make([]interface{}, 0)
  62. condition = ` AND do_fail_type = 0 AND activity_id = ?`
  63. pars = append(pars, activityid)
  64. listSignup, e := models.GetActivitySignupList(condition, pars)
  65. if e != nil {
  66. err = errors.New("GetResourceDataList, Err: " + e.Error())
  67. return
  68. }
  69. var items []*models.CygxActivityOfflineMeetingDetail
  70. for _, v := range listSignup {
  71. if !mapOfflineMeeting[v.UserId] {
  72. item := new(models.CygxActivityOfflineMeetingDetail)
  73. item.UserId = v.UserId
  74. item.ActivityId = v.ActivityId
  75. item.CreateTime = v.CreateTime
  76. item.Mobile = v.Mobile
  77. item.CompanyId = v.CompanyId
  78. item.CompanyName = v.CompanyName
  79. if userId == v.UserId {
  80. item.IsMeeting = 1
  81. item.SigninTime = time.Now().Format(utils.FormatDateTime)
  82. }
  83. items = append(items, item)
  84. }
  85. }
  86. //添加线下到会信息记录
  87. _, err = models.AddCygxActivityOfflineMeetingDetailList(items)
  88. if err != nil {
  89. err = errors.New("AddCygxActivityOfflineMeetingDetailList, Err: " + err.Error())
  90. return
  91. }
  92. //修改活动是否提交到会状态
  93. err = models.UpdateCygxActivitySubmitMeetingByActivityId(activityid)
  94. if err != nil {
  95. err = errors.New("UpdateCygxActivitySubmitMeetingByActivityId, Err: " + err.Error())
  96. return
  97. }
  98. //修改签到时间
  99. err = models.UpdateCygxActivityOfflineMeetingDetailSigninTime(activityid, userId)
  100. if err != nil {
  101. err = errors.New("UpdateCygxActivityOfflineMeetingDetailSigninTime, Err: " + err.Error())
  102. return
  103. }
  104. return
  105. }
  106. // CygxActivityRestrictSignupByTask 定时任务处理未到会人员的爽约
  107. func CygxActivityRestrictSignupByTask(cont context.Context) (err error) {
  108. //func CygxActivityRestrictSignupByTask() (err error) {
  109. defer func() {
  110. if err != nil {
  111. fmt.Println(err)
  112. go utils.SendAlarmMsg("判断是否加入黑名单记录失败"+err.Error(), 2)
  113. }
  114. }()
  115. var pars []interface{}
  116. var condition string
  117. startDate := time.Now().Add(-time.Minute * 120).Format(utils.FormatDateTime)
  118. endDate := time.Now().Add(-time.Minute * 105).Format(utils.FormatDateTime)
  119. condition = " AND activity_type_id IN (5,6) AND signin_img != '' AND publish_status = 1 AND activity_time >= ? AND activity_time <= ? "
  120. pars = append(pars, startDate, endDate)
  121. activityList, err := models.GetActivityListByCondition(condition, pars)
  122. if err != nil && err.Error() != utils.ErrNoRow() {
  123. return
  124. }
  125. if len(activityList) == 0 {
  126. return
  127. }
  128. for _, v := range activityList {
  129. go AddCygxActivityRestrictSignupByAdmin(v.ActivityId) // 处理爽约限制
  130. }
  131. for _, v := range activityList {
  132. err = models.AddCygxActivityMeetDetailLogOffline(v.ActivityId)
  133. if err != nil {
  134. return
  135. }
  136. //修改活动是否提交到会状态
  137. err = models.UpdateCygxActivitySubmitMeetingByActivityId(v.ActivityId)
  138. if err != nil {
  139. err = errors.New("UpdateCygxActivitySubmitMeetingByActivityId, Err: " + err.Error())
  140. return
  141. }
  142. //把报名信息写入签到到会表
  143. AddCygxActivityOfflineMeetingDetail(v.ActivityId, 0)
  144. }
  145. return
  146. }
  147. func CygxActivityRestrictSignupByuid(uid, activityId int) (err error) {
  148. defer func() {
  149. if err != nil {
  150. fmt.Println(err)
  151. go utils.SendAlarmMsg("判断是否加入黑名单记录失败"+err.Error(), 2)
  152. }
  153. }()
  154. err = models.DeleteCygxActivitySignupBreak(uid, activityId)
  155. if err != nil {
  156. err = errors.New("DeleteCygxActivitySignupBreak" + err.Error())
  157. return err
  158. }
  159. totalNomeet, err := models.GetActivitySignupNomeetingCountByUid(uid)
  160. if err != nil {
  161. err = errors.New("GetActivitySignupNomeetingCountByUid" + err.Error())
  162. return err
  163. }
  164. if totalNomeet < 3 {
  165. err = models.DeleteCygxActivityRestrictSignup(uid)
  166. }
  167. return
  168. }
  169. // GetUserActivitySigninTimeMap 获取用户的签到时间
  170. func GetUserActivitySigninTimeMap(activityId int) (mapItem map[int]string, err error) {
  171. defer func() {
  172. if err != nil {
  173. fmt.Println(err)
  174. go utils.SendAlarmMsg("扫码签到日志记录,失败,活动ID:"+strconv.Itoa(activityId)+err.Error(), 2)
  175. }
  176. }()
  177. var condition string
  178. var pars []interface{}
  179. condition = " AND activity_id = ? "
  180. pars = append(pars, activityId)
  181. userList, e := models.GetCygxActivitySigninList(condition, pars)
  182. if e != nil && e.Error() != utils.ErrNoRow() {
  183. err = errors.New("GetCygxActivitySigninList" + e.Error())
  184. return
  185. }
  186. mapItem = make(map[int]string, 0)
  187. for _, v := range userList {
  188. if v.UserId == 0 {
  189. continue
  190. }
  191. mapItem[v.UserId] = v.CreateTime.Format(utils.FormatDateTime)
  192. }
  193. return
  194. }