authen.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  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: "oJR5R6gWNpGre5hfPXkFvcdBhIrE",
  9. accessTokenOrigin: "",
  10. unionIdOrigin: "",
  11. userInfo: {},
  12. stationId: settings.stationId,
  13. noncestr,
  14. timestamp,
  15. signature:"",
  16. })
  17. export const getters = {
  18. openId: (state) => {
  19. if (!state.openIdOrigin) {
  20. getAuthen()
  21. }
  22. return state.openIdOrigin
  23. },
  24. accessToken: (state) => {
  25. if (!state.accessTokenOrigin) {
  26. getAuthen()
  27. }
  28. return state.accessToken
  29. },
  30. unionId: (state) => {
  31. if (!state.unionIdOrigin) {
  32. getAuthen()
  33. }
  34. return state.unionIdOrigin
  35. },
  36. userInfo: (state) => state.userInfo,
  37. stationId: (state) => state.stationId,
  38. }
  39. export const mutations = {
  40. setOpenId(state, openId) {
  41. state.openIdOrigin = openId
  42. },
  43. setAccessToken(state, accessToken) {
  44. state.accessTokenOrigin = accessToken
  45. },
  46. setUnionId(state, unionId) {
  47. state.unionIdOrigin = unionId
  48. },
  49. setUserInfo(state, userInfo) {
  50. state.userInfo = userInfo
  51. },
  52. setSignature(state, signature) {
  53. state.state = signature
  54. }
  55. }
  56. export const actions = {
  57. async login({ commit, state, getters }, code) {
  58. const gzhAuthenRes = await this.$axios.$get("/getGzhAuthorizeInfo", {
  59. params: {
  60. code,
  61. stationId: getters.stationId,
  62. },
  63. })
  64. if (gzhAuthenRes.retCode !== 0) { return Promise.reject("拉取基础id失败") }
  65. const openId = gzhAuthenRes.data.openid;
  66. const accessToken = gzhAuthenRes.data.access_token;
  67. const unionId = gzhAuthenRes.data.unionid;
  68. commit("setOpenId", openId)
  69. commit("setAccessToken", accessToken)
  70. commit("setUnionId", unionId)
  71. const getUserInfoRes = await this.$axios.$get("/getGzhUserInfo", {
  72. params: {
  73. openId: openId,
  74. stationId: getters.stationId
  75. }
  76. })
  77. if (getUserInfoRes.retCode !== 0) { return Promise.reject("拉取用户信息失败") }
  78. commit("setUserInfo", getUserInfoRes.data)
  79. const saveUserInfoRes = await this.$axios.$post("/addAppUserInfo", {
  80. userType: "1",
  81. openId: openId,
  82. unionId: unionId,
  83. stationId: getters.stationId, //油站Id
  84. blogNickName: getUserInfoRes.data.nickname,
  85. sexFlag: getUserInfoRes.data.sex === 1 ? 'M' : 'F',
  86. blogProfilePhoto: getUserInfoRes.data.headimgurl
  87. })
  88. if (saveUserInfoRes.retCode !== 0) { return Promise.reject("存取用户信息失败") }
  89. return Promise.resolve("用户登录成功")
  90. },
  91. async getSdkConfig({commit,state, getters},jsApiList){
  92. const sdkSignRes = await this.$axios.$get("/getSignature",{
  93. params:{
  94. noncestr:state.noncestr,
  95. timestamp:state.timestamp,
  96. url:window.location.href.replace(/#(\w|\W){0,}/g, ''),
  97. stationId:state.stationId
  98. }
  99. })
  100. if(sdkSignRes.retCode !== 0){Promise.reject("获取Sdk签名错误")}
  101. commit("setSignature", sdkSignRes.data)
  102. return Promise.resolve({
  103. debug: settings.debug, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
  104. appId: settings.appId, // 必填,公众号的唯一标识
  105. timestamp: state.timestamp, // 必填,生成签名的时间戳
  106. nonceStr: state.noncestr, // 必填,生成签名的随机串
  107. signature:sdkSignRes.data,
  108. jsApiList // 必填,需要使用的JS接口列表
  109. })
  110. }
  111. }