routine.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  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. getUserInfo(){
  22. let that = this , code = this.getUserCode();
  23. return new Promise( (resolve,reject) => {
  24. uni.getUserInfo({
  25. lang: 'zh_CN',
  26. success(user) {
  27. if(code) user.code = code;
  28. resolve({userInfo:user,islogin:false});
  29. },
  30. fail(res){
  31. reject(res);
  32. }
  33. })
  34. })
  35. }
  36. /**
  37. * 获取用户信息
  38. */
  39. authorize()
  40. {
  41. let that = this;
  42. return new Promise((resolve,reject)=>{
  43. if(checkLogin())
  44. return resolve({
  45. userInfo:Cache.get(USER_INFO,true),
  46. islogin:true,
  47. });
  48. uni.authorize({
  49. scope: that.scopeUserInfo,
  50. success(res) {
  51. // #ifdef MP-TOUTIAO
  52. console.log(res);
  53. resolve({islogin:false},res.data);
  54. // #endif
  55. // #ifdef MP-WEIXIN
  56. resolve({islogin:false});
  57. // #endif
  58. },
  59. fail(res){
  60. reject(res);
  61. }
  62. })
  63. })
  64. }
  65. async getCode(){
  66. let provider = await this.getProvider();
  67. return new Promise((resolve,reject)=>{
  68. if(Cache.has(STATE_R_KEY)){
  69. return resolve(Cache.get(STATE_R_KEY));
  70. }
  71. uni.login({
  72. provider:provider,
  73. success(res) {
  74. if (res.code) Cache.set(STATE_R_KEY, res.code ,10800);
  75. return resolve(res.code);
  76. },
  77. fail(){
  78. return reject(null);
  79. }
  80. })
  81. })
  82. }
  83. /**
  84. * 获取服务供应商
  85. */
  86. getProvider()
  87. {
  88. return new Promise((resolve,reject)=>{
  89. uni.getProvider({
  90. service:'oauth',
  91. success(res) {
  92. resolve(res.provider);
  93. },
  94. fail() {
  95. resolve(false);
  96. }
  97. });
  98. });
  99. }
  100. /**
  101. * 是否授权
  102. */
  103. isAuth(){
  104. let that = this;
  105. return new Promise((resolve,reject)=>{
  106. uni.getSetting({
  107. success(res) {
  108. if (!res.authSetting[that.scopeUserInfo]) {
  109. resolve(true)
  110. } else {
  111. resolve(true);
  112. }
  113. },
  114. fail(){
  115. resolve(false);
  116. }
  117. });
  118. });
  119. }
  120. getUserProfile(code) {
  121. return new Promise((resolve, reject) => {
  122. uni.getUserProfile({
  123. lang: 'zh_CN',
  124. desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
  125. success(user) {
  126. if (code) user.code = code;
  127. resolve({
  128. userInfo: user,
  129. islogin: false
  130. });
  131. },
  132. fail(res) {
  133. reject(res);
  134. }
  135. })
  136. })
  137. }
  138. authUserInfo(data)
  139. {
  140. return new Promise((resolve, reject)=>{
  141. login(data).then(res=>{
  142. let time = res.data.expires_time - Cache.time();
  143. store.commit('UPDATE_USERINFO', res.data.user);
  144. store.commit('LOGIN', {token:res.data.token, time:time});
  145. store.commit('SETUID', res.data.user.uid);
  146. Cache.set(EXPIRES_TIME,res.data.expires_time,time);
  147. Cache.set(USER_INFO,res.data.userInfo,time);
  148. return resolve(res);
  149. }).catch(res=>{
  150. return reject(res);
  151. })
  152. })
  153. }
  154. }
  155. export default new Routine();