user.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. "use strict";
  2. const common_vendor = require("../../common/vendor.js");
  3. const sheep_platform_share = require("../platform/share.js");
  4. const sheep_store_cart = require("./cart.js");
  5. const sheep_store_app = require("./app.js");
  6. const sheep_hooks_useModal = require("../hooks/useModal.js");
  7. const sheep_api_member_user = require("../api/member/user.js");
  8. const sheep_api_pay_wallet = require("../api/pay/wallet.js");
  9. const sheep_api_trade_order = require("../api/trade/order.js");
  10. const sheep_api_promotion_coupon = require("../api/promotion/coupon.js");
  11. const defaultUserInfo = {
  12. avatar: "",
  13. // 头像
  14. nickname: "",
  15. // 昵称
  16. gender: 0,
  17. // 性别
  18. mobile: "",
  19. // 手机号
  20. point: 0
  21. // 积分
  22. };
  23. const defaultUserWallet = {
  24. balance: 0
  25. // 余额
  26. };
  27. const defaultNumData = {
  28. unusedCouponCount: 0,
  29. orderCount: {
  30. allCount: 0,
  31. unpaidCount: 0,
  32. undeliveredCount: 0,
  33. deliveredCount: 0,
  34. uncommentedCount: 0,
  35. afterSaleCount: 0
  36. }
  37. };
  38. const user = common_vendor.defineStore({
  39. id: "user",
  40. state: () => ({
  41. userInfo: common_vendor.lodashExports.clone(defaultUserInfo),
  42. // 用户信息
  43. userWallet: common_vendor.lodashExports.clone(defaultUserWallet),
  44. // 用户钱包信息
  45. isLogin: !!common_vendor.index.getStorageSync("token"),
  46. // 登录状态
  47. numData: common_vendor.lodashExports.cloneDeep(defaultNumData),
  48. // 用户其他数据
  49. lastUpdateTime: 0
  50. // 上次更新时间
  51. }),
  52. actions: {
  53. // 获取用户信息
  54. async getInfo() {
  55. const { code, data } = await sheep_api_member_user.UserApi.getUserInfo();
  56. if (code !== 0) {
  57. return;
  58. }
  59. this.userInfo = data;
  60. return Promise.resolve(data);
  61. },
  62. // 获得用户钱包
  63. async getWallet() {
  64. const { code, data } = await sheep_api_pay_wallet.PayWalletApi.getPayWallet();
  65. if (code !== 0) {
  66. return;
  67. }
  68. this.userWallet = data;
  69. },
  70. // 获取订单、优惠券等其他资产信息
  71. getNumData() {
  72. sheep_api_trade_order.OrderApi.getOrderCount().then((res) => {
  73. if (res.code === 0) {
  74. this.numData.orderCount = res.data;
  75. }
  76. });
  77. sheep_api_promotion_coupon.CouponApi.getUnusedCouponCount().then((res) => {
  78. if (res.code === 0) {
  79. this.numData.unusedCouponCount = res.data;
  80. }
  81. });
  82. },
  83. // 添加分享记录
  84. // TODO 芋艿:整理下;
  85. async addShareLog(params) {
  86. const {
  87. error
  88. } = await userApi.addShareLog(params);
  89. if (error === 0)
  90. common_vendor.index.removeStorageSync("shareLog");
  91. },
  92. // 设置 token
  93. setToken(token = "", refreshToken = "") {
  94. if (token === "") {
  95. this.isLogin = false;
  96. common_vendor.index.removeStorageSync("token");
  97. common_vendor.index.removeStorageSync("refresh-token");
  98. } else {
  99. this.isLogin = true;
  100. common_vendor.index.setStorageSync("token", token);
  101. common_vendor.index.setStorageSync("refresh-token", refreshToken);
  102. this.loginAfter();
  103. }
  104. return this.isLogin;
  105. },
  106. // 更新用户相关信息 (手动限流,5 秒之内不刷新)
  107. async updateUserData() {
  108. if (!this.isLogin) {
  109. this.resetUserData();
  110. return;
  111. }
  112. const nowTime = (/* @__PURE__ */ new Date()).getTime();
  113. if (this.lastUpdateTime + 5e3 > nowTime) {
  114. return;
  115. }
  116. this.lastUpdateTime = nowTime;
  117. await this.getInfo();
  118. this.getWallet();
  119. this.getNumData();
  120. return this.userInfo;
  121. },
  122. // 重置用户默认数据
  123. resetUserData() {
  124. this.setToken();
  125. this.userInfo = common_vendor.lodashExports.clone(defaultUserInfo);
  126. this.userWallet = common_vendor.lodashExports.clone(defaultUserWallet);
  127. this.numData = common_vendor.lodashExports.cloneDeep(defaultNumData);
  128. sheep_store_cart.cart().emptyList();
  129. },
  130. // 登录后,加载各种信息
  131. // TODO 芋艿:整理下;
  132. async loginAfter() {
  133. await this.updateUserData();
  134. sheep_store_cart.cart().getList();
  135. sheep_platform_share.$share.getShareInfo();
  136. if (sheep_store_app.app().platform.bind_mobile && !this.userInfo.mobile) {
  137. sheep_hooks_useModal.showAuthModal("changeMobile");
  138. }
  139. const shareLog = common_vendor.index.getStorageSync("shareLog");
  140. if (!common_vendor.lodashExports.isEmpty(shareLog)) {
  141. this.addShareLog({
  142. ...shareLog
  143. });
  144. }
  145. },
  146. // 登出系统
  147. async logout() {
  148. this.resetUserData();
  149. return !this.isLogin;
  150. }
  151. },
  152. persist: {
  153. enabled: true,
  154. strategies: [{
  155. key: "user-store"
  156. }]
  157. }
  158. });
  159. const __vite_glob_0_4 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  160. __proto__: null,
  161. default: user
  162. }, Symbol.toStringTag, { value: "Module" }));
  163. exports.__vite_glob_0_4 = __vite_glob_0_4;
  164. exports.user = user;