package jwt //var DataAnalysisCh chan models.DataAnalysisModel func init() { //DataAnalysisCh = make(chan models.DataAnalysisModel, 1000) //go DataAnalysisChannel() } // JWTAuthMiddleWare 基于JWT的认证中间件 //func JWTAuthMiddleWare() func(c *gin.Context) { // return func(c *gin.Context) { // //客户端携带Token放在请求头 // authHeader := c.Request.Header.Get("Authorization") // if authHeader == "" { // base.ResponseErrorWithMsg(c, base.AuthorizationEmpty) // c.Abort() // return // } // // mc, err := utils.ParseToken(authHeader) // if err != nil { // base.ResponseErrorWithMsg(c, base.AuthorizationEmpty) // c.Abort() // return // } // // // des解密 // phoneMob := utils.ToDesDecrypt(mc.PhoneMob) // userId := utils.ToDesDecrypt(mc.UserId) // userName := utils.ToDesDecrypt(mc.UserName) // //hospitalCode := utils.ToDesDecrypt(mc.HospitalCode) // //chainCode := utils.ToDesDecrypt(mc.ChainCode) // //hospitalID := utils.ToDesDecrypt(mc.HospitalID) // //hospitalName := utils.ToDesDecrypt(mc.HospitalName) // //ChainID := utils.ToDesDecrypt(mc.ChainID) // // 将当前请求的username信息保存到请求的上下文c上 // c.Set("phone_mob", phoneMob) // fmt.Println(phoneMob) // c.Set("user_id", userId) // fmt.Println(userId) // c.Set("user_name", userName) // fmt.Println(userName) // //c.Set("hospital_code", hospitalCode) // //c.Set("chain_code", chainCode) // //c.Set("hospital_id", hospitalID) // //c.Set("hospital_name", hospitalName) // //c.Set("chain_id", ChainID) // // 后续的处理函数可以用过c.Get("username")来获取当前请求的用户信息 // // // 埋点生产者 // //BuriedProducer(c, hospitalCode, hospitalName, hospitalID) // c.Next() // } //} // 埋点消费者 //func DataAnalysisChannel() { // // for { // select { // case c := <-DataAnalysisCh: // buried_point.BuriedPointDistribution(c) // default: // //fmt.Println("当前没有处理的数据") // time.Sleep(500 * time.Millisecond ) // } // } //} // //func BuriedProducer(c *gin.Context, hospitalCode, hospitalName, hospitalID string) { // // // 记录埋点 // var d models.DataAnalysisModel // d.HospitalCode = hospitalCode // d.HospitalName = hospitalName // d.HospitalID = hospitalID // d.RequestBody = c.Request.Body // d.RequestTime = time.Now().Format("2006-01-02 15:04:05") // d.RequestUrl = c.Request.RequestURI // d.RequestPath = c.Request.URL.Path // d.RequestShowType = base.QueryInt(c, "showType") // // //为防止对接口入侵达到最小 达到接口隔离效果 舍弃此方法 副本传递到下一方法 // //data, _ := c.GetRawData() // //d.RequestData = data // ////解决gin框架框架的数据不能重复用的问题(拿出来后放回去) 关键点 // //c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(data)) // // // 埋点生产者 // DataAnalysisCh <- d //}