activity_signup.go 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673
  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. sql := `UPDATE wx_user SET outbound_mobile=? ,outbound_country_code = ? ,is_msg_outbound_mobile = 1 WHERE user_id=? `
  144. _, err = o.Raw(sql, item.OutboundMobile, item.CountryCode, item.UserId).Exec()
  145. if err != nil {
  146. return
  147. }
  148. sql = `SELECT COUNT(1) AS count FROM cygx_my_schedule WHERE user_id=? AND activity_id=? `
  149. err = o.Raw(sql, item.UserId, item.ActivityId).QueryRow(&countMySchedule)
  150. if err != nil {
  151. return
  152. }
  153. if countMySchedule == 0 {
  154. itemMy := new(CygxMySchedule)
  155. itemMy.UserId = item.UserId
  156. itemMy.ActivityId = item.ActivityId
  157. itemMy.CreateTime = time.Now()
  158. itemMy.Mobile = item.Mobile
  159. itemMy.Email = item.Email
  160. itemMy.CompanyId = item.CompanyId
  161. itemMy.CompanyName = item.CompanyName
  162. lastId, err = o.Insert(itemMy)
  163. if err != nil {
  164. return
  165. }
  166. }
  167. sql = `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE user_id=? AND activity_id=? `
  168. err = o.Raw(sql, item.UserId, item.ActivityId).QueryRow(&count)
  169. if err != nil {
  170. return
  171. }
  172. if count > 0 {
  173. sql := `UPDATE cygx_activity_signup SET is_cancel = 0 ,do_fail_type = 0, signup_type=? WHERE user_id=? AND activity_id=? `
  174. _, err = o.Raw(sql, item.SignupType, item.UserId, item.ActivityId).Exec()
  175. } else {
  176. lastId, err = o.Insert(item)
  177. }
  178. if err != nil {
  179. return
  180. }
  181. itemLog := new(CygxActivitySignupLog)
  182. itemLog.UserId = item.UserId
  183. itemLog.ActivityId = item.ActivityId
  184. itemLog.CreateTime = time.Now()
  185. itemLog.Mobile = item.Mobile
  186. itemLog.Email = item.Email
  187. itemLog.CompanyId = item.CompanyId
  188. itemLog.CompanyName = item.CompanyName
  189. itemLog.Type = 1
  190. lastId, err = o.Insert(itemLog)
  191. return
  192. }
  193. // 添加报名信息
  194. func AddActivitySignupNoSchedule(item *CygxActivitySignup) (lastId int64, err error) {
  195. o, err := orm.NewOrm().Begin()
  196. if err != nil {
  197. return
  198. }
  199. defer func() {
  200. fmt.Println(err)
  201. if err == nil {
  202. o.Commit()
  203. } else {
  204. o.Rollback()
  205. }
  206. }()
  207. lastId, err = o.Insert(item)
  208. if err != nil {
  209. return
  210. }
  211. itemLog := new(CygxActivitySignupLog)
  212. itemLog.UserId = item.UserId
  213. itemLog.ActivityId = item.ActivityId
  214. itemLog.CreateTime = time.Now()
  215. itemLog.Mobile = item.Mobile
  216. itemLog.Email = item.Email
  217. itemLog.CompanyId = item.CompanyId
  218. itemLog.CompanyName = item.CompanyName
  219. itemLog.Type = 1
  220. lastId, err = o.Insert(itemLog)
  221. return
  222. }
  223. // 获取用户报名成功数量
  224. func GetActivitySignupCount(uid, activityId int) (count int, err error) {
  225. 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=? `
  226. o := orm.NewOrm()
  227. err = o.Raw(sqlCount, uid, activityId).QueryRow(&count)
  228. return
  229. }
  230. // 获取用户报名数量
  231. func GetActivitySignupByUserCount(uid, activityId int) (count int, err error) {
  232. sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE is_cancel=0 AND user_id=? AND activity_id=? `
  233. o := orm.NewOrm()
  234. err = o.Raw(sqlCount, uid, activityId).QueryRow(&count)
  235. return
  236. }
  237. // 获取除弘则以外所有成功报名的用户数量
  238. func GetActivitySignupSuccessByUserCountNoHz(activityId int) (count int, err error) {
  239. sqlCount := `SELECT
  240. COUNT( 1 ) AS count
  241. FROM
  242. cygx_activity_signup
  243. WHERE
  244. is_cancel = 0
  245. AND company_id != 16
  246. AND do_fail_type = 0
  247. AND activity_id = ? `
  248. o := orm.NewOrm()
  249. err = o.Raw(sqlCount, activityId).QueryRow(&count)
  250. return
  251. }
  252. // 获取用户报名禁止数量
  253. func GetActivitySignupByUserRestrictCount(uid, activityId int) (count int, err error) {
  254. sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE do_fail_type=3 AND user_id=? AND activity_id=? `
  255. o := orm.NewOrm()
  256. err = o.Raw(sqlCount, uid, activityId).QueryRow(&count)
  257. return
  258. }
  259. // 获取某一活动已经报名的数量
  260. func GetActivitySignupSuccessCount(activityId int) (count int, err error) {
  261. sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE is_cancel=0 AND do_fail_type = 0 AND activity_id=? `
  262. o := orm.NewOrm()
  263. err = o.Raw(sqlCount, activityId).QueryRow(&count)
  264. return
  265. }
  266. // 获取某一活动某个机构已经报名的数量
  267. func GetActivitySignupCompanyCount(activityId, companyId int) (count int, err error) {
  268. sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE is_cancel=0 AND fail_type = 0 AND activity_id=? AND company_id=? `
  269. o := orm.NewOrm()
  270. err = o.Raw(sqlCount, activityId, companyId).QueryRow(&count)
  271. return
  272. }
  273. // 获取某一用户是否被限制报名
  274. func GetUserRestrictCount(mobile string) (count int, err error) {
  275. sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_restrict_signup WHERE is_restrict=1 AND mobile=? `
  276. o := orm.NewOrm()
  277. err = o.Raw(sqlCount, mobile).QueryRow(&count)
  278. return
  279. }
  280. // 获取某一用户的日程数量
  281. func GetUserMeetingReminderCount(uid int) (count int, err error) {
  282. sqlCount := `SELECT COUNT(1) AS count FROM cygx_my_schedule WHERE user_id=? `
  283. o := orm.NewOrm()
  284. err = o.Raw(sqlCount, uid).QueryRow(&count)
  285. return
  286. }
  287. // 获取某一用户的报名的数量
  288. func GetUserSignupCount(uid int) (count int, err error) {
  289. sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup_log WHERE user_id=? `
  290. o := orm.NewOrm()
  291. err = o.Raw(sqlCount, uid).QueryRow(&count)
  292. return
  293. }
  294. // 取消报名
  295. func CancelActivitySignup(item *CygxActivitySignup) (lastId int64, err error) {
  296. o, err := orm.NewOrm().Begin()
  297. if err != nil {
  298. return
  299. }
  300. defer func() {
  301. fmt.Println(err)
  302. if err == nil {
  303. o.Commit()
  304. } else {
  305. o.Rollback()
  306. }
  307. }()
  308. //判断是否删除我的日程
  309. var countReminder int
  310. var countAppointment int
  311. sql := `SELECT COUNT(1) AS count FROM cygx_activity_meeting_reminder WHERE is_cancel = 0 AND user_id=? AND activity_id=? `
  312. err = o.Raw(sql, item.UserId, item.ActivityId).QueryRow(&countReminder)
  313. sql = `SELECT COUNT(1) AS count FROM cygx_activity_appointment WHERE user_id=? AND activity_id=? `
  314. err = o.Raw(sql, item.UserId, item.ActivityId).QueryRow(&countAppointment)
  315. if err != nil {
  316. return
  317. }
  318. if countReminder == 0 && countAppointment == 0 {
  319. sql = `DELETE FROM cygx_my_schedule WHERE user_id=? AND activity_id=? `
  320. _, err = o.Raw(sql, item.UserId, item.ActivityId).Exec()
  321. if err != nil {
  322. return
  323. }
  324. }
  325. sql = `DELETE FROM cygx_activity_signup WHERE user_id=? AND activity_id=? `
  326. _, err = o.Raw(sql, item.UserId, item.ActivityId).Exec()
  327. if err != nil {
  328. return
  329. }
  330. itemLog := new(CygxActivitySignupLog)
  331. itemLog.UserId = item.UserId
  332. itemLog.ActivityId = item.ActivityId
  333. itemLog.CreateTime = time.Now()
  334. itemLog.Mobile = item.Mobile
  335. itemLog.Email = item.Email
  336. itemLog.CompanyId = item.CompanyId
  337. itemLog.CompanyName = item.CompanyName
  338. itemLog.Type = 2
  339. lastId, err = o.Insert(itemLog)
  340. return
  341. }
  342. // 详情
  343. func GetActivitySignupDetail(activityId, uid int) (item *CygxActivitySignup, err error) {
  344. o := orm.NewOrm()
  345. sql := `SELECT * FROM cygx_activity_signup WHERE activity_id = ? AND user_id =? `
  346. err = o.Raw(sql, activityId, uid).QueryRow(&item)
  347. return
  348. }
  349. func GetActivitySignuListByUser(condition string, pars []interface{}) (item []*CygxActivitySignup, err error) {
  350. o := orm.NewOrm()
  351. sql := `SELECT *
  352. FROM
  353. cygx_activity_signup
  354. WHERE 1 = 1 ` + condition
  355. _, err = o.Raw(sql, pars).QueryRows(&item)
  356. return
  357. }
  358. // 解除报名限制之后二次报名
  359. func AddActivitySignupByRestrict(item *CygxActivitySignup) (lastId int64, err error) {
  360. o, err := orm.NewOrm().Begin()
  361. if err != nil {
  362. return
  363. }
  364. defer func() {
  365. fmt.Println(err)
  366. if err == nil {
  367. o.Commit()
  368. } else {
  369. o.Rollback()
  370. }
  371. }()
  372. itemMy := new(CygxMySchedule)
  373. itemMy.UserId = item.UserId
  374. itemMy.ActivityId = item.ActivityId
  375. itemMy.CreateTime = time.Now()
  376. itemMy.Mobile = item.Mobile
  377. itemMy.Email = item.Email
  378. itemMy.CompanyId = item.CompanyId
  379. itemMy.CompanyName = item.CompanyName
  380. lastId, err = o.Insert(itemMy)
  381. if err != nil {
  382. return
  383. }
  384. sql := `UPDATE cygx_activity_signup SET do_fail_type = 0 , fail_type=0 WHERE user_id=? AND activity_id=? `
  385. _, err = o.Raw(sql, item.UserId, item.ActivityId).Exec()
  386. itemLog := new(CygxActivitySignupLog)
  387. itemLog.UserId = item.UserId
  388. itemLog.ActivityId = item.ActivityId
  389. itemLog.CreateTime = time.Now()
  390. itemLog.Mobile = item.Mobile
  391. itemLog.Email = item.Email
  392. itemLog.CompanyId = item.CompanyId
  393. itemLog.CompanyName = item.CompanyName
  394. itemLog.Type = 1
  395. lastId, err = o.Insert(itemLog)
  396. return
  397. }
  398. // 列表
  399. func GetActivitySignupListAll() (items []*CygxActivitySignup, err error) {
  400. o := orm.NewOrm()
  401. sql := `SELECT * FROM cygx_activity_signup `
  402. _, err = o.Raw(sql).QueryRows(&items)
  403. return
  404. }
  405. // 修改是否推送消息状态
  406. func UPdateSignup(item *CygxActivitySignup) (err error) {
  407. sql := ` UPDATE cygx_activity_signup SET outbound_mobile= ? , country_code=86 WHERE id = ?`
  408. o := orm.NewOrm()
  409. _, err = o.Raw(sql, item.Mobile, item.Id).Exec()
  410. return
  411. }
  412. // 获取数量
  413. func GetActivityCountByIdWithUid(activityId, Uid int) (count int, err error) {
  414. o := orm.NewOrm()
  415. sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_signup WHERE activity_id = ? AND user_id = ?`
  416. err = o.Raw(sqlCount, activityId, Uid).QueryRow(&count)
  417. return
  418. }
  419. // 获取用户报名数量
  420. func GetActivitySignupNomeetingCount(activityId int) (count int, err error) {
  421. sqlCount := `SELECT
  422. COUNT( 1 ) count
  423. FROM
  424. cygx_activity_signup AS s
  425. INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
  426. WHERE
  427. 1 = 1
  428. AND a.is_limit_people > 0
  429. AND s.is_meeting = 0
  430. AND a.is_submit_meeting = 1
  431. AND a.activity_id = ?`
  432. o := orm.NewOrm()
  433. err = o.Raw(sqlCount, activityId).QueryRow(&count)
  434. return
  435. }
  436. func GetUserMeetingMobile(activityId int) (items []*CygxActivitySignup, err error) {
  437. o := orm.NewOrm()
  438. sql := `SELECT *
  439. FROM
  440. cygx_activity_signup AS s
  441. WHERE
  442. s.is_meeting = 1
  443. AND s.activity_id = ?`
  444. _, err = o.Raw(sql, activityId).QueryRows(&items)
  445. return
  446. }
  447. // 获取用户是否被限制报名
  448. func GetRestrictSignupCountByUid(uid int) (count int, err error) {
  449. sqlCount := `SELECT COUNT( 1 ) count FROM cygx_activity_restrict_signup WHERE user_id = ?`
  450. o := orm.NewOrm()
  451. err = o.Raw(sqlCount, uid).QueryRow(&count)
  452. return
  453. }
  454. // 获取用户爽约次数
  455. func GetActivitySignupNomeetingCountByUid(uid int) (count int, err error) {
  456. sqlCount := `SELECT
  457. COUNT( 1 ) count
  458. FROM
  459. cygx_activity_signup AS s
  460. INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
  461. WHERE
  462. 1 = 1
  463. AND a.is_limit_people > 0
  464. AND s.is_meeting = 0
  465. AND a.is_submit_meeting = 1
  466. AND s.do_fail_type = 0
  467. AND s.user_id = ?`
  468. o := orm.NewOrm()
  469. err = o.Raw(sqlCount, uid).QueryRow(&count)
  470. return
  471. }
  472. // 删除
  473. func DeleteCygxActivityRestrictSignup(uid int) (err error) {
  474. o := orm.NewOrm()
  475. sql := ` DELETE FROM cygx_activity_restrict_signup WHERE user_id=?`
  476. _, err = o.Raw(sql, uid).Exec()
  477. return
  478. }
  479. type CygxActivitySignupList struct {
  480. Id int `orm:"column(id);pk"`
  481. UserId int `description:"用户id"`
  482. ActivityId int `description:"活动ID"`
  483. CompanyName string `description:"公司名称"`
  484. RealName string `description:"姓名"`
  485. CreateTime string `description:"创建时间"`
  486. IsMeeting int `description:"是否到会 ,1是, 0否"`
  487. Operation bool `description:"操作按钮,true,到会,false 未到会"`
  488. Channel int `description:"报名渠道,0 空降、 1小程序报名"`
  489. SellerName string `description:"所属销售"`
  490. Mobile string `description:"手机号"`
  491. Email string `description:"邮箱"`
  492. CompanyId int `description:"公司id"`
  493. SigninTime string `description:"签到时间"`
  494. }
  495. type CygxActivitySignupResp struct {
  496. CompanyName string `description:"公司名称"`
  497. RealName string `description:"姓名"`
  498. IsMeeting int `description:"是否到会 ,1是, 0否"`
  499. SigninTime string `description:"签到时间"`
  500. }
  501. // 获取用户报名列表
  502. func GetActivitySignupNomeetingCountList(activityId int) (items []*CygxActivitySignupList, err error) {
  503. o := orm.NewOrm()
  504. sql := `SELECT
  505. s.*
  506. FROM
  507. cygx_activity_signup AS s
  508. INNER JOIN cygx_activity AS a ON a.activity_id = s.activity_id
  509. WHERE
  510. 1 = 1
  511. AND s.is_meeting = 0
  512. AND a.is_submit_meeting = 1
  513. AND a.activity_id = ?`
  514. _, err = o.Raw(sql, activityId).QueryRows(&items)
  515. return
  516. }
  517. type UserAndCompanyName struct {
  518. UserId int `orm:"column(user_id);pk"`
  519. Mobile string
  520. Email string
  521. CompanyId int
  522. CompanyName string `description:"公司名称"`
  523. CountryCode string `description:"手机国家区号"`
  524. OutboundMobile string `description:"外呼手机号"`
  525. OutboundCountryCode string `description:"外呼手机号区号"`
  526. }
  527. func GetUserAndCompanyNameList(uid int) (item *UserAndCompanyName, err error) {
  528. o := orm.NewOrm()
  529. sql := ` SELECT u.*,c.company_name
  530. FROM wx_user AS u
  531. INNER JOIN company AS c ON c.company_id = u.company_id
  532. WHERE user_id =?`
  533. err = o.Raw(sql, uid).QueryRow(&item)
  534. return
  535. }
  536. type CygxActivityRestrictSignup struct {
  537. Id int `orm:"column(id);pk"`
  538. UserId int `description:"用户id,多个用,隔开"`
  539. CreateTime time.Time `description:"创建时间"`
  540. Mobile string `description:"手机号"`
  541. Email string `description:"邮箱号"`
  542. CompanyId int `description:"公司ID"`
  543. CompanyName string `description:"公司名称"`
  544. IsRestrict int `description:"是否限制报名,1是,0否"`
  545. }
  546. // 添加
  547. func AddCygxActivityRestrictSignup(item *CygxActivityRestrictSignup) (err error) {
  548. o := orm.NewOrm()
  549. _, err = o.Insert(item)
  550. return
  551. }
  552. // 获取列表信息根据手机号分组
  553. func GetCygxActivitySignupByMobileList(condition string) (items []*CygxActivitySignup, err error) {
  554. o := orm.NewOrm()
  555. sql := `SELECT * FROM cygx_activity_signup_detail WHERE 1= 1 ` + condition + ` GROUP BY mobile `
  556. _, err = o.Raw(sql).QueryRows(&items)
  557. return
  558. }
  559. // 修改用户报名的相关信息
  560. func UpdateCygxActivitySignup(wxUser *WxUserItem) (err error) {
  561. o := orm.NewOrm()
  562. sql := `UPDATE cygx_activity_signup_detail SET email=?,company_id=?,company_name=?,user_id=?,real_name=? WHERE mobile=? `
  563. _, err = o.Raw(sql, wxUser.Email, wxUser.CompanyId, wxUser.CompanyName, wxUser.UserId, wxUser.RealName, wxUser.Mobile).Exec()
  564. return
  565. }
  566. // UpdateCygxActivitySignupisMeet 修改易董的活动,用户已到会
  567. func UpdateCygxActivitySignupisMeet(activityId int, mobile string) (err error) {
  568. o := orm.NewOrm()
  569. sql := `UPDATE cygx_activity_signup SET is_meeting=1 WHERE activity_id=? AND mobile = ? `
  570. _, err = o.Raw(sql, activityId, mobile).Exec()
  571. return
  572. }
  573. // UpdateCygxActivitySignupisMeetList 批量修改易董的活动,用户已到会
  574. func UpdateCygxActivitySignupisMeetList(condition string, pars []interface{}) (err error) {
  575. if condition == "" {
  576. return
  577. }
  578. o := orm.NewOrm()
  579. sql := `UPDATE cygx_activity_signup SET is_meeting=1 WHERE 1= 1 ` + condition
  580. _, err = o.Raw(sql, pars).Exec()
  581. return
  582. }
  583. // GetCygxCygxActivitySignupList 获取报名列表信息
  584. func GetActivitySignupList(condition string, pars []interface{}) (items []*CygxActivitySignup, err error) {
  585. sql := `SELECT
  586. *
  587. FROM
  588. cygx_activity_signup AS v
  589. WHERE
  590. 1 = 1 ` + condition
  591. o := orm.NewOrm()
  592. _, err = o.Raw(sql, pars).QueryRows(&items)
  593. return
  594. }
  595. // GetCygxCygxActivitySignupList 获取报名列表信息
  596. func GetActivitySignupInnerActivityList(condition string, pars []interface{}) (items []*CygxActivitySignup, err error) {
  597. sql := `SELECT
  598. *
  599. FROM
  600. cygx_activity_signup AS v
  601. INNER JOIN cygx_activity as a ON a.activity_id = v.activity_id
  602. WHERE
  603. 1 = 1 ` + condition
  604. o := orm.NewOrm()
  605. _, err = o.Raw(sql, pars).QueryRows(&items)
  606. return
  607. }
  608. // UpdateCygxActivitySignupIsMeeting 批量标记用户的到会信息
  609. func UpdateCygxActivitySignupIsMeeting(items []*CygxActivityAttendanceDetail) (err error) {
  610. o := orm.NewOrm()
  611. p, err := o.Raw(` UPDATE cygx_activity_signup SET
  612. is_meeting = 1
  613. WHERE outbound_mobile = ? AND activity_id = ? `).Prepare()
  614. if err != nil {
  615. return
  616. }
  617. defer func() {
  618. _ = p.Close() // 别忘记关闭 statement
  619. }()
  620. for _, v := range items {
  621. _, err = p.Exec(
  622. v.Mobile,
  623. v.ActivityId)
  624. if err != nil {
  625. return
  626. }
  627. }
  628. return
  629. }