activity_signup.go 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674
  1. package models
  2. import (
  3. "fmt"
  4. "github.com/beego/beego/v2/client/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. DoFailType int `description:"失败原因,0,未失败,1总人数已满,2单机构超限制,3,爽约次数超限"`
  19. OutboundMobile string `description:"外呼手机号"`
  20. CountryCode string `description:"手机国家区号"`
  21. RealName string `description:"用户实际名称"`
  22. SellerName string `description:"所属销售"`
  23. }
  24. type SignupStatus struct {
  25. SignupStatus string `description:"返回状态:人数已满:FullStarffed、单机构超过两人:TwoPeople、爽约次数过多:BreakPromise、超时:Overtime 、成功:Success"`
  26. GoFollow bool `description:"是否去关注"`
  27. SignupType int `description:"报名方式,1预约外呼,2我要报名"`
  28. ActivityId int `description:"活动ID"`
  29. HaqveJurisdiction bool `description:"是否有权限"`
  30. OperationMode string `description:"操作方式 Apply:立即申请、Call:拨号 为空则为有权限"`
  31. HasPermission int `description:"操作方式,1:有该行业权限,正常展示,2:无该行业权限,3:潜在客户,未提交过申请,4:潜在客户,已提交过申请"`
  32. PopupMsg string `description:"权限弹窗信息"`
  33. SellerMobile string `description:"销售电话"`
  34. MsgType string `description:"Type : 类型 , Industry : 行业"`
  35. SellerName string `description:"销售姓名"`
  36. Mobile string `description:"外呼手机号"`
  37. CountryCode string `description:"外呼手机号区号"`
  38. GoOutboundMobile bool `description:"是否去绑定手机号"`
  39. GoBindEmail bool `description:"是否去绑定邮箱"`
  40. IsResearch bool `description:"是否属于研选"`
  41. IsResearchSpecial bool `description:"是否属于特殊的研选"`
  42. }
  43. // 我的日程
  44. type CygxMySchedule struct {
  45. Id int `orm:"column(id);pk"`
  46. ActivityId int `description:"活动ID"`
  47. UserId int `description:"用户ID"`
  48. CreateTime time.Time `description:"创建时间"`
  49. Mobile string `description:"手机号"`
  50. Email string `description:"邮箱"`
  51. CompanyId int `description:"公司id"`
  52. CompanyName string `description:"公司名称"`
  53. }
  54. // 报名记录日志
  55. type CygxActivitySignupLog struct {
  56. Id int `orm:"column(id);pk"`
  57. ActivityId int `description:"活动ID"`
  58. UserId int `description:"用户ID"`
  59. CreateTime time.Time `description:"创建时间"`
  60. Mobile string `description:"手机号"`
  61. Email string `description:"邮箱"`
  62. CompanyId int `description:"公司id"`
  63. CompanyName string `description:"公司名称"`
  64. Type int `description:"操作方式,1报名,2取消报名"`
  65. }
  66. // 添加报名信息
  67. func AddActivitySignup(item *CygxActivitySignup) (lastId int64, err error) {
  68. o, err := orm.NewOrm().Begin()
  69. if err != nil {
  70. return
  71. }
  72. defer func() {
  73. fmt.Println(err)
  74. if err == nil {
  75. o.Commit()
  76. } else {
  77. o.Rollback()
  78. }
  79. }()
  80. var count int
  81. var countMySchedule int
  82. sql := `SELECT COUNT(1) AS count FROM cygx_my_schedule WHERE user_id=? AND activity_id=? `
  83. err = o.Raw(sql, item.UserId, item.ActivityId).QueryRow(&countMySchedule)
  84. if err != nil {
  85. return
  86. }
  87. if countMySchedule == 0 {
  88. itemMy := new(CygxMySchedule)
  89. itemMy.UserId = item.UserId
  90. itemMy.ActivityId = item.ActivityId
  91. itemMy.CreateTime = time.Now()
  92. itemMy.Mobile = item.Mobile
  93. itemMy.Email = item.Email
  94. itemMy.CompanyId = item.CompanyId
  95. itemMy.CompanyName = item.CompanyName
  96. lastId, err = o.Insert(itemMy)
  97. if err != nil {
  98. return
  99. }
  100. }
  101. sql = `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE user_id=? AND activity_id=? `
  102. err = o.Raw(sql, item.UserId, item.ActivityId).QueryRow(&count)
  103. if err != nil {
  104. return
  105. }
  106. if count > 0 {
  107. sql := `UPDATE cygx_activity_signup SET is_cancel = 0 ,do_fail_type = 0, signup_type=? WHERE user_id=? AND activity_id=? `
  108. _, err = o.Raw(sql, item.SignupType, item.UserId, item.ActivityId).Exec()
  109. } else {
  110. lastId, err = o.Insert(item)
  111. }
  112. if err != nil {
  113. return
  114. }
  115. itemLog := new(CygxActivitySignupLog)
  116. itemLog.UserId = item.UserId
  117. itemLog.ActivityId = item.ActivityId
  118. itemLog.CreateTime = time.Now()
  119. itemLog.Mobile = item.Mobile
  120. itemLog.Email = item.Email
  121. itemLog.CompanyId = item.CompanyId
  122. itemLog.CompanyName = item.CompanyName
  123. itemLog.Type = 1
  124. lastId, err = o.Insert(itemLog)
  125. return
  126. }
  127. // 仅绑定邮箱的用户修改报名后,添加报名信息
  128. func AddActivitySignupFromEmail(item *CygxActivitySignup) (lastId int64, err error) {
  129. o, err := orm.NewOrm().Begin()
  130. if err != nil {
  131. return
  132. }
  133. defer func() {
  134. fmt.Println(err)
  135. if err == nil {
  136. o.Commit()
  137. } else {
  138. o.Rollback()
  139. }
  140. }()
  141. var count int
  142. var countMySchedule int
  143. ow := orm.NewOrmUsingDB("weekly_report")
  144. sql := `UPDATE wx_user SET outbound_mobile=? ,outbound_country_code = ? ,is_msg_outbound_mobile = 1 WHERE user_id=? `
  145. _, err = ow.Raw(sql, item.OutboundMobile, item.CountryCode, item.UserId).Exec()
  146. if err != nil {
  147. return
  148. }
  149. sql = `SELECT COUNT(1) AS count FROM cygx_my_schedule WHERE user_id=? AND activity_id=? `
  150. err = o.Raw(sql, item.UserId, item.ActivityId).QueryRow(&countMySchedule)
  151. if err != nil {
  152. return
  153. }
  154. if countMySchedule == 0 {
  155. itemMy := new(CygxMySchedule)
  156. itemMy.UserId = item.UserId
  157. itemMy.ActivityId = item.ActivityId
  158. itemMy.CreateTime = time.Now()
  159. itemMy.Mobile = item.Mobile
  160. itemMy.Email = item.Email
  161. itemMy.CompanyId = item.CompanyId
  162. itemMy.CompanyName = item.CompanyName
  163. lastId, err = o.Insert(itemMy)
  164. if err != nil {
  165. return
  166. }
  167. }
  168. sql = `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE user_id=? AND activity_id=? `
  169. err = o.Raw(sql, item.UserId, item.ActivityId).QueryRow(&count)
  170. if err != nil {
  171. return
  172. }
  173. if count > 0 {
  174. sql := `UPDATE cygx_activity_signup SET is_cancel = 0 ,do_fail_type = 0, signup_type=? WHERE user_id=? AND activity_id=? `
  175. _, err = o.Raw(sql, item.SignupType, item.UserId, item.ActivityId).Exec()
  176. } else {
  177. lastId, err = o.Insert(item)
  178. }
  179. if err != nil {
  180. return
  181. }
  182. itemLog := new(CygxActivitySignupLog)
  183. itemLog.UserId = item.UserId
  184. itemLog.ActivityId = item.ActivityId
  185. itemLog.CreateTime = time.Now()
  186. itemLog.Mobile = item.Mobile
  187. itemLog.Email = item.Email
  188. itemLog.CompanyId = item.CompanyId
  189. itemLog.CompanyName = item.CompanyName
  190. itemLog.Type = 1
  191. lastId, err = o.Insert(itemLog)
  192. return
  193. }
  194. // 添加报名信息
  195. func AddActivitySignupNoSchedule(item *CygxActivitySignup) (lastId int64, err error) {
  196. o, err := orm.NewOrm().Begin()
  197. if err != nil {
  198. return
  199. }
  200. defer func() {
  201. fmt.Println(err)
  202. if err == nil {
  203. o.Commit()
  204. } else {
  205. o.Rollback()
  206. }
  207. }()
  208. lastId, err = o.Insert(item)
  209. if err != nil {
  210. return
  211. }
  212. itemLog := new(CygxActivitySignupLog)
  213. itemLog.UserId = item.UserId
  214. itemLog.ActivityId = item.ActivityId
  215. itemLog.CreateTime = time.Now()
  216. itemLog.Mobile = item.Mobile
  217. itemLog.Email = item.Email
  218. itemLog.CompanyId = item.CompanyId
  219. itemLog.CompanyName = item.CompanyName
  220. itemLog.Type = 1
  221. lastId, err = o.Insert(itemLog)
  222. return
  223. }
  224. // 获取用户报名成功数量
  225. func GetActivitySignupCount(uid, activityId int) (count int, err error) {
  226. sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE is_cancel=0 AND do_fail_type = 0 AND user_id=? AND activity_id=? `
  227. o := orm.NewOrm()
  228. err = o.Raw(sqlCount, uid, activityId).QueryRow(&count)
  229. return
  230. }
  231. // 获取用户报名数量
  232. func GetActivitySignupByUserCount(uid, activityId int) (count int, err error) {
  233. sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE is_cancel=0 AND user_id=? AND activity_id=? `
  234. o := orm.NewOrm()
  235. err = o.Raw(sqlCount, uid, activityId).QueryRow(&count)
  236. return
  237. }
  238. // 获取除弘则以外所有成功报名的用户数量
  239. func GetActivitySignupSuccessByUserCountNoHz(activityId int) (count int, err error) {
  240. sqlCount := `SELECT
  241. COUNT( 1 ) AS count
  242. FROM
  243. cygx_activity_signup
  244. WHERE
  245. is_cancel = 0
  246. AND company_id != 16
  247. AND do_fail_type = 0
  248. AND activity_id = ? `
  249. o := orm.NewOrm()
  250. err = o.Raw(sqlCount, activityId).QueryRow(&count)
  251. return
  252. }
  253. // 获取用户报名禁止数量
  254. func GetActivitySignupByUserRestrictCount(uid, activityId int) (count int, err error) {
  255. sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE do_fail_type=3 AND user_id=? AND activity_id=? `
  256. o := orm.NewOrm()
  257. err = o.Raw(sqlCount, uid, activityId).QueryRow(&count)
  258. return
  259. }
  260. // 获取某一活动已经报名的数量
  261. func GetActivitySignupSuccessCount(activityId int) (count int, err error) {
  262. sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE is_cancel=0 AND do_fail_type = 0 AND activity_id=? `
  263. o := orm.NewOrm()
  264. err = o.Raw(sqlCount, activityId).QueryRow(&count)
  265. return
  266. }
  267. // 获取某一活动某个机构已经报名的数量
  268. func GetActivitySignupCompanyCount(activityId, companyId int) (count int, err error) {
  269. sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE is_cancel=0 AND fail_type = 0 AND activity_id=? AND company_id=? `
  270. o := orm.NewOrm()
  271. err = o.Raw(sqlCount, activityId, companyId).QueryRow(&count)
  272. return
  273. }
  274. // 获取某一用户是否被限制报名
  275. func GetUserRestrictCount(mobile string) (count int, err error) {
  276. sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_restrict_signup WHERE is_restrict=1 AND mobile=? `
  277. o := orm.NewOrm()
  278. err = o.Raw(sqlCount, mobile).QueryRow(&count)
  279. return
  280. }
  281. // 获取某一用户的日程数量
  282. func GetUserMeetingReminderCount(uid int) (count int, err error) {
  283. sqlCount := `SELECT COUNT(1) AS count FROM cygx_my_schedule WHERE user_id=? `
  284. o := orm.NewOrm()
  285. err = o.Raw(sqlCount, uid).QueryRow(&count)
  286. return
  287. }
  288. // 获取某一用户的报名的数量
  289. func GetUserSignupCount(uid int) (count int, err error) {
  290. sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup_log WHERE user_id=? `
  291. o := orm.NewOrm()
  292. err = o.Raw(sqlCount, uid).QueryRow(&count)
  293. return
  294. }
  295. // 取消报名
  296. func CancelActivitySignup(item *CygxActivitySignup) (lastId int64, err error) {
  297. o, err := orm.NewOrm().Begin()
  298. if err != nil {
  299. return
  300. }
  301. defer func() {
  302. fmt.Println(err)
  303. if err == nil {
  304. o.Commit()
  305. } else {
  306. o.Rollback()
  307. }
  308. }()
  309. //判断是否删除我的日程
  310. var countReminder int
  311. var countAppointment int
  312. sql := `SELECT COUNT(1) AS count FROM cygx_activity_meeting_reminder WHERE is_cancel = 0 AND user_id=? AND activity_id=? `
  313. err = o.Raw(sql, item.UserId, item.ActivityId).QueryRow(&countReminder)
  314. sql = `SELECT COUNT(1) AS count FROM cygx_activity_appointment WHERE user_id=? AND activity_id=? `
  315. err = o.Raw(sql, item.UserId, item.ActivityId).QueryRow(&countAppointment)
  316. if err != nil {
  317. return
  318. }
  319. if countReminder == 0 && countAppointment == 0 {
  320. sql = `DELETE FROM cygx_my_schedule WHERE user_id=? AND activity_id=? `
  321. _, err = o.Raw(sql, item.UserId, item.ActivityId).Exec()
  322. if err != nil {
  323. return
  324. }
  325. }
  326. sql = `DELETE FROM cygx_activity_signup WHERE user_id=? AND activity_id=? `
  327. _, err = o.Raw(sql, item.UserId, item.ActivityId).Exec()
  328. if err != nil {
  329. return
  330. }
  331. itemLog := new(CygxActivitySignupLog)
  332. itemLog.UserId = item.UserId
  333. itemLog.ActivityId = item.ActivityId
  334. itemLog.CreateTime = time.Now()
  335. itemLog.Mobile = item.Mobile
  336. itemLog.Email = item.Email
  337. itemLog.CompanyId = item.CompanyId
  338. itemLog.CompanyName = item.CompanyName
  339. itemLog.Type = 2
  340. lastId, err = o.Insert(itemLog)
  341. return
  342. }
  343. // 详情
  344. func GetActivitySignupDetail(activityId, uid int) (item *CygxActivitySignup, err error) {
  345. o := orm.NewOrm()
  346. sql := `SELECT * FROM cygx_activity_signup WHERE activity_id = ? AND user_id =? `
  347. err = o.Raw(sql, activityId, uid).QueryRow(&item)
  348. return
  349. }
  350. func GetActivitySignuListByUser(condition string, pars []interface{}) (item []*CygxActivitySignup, err error) {
  351. o := orm.NewOrm()
  352. sql := `SELECT *
  353. FROM
  354. cygx_activity_signup
  355. WHERE 1 = 1 ` + condition
  356. _, err = o.Raw(sql, pars).QueryRows(&item)
  357. return
  358. }
  359. // 解除报名限制之后二次报名
  360. func AddActivitySignupByRestrict(item *CygxActivitySignup) (lastId int64, err error) {
  361. o, err := orm.NewOrm().Begin()
  362. if err != nil {
  363. return
  364. }
  365. defer func() {
  366. fmt.Println(err)
  367. if err == nil {
  368. o.Commit()
  369. } else {
  370. o.Rollback()
  371. }
  372. }()
  373. itemMy := new(CygxMySchedule)
  374. itemMy.UserId = item.UserId
  375. itemMy.ActivityId = item.ActivityId
  376. itemMy.CreateTime = time.Now()
  377. itemMy.Mobile = item.Mobile
  378. itemMy.Email = item.Email
  379. itemMy.CompanyId = item.CompanyId
  380. itemMy.CompanyName = item.CompanyName
  381. lastId, err = o.Insert(itemMy)
  382. if err != nil {
  383. return
  384. }
  385. sql := `UPDATE cygx_activity_signup SET do_fail_type = 0 , fail_type=0 WHERE user_id=? AND activity_id=? `
  386. _, err = o.Raw(sql, item.UserId, item.ActivityId).Exec()
  387. itemLog := new(CygxActivitySignupLog)
  388. itemLog.UserId = item.UserId
  389. itemLog.ActivityId = item.ActivityId
  390. itemLog.CreateTime = time.Now()
  391. itemLog.Mobile = item.Mobile
  392. itemLog.Email = item.Email
  393. itemLog.CompanyId = item.CompanyId
  394. itemLog.CompanyName = item.CompanyName
  395. itemLog.Type = 1
  396. lastId, err = o.Insert(itemLog)
  397. return
  398. }
  399. // 列表
  400. func GetActivitySignupListAll() (items []*CygxActivitySignup, err error) {
  401. o := orm.NewOrm()
  402. sql := `SELECT * FROM cygx_activity_signup `
  403. _, err = o.Raw(sql).QueryRows(&items)
  404. return
  405. }
  406. // 修改是否推送消息状态
  407. func UPdateSignup(item *CygxActivitySignup) (err error) {
  408. sql := ` UPDATE cygx_activity_signup SET outbound_mobile= ? , country_code=86 WHERE id = ?`
  409. o := orm.NewOrm()
  410. _, err = o.Raw(sql, item.Mobile, item.Id).Exec()
  411. return
  412. }
  413. // 获取数量
  414. func GetActivityCountByIdWithUid(activityId, Uid int) (count int, err error) {
  415. o := orm.NewOrm()
  416. sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE activity_id = ? AND user_id = ?`
  417. err = o.Raw(sqlCount, activityId, Uid).QueryRow(&count)
  418. return
  419. }
  420. // 获取用户报名数量
  421. func GetActivitySignupNomeetingCount(activityId int) (count int, err error) {
  422. sqlCount := `SELECT
  423. COUNT( 1 ) count
  424. FROM
  425. cygx_activity_signup AS s
  426. INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
  427. WHERE
  428. 1 = 1
  429. AND a.is_limit_people > 0
  430. AND s.is_meeting = 0
  431. AND a.is_submit_meeting = 1
  432. AND a.activity_id = ?`
  433. o := orm.NewOrm()
  434. err = o.Raw(sqlCount, activityId).QueryRow(&count)
  435. return
  436. }
  437. func GetUserMeetingMobile(activityId int) (items []*CygxActivitySignup, err error) {
  438. o := orm.NewOrm()
  439. sql := `SELECT *
  440. FROM
  441. cygx_activity_signup AS s
  442. WHERE
  443. s.is_meeting = 1
  444. AND s.activity_id = ?`
  445. _, err = o.Raw(sql, activityId).QueryRows(&items)
  446. return
  447. }
  448. // 获取用户是否被限制报名
  449. func GetRestrictSignupCountByUid(uid int) (count int, err error) {
  450. sqlCount := `SELECT COUNT( 1 ) count FROM cygx_activity_restrict_signup WHERE user_id = ?`
  451. o := orm.NewOrm()
  452. err = o.Raw(sqlCount, uid).QueryRow(&count)
  453. return
  454. }
  455. // 获取用户爽约次数
  456. func GetActivitySignupNomeetingCountByUid(uid int) (count int, err error) {
  457. sqlCount := `SELECT
  458. COUNT( 1 ) count
  459. FROM
  460. cygx_activity_signup AS s
  461. INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
  462. WHERE
  463. 1 = 1
  464. AND a.is_limit_people > 0
  465. AND s.is_meeting = 0
  466. AND a.is_submit_meeting = 1
  467. AND s.do_fail_type = 0
  468. AND s.user_id = ?`
  469. o := orm.NewOrm()
  470. err = o.Raw(sqlCount, uid).QueryRow(&count)
  471. return
  472. }
  473. // 删除
  474. func DeleteCygxActivityRestrictSignup(uid int) (err error) {
  475. o := orm.NewOrm()
  476. sql := ` DELETE FROM cygx_activity_restrict_signup WHERE user_id=?`
  477. _, err = o.Raw(sql, uid).Exec()
  478. return
  479. }
  480. type CygxActivitySignupList struct {
  481. Id int `orm:"column(id);pk"`
  482. UserId int `description:"用户id"`
  483. ActivityId int `description:"活动ID"`
  484. CompanyName string `description:"公司名称"`
  485. RealName string `description:"姓名"`
  486. CreateTime string `description:"创建时间"`
  487. IsMeeting int `description:"是否到会 ,1是, 0否"`
  488. Operation bool `description:"操作按钮,true,到会,false 未到会"`
  489. Channel int `description:"报名渠道,0 空降、 1小程序报名"`
  490. SellerName string `description:"所属销售"`
  491. Mobile string `description:"手机号"`
  492. Email string `description:"邮箱"`
  493. CompanyId int `description:"公司id"`
  494. SigninTime string `description:"签到时间"`
  495. }
  496. type CygxActivitySignupResp struct {
  497. CompanyName string `description:"公司名称"`
  498. RealName string `description:"姓名"`
  499. IsMeeting int `description:"是否到会 ,1是, 0否"`
  500. SigninTime string `description:"签到时间"`
  501. }
  502. // 获取用户报名列表
  503. func GetActivitySignupNomeetingCountList(activityId int) (items []*CygxActivitySignupList, err error) {
  504. o := orm.NewOrm()
  505. sql := `SELECT
  506. s.*
  507. FROM
  508. cygx_activity_signup AS s
  509. INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
  510. WHERE
  511. 1 = 1
  512. AND s.is_meeting = 0
  513. AND a.is_submit_meeting = 1
  514. AND a.activity_id = ?`
  515. _, err = o.Raw(sql, activityId).QueryRows(&items)
  516. return
  517. }
  518. type UserAndCompanyName struct {
  519. UserId int `orm:"column(user_id);pk"`
  520. Mobile string
  521. Email string
  522. CompanyId int
  523. CompanyName string `description:"公司名称"`
  524. CountryCode string `description:"手机国家区号"`
  525. OutboundMobile string `description:"外呼手机号"`
  526. OutboundCountryCode string `description:"外呼手机号区号"`
  527. }
  528. func GetUserAndCompanyNameList(uid int) (item *UserAndCompanyName, err error) {
  529. o := orm.NewOrm()
  530. sql := ` SELECT u.*,c.company_name
  531. FROM wx_user AS u
  532. INNER JOIN company AS c ON c.company_id = u.company_id
  533. WHERE user_id =?`
  534. err = o.Raw(sql, uid).QueryRow(&item)
  535. return
  536. }
  537. type CygxActivityRestrictSignup struct {
  538. Id int `orm:"column(id);pk"`
  539. UserId int `description:"用户id,多个用,隔开"`
  540. CreateTime time.Time `description:"创建时间"`
  541. Mobile string `description:"手机号"`
  542. Email string `description:"邮箱号"`
  543. CompanyId int `description:"公司ID"`
  544. CompanyName string `description:"公司名称"`
  545. IsRestrict int `description:"是否限制报名,1是,0否"`
  546. }
  547. // 添加
  548. func AddCygxActivityRestrictSignup(item *CygxActivityRestrictSignup) (err error) {
  549. o := orm.NewOrm()
  550. _, err = o.Insert(item)
  551. return
  552. }
  553. // 获取列表信息根据手机号分组
  554. func GetCygxActivitySignupByMobileList(condition string) (items []*CygxActivitySignup, err error) {
  555. o := orm.NewOrm()
  556. sql := `SELECT * FROM cygx_activity_signup_detail WHERE 1= 1 ` + condition + ` GROUP BY mobile `
  557. _, err = o.Raw(sql).QueryRows(&items)
  558. return
  559. }
  560. // 修改用户报名的相关信息
  561. func UpdateCygxActivitySignup(wxUser *WxUserItem) (err error) {
  562. o := orm.NewOrm()
  563. sql := `UPDATE cygx_activity_signup_detail SET email=?,company_id=?,company_name=?,user_id=?,real_name=? WHERE mobile=? `
  564. _, err = o.Raw(sql, wxUser.Email, wxUser.CompanyId, wxUser.CompanyName, wxUser.UserId, wxUser.RealName, wxUser.Mobile).Exec()
  565. return
  566. }
  567. // UpdateCygxActivitySignupisMeet 修改易董的活动,用户已到会
  568. func UpdateCygxActivitySignupisMeet(activityId int, mobile string) (err error) {
  569. o := orm.NewOrm()
  570. sql := `UPDATE cygx_activity_signup SET is_meeting=1 WHERE activity_id=? AND mobile = ? `
  571. _, err = o.Raw(sql, activityId, mobile).Exec()
  572. return
  573. }
  574. // UpdateCygxActivitySignupisMeetList 批量修改易董的活动,用户已到会
  575. func UpdateCygxActivitySignupisMeetList(condition string, pars []interface{}) (err error) {
  576. if condition == "" {
  577. return
  578. }
  579. o := orm.NewOrm()
  580. sql := `UPDATE cygx_activity_signup SET is_meeting=1 WHERE 1= 1 ` + condition
  581. _, err = o.Raw(sql, pars).Exec()
  582. return
  583. }
  584. // GetCygxCygxActivitySignupList 获取报名列表信息
  585. func GetActivitySignupList(condition string, pars []interface{}) (items []*CygxActivitySignup, err error) {
  586. sql := `SELECT
  587. *
  588. FROM
  589. cygx_activity_signup AS v
  590. WHERE
  591. 1 = 1 ` + condition
  592. o := orm.NewOrm()
  593. _, err = o.Raw(sql, pars).QueryRows(&items)
  594. return
  595. }
  596. // GetCygxCygxActivitySignupList 获取报名列表信息
  597. func GetActivitySignupInnerActivityList(condition string, pars []interface{}) (items []*CygxActivitySignup, err error) {
  598. sql := `SELECT
  599. *
  600. FROM
  601. cygx_activity_signup AS v
  602. INNER JOIN cygx_activity as a ON a.activity_id = v.activity_id
  603. WHERE
  604. 1 = 1 ` + condition
  605. o := orm.NewOrm()
  606. _, err = o.Raw(sql, pars).QueryRows(&items)
  607. return
  608. }
  609. // UpdateCygxActivitySignupIsMeeting 批量标记用户的到会信息
  610. func UpdateCygxActivitySignupIsMeeting(items []*CygxActivityAttendanceDetail) (err error) {
  611. o := orm.NewOrm()
  612. p, err := o.Raw(` UPDATE cygx_activity_signup SET
  613. is_meeting = 1
  614. WHERE outbound_mobile = ? AND activity_id = ? `).Prepare()
  615. if err != nil {
  616. return
  617. }
  618. defer func() {
  619. _ = p.Close() // 别忘记关闭 statement
  620. }()
  621. for _, v := range items {
  622. _, err = p.Exec(
  623. v.Mobile,
  624. v.ActivityId)
  625. if err != nil {
  626. return
  627. }
  628. }
  629. return
  630. }