104 lines
2.1 KiB
TypeScript
104 lines
2.1 KiB
TypeScript
![]() |
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;
|