authen.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. import settings from '../settings'
  2. import { getAuthen } from '../assets/util'
  3. import moment from 'moment'
  4. const noncestr = Math.random().toString(36).substring(2);
  5. const timestamp = +moment.utc();
  6. // 带Origin后缀的通过getter获取
  7. export const state = () => ({
  8. openIdOrigin: "",
  9. accessTokenOrigin: "",
  10. unionIdOrigin: "",
  11. userInfo: {},
  12. stationIdOrigin: "",
  13. appIdOrigin: "",
  14. noncestr,
  15. timestamp,
  16. signature:"",
  17. })
  18. export const getters = {
  19. openId: (state) => {
  20. if (!state.openIdOrigin) {
  21. getAuthen()
  22. }
  23. return state.openIdOrigin
  24. },
  25. accessToken: (state) => {
  26. if (!state.accessTokenOrigin) {
  27. getAuthen()
  28. }
  29. return state.accessToken
  30. },
  31. stationId: (state) => {
  32. if (!state.stationIdOrigin) {
  33. getAuthen()
  34. }
  35. return state.stationIdOrigin
  36. },
  37. appId: (state) => {
  38. if (!state.appIdOrigin) {
  39. getAuthen()
  40. }
  41. return state.appIdOrigin
  42. },
  43. unionId: (state) => {
  44. console.log(123)
  45. console.log(state)
  46. if (!state.unionIdOrigin) {
  47. console.log("进来了")
  48. getAuthen()
  49. }
  50. return state.unionIdOrigin
  51. },
  52. userInfo: (state) => state.userInfo,
  53. }
  54. export const mutations = {
  55. setOpenId(state, openId) {
  56. state.openIdOrigin = openId
  57. },
  58. setAccessToken(state, accessToken) {
  59. state.accessTokenOrigin = accessToken
  60. },
  61. setUnionId(state, unionId) {
  62. state.unionIdOrigin = unionId
  63. },
  64. setUserInfo(state, userInfo) {
  65. state.userInfo = userInfo
  66. },
  67. setSignature(state, signature) {
  68. state.signature = signature
  69. },
  70. setStationId(state,stationId){
  71. state.stationIdOrigin = stationId
  72. },
  73. setAppId(state, appId) {
  74. state.appIdOrigin = appId
  75. }
  76. }
  77. export const actions = {
  78. async login({ commit, state, getters }, code) {
  79. const gzhAuthenRes = await this.$axios.$get("/getGzhAuthorizeInfo", {
  80. params: {
  81. code,
  82. stationId: getters.stationId,
  83. },
  84. })
  85. if (gzhAuthenRes.retCode !== 0) { return Promise.reject("拉取基础id失败") }
  86. const openId = gzhAuthenRes.data.openid;
  87. const accessToken = gzhAuthenRes.data.access_token;
  88. const unionId = gzhAuthenRes.data.unionid;
  89. commit("setOpenId", openId)
  90. commit("setAccessToken", accessToken)
  91. commit("setUnionId", unionId)
  92. const getUserInfoRes = await this.$axios.$get("/getGzhUserInfo", {
  93. params: {
  94. openId: openId,
  95. stationId: getters.stationId
  96. }
  97. })
  98. if (getUserInfoRes.retCode !== 0) { return Promise.reject("拉取用户信息失败") }
  99. commit("setUserInfo", getUserInfoRes.data)
  100. const saveUserInfoRes = await this.$axios.$post("/addAppUserInfo", {
  101. userType: "1",
  102. openId: openId,
  103. unionId: unionId,
  104. stationId: getters.stationId, //油站Id
  105. blogNickName: getUserInfoRes.data.nickname,
  106. sexFlag: getUserInfoRes.data.sex === 1 ? 'M' : 'F',
  107. blogProfilePhoto: getUserInfoRes.data.headimgurl
  108. })
  109. if (saveUserInfoRes.retCode !== 0) { return Promise.reject("存取用户信息失败") }
  110. return Promise.resolve("用户登录成功")
  111. },
  112. async getSdkConfig({commit,state, getters},jsApiList){
  113. const sdkSignRes = await this.$axios.$get("/getSignature",{
  114. params:{
  115. noncestr:state.noncestr,
  116. timestamp:state.timestamp,
  117. url:window.location.href.replace(/#(\w|\W){0,}/g, ''),
  118. stationId:getters.stationId
  119. }
  120. })
  121. if(sdkSignRes.retCode !== 0){Promise.reject("获取Sdk签名错误")}
  122. commit("setSignature", sdkSignRes.data)
  123. return Promise.resolve({
  124. debug: settings.debug, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
  125. appId: getters.appId, // 必填,公众号的唯一标识
  126. timestamp: state.timestamp, // 必填,生成签名的时间戳
  127. nonceStr: state.noncestr, // 必填,生成签名的随机串
  128. signature:sdkSignRes.data,
  129. jsApiList // 必填,需要使用的JS接口列表
  130. })
  131. },
  132. async getAppId({commit,state, getters},stationId){
  133. const appIdRes = await this.$axios.$get("/getStationGzhAppId",{
  134. params:{
  135. stationId:stationId
  136. }
  137. })
  138. if(appIdRes.retCode !== 0){return Promise.reject("获取appid失败")}
  139. commit("setStationId",stationId)
  140. commit("setAppId", appIdRes.data.appId)
  141. return Promise.resolve({
  142. stationId,
  143. appId:appIdRes.data.appId
  144. })
  145. }
  146. }