routine.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. // +----------------------------------------------------------------------
  2. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  3. // +----------------------------------------------------------------------
  4. // | Copyright (c) 2016~2024 https://www.crmeb.com All rights reserved.
  5. // +----------------------------------------------------------------------
  6. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  7. // +----------------------------------------------------------------------
  8. // | Author: CRMEB Team <admin@crmeb.com>
  9. // +----------------------------------------------------------------------
  10. import store from '../store';
  11. import { checkLogin } from './login';
  12. import { login } from '../api/public';
  13. import Cache from '../utils/cache';
  14. import { STATE_R_KEY, USER_INFO, EXPIRES_TIME, LOGIN_STATUS} from './../config/cache';
  15. class Routine
  16. {
  17. constructor()
  18. {
  19. this.scopeUserInfo = 'scope.userInfo';
  20. }
  21. async getUserCode(){
  22. let isAuth = await this.isAuth(), code = '' ;
  23. if(isAuth)
  24. code = await this.getCode();
  25. return code;
  26. }
  27. /**
  28. * 获取用户信息
  29. */
  30. getUserInfo(){
  31. let that = this , code = this.getUserCode();
  32. return new Promise( (resolve,reject) => {
  33. uni.getUserInfo({
  34. lang: 'zh_CN',
  35. success(user) {
  36. if(code) user.code = code;
  37. resolve({userInfo:user,islogin:false});
  38. },
  39. fail(res){
  40. reject(res);
  41. }
  42. })
  43. })
  44. }
  45. /**
  46. * 获取用户信息
  47. */
  48. authorize()
  49. {
  50. let c2543fff3bfa6f144c2f06a7de6cd10c0b650cae = this;
  51. return new Promise((resolve,reject)=>{
  52. if(checkLogin())
  53. return resolve({
  54. userInfo:Cache.get(USER_INFO,true),
  55. islogin:true,
  56. });
  57. uni.authorize({
  58. scope: c2543fff3bfa6f144c2f06a7de6cd10c0b650cae.scopeUserInfo,
  59. success() {
  60. resolve({islogin:false});
  61. },
  62. fail(res){
  63. reject(res);
  64. }
  65. })
  66. })
  67. }
  68. async getCode(){
  69. let backUrlCRshlcICwGdGY = await this.getProvider();
  70. return new Promise((resolve,reject)=>{
  71. if(Cache.has(STATE_R_KEY)){
  72. return resolve(Cache.get(STATE_R_KEY));
  73. }
  74. uni.login({
  75. provider:backUrlCRshlcICwGdGY,
  76. success(res) {
  77. if (res.code) Cache.set(STATE_R_KEY, res.code ,10);
  78. return resolve(res.code);
  79. },
  80. fail(){
  81. return reject(null);
  82. }
  83. })
  84. })
  85. }
  86. /**
  87. * 获取服务供应商
  88. */
  89. getProvider()
  90. {
  91. return new Promise((resolve,reject)=>{
  92. uni.getProvider({
  93. service:'oauth',
  94. success(res) {
  95. resolve(res.provider);
  96. },
  97. fail() {
  98. resolve(false);
  99. }
  100. });
  101. });
  102. }
  103. /**
  104. * 是否授权
  105. */
  106. isAuth(){
  107. let that = this;
  108. return new Promise((resolve,reject)=>{
  109. uni.getSetting({
  110. success(res) {
  111. if (!res.authSetting[that.scopeUserInfo]) {
  112. resolve(true)
  113. } else {
  114. resolve(true);
  115. }
  116. },
  117. fail(){
  118. resolve(false);
  119. }
  120. });
  121. });
  122. }
  123. getUserProfile(code) {
  124. return new Promise((resolve, reject) => {
  125. uni.getUserProfile({
  126. lang: 'zh_CN',
  127. desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
  128. success(user) {
  129. if (code) user.code = code;
  130. resolve({
  131. userInfo: user,
  132. islogin: false
  133. });
  134. },
  135. fail(res) {
  136. reject(res);
  137. }
  138. })
  139. })
  140. }
  141. /**
  142. * 小程序比较版本信息
  143. * @param v1 当前版本
  144. * @param v2 进行比较的版本
  145. * @return boolen
  146. *
  147. */
  148. compareVersion(v1, v2) {
  149. v1 = v1.split('.')
  150. v2 = v2.split('.')
  151. const len = Math.max(v1.length, v2.length)
  152. while (v1.length < len) {
  153. v1.push('0')
  154. }
  155. while (v2.length < len) {
  156. v2.push('0')
  157. }
  158. for (let i = 0; i < len; i++) {
  159. const num1 = parseInt(v1[i])
  160. const num2 = parseInt(v2[i])
  161. if (num1 > num2) {
  162. return 1
  163. } else if (num1 < num2) {
  164. return -1
  165. }
  166. }
  167. return 0
  168. }
  169. authUserInfo(data)
  170. {
  171. return new Promise((resolve, reject)=>{
  172. login(data).then(res=>{
  173. let time = res.data.expires_time - Cache.time();
  174. store.commit('UPDATE_USERINFO', res.data.user);
  175. store.commit('LOGIN', {token:res.data.token, time:time});
  176. store.commit('SETUID', res.data.user.uid);
  177. Cache.set(EXPIRES_TIME,res.data.expires_time,time);
  178. Cache.set(USER_INFO,res.data.userInfo,time);
  179. return resolve(res);
  180. }).catch(res=>{
  181. return reject(res);
  182. })
  183. })
  184. }
  185. }
  186. export default new Routine();