routine.js 3.9 KB

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