activity_signup.go 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. package models
  2. import (
  3. "fmt"
  4. "rdluck_tools/orm"
  5. "time"
  6. )
  7. type CygxActivitySignup struct {
  8. Id int `orm:"column(id);pk"`
  9. ActivityId int `description:"活动ID"`
  10. UserId int `description:"用户ID"`
  11. CreateTime time.Time `description:"创建时间"`
  12. Mobile string `description:"手机号"`
  13. Email string `description:"邮箱"`
  14. CompanyId int `description:"公司id"`
  15. CompanyName string `description:"公司名称"`
  16. FailType int `description:"失败原因,0,未失败,1总人数已满,2单机构超限制,3,爽约次数超限"`
  17. SignupType int `description:"报名方式,1预约外呼,2自主拨入,3我要报名"`
  18. }
  19. type SignupStatus struct {
  20. SignupStatus string `description:"返回状态:人数已满:FullStarffed、单机构超过两人:TwoPeople、爽约次数过多:BreakPromise、超时:Overtime 、成功:Success"`
  21. GoFollow bool `description:"是否去关注"`
  22. SignupType int `description:"报名方式,1预约外呼,2我要报名"`
  23. ActivityId int `description:"活动ID"`
  24. HaqveJurisdiction bool `description:"是否有权限"`
  25. OperationMode string `description:"操作方式 Apply:立即申请、Call:拨号 为空则为有权限"`
  26. HasPermission int `description:"操作方式,1:有该行业权限,正常展示,2:无该行业权限,3:潜在客户,未提交过申请,4:潜在客户,已提交过申请"`
  27. PopupMsg string `description:"权限弹窗信息"`
  28. SellerMobile string `description:"销售电话"`
  29. }
  30. //我的日程
  31. type CygxMySchedule struct {
  32. Id int `orm:"column(id);pk"`
  33. ActivityId int `description:"活动ID"`
  34. UserId int `description:"用户ID"`
  35. CreateTime time.Time `description:"创建时间"`
  36. Mobile string `description:"手机号"`
  37. Email string `description:"邮箱"`
  38. CompanyId int `description:"公司id"`
  39. CompanyName string `description:"公司名称"`
  40. }
  41. //报名记录日志
  42. type CygxActivitySignupLog struct {
  43. Id int `orm:"column(id);pk"`
  44. ActivityId int `description:"活动ID"`
  45. UserId int `description:"用户ID"`
  46. CreateTime time.Time `description:"创建时间"`
  47. Mobile string `description:"手机号"`
  48. Email string `description:"邮箱"`
  49. CompanyId int `description:"公司id"`
  50. CompanyName string `description:"公司名称"`
  51. Type int `description:"操作方式,1报名,2取消报名"`
  52. }
  53. //添加报名信息
  54. func AddActivitySignup(item *CygxActivitySignup) (lastId int64, err error) {
  55. o := orm.NewOrm()
  56. o.Begin()
  57. defer func() {
  58. fmt.Println(err)
  59. if err == nil {
  60. o.Commit()
  61. } else {
  62. o.Rollback()
  63. }
  64. }()
  65. var count int
  66. var countMySchedule int
  67. sql := `SELECT COUNT(1) AS count FROM cygx_my_schedule WHERE user_id=? AND activity_id=? `
  68. err = o.Raw(sql, item.UserId, item.ActivityId).QueryRow(&countMySchedule)
  69. if err != nil {
  70. return
  71. }
  72. if countMySchedule == 0 {
  73. itemMy := new(CygxMySchedule)
  74. itemMy.UserId = item.UserId
  75. itemMy.ActivityId = item.ActivityId
  76. itemMy.CreateTime = time.Now()
  77. itemMy.Mobile = item.Mobile
  78. itemMy.Email = item.Email
  79. itemMy.CompanyId = item.CompanyId
  80. itemMy.CompanyName = item.CompanyName
  81. lastId, err = o.Insert(itemMy)
  82. if err != nil {
  83. return
  84. }
  85. }
  86. sql = `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE user_id=? AND activity_id=? `
  87. err = o.Raw(sql, item.UserId, item.ActivityId).QueryRow(&count)
  88. if err != nil {
  89. return
  90. }
  91. if count > 0 {
  92. sql := `UPDATE cygx_activity_signup SET is_cancel = 0 , signup_type=? WHERE user_id=? AND activity_id=? `
  93. _, err = o.Raw(sql, item.SignupType, item.UserId, item.ActivityId).Exec()
  94. } else {
  95. lastId, err = o.Insert(item)
  96. }
  97. if err != nil {
  98. return
  99. }
  100. itemLog := new(CygxActivitySignupLog)
  101. itemLog.UserId = item.UserId
  102. itemLog.ActivityId = item.ActivityId
  103. itemLog.CreateTime = time.Now()
  104. itemLog.Mobile = item.Mobile
  105. itemLog.Email = item.Email
  106. itemLog.CompanyId = item.CompanyId
  107. itemLog.CompanyName = item.CompanyName
  108. itemLog.Type = 1
  109. lastId, err = o.Insert(itemLog)
  110. return
  111. }
  112. //添加报名信息
  113. func AddActivitySignupNoSchedule(item *CygxActivitySignup) (lastId int64, err error) {
  114. o := orm.NewOrm()
  115. o.Begin()
  116. defer func() {
  117. fmt.Println(err)
  118. if err == nil {
  119. o.Commit()
  120. } else {
  121. o.Rollback()
  122. }
  123. }()
  124. lastId, err = o.Insert(item)
  125. if err != nil {
  126. return
  127. }
  128. itemLog := new(CygxActivitySignupLog)
  129. itemLog.UserId = item.UserId
  130. itemLog.ActivityId = item.ActivityId
  131. itemLog.CreateTime = time.Now()
  132. itemLog.Mobile = item.Mobile
  133. itemLog.Email = item.Email
  134. itemLog.CompanyId = item.CompanyId
  135. itemLog.CompanyName = item.CompanyName
  136. itemLog.Type = 1
  137. lastId, err = o.Insert(itemLog)
  138. return
  139. }
  140. //获取用户报名数量
  141. func GetActivitySignupCount(uid, activityId int) (count int, err error) {
  142. sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE is_cancel=0 AND user_id=? AND activity_id=? `
  143. o := orm.NewOrm()
  144. err = o.Raw(sqlCount, uid, activityId).QueryRow(&count)
  145. return
  146. }
  147. //获取某一活动已经报名的数量
  148. func GetActivitySignupSuccessCount(activityId int) (count int, err error) {
  149. sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE is_cancel=0 AND fail_type = 0 AND activity_id=? `
  150. o := orm.NewOrm()
  151. err = o.Raw(sqlCount, activityId).QueryRow(&count)
  152. return
  153. }
  154. //获取某一活动某个机构已经报名的数量
  155. func GetActivitySignupCompanyCount(activityId, companyId int) (count int, err error) {
  156. sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE is_cancel=0 AND fail_type = 0 AND activity_id=? AND company_id=? `
  157. o := orm.NewOrm()
  158. err = o.Raw(sqlCount, activityId, companyId).QueryRow(&count)
  159. return
  160. }
  161. //获取某一用户是否被限制报名
  162. func GetUserRestrictCount(uid int) (count int, err error) {
  163. sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_restrict_signup WHERE is_restrict=1 AND user_id=? `
  164. o := orm.NewOrm()
  165. err = o.Raw(sqlCount, uid).QueryRow(&count)
  166. return
  167. }
  168. //获取某一用户的日程数量
  169. func GetUserMeetingReminderCount(uid int) (count int, err error) {
  170. sqlCount := `SELECT COUNT(1) AS count FROM cygx_my_schedule WHERE user_id=? `
  171. o := orm.NewOrm()
  172. err = o.Raw(sqlCount, uid).QueryRow(&count)
  173. return
  174. }
  175. //取消报名
  176. func CancelActivitySignup(item *CygxActivitySignup) (lastId int64, err error) {
  177. o := orm.NewOrm()
  178. o.Begin()
  179. defer func() {
  180. fmt.Println(err)
  181. if err == nil {
  182. o.Commit()
  183. } else {
  184. o.Rollback()
  185. }
  186. }()
  187. //判断是否删除我的日程
  188. var count int
  189. sql := `SELECT COUNT(1) AS count FROM cygx_activity_meeting_reminder WHERE user_id=? AND activity_id=? `
  190. err = o.Raw(sql, item.UserId, item.ActivityId).QueryRow(&count)
  191. if err != nil {
  192. return
  193. }
  194. if count == 0 {
  195. sql = `DELETE FROM cygx_my_schedule WHERE user_id=? AND activity_id=? `
  196. _, err = o.Raw(sql, item.UserId, item.ActivityId).Exec()
  197. if err != nil {
  198. return
  199. }
  200. }
  201. sql = `UPDATE cygx_activity_signup SET is_cancel = 1 WHERE user_id=? AND activity_id=? `
  202. _, err = o.Raw(sql, item.UserId, item.ActivityId).Exec()
  203. if err != nil {
  204. return
  205. }
  206. itemLog := new(CygxActivitySignupLog)
  207. itemLog.UserId = item.UserId
  208. itemLog.ActivityId = item.ActivityId
  209. itemLog.CreateTime = time.Now()
  210. itemLog.Mobile = item.Mobile
  211. itemLog.Email = item.Email
  212. itemLog.CompanyId = item.CompanyId
  213. itemLog.CompanyName = item.CompanyName
  214. itemLog.Type = 2
  215. lastId, err = o.Insert(itemLog)
  216. return
  217. }
  218. //详情
  219. func GetActivitySignupDetail(activityId, uid int) (item *CygxActivitySignup, err error) {
  220. o := orm.NewOrm()
  221. sql := `SELECT * FROM cygx_activity_signup WHERE activity_id = ? AND user_id =? `
  222. err = o.Raw(sql, activityId, uid).QueryRow(&item)
  223. return
  224. }