user.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import { wechatAuthLogin, mobileLogin, getAccessToken } from '@/services/api/auth.js'
  2. import { wxLogin } from '@/common/auth.js'
  3. import { setStorage, getStorage } from '@/common/storage.js'
  4. import { objAssign } from '@/common/utils.js'
  5. function initUserState() {
  6. const state = {
  7. // 用户信息
  8. headImgUrl: '',
  9. mobile: '',
  10. nickName: '',
  11. openId: '',
  12. userId: 0,
  13. userIdentity: -1, // 用户类型
  14. inviteUserId: '', // 分享者用户ID
  15. accessToken: '', // token
  16. }
  17. const userInfo = getStorage('USER_INFO')
  18. if (userInfo) {
  19. Object.assign(state, userInfo)
  20. }
  21. const accessToken = getStorage('ACCESS_TOKEN')
  22. if (accessToken) {
  23. state.accessToken = accessToken
  24. }
  25. return state
  26. }
  27. const state = initUserState()
  28. console.log(state)
  29. const mutations = {
  30. SET_USER_INFO: (state, userInfo) => {
  31. objAssign(state, userInfo)
  32. },
  33. SET_INVITE_USER_ID: (state, id) => {
  34. state.inviteUserId = id
  35. },
  36. SET_ACCESS_TOKEN: (state, token) => {
  37. state.accessToken = token
  38. }
  39. }
  40. const actions = {
  41. // 微信自动登录
  42. async wxAutoLogin({ commit, state, dispatch }) {
  43. try {
  44. const code = await wxLogin() // 获取微信code
  45. const res = await wechatAuthLogin({ code }) // 微信自动登录
  46. const data = JSON.parse(res.data)
  47. commit('SET_USER_INFO', data)
  48. setStorage('USER_INFO', data)
  49. dispatch('getAccessToken') // 获取token
  50. } catch (e) {
  51. console.log(e)
  52. }
  53. },
  54. // 手机号注册登录
  55. async register({ commit }, resigterData) {
  56. try {
  57. const res = await mobileLogin(resigterData)
  58. const data = JSON.parse(res.data)
  59. commit('SET_USER_INFO', data)
  60. setStorage('USER_INFO', data)
  61. } catch (e) {
  62. console.log(e)
  63. }
  64. },
  65. // 获取accessToken
  66. async getAccessToken({ commit }) {
  67. try {
  68. const res = await getAccessToken()
  69. commit('SET_ACCESS_TOKEN', res.data)
  70. setStorage('ACCESS_TOKEN', res.data)
  71. } catch (e) {
  72. console.log(e)
  73. }
  74. }
  75. }
  76. export default {
  77. namespaced: true,
  78. state,
  79. mutations,
  80. actions
  81. }