package rpc import ( . "bp.jydev.jianyu360.cn/BaseService/gateway/common/gatecode" "bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb" "bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/usercenter" "fmt" "github.com/gogf/gf/v2/os/gcfg" "github.com/gogf/gf/v2/os/gctx" "github.com/zeromicro/go-zero/core/discov" "github.com/zeromicro/go-zero/zrpc" ) var UserCenterRpc usercenter.UserCenter func initUserCenterRpc() { UserCenterRpc = usercenter.NewUserCenter(zrpc.MustNewClient(zrpc.RpcClientConf{ Etcd: discov.EtcdConf{ Key: gcfg.Instance().MustGet(gctx.New(), "etcd.baseserver.userCenter.key", nil).String(), Hosts: gcfg.Instance().MustGet(gctx.New(), "etcd.baseserver.userCenter.address", nil).Strings(), }, })) } // CheckAccountStatus 校验企业认证状态及账户状态 // authCheck 是否需要认证;xy x个人 y企业 0:否 1是, // statusCheck是否需要检查状态(冻结);xy x个人 y企业 0:否 1是, func CheckAccountStatus(entId int64, userId string, authCheck, statusCheck int) error { if authCheck == 0 && statusCheck == 0 { return nil } authUser, authEnt := getPCheck(authCheck) statusUser, statusEnt := getPCheck(statusCheck) //查询个人状态 if authUser || statusUser { if userErr := checkPersonalStatus(userId, authCheck == 2, statusCheck == 2); userErr != nil { return userErr } } //查询企业状态 if authEnt || statusEnt { if entErr := checkEntStatus(entId, authCheck == 1, statusCheck == 1); entErr != nil { return entErr } } return nil } // checkEntStatus 校验企业状态 func checkEntStatus(entId int64, authCheck, statusCheck bool) error { res, err := UserCenterRpc.CheckEnt(gctx.New(), &pb.CheckEntReq{ EntId: entId, }) if err != nil { return NewErrorWithCode(GATEWAY_RPC_USERCENTER_ERR, err.Error()) } //校验是否冻结 if statusCheck && res.Data.FrozenStatus != 1 { return NewErrorWithCode(GLOBAL_ERR_ENTACCOUNT_STATUS, fmt.Sprintf("企业账户 %d 已被冻结", entId)) } //校验是否认证 if authCheck { //-1 未通过,0 未认证,1 已认证. -2 已到期 switch res.Data.AuthStatus { case 0: return NewErrorWithCode(GLOBAL_ERR_ENTACCOUNT_AUTH_NOT, fmt.Sprintf("企业账户 %d 未认证", entId)) case -1: return NewErrorWithCode(GLOBAL_ERR_ENTACCOUNT_AUTH_NOTPASS, fmt.Sprintf("企业账户 %d 未通过", entId)) case -2: return NewErrorWithCode(GLOBAL_ERR_ENTACCOUNT_AUTH_EXPIRED, fmt.Sprintf("企业账户 %d 已到期", entId)) } } return nil } // checkPersonalStatus 校验个人状态账户状态 func checkPersonalStatus(userId string, authCheck, statusCheck bool) error { return NewErrorWithCode(GLOBAL_ERR_UNFINISH, "checkPersonalStatus") } func getPCheck(c int) (check1 bool, check2 bool) { check1 = c/10%10 == 1 check2 = c/1%10 == 1 return }