activity_meet_detail_log.go 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. package models
  2. import (
  3. "fmt"
  4. "github.com/beego/beego/v2/client/orm"
  5. "strings"
  6. "time"
  7. )
  8. //报名
  9. type CygxActivityMeetDetailLog struct {
  10. AttendanceId int `orm:"column(attendance_id);pk;"description:"主键ID"`
  11. ActivityId int `description:"活动ID"`
  12. RealName string `description:"姓名"`
  13. Mobile string `description:"手机号"`
  14. CompanyName string `description:"公司名称"`
  15. CompanyId int `description:"公司id 不在数据库的用户为0"`
  16. CreateTime time.Time `description:"创建时间"`
  17. }
  18. func GetOfflineMeetingDetailListCompanyIdStr(companyIdStr string) (item []*CygxActivityMeetDetailLog, err error) {
  19. o := orm.NewOrm()
  20. sql := `SELECT * FROM cygx_activity_offline_meeting_detail WHERE company_id IN (` + companyIdStr + `)`
  21. _, err = o.Raw(sql).QueryRows(&item)
  22. return
  23. }
  24. func GetOfflineMeetingDetailListCompanyName(companyName string) (item []*CygxActivityMeetDetailLog, err error) {
  25. o := orm.NewOrm()
  26. sql := `SELECT l.*
  27. FROM
  28. cygx_activity_meet_detail_log AS l INNER JOIN company AS c ON c.company_name = l.company_name
  29. WHERE
  30. l.company_name IN (` + companyName + `) GROUP BY l.company_name`
  31. _, err = o.Raw(sql).QueryRows(&item)
  32. return
  33. }
  34. //添加
  35. func AddCygxActivityMeetDetailLog(item *CygxActivityMeetDetailLog) (lastId int64, err error) {
  36. o := orm.NewOrm()
  37. lastId, err = o.Insert(item)
  38. return
  39. }
  40. func GetActivityMeetDetailLog(mobileStr string) (item []*CygxActivityMeetDetailLog, err error) {
  41. o := orm.NewOrm()
  42. sql := `SELECT l.*
  43. FROM
  44. cygx_activity_meet_detail_log as l
  45. INNER JOIN wx_user as u ON u.outbound_mobile = l.mobile
  46. WHERE l.mobile IN (` + mobileStr + `) GROUP BY l.mobile `
  47. _, err = o.Raw(sql).QueryRows(&item)
  48. return
  49. }
  50. func GetActivityMeetDetailLogByMobile() (item []*CygxActivityMeetDetailLog, err error) {
  51. o := orm.NewOrm()
  52. sql := `SELECT * FROM cygx_activity_meet_detail_log WHERE mobile !='' GROUP BY mobile `
  53. _, err = o.Raw(sql).QueryRows(&item)
  54. return
  55. }
  56. //获取数量
  57. func GetActivityMeetDetailLogCount(condition string) (count int, err error) {
  58. o := orm.NewOrm()
  59. sqlCount := ` SELECT COUNT(1) AS count FROM cygx_activity_meet_detail_log WHERE 1=1 `
  60. if condition != "" {
  61. sqlCount += condition
  62. }
  63. err = o.Raw(sqlCount).QueryRow(&count)
  64. return
  65. }
  66. //修改公司参会数量
  67. func UpdateActivityMeetDetailLog(companyName string, num int) (err error) {
  68. sql := ` UPDATE cygx_activity_meet_detail_log SET company_meet_num= ? WHERE company_name = ?`
  69. o := orm.NewOrm()
  70. _, err = o.Raw(sql, num, companyName).Exec()
  71. return
  72. }
  73. //修改个人参会数量
  74. func UpdateActivityMeetDetailLogByUser(mobile string, num int) (err error) {
  75. sql := ` UPDATE cygx_activity_meet_detail_log SET user_meet_num= ? WHERE mobile = ?`
  76. o := orm.NewOrm()
  77. _, err = o.Raw(sql, num, mobile).Exec()
  78. return
  79. }
  80. //添加线上到会记录(下载使用)
  81. func AddCygxActivityMeetDetailLogOnline(list []*CygxActivityAttendanceDetail, activityId int) (err error) {
  82. o, err := orm.NewOrm().Begin()
  83. if err != nil {
  84. return
  85. }
  86. defer func() {
  87. fmt.Println(err)
  88. if err == nil {
  89. o.Commit()
  90. } else {
  91. o.Rollback()
  92. }
  93. }()
  94. var CompanyName string
  95. var MobileStr string
  96. var items []*CygxActivityMeetDetailLog
  97. //删除原有数据
  98. sql := ` DELETE FROM cygx_activity_meet_detail_log WHERE activity_id = ?`
  99. _, err = o.Raw(sql, activityId).Exec()
  100. if err != nil {
  101. return
  102. }
  103. //插入新的数据
  104. for _, v := range list {
  105. item := new(CygxActivityMeetDetailLog)
  106. item.ActivityId = v.ActivityId
  107. item.Mobile = v.Mobile
  108. item.CompanyName = v.CompanyName
  109. item.CompanyId = v.CompanyId
  110. item.CreateTime = v.CreateTime
  111. CompanyName += "'" + v.CompanyName + "',"
  112. MobileStr += v.Mobile + ","
  113. items = append(items, item)
  114. }
  115. CompanyName = strings.TrimRight(CompanyName, ",")
  116. MobileStr = strings.TrimRight(MobileStr, ",")
  117. _, err = o.InsertMulti(1, items)
  118. listCompany, err := GetOfflineMeetingDetailListCompanyName(CompanyName)
  119. if err != nil {
  120. return
  121. }
  122. //修改公司对应的数量
  123. var condition string
  124. for _, v := range listCompany {
  125. var total int
  126. condition = ` AND company_name = '` + v.CompanyName + `' `
  127. total, err = GetActivityMeetDetailLogCount(condition)
  128. if err != nil {
  129. return
  130. }
  131. sql := ` UPDATE cygx_activity_meet_detail_log SET company_meet_num= ? WHERE company_name = ?`
  132. _, err = o.Raw(sql, total, v.CompanyName).Exec()
  133. if err != nil {
  134. return
  135. }
  136. }
  137. listMobile, err := GetActivityMeetDetailLog(MobileStr)
  138. if err != nil {
  139. return
  140. }
  141. //修改个人对应的数量
  142. for _, v := range listMobile {
  143. var total int
  144. condition = ` AND mobile = '` + v.Mobile + `' `
  145. total, err = GetActivityMeetDetailLogCount(condition)
  146. if err != nil {
  147. return
  148. }
  149. sql := ` UPDATE cygx_activity_meet_detail_log SET user_meet_num= ? WHERE mobile = ?`
  150. _, err = o.Raw(sql, total, v.Mobile).Exec()
  151. if err != nil {
  152. return
  153. }
  154. }
  155. return
  156. }
  157. //添加线上到会记录
  158. func AddCygxActivityMeetDetailLogOnlineByList(list []*CygxActivityAttendanceDetail, activityIds string) (err error) {
  159. o, err := orm.NewOrm().Begin()
  160. if err != nil {
  161. return
  162. }
  163. defer func() {
  164. fmt.Println(err)
  165. if err == nil {
  166. o.Commit()
  167. } else {
  168. o.Rollback()
  169. }
  170. }()
  171. var CompanyName string
  172. var MobileStr string
  173. var items []*CygxActivityMeetDetailLog
  174. //删除原有数据
  175. sql := ` DELETE FROM cygx_activity_meet_detail_log WHERE activity_id IN (` + activityIds + `)`
  176. _, err = o.Raw(sql).Exec()
  177. if err != nil {
  178. return
  179. }
  180. //插入新的数据
  181. for _, v := range list {
  182. item := new(CygxActivityMeetDetailLog)
  183. item.ActivityId = v.ActivityId
  184. item.Mobile = v.Mobile
  185. fmt.Println(v.CompanyName)
  186. item.CompanyName = v.CompanyName
  187. item.CompanyId = v.CompanyId
  188. item.CreateTime = v.CreateTime
  189. if strings.Index(CompanyName, v.CompanyName) == -1 && v.CompanyName != "" {
  190. CompanyName += "'" + v.CompanyName + "',"
  191. }
  192. if strings.Index(MobileStr, v.Mobile) == -1 && v.Mobile != "" {
  193. MobileStr += v.Mobile + ","
  194. }
  195. items = append(items, item)
  196. }
  197. CompanyName = strings.TrimRight(CompanyName, ",")
  198. MobileStr = strings.TrimRight(MobileStr, ",")
  199. _, err = o.InsertMulti(1, items)
  200. listCompany, err := GetOfflineMeetingDetailListCompanyName(CompanyName)
  201. fmt.Println("公司数量", len(listCompany))
  202. if err != nil {
  203. return
  204. }
  205. //修改公司对应的数量
  206. var condition string
  207. for _, v := range listCompany {
  208. var total int
  209. condition = ` AND company_name = '` + v.CompanyName + `' `
  210. total, err = GetActivityMeetDetailLogCount(condition)
  211. if err != nil {
  212. return
  213. }
  214. sql := ` UPDATE cygx_activity_meet_detail_log SET company_meet_num= ? WHERE company_name = ?`
  215. _, err = o.Raw(sql, total, v.CompanyName).Exec()
  216. fmt.Println("处理公司", v.CompanyName)
  217. if err != nil {
  218. return
  219. }
  220. }
  221. listMobile, err := GetActivityMeetDetailLog(MobileStr)
  222. fmt.Println("用户数量", len(listMobile))
  223. if err != nil {
  224. return
  225. }
  226. //修改个人对应的数量
  227. for _, v := range listMobile {
  228. var total int
  229. condition = ` AND mobile = '` + v.Mobile + `' `
  230. total, err = GetActivityMeetDetailLogCount(condition)
  231. if err != nil {
  232. return
  233. }
  234. sql := ` UPDATE cygx_activity_meet_detail_log SET user_meet_num= ? WHERE mobile = ?`
  235. _, err = o.Raw(sql, total, v.Mobile).Exec()
  236. fmt.Println("处理用户", v.Mobile)
  237. if err != nil {
  238. return
  239. }
  240. }
  241. fmt.Println("user_end")
  242. return
  243. }