123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388 |
- package controllers
- import (
- "encoding/json"
- "fmt"
- jinmencaijingReq "hongze/hongze_open_api/models/request/jinmencaijing"
- "hongze/hongze_open_api/models/response/jinmencaijing"
- "hongze/hongze_open_api/models/tables/company"
- "hongze/hongze_open_api/models/tables/company_product"
- "hongze/hongze_open_api/models/tables/company_report_permission"
- 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/models/tables/wx_user"
- "hongze/hongze_open_api/services/alarm_msg"
- servicesWxUser "hongze/hongze_open_api/services/wx_user"
- "hongze/hongze_open_api/utils"
- "strconv"
- "time"
- )
- // JinMenCaiJingControllerCommon 进门财经模块
- type JinMenCaiJingController struct {
- BaseAuth
- }
- // 活动详情
- // @Title 活动详情接口
- // @Description 活动详情接口
- // @router /activity/detail [get]
- func (c *JinMenCaiJingController) ActivityDetail() {
- //回调中url参数要做签名(get请求中的参数,按照自己的方式签名,避免链接被别人拿去随意请求)
- activityId, _ := c.GetInt("activity_id")
- activityInfo, err := cygxActivity.GetAddActivityInfoByActivityId(activityId)
- if err != nil {
- c.FailWithMessage("会议id异常:" + strconv.Itoa(activityId))
- return
- }
- //resp := new(*jinmencaijing.CygxActivityDetailResp)
- detail := new(jinmencaijing.CygxActivityResp)
- detail.ActivityID = activityInfo.ActivityId
- detail.PublishStatus = activityInfo.PublishStatus
- detail.ActivityName = activityInfo.ActivityName
- detail.Label = activityInfo.Label
- detail.ActivityTime = activityInfo.ActivityTime
- detail.ActivityTimeText = activityInfo.ActivityTimeText
- detail.ActivityTypeId = activityInfo.ActivityTypeId
- detail.ActivityTypeName = activityInfo.ActivityTypeName
- detail.ChartPermissionName = activityInfo.ChartPermissionName
- detail.IsLimitPeople = activityInfo.IsLimitPeople
- detail.LimitPeopleNum = activityInfo.LimitPeopleNum
- detail.Expert = activityInfo.Expert
- detail.Host = activityInfo.Host
- detail.Speaker = activityInfo.Speaker
- detail.City = activityInfo.City
- detail.Address = activityInfo.Address
- detail.Highlights = activityInfo.Highlights
- detail.DistinguishedGuest = activityInfo.DistinguishedGuest
- detail.MainlandTell = activityInfo.MainlandTell
- detail.HongKongTell = activityInfo.HongKongTell
- detail.TaiwanTell = activityInfo.TaiwanTell
- detail.AmericaTell = activityInfo.AmericaTell
- detail.ParticipationCode = activityInfo.ParticipationCode
- detail.OnlineParticipation = activityInfo.OnlineParticipation
- detail.TencentConferenceNumber = activityInfo.TencentConferenceNumber
- detail.LinkParticipants = activityInfo.LinkParticipants
- detail.VmpRobotMeetingId = activityInfo.VmpRobotMeetingId
- detail.ConferencePassword = activityInfo.ConferencePassword
- detail.ReportLink = activityInfo.ReportLink
- detail.Theme = activityInfo.Theme
- detail.Remarks = activityInfo.Remarks
- //添加请求日志记录
- itemApiLog := new(cygx_three_api_log.CygxThreeApiLog)
- itemApiLog.CreateTime = time.Now()
- itemApiLog.Source = 2
- itemApiLog.Url = c.Ctx.Input.URI()
- jsonstr := strconv.Itoa(activityId)
- itemApiLog.Body = fmt.Sprint(jsonstr)
- itemApiLog.Result = fmt.Sprint(detail)
- _, errlog := cygx_three_api_log.AddCygxThreeApiLog(itemApiLog)
- if errlog != nil {
- go alarm_msg.SendAlarmMsg("进门财经活动详情接口 AddCygxThreeApiLog:"+errlog.Error()+fmt.Sprint("activityId=", activityId), 3)
- }
- c.OkDetailed(detail, "获取成功")
- }
- // 活动报名
- // @Title 活动报名接口
- // @Description 活动报名接口
- // @router /activity/signup/add [post]
- func (c *JinMenCaiJingController) ActivitySignupAdd() {
- //回调中url参数要做签名(get请求中的参数,按照自己的方式签名,避免链接被别人拿去随意请求)
- var req jinmencaijingReq.ActivitySignupReq
- err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
- if err != nil {
- c.FailWithMessage("参数解析异常")
- return
- }
- activityId := req.ActivityId
- mobile := req.Mobile
- countryCode := req.CountryCode
- realName := req.RealName
- companyName := req.CompanyName
- var dateTxt = []byte(mobile)
- resultDe := utils.DesBase64Decrypt(dateTxt)
- deMobile := string(resultDe)
- resp := new(jinmencaijing.CygxActivitySignupResp)
- activityInfo, err := cygxActivity.GetAddActivityInfoByActivityId(activityId)
- if err != nil {
- c.FailWithMessage("会议id异常:" + strconv.Itoa(activityId))
- return
- }
- resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
- if time.Now().After(resultTime.Add(-time.Minute * 60)) {
- resp.SignupStatus = 2
- c.OkDetailed(resp, "报名失败时间超时")
- }
- if activityInfo.LimitPeopleNum > 0 {
- totalSuccess, err := cygxActivity.GetActivitySignupSuccessCount(activityId)
- if err != nil {
- c.FailWithMessage("获取已报名的用户数量失败!" + err.Error())
- return
- }
- if activityInfo.LimitPeopleNum <= totalSuccess {
- resp.SignupStatus = 3
- c.OkDetailed(resp, "报名失败人数已满")
- }
- }
- userTotal, err := wx_user.GetWxUserCountByMobile(deMobile)
- if err != nil {
- c.FailWithMessage("根据手机号判断用户信息失败")
- return
- }
- var user *wx_user.WxUser
- if userTotal == 0 {
- userId, err := servicesWxUser.AddWxUserByMobile(deMobile, countryCode, realName)
- if err != nil {
- c.FailWithMessage("根据手机号录入用户信息失败")
- return
- }
- user, err = wx_user.GetByUserId(userId)
- if err != nil {
- c.FailWithMessage("获取用户信息失败")
- return
- }
- } else {
- user, err = wx_user.GetByUserMobile(deMobile)
- if err != nil {
- c.FailWithMessage("获取用户信息失败")
- return
- }
- }
- signupCount, err := cygxActivity.GetActivitySignupCountByUserId(int(user.UserId), activityId)
- if err != nil {
- c.FailWithMessage("获取用户是否报名信息失败")
- return
- }
- if signupCount == 0 {
- item := new(cygxActivity.CygxActivitySignup)
- item.UserId = int(user.UserId)
- item.RealName = user.RealName
- item.ActivityId = activityId
- item.CreateTime = time.Now()
- item.Email = user.Email
- item.CompanyId = user.CompanyId
- item.CompanyName = companyName
- item.SignupType = 3
- item.ThreeSource = 1
- item.Mobile = user.Mobile
- item.CountryCode = user.CountryCode
- item.OutboundMobile = user.OutboundMobile
- if user.OutboundMobile == "" {
- item.OutboundMobile = user.Mobile
- }
- if user.CountryCode == "" {
- item.CountryCode = "86"
- }
- _, err = cygxActivity.AddActivitySignup(item)
- if err != nil {
- c.OkDetailed(resp, "报名成功")
- return
- }
- }
- resp.SignupStatus = 1
- c.OkDetailed(resp, "报名成功")
- }
- // 活动取消报名
- // @Title 活动取消报名接口
- // @Description 活动取消报名接口
- // @router /activity/signup/cancel [post]
- func (c *JinMenCaiJingController) ActivitySignupCancel() {
- //回调中url参数要做签名(get请求中的参数,按照自己的方式签名,避免链接被别人拿去随意请求)
- var req jinmencaijingReq.ActivitySignupReq
- err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
- if err != nil {
- c.FailWithMessage("参数解析异常")
- return
- }
- activityId := req.ActivityId
- mobile := req.Mobile
- var dateTxt = []byte(mobile)
- resultDe := utils.DesBase64Decrypt(dateTxt)
- deMobile := string(resultDe)
- activityInfo, err := cygxActivity.GetAddActivityInfoByActivityId(activityId)
- if err != nil {
- c.FailWithMessage("会议id异常:" + strconv.Itoa(activityId))
- return
- }
- resp := new(jinmencaijing.CygxActivitySignupcancelResp)
- resultTime := utils.StrTimeToTime(activityInfo.ActivityTime) //时间字符串格式转时间格式
- if time.Now().After(resultTime.Add(-time.Minute * 60)) {
- resp.CancelStatus = 2
- c.OkDetailed(resp, "活动开始前1小时内无法取消报名")
- }
- var user *wx_user.WxUser
- user, err = wx_user.GetByUserMobile(deMobile)
- if err != nil {
- c.FailWithMessage("获取用户信息失败")
- return
- }
- item := new(cygxActivity.CygxActivitySignup)
- item.UserId = int(user.UserId)
- item.ActivityId = activityId
- item.CreateTime = time.Now()
- _, err = cygxActivity.CancelActivitySignup(item)
- if err != nil {
- c.OkDetailed(resp, "取消报名失败")
- return
- }
- resp.CancelStatus = 1
- c.OkDetailed(resp, "取消报名成功")
- }
- // 活动白名单校验
- // @Title 活动白名单校验接口
- // @Description 活动白名单校验接口
- // @router /activity/white/check [post]
- func (c *JinMenCaiJingController) ActivityWhiteCheck() {
- //回调中url参数要做签名(get请求中的参数,按照自己的方式签名,避免链接被别人拿去随意请求)
- var req jinmencaijingReq.ActivitySignupReq
- err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
- if err != nil {
- c.FailWithMessage("参数解析异常")
- return
- }
- activityId := req.ActivityId
- mobile := req.Mobile
- var dateTxt = []byte(mobile)
- resultDe := utils.DesBase64Decrypt(dateTxt)
- deMobile := string(resultDe)
- userTotal, err := wx_user.GetWxUserCountByMobile(deMobile)
- if err != nil {
- c.FailWithMessage("根据手机号判断用户信息失败")
- return
- }
- activityInfo, err := cygxActivity.GetAddActivityInfoByActivityId(activityId)
- if err != nil {
- c.FailWithMessage("会议id异常:" + strconv.Itoa(activityId))
- return
- }
- var user *wx_user.WxUser
- resp := new(jinmencaijing.CygxActivityWhiteCheckResp)
- if userTotal == 0 {
- c.OkDetailed(resp, "获取成功")
- return
- } else {
- user, err = wx_user.GetByUserMobile(deMobile)
- if err != nil {
- c.FailWithMessage("获取用户信息失败")
- return
- }
- }
- companyInfo, err := company.GetCompanyById(user.CompanyId)
- if err != nil {
- c.FailWithMessage("获取客户信息失败")
- return
- }
- resp.RealName = user.RealName
- resp.Position = user.Position
- resp.CompanyName = companyInfo.CompanyName
- if activityInfo.LimitPeopleNum > 0 {
- total, err := company_product.CheckUserAaiPerssionByMobile(deMobile)
- if err != nil {
- c.FailWithMessage("校验失败!" + err.Error())
- return
- }
- if total > 0 {
- resp.IsWhite = true
- }
- } else {
- listPermissionName, err := company_report_permission.GetPermissionListNameByCompanyIdAndProductId(user.CompanyId, 2)
- if err != nil {
- c.FailWithMessage("获取用户权限信息失败:" + strconv.Itoa(activityId))
- return
- }
- if len(listPermissionName) > 0 {
- listPermissionName = append(listPermissionName, &company_report_permission.ChartPermissionNameResp{ChartPermissionName: "宏观"})
- }
- for _, v := range listPermissionName {
- if v.ChartPermissionName == activityInfo.ChartPermissionName {
- resp.IsWhite = true
- break
- }
- }
- }
- //添加请求日志记录
- 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("activityId=", activityId), 3)
- }
- c.OkDetailed(resp, "获取成功")
- }
- // 活动用户报名信息回显(自己是否报名,以及已经报名的人数)
- // @Title 活动用户报名信息回显接口
- // @Description 活动用户报名信息回显接口
- // @router /activity/signup/detail [post]
- func (c *JinMenCaiJingController) ActivitySignupDetail() {
- //回调中url参数要做签名(get请求中的参数,按照自己的方式签名,避免链接被别人拿去随意请求)
- var req jinmencaijingReq.ActivitySignupReq
- err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
- if err != nil {
- c.FailWithMessage("参数解析异常")
- return
- }
- activityId := req.ActivityId
- mobile := req.Mobile
- var dateTxt = []byte(mobile)
- resultDe := utils.DesBase64Decrypt(dateTxt)
- deMobile := string(resultDe)
- userTotal, err := wx_user.GetWxUserCountByMobile(deMobile)
- if err != nil {
- c.FailWithMessage("根据手机号判断用户信息失败")
- return
- }
- activityInfo, err := cygxActivity.GetAddActivityInfoByActivityId(activityId)
- if err != nil {
- c.FailWithMessage("会议id异常:" + strconv.Itoa(activityId))
- return
- }
- resp := new(jinmencaijing.CygxActivitySignupCheckResp)
- var user *wx_user.WxUser
- if userTotal == 0 {
- c.OkDetailed(resp, "获取成功")
- } else {
- user, err = wx_user.GetByUserMobile(deMobile)
- if err != nil {
- c.FailWithMessage("获取用户信息失败")
- return
- }
- }
- if activityInfo.LimitPeopleNum > 0 {
- total, err := cygxActivity.GetActivitySignupSuccessCount(activityId)
- if err != nil {
- c.FailWithMessage("获取已报名的用户数量失败!" + err.Error())
- return
- }
- resp.SignupNum = total
- }
- totalUser, err := cygxActivity.GetActivitySignupCountByUserIdeffective(int(user.UserId), activityId)
- if err != nil {
- c.FailWithMessage("获取已报名的用户数量失败!" + err.Error())
- return
- }
- resp.IsSignup = totalUser
- c.OkDetailed(resp, "获取成功")
- }
- //func init() {
- // mobile := "15557270777"
- // encryptMobile := string(utils.DesBase64Encrypt([]byte(mobile)))
- // fmt.Println(encryptMobile)
- //}
|