user.js 3.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. import React from "react";
  2. import Taro from "@tarojs/taro";
  3. import md5 from "md5";
  4. import {
  5. login,
  6. signin,
  7. signup,
  8. currentUser,
  9. authPhone,
  10. authUser,
  11. } from "@/services/wxma";
  12. import { changePassword } from "@/services/sysuser";
  13. import { ROLE_CITIZEN } from "@/utils/user";
  14. import { setToken } from "@/utils/token";
  15. export default function useUser() {
  16. const [person, setPerson] = React.useState();
  17. const [user, setUser] = React.useState();
  18. const [duty, setDuty] = React.useState();
  19. const maLogin = (code) => {
  20. login(code)
  21. .then((res) => {
  22. // setPerson(res.person);
  23. Taro.setStorage({ key: "personId", data: res.person.personId });
  24. Taro.setStorage({ key: "sessionKey", data: res.sessionKey });
  25. })
  26. .catch((e) => {
  27. console.error(e);
  28. });
  29. };
  30. const updateDuty = (d = ROLE_CITIZEN) => {
  31. setDuty(d);
  32. Taro.setStorageSync("duty", d);
  33. };
  34. const initDuty = (u) => {
  35. console.log(u);
  36. const d = Taro.getStorageSync("duty");
  37. console.log(d);
  38. const dutyList = u?.dutyList || [];
  39. if (d) {
  40. if (dutyList.indexOf(d) < 0) {
  41. updateDuty(dutyList[0]);
  42. } else {
  43. updateDuty(d);
  44. }
  45. } else {
  46. updateDuty(dutyList[0]);
  47. }
  48. };
  49. const maSignIn = (params) => {
  50. const data = {
  51. ...params,
  52. password: md5(params.password),
  53. };
  54. return signin(data).then((res) => {
  55. setUser(res.user);
  56. initDuty(res.user);
  57. });
  58. };
  59. const maSignup = (data) => {
  60. return new Promise((resolve, reject) => {
  61. signup(data).then(res => {
  62. setPerson(res.person);
  63. setUser(res.user);
  64. initDuty(res.user);
  65. resolve(res);
  66. }).catch(reject);
  67. });
  68. }
  69. const current = () => {
  70. return new Promise((resolve, reject) => {
  71. currentUser()
  72. .then((res) => {
  73. if (res?.person) {
  74. setPerson(res.person);
  75. }
  76. setUser(res?.user);
  77. initDuty(res?.user);
  78. resolve(res?.user);
  79. })
  80. .catch((e) => {
  81. console.log(e);
  82. reject(e);
  83. });
  84. });
  85. };
  86. const signinByPhone = (code) => {
  87. return authPhone(code).then((res) => {
  88. setUser(res.user);
  89. initDuty(res.user);
  90. // setPerson(res.person);
  91. });
  92. };
  93. const authProfile = (data) => {
  94. const sessionKey = Taro.getStorageSync("sessionKey");
  95. authUser({ ...data, sessionKey }).then((res) => {
  96. setPerson(res);
  97. });
  98. };
  99. const signOut = () => {
  100. console.log(111111)
  101. Taro.navigateTo({
  102. url: "/pages/login/index",
  103. });
  104. setPerson();
  105. setUser();
  106. initDuty();
  107. setToken();
  108. };
  109. const changePwd = (params) => {
  110. const data = {
  111. originPassword: md5(params.originPassword),
  112. newPassword: md5(params.newPassword),
  113. };
  114. changePassword(data)
  115. .then((res) => {
  116. signOut()
  117. })
  118. .catch((e) => {
  119. console.error(e);
  120. });
  121. };
  122. return {
  123. user,
  124. person,
  125. current,
  126. duty,
  127. signin: maSignIn,
  128. login: maLogin,
  129. updateDuty,
  130. signinByPhone,
  131. authProfile,
  132. signOut,
  133. changePwd,
  134. setPerson,
  135. signup: maSignup,
  136. };
  137. }