123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440 |
- package controllers
- import (
- "encoding/json"
- "fmt"
- "hongze/hongze_open_api/models/request/yidong"
- "hongze/hongze_open_api/models/tables/company_product"
- cygxActivity "hongze/hongze_open_api/models/tables/cygx/cygx_activity"
- "hongze/hongze_open_api/models/tables/cygx/cygx_three_api_log"
- "hongze/hongze_open_api/services/alarm_msg"
- servicesYidong "hongze/hongze_open_api/services/yidong"
- "hongze/hongze_open_api/utils"
- "math"
- "strconv"
- "strings"
- "time"
- )
- // 易董
- type YiDongController struct {
- BaseCommon
- }
- // YiDongController
- // @Title 易董提交报名用户审核接口
- // @Description 易董提交报名用户审核接口
- // @Param request body yidong.ActivityExamineReq true "type json string"
- // @Success 200 创建成功
- // @router /activity/examine/signup [post]
- func (c *YiDongController) ActivityExamine() {
- var req yidong.ActivityExamineReq
- err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
- if err != nil {
- c.FailWithMessage("参数解析异常")
- return
- }
- activityIdYiDong := req.ActivityId
- timeInt := req.Time
- list := req.List
- appid := req.Appid
- timeUnix := time.Now().Unix() //当前格林威治时间,int64类型
- timestamp := int64(timeInt)
- if math.Abs(float64(timeUnix-timestamp)) > 600 {
- c.FailWithMessage("当前时间异常,请调整设备时间与北京时间一致:" + strconv.Itoa(timeInt))
- return
- }
- //校验 APPID 与ip白名单
- ip := c.Ctx.Input.IP()
- err = servicesYidong.CheckAppidAndIp(appid, ip)
- if err != nil {
- c.FailWithMessage(err.Error())
- return
- }
- //校验 签名
- signStr := servicesYidong.GetSign(activityIdYiDong, timeInt)
- ownSign := req.Sign
- if ownSign != signStr {
- c.FailWithMessage("签名错误!")
- return
- }
- activityInfo, err := cygxActivity.GetAddActivityInfoById(activityIdYiDong)
- if err != nil {
- c.FailWithMessage("会议id异常:" + activityIdYiDong)
- return
- }
- activityId := activityInfo.ActivityId
- var examineMobile string
- var delMyMobile string //审核不通过需要删除日程的手机号
- var delSignupMobile string //取消活动需要删除报名信息的手机号
- var itemsLog []*cygxActivity.CygxYidongActivityExamineStatus
- for _, v := range list {
- var dateTxt = []byte(v.Mobile)
- resultDe := utils.DesBase64Decrypt(dateTxt)
- deMobile := string(resultDe)
- if deMobile == "" {
- go alarm_msg.SendAlarmMsg("加密手机号解密失败:"+v.Mobile, 3)
- c.FailWithMessage("加密手机号解密失败:" + v.Mobile)
- return
- }
- examineMobile += "'" + deMobile + "'" + ","
- itemlog := new(cygxActivity.CygxYidongActivityExamineStatus)
- //记录日志
- itemlog.ActivityId = activityId
- itemlog.YidongActivityId = activityIdYiDong
- itemlog.CreateTime = time.Now()
- itemlog.ExamineTime = v.CreateTime
- itemlog.Mobile = deMobile
- itemlog.YidongExamineStatus = v.ExamineStatus
- itemsLog = append(itemsLog, itemlog)
- }
- //记录日志
- err = cygxActivity.AddActivityItemsLogNumMulti(itemsLog)
- if err != nil {
- c.FailWithMessage("修改活动审核状态失败:" + activityIdYiDong)
- go alarm_msg.SendAlarmMsg("修改活动审核状态失败AddActivityItemsLogNumMulti:"+err.Error()+"活动ID"+activityIdYiDong, 3)
- return
- }
- //以下处理传过来的逻辑
- // 获取已经报名了的用户列表
- signupList, err := cygxActivity.GetActivitySignupListByActivity(activityId)
- if err != nil {
- c.FailWithMessage("会议id异常:" + activityIdYiDong)
- return
- }
- mapSignUp := make(map[string]string)
- for _, v := range signupList {
- mapSignUp[v.Mobile] = v.Mobile
- }
- // 获取我的日程列表
- myScheduleList, err := cygxActivity.GetCygxMyScheduleList(activityId)
- if err != nil {
- c.FailWithMessage("会议id异常:" + activityIdYiDong)
- return
- }
- mapMyScheduleList := make(map[string]string)
- for _, v := range myScheduleList {
- mapMyScheduleList[v.Mobile] = v.Mobile
- }
- examineMobile = strings.TrimRight(examineMobile, ",")
- userList, err := cygxActivity.GetUserListByMobile(examineMobile)
- if err != nil {
- c.FailWithMessage("操作失败,用户信息不存在")
- return
- }
- mapUserinfo := make(map[string]*cygxActivity.CygxActivitySignup)
- mapMySchedule := make(map[string]*cygxActivity.CygxMySchedule)
- for _, v := range userList {
- item := new(cygxActivity.CygxActivitySignup)
- item.UserId = v.UserId
- item.RealName = v.RealName
- item.SellerName = v.SellerName
- item.ActivityId = activityId
- item.CreateTime = time.Now()
- item.Mobile = v.Mobile
- item.Email = v.Email
- item.CompanyId = v.CompanyId
- item.CompanyName = v.CompanyName
- item.Source = 3
- //优先绑定用户修改过的外呼手机号
- if v.OutboundMobile != "" {
- item.OutboundMobile = v.OutboundMobile
- if v.OutboundCountryCode == "" {
- item.CountryCode = "86"
- } else {
- item.CountryCode = v.OutboundCountryCode
- }
- } else {
- item.OutboundMobile = v.Mobile
- if v.CountryCode == "" {
- item.CountryCode = "86"
- } else {
- item.CountryCode = v.CountryCode
- }
- }
- item.SignupType = 1
- mapUserinfo[v.Mobile] = item
- //添加我的日程
- itemMySchedule := new(cygxActivity.CygxMySchedule)
- itemMySchedule.UserId = v.UserId
- itemMySchedule.ActivityId = activityId
- itemMySchedule.CreateTime = time.Now()
- itemMySchedule.Mobile = v.Mobile
- itemMySchedule.Email = v.Email
- itemMySchedule.CompanyId = v.CompanyId
- itemMySchedule.CompanyName = v.CompanyName
- mapMySchedule[v.Mobile] = itemMySchedule
- }
- var items []*cygxActivity.ExamineStatusReq
- var itemsAdd []*cygxActivity.CygxActivitySignup
- var itemsMyAdd []*cygxActivity.CygxMySchedule
- for _, v := range list {
- item := new(cygxActivity.ExamineStatusReq)
- var dateTxt = []byte(v.Mobile)
- resultDe := utils.DesBase64Decrypt(dateTxt)
- deMobile := string(resultDe)
- if mapSignUp[deMobile] != "" {
- item.ActivityId = activityId
- item.Mobile = deMobile
- item.ExamineStatus = v.ExamineStatus
- items = append(items, item)
- } else {
- if mapUserinfo[deMobile] != nil {
- mapUserinfo[deMobile].YidongExamineStatus = v.ExamineStatus
- if v.ExamineStatus != 3 {
- itemsAdd = append(itemsAdd, mapUserinfo[deMobile])
- }
- }
- }
- //处理我的日程
- if mapMyScheduleList[deMobile] != "" {
- if v.ExamineStatus != 1 {
- delMyMobile += "'" + deMobile + "'" + ","
- }
- if v.ExamineStatus == 3 {
- delSignupMobile += "'" + deMobile + "'" + ","
- }
- } else {
- if mapMySchedule[deMobile] != nil {
- if v.ExamineStatus == 1 {
- itemsMyAdd = append(itemsMyAdd, mapMySchedule[deMobile])
- }
- }
- }
- }
- //fmt.Println(delSignupMobile)
- //return
- //处理要删除的日程
- delMyMobile = strings.TrimRight(delMyMobile, ",")
- if delMyMobile != "" {
- fmt.Println("删除日程")
- err = cygxActivity.DelCygxMyScheduleList(delMyMobile, activityId)
- if err != nil {
- go alarm_msg.SendAlarmMsg("处理要删除的日程失败 DelCygxMyScheduleList:"+err.Error()+"活动ID"+activityIdYiDong, 3)
- }
- }
- //处理要删除的报名信息
- delSignupMobile = strings.TrimRight(delSignupMobile, ",")
- if delSignupMobile != "" {
- fmt.Println("处理要删除的报名信息")
- err = cygxActivity.DelCygxcActivitySignup(delSignupMobile, activityId)
- if err != nil {
- go alarm_msg.SendAlarmMsg("处理要删除的报名信息失败 DelCygxMyScheduleList:"+err.Error()+"活动ID"+activityIdYiDong, 3)
- }
- }
- //修改审核状态
- err = cygxActivity.UpdateActivitySignupNumMulti(items)
- if err != nil {
- fmt.Println(err, "UpdateActivitySignupNumMulti")
- go alarm_msg.SendAlarmMsg("修改活动审核状态失败:"+err.Error()+"活动ID"+activityIdYiDong, 3)
- }
- // 批量添加报名信息
- err = cygxActivity.AddActivitySignupNumMulti(itemsAdd)
- if err != nil {
- fmt.Println(err, "AddActivitySignupNumMulti")
- go alarm_msg.SendAlarmMsg("修改活动审核状态失败:"+err.Error()+"活动ID"+activityIdYiDong, 3)
- }
- // 批量添加我的日程
- err = cygxActivity.AddCygxMyScheduleLNumMulti(itemsMyAdd)
- if err != nil {
- fmt.Println(err, "AddCygxMyScheduleLNumMulti")
- go alarm_msg.SendAlarmMsg("修改活动审核状态失败:"+err.Error()+"活动ID"+activityIdYiDong, 3)
- }
- c.OkWithMessage("操作成功")
- }
- // YiDongController
- // @Title 易董提交报名时,获取用户信息接口
- // @Description 易董提交报名时,获取用户信息接口
- // @Param request body yidong.ActivityExamineReq true "type json string"
- // @Success 200 创建成功
- // @router /activity/user/signup [post]
- func (c *YiDongController) UserSignup() {
- var req yidong.ActivitySignUpReq
- err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
- if err != nil {
- c.FailWithMessage("参数解析异常")
- return
- }
- activityIdYiDong := req.ActivityId
- timeInt := req.Time
- appid := req.Appid
- mobile := req.Mobile
- timeUnix := time.Now().Unix() //当前格林威治时间,int64类型
- timestamp := int64(timeInt)
- if math.Abs(float64(timeUnix-timestamp)) > 600 {
- c.FailWithMessage("当前时间异常,请调整设备时间与北京时间一致:" + strconv.Itoa(timeInt))
- return
- }
- //校验 APPID 与ip白名单
- ip := c.Ctx.Input.IP()
- err = servicesYidong.CheckAppidAndIp(appid, ip)
- if err != nil {
- c.FailWithMessage(err.Error())
- return
- }
- //校验 签名
- signStr := servicesYidong.GetSign(activityIdYiDong, timeInt)
- fmt.Println("____")
- fmt.Println(signStr)
- ownSign := req.Sign
- if ownSign != signStr {
- c.FailWithMessage("签名错误!")
- return
- }
- activityInfo, err := cygxActivity.GetAddActivityInfoById(activityIdYiDong)
- if err != nil {
- c.FailWithMessage("会议id异常:" + activityIdYiDong)
- return
- }
- activityId := activityInfo.ActivityId
- var dateTxt = []byte(mobile)
- resultDe := utils.DesBase64Decrypt(dateTxt)
- deMobile := string(resultDe)
- if deMobile == "" {
- go alarm_msg.SendAlarmMsg("加密手机号解密失败:"+mobile, 3)
- c.FailWithMessage("加密手机号解密失败:" + mobile)
- return
- }
- item := new(cygxActivity.CygxYidongActivitySignupLog)
- item.ActivityId = activityId
- item.YidongActivityId = activityIdYiDong
- item.CreateTime = time.Now()
- item.Mobile = deMobile
- err = cygxActivity.AddCygxYidongActivitySignupLog(item)
- if err != nil {
- fmt.Println(err)
- c.FailWithMessage("获取用户信息失败:" + activityIdYiDong)
- go alarm_msg.SendAlarmMsg("修改活动审核状态失败:"+err.Error()+"活动ID"+activityIdYiDong, 3)
- return
- }
- userInfo, err := cygxActivity.GetAddActivityInfoByMobile(deMobile)
- if err != nil {
- fmt.Println(err)
- c.FailWithMessage("获取用户信息失败:" + activityIdYiDong)
- go alarm_msg.SendAlarmMsg("修改活动审核状态失败:"+err.Error()+"活动ID"+activityIdYiDong, 3)
- return
- }
- c.OkDetailed(userInfo, "获取成功")
- }
- // YiDongController
- // @Title 校验用户是否有对应权限
- // @Description 校验用户是否有对应权限接口
- // @Param request body yidong.ActivityExamineReq true "type json string"
- // @Success 200 创建成功
- // @router /activity/user/check [post]
- func (c *YiDongController) UserCheck() {
- var req yidong.ActivitySignUpReq
- err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
- if err != nil {
- c.FailWithMessage("参数解析异常")
- return
- }
- activityIdYiDong := req.ActivityId
- timeInt := req.Time
- appid := req.Appid
- mobile := req.Mobile
- timeUnix := time.Now().Unix() //当前格林威治时间,int64类型
- timestamp := int64(timeInt)
- if math.Abs(float64(timeUnix-timestamp)) > 600 {
- c.FailWithMessage("当前时间异常,请调整设备时间与北京时间一致:" + strconv.Itoa(timeInt))
- return
- }
- //校验 APPID 与ip白名单
- ip := c.Ctx.Input.IP()
- err = servicesYidong.CheckAppidAndIp(appid, ip)
- if err != nil {
- c.FailWithMessage(err.Error())
- return
- }
- signStr := servicesYidong.GetSign(activityIdYiDong, timeInt)
- ownSign := req.Sign
- if ownSign != signStr {
- c.FailWithMessage("签名错误!")
- return
- }
- //activityDetail, err := cygxActivity.GetAddActivityInfoById(activityIdYiDong)
- //if err != nil {
- // c.FailWithMessage("会议id异常:" + activityIdYiDong)
- // return
- //}
- var dateTxt = []byte(mobile)
- resultDe := utils.DesBase64Decrypt(dateTxt)
- deMobile := string(resultDe)
- if deMobile == "" {
- go alarm_msg.SendAlarmMsg("加密手机号解密失败:"+mobile, 3)
- c.FailWithMessage("加密手机号解密失败:" + mobile)
- return
- }
- resp := new(yidong.CheckHaspermissionResp)
- total, err := company_product.CheckUserAaiPerssionByMobile(deMobile)
- if err != nil {
- c.FailWithMessage("校验失败!" + err.Error())
- return
- }
- ////获取所有的权限名称
- //companyPermissionName, err := company_product.GetCompanyPermissionByMobile(deMobile)
- //if err != nil {
- // c.FailWithMessage("校验失败!" + err.Error())
- // return
- //}
- //if companyPermissionName != "" {
- // companyPermissionName += ",宏观" // 有任意一个权限,就可以参加宏观权限的活动
- //}
- //if strings.Contains(companyPermissionName, activityDetail.ChartPermissionName) {
- // resp.Haspermission = true
- //}
- //校验是否是系统内权益的正式、试用、永续客户(不区分行业),若是,返回审核通过
- if total > 0 {
- resp.Haspermission = true
- } else {
- statusResp, err := servicesYidong.GetClptCrmWorkerRule(deMobile)
- if err != nil {
- c.FailWithMessage("校验失败!" + err.Error())
- return
- }
- if statusResp == 1 {
- resp.Haspermission = true
- }
- }
- //添加请求日志记录
- itemApiLog := new(cygx_three_api_log.CygxThreeApiLog)
- itemApiLog.CreateTime = time.Now()
- itemApiLog.Source = 2
- itemApiLog.Url = c.Ctx.Input.URI()
- data, _ := json.Marshal(req)
- jsonstr := string(data)
- itemApiLog.Body = fmt.Sprint(jsonstr, "deMobile=", deMobile)
- itemApiLog.Result = fmt.Sprint(resp)
- _, errlog := cygx_three_api_log.AddCygxThreeApiLog(itemApiLog)
- if errlog != nil {
- go alarm_msg.SendAlarmMsg("易董校验用户是否有对应权限日志记录失败 AddCygxThreeApiLog:"+errlog.Error()+fmt.Sprint(req, "deMobile=", deMobile), 3)
- }
- c.OkDetailed(resp, "获取成功")
- }
|