123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- package rpc
- import (
- . "bp.jydev.jianyu360.cn/BaseService/gateway/common/gatecode"
- "bp.jydev.jianyu360.cn/BaseService/resourceCenter/rpc/pb"
- "bp.jydev.jianyu360.cn/BaseService/resourceCenter/rpc/resource"
- "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"
- "strings"
- )
- 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 业务代码
- // reqFuncCode 通用结构&&需要校验权限则先判断此接口是否有此functionCode的方法
- // appid 平台标识
- func CheekResourcePower(eId, uId int64, funcCodeRule, reqFuncCode, Appid string) error {
- funcCode := funcCodeRule
- funcCodeArr := strings.Split(funcCodeRule, ",")
- if reqFuncCode != "" || len(funcCodeArr) > 1 {
- var checkPass bool
- for _, tFunc := range funcCodeArr {
- if reqFuncCode == tFunc {
- checkPass = true
- break
- }
- }
- if !checkPass {
- return NewErrorWithCode(GLOBAL_ERR_RESOURCE_POWERCODE_ERR, fmt.Sprintf("账户 eId:%d,uId:%d 无效funccode:%s req:%s权限", eId, uId, funcCodeRule, reqFuncCode))
- }
- funcCode = reqFuncCode
- }
- res, err := ResourceCenterRpc.CheckPower(gctx.New(), &pb.CheckPowerReq{
- Appid: Appid,
- 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, appId string, deductNum int64, ids []string) error {
- res, err := ResourceCenterRpc.Deduction(gctx.New(), &pb.DeductionReq{
- Appid: appId,
- 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
- }
|