Quellcode durchsuchen

接口对接修改提交

wangkaiyue vor 3 Jahren
Ursprung
Commit
c566878503

+ 4 - 2
common/gatecode/errcode.go

@@ -15,6 +15,7 @@ const (
 	GLOBAL_ERR_UNFINISH                                       // 正在开发中
 	GLOBAL_ERR_ENTACCOUNT_STATUS                              // 企业账户已被冻结
 	GLOBAL_ERR_ENTACCOUNT_AUTH_NOT                            // 企业未认证
+	GLOBAL_ERR_ENTACCOUNT_AUTH_AWAIT                          // 企业认证待审核
 	GLOBAL_ERR_ENTACCOUNT_AUTH_NOTPASS                        // 企业认证未通过
 	GLOBAL_ERR_ENTACCOUNT_AUTH_EXPIRED                        // 企业认证已过期
 	GLOBAL_ERR_RESOURCE_PORWE_FAIL                            // 权限校验失败
@@ -33,8 +34,9 @@ const (
 	GATEWAY_RPC_RESOURCECENTER_ERR                       // 资源中心服务异常
 
 	// SERVER_ERR_NIL 服务接口错误定义
-	SERVER_ERR_NIL        ErrCode = 3000 + iota // server ok
-	SERVER_DETAIL_TIMEOUT                       // 接口超时
+	SERVER_ERR_NIL           ErrCode = 3000 + iota // server ok
+	SERVER_DETAIL_TIMEOUT                          // 接口超时
+	SERVER_DEDUCT_PARAM_LACK                       //扣减异常
 
 	// OTHER_ERR_NIL 未捕获的异常
 	OTHER_ERR_NIL       ErrCode = 4000 + iota // server ok

+ 31 - 29
common/gatecode/errcode_string.go

@@ -15,53 +15,55 @@ func _() {
 	_ = x[GLOBAL_ERR_UNFINISH-1004]
 	_ = x[GLOBAL_ERR_ENTACCOUNT_STATUS-1005]
 	_ = x[GLOBAL_ERR_ENTACCOUNT_AUTH_NOT-1006]
-	_ = x[GLOBAL_ERR_ENTACCOUNT_AUTH_NOTPASS-1007]
-	_ = x[GLOBAL_ERR_ENTACCOUNT_AUTH_EXPIRED-1008]
-	_ = x[GLOBAL_ERR_RESOURCE_PORWE_FAIL-1009]
-	_ = x[GLOBAL_ERR_RESOURCE_PORWE_EXPIRED-1010]
-	_ = x[GLOBAL_ERR_RESOURCE_PORWE_NOTENOUGH-1011]
-	_ = x[GLOBAL_ERR_RESOURCE_PORWE_NOTHAS-1012]
-	_ = x[GATEWAY_ERR_NIL-2013]
-	_ = x[GATEWAY_MODULE_UNDEFINED-2014]
-	_ = x[GATEWAY_ROUTER_NOTFIND-2015]
-	_ = x[GATEWAY_ROUTER_UPHOLD-2016]
-	_ = x[GATEWAY_REGISTED_URL_ERR-2017]
-	_ = x[GATEWAY_PROXY_ERR-2018]
-	_ = x[GATEWAY_RPC_USERCENTER_ERR-2019]
-	_ = x[GATEWAY_RPC_RESOURCECENTER_ERR-2020]
-	_ = x[SERVER_ERR_NIL-3021]
-	_ = x[SERVER_DETAIL_TIMEOUT-3022]
-	_ = x[OTHER_ERR_NIL-4023]
-	_ = x[OTHER_ERR_UNDEFINED-4024]
+	_ = x[GLOBAL_ERR_ENTACCOUNT_AUTH_AWAIT-1007]
+	_ = x[GLOBAL_ERR_ENTACCOUNT_AUTH_NOTPASS-1008]
+	_ = x[GLOBAL_ERR_ENTACCOUNT_AUTH_EXPIRED-1009]
+	_ = x[GLOBAL_ERR_RESOURCE_PORWE_FAIL-1010]
+	_ = x[GLOBAL_ERR_RESOURCE_PORWE_EXPIRED-1011]
+	_ = x[GLOBAL_ERR_RESOURCE_PORWE_NOTENOUGH-1012]
+	_ = x[GLOBAL_ERR_RESOURCE_PORWE_NOTHAS-1013]
+	_ = x[GATEWAY_ERR_NIL-2014]
+	_ = x[GATEWAY_MODULE_UNDEFINED-2015]
+	_ = x[GATEWAY_ROUTER_NOTFIND-2016]
+	_ = x[GATEWAY_ROUTER_UPHOLD-2017]
+	_ = x[GATEWAY_REGISTED_URL_ERR-2018]
+	_ = x[GATEWAY_PROXY_ERR-2019]
+	_ = x[GATEWAY_RPC_USERCENTER_ERR-2020]
+	_ = x[GATEWAY_RPC_RESOURCECENTER_ERR-2021]
+	_ = x[SERVER_ERR_NIL-3022]
+	_ = x[SERVER_DETAIL_TIMEOUT-3023]
+	_ = x[SERVER_DEDUCT_PARAM_LACK-3024]
+	_ = x[OTHER_ERR_NIL-4025]
+	_ = x[OTHER_ERR_UNDEFINED-4026]
 }
 
 const (
-	_ErrCode_name_0 = "global OK无用户身份无选择企业没有权限正在开发中企业账户已被冻结企业未认证企业认证未通过企业认证已过期权限校验失败权益已过期权益余额不足没有权限"
+	_ErrCode_name_0 = "global OK无用户身份无选择企业没有权限正在开发中企业账户已被冻结企业未认证企业认证待审核企业认证未通过企业认证已过期权限校验失败权益已过期权益余额不足没有权限"
 	_ErrCode_name_1 = "gateway ok无可用服务未注册路由地址接口维护中服务地址异常服务异常用户中心服务异常资源中心服务异常"
-	_ErrCode_name_2 = "server ok接口超时"
+	_ErrCode_name_2 = "server ok接口超时扣减异常"
 	_ErrCode_name_3 = "server ok未知异常"
 )
 
 var (
-	_ErrCode_index_0 = [...]uint8{0, 9, 24, 39, 51, 66, 90, 105, 126, 147, 165, 180, 198, 210}
+	_ErrCode_index_0 = [...]uint8{0, 9, 24, 39, 51, 66, 90, 105, 126, 147, 168, 186, 201, 219, 231}
 	_ErrCode_index_1 = [...]uint8{0, 10, 25, 46, 61, 79, 91, 115, 139}
-	_ErrCode_index_2 = [...]uint8{0, 9, 21}
+	_ErrCode_index_2 = [...]uint8{0, 9, 21, 33}
 	_ErrCode_index_3 = [...]uint8{0, 9, 21}
 )
 
 func (i ErrCode) String() string {
 	switch {
-	case 1000 <= i && i <= 1012:
+	case 1000 <= i && i <= 1013:
 		i -= 1000
 		return _ErrCode_name_0[_ErrCode_index_0[i]:_ErrCode_index_0[i+1]]
-	case 2013 <= i && i <= 2020:
-		i -= 2013
+	case 2014 <= i && i <= 2021:
+		i -= 2014
 		return _ErrCode_name_1[_ErrCode_index_1[i]:_ErrCode_index_1[i+1]]
-	case 3021 <= i && i <= 3022:
-		i -= 3021
+	case 3022 <= i && i <= 3024:
+		i -= 3022
 		return _ErrCode_name_2[_ErrCode_index_2[i]:_ErrCode_index_2[i+1]]
-	case 4023 <= i && i <= 4024:
-		i -= 4023
+	case 4025 <= i && i <= 4026:
+		i -= 4025
 		return _ErrCode_name_3[_ErrCode_index_3[i]:_ErrCode_index_3[i+1]]
 	default:
 		return "ErrCode(" + strconv.FormatInt(int64(i), 10) + ")"

+ 0 - 1
core/logs/notice.go

@@ -43,7 +43,6 @@ func (n *Notice) SendWarnMsg(detail map[string]interface{}) error {
 		return err
 	}
 	log.Println("模拟发送信息----->", string(bs))
-	return nil
 	if err := n.p.Publish(bs); err != nil {
 		log.Println("nsq连接失败", err)
 	}

+ 3 - 0
core/proxy/broker/broker.go

@@ -3,6 +3,7 @@ package broker
 import (
 	. "bp.jydev.jianyu360.cn/BaseService/gateway/common/gatecode"
 	"fmt"
+	"log"
 	"math/rand"
 	"sync"
 )
@@ -28,6 +29,7 @@ func (r *broker) AddNode(code, address string) error {
 	//进行添加操作
 	r.Lock()
 	defer r.Unlock()
+	log.Printf("节点%s服务注册%s", code, address)
 	r.addresses[code] = append(r.addresses[code], address)
 	return nil
 }
@@ -49,6 +51,7 @@ func (r *broker) DelNode(code, address string) error {
 	r.Lock()
 	defer r.Unlock()
 	r.addresses[code] = newAddress
+	log.Printf("节点%s关闭服务%s", code, address)
 	return nil
 }
 

+ 14 - 7
core/proxy/middleware/filterFuncs.go

@@ -3,6 +3,7 @@ package middleware
 import (
 	"bp.jydev.jianyu360.cn/BaseService/gateway/common"
 	. "bp.jydev.jianyu360.cn/BaseService/gateway/common/gatecode"
+	"bp.jydev.jianyu360.cn/BaseService/gateway/core/logs"
 	"bp.jydev.jianyu360.cn/BaseService/gateway/core/proxy/rpc"
 	"bp.jydev.jianyu360.cn/BaseService/gateway/core/router"
 	"bytes"
@@ -12,6 +13,7 @@ import (
 	"github.com/gogf/gf/v2/os/gctx"
 	"github.com/gogf/gf/v2/util/gconv"
 	"io/ioutil"
+	"net/http"
 	"strings"
 )
 
@@ -31,8 +33,8 @@ func filterBefore(r *ghttp.Request) error {
 		}
 
 		//	用户身份注入请求体中
-		if uCheck || eCheck {
-			infusionIdentity(r, ctx.Sess.EntId, ctx.Sess.UserId)
+		if (uCheck || eCheck) && r.Request.Method == http.MethodPost {
+			infusionIdentity(r, ctx.Sess.EntId, ctx.Sess.UserId, ctx.Sess.Phone, rule.FuncCode, rule.AppId)
 		}
 	}
 
@@ -45,7 +47,7 @@ func filterBefore(r *ghttp.Request) error {
 
 	//校验权益
 	if rule.PowerCheck == 1 {
-		if err := rpc.CheekResourcePower(ctx.Sess.EntId, -1, rule.FuncCode); err != nil {
+		if err := rpc.CheekResourcePower(ctx.Sess.EntId, -1, rule.FuncCode, rule.AppId); err != nil {
 			return err
 		}
 	}
@@ -61,13 +63,13 @@ func filterAfter(r *ghttp.Request) error {
 		var deductNum int64 = 1
 		if rule.Deduct == 2 {
 			if deductNum = gconv.Int64(r.Response.Header().Get("deductIds")); deductNum <= 0 {
-				return NewErrorWithCode(GLOBAL_ERR_NOTLOGIN)
+				return NewErrorWithCode(SERVER_DEDUCT_PARAM_LACK)
 			}
 			if idsStr := r.Response.Header().Get("deductNum"); idsStr != "" {
 				ids = strings.Split(idsStr, ",")
 			}
 		}
-		if err := rpc.ResourcePowerDeduct(ctx.Sess.EntId, -1, rule.FuncCode, deductNum, ids); err != nil {
+		if err := rpc.ResourcePowerDeduct(ctx.Sess.EntId, -1, rule.FuncCode, rule.AppId, deductNum, ids); err != nil {
 			r.SetError(err)
 		}
 	}
@@ -89,13 +91,18 @@ func getPowerCheck(c int) (userIdCheck bool, entIdCheck bool) {
 }
 
 // infusionIdentity 用户身份注入
-func infusionIdentity(r *ghttp.Request, entId int64, userId string) {
+func infusionIdentity(r *ghttp.Request, entId int64, userId, phone, funcCode, appId string) {
 	//body-json请求方式
-	var newBody map[string]interface{}
+	newBody := map[string]interface{}{}
+	logs.GInfo.Debug(r.GetCtx(), "请求内容-req", string(r.GetBody()))
 	_ = json.Unmarshal(r.GetBody(), &newBody)
 	newBody["userId"] = userId
 	newBody["entId"] = entId
+	newBody["phone"] = phone
+	newBody["appId"] = appId
+	newBody["functionCode"] = funcCode
 	nb, _ := json.Marshal(newBody)
+	logs.GInfo.Debug(r.GetCtx(), "请求内容-changed", string(nb))
 	r.Request.Body = ioutil.NopCloser(bytes.NewBuffer(nb))
 	r.ContentLength = int64(len(nb))
 	//r.Request.Header.Set("Content-Length", fmt.Sprintf("%d", len(nb)))

+ 4 - 4
core/proxy/rpc/resourceCenter.go

@@ -26,9 +26,9 @@ func initResourceCenterRpc() {
 // eid 企业id
 // uId 新用户id;非mongodb中user表id
 // funcCode 业务代码
-func CheekResourcePower(eId, uId int64, funcCode string) error {
+func CheekResourcePower(eId, uId int64, funcCode, Appid string) error {
 	res, err := ResourceCenterRpc.CheckPower(gctx.New(), &pb.CheckPowerReq{
-		Appid:        gcfg.Instance().MustGet(gctx.New(), "etcd.baseserver.appid", "10000").String(),
+		Appid:        Appid,
 		FunctionCode: funcCode,
 		EntId:        eId,
 		UserId:       uId,
@@ -56,9 +56,9 @@ func CheekResourcePower(eId, uId int64, funcCode string) error {
 // funcCode 业务代码
 // deductNum 扣除数量
 // ids 扣除详情id;例如数据导出信息id等数据
-func ResourcePowerDeduct(eId, uId int64, funcCode string, deductNum int64, ids []string) error {
+func ResourcePowerDeduct(eId, uId int64, funcCode, appId string, deductNum int64, ids []string) error {
 	res, err := ResourceCenterRpc.Deduction(gctx.New(), &pb.DeductionReq{
-		Appid:        gcfg.Instance().MustGet(gctx.New(), "etcd.baseserver.appid", "10000").String(),
+		Appid:        appId,
 		EntId:        eId,
 		UserId:       uId,
 		FunctionCode: funcCode,

+ 4 - 2
core/proxy/rpc/userCenter.go

@@ -62,16 +62,18 @@ func checkEntStatus(entId int64, authCheck, statusCheck bool) error {
 	}
 
 	//校验是否冻结
-	if statusCheck && res.Data.FrozenStatus != 1 {
+	if statusCheck && res.Data.FrozenStatus == 1 {
 		return NewErrorWithCode(GLOBAL_ERR_ENTACCOUNT_STATUS, fmt.Sprintf("企业账户 %d 已被冻结", entId))
 	}
 
 	//校验是否认证
 	if authCheck {
-		//-1 未通过,0 未认证,1 已认证. -2 已到期
+		//-1 未通过,0 未认证,1 已认证. -2 已到期 3 待审核
 		switch res.Data.AuthStatus {
 		case 0:
 			return NewErrorWithCode(GLOBAL_ERR_ENTACCOUNT_AUTH_NOT, fmt.Sprintf("企业账户 %d 未认证", entId))
+		case 3:
+			return NewErrorWithCode(GLOBAL_ERR_ENTACCOUNT_AUTH_AWAIT, fmt.Sprintf("企业账户 %d 待审核", entId))
 		case -1:
 			return NewErrorWithCode(GLOBAL_ERR_ENTACCOUNT_AUTH_NOTPASS, fmt.Sprintf("企业账户 %d 未通过", entId))
 		case -2:

+ 2 - 2
core/router/manager.go

@@ -17,8 +17,7 @@ type Manager struct {
 
 // InitRouterManager 初始化系统代理路由
 func InitRouterManager() (*Manager, error) {
-
-	res := db.GateWatMySql.Query("SELECT status,middleground_code,url,function_code,check_sess,check_power,check_auth,check_status,check_blacklist,timeout,remark,deduct_source FROM front_proxy")
+	res := db.GateWatMySql.Query("SELECT status,middleground_code,url,function_code,check_sess,check_power,check_auth,check_status,check_blacklist,timeout,remark,appid,deduct_source FROM front_proxy")
 	if res == nil || len(*res) == 0 {
 		return nil, fmt.Errorf("未发现可用路由")
 	}
@@ -39,6 +38,7 @@ func InitRouterManager() (*Manager, error) {
 			Deduct:       gconv.Int(row["deduct_source"]),
 			FuncCode:     gconv.String(row["function_code"]),
 			MiddleCode:   gconv.String(row["middleground_code"]),
+			AppId:        gconv.String(row["appid"]),
 			ReqUrl:       router,
 			TimeOut:      gconv.Int64(row["timeout"]),
 			Remark:       gconv.String(row["remark"]),

+ 13 - 12
core/router/router.go

@@ -1,16 +1,17 @@
 package router
 
 type Router struct {
-	Status       int    //0:冻结不可用 1:正常可用
-	SessCheck    int    //session校验 xy x校验userId y校验endId 0不需要 1需要
-	PowerCheck   int    //是否权限校验,1需要 0 不需要
-	AccountCheck int    //是否需要检查状态(冻结);xy x校验用户 y校验企业 0不需要 1需要
-	AuthCheck    int    //身份校验;xy x校验用户 y校验企业 0不需要 1需要
-	Deduct       int    //扣减来源;0:不扣减 1:前置代理(默认:1) 2:后端应用(必须返回后端应用)3:后台应用自行扣减
-	TimeOut      int64  //接口超时提醒,单位毫秒;默认500毫秒
-	BlackCheck   bool   //是否校验黑名单 【是否校验黑名单; 0:不需要 1:需要】
-	FuncCode     string //功能代码
-	MiddleCode   string //中台代码
-	ReqUrl       string //请求地址
-	Remark       string //路由备注信息
+	Status       int    // 0:冻结不可用 1:正常可用
+	SessCheck    int    // session校验 xy x校验userId y校验endId 0不需要 1需要
+	PowerCheck   int    // 是否权限校验,1需要 0 不需要
+	AccountCheck int    // 是否需要检查状态(冻结);xy x校验用户 y校验企业 0不需要 1需要
+	AuthCheck    int    // 身份校验;xy x校验用户 y校验企业 0不需要 1需要
+	Deduct       int    // 扣减来源;0:不扣减 1:前置代理(默认:1) 2:后端应用(必须返回后端应用)3:后台应用自行扣减
+	TimeOut      int64  // 接口超时提醒,单位毫秒;默认500毫秒
+	AppId        string // 平台标识
+	BlackCheck   bool   // 是否校验黑名单 【是否校验黑名单; 0:不需要 1:需要】
+	FuncCode     string // 功能代码
+	MiddleCode   string // 中台代码
+	ReqUrl       string // 请求地址
+	Remark       string // 路由备注信息
 }

+ 4 - 2
core/router/session.go

@@ -7,6 +7,7 @@ import (
 	"fmt"
 	"github.com/gogf/gf/v2/frame/g"
 	"github.com/gogf/gf/v2/net/ghttp"
+	"github.com/gogf/gf/v2/util/gconv"
 	"net/url"
 )
 
@@ -18,6 +19,7 @@ const (
 type JySession struct {
 	UserId string // 上下文用户信息
 	EntId  int64  // 当前企业id
+	Phone  string // 手机号
 	Data   g.Map  // 当前Session管理对象
 }
 
@@ -52,9 +54,9 @@ func InitJySessionContext(r *ghttp.Request) (jSession *JySession, err error) {
 	}
 	var data map[string]interface{}
 	err = json.Unmarshal(*bs, &data)
-
+	jSession.Phone, _ = data["phone"].(string)
 	jSession.UserId, _ = data["userId"].(string)
-	jSession.EntId, _ = data["ent_id"].(int64)
+	jSession.EntId = gconv.Int64(data["entId"])
 	jSession.Data = data
 	return
 }

+ 3 - 3
go.mod

@@ -3,10 +3,10 @@ module bp.jydev.jianyu360.cn/BaseService/gateway
 go 1.16
 
 require (
-	app.yhyue.com/moapp/jybase v0.0.0-20220415064050-37ce64b3e2d4
+	app.yhyue.com/moapp/jybase v0.0.0-20220420032112-668025915ee4
 	bp.jydev.jianyu360.cn/BP/jynsq v0.0.0-20220222052708-ebc43af90698
-	bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.0-20220418005748-8ba5d936dd53
-	bp.jydev.jianyu360.cn/BaseService/userCenter v0.0.0-20220418072311-2062bed1e700
+	bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.0-20220420075831-0b59892e9982
+	bp.jydev.jianyu360.cn/BaseService/userCenter v0.0.0-20220421015128-4a36f3eac5c5
 	github.com/gogf/gf/v2 v2.0.6
 	github.com/zeromicro/go-zero v1.3.2
 	go.etcd.io/etcd/client/v3 v3.5.2

+ 9 - 3
go.sum

@@ -1,12 +1,18 @@
 app.yhyue.com/moapp/esv1 v0.0.0-20220414031211-3da4123e648d/go.mod h1:91/lSD/hS+ckMVP3WdidRzDhC60lLMdyce9QHy0cSMA=
-app.yhyue.com/moapp/jybase v0.0.0-20220415064050-37ce64b3e2d4 h1:da6H5iMYf7aQ2CtO5pXSN9hDul1w1CvkjnsDgh9S3+o=
 app.yhyue.com/moapp/jybase v0.0.0-20220415064050-37ce64b3e2d4/go.mod h1:qNRA0sHuYqcLoYoP8irpaWnW9YsXixe6obBIkwaXpD0=
+app.yhyue.com/moapp/jybase v0.0.0-20220418104200-46c3fff161c7/go.mod h1:qNRA0sHuYqcLoYoP8irpaWnW9YsXixe6obBIkwaXpD0=
+app.yhyue.com/moapp/jybase v0.0.0-20220420032112-668025915ee4 h1:GD3/xYydpFEHe3qQ1pXTTucuhxDP8eEdZIrbu2Iz10I=
+app.yhyue.com/moapp/jybase v0.0.0-20220420032112-668025915ee4/go.mod h1:qNRA0sHuYqcLoYoP8irpaWnW9YsXixe6obBIkwaXpD0=
 bp.jydev.jianyu360.cn/BP/jynsq v0.0.0-20220222052708-ebc43af90698 h1:2xGDnrmbGt4VzAmDSsKH+C9Bq40z9eQ4NJfH/779o8g=
 bp.jydev.jianyu360.cn/BP/jynsq v0.0.0-20220222052708-ebc43af90698/go.mod h1:ojo/AUH9Yr1wzarEjOaNMkj1Cet/9r8IgLyba64Z52E=
-bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.0-20220418005748-8ba5d936dd53 h1:2YDswVIYCiKgg/+l7uHMe72MEbZa9gjUl8h9Cdrf8Z4=
+bp.jydev.jianyu360.cn/BaseService/gateway v0.0.0-20220419090715-88ddb32961be/go.mod h1:Yj4oabIGItuMoF0BXYLz2XAnF581kxgXBrvlUtIJrkI=
 bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.0-20220418005748-8ba5d936dd53/go.mod h1:E5lcDI3k4FESLxiAetCfWQTq8qfpy9cv0yN1oKoEO34=
-bp.jydev.jianyu360.cn/BaseService/userCenter v0.0.0-20220418072311-2062bed1e700 h1:c0Ccvjt6sdT35bPP6Czn4twtfiWAaWUqAoflt9cCsqw=
+bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.0-20220419023723-0b32d4a41751/go.mod h1:6KL5LMEku83uRbre0W/bj5kXG2I6pJGBFtktmtp51yM=
+bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.0-20220420075831-0b59892e9982 h1:+56m/dW9ZW0YEXgAakeIIxqUFefufzp5XckU4iEuIFM=
+bp.jydev.jianyu360.cn/BaseService/resourceCenter v0.0.0-20220420075831-0b59892e9982/go.mod h1:wsHNO91h37H+xE4ZNny0yd7mtpODeDJxbVYhIRMR+qw=
 bp.jydev.jianyu360.cn/BaseService/userCenter v0.0.0-20220418072311-2062bed1e700/go.mod h1:KjcrxTzM96tBc6G4B8tlLBn1lrVy5UJYF8+eTdP4xAE=
+bp.jydev.jianyu360.cn/BaseService/userCenter v0.0.0-20220421015128-4a36f3eac5c5 h1:ovbEGGgn3rJM70KjqvLyUn5geZx8QTlanrjFfjYyNGI=
+bp.jydev.jianyu360.cn/BaseService/userCenter v0.0.0-20220421015128-4a36f3eac5c5/go.mod h1:GT0QC4aaKDuXxAvaU4G02XjCc31TU1ctqBGqxQYOfC4=
 cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
 cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
 cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=