/* eslint-disable no-console */ /* eslint-disable no-underscore-dangle */ // 用户状态 (商家状态,全局) import * as RootNavigation from "../navigation/RootNavigation"; export default { state: { mid: null, name: "未登录", showName: "未登录", phone: "", isLogin: false, guideStep: "0", registerInfo: {}, initApp: true, refreashReason: "login", initRoute: "Login", userInfo: {}, chooseLocal: {}, }, actions: ({ model, setState }) => ({ updateUser(userInfo) { setState({ ...userInfo }); setState({ userInfo }); }, getUserInfo() { const { updateUser } = model(); const { httpGet } = model("httpModel"); const { changeVerfied } = model("verifiedModel"); return httpGet("/merchant/my", {}, true) .then(res => { const _res = { ...res }; if (_res) { updateUser(_res); changeVerfied(_res.userId); } }) .catch(() => { setState({ mid: 0 }); }); }, changeInIt() { setState({ initApp: false }); }, checkLogin() { const { getUserInfo, status } = model(); const { getAsyncStorage } = model("httpModel"); return new Promise(resolve => { getUserInfo() .then(async () => { let guideStep = await getAsyncStorage("guideStep"); if (status === "PASS") { guideStep = "4"; } if (guideStep) { setState({ guideStep, isLogin: true }); } else { setState({ isLogin: true }); } resolve(); }) .catch(() => { setState({ isLogin: false }); resolve(); }); }); }, changeRegisterInfo({ ...info }) { const { registerInfo } = model(); setState({ registerInfo: { ...registerInfo, ...info, }, }); }, loginByPassword(phone, password) { const { httpPost, addAsyncStorage } = model("httpModel"); const { success, warnning } = model("loadingModel"); const { getUserInfo } = model(); return httpPost("/auth/login", { username: phone, password, }) .then(res => { success("登录成功"); return addAsyncStorage("token", res); }) .then(() => { return getUserInfo(); }) .catch(e => { warnning(e.error); }); }, loginByCode(phone, code) { console.log(phone, code); const { httpPost, addAsyncStorage } = model("httpModel"); const { success, warnning } = model("loadingModel"); const { getUserInfo } = model(); httpPost("/auth/phoneLogin", { phone: `+86${phone}`, code, identity: "MERCHANT", }) .then(res => { success("登录成功"); return addAsyncStorage("token", res); }) .then(() => { return getUserInfo(); }) .catch(e => { warnning(e.error); }); }, saveLocation(address) { const { mid, registerInfo, updateMerchant, chooseLocal } = model(); console.log(mid); console.log(chooseLocal); const { lat, lng } = chooseLocal; if (mid) { const { loading, success } = model("loadingModel"); loading(); return updateMerchant({ address, latitude: lat, longitude: lng, }).then(() => { success("设置成功"); }); } setState({ registerInfo: { ...registerInfo, address, latitude: lat, longitude: lng, }, }); return Promise.resolve(); }, registerFirst({ ...data }) { setState({ registerInfo: data }); RootNavigation.navigate("RegisterSe"); }, registerUser({ ...data }) { const { getUserInfo } = model(); const { success } = model("loadingModel"); const { httpPost, addAsyncStorage } = model("httpModel"); const { saveVeriFied, registerVerifiedInfo } = model("verifiedModel"); httpPost("/auth/merchantRegister", data, {}, true) .then(res => { return addAsyncStorage("token", res); }) .then(() => { setState({ guideStep: "1", }); return addAsyncStorage("guideStep", "1"); }) .then(() => { return getUserInfo(); }) .then(() => { return saveVeriFied(registerVerifiedInfo); }) .then(() => { success("注册成功"); }); // setTimeout(() => { // success("注册成功"); // }, 1000); // getUserInfo().then(_=>{ // }) }, registerSecend({ ...data }) { const { registerInfo, registerUser } = model(); const _registerInfo = { ...registerInfo, ...data, }; registerUser(_registerInfo); }, changeGuideStep(step) { const { addAsyncStorage } = model("httpModel"); setState({ guideStep: step.toString() }); return addAsyncStorage("guideStep", step.toString()); }, saveMerchant({ ...data }) { const { mid, changeGuideStep } = model(); const { httpPost } = model("httpModel"); httpPost( "/merchant/saveDTO", { ...data, mid, }, { body: "json" } ).then(() => { changeGuideStep("4"); }); }, checkInfo({ aliAccountEvent, aliNameEvent }) { const { aliAccount, aliName } = model(); aliAccountEvent(aliAccount); aliNameEvent(aliName); }, setchooseLocal(chooseLocal) { setState({ chooseLocal }); }, updateMerchant({ ...data }) { const { mid, getUserInfo } = model(); const { httpPost } = model("httpModel"); console.log(data); return httpPost( "/merchant/saveDTO", { ...data, mid, }, { body: "json" }, true ).then(res => { // success("修改成功"); return getUserInfo(); }); }, uploadStoreImg(img, type) { const { updateMerchant, mid, registerInfo } = model(); if (mid !== 0) { if (type === "banner") { return updateMerchant({ banner: img }); } if (type === "qualification") { return updateMerchant({ qualification: img }); } return updateMerchant({ logo: img }); } if (type === "qualification") { const _registerInfo = { ...registerInfo }; _registerInfo.qualification = img; console.log(_registerInfo); setState({ registerInfo: _registerInfo, }); return Promise.resolve(); } return Promise.reject(); }, userLogout() { const { removeAsyncStorage } = model("httpModel"); const { success } = model("loadingModel"); const { saveVeriFied } = model("verifiedModel"); return removeAsyncStorage("token") .then(() => { setState({ mid: 0, name: "未登录", showName: "未登录", phone: "", isLogin: false, guideStep: "0", registerInfo: null, initApp: true, refreashReason: "loginOut", userId: "", }); // 清空认证信息 return saveVeriFied({}); }) .then(() => { success("退出成功"); }); }, getGuideStep() { const { mid, status } = model(); const { getAsyncStorage } = model("httpModel"); return new Promise(resolve => { if (mid === 0) { resolve(""); } else { getAsyncStorage("guideStep").then(res => { console.log(res); let guideStep = res; if (status === "PASS" && !guideStep) { guideStep = "5"; } else if ( status === "DENY" && (!guideStep || guideStep === "finish") ) { guideStep = "5"; } setState({ guideStep, isLogin: true }); resolve(guideStep || "1"); }); } }); }, checkNowGuideStep() { const { status } = model(); const { getAsyncStorage } = model("httpModel"); return getAsyncStorage("guideStep").then(res => { console.log(res); let guideStep = res; if (status === "PASS" && !guideStep) { guideStep = "5"; } else if ( status === "DENY" && (!guideStep || guideStep === "finish") ) { guideStep = "5"; } else if (status === "PENDING" && !guideStep) { guideStep = "5"; } setState({ guideStep: guideStep || "1" }); return Promise.resolve(guideStep || "1"); }); }, closeMer() { const { isOpening, getUserInfo } = model(); const { httpGet } = model("httpModel"); const { success } = model("loadingModel"); const { showDialog } = model("dialogModel"); if (isOpening) { showDialog({ bodyText: "停止当前营业,直到下次营业开启", status: "danger", cancelable: true, confirmCallback: () => { httpGet("/merchant/closeMer", {}, true).then(() => { success("操作成功"); getUserInfo(); }); }, }); } else { httpGet("/merchant/closeMer", {}, true).then(() => { success("操作成功"); getUserInfo(); }); } }, setinitRoute(name) { setState({ initRoute: name }); }, getNowUser() { const { mid, category, address, week, startTime, endTime, merchantNatureId, qualification, logo, } = model(); return { mid, category, address, week, startTime, endTime, merchantNatureId, qualification, logo, }; }, checkAgain({ ...info }) { const { loading } = model("loadingModel"); const { updateMerchant, changeGuideStep } = model(); loading(); updateMerchant({ ...info, status: "PENDING", }).then(() => { changeGuideStep("5"); }); }, }), };