userCenter.go 2.6 KB

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