index.ts 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. import money from "$utils/tool/money";
  2. import user from '$config/user';
  3. import popup from "$utils/tool/popup";
  4. import store from '@/store/index';
  5. import Throttle from '$utils/tool/throttle';
  6. let result = {
  7. // 更新用户余额
  8. updateUserIntegral(integral:number) {
  9. if (user.user && user.user.integral !== integral) {
  10. // 设置用户余额
  11. this.setUserInfo({
  12. integral
  13. });
  14. }
  15. },
  16. // 获取用户余额
  17. getUserBalance():number{
  18. if (user.user && user.user.integral) {
  19. return money.getNumberPrice(money.checkIntMoney(user.user.integral || 0) || 0);
  20. } else {
  21. return 0;
  22. }
  23. },
  24. // 查看余额是否够赠送
  25. checkBalance(integral:number | string,toast:boolean=false){
  26. // 用户 余额
  27. let userBalance = this.getUserBalance();
  28. // 当前商品余额
  29. integral = money.getNumberPrice(integral);
  30. // 获取结果
  31. let result:boolean = userBalance >= integral;
  32. // 如果 余额不够提示
  33. toast && !result && this.balanceNotEnough();
  34. // 返回结果
  35. return result;
  36. },
  37. // 购物余额不够
  38. balanceNotEnough(){
  39. return popup.$toast('余额不足');
  40. },
  41. // 赠送成功减余额
  42. reduceBalance(integral:number | string,update:boolean=true){
  43. // 需要减掉的余额
  44. integral = money.getNumberPrice(integral);
  45. // 获取用户余额
  46. let userBalance = this.getUserBalance();
  47. // 得到剩余余额
  48. let surplusIntegral = userBalance - integral;
  49. // 兼容剩余余额不可小于 0 (虽然不大可能,防止 万一被恶意篡改,虽说前端恶意篡改了金额也没用)
  50. surplusIntegral = surplusIntegral < 0 ? 0 : surplusIntegral;
  51. // 设置用户余额
  52. this.setUserInfo({
  53. integral: surplusIntegral
  54. });
  55. // 向服务器同步
  56. return update && this.updateUserMoney();
  57. },
  58. // 加余额
  59. plusBalance(integral:number | string,update:boolean=true){
  60. // 需要减掉的余额
  61. integral = money.getNumberPrice(integral);
  62. // 获取用户余额
  63. let userBalance = this.getUserBalance();
  64. // 得到剩余余额
  65. let surplusIntegral = userBalance + integral;
  66. // 兼容剩余余额不可小于 0 (虽然不大可能,防止 万一被恶意篡改,虽说前端恶意篡改了金额也没用)
  67. surplusIntegral = surplusIntegral < 0 ? 0 : surplusIntegral;
  68. // 设置用户余额
  69. this.setUserInfo({
  70. integral: surplusIntegral
  71. });
  72. // 向服务器同步
  73. return update && this.updateUserMoney();
  74. },
  75. // 设置用户信息
  76. setUserInfo(value:Record<string, any>){
  77. let resultData:Record<string, any> = value;
  78. if (user.user) {
  79. let useUserData = JSON.parse(JSON.stringify(user.user));
  80. resultData = {
  81. ...useUserData,
  82. ...resultData
  83. }
  84. }
  85. return store.commit('setUserInfo',resultData);
  86. },
  87. // 当前是否处于更新用户金额方面
  88. updateUserMoneyStatus:false,
  89. // 向服务器同步用户剩余余额之类的东西
  90. updateUserMoney(){
  91. if (this.updateUserMoneyStatus) return;
  92. this.updateUserMoneyStatus = true;
  93. store.dispatch('updateUserMoneyPromise').then(()=>{
  94. this.updateUserMoneyStatus = false;
  95. }).catch(()=>{
  96. this.updateUserMoneyStatus = false;
  97. });
  98. },
  99. throttle:Throttle
  100. }
  101. result.throttle = new Throttle({
  102. first:false,
  103. call:result,
  104. handle: result.updateUserMoney,
  105. delay:500
  106. });
  107. result.updateUserMoney = result.throttle.supper;
  108. export default result;