routine.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. import store from '../store';
  2. import { checkLogin } from './login';
  3. import { login } from '../api/public';
  4. import Cache from '../utils/cache';
  5. import { STATE_R_KEY, USER_INFO, EXPIRES_TIME, LOGIN_STATUS} from './../config/cache';
  6. class Routine
  7. {
  8. constructor()
  9. {
  10. this.scopeUserInfo = 'scope.userInfo';
  11. }
  12. async getUserCode(){
  13. let isAuth = await this.isAuth(), code = '' ;
  14. if(isAuth)
  15. code = await this.getCode();
  16. return code;
  17. }
  18. /**
  19. * 获取用户信息
  20. */
  21. getUserProfile(){
  22. let that = this , code = this.getUserCode();
  23. return new Promise( (resolve,reject) => {
  24. uni.getUserProfile({
  25. lang: 'zh_CN',
  26. desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
  27. success(user) {
  28. if(code) user.code = code;
  29. resolve({userInfo:user,islogin:false});
  30. },
  31. fail(res){
  32. reject(res);
  33. }
  34. })
  35. })
  36. }
  37. /**
  38. * 获取用户信息
  39. */
  40. authorize()
  41. {
  42. let that = this;
  43. return new Promise((resolve,reject)=>{
  44. if(checkLogin())
  45. return resolve({
  46. userInfo:Cache.get(USER_INFO,true),
  47. islogin:true,
  48. });
  49. uni.authorize({
  50. scope: that.scopeUserInfo,
  51. success() {
  52. resolve({islogin:false});
  53. },
  54. fail(res){
  55. reject(res);
  56. }
  57. })
  58. })
  59. }
  60. async getCode(){
  61. let provider = await this.getProvider();
  62. return new Promise((resolve,reject)=>{
  63. uni.login({
  64. provider:provider,
  65. success(res) {
  66. if (res.code) Cache.set(STATE_R_KEY, res.code ,10800);
  67. return resolve(res.code);
  68. },
  69. fail(){
  70. return reject(null);
  71. }
  72. })
  73. })
  74. }
  75. /**
  76. * 获取服务供应商
  77. */
  78. getProvider()
  79. {
  80. return new Promise((resolve,reject)=>{
  81. uni.getProvider({
  82. service:'oauth',
  83. success(res) {
  84. resolve(res.provider);
  85. },
  86. fail() {
  87. resolve(false);
  88. }
  89. });
  90. });
  91. }
  92. /**
  93. * 是否授权
  94. */
  95. isAuth(){
  96. let that = this;
  97. return new Promise((resolve,reject)=>{
  98. uni.getSetting({
  99. success(res) {
  100. if (!res.authSetting[that.scopeUserInfo]) {
  101. resolve(true)
  102. } else {
  103. resolve(true);
  104. }
  105. },
  106. fail(){
  107. resolve(false);
  108. }
  109. });
  110. });
  111. }
  112. /**
  113. * 小程序登录
  114. */
  115. authUserInfo(code,data)
  116. {
  117. return new Promise((resolve, reject)=>{
  118. login(code,data).then(res=>{
  119. if(res.data.type==='login'){
  120. store.commit('LOGIN', {
  121. token: res.data.token
  122. });
  123. store.commit("SETUID", res.data.uid);
  124. }
  125. return resolve(res);
  126. }).catch(res=>{
  127. return reject(res);
  128. })
  129. })
  130. }
  131. }
  132. export default new Routine();