routine.js 3.7 KB

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