wupengfei
2025-02-25 73ac6d02a2223f19201426f3c366661d4a8e41bf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
import { useUserStore } from '@/stores/modules/user';
import Taro from '@tarojs/taro';
import { object2query } from '@life-payment/utils';
import * as userServices from '@life-payment/services/api/User';
import { useQuery } from '@tanstack/vue-query';
import { MaybeRef } from 'vue';
import { useRefeshDidShow } from './infiniteLoading';
import { LoginFormTabs } from '@/subpackages/login/constants';
import { useLoginedJump } from './login';
import { useLifeRechargeContext, APIgetLifePayWxIndentityParams } from '@life-payment/core-vue';
 
export function useUser() {
  const userStore = useUserStore();
 
  const {
    userDetail,
    userInfo,
    locationCity,
    virtualUserId,
    virtualPhoneNumber,
    wxCode,
    wxOpenId,
  } = storeToRefs(userStore);
 
  function updateUserInfo() {
    return userStore.getCurrentUserInfo();
  }
 
  return {
    user: userInfo,
    userDetail: userDetail,
    updateUserInfo,
    locationCity,
    virtualUserId,
    virtualPhoneNumber,
    wxCode,
    wxOpenId,
  };
}
 
export function useIsLogin() {
  const { virtualUserId } = useUser();
  // return computed(() => !!user.value);
  return computed(() => !!virtualUserId.value);
}
 
type UseAuthOptions = {
  needAuth?: boolean;
};
 
export function useAuth(options: UseAuthOptions = {}) {
  const { needAuth = true } = options;
  const userStore = useUserStore();
 
  const isLogin = useIsLogin();
 
  const isAuth = computed(() => !needAuth || isLogin.value);
 
  const router = Taro.useRouter();
 
  Taro.useReady(async () => {
    if (isLogin.value && userStore.firstGetUserDetail) {
      // userStore.getCurrentUserInfo();
    }
    if (needAuth && !isLogin.value) {
      Taro.navigateTo({
        url: `${RouterPath.loginByForm}?redirect=${router.path}&${object2query(router.params)}`,
      });
    }
  });
 
  return { isAuth };
}
 
export function useInitWeixinJSBridge() {
  const { wxCode } = useUser();
 
  const userStore = useUserStore();
  const router = Taro.useRouter();
 
  const code = router.params.code ?? '';
 
  const { blLifeRecharge } = useLifeRechargeContext();
 
  Taro.useReady(async () => {
    if (!code && !!WeixinJSBridge && !wxCode) {
      location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf940ff1d35a98493&redirect_uri=${location.href}&response_type=code&scope=snsapi_base#wechat_redirect`;
    }
    if (!!code && !wxCode) {
      try {
        userStore.setWxCode(router.params.code ?? '');
        let res = await getLifePayWxIndentity();
        userStore.setWxOpenId(res.openId);
      } catch (error) {}
    }
 
    async function getLifePayWxIndentity() {
      try {
        let params: APIgetLifePayWxIndentityParams = {
          code: code,
        };
        let res = await blLifeRecharge.services.getLifePayWxIndentity(params, {
          showLoading: false,
        });
        return res;
      } catch (error) {}
    }
  });
}
 
export function useGoLogin() {
  const router = Taro.useRouter();
  const { redirectParams } = useLoginedJump();
  function goLoginFn() {
    // Taro.navigateTo({
    //   url: `${RouterPath.authorization}?redirect=${router.path}&${object2query(router.params)}`,
    // });
 
    Taro.navigateTo({
      url: `${RouterPath.loginByForm}?redirect=${redirectParams.value}&tab=${LoginFormTabs.VerificationCodeLogin}`,
    });
  }
 
  return {
    goLoginFn,
  };
}