resourceCenter.go 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package rpc
  2. import (
  3. "bp.jydev.jianyu360.cn/BaseService/resourceCenter/rpc/pb"
  4. "bp.jydev.jianyu360.cn/BaseService/resourceCenter/rpc/resource"
  5. "fmt"
  6. . "gateway/common/gatecode"
  7. "github.com/gogf/gf/v2/os/gcfg"
  8. "github.com/gogf/gf/v2/os/gctx"
  9. "github.com/zeromicro/go-zero/core/discov"
  10. "github.com/zeromicro/go-zero/zrpc"
  11. )
  12. var ResourceCenterRpc resource.Resource
  13. func initResourceCenterRpc() {
  14. ResourceCenterRpc = resource.NewResource(zrpc.MustNewClient(zrpc.RpcClientConf{
  15. Etcd: discov.EtcdConf{
  16. Key: gcfg.Instance().MustGet(gctx.New(), "etcd.baseserver.resourceCenter.key", nil).String(),
  17. Hosts: gcfg.Instance().MustGet(gctx.New(), "etcd.baseserver.resourceCenter.address", nil).Strings(),
  18. },
  19. }))
  20. }
  21. // CheekResourcePower 校验账户是否有对应权益
  22. // eid 企业id
  23. // uId 新用户id;非mongodb中user表id
  24. // funcCode 业务代码
  25. func CheekResourcePower(eId, uId int64, funcCode string) error {
  26. res, err := ResourceCenterRpc.CheckPower(gctx.New(), &pb.CheckPowerReq{
  27. Appid: gcfg.Instance().MustGet(gctx.New(), "etcd.baseserver.appid", "10000").String(),
  28. FunctionCode: funcCode,
  29. EntId: eId,
  30. UserId: uId,
  31. })
  32. if err != nil {
  33. return NewErrorWithCode(GATEWAY_RPC_RESOURCECENTER_ERR, err.Error())
  34. }
  35. //0:失败 1:成功 -1:不在有效期内 -2:数量不足 -3:没有授权
  36. switch res.Status {
  37. case 0:
  38. return NewErrorWithCode(GLOBAL_ERR_RESOURCE_PORWE_FAIL, fmt.Sprintf("账户 eId:%d,uId:%d 无业务%s权限", eId, uId, funcCode))
  39. case -1:
  40. return NewErrorWithCode(GLOBAL_ERR_RESOURCE_PORWE_EXPIRED, fmt.Sprintf("账户 eId:%d,uId:%d 业务%s权限已过期", eId, uId, funcCode))
  41. case -2:
  42. return NewErrorWithCode(GLOBAL_ERR_RESOURCE_PORWE_NOTENOUGH, fmt.Sprintf("账户 eId:%d,uId:%d 业务%s权限余额不足", eId, uId, funcCode))
  43. case -3:
  44. return NewErrorWithCode(GLOBAL_ERR_RESOURCE_PORWE_NOTHAS, fmt.Sprintf("账户 eId:%d,uId:%d 业务%s权限无授权", eId, uId, funcCode))
  45. }
  46. return nil
  47. }
  48. // ResourcePowerDeduct 资源中心消费
  49. // eid 企业id
  50. // uId 新用户id;非mongodb中user表id
  51. // funcCode 业务代码
  52. // deductNum 扣除数量
  53. // ids 扣除详情id;例如数据导出信息id等数据
  54. func ResourcePowerDeduct(eId, uId int64, funcCode string, deductNum int64, ids []string) error {
  55. res, err := ResourceCenterRpc.Deduction(gctx.New(), &pb.DeductionReq{
  56. Appid: gcfg.Instance().MustGet(gctx.New(), "etcd.baseserver.appid", "10000").String(),
  57. EntId: eId,
  58. UserId: uId,
  59. FunctionCode: funcCode,
  60. Count: deductNum,
  61. Ids: ids,
  62. })
  63. if err != nil {
  64. return NewErrorWithCode(GATEWAY_RPC_RESOURCECENTER_ERR, err.Error())
  65. }
  66. //0:失败 1:成功 -1:不在有效期内 -2:数量不足 -3:没有授权
  67. switch res.Status {
  68. case 0:
  69. return NewErrorWithCode(GLOBAL_ERR_RESOURCE_PORWE_FAIL, fmt.Sprintf("账户 eId:%d,uId:%d 扣除业务%s权限失败", eId, uId, funcCode))
  70. case -1:
  71. return NewErrorWithCode(GLOBAL_ERR_RESOURCE_PORWE_EXPIRED, fmt.Sprintf("账户 eId:%d,uId:%d 扣除业务%s权限失败,权限已过期", eId, uId, funcCode))
  72. case -2:
  73. return NewErrorWithCode(GLOBAL_ERR_RESOURCE_PORWE_NOTENOUGH, fmt.Sprintf("账户 eId:%d,uId:%d 扣除业务%s权限失败,余额不足", eId, uId, funcCode))
  74. case -3:
  75. return NewErrorWithCode(GLOBAL_ERR_RESOURCE_PORWE_NOTHAS, fmt.Sprintf("账户 eId:%d,uId:%d 扣除业务%s权限失败", eId, uId, funcCode))
  76. }
  77. return nil
  78. }