userCenter.go 3.0 KB

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