userModel.js 9.0 KB

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