对接注册和退出登录
This commit is contained in:
103
src/models/user.ts
Normal file
103
src/models/user.ts
Normal file
@ -0,0 +1,103 @@
|
||||
import type { Effect, Reducer } from 'umi';
|
||||
|
||||
import { getUserinfo, Logout } from '@/servers/api/login';
|
||||
|
||||
export type SupplierUser = {
|
||||
email?: string;
|
||||
mobile?: string;
|
||||
name?: string;
|
||||
sex?: string;
|
||||
status?: number;
|
||||
userId?: string;
|
||||
userName?: string;
|
||||
};
|
||||
|
||||
export type User = {
|
||||
userId: string;
|
||||
userName: string;
|
||||
userType: string;
|
||||
};
|
||||
|
||||
export type UserInfo = {
|
||||
userId: string;
|
||||
fullName: string;
|
||||
loginName: string;
|
||||
userType: string;
|
||||
authorityList: { roleId: string, roleName: string, roleCode: string, roleScope: string }[];
|
||||
};
|
||||
|
||||
export type UserModelState = {
|
||||
supplierUser?: SupplierUser;
|
||||
user?: User;
|
||||
token?: string;
|
||||
userInfo?: UserInfo;
|
||||
};
|
||||
|
||||
export type UserModelType = {
|
||||
namespace: 'user';
|
||||
state: UserModelState;
|
||||
effects: {
|
||||
fetchUserInfo: Effect;
|
||||
logout: Effect;
|
||||
};
|
||||
reducers: {
|
||||
saveLoginUser: Reducer<UserModelState>;
|
||||
saveUserInfo: Reducer<UserModelState>;
|
||||
clearUserInfo: Reducer;
|
||||
};
|
||||
};
|
||||
|
||||
const UserModel: UserModelType = {
|
||||
namespace: 'user',
|
||||
|
||||
state: {
|
||||
supplierUser: {}, // 登录返回的供应商用户信息
|
||||
user: undefined, // 登录返回的用户信息
|
||||
token: sessionStorage.getItem('token') || '', // 登录返回的token
|
||||
userInfo: undefined, // 请求userInfo返回的用户信息
|
||||
},
|
||||
|
||||
effects: {
|
||||
*fetchUserInfo(_, { call, put }) {
|
||||
const response = yield call(getUserinfo);
|
||||
yield put({
|
||||
type: 'saveUserInfo',
|
||||
payload: response,
|
||||
});
|
||||
},
|
||||
*logout(_, { call, put }) {
|
||||
yield call(Logout);
|
||||
yield put({
|
||||
type: 'clearUserInfo'
|
||||
});
|
||||
},
|
||||
},
|
||||
|
||||
reducers: {
|
||||
clearUserInfo(state) {
|
||||
return {
|
||||
...state,
|
||||
userInfo: undefined,
|
||||
token: '',
|
||||
supplierUser: {},
|
||||
user: {},
|
||||
};
|
||||
},
|
||||
saveLoginUser(state, action) {
|
||||
return {
|
||||
...state,
|
||||
supplierUser: action.payload.supplierUser || {},
|
||||
user: action.payload.user || {},
|
||||
token: action.payload.token || '',
|
||||
};
|
||||
},
|
||||
saveUserInfo(state, action) {
|
||||
return {
|
||||
...state,
|
||||
userInfo: action.payload || {},
|
||||
};
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
export default UserModel;
|
Reference in New Issue
Block a user