User.ts 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. import request from '../utils/RequestUtils';
  2. import {
  3. addAsyncStorage,
  4. removeAsyncStorage,
  5. getAsyncStorage,
  6. } from '../utils/AsyncStorageUtils';
  7. import {
  8. toastShow,
  9. toastHide,
  10. toastInfo,
  11. toastSuccess,
  12. } from '../utils/SystemUtils';
  13. import Map from '../map/model';
  14. import i18n from '../i18n';
  15. const user = (now) => ({
  16. id: null,
  17. userInfo: {},
  18. initialRouteName: '',
  19. verifiedInfo: {},
  20. riderInfo: {},
  21. sign: false,
  22. noSign: false,
  23. getUser() {
  24. let userInfo = {
  25. id: 0,
  26. };
  27. return request
  28. .get('/user/my')
  29. .then((res) => {
  30. if (res.identity === 'RIDER') {
  31. userInfo = res;
  32. return request.get('/rider/my');
  33. } else {
  34. return Promise.reject('noRider');
  35. }
  36. })
  37. .then((res) => {
  38. now({
  39. riderInfo: res,
  40. });
  41. return Promise.resolve();
  42. })
  43. .catch((e) => {
  44. if (e === 'noRider') {
  45. return Promise.reject('noRider');
  46. } else if (userInfo.id) {
  47. return request.get('/verified/my');
  48. } else {
  49. now({
  50. id: userInfo.id,
  51. userInfo,
  52. });
  53. return Promise.reject(userInfo.id);
  54. }
  55. })
  56. .then((res) => {
  57. now({
  58. id: userInfo.id,
  59. userInfo,
  60. });
  61. if (res.id) {
  62. now({
  63. verifiedInfo: res,
  64. });
  65. }
  66. return Promise.reject(userInfo.id);
  67. });
  68. },
  69. setRider(info) {
  70. now({ riderInfo: info });
  71. },
  72. logout() {
  73. removeAsyncStorage('token').then(() => {
  74. // 清除用户信息
  75. now({ id: 0, userInfo: {}, riderInfo: {}, verifiedInfo: {} });
  76. toastSuccess(i18n.t('tui-chu-cheng-gong'));
  77. });
  78. },
  79. updateUser({ ...info }) {
  80. const { id, getUser } = now();
  81. toastShow();
  82. return request
  83. .post('/user/save', {
  84. data: {
  85. ...info,
  86. id,
  87. },
  88. })
  89. .then(() => {
  90. return getUser();
  91. })
  92. .then(() => {
  93. toastHide();
  94. toastSuccess(i18n.t('geng-xin-cheng-gong'));
  95. return Promise.resolve();
  96. })
  97. .catch((e) => {
  98. toastHide();
  99. toastInfo(e.error);
  100. });
  101. },
  102. getInit(back) {
  103. const { getUser } = now();
  104. return getUser()
  105. .catch((id) => {
  106. if (back) {
  107. back(id);
  108. }
  109. const { verifiedInfo, riderInfo } = now();
  110. console.log(id);
  111. console.log(verifiedInfo);
  112. console.log(riderInfo);
  113. if (id === 'noRider') {
  114. now({ initialRouteName: 'Login' });
  115. return Promise.reject();
  116. } else if (id && riderInfo.id) {
  117. if (riderInfo.status === 'PENDING') {
  118. now({ initialRouteName: 'AuditResult' });
  119. return Promise.reject();
  120. } else if (riderInfo.status === 'DENY') {
  121. return getAsyncStorage('seApply');
  122. } else {
  123. return getAsyncStorage('riderIsApply');
  124. }
  125. } else if (id && verifiedInfo.id) {
  126. now({ initialRouteName: 'Transportation' });
  127. return Promise.reject();
  128. } else if (id) {
  129. now({ initialRouteName: 'Certification' });
  130. return Promise.reject();
  131. } else {
  132. now({ initialRouteName: 'Login' });
  133. return Promise.reject();
  134. }
  135. })
  136. .then((res) => {
  137. const { riderInfo } = now();
  138. if (
  139. (res && riderInfo.status === 'PASS' && res === 'true') ||
  140. (!res && riderInfo.status === 'DENY')
  141. ) {
  142. now({ initialRouteName: 'AuditResult' });
  143. } else if (res) {
  144. now({ initialRouteName: res });
  145. } else {
  146. now({ initialRouteName: 'MainStack' });
  147. }
  148. })
  149. .catch(() => {});
  150. },
  151. getSignInfo() {
  152. const { id } = now();
  153. if (!id) {
  154. now({
  155. sign: false,
  156. });
  157. return Promise.resolve(false);
  158. }
  159. return request
  160. .get('/riderSign/all', {
  161. params: {
  162. query: {
  163. userId: id,
  164. },
  165. },
  166. })
  167. .then((res) => {
  168. if (res.content.length > 0) {
  169. const info = res.content.find((item) => {
  170. return !!item.takingOrders;
  171. });
  172. now({
  173. sign: info ? true : res.content[0].takingOrders,
  174. signInfo: info || res.content[0],
  175. noSign: false,
  176. });
  177. return Promise.resolve(info ? true : res.content[0].takingOrders);
  178. } else {
  179. now({
  180. sign: false,
  181. noSign: true,
  182. });
  183. return Promise.resolve(false);
  184. }
  185. });
  186. },
  187. riderOrder() {
  188. toastShow();
  189. const { sign, noSign, riderInfo } = now();
  190. const { getNowLocation } = now(Map);
  191. return getNowLocation()
  192. .then((res) => {
  193. const { location } = res;
  194. if (noSign) {
  195. return request.post('/riderSign/save', {
  196. data: {
  197. takingOrders: true,
  198. longitude: location.lng,
  199. latitude: location.lat,
  200. riderId: riderInfo.id,
  201. },
  202. });
  203. } else {
  204. return request.get('/riderSign/riderOrder', {
  205. params: {
  206. isStart: !sign,
  207. longitude: location.lng,
  208. latitude: location.lat,
  209. },
  210. });
  211. }
  212. })
  213. .then((res) => {
  214. now({
  215. sign: !sign,
  216. noSign: false,
  217. });
  218. toastSuccess((sign ? '休息' : '开工') + '成功');
  219. })
  220. .catch((e) => {
  221. toastInfo(e.error);
  222. });
  223. },
  224. });
  225. export default user;