activity_meet_detail_log.go 7.3 KB

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