user.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. import {createAction, NavigationActions, Storage} from '../utils';
  2. import SyncStorage from 'sync-storage';
  3. import * as authService from '../services/user';
  4. import ResponseError from '../components/ResponseError';
  5. export default {
  6. namespace: 'auth',
  7. state: {
  8. loading: false,
  9. tipsCount: {},
  10. homeCount: {},
  11. },
  12. reducers: {
  13. updateState(state, {payload}) {
  14. return {...state, ...payload};
  15. },
  16. queryList(state, {payload}) {
  17. return {...state, ...payload};
  18. },
  19. },
  20. effects: {
  21. * authLogin({payload, callback, unLogin}, {call, put}) {
  22. const result = yield call(authService.authLogin, payload);
  23. if (!result.code) {
  24. const data = {
  25. token: result.data.token,
  26. username: result.data.username,
  27. user_id: result.data.user_id,
  28. manager_stores: result.data.manager_stores,
  29. };
  30. SyncStorage.set('credential', data);
  31. SyncStorage.set('premissions', result.data.permissions);
  32. if (callback) {
  33. callback();
  34. }
  35. } else {
  36. SyncStorage.remove('credential');
  37. unLogin();
  38. }
  39. },
  40. * login({payload, callback, unLogin}, {call, put}) {
  41. yield put(createAction('updateState')({loading: true}));
  42. const result = yield call(authService.login, payload);
  43. if (!result.code) {
  44. const data = {
  45. token: result.data.token,
  46. username: result.data.username,
  47. user_id: result.data.user_id,
  48. manager_stores: result.data.manager_stores,
  49. };
  50. SyncStorage.set('credential', data);
  51. SyncStorage.set('premissions', result.data.permissions);
  52. if (callback) {
  53. callback();
  54. }
  55. } else {
  56. if (result.msg) {
  57. unLogin(result.msg);
  58. }
  59. }
  60. yield put(createAction('updateState')({loading: false}));
  61. },
  62. * logout({payload}, {call, put}) {
  63. yield call(authService.loginOut);
  64. SyncStorage.remove('credential');
  65. yield put(NavigationActions.navigate({
  66. routeName: 'Login',
  67. actions: [NavigationActions.navigate({routeName: 'Login'})],
  68. }));
  69. },
  70. //修改密码
  71. * changePassword({payload, callback}, {call, put}) {
  72. yield put(createAction('queryList')({loading: true}));
  73. const response = yield call(authService.changePassword, payload);
  74. if (!response.code) {
  75. if (callback) {
  76. callback();
  77. }
  78. } else {
  79. ResponseError(response);
  80. }
  81. yield put(createAction('queryList')({loading: false}));
  82. },
  83. * fetchHomeCount({payload}, {call, put}) {
  84. yield put(createAction('updateState')({homeCount: {}, loading: true}));
  85. const response = yield call(authService.queryHomeCount);
  86. if (!response.code) {
  87. yield put(createAction('updateState')({homeCount: response.data, loading: false}));
  88. } else {
  89. ResponseError(response);
  90. yield put(createAction('updateState')({homeCount: {}, loading: false}));
  91. }
  92. },
  93. * fetchTipsCount({payload}, {call, put}) {
  94. yield put(createAction('updateState')({loading: true}));
  95. const response = yield call(authService.queryTipsCount);
  96. if (!response.code) {
  97. yield put(createAction('updateState')({tipsCount: response.data, loading: false}));
  98. } else {
  99. ResponseError(response);
  100. yield put(createAction('updateState')({tipsCount: {}, loading: false}));
  101. }
  102. },
  103. },
  104. subscriptions: {
  105. setup({dispatch}) {
  106. //dispatch({ type: 'loadStorage' })
  107. },
  108. },
  109. };