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