Browse Source

易董补充报名手机号获取用户信息接口

xingzai 2 years ago
parent
commit
b3c843066b

+ 101 - 2
controllers/yidong.go

@@ -50,8 +50,8 @@ func (c *YiDongController) ActivityExamine() {
 		return
 	}
 	//校验 签名
-	paramStr := fmt.Sprintf(`activity_id=%stime=%s`, activityIdYiDong, strconv.Itoa(timeInt))
-	signStr := servicesYidong.GetSign(paramStr)
+
+	signStr := servicesYidong.GetSign(activityIdYiDong, timeInt)
 	fmt.Println("____")
 	fmt.Println(signStr)
 	ownSign := req.Sign
@@ -167,3 +167,102 @@ func (c *YiDongController) ActivityExamine() {
 	}
 	c.OkWithMessage("操作成功")
 }
+
+func init23() {
+	//allow 59.46.229.165;
+	//allow 123.185.222.0/24;
+	//allow 123.185.223.0/24;
+	//allow 59.36.22.17;
+	//allow 120.86.187.82;
+	//202.105.122.162
+
+	//var ipstr string
+	//var ipstrs string
+	//ipstr = "123.185.223."
+	//
+	//for i := 0; i <= 24; i++ {
+	//	fmt.Println(i)
+	//	ipstrs += ipstr + strconv.Itoa(i) + ","
+	//	//ipstr += ipstr + strconv.Itoa(i)
+	//}
+	//fmt.Println(ipstrs)
+}
+
+// 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, "获取成功")
+}

+ 5 - 4
models/db_init.go

@@ -35,10 +35,11 @@ func init() {
 
 	//注册对象
 	orm.RegisterModel(
-		new(open_api_user.OpenApiUser),        //开放API用户表
-		new(admin.Admin),                      //系统用户表
-		new(article.CygxArticleCeluePush),     //策略平台推送过来更新的文章
-		new(cygx_activity.CygxActivitySignup), //易董报名审核
+		new(open_api_user.OpenApiUser),                 //开放API用户表
+		new(admin.Admin),                               //系统用户表
+		new(article.CygxArticleCeluePush),              //策略平台推送过来更新的文章
+		new(cygx_activity.CygxActivitySignup),          //易董报名审核
+		new(cygx_activity.CygxYidongActivitySignupLog), //易董报名记录日志
 	)
 	orm.Debug = true
 	orm.DebugLog = orm.NewLog(utils.Binlog)

+ 10 - 0
models/request/yidong/yidong.go

@@ -11,5 +11,15 @@ type ActivityExamineReq struct {
 
 type ExamineStatusReq struct {
 	Mobile        string `description:"手机号" json:"mobile"`
+	CreateTime    string `description:"报名时间" json:"create_time"`
 	ExamineStatus int    `description:"审核状态 1,通过、2:未通过" json:"examine_status"`
 }
+
+// ActivityExamineReq 用户报名审核结构体
+type ActivitySignUpReq struct {
+	ActivityId string `description:"文章ID" json:"activity_id"`
+	Time       int    `description:"时间戳" json:"time"`
+	Mobile     string `description:"手机号" json:"mobile"`
+	Appid      string `description:"开放平台给分配的appid" json:"appid"`
+	Sign       string `description:"签名" json:"sign"`
+}

+ 34 - 0
models/tables/cygx_activity/cygx_activity.go

@@ -164,3 +164,37 @@ func GetUserListByMobile(mobile string) (items []*UserAndCompanyName, err error)
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
+
+type CygxYidongActivitySignupLog struct {
+	Id               int       `orm:"column(id)" description:"自增Id"`
+	ActivityId       int       `description:"活动ID"`
+	YidongActivityId string    `description:"易董活动ID"`
+	CreateTime       time.Time `description:"创建时间"`
+	Mobile           string    `description:"手机号"`
+}
+
+// AddCygxYidongActivitySignup 记录易董传过来的报名信息
+func AddCygxYidongActivitySignupLog(item *CygxYidongActivitySignupLog) (err error) {
+	o := orm.NewOrm()
+	_, err = o.Insert(item)
+	return
+}
+
+type CygxYidongActivitySignupReq struct {
+	RealName    string `description:"真实姓名" json:"real_name"`
+	Mobile      string `description:"手机号" json:"mobile"`
+	CountryCode string `description:"手机国家区号" json:"country_code"`
+	Email       string `description:"手机号" json:"email"`
+	CompanyName string `description:"公司名称" json:"company_name"`
+	Job         string `description:"职务" json:"job"`
+}
+
+//通过纪要ID获取活动详情
+func GetAddActivityInfoByMobile(mobile string) (item *CygxYidongActivitySignupReq, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT u.*, c.company_name FROM wx_user AS u
+	         INNER JOIN company AS c ON c.company_id = u.company_id 
+			WHERE u.mobile  = ?`
+	err = o.Raw(sql, mobile).QueryRow(&item)
+	return
+}

+ 9 - 0
routers/commentsRouter.go

@@ -133,4 +133,13 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hongze_open_api/controllers:YiDongController"] = append(beego.GlobalControllerRouter["hongze/hongze_open_api/controllers:YiDongController"],
+        beego.ControllerComments{
+            Method: "UserSignup",
+            Router: `/activity/user/signup`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
 }

+ 3 - 1
services/yidong/yidong.go

@@ -5,11 +5,13 @@ import (
 	"fmt"
 	"hongze/hongze_open_api/models/tables/open_api_user"
 	"hongze/hongze_open_api/utils"
+	"strconv"
 	"strings"
 )
 
 // GetSign 获取签名
-func GetSign(signStr string) string {
+func GetSign(activityIdYiDong string, timeInt int) string {
+	signStr := fmt.Sprintf(`activity_id=%stime=%s`, activityIdYiDong, strconv.Itoa(timeInt))
 	signStr += utils.YIDONG_HONGZE_KEY
 	fmt.Print(signStr)
 	return strings.ToUpper(utils.MD5(signStr))