userModel.js 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. //用户状态 (商家状态,全局)
  2. import * as RootNavigation from "../navigation/RootNavigation.js";
  3. export default {
  4. state: {
  5. mid: 0,
  6. name: "未登录",
  7. showName: "未登录",
  8. phone: "",
  9. isLogin: false,
  10. guideStep: 0,
  11. registerInfo: null,
  12. initApp: true,
  13. refreashReason: "login",
  14. },
  15. actions: ({ model, setState }) => ({
  16. updateUser(userInfo) {
  17. setState({ ...userInfo });
  18. },
  19. getUserInfo() {
  20. setState({ initApp: false });
  21. const { updateUser } = model();
  22. const { httpGet } = model("httpModel");
  23. return httpGet("/merchant/my").then(res => {
  24. let _res = { ...res };
  25. if (_res) {
  26. updateUser(_res);
  27. }
  28. });
  29. },
  30. changeInIt() {
  31. setState({ initApp: false });
  32. },
  33. checkLogin() {
  34. const { getUserInfo, status } = model();
  35. const { getAsyncStorage } = model("httpModel");
  36. return new Promise(resolve => {
  37. getUserInfo()
  38. .then(async _ => {
  39. let guideStep = await getAsyncStorage("guideStep");
  40. if (status == "PASS") {
  41. guideStep = "4";
  42. }
  43. if (guideStep) {
  44. setState({ guideStep: guideStep, isLogin: true });
  45. } else {
  46. setState({ isLogin: true });
  47. }
  48. const { isLogin } = model();
  49. console.log(isLogin);
  50. resolve();
  51. })
  52. .catch(_ => {
  53. setState({ isLogin: false });
  54. resolve();
  55. });
  56. });
  57. },
  58. loginByPassword(phone, password) {
  59. const { httpPost, addAsyncStorage } = model("httpModel");
  60. const { checkLogin } = model();
  61. const { loading, success, warnning } = model("loadingModel");
  62. return httpPost("/auth/login", {
  63. username: phone,
  64. password: password,
  65. })
  66. .then(res => {
  67. if (res) {
  68. addAsyncStorage("token", res);
  69. success("登录成功");
  70. setState({ initApp: true });
  71. }
  72. })
  73. .catch(e => {
  74. warnning(e.error);
  75. });
  76. },
  77. loginByCode(phone, code) {
  78. loading();
  79. httpPost("/auth/phoneLogin", {
  80. phone: phone,
  81. code: code,
  82. })
  83. .then(res => {
  84. if (res) {
  85. updateUser(res);
  86. }
  87. })
  88. .catch(e => {
  89. console.log(e);
  90. });
  91. },
  92. registerFirst({ ...data }) {
  93. setState({ registerInfo: data });
  94. RootNavigation.navigate("RegisterSe");
  95. },
  96. registerUser({ ...data }) {
  97. const { checkLogin } = model();
  98. const { loading, success } = model("loadingModel");
  99. const { httpPost, addAsyncStorage } = model("httpModel");
  100. httpPost("/auth/merchantRegister", data, {}, true).then(res => {
  101. addAsyncStorage("token", res).then(() => {
  102. if (res) {
  103. success("注册成功");
  104. addAsyncStorage("guideStep", "1").then(() => {
  105. setState({ initApp: true });
  106. });
  107. }
  108. });
  109. });
  110. // setTimeout(() => {
  111. // success("注册成功");
  112. // }, 1000);
  113. // getUserInfo().then(_=>{
  114. // })
  115. },
  116. registerSecend({ ...data }) {
  117. const { registerInfo, registerUser } = model();
  118. let _registerInfo = {
  119. ...registerInfo,
  120. ...data,
  121. };
  122. registerUser(_registerInfo);
  123. },
  124. changeGuideStep(step) {
  125. console.log("a");
  126. console.log(step);
  127. const { addAsyncStorage } = model("httpModel");
  128. addAsyncStorage("guideStep", step.toString()).then(() => {
  129. setState({ initApp: true, refreashReason: "guideStep" });
  130. setTimeout(() => {
  131. setState({ initApp: false });
  132. }, 500);
  133. });
  134. },
  135. saveMerchant({ ...data }) {
  136. const { mid, changeGuideStep } = model();
  137. const { loading, success } = model("loadingModel");
  138. const { httpPost, addAsyncStorage } = model("httpModel");
  139. httpPost(
  140. "/merchant/saveDTO",
  141. {
  142. ...data,
  143. mid: mid,
  144. },
  145. { body: "json" }
  146. ).then(res => {
  147. changeGuideStep("5");
  148. });
  149. },
  150. checkInfo({ aliAccountEvent, aliNameEvent }) {
  151. const { aliAccount, aliName } = model();
  152. aliAccountEvent(aliAccount);
  153. aliNameEvent(aliName);
  154. },
  155. updateMerchant({ ...data }) {
  156. const { mid, getUserInfo } = model();
  157. const { httpPost, addAsyncStorage } = model("httpModel");
  158. return httpPost(
  159. "/merchant/saveDTO",
  160. {
  161. ...data,
  162. mid: mid,
  163. },
  164. { body: "json" },
  165. true
  166. ).then(res => {
  167. // success("修改成功");
  168. if (res) {
  169. getUserInfo();
  170. }
  171. });
  172. },
  173. uploadStoreImg(img, type) {
  174. const { updateMerchant, mid, registerInfo } = model();
  175. if (mid !== 0) {
  176. if (type == "banner") {
  177. return updateMerchant({ banner: img });
  178. } else if (type == "qualification") {
  179. return updateMerchant({ qualification: img });
  180. } else {
  181. return updateMerchant({ logo: img });
  182. }
  183. } else if (type == "qualification") {
  184. let _registerInfo = { ...registerInfo };
  185. _registerInfo.qualification = img;
  186. console.log(_registerInfo);
  187. setState({
  188. registerInfo: _registerInfo,
  189. });
  190. return Promise.resolve();
  191. }
  192. },
  193. userLogout() {
  194. const { removeAsyncStorage } = model("httpModel");
  195. const { success } = model("loadingModel");
  196. return removeAsyncStorage("token").then(() => {
  197. setState({
  198. mid: 0,
  199. name: "未登录",
  200. showName: "未登录",
  201. phone: "",
  202. isLogin: false,
  203. guideStep: 0,
  204. registerInfo: null,
  205. initApp: true,
  206. refreashReason: "loginOut",
  207. });
  208. success("退出成功");
  209. });
  210. },
  211. getGuideStep() {
  212. const { mid, status } = model();
  213. const { getAsyncStorage } = model("httpModel");
  214. return new Promise(resolve => {
  215. if (mid == 0) {
  216. resolve("");
  217. } else {
  218. getAsyncStorage("guideStep").then(res => {
  219. console.log(res);
  220. let guideStep = res;
  221. if (status == "PASS" && !guideStep) {
  222. guideStep = "5";
  223. }
  224. setState({ guideStep: guideStep, isLogin: true });
  225. resolve(guideStep || "1");
  226. });
  227. }
  228. });
  229. },
  230. closeMer() {
  231. const { isOpen ,getUserInfo} = model();
  232. const { httpGet } = model("httpModel");
  233. const { success } = model("loadingModel");
  234. let { showDialog } = model("dialogModel");
  235. let { removeTips, editSuccess } = model("wordsModel");
  236. if (isOpen) {
  237. showDialog({
  238. bodyText: "停止当前营业,直到下次营业开启",
  239. status: "danger",
  240. cancelable: true,
  241. confirmCallback: () => {
  242. httpGet("/merchant/closeMer", {}, true).then(res => {
  243. success("操作成功");
  244. getUserInfo()
  245. });
  246. },
  247. });
  248. } else {
  249. httpGet("/merchant/closeMer", {}, true).then(res => {
  250. success("操作成功");
  251. getUserInfo()
  252. });
  253. }
  254. },
  255. }),
  256. };