routine.js 3.4 KB

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