activity_meet_detail_log.go 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551
  1. package models
  2. import (
  3. "fmt"
  4. "github.com/beego/beego/v2/client/orm"
  5. "hongze/hongze_cygx/utils"
  6. "strconv"
  7. "strings"
  8. "time"
  9. )
  10. // 报名
  11. type CygxActivityMeetDetailLog struct {
  12. AttendanceId int `orm:"column(attendance_id);pk;"description:"主键ID"`
  13. ActivityId int `description:"活动ID"`
  14. RealName string `description:"姓名"`
  15. Mobile string `description:"手机号"`
  16. CompanyName string `description:"公司名称"`
  17. CompanyId int `description:"公司id 不在数据库的用户为0"`
  18. CreateTime time.Time `description:"创建时间"`
  19. ActivityTime string `description:"活动时间"`
  20. }
  21. // 批量添加
  22. func AddCygxActivityMeetDetailLogMulti(items []*CygxActivityMeetDetailLog) (err error) {
  23. o := orm.NewOrm()
  24. if len(items) > 0 {
  25. //批量添加
  26. _, err = o.InsertMulti(len(items), items)
  27. }
  28. return
  29. }
  30. // 列表
  31. func GetCygxActivityMeetDetailLogList(condition string, pars []interface{}) (items []*CygxActivityMeetDetailLog, err error) {
  32. o := orm.NewOrm()
  33. sql := `SELECT * FROM cygx_activity_meet_detail_log as art WHERE 1= 1 `
  34. if condition != "" {
  35. sql += condition
  36. }
  37. _, err = o.Raw(sql, pars).QueryRows(&items)
  38. return
  39. }
  40. func GetOfflineMeetingDetailListCompanyIdStr(companyIdStr string) (item []*CygxActivityMeetDetailLog, err error) {
  41. if companyIdStr == "" {
  42. return
  43. }
  44. o := orm.NewOrm()
  45. sql := `SELECT * FROM cygx_activity_offline_meeting_detail WHERE company_id IN (` + companyIdStr + `)`
  46. _, err = o.Raw(sql).QueryRows(&item)
  47. return
  48. }
  49. func GetOfflineMeetingDetailListCompanyName(companyName string) (item []*CygxActivityMeetDetailLog, err error) {
  50. o := orm.NewOrm()
  51. sql := `SELECT l.*
  52. FROM
  53. cygx_activity_meet_detail_log AS l INNER JOIN company AS c ON c.company_name = l.company_name
  54. WHERE
  55. l.company_name IN (` + companyName + `) GROUP BY l.company_name`
  56. _, err = o.Raw(sql).QueryRows(&item)
  57. return
  58. }
  59. // 添加
  60. func AddCygxActivityMeetDetailLog(item *CygxActivityMeetDetailLog) (lastId int64, err error) {
  61. o := orm.NewOrm()
  62. lastId, err = o.Insert(item)
  63. return
  64. }
  65. func GetActivityMeetDetailLog(mobileStr string) (item []*CygxActivityMeetDetailLog, err error) {
  66. if mobileStr == "" {
  67. return
  68. }
  69. o := orm.NewOrm()
  70. sql := `SELECT l.*
  71. FROM
  72. cygx_activity_meet_detail_log as l
  73. INNER JOIN wx_user as u ON u.outbound_mobile = l.mobile
  74. WHERE l.mobile IN (` + mobileStr + `) GROUP BY l.mobile `
  75. _, err = o.Raw(sql).QueryRows(&item)
  76. return
  77. }
  78. func GetActivityMeetDetailLogByMobile() (item []*CygxActivityMeetDetailLog, err error) {
  79. o := orm.NewOrm()
  80. sql := `SELECT * FROM cygx_activity_meet_detail_log WHERE mobile !='' GROUP BY mobile `
  81. _, err = o.Raw(sql).QueryRows(&item)
  82. return
  83. }
  84. // 获取数量
  85. func GetActivityMeetDetailLogCount(condition string) (count int, err error) {
  86. o := orm.NewOrm()
  87. sqlCount := ` SELECT COUNT(1) AS count FROM cygx_activity_meet_detail_log WHERE 1=1 `
  88. if condition != "" {
  89. sqlCount += condition
  90. }
  91. err = o.Raw(sqlCount).QueryRow(&count)
  92. return
  93. }
  94. // 报名
  95. type CygxActivityMeetDetailLogCountResp struct {
  96. Mobile string `description:"手机号"`
  97. CompanyId int `description:"公司id 不在数据库的用户为0"`
  98. Count int `description:"公司id 不在数据库的用户为0"`
  99. }
  100. // 获取数量
  101. func GetActivityMeetDetailLogCountCompany(companyIds []int) (item []*CygxActivityMeetDetailLogCountResp, err error) {
  102. lenArr := len(companyIds)
  103. if lenArr == 0 {
  104. return
  105. }
  106. o := orm.NewOrm()
  107. sql := ` SELECT company_id, COUNT(1) AS count FROM cygx_activity_meet_detail_log WHERE 1=1 AND company_id IN (` + utils.GetOrmInReplace(lenArr) + `) GROUP BY company_id`
  108. _, err = o.Raw(sql, companyIds).QueryRows(&item)
  109. return
  110. }
  111. // 获取数量
  112. func GetActivityMeetDetailLogCountMobile(mobiles []string) (item []*CygxActivityMeetDetailLogCountResp, err error) {
  113. lenArr := len(mobiles)
  114. if lenArr == 0 {
  115. return
  116. }
  117. o := orm.NewOrm()
  118. sql := ` SELECT mobile, COUNT(1) AS count FROM cygx_activity_meet_detail_log WHERE 1=1 AND mobile IN (` + utils.GetOrmInReplace(lenArr) + `) GROUP BY company_id`
  119. _, err = o.Raw(sql, mobiles).QueryRows(&item)
  120. return
  121. }
  122. // 修改公司参会数量
  123. func UpdateActivityMeetDetailLog(companyName string, num int) (err error) {
  124. sql := ` UPDATE cygx_activity_meet_detail_log SET company_meet_num= ? WHERE company_name = ?`
  125. o := orm.NewOrm()
  126. _, err = o.Raw(sql, num, companyName).Exec()
  127. return
  128. }
  129. // 修改个人参会数量
  130. func UpdateActivityMeetDetailLogByUser(mobile string, num int) (err error) {
  131. sql := ` UPDATE cygx_activity_meet_detail_log SET user_meet_num= ? WHERE mobile = ?`
  132. o := orm.NewOrm()
  133. _, err = o.Raw(sql, num, mobile).Exec()
  134. return
  135. }
  136. // 添加线上到会记录(下载使用)
  137. func AddCygxActivityMeetDetailLogOnline(list []*CygxActivityAttendanceDetail, activityId int) (err error) {
  138. o, err := orm.NewOrm().Begin()
  139. if err != nil {
  140. return
  141. }
  142. defer func() {
  143. fmt.Println(err)
  144. if err == nil {
  145. o.Commit()
  146. } else {
  147. o.Rollback()
  148. }
  149. }()
  150. var CompanyName string
  151. var MobileStr string
  152. var items []*CygxActivityMeetDetailLog
  153. //删除原有数据
  154. sql := ` DELETE FROM cygx_activity_meet_detail_log WHERE activity_id = ?`
  155. _, err = o.Raw(sql, activityId).Exec()
  156. if err != nil {
  157. return
  158. }
  159. //插入新的数据
  160. for _, v := range list {
  161. item := new(CygxActivityMeetDetailLog)
  162. item.ActivityId = v.ActivityId
  163. item.Mobile = v.Mobile
  164. item.CompanyName = v.CompanyName
  165. item.CompanyId = v.CompanyId
  166. item.CreateTime = v.CreateTime
  167. CompanyName += "'" + v.CompanyName + "',"
  168. MobileStr += v.Mobile + ","
  169. items = append(items, item)
  170. }
  171. CompanyName = strings.TrimRight(CompanyName, ",")
  172. MobileStr = strings.TrimRight(MobileStr, ",")
  173. _, err = o.InsertMulti(1, items)
  174. listCompany, err := GetOfflineMeetingDetailListCompanyName(CompanyName)
  175. if err != nil {
  176. return
  177. }
  178. //修改公司对应的数量
  179. var condition string
  180. for _, v := range listCompany {
  181. var total int
  182. condition = ` AND company_name = '` + v.CompanyName + `' `
  183. total, err = GetActivityMeetDetailLogCount(condition)
  184. if err != nil {
  185. return
  186. }
  187. sql := ` UPDATE cygx_activity_meet_detail_log SET company_meet_num= ? WHERE company_name = ?`
  188. _, err = o.Raw(sql, total, v.CompanyName).Exec()
  189. if err != nil {
  190. return
  191. }
  192. }
  193. listMobile, err := GetActivityMeetDetailLog(MobileStr)
  194. if err != nil {
  195. return
  196. }
  197. //修改个人对应的数量
  198. for _, v := range listMobile {
  199. var total int
  200. condition = ` AND mobile = '` + v.Mobile + `' `
  201. total, err = GetActivityMeetDetailLogCount(condition)
  202. if err != nil {
  203. return
  204. }
  205. sql := ` UPDATE cygx_activity_meet_detail_log SET user_meet_num= ? WHERE mobile = ?`
  206. _, err = o.Raw(sql, total, v.Mobile).Exec()
  207. if err != nil {
  208. return
  209. }
  210. }
  211. return
  212. }
  213. // 添加线上到会记录
  214. func AddCygxActivityMeetDetailLogOnlineByListNew(list []*CygxActivityAttendanceDetail, activityIds string) (err error) {
  215. o, err := orm.NewOrm().Begin()
  216. if err != nil {
  217. return
  218. }
  219. defer func() {
  220. fmt.Println(err)
  221. if err == nil {
  222. o.Commit()
  223. } else {
  224. o.Rollback()
  225. }
  226. }()
  227. var CompanyName string
  228. var MobileStr string
  229. var items []*CygxActivityMeetDetailLog
  230. //删除原有数据
  231. sql := ` DELETE FROM cygx_activity_meet_detail_log WHERE activity_id IN (` + activityIds + `)`
  232. _, err = o.Raw(sql).Exec()
  233. if err != nil {
  234. return
  235. }
  236. //插入新的数据
  237. for _, v := range list {
  238. item := new(CygxActivityMeetDetailLog)
  239. item.ActivityId = v.ActivityId
  240. item.Mobile = v.Mobile
  241. fmt.Println(v.CompanyName)
  242. item.CompanyName = v.CompanyName
  243. item.CompanyId = v.CompanyId
  244. item.ActivityTime = v.ActivityTime
  245. item.CreateTime = v.CreateTime
  246. if strings.Index(CompanyName, v.CompanyName) == -1 && v.CompanyName != "" {
  247. CompanyName += "'" + v.CompanyName + "',"
  248. }
  249. if strings.Index(MobileStr, v.Mobile) == -1 && v.Mobile != "" {
  250. MobileStr += v.Mobile + ","
  251. }
  252. items = append(items, item)
  253. }
  254. CompanyName = strings.TrimRight(CompanyName, ",")
  255. MobileStr = strings.TrimRight(MobileStr, ",")
  256. _, err = o.InsertMulti(1, items)
  257. listCompany, err := GetOfflineMeetingDetailListCompanyName(CompanyName)
  258. fmt.Println("公司数量", len(listCompany))
  259. if err != nil {
  260. return
  261. }
  262. //修改公司对应的数量
  263. var condition string
  264. for _, v := range listCompany {
  265. var total int
  266. condition = ` AND company_name = '` + v.CompanyName + `' `
  267. total, err = GetActivityMeetDetailLogCount(condition)
  268. if err != nil {
  269. return
  270. }
  271. sql := ` UPDATE cygx_activity_meet_detail_log SET company_meet_num= ? WHERE company_name = ?`
  272. _, err = o.Raw(sql, total, v.CompanyName).Exec()
  273. fmt.Println("处理公司", v.CompanyName)
  274. if err != nil {
  275. return
  276. }
  277. }
  278. listMobile, err := GetActivityMeetDetailLog(MobileStr)
  279. fmt.Println("用户数量", len(listMobile))
  280. if err != nil {
  281. return
  282. }
  283. //修改个人对应的数量
  284. for _, v := range listMobile {
  285. var total int
  286. condition = ` AND mobile = '` + v.Mobile + `' `
  287. total, err = GetActivityMeetDetailLogCount(condition)
  288. if err != nil {
  289. return
  290. }
  291. sql := ` UPDATE cygx_activity_meet_detail_log SET user_meet_num= ? WHERE mobile = ?`
  292. _, err = o.Raw(sql, total, v.Mobile).Exec()
  293. fmt.Println("处理用户", v.Mobile)
  294. if err != nil {
  295. return
  296. }
  297. }
  298. fmt.Println("user_end")
  299. return
  300. }
  301. // 添加线下到会记录
  302. func AddCygxActivityMeetDetailLogOffline(activityId int) (err error) {
  303. o := orm.NewOrm()
  304. to, err := o.Begin()
  305. if err != nil {
  306. return
  307. }
  308. defer func() {
  309. if err != nil {
  310. fmt.Println(err)
  311. _ = to.Rollback()
  312. } else {
  313. _ = to.Commit()
  314. }
  315. }()
  316. var condition string
  317. var pars []interface{}
  318. condition = ` AND activity_id = ? `
  319. pars = append(pars, activityId)
  320. listOfflineMeeting, err := GetOfflineMeetingList(condition, pars)
  321. if err != nil {
  322. return
  323. }
  324. var meetingUids string
  325. for _, v := range listOfflineMeeting {
  326. meetingUids += strconv.Itoa(v.UserId) + ","
  327. }
  328. meetingUids = strings.TrimRight(meetingUids, ",")
  329. if meetingUids == "" {
  330. meetingUids = "-1"
  331. }
  332. var CompanyIdStr string
  333. var MobileStr string
  334. var items []*CygxActivityMeetDetailLog
  335. list, err := GetOfflineMeetingListByUser(meetingUids, activityId)
  336. fmt.Println(len(list))
  337. if err != nil {
  338. return
  339. }
  340. //删除原有数据
  341. sql := ` DELETE FROM cygx_activity_meet_detail_log WHERE activity_id = ?`
  342. _, err = to.Raw(sql, activityId).Exec()
  343. if err != nil {
  344. return
  345. }
  346. //插入新的数据
  347. for _, v := range list {
  348. item := new(CygxActivityMeetDetailLog)
  349. item.ActivityId = v.ActivityId
  350. item.Mobile = v.Mobile
  351. item.CompanyName = v.CompanyName
  352. item.CompanyId = v.CompanyId
  353. item.CreateTime = v.CreateTime
  354. CompanyIdStr += strconv.Itoa(v.CompanyId) + ","
  355. if v.Mobile != "" {
  356. MobileStr += v.Mobile + ","
  357. }
  358. items = append(items, item)
  359. }
  360. CompanyIdStr = strings.TrimRight(CompanyIdStr, ",")
  361. MobileStr = strings.TrimRight(MobileStr, ",")
  362. for _, v := range items {
  363. _, err = to.Insert(v)
  364. if err != nil {
  365. return
  366. }
  367. }
  368. listCompanyId, err := GetOfflineMeetingDetailListCompanyIdStr(CompanyIdStr)
  369. if err != nil {
  370. return
  371. }
  372. //修改公司对应的数量
  373. //var condition string
  374. for _, v := range listCompanyId {
  375. var total int
  376. condition = ` AND company_name = '` + v.CompanyName + `' `
  377. total, err = GetActivityMeetDetailLogCount(condition)
  378. if err != nil {
  379. return
  380. }
  381. sql := ` UPDATE cygx_activity_meet_detail_log SET company_meet_num= ? WHERE company_name = ?`
  382. _, err = to.Raw(sql, total, v.CompanyName).Exec()
  383. if err != nil {
  384. return
  385. }
  386. }
  387. listMobile, err := GetActivityMeetDetailLog(MobileStr)
  388. if err != nil {
  389. return
  390. }
  391. //修改个人对应的数量
  392. for _, v := range listMobile {
  393. var total int
  394. condition = ` AND mobile = '` + v.Mobile + `' `
  395. total, err = GetActivityMeetDetailLogCount(condition)
  396. if err != nil {
  397. return
  398. }
  399. sql := ` UPDATE cygx_activity_meet_detail_log SET user_meet_num= ? WHERE mobile = ?`
  400. _, err = to.Raw(sql, total, v.Mobile).Exec()
  401. if err != nil {
  402. return
  403. }
  404. }
  405. return
  406. }
  407. // 添加线上到会记录
  408. func AddCygxActivityMeetDetailLogOnlineByList(list []*CygxActivityAttendanceDetail, activityIds string) (err error) {
  409. o, err := orm.NewOrm().Begin()
  410. if err != nil {
  411. return
  412. }
  413. defer func() {
  414. fmt.Println(err)
  415. if err == nil {
  416. o.Commit()
  417. } else {
  418. o.Rollback()
  419. }
  420. }()
  421. var CompanyName string
  422. var MobileStr string
  423. var items []*CygxActivityMeetDetailLog
  424. //删除原有数据
  425. sql := ` DELETE FROM cygx_activity_meet_detail_log WHERE activity_id IN (` + activityIds + `)`
  426. _, err = o.Raw(sql).Exec()
  427. if err != nil {
  428. return
  429. }
  430. //插入新的数据
  431. for _, v := range list {
  432. item := new(CygxActivityMeetDetailLog)
  433. item.ActivityId = v.ActivityId
  434. item.Mobile = v.Mobile
  435. fmt.Println(v.CompanyName)
  436. item.CompanyName = v.CompanyName
  437. item.CompanyId = v.CompanyId
  438. item.ActivityTime = v.ActivityTime
  439. item.CreateTime = v.CreateTime
  440. if strings.Index(CompanyName, v.CompanyName) == -1 && v.CompanyName != "" {
  441. CompanyName += "'" + v.CompanyName + "',"
  442. }
  443. if strings.Index(MobileStr, v.Mobile) == -1 && v.Mobile != "" {
  444. MobileStr += v.Mobile + ","
  445. }
  446. items = append(items, item)
  447. }
  448. CompanyName = strings.TrimRight(CompanyName, ",")
  449. MobileStr = strings.TrimRight(MobileStr, ",")
  450. _, err = o.InsertMulti(1, items)
  451. listCompany, err := GetOfflineMeetingDetailListCompanyName(CompanyName)
  452. fmt.Println("公司数量", len(listCompany))
  453. if err != nil {
  454. return
  455. }
  456. //修改公司对应的数量
  457. var condition string
  458. for _, v := range listCompany {
  459. var total int
  460. condition = ` AND company_name = '` + v.CompanyName + `' `
  461. total, err = GetActivityMeetDetailLogCount(condition)
  462. if err != nil {
  463. return
  464. }
  465. sql := ` UPDATE cygx_activity_meet_detail_log SET company_meet_num= ? WHERE company_name = ?`
  466. _, err = o.Raw(sql, total, v.CompanyName).Exec()
  467. fmt.Println("处理公司", v.CompanyName)
  468. if err != nil {
  469. return
  470. }
  471. }
  472. listMobile, err := GetActivityMeetDetailLog(MobileStr)
  473. fmt.Println("用户数量", len(listMobile))
  474. if err != nil {
  475. return
  476. }
  477. //修改个人对应的数量
  478. for _, v := range listMobile {
  479. var total int
  480. condition = ` AND mobile = '` + v.Mobile + `' `
  481. total, err = GetActivityMeetDetailLogCount(condition)
  482. if err != nil {
  483. return
  484. }
  485. sql := ` UPDATE cygx_activity_meet_detail_log SET user_meet_num= ? WHERE mobile = ?`
  486. _, err = o.Raw(sql, total, v.Mobile).Exec()
  487. fmt.Println("处理用户", v.Mobile)
  488. if err != nil {
  489. return
  490. }
  491. }
  492. fmt.Println("user_end")
  493. return
  494. }
  495. // UpdateActivitySpecialSignupNumMulti 批量修改个人参会数量
  496. func UpdateCygxActivityMeetDetailLogMobileNumMulti(items []*CygxActivityMeetDetailLogCountResp) (err error) {
  497. o := orm.NewOrm()
  498. p, err := o.Raw("UPDATE cygx_activity_meet_detail_log SET user_meet_num = ? WHERE mobile = ?").Prepare()
  499. if err != nil {
  500. return
  501. }
  502. defer func() {
  503. _ = p.Close()
  504. }()
  505. for _, v := range items {
  506. _, err = p.Exec(v.Count, v.Mobile)
  507. if err != nil {
  508. return
  509. }
  510. }
  511. return
  512. }
  513. // UpdateActivitySpecialSignupNumMulti 批量修改机构参会数量
  514. func UpdateCygxActivityMeetDetailLogCompanyNumMulti(items []*CygxActivityMeetDetailLogCountResp) (err error) {
  515. o := orm.NewOrm()
  516. p, err := o.Raw("UPDATE cygx_activity_meet_detail_log SET company_meet_num = ? WHERE company_id = ?").Prepare()
  517. if err != nil {
  518. return
  519. }
  520. defer func() {
  521. _ = p.Close()
  522. }()
  523. for _, v := range items {
  524. _, err = p.Exec(v.Count, v.CompanyId)
  525. if err != nil {
  526. return
  527. }
  528. }
  529. return
  530. }