zhengyiming
5 天以前 b80dfac43870bb6991228fc01d32b3d5e428283d
apps/cMiniApp/src/stores/modules/user.ts
@@ -8,12 +8,7 @@
  setUserDetail,
  getUserDetail,
  removeUserDetail,
  removeMatchMakingIdentity,
  getMatchMakingIdentity,
  setMatchMakingIdentity,
} from '@/utils/storage/auth';
import * as accountServices from '@12333/services/api/Account';
import * as userServices from '@12333/services/api/User';
import Taro, { useRouter } from '@tarojs/taro';
import { ButtonProps } from '@tarojs/components';
import { debounce } from 'lodash';
@@ -24,14 +19,16 @@
  setOSSLink,
  getUserCertificationFrontStatusAdapter,
  LocationUtils,
  md5Encrypt,
} from '@12333/utils';
import DefaultAvatar from '@/assets/components/icon-default-avatar.png';
import { WxMiniAppEnum } from '@12333/constants';
import { myClient } from '@/constants/query';
import { globalEventEmitter } from '@12333/hooks';
import * as authServices from '@12333/services/apiV2/auth';
import { AppLocalConfig } from '@/constants';
interface UserState {
  userInfo?: Nullable<API.IdentityModelTokenCacheItem>;
  userInfo?: Nullable<API.LoginCommandCallback>;
  token?: Nullable<string>;
  refreshToken?: Nullable<string>;
  userDetail?: Nullable<API.UserInfoV2>;
@@ -80,15 +77,6 @@
    };
  },
  getters: {
    cacheToken: (state) => {
      if (!state.token) {
        const storageToken = getCacheToken() as API.IdentityModelTokenCacheItem;
        state.token = storageToken.accessToken;
      }
      return state.token || null;
    },
    cacheRefreshToken: (state) => {
      return state.refreshToken;
    },
@@ -97,27 +85,25 @@
      return getAccountInfoFromAccessToken(this.userInfo?.accessToken);
    },
    // matchMakingIdentity(state): MatchMakingIdentityEnum {
    // },
    userId: (state) => {
      return state.userInfo?.id ?? '';
    },
  },
  actions: {
    // 手机号授权Code登录
    async getTokenByPhone(
      detail: ButtonProps.onGetPhoneNumberEventDetail,
      wxMiniAppUserLoginRes: any
      wxMiniAppUserLoginRes: API.LoginCommandCallback
    ) {
      try {
        let res: API.IdentityModelTokenCacheItem;
        if (!wxMiniAppUserLoginRes.accessToken) {
          let params: API.WxMiniAppPhoneLoginInput = {
            openId: wxMiniAppUserLoginRes.openId,
            sessionKey: wxMiniAppUserLoginRes.sessionKey,
        let res: API.LoginCommandCallback = wxMiniAppUserLoginRes;
        if (!wxMiniAppUserLoginRes?.isBindPhoneNumber) {
          let bindRes = await authServices.bindWxmpUserInfo({
            encryptedData: detail.encryptedData,
            iv: detail.iv,
            wxMiniApp: WxMiniAppEnum.人单合一,
          };
          res = await accountServices.wxMiniAppPhoneAuthLogin(params);
            sessionKey: wxMiniAppUserLoginRes.sessionKey,
          });
          res.accessToken = bindRes.accessToken;
          this.loginSuccess(res);
        }
        return res;
@@ -127,11 +113,13 @@
    },
    // 用户手机验证码登入
    async loginByUsername(data: API.PhoneMesssageCodeLoginInput) {
      let res = await accountServices.phoneMesssageCodeLogin(
    async loginByUsername(data: API.SmsLoginCommand) {
      let res = await authServices.smsLogin(
        {
          phoneNumber: data.phoneNumber,
          code: data.code,
          verifyCode: data.verifyCode,
          type: AppLocalConfig.userType,
          clientType: AppLocalConfig.clientType,
        },
        { showLoading: false }
      );
@@ -143,11 +131,13 @@
    },
    // 用户账号密码登入
    async loginByPassword(data: API.AccessRequestDto) {
      let res = await accountServices.passwordLogin(
    async loginByPassword(params: API.PasswordLoginCommand) {
      let res = await authServices.passwordLogin(
        {
          loginName: data.userName,
          password: data.userPassword,
          userName: params.userName,
          password: md5Encrypt(params.password),
          type: AppLocalConfig.userType,
          clientType: AppLocalConfig.clientType,
        },
        { showLoading: false }
      );
@@ -157,7 +147,7 @@
      return res;
    },
    async loginSuccess(res: API.IdentityModelTokenCacheItem) {
    async loginSuccess(res: API.LoginCommandCallback) {
      try {
        this.setUserInfoAction(res);
        this.setTokenAction(res);
@@ -166,15 +156,15 @@
    },
    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;
      } catch (error) {}
      // try {
      //   let res = await accountServices.wxMiniAppUserLoginFromScan({
      //     uId: uuid,
      //     userName: wxIndentityRes.userName,
      //     openId: wxIndentityRes.openId,
      //   });
      //   this.loginSuccess(res);
      //   return res;
      // } catch (error) {}
    },
    async wxMiniAppPhoneAuthLoginFromScan(
@@ -182,44 +172,47 @@
      wxIndentityRes: API.WxMiniAppIndentityInfo,
      uuid: string
    ) {
      try {
        let res = await accountServices.wxMiniAppPhoneAuthLoginFromScan({
          uId: uuid,
          openId: wxIndentityRes.openId,
          sessionKey: wxIndentityRes.sessionKey,
          encryptedData: detail.encryptedData,
          iv: detail.iv,
          wxMiniApp: WxMiniAppEnum.人单合一,
        });
        this.loginSuccess(res);
        return res;
      } catch (error) {}
      // 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;
      // } catch (error) {}
    },
    async getCurrentUserInfo() {
      try {
        let res = await userServices.getUserInfo({ showLoading: false });
        if (res) {
          res.frontStatus = getUserCertificationFrontStatusAdapter(
            res.userCertificationStatus,
            res.userCertificationAuditStatus
          );
          res.originalAvatarUrl = res.avatarUrl;
          res.avatarUrl = res.avatarUrl ? setOSSLink(res.avatarUrl) : DefaultAvatar;
          this.setUserDetail(res);
          this.firstGetUserDetail = false;
        }
      } catch (error) {}
      // try {
      //   let res = await userServices.getUserInfo({ showLoading: false });
      //   if (res) {
      //     res.frontStatus = getUserCertificationFrontStatusAdapter(
      //       res.userCertificationStatus,
      //       res.userCertificationAuditStatus
      //     );
      //     res.originalAvatarUrl = res.avatarUrl;
      //     res.avatarUrl = res.avatarUrl ? setOSSLink(res.avatarUrl) : DefaultAvatar;
      //     this.setUserDetail(res);
      //     this.firstGetUserDetail = false;
      //   }
      // } catch (error) {}
    },
    setTokenAction(tokenInfo: API.IdentityModelTokenCacheItem) {
    setTokenAction(tokenInfo: API.LoginCommandCallback) {
      this.token = tokenInfo?.accessToken;
      this.refreshToken = tokenInfo.refreshToken ?? '';
    },
    setUserInfoAction(info: API.IdentityModelTokenCacheItem) {
      this.userInfo = info;
      setUserInfo(info);
    setUserInfoAction(info: API.LoginCommandCallback) {
      this.userInfo = {
        ...this.userInfo,
        ...info,
      };
      setUserInfo(this.userInfo);
    },
    setUserDetail(detail: API.UserInfoV2) {
@@ -234,7 +227,6 @@
      this.userDetail = null;
      removeUserInfo();
      removeUserDetail();
      removeMatchMakingIdentity();
    },
    /**
@@ -268,23 +260,6 @@
        Taro.redirectTo({
          url: `/packageLogin/authLogin/index`,
        });
      }
    },
    async getTokenByRefreshToken(params: API.AccessRefreshToken) {
      try {
        const res = await accountServices.getTokenByRefreshToken(params, {
          showLoading: false,
        });
        if (res) {
          this.setTokenAction(res);
          this.setUserInfoAction(res);
          return res;
        } else {
          throw new Error('刷新token失败');
        }
      } catch (error) {
        throw new Error('error');
      }
    },