yidong.go 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285
  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. signupList, err := cygxActivity.GetActivitySignupListByActivity(activityId)
  65. if err != nil {
  66. c.FailWithMessage("会议id异常:" + activityIdYiDong)
  67. return
  68. }
  69. mapSignUp := make(map[string]string)
  70. for _, v := range signupList {
  71. mapSignUp[v.Mobile] = v.Mobile
  72. }
  73. var examineMobile string
  74. for _, v := range list {
  75. var dateTxt = []byte(v.Mobile)
  76. resultDe := utils.DesBase64Decrypt(dateTxt)
  77. deMobile := string(resultDe)
  78. if deMobile == "" {
  79. go alarm_msg.SendAlarmMsg("加密手机号解密失败:"+v.Mobile, 3)
  80. c.FailWithMessage("加密手机号解密失败:" + v.Mobile)
  81. return
  82. }
  83. examineMobile += "'" + deMobile + "'" + ","
  84. }
  85. examineMobile = strings.TrimRight(examineMobile, ",")
  86. userList, err := cygxActivity.GetUserListByMobile(examineMobile)
  87. if err != nil {
  88. c.FailWithMessage("操作失败,用户信息不存在")
  89. return
  90. }
  91. mapUserinfo := make(map[string]*cygxActivity.CygxActivitySignup)
  92. for _, v := range userList {
  93. item := new(cygxActivity.CygxActivitySignup)
  94. item.UserId = v.UserId
  95. item.RealName = v.RealName
  96. item.SellerName = v.SellerName
  97. item.ActivityId = activityId
  98. item.CreateTime = time.Now()
  99. item.Mobile = v.Mobile
  100. item.Email = v.Email
  101. item.CompanyId = v.CompanyId
  102. item.CompanyName = v.CompanyName
  103. item.Source = 3
  104. //优先绑定用户修改过的外呼手机号
  105. if v.OutboundMobile != "" {
  106. item.OutboundMobile = v.OutboundMobile
  107. if v.OutboundCountryCode == "" {
  108. item.CountryCode = "86"
  109. } else {
  110. item.CountryCode = v.OutboundCountryCode
  111. }
  112. } else {
  113. item.OutboundMobile = v.Mobile
  114. if v.CountryCode == "" {
  115. item.CountryCode = "86"
  116. } else {
  117. item.CountryCode = v.CountryCode
  118. }
  119. }
  120. item.SignupType = 1
  121. mapUserinfo[v.Mobile] = item
  122. }
  123. var items []*cygxActivity.ExamineStatusReq
  124. var itemsAdd []*cygxActivity.CygxActivitySignup
  125. var itemsLog []*cygxActivity.CygxYidongActivityExamineStatus
  126. for _, v := range list {
  127. item := new(cygxActivity.ExamineStatusReq)
  128. itemlog := new(cygxActivity.CygxYidongActivityExamineStatus)
  129. //encryptMobile := string(utils.DesBase64Encrypt([]byte(v.Mobile)))
  130. //fmt.Println(encryptMobile)
  131. //continue
  132. //encryptMobile := string(utils.DesBase64Encrypt([]byte(v.Mobile)))
  133. var dateTxt = []byte(v.Mobile)
  134. resultDe := utils.DesBase64Decrypt(dateTxt)
  135. deMobile := string(resultDe)
  136. if deMobile == "" {
  137. c.FailWithMessage("加密手机号解密失败:" + v.Mobile)
  138. go alarm_msg.SendAlarmMsg("加密手机号解密失败:"+v.Mobile, 3)
  139. return
  140. }
  141. if mapSignUp[deMobile] != "" {
  142. item.ActivityId = activityId
  143. item.Mobile = deMobile
  144. item.ExamineStatus = v.ExamineStatus
  145. items = append(items, item)
  146. } else {
  147. if mapUserinfo[deMobile] != nil {
  148. mapUserinfo[deMobile].YidongExamineStatus = v.ExamineStatus
  149. itemsAdd = append(itemsAdd, mapUserinfo[deMobile])
  150. }
  151. }
  152. itemlog.ActivityId = activityId
  153. itemlog.YidongActivityId = activityIdYiDong
  154. itemlog.CreateTime = time.Now()
  155. itemlog.ExamineTime = v.CreateTime
  156. itemlog.Mobile = deMobile
  157. itemlog.YidongExamineStatus = v.ExamineStatus
  158. itemsLog = append(itemsLog, itemlog)
  159. }
  160. err = cygxActivity.UpdateActivitySignupNumMulti(items)
  161. if err != nil {
  162. c.FailWithMessage("修改活动审核状态失败:" + activityIdYiDong)
  163. go alarm_msg.SendAlarmMsg("修改活动审核状态失败:"+err.Error()+"活动ID"+activityIdYiDong, 3)
  164. return
  165. }
  166. err = cygxActivity.AddActivitySignupNumMulti(itemsAdd)
  167. if err != nil {
  168. c.FailWithMessage("修改活动审核状态失败:" + activityIdYiDong)
  169. go alarm_msg.SendAlarmMsg("修改活动审核状态失败:"+err.Error()+"活动ID"+activityIdYiDong, 3)
  170. return
  171. }
  172. go cygxActivity.AddActivityItemsLogNumMulti(itemsLog)
  173. //if err != nil {
  174. // c.FailWithMessage("修改活动审核状态失败:" + activityIdYiDong)
  175. // go alarm_msg.SendAlarmMsg("修改活动审核状态失败:"+err.Error()+"活动ID"+activityIdYiDong, 3)
  176. // return
  177. //}
  178. c.OkWithMessage("操作成功")
  179. }
  180. func init23() {
  181. //allow 59.46.229.165;
  182. //allow 123.185.222.0/24;
  183. //allow 123.185.223.0/24;
  184. //allow 59.36.22.17;
  185. //allow 120.86.187.82;
  186. //202.105.122.162
  187. var ipstr string
  188. var ipstrs string
  189. ipstr = "123.185.223."
  190. for i := 0; i <= 24; i++ {
  191. fmt.Println(i)
  192. ipstrs += ipstr + strconv.Itoa(i) + ","
  193. //ipstr += ipstr + strconv.Itoa(i)
  194. }
  195. fmt.Println(ipstrs)
  196. }
  197. // YiDongController
  198. // @Title 易董提交报名时,获取用户信息接口
  199. // @Description 易董提交报名时,获取用户信息接口
  200. // @Param request body yidong.ActivityExamineReq true "type json string"
  201. // @Success 200 创建成功
  202. // @router /activity/user/signup [post]
  203. func (c *YiDongController) UserSignup() {
  204. var req yidong.ActivitySignUpReq
  205. err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
  206. if err != nil {
  207. c.FailWithMessage("参数解析异常")
  208. return
  209. }
  210. activityIdYiDong := req.ActivityId
  211. timeInt := req.Time
  212. appid := req.Appid
  213. mobile := req.Mobile
  214. timeUnix := time.Now().Unix() //当前格林威治时间,int64类型
  215. timestamp := int64(timeInt)
  216. if math.Abs(float64(timeUnix-timestamp)) > 600 {
  217. c.FailWithMessage("当前时间异常,请调整设备时间与北京时间一致:" + strconv.Itoa(timeInt))
  218. return
  219. }
  220. //校验 APPID 与ip白名单
  221. ip := c.Ctx.Input.IP()
  222. err = servicesYidong.CheckAppidAndIp(appid, ip)
  223. if err != nil {
  224. c.FailWithMessage(err.Error())
  225. return
  226. }
  227. //校验 签名
  228. signStr := servicesYidong.GetSign(activityIdYiDong, timeInt)
  229. fmt.Println("____")
  230. fmt.Println(signStr)
  231. ownSign := req.Sign
  232. if ownSign != signStr {
  233. c.FailWithMessage("签名错误!")
  234. return
  235. }
  236. activityInfo, err := cygxActivity.GetAddActivityInfoById(activityIdYiDong)
  237. if err != nil {
  238. c.FailWithMessage("会议id异常:" + activityIdYiDong)
  239. return
  240. }
  241. activityId := activityInfo.ActivityId
  242. var dateTxt = []byte(mobile)
  243. resultDe := utils.DesBase64Decrypt(dateTxt)
  244. deMobile := string(resultDe)
  245. if deMobile == "" {
  246. go alarm_msg.SendAlarmMsg("加密手机号解密失败:"+mobile, 3)
  247. c.FailWithMessage("加密手机号解密失败:" + mobile)
  248. return
  249. }
  250. item := new(cygxActivity.CygxYidongActivitySignupLog)
  251. item.ActivityId = activityId
  252. item.YidongActivityId = activityIdYiDong
  253. item.CreateTime = time.Now()
  254. item.Mobile = deMobile
  255. err = cygxActivity.AddCygxYidongActivitySignupLog(item)
  256. if err != nil {
  257. fmt.Println(err)
  258. c.FailWithMessage("获取用户信息失败:" + activityIdYiDong)
  259. go alarm_msg.SendAlarmMsg("修改活动审核状态失败:"+err.Error()+"活动ID"+activityIdYiDong, 3)
  260. return
  261. }
  262. userInfo, err := cygxActivity.GetAddActivityInfoByMobile(deMobile)
  263. if err != nil {
  264. fmt.Println(err)
  265. c.FailWithMessage("获取用户信息失败:" + activityIdYiDong)
  266. go alarm_msg.SendAlarmMsg("修改活动审核状态失败:"+err.Error()+"活动ID"+activityIdYiDong, 3)
  267. return
  268. }
  269. c.OkDetailed(userInfo, "获取成功")
  270. }