package rpc import ( "bp.jydev.jianyu360.cn/BaseService/resourceCenter/rpc/pb" "bp.jydev.jianyu360.cn/BaseService/resourceCenter/rpc/resource" "fmt" . "gateway/common/gatecode" "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 ResourceCenterRpc resource.Resource func initResourceCenterRpc() { ResourceCenterRpc = resource.NewResource(zrpc.MustNewClient(zrpc.RpcClientConf{ Etcd: discov.EtcdConf{ Key: gcfg.Instance().MustGet(gctx.New(), "etcd.baseserver.resourceCenter.key", nil).String(), Hosts: gcfg.Instance().MustGet(gctx.New(), "etcd.baseserver.resourceCenter.address", nil).Strings(), }, })) } // CheekResourcePower 校验账户是否有对应权益 // eid 企业id // uId 新用户id;非mongodb中user表id // funcCode 业务代码 func CheekResourcePower(eId, uId int64, funcCode string) error { res, err := ResourceCenterRpc.CheckPower(gctx.New(), &pb.CheckPowerReq{ Appid: gcfg.Instance().MustGet(gctx.New(), "etcd.baseserver.appid", "10000").String(), FunctionCode: funcCode, EntId: eId, UserId: uId, }) if err != nil { return NewErrorWithCode(GATEWAY_RPC_RESOURCECENTER_ERR, err.Error()) } //0:失败 1:成功 -1:不在有效期内 -2:数量不足 -3:没有授权 switch res.Status { case 0: return NewErrorWithCode(GLOBAL_ERR_RESOURCE_PORWE_FAIL, fmt.Sprintf("账户 eId:%d,uId:%d 无业务%s权限", eId, uId, funcCode)) case -1: return NewErrorWithCode(GLOBAL_ERR_RESOURCE_PORWE_EXPIRED, fmt.Sprintf("账户 eId:%d,uId:%d 业务%s权限已过期", eId, uId, funcCode)) case -2: return NewErrorWithCode(GLOBAL_ERR_RESOURCE_PORWE_NOTENOUGH, fmt.Sprintf("账户 eId:%d,uId:%d 业务%s权限余额不足", eId, uId, funcCode)) case -3: return NewErrorWithCode(GLOBAL_ERR_RESOURCE_PORWE_NOTHAS, fmt.Sprintf("账户 eId:%d,uId:%d 业务%s权限无授权", eId, uId, funcCode)) } return nil } // ResourcePowerDeduct 资源中心消费 // eid 企业id // uId 新用户id;非mongodb中user表id // funcCode 业务代码 // deductNum 扣除数量 // ids 扣除详情id;例如数据导出信息id等数据 func ResourcePowerDeduct(eId, uId int64, funcCode 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(), EntId: eId, UserId: uId, FunctionCode: funcCode, Count: deductNum, Ids: ids, }) if err != nil { return NewErrorWithCode(GATEWAY_RPC_RESOURCECENTER_ERR, err.Error()) } //0:失败 1:成功 -1:不在有效期内 -2:数量不足 -3:没有授权 switch res.Status { case 0: return NewErrorWithCode(GLOBAL_ERR_RESOURCE_PORWE_FAIL, fmt.Sprintf("账户 eId:%d,uId:%d 扣除业务%s权限失败", eId, uId, funcCode)) case -1: return NewErrorWithCode(GLOBAL_ERR_RESOURCE_PORWE_EXPIRED, fmt.Sprintf("账户 eId:%d,uId:%d 扣除业务%s权限失败,权限已过期", eId, uId, funcCode)) case -2: return NewErrorWithCode(GLOBAL_ERR_RESOURCE_PORWE_NOTENOUGH, fmt.Sprintf("账户 eId:%d,uId:%d 扣除业务%s权限失败,余额不足", eId, uId, funcCode)) case -3: return NewErrorWithCode(GLOBAL_ERR_RESOURCE_PORWE_NOTHAS, fmt.Sprintf("账户 eId:%d,uId:%d 扣除业务%s权限失败", eId, uId, funcCode)) } return nil }