import Taro from '@tarojs/taro' import { CLEAR_ADMINUSERINFO, CLEAR_SESSIONKEY, CLEAR_SORTCODE, CLEAR_TOKEN, CLEAR_USERINFO, LOGIN_STATUS, SET_ADMINUSERINFO, SET_SESSIONKEY, SET_SORTCODE, SET_TOKEN, SET_USERINFO, } from '../constants/userInfo' export interface UserParam { nickName?: string phone?: string avatarUrl?: string city?: string country?: string province?: string gender?: number language?: string timestamp?: number physical_warehouse?: number physical_warehouse_name?: string } export interface UserAdminParam { avatar_url: string open_id: string physical_warehouse: number physical_warehouse_name: string union_id: string user_code: string user_id: number user_name: string wechat_user_open_id: number is_authorize_name: boolean is_authorize_phone: boolean phone: string authentication_status: number authentication_status_name: string company_id: number company_name: string first_change_name: boolean founder_user_id: string founder_user_name: string order_access_status: number order_access_status_name: string purchaser_type: number purchaser_type_name: string collection_quantity: number sale_user_phone: string sale_user_name: string sale_user_id: number|string } export interface SortCodeParam { shareShortDetail?: { title: string; code: string; img: string } // 详情分享页面短码 shareShortPage?: { title: string; code: string; img: string } // 右上角分享页面短码 } export interface DataParam { token?: string session_key?: string userInfo: UserParam adminUserInfo: UserAdminParam sort_code: SortCodeParam logingStatus?: false // 登录状态 true 正在登录 } interface Action { type?: string data?: DataParam } const INIT_USER = { userInfo: Taro.getStorageSync('userInfo') ? JSON.parse(Taro.getStorageSync('userInfo')) : null, adminUserInfo: Taro.getStorageSync('adminUserInfo') ? JSON.parse(Taro.getStorageSync('adminUserInfo')) : null, token: Taro.getStorageSync('token') || '', session_key: Taro.getStorageSync('session_key') || '', sort_code: Taro.getStorageSync('sort_code') ? JSON.parse(Taro.getStorageSync('sort_code')) : null, logingStatus: false, } export default function counter(state = INIT_USER, action: Action) { const { type, data } = action switch (type) { case SET_USERINFO: Taro.setStorageSync('userInfo', JSON.stringify(data?.userInfo)) return { ...state, ...data } case SET_ADMINUSERINFO: Taro.setStorageSync('adminUserInfo', JSON.stringify(data?.adminUserInfo)) return { ...state, ...data } case SET_TOKEN: Taro.setStorageSync('token', data?.token) return { ...state, ...data } case SET_SESSIONKEY: Taro.setStorageSync('session_key', data?.session_key) return { ...state, ...data } case SET_SORTCODE: Taro.setStorageSync('sort_code', JSON.stringify(data?.sort_code)) return { ...state, ...data } case CLEAR_TOKEN: Taro.removeStorageSync('token') return { ...state, token: '' } case CLEAR_SESSIONKEY: Taro.removeStorageSync('session_key') return { ...state, session_key: '' } case CLEAR_USERINFO: Taro.removeStorageSync('userInfo') return { ...state, userInfo: null } case CLEAR_ADMINUSERINFO: Taro.removeStorageSync('adminUserInfo') return { ...state, adminUserInfo: null } case CLEAR_SORTCODE: Taro.removeStorageSync('sort_code') return { ...state, sortCode: null } case LOGIN_STATUS: return { ...state, ...data } default: return state } }