123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- import { reactive } from 'vue';
- import axios from 'axios';
- import dayjs from 'dayjs';
- import { updateObject } from '@/services/object';
- import router from '@/router';
- import { deleteCookie, setCookie } from '@/services/cookie';
- import { getProfile, deleteToken,_setToken} from '@le5le/auth-token';
- export interface IUser {
- id?: string;
- account?: string;
- phone?: string;
- email?: string;
- password?: string;
- rePassword?: string;
- username?: string;
- avatarUrl?: string;
- role?: string;
- token?: string;
- inviteCode?: string;
- code?: string;
- remember?: boolean;
- captcha?: string;
- vip?: string;
- vipData?: any;
- vipDesc?: string;
- vipExpired?: boolean;
- isVip?: boolean;
- roles?: string[];
- isOperation?: boolean;
- company?: any;
- department?: any;
- corporation?: any;
- teams?: { id: string; name: string }[];
- wechat?: any;
- sina?: any;
- github?: any;
- created?: any;
- createdAt?: any;
- limit?: number;
- amount?: number;
- }
- const user = reactive<IUser>({
- id: '',
- amount: 0,
- });
- const message = reactive<{ unread: number }>({
- unread: 0,
- });
- export const getDomain = () => {
- if (import.meta.env.BASE_URL[0] === '/') {
- return location.hostname;
- }
- let domain = location.hostname;
- const domainItems = domain.split('.');
- if (
- domainItems.length < 3 ||
- (domainItems.length === 4 &&
- +domainItems[0] > 0 &&
- +domainItems[1] > 0 &&
- +domainItems[2] > 0 &&
- +domainItems[3] > 0)
- ) {
- domain = '';
- } else if (domain.endsWith('.com.cn') || domain.endsWith('.org.cn')) {
- domain = domainItems.slice(-3).join('.');
- } else {
- domain = domainItems.slice(-2).join('.');
- }
- return domain;
- };
- export const useUser = () => {
- const getUser = async (token?: boolean) => {
- // const params: any = {};
- // if (token) {
- // if (localStorage.getItem('remember')) {
- // params.token = 'r';
- // } else {
- // params.token = '1';
- // }
- // }
- // const ret: IUser = await axios.get('/api/account/profile', { params });
- const ret: IUser = await getProfile(axios);
- const statistics: any = await axios.post('/api/account/statistics');
- if (!ret) {
- return;
- }
- if (statistics) {
- ret.limit = statistics.documents?.le5leV?.limit;
- }
- setUser(ret);
- return user;
- };
- const getMessage = async () => {
- const ret: { unread: number } = await axios.post(
- '/api/message/unread/count'
- );
- ret && (message.unread = ret.unread);
- };
- const setUser = async (data: IUser) => {
- if (data.vip) {
- const vip = new Date(data.vip);
- if (vip > new Date()) {
- data.vipExpired = false;
- } else if (vip > new Date('2023-01-17T08:00:00+08:00')) {
- data.vipExpired = true;
- } else {
- data.vip = undefined;
- }
- if (data.vip) {
- data.vip = dayjs(data.vip).format('YYYY-MM-DD HH:mm:ss');
- }
- if (data.vipData?.devPackage) {
- data.vipDesc = '旗舰会员';
- } else if (data.vipData?.deploymentPackage) {
- data.vipDesc = '超级会员';
- } else if (data.vipData?.cloudHosting) {
- data.vipDesc = '高级会员';
- } else {
- data.vipDesc = '普通会员';
- }
- } else {
- data.vipDesc = '普通用户';
- }
- if (data.roles) {
- for (const item of data.roles) {
- if (item.indexOf('运营') > -1) {
- data.isOperation = true;
- break;
- }
- }
- }
- data.created = dayjs(data.createdAt).format('YYYY-MM-DD HH:mm:ss');
- // if (data.token) {
- // if (import.meta.env.BASE_URL[0] === '/') {
- // // localStorage.setItem('token', data.token);
- // } else {
- // setCookie('token', data.token, {
- // path: '/',
- // domain: getDomain(),
- // });
- // // localStorage.removeItem('token');
- // }
- // delete data.token;
- // }
- // if (data.token) {
- // setCookie('token', data.token, {
- // path: '/',
- // domain: getDomain(),
- // });
- // delete data.token;
- // }
- if (!data.amount) {
- data.amount = 0.0;
- }
- updateObject(user, data);
- };
- const signout = () => {
- updateObject(user, {});
- deleteToken();
- // localStorage.removeItem('token');
- // const domain = getDomain();
- // if (domain) {
- // deleteCookie('token', {
- // path: '/',
- // domain: domain, //'le5le.com',
- // });
- // }
- // router.replace({ path: '/login', query: router.currentRoute.value.query });
- };
- return {
- user,
- message,
- getUser,
- getMessage,
- setUser,
- signout,
- };
- };
|