userCenter.go 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package rpc
  2. import (
  3. . "bp.jydev.jianyu360.cn/BaseService/gateway/common/gatecode"
  4. "bp.jydev.jianyu360.cn/BaseService/gateway/core/router"
  5. "bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
  6. "bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/usercenter"
  7. "fmt"
  8. "github.com/gogf/gf/v2/net/gtrace"
  9. "github.com/gogf/gf/v2/os/gcfg"
  10. "github.com/gogf/gf/v2/os/gctx"
  11. "github.com/zeromicro/go-zero/core/discov"
  12. "github.com/zeromicro/go-zero/zrpc"
  13. )
  14. var UserCenterRpc usercenter.UserCenter
  15. func initUserCenterRpc() {
  16. UserCenterRpc = usercenter.NewUserCenter(zrpc.MustNewClient(zrpc.RpcClientConf{
  17. Etcd: discov.EtcdConf{
  18. Key: gcfg.Instance().MustGet(gctx.New(), "etcd.baseserver.userCenter.key", nil).String(),
  19. Hosts: gcfg.Instance().MustGet(gctx.New(), "etcd.baseserver.userCenter.address", nil).Strings(),
  20. },
  21. }))
  22. }
  23. // CheckAccountStatus 校验企业认证状态及账户状态
  24. func CheckAccountStatus(ctx gctx.Ctx, entId int64, userId string, rule *router.Router) error {
  25. _, span := gtrace.NewSpan(ctx, "CheckAccountStatus")
  26. defer span.End()
  27. if rule.AuthCheck.GetCode() == 0 && rule.AccountCheck.GetCode() == 0 {
  28. return nil
  29. }
  30. //查询个人状态
  31. if rule.AuthCheck.CheckUserAuth() || rule.AccountCheck.CheckUserAccount() {
  32. if userErr := checkPersonalStatus(userId, rule.AuthCheck.CheckUserAuth(), rule.AccountCheck.CheckUserAccount()); userErr != nil {
  33. return userErr
  34. }
  35. }
  36. //查询企业状态
  37. if rule.AuthCheck.CheckEntAuth() || rule.AccountCheck.CheckEntAccount() {
  38. if entErr := checkEntStatus(entId, rule.AuthCheck.CheckEntAuth(), rule.AccountCheck.CheckEntAccount()); entErr != nil {
  39. return entErr
  40. }
  41. }
  42. return nil
  43. }
  44. // checkEntStatus 校验企业状态
  45. func checkEntStatus(entId int64, authCheck, accountCheck bool) error {
  46. res, err := UserCenterRpc.CheckEnt(gctx.New(), &pb.CheckEntReq{
  47. EntId: entId,
  48. })
  49. if err != nil {
  50. return NewErrorWithCode(GATEWAY_RPC_USERCENTER_ERR, err.Error())
  51. }
  52. //校验是否冻结
  53. if accountCheck && res.Data.FrozenStatus == 1 {
  54. return NewErrorWithCode(GLOBAL_ERR_ENTACCOUNT_STATUS, fmt.Sprintf("企业账户 %d 已被冻结", entId))
  55. }
  56. //校验是否认证
  57. if authCheck {
  58. //-1 未通过,0 未认证,1 已认证. -2 已到期 3 待审核
  59. switch res.Data.AuthStatus {
  60. case 0:
  61. return NewErrorWithCode(GLOBAL_ERR_ENTACCOUNT_AUTH_NOT, fmt.Sprintf("企业账户 %d 未认证", entId))
  62. case 3:
  63. return NewErrorWithCode(GLOBAL_ERR_ENTACCOUNT_AUTH_AWAIT, fmt.Sprintf("企业账户 %d 待审核", entId))
  64. case -1:
  65. return NewErrorWithCode(GLOBAL_ERR_ENTACCOUNT_AUTH_NOTPASS, fmt.Sprintf("企业账户 %d 未通过", entId))
  66. case -2:
  67. return NewErrorWithCode(GLOBAL_ERR_ENTACCOUNT_AUTH_EXPIRED, fmt.Sprintf("企业账户 %d 已到期", entId))
  68. }
  69. }
  70. return nil
  71. }
  72. // checkPersonalStatus 校验个人状态账户状态
  73. func checkPersonalStatus(userId string, authCheck, accountCheck bool) error {
  74. return NewErrorWithCode(GLOBAL_ERR_UNFINISH, "checkPersonalStatus")
  75. }