yidong.go 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "hongze/hongze_open_api/models/request/yidong"
  6. cygxActivity "hongze/hongze_open_api/models/tables/cygx_activity"
  7. "hongze/hongze_open_api/services/alarm_msg"
  8. servicesYidong "hongze/hongze_open_api/services/yidong"
  9. "hongze/hongze_open_api/utils"
  10. "math"
  11. "strconv"
  12. "strings"
  13. "time"
  14. )
  15. // 易董
  16. type YiDongController struct {
  17. BaseCommon
  18. }
  19. // YiDongController
  20. // @Title 易董提交报名用户审核接口
  21. // @Description 易董提交报名用户审核接口
  22. // @Param request body yidong.ActivityExamineReq true "type json string"
  23. // @Success 200 创建成功
  24. // @router /activity/examine/signup [post]
  25. func (c *YiDongController) ActivityExamine() {
  26. var req yidong.ActivityExamineReq
  27. err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
  28. if err != nil {
  29. c.FailWithMessage("参数解析异常")
  30. return
  31. }
  32. activityIdYiDong := req.ActivityId
  33. timeInt := req.Time
  34. list := req.List
  35. appid := req.Appid
  36. timeUnix := time.Now().Unix() //当前格林威治时间,int64类型
  37. timestamp := int64(timeInt)
  38. if math.Abs(float64(timeUnix-timestamp)) > 600 {
  39. c.FailWithMessage("当前时间异常,请调整设备时间与北京时间一致:" + strconv.Itoa(timeInt))
  40. return
  41. }
  42. //校验 APPID 与ip白名单
  43. ip := c.Ctx.Input.IP()
  44. err = servicesYidong.CheckAppidAndIp(appid, ip)
  45. if err != nil {
  46. c.FailWithMessage(err.Error())
  47. return
  48. }
  49. //校验 签名
  50. signStr := servicesYidong.GetSign(activityIdYiDong, timeInt)
  51. fmt.Println("____")
  52. fmt.Println(signStr)
  53. ownSign := req.Sign
  54. if ownSign != signStr {
  55. c.FailWithMessage("签名错误!")
  56. return
  57. }
  58. activityInfo, err := cygxActivity.GetAddActivityInfoById(activityIdYiDong)
  59. if err != nil {
  60. c.FailWithMessage("会议id异常:" + activityIdYiDong)
  61. return
  62. }
  63. activityId := activityInfo.ActivityId
  64. var examineMobile string
  65. var delMyMobile string //审核不通过需要删除日程的手机号
  66. var itemsLog []*cygxActivity.CygxYidongActivityExamineStatus
  67. for _, v := range list {
  68. var dateTxt = []byte(v.Mobile)
  69. resultDe := utils.DesBase64Decrypt(dateTxt)
  70. deMobile := string(resultDe)
  71. if deMobile == "" {
  72. go alarm_msg.SendAlarmMsg("加密手机号解密失败:"+v.Mobile, 3)
  73. c.FailWithMessage("加密手机号解密失败:" + v.Mobile)
  74. return
  75. }
  76. examineMobile += "'" + deMobile + "'" + ","
  77. itemlog := new(cygxActivity.CygxYidongActivityExamineStatus)
  78. //记录日志
  79. itemlog.ActivityId = activityId
  80. itemlog.YidongActivityId = activityIdYiDong
  81. itemlog.CreateTime = time.Now()
  82. itemlog.ExamineTime = v.CreateTime
  83. itemlog.Mobile = deMobile
  84. itemlog.YidongExamineStatus = v.ExamineStatus
  85. itemsLog = append(itemsLog, itemlog)
  86. }
  87. //记录日志
  88. err = cygxActivity.AddActivityItemsLogNumMulti(itemsLog)
  89. if err != nil {
  90. c.FailWithMessage("修改活动审核状态失败:" + activityIdYiDong)
  91. go alarm_msg.SendAlarmMsg("修改活动审核状态失败AddActivityItemsLogNumMulti:"+err.Error()+"活动ID"+activityIdYiDong, 3)
  92. return
  93. }
  94. //以下处理传过来的逻辑
  95. // 获取已经报名了的用户列表
  96. signupList, err := cygxActivity.GetActivitySignupListByActivity(activityId)
  97. if err != nil {
  98. c.FailWithMessage("会议id异常:" + activityIdYiDong)
  99. return
  100. }
  101. mapSignUp := make(map[string]string)
  102. for _, v := range signupList {
  103. mapSignUp[v.Mobile] = v.Mobile
  104. }
  105. // 获取我的日程列表
  106. myScheduleList, err := cygxActivity.GetCygxMyScheduleList(activityId)
  107. if err != nil {
  108. c.FailWithMessage("会议id异常:" + activityIdYiDong)
  109. return
  110. }
  111. mapMyScheduleList := make(map[string]string)
  112. for _, v := range myScheduleList {
  113. mapMyScheduleList[v.Mobile] = v.Mobile
  114. }
  115. examineMobile = strings.TrimRight(examineMobile, ",")
  116. userList, err := cygxActivity.GetUserListByMobile(examineMobile)
  117. if err != nil {
  118. c.FailWithMessage("操作失败,用户信息不存在")
  119. return
  120. }
  121. mapUserinfo := make(map[string]*cygxActivity.CygxActivitySignup)
  122. mapMySchedule := make(map[string]*cygxActivity.CygxMySchedule)
  123. for _, v := range userList {
  124. item := new(cygxActivity.CygxActivitySignup)
  125. item.UserId = v.UserId
  126. item.RealName = v.RealName
  127. item.SellerName = v.SellerName
  128. item.ActivityId = activityId
  129. item.CreateTime = time.Now()
  130. item.Mobile = v.Mobile
  131. item.Email = v.Email
  132. item.CompanyId = v.CompanyId
  133. item.CompanyName = v.CompanyName
  134. item.Source = 3
  135. //优先绑定用户修改过的外呼手机号
  136. if v.OutboundMobile != "" {
  137. item.OutboundMobile = v.OutboundMobile
  138. if v.OutboundCountryCode == "" {
  139. item.CountryCode = "86"
  140. } else {
  141. item.CountryCode = v.OutboundCountryCode
  142. }
  143. } else {
  144. item.OutboundMobile = v.Mobile
  145. if v.CountryCode == "" {
  146. item.CountryCode = "86"
  147. } else {
  148. item.CountryCode = v.CountryCode
  149. }
  150. }
  151. item.SignupType = 1
  152. mapUserinfo[v.Mobile] = item
  153. //添加我的日程
  154. itemMySchedule := new(cygxActivity.CygxMySchedule)
  155. itemMySchedule.UserId = v.UserId
  156. itemMySchedule.ActivityId = activityId
  157. itemMySchedule.CreateTime = time.Now()
  158. itemMySchedule.Mobile = v.Mobile
  159. itemMySchedule.Email = v.Email
  160. itemMySchedule.CompanyId = v.CompanyId
  161. itemMySchedule.CompanyName = v.CompanyName
  162. mapMySchedule[v.Mobile] = itemMySchedule
  163. }
  164. var items []*cygxActivity.ExamineStatusReq
  165. var itemsAdd []*cygxActivity.CygxActivitySignup
  166. var itemsMyAdd []*cygxActivity.CygxMySchedule
  167. for _, v := range list {
  168. item := new(cygxActivity.ExamineStatusReq)
  169. var dateTxt = []byte(v.Mobile)
  170. resultDe := utils.DesBase64Decrypt(dateTxt)
  171. deMobile := string(resultDe)
  172. if mapSignUp[deMobile] != "" {
  173. item.ActivityId = activityId
  174. item.Mobile = deMobile
  175. item.ExamineStatus = v.ExamineStatus
  176. items = append(items, item)
  177. } else {
  178. if mapUserinfo[deMobile] != nil {
  179. mapUserinfo[deMobile].YidongExamineStatus = v.ExamineStatus
  180. itemsAdd = append(itemsAdd, mapUserinfo[deMobile])
  181. }
  182. }
  183. //处理我的日程
  184. if mapMyScheduleList[deMobile] != "" {
  185. if v.ExamineStatus != 1 {
  186. delMyMobile += "'" + deMobile + "'" + ","
  187. }
  188. } else {
  189. if mapMySchedule[deMobile] != nil {
  190. itemsMyAdd = append(itemsMyAdd, mapMySchedule[deMobile])
  191. }
  192. }
  193. }
  194. //处理要删除的日程
  195. delMyMobile = strings.TrimRight(delMyMobile, ",")
  196. if delMyMobile != "" {
  197. fmt.Println("删除日程")
  198. err = cygxActivity.DelCygxMyScheduleList(delMyMobile, activityId)
  199. if err != nil {
  200. go alarm_msg.SendAlarmMsg("处理要删除的日程失败 DelCygxMyScheduleList:"+err.Error()+"活动ID"+activityIdYiDong, 3)
  201. }
  202. }
  203. //修改审核状态
  204. err = cygxActivity.UpdateActivitySignupNumMulti(items)
  205. if err != nil {
  206. fmt.Println(err, "UpdateActivitySignupNumMulti")
  207. go alarm_msg.SendAlarmMsg("修改活动审核状态失败:"+err.Error()+"活动ID"+activityIdYiDong, 3)
  208. }
  209. // 批量添加报名信息
  210. err = cygxActivity.AddActivitySignupNumMulti(itemsAdd)
  211. if err != nil {
  212. fmt.Println(err, "AddActivitySignupNumMulti")
  213. go alarm_msg.SendAlarmMsg("修改活动审核状态失败:"+err.Error()+"活动ID"+activityIdYiDong, 3)
  214. }
  215. // 批量添加我的日程
  216. err = cygxActivity.AddCygxMyScheduleLNumMulti(itemsMyAdd)
  217. if err != nil {
  218. fmt.Println(err, "AddCygxMyScheduleLNumMulti")
  219. go alarm_msg.SendAlarmMsg("修改活动审核状态失败:"+err.Error()+"活动ID"+activityIdYiDong, 3)
  220. }
  221. c.OkWithMessage("操作成功")
  222. }
  223. func init23() {
  224. //allow 59.46.229.165;
  225. //allow 123.185.222.0/24;
  226. //allow 123.185.223.0/24;
  227. //allow 59.36.22.17;
  228. //allow 120.86.187.82;
  229. //202.105.122.162
  230. var ipstr string
  231. var ipstrs string
  232. ipstr = "123.185.223."
  233. for i := 0; i <= 24; i++ {
  234. fmt.Println(i)
  235. ipstrs += ipstr + strconv.Itoa(i) + ","
  236. //ipstr += ipstr + strconv.Itoa(i)
  237. }
  238. fmt.Println(ipstrs)
  239. }
  240. // YiDongController
  241. // @Title 易董提交报名时,获取用户信息接口
  242. // @Description 易董提交报名时,获取用户信息接口
  243. // @Param request body yidong.ActivityExamineReq true "type json string"
  244. // @Success 200 创建成功
  245. // @router /activity/user/signup [post]
  246. func (c *YiDongController) UserSignup() {
  247. var req yidong.ActivitySignUpReq
  248. err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
  249. if err != nil {
  250. c.FailWithMessage("参数解析异常")
  251. return
  252. }
  253. activityIdYiDong := req.ActivityId
  254. timeInt := req.Time
  255. appid := req.Appid
  256. mobile := req.Mobile
  257. timeUnix := time.Now().Unix() //当前格林威治时间,int64类型
  258. timestamp := int64(timeInt)
  259. if math.Abs(float64(timeUnix-timestamp)) > 600 {
  260. c.FailWithMessage("当前时间异常,请调整设备时间与北京时间一致:" + strconv.Itoa(timeInt))
  261. return
  262. }
  263. //校验 APPID 与ip白名单
  264. ip := c.Ctx.Input.IP()
  265. err = servicesYidong.CheckAppidAndIp(appid, ip)
  266. if err != nil {
  267. c.FailWithMessage(err.Error())
  268. return
  269. }
  270. //校验 签名
  271. signStr := servicesYidong.GetSign(activityIdYiDong, timeInt)
  272. fmt.Println("____")
  273. fmt.Println(signStr)
  274. ownSign := req.Sign
  275. if ownSign != signStr {
  276. c.FailWithMessage("签名错误!")
  277. return
  278. }
  279. activityInfo, err := cygxActivity.GetAddActivityInfoById(activityIdYiDong)
  280. if err != nil {
  281. c.FailWithMessage("会议id异常:" + activityIdYiDong)
  282. return
  283. }
  284. activityId := activityInfo.ActivityId
  285. var dateTxt = []byte(mobile)
  286. resultDe := utils.DesBase64Decrypt(dateTxt)
  287. deMobile := string(resultDe)
  288. if deMobile == "" {
  289. go alarm_msg.SendAlarmMsg("加密手机号解密失败:"+mobile, 3)
  290. c.FailWithMessage("加密手机号解密失败:" + mobile)
  291. return
  292. }
  293. item := new(cygxActivity.CygxYidongActivitySignupLog)
  294. item.ActivityId = activityId
  295. item.YidongActivityId = activityIdYiDong
  296. item.CreateTime = time.Now()
  297. item.Mobile = deMobile
  298. err = cygxActivity.AddCygxYidongActivitySignupLog(item)
  299. if err != nil {
  300. fmt.Println(err)
  301. c.FailWithMessage("获取用户信息失败:" + activityIdYiDong)
  302. go alarm_msg.SendAlarmMsg("修改活动审核状态失败:"+err.Error()+"活动ID"+activityIdYiDong, 3)
  303. return
  304. }
  305. userInfo, err := cygxActivity.GetAddActivityInfoByMobile(deMobile)
  306. if err != nil {
  307. fmt.Println(err)
  308. c.FailWithMessage("获取用户信息失败:" + activityIdYiDong)
  309. go alarm_msg.SendAlarmMsg("修改活动审核状态失败:"+err.Error()+"活动ID"+activityIdYiDong, 3)
  310. return
  311. }
  312. c.OkDetailed(userInfo, "获取成功")
  313. }