zhengyiming
2025-03-28 8bb9173a95a87e3ceab4f48b5b34041af38b7c70
apps/taro/src/stores/modules/user.ts
@@ -8,9 +8,12 @@
  setUserDetail,
  getUserDetail,
  removeUserDetail,
  setStorageVirtualUserId,
  getStorageVirtualUserId,
  removeStorageVirtualUserId,
  LoginVirtualRes,
} from '@/utils/storage/auth';
import * as accountServices from '@life-payment/services/api/Account';
import * as userServices from '@life-payment/services/api/User';
import Taro, { useRouter } from '@tarojs/taro';
import { ButtonProps } from '@tarojs/components';
import { debounce } from 'lodash';
@@ -18,6 +21,8 @@
import { getAccountInfoFromAccessToken, AccountInfo, setOSSLink } from '@life-payment/utils';
import DefaultAvatar from '@/assets/components/icon-default-avatar.png';
import { myClient } from '@/constants/query';
import { blLifeRecharge } from '@/utils/blLifeRecharge';
import { LifePayPhoneMesssageCodeLoginOutput } from '@life-payment/core-vue';
interface UserState {
  userInfo?: Nullable<API.IdentityModelTokenCacheItem>;
@@ -29,13 +34,21 @@
  locationCity?: string;
  locationProvince?: string;
  firstSetLocation?: boolean;
  virtualUserId?: string;
  virtualPhoneNumber?: string;
  wxCode?: string;
  wxOpenId?: string;
  virtualUserInfo?: LifePayPhoneMesssageCodeLoginOutput;
}
const goAuthorization = debounce(
  () => {
    const route = Taro.getCurrentInstance().router;
    if (route.path !== RouterPath.authorization) {
      Taro.navigateTo({
      RouteHelper.navigateTo({
        url: RouterPath.authorization,
      });
    }
@@ -52,6 +65,7 @@
  state: (): UserState => {
    const userInfo = getCacheUserInfo();
    const userDetail = getUserDetail();
    const storageVirtualUser = getStorageVirtualUserId();
    return {
      // user info
@@ -62,6 +76,12 @@
      refreshToken: userInfo?.refreshToken ?? '',
      userDetail: userDetail,
      firstGetUserDetail: true,
      virtualUserId: storageVirtualUser?.virtualUserId ?? '',
      virtualPhoneNumber: storageVirtualUser?.virtualPhoneNumber ?? '',
      wxCode: '',
      wxOpenId: '',
    };
  },
  getters: {
@@ -93,56 +113,61 @@
      wxMiniAppUserLoginRes: any
    ) {
      try {
        let res: API.IdentityModelTokenCacheItem;
        if (!wxMiniAppUserLoginRes.accessToken) {
          let params: API.WxMiniAppPhoneLoginInput = {
            openId: wxMiniAppUserLoginRes.openId,
            sessionKey: wxMiniAppUserLoginRes.sessionKey,
            encryptedData: detail.encryptedData,
            iv: detail.iv,
            wxMiniApp: WxMiniAppEnum.C端小程序,
          };
          res = await accountServices.wxMiniAppPhoneAuthLogin(params);
          this.loginSuccess(res);
        }
        return res;
        // let res: API.IdentityModelTokenCacheItem;
        // if (!wxMiniAppUserLoginRes.accessToken) {
        //   let params: API.WxMiniAppPhoneLoginInput = {
        //     openId: wxMiniAppUserLoginRes.openId,
        //     sessionKey: wxMiniAppUserLoginRes.sessionKey,
        //     encryptedData: detail.encryptedData,
        //     iv: detail.iv,
        //     // wxMiniApp: WxMiniAppEnum.C端小程序,
        //   };
        //   res = await accountServices.wxMiniAppPhoneAuthLogin(params);
        //   this.loginSuccess(res);
        // }
        // return res;
        return 1;
      } catch (error) {
        console.log('error3: ', error);
      }
    },
    // 用户手机验证码登入
    async loginByUsername(data: API.PhoneMesssageCodeLoginInput) {
      let res = await accountServices.phoneMesssageCodeLogin(
    async loginByUsername(data: any) {
      let res = await accountServices.lifePayPhoneMesssageCodeLogin(
        {
          phoneNumber: data.phoneNumber,
          code: data.code,
          // code: data.code,
        },
        { showLoading: false }
      );
      if (res) {
        this.loginSuccess(res);
        this.loginVirtualSuccess({
          virtualUserId: res.userId,
          virtualPhoneNumber: data.phoneNumber,
        });
      }
      return res;
    },
    // 用户账号密码登入
    async loginByPassword(data: API.AccessRequestDto) {
      let res = await accountServices.passwordLogin(
        {
          loginName: data.userName,
          password: data.userPassword,
        },
        { showLoading: false }
      );
      if (res) {
        this.loginSuccess(res);
      }
      return res;
      // let res = await accountServices.passwordLogin(
      //   {
      //     loginName: data.userName,
      //     password: data.userPassword,
      //   },
      //   { showLoading: false }
      // );
      // if (res) {
      //   this.loginSuccess(res);
      // }
      // return res;
    },
    async loginSuccess(res: API.IdentityModelTokenCacheItem) {
      console.log('res: ', res);
      try {
        this.setUserInfoAction(res);
        this.setTokenAction(res);
@@ -150,15 +175,29 @@
      } catch (error) {}
    },
    async loginVirtualSuccess(virtualUserRes: LoginVirtualRes) {
      try {
        this.setVirtualUserId(virtualUserRes);
        this.getCurrentUserInfo();
      } catch (error) {}
    },
    setVirtualUserId(virtualUserRes: LoginVirtualRes) {
      this.virtualUserId = virtualUserRes.virtualUserId;
      this.virtualPhoneNumber = virtualUserRes.virtualPhoneNumber;
      setStorageVirtualUserId(virtualUserRes);
    },
    async wxMiniAppUserLoginFromScan(wxIndentityRes: API.WxMiniAppIndentityInfo, uuid: string) {
      try {
        let res = await accountServices.wxMiniAppUserLoginFromScan({
          uId: uuid,
          userName: wxIndentityRes.userName,
          openId: wxIndentityRes.openId,
        });
        this.loginSuccess(res);
        return res;
        // let res = await accountServices.wxMiniAppUserLoginFromScan({
        //   uId: uuid,
        //   userName: wxIndentityRes.userName,
        //   openId: wxIndentityRes.openId,
        // });
        // this.loginSuccess(res);
        // return res;
        return 1;
      } catch (error) {}
    },
@@ -168,28 +207,28 @@
      uuid: string
    ) {
      try {
        let res = await accountServices.wxMiniAppPhoneAuthLoginFromScan({
          uId: uuid,
          openId: wxIndentityRes.openId,
          sessionKey: wxIndentityRes.sessionKey,
          encryptedData: detail.encryptedData,
          iv: detail.iv,
          wxMiniApp: WxMiniAppEnum.C端小程序,
        });
        this.loginSuccess(res);
        return res;
        // let res = await accountServices.wxMiniAppPhoneAuthLoginFromScan({
        //   uId: uuid,
        //   openId: wxIndentityRes.openId,
        //   sessionKey: wxIndentityRes.sessionKey,
        //   encryptedData: detail.encryptedData,
        //   iv: detail.iv,
        //   // wxMiniApp: WxMiniAppEnum.C端小程序,
        // });
        // this.loginSuccess(res);
        // return res;
        return 1;
      } catch (error) {}
    },
    async getCurrentUserInfo() {
      try {
        let res = await userServices.getUserInfo({ showLoading: false });
        if (res) {
          res.originalAvatarUrl = res.avatarUrl;
          res.avatarUrl = res.avatarUrl ? setOSSLink(res.avatarUrl) : DefaultAvatar;
          this.setUserDetail(res);
          this.firstGetUserDetail = false;
        }
        // let res = await blLifeRecharge.accountModel.getUserInfo(this.virtualUserId);
        // if (res) {
        //   // this.setUserDetail(res);
        //   this.virtualUserInfo = res;
        //   this.firstGetUserDetail = false;
        // }
      } catch (error) {}
    },
@@ -208,13 +247,25 @@
      setUserDetail(detail);
    },
    setWxCode(code: string) {
      this.wxCode = code;
    },
    setWxOpenId(openId: string) {
      this.wxOpenId = openId;
    },
    resetState() {
      this.userInfo = null;
      this.token = '';
      this.refreshToken = '';
      this.userDetail = null;
      this.virtualUserId = '';
      this.virtualPhoneNumber = '';
      this.wxCode = '';
      this.wxOpenId = '';
      removeUserInfo();
      removeUserDetail();
      removeStorageVirtualUserId();
    },
    /**
@@ -223,7 +274,7 @@
    logout() {
      this.resetState();
      myClient.removeQueries();
      goAuthorization();
      // goAuthorization();
    },
    logoutAndToHome() {