wupengfei
2025-02-21 83f821e00802979e64840901bf2a1d18b4b61601
Merge branch 'master' of http://120.26.58.240:8888/r/LifePaymentFront
14个文件已修改
141 ■■■■■ 已修改文件
apps/taro/src/app.ts 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/taro/src/hooks/access.ts 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/taro/src/hooks/user.ts 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/taro/src/pages/home/index.vue 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/taro/src/stores/modules/user.ts 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/taro/src/subpackages/login/components/LoginPageLayout/LoginPageLayout.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/taro/src/subpackages/login/loginByForm/verificationCodeLoginForm.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/taro/src/subpackages/recharge/phoneBillRecharge/phoneBillRecharge.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/taro/src/subpackages/recharge/rechargeResult/rechargeResult.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/taro/src/subpackages/recharge/selectPayType/selectPayType.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/taro/src/utils/blLifeRecharge.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/taro/src/utils/storage/auth.ts 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/components/src/utils/lifeRecharge.ts 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/components/src/utils/types.ts 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/taro/src/app.ts
@@ -12,6 +12,7 @@
import { myClient } from '@/constants/query';
import { VueLifeRechargePlugin } from '@life-payment/components';
import { blLifeRecharge } from '@/utils/blLifeRecharge';
import { isWeChat } from '@/utils/env';
window.uni = Taro;
@@ -64,7 +65,9 @@
  // 对应 onShow
  onShow(options) {
    if (isWeChat) {
    updateVersions();
    }
  },
  // 对应 onHide
apps/taro/src/hooks/access.ts
@@ -14,7 +14,8 @@
    if (!isLogin.value) {
      Message.confirm({ message: '请前往登录' }).then(() => {
        Taro.navigateTo({
          url: `${RouterPath.authorization}`,
          // url: `${RouterPath.authorization}`,
          url: `${RouterPath.loginByForm}`,
        });
      });
      return;
apps/taro/src/hooks/user.ts
@@ -11,7 +11,7 @@
export function useUser() {
  const userStore = useUserStore();
  const { userDetail, userInfo, locationCity } = storeToRefs(userStore);
  const { userDetail, userInfo, locationCity, virtualUserId } = storeToRefs(userStore);
  function updateUserInfo() {
    return userStore.getCurrentUserInfo();
@@ -22,13 +22,14 @@
    userDetail: userDetail,
    updateUserInfo,
    locationCity,
    virtualUserId,
  };
}
export function useIsLogin() {
  const { user, userDetail } = useUser();
  return computed(() => !!user.value);
  // return user?.isPersonal ? !!user : !!user && !!enterpriseInfo;
  const { virtualUserId } = useUser();
  // return computed(() => !!user.value);
  return computed(() => !!virtualUserId.value);
}
type UseAuthOptions = {
@@ -47,7 +48,7 @@
  Taro.useReady(async () => {
    if (isLogin.value && userStore.firstGetUserDetail) {
      userStore.getCurrentUserInfo();
      // userStore.getCurrentUserInfo();
    }
    if (needAuth && !isLogin.value) {
      Taro.navigateTo({
apps/taro/src/pages/home/index.vue
@@ -10,35 +10,23 @@
</template>
<script setup lang="ts">
import { useUser, useInfiniteLoading } from '@/hooks';
import { useUser, useAccessLogin } from '@/hooks';
import { useUserStore } from '@/stores/modules/user';
import Taro from '@tarojs/taro';
import IconLogo from '@/assets/home/icon-logo.png';
import { OrderInputType } from '@life-payment/constants';
import { RechargeGrid } from '@life-payment/components';
function goPhoneBillRecharge() {
const goPhoneBillRecharge = useAccessLogin(() => {
  Taro.navigateTo({
    url: `${RouterPath.phoneBillRecharge}`,
  })
    .then(() => {
      console.log('Navigate successfully');
    })
    .catch((err) => {
      console.error('Navigation failed:', err);
    });
}
function goElectricityBillRecharge() {
});
const goElectricityBillRecharge = useAccessLogin(() => {
  Taro.navigateTo({
    url: `${RouterPath.electricBillRecharge}`,
  })
    .then(() => {
      console.log('Navigate successfully');
    })
    .catch((err) => {
      console.error('Navigation failed:', err);
    });
}
});
</script>
<style lang="scss">
apps/taro/src/stores/modules/user.ts
@@ -8,6 +8,9 @@
  setUserDetail,
  getUserDetail,
  removeUserDetail,
  setStorageVirtualUserId,
  getStorageVirtualUserId,
  removeStorageVirtualUserId,
} from '@/utils/storage/auth';
import * as accountServices from '@life-payment/services/api/Account';
import * as userServices from '@life-payment/services/api/User';
@@ -29,6 +32,8 @@
  locationCity?: string;
  locationProvince?: string;
  firstSetLocation?: boolean;
  virtualUserId?: string;
}
const goAuthorization = debounce(
@@ -62,6 +67,8 @@
      refreshToken: userInfo?.refreshToken ?? '',
      userDetail: userDetail,
      firstGetUserDetail: true,
      virtualUserId: getStorageVirtualUserId() ?? '',
    };
  },
  getters: {
@@ -122,7 +129,7 @@
      );
      if (res) {
        this.loginSuccess(res);
        this.loginVirtualSuccess(res);
      }
      return res;
    },
@@ -142,13 +149,24 @@
      return res;
    },
    async loginSuccess(res: API.IdentityModelTokenCacheItem | string) {
    async loginSuccess(res: API.IdentityModelTokenCacheItem) {
      console.log('res: ', res);
      // try {
      //   this.setUserInfoAction(res);
      //   this.setTokenAction(res);
      //   await this.getCurrentUserInfo();
      // } catch (error) {}
      try {
        this.setUserInfoAction(res);
        this.setTokenAction(res);
        await this.getCurrentUserInfo();
      } catch (error) {}
    },
    async loginVirtualSuccess(virtualUserId: string) {
      try {
        this.setVirtualUserId(virtualUserId);
      } catch (error) {}
    },
    setVirtualUserId(virtualUserId: string) {
      this.virtualUserId = virtualUserId;
      setStorageVirtualUserId(virtualUserId);
    },
    async wxMiniAppUserLoginFromScan(wxIndentityRes: API.WxMiniAppIndentityInfo, uuid: string) {
@@ -216,6 +234,7 @@
      this.userDetail = null;
      removeUserInfo();
      removeUserDetail();
      removeStorageVirtualUserId();
    },
    /**
@@ -224,7 +243,7 @@
    logout() {
      this.resetState();
      myClient.removeQueries();
      goAuthorization();
      // goAuthorization();
    },
    logoutAndToHome() {
apps/taro/src/subpackages/login/components/LoginPageLayout/LoginPageLayout.vue
@@ -7,7 +7,7 @@
      <img :src="OssAssets.login.AuthBg" class="authorization-page-auth" />
    </template>
    <div class="authorization-page-title">欢迎使用818平台</div>
    <div class="authorization-page-title">欢迎使用生活缴费平台</div>
    <slot></slot>
  </PageLayout>
apps/taro/src/subpackages/login/loginByForm/verificationCodeLoginForm.vue
@@ -40,6 +40,7 @@
import { useLoginedJump } from '@/hooks';
import { useUserStore } from '@/stores/modules/user';
import Taro from '@tarojs/taro';
import { useLifeRechargeContext } from '@life-payment/components';
defineOptions({
  name: 'verificationCodeLoginForm',
@@ -52,6 +53,7 @@
const props = withDefaults(defineProps<Props>(), {});
const userStore = useUserStore();
const { blLifeRecharge } = useLifeRechargeContext();
const { jump } = useLoginedJump();
@@ -87,10 +89,20 @@
      const { valid } = await formRef.value.validate();
      if (valid) {
        form.loading = true;
        await userStore.loginByUsername({
        // await userStore.loginByUsername({
        //   phoneNumber: form.phoneNumber,
        //   code: form.verificationCode,
        // });
        let res = await blLifeRecharge.login(
          {
          phoneNumber: form.phoneNumber,
          code: form.verificationCode,
        });
          },
          {
            showLoading: false,
          }
        );
        userStore.loginVirtualSuccess(res);
        jump();
      }
    } else {
apps/taro/src/subpackages/recharge/phoneBillRecharge/phoneBillRecharge.vue
@@ -1,5 +1,5 @@
<template>
  <PageLayout title="话费充值" class="phoneBillRecharge-page-wrapper" hasBorder :need-auth="false">
  <PageLayout title="话费充值" class="phoneBillRecharge-page-wrapper" hasBorder>
    <InnerPage />
  </PageLayout>
</template>
apps/taro/src/subpackages/recharge/rechargeResult/rechargeResult.vue
@@ -1,5 +1,5 @@
<template>
  <PageLayout title="充值成功" class="rechargeResult-page-wrapper" hasBorder :need-auth="false">
  <PageLayout title="充值成功" class="rechargeResult-page-wrapper" hasBorder>
    <ContentScrollView>
      <RechargeResultView style="margin-top: 40px" @go-back-home="goHome()" />
    </ContentScrollView>
apps/taro/src/subpackages/recharge/selectPayType/selectPayType.vue
@@ -1,5 +1,5 @@
<template>
  <PageLayout title="话费充值" class="selectPayType-page-wrapper" hasBorder :need-auth="false">
  <PageLayout title="话费充值" class="selectPayType-page-wrapper" hasBorder>
    <InnerPage />
  </PageLayout>
</template>
apps/taro/src/utils/blLifeRecharge.ts
@@ -1,6 +1,8 @@
import { BlLifeRecharge } from '@life-payment/components';
import { request } from './request';
import { getStorageVirtualUserId } from './storage';
export const blLifeRecharge = new BlLifeRecharge({
  request,
  userId: getStorageVirtualUserId() ?? '',
});
apps/taro/src/utils/storage/auth.ts
@@ -6,6 +6,7 @@
  USER_DETAIL_KEY: 'USER_DETAIL_KEY',
  MatchMakingIdentity_KEY: 'MatchMakingIdentity_KEY',
  LocationCity_KEY: 'LocationCity_KEY',
  VirtualUserId_KEY: 'VirtualUserId_KEY',
};
export function getToken() {
@@ -40,6 +41,17 @@
  return storageLocal.removeItem(StorageKey.USER_DETAIL_KEY);
}
export function getStorageVirtualUserId() {
  return storageLocal.getItem<string>(StorageKey.VirtualUserId_KEY);
}
export function setStorageVirtualUserId(virtualUserId: string) {
  return storageLocal.setItem(StorageKey.VirtualUserId_KEY, virtualUserId);
}
export function removeStorageVirtualUserId() {
  return storageLocal.removeItem(StorageKey.VirtualUserId_KEY);
}
type StorageLocation = {
  city: string;
packages/components/src/utils/lifeRecharge.ts
@@ -1,20 +1,33 @@
import { BlLifeRechargeServices, PhoneMesssageCodeLoginInput } from './lifeRechargeServices';
import {
  BlLifeRechargeServices,
  PhoneMesssageCodeLoginInput,
  RequestConfig,
} from './lifeRechargeServices';
import { IRequest, BlLifeRechargeOptions } from './types';
export class BlLifeRecharge<T extends IRequest = IRequest> {
  services: BlLifeRechargeServices<T>;
  isLogin = false;
  userId = '';
  constructor(options: BlLifeRechargeOptions<T>) {
    this.services = new BlLifeRechargeServices(options);
    this.userId = options.userId || '';
  }
  login(body: PhoneMesssageCodeLoginInput) {
    let res = this.services.lifePayPhoneMesssageCodeLogin(body);
    this.isLogin = true;
  async login(body: PhoneMesssageCodeLoginInput, options?: RequestConfig) {
    let res = await this.services.lifePayPhoneMesssageCodeLogin(body, options);
    this.userId = res;
    return res;
  }
  loginout() {
    this.userId = '';
  }
  isLogin() {
    return !!this.userId;
  }
  getRechargeParValue(amount: number, rate: number) {
    return (amount * rate).toFixed(2);
  }
packages/components/src/utils/types.ts
@@ -3,11 +3,13 @@
export interface IRequestOptions extends AxiosRequestConfig {}
export interface IRequest {
  <T = any>(url: string, opts: IRequestOptions): Promise<AxiosResponse<T>>;
  <T = any>(url: string, opts: IRequestOptions): Promise<T>;
}
export type BlLifeRechargeServicesOptions<T extends IRequest> = {
  request: T;
};
export type BlLifeRechargeOptions<T extends IRequest> = BlLifeRechargeServicesOptions<T> & {};
export type BlLifeRechargeOptions<T extends IRequest> = BlLifeRechargeServicesOptions<T> & {
  userId?: string;
};