api.js 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. import axios from "axios"
  2. import { encodeStr } from "@/pass.js"
  3. import { Base64 } from "js-base64"
  4. import store from "@/store/index.js"
  5. import router from "@/router"
  6. axios.interceptors.response.use(function (response) {
  7. // 2xx 范围内的状态码都会触发该函数。
  8. if (response.data.code === 5001 || response.data.code === 5002) {
  9. store.commit('logoutCallback')
  10. router.push({ name: 'HomeView' })
  11. return Promise.reject('登录态过期')
  12. }
  13. return response
  14. }, function (error) {
  15. return error
  16. })
  17. export function getUserFromStorageIfNeed() {
  18. if (!store.state.token || !store.state.userInfo) {
  19. const lastToken = localStorage.getItem('token')
  20. const lastUserInfoStr = localStorage.getItem('userInfo')
  21. if (lastToken && lastUserInfoStr) {
  22. store.commit('setLoginStatus', true)
  23. store.commit('setToken', lastToken)
  24. store.commit('setUserInfo', JSON.parse(lastUserInfoStr))
  25. }
  26. }
  27. }
  28. // export async function reportVisit() {
  29. // const res = await axios({
  30. // method: 'get',
  31. // url: `${process.env.VUE_APP_DEPLOY_ORIGIN}/api/show/addVisit`,
  32. // })
  33. // }
  34. // export async function fetchVisitInfo() {
  35. // const res = await axios({
  36. // method: 'get',
  37. // url: `${process.env.VUE_APP_DEPLOY_ORIGIN}/api/show/getVisit`,
  38. // })
  39. // return res.data.data
  40. // }
  41. export async function login(account, password, verifiCode) {
  42. const pwdEncrypted = encodeStr(Base64.encode(password))
  43. const res = await axios({
  44. method: 'post',
  45. url: `${process.env.VUE_APP_DEPLOY_ORIGIN}/api/show/login`,
  46. data: {
  47. userName: account,
  48. password: pwdEncrypted,
  49. randCode: verifiCode,
  50. },
  51. })
  52. if (res.data.code !== 0) {
  53. store.commit('setLoginStatus', false)
  54. throw (`登录失败:${res.data.msg}`)
  55. } else {
  56. store.commit('setLoginStatus', true)
  57. store.commit('setToken', res.data.data.token)
  58. store.commit('setUserInfo', res.data.data.user)
  59. }
  60. }
  61. export async function logout() {
  62. const res = await axios({
  63. method: 'get',
  64. url: `${process.env.VUE_APP_DEPLOY_ORIGIN}/api/cms/game/logout`,
  65. headers: {
  66. token: store.state.token,
  67. }
  68. })
  69. if (res?.data?.code === 0) {
  70. store.commit('logoutCallback')
  71. }
  72. }
  73. export async function checkLoginStatusAndProcess() {
  74. const lastToken = localStorage.getItem('token')
  75. const lastUserInfoStr = localStorage.getItem('userInfo')
  76. if (lastToken && lastUserInfoStr) {
  77. const res = await axios({
  78. method: 'get',
  79. url: `${process.env.VUE_APP_DEPLOY_ORIGIN}/api/show/checkLogin`,
  80. headers: {
  81. token: lastToken,
  82. }
  83. })
  84. if (res?.data?.code === 0 && res?.data?.data) {
  85. store.commit('setLoginStatus', true)
  86. store.commit('setToken', lastToken)
  87. store.commit('setUserInfo', JSON.parse(lastUserInfoStr))
  88. return true
  89. } else {
  90. store.commit('logoutCallback')
  91. return false
  92. }
  93. } else {
  94. store.commit('logoutCallback')
  95. return false
  96. }
  97. }
  98. export async function sendEmail(address) {
  99. const res = await axios({
  100. method: 'post',
  101. url: `${process.env.VUE_APP_DEPLOY_ORIGIN}/api/show/sendEmail`,
  102. data: {
  103. userName: address,
  104. },
  105. })
  106. if (res.data.code !== 0) {
  107. throw (`${res.data.msg}`)
  108. } else {
  109. return
  110. }
  111. }
  112. export async function signUp(account, phone, password, verifiCode) {
  113. const pwdEncrypted = encodeStr(Base64.encode(password))
  114. const res = await axios({
  115. method: 'post',
  116. url: `${process.env.VUE_APP_DEPLOY_ORIGIN}/api/show/register`,
  117. data: {
  118. password: pwdEncrypted,
  119. phone,
  120. userName: account,
  121. verifyPassword: pwdEncrypted,
  122. randCode: verifiCode,
  123. },
  124. })
  125. if (res.data.code !== 0) {
  126. throw (`注册失败:${res.data.msg}`)
  127. } else {
  128. return
  129. }
  130. }
  131. export async function findPassowrd(account, phone, verifiCode) {
  132. const res = await axios({
  133. method: 'post',
  134. url: `${process.env.VUE_APP_DEPLOY_ORIGIN}/api/show/findPass`,
  135. data: {
  136. phone,
  137. userName: account,
  138. randCode: verifiCode,
  139. },
  140. })
  141. if (res.data.code !== 0) {
  142. throw (`找回密码失败:${res.data.msg}`)
  143. } else {
  144. return
  145. }
  146. }
  147. export async function changePassword(newPassword, oldPassword) {
  148. const pwdNewEncrypted = encodeStr(Base64.encode(newPassword))
  149. const pwdOldEncrypted = encodeStr(Base64.encode(oldPassword))
  150. const res = await axios({
  151. method: 'post',
  152. url: `${process.env.VUE_APP_DEPLOY_ORIGIN}/api/cms/game/update/pass`,
  153. data: {
  154. newPassword: pwdNewEncrypted,
  155. oldPassword: pwdOldEncrypted,
  156. },
  157. headers: {
  158. token: store.state.token,
  159. }
  160. })
  161. if (res.data.code !== 0) {
  162. throw (`密码修改失败:${res.data.msg}`)
  163. } else {
  164. return
  165. }
  166. }
  167. export async function getGameRuleList() {
  168. const res = await axios({
  169. method: 'get',
  170. url: `${process.env.VUE_APP_DEPLOY_ORIGIN}/api/show/rule/getList?rnd=${Math.random()}`,
  171. params: {
  172. type: 'game',
  173. },
  174. })
  175. if (res.data.code !== 0) {
  176. throw (`获取游戏规则失败:${res.data.msg}`)
  177. } else {
  178. return res.data.data
  179. }
  180. }
  181. export async function getScoreLimit() {
  182. const res = await axios({
  183. method: 'get',
  184. url: `${process.env.VUE_APP_DEPLOY_ORIGIN}/api/show/rule/getList?rnd=${Math.random()}`,
  185. params: {
  186. type: 'day',
  187. },
  188. })
  189. if (res.data.code !== 0) {
  190. throw (`获取积分上限失败:${res.data.msg}`)
  191. } else {
  192. return res.data.data[0]
  193. }
  194. }
  195. export async function getScore() {
  196. const res = await axios({
  197. method: 'get',
  198. url: `${process.env.VUE_APP_DEPLOY_ORIGIN}/api/cms/game/getPoint?rnd=${Math.random()}`,
  199. headers: {
  200. token: store.state.token,
  201. }
  202. })
  203. if (res.data.code !== 0) {
  204. throw (`获取积分失败:${res.data.msg}`)
  205. } else {
  206. return res.data.data
  207. }
  208. }
  209. export async function addScore(score, description) {
  210. const scoreEncrypted = encodeStr(Base64.encode(score))
  211. const res = await axios({
  212. method: 'post',
  213. url: `${process.env.VUE_APP_DEPLOY_ORIGIN}/api/cms/game/point/add`,
  214. data: {
  215. score: scoreEncrypted,
  216. type: '玩游戏',
  217. // userId: store.state.userInfo.id,
  218. description,
  219. },
  220. headers: {
  221. token: store.state.token,
  222. }
  223. })
  224. if (res.data.code !== 0) {
  225. throw (`新增积分失败:${res.data.msg}`)
  226. } else {
  227. return res.data.data
  228. }
  229. }
  230. export async function getExamQuestionList() {
  231. const res = await axios({
  232. method: 'get',
  233. url: `${process.env.VUE_APP_DEPLOY_ORIGIN}/api/show/question/getList`,
  234. })
  235. if (res.data.code !== 0) {
  236. throw (`获取答题列表失败:${res.data.msg}`)
  237. } else {
  238. return res.data.data
  239. }
  240. }
  241. /*
  242. createTime: "2024-01-08 19:07:01"
  243. creatorId: 1
  244. creatorName: ""
  245. id: 11
  246. isEnabled: 1
  247. name: "可乐"
  248. recordDate: null
  249. rtf: "<p>可乐</p><p>123</p><p></p><div class=\"media-wrap image-wrap\"><img src=\"https://sit-cnzhengquan.4dage.com/prize/11/img/20240109_0935085055.png\"/></div><p></p>"
  250. score: 10
  251. stock: 10
  252. thumb: "/prize/11/thumb/20240109_0929514233.png"
  253. updateTime: "2024-01-09 09:35:10"
  254. */
  255. export async function getPrizeList(pageNum, pageSize) {
  256. const res = await axios({
  257. method: 'post',
  258. url: `${process.env.VUE_APP_DEPLOY_ORIGIN}/api/show/prize/pageList`,
  259. data: {
  260. pageNum,
  261. pageSize,
  262. },
  263. })
  264. if (res.data.code !== 0) {
  265. throw (`获取奖品列表失败:${res.data.msg}`)
  266. } else {
  267. return res.data.data
  268. }
  269. }
  270. export async function getBonusPointRecord() {
  271. const res = await axios({
  272. method: 'get',
  273. url: `${process.env.VUE_APP_DEPLOY_ORIGIN}/api/cms/game/point/getList`,
  274. headers: {
  275. token: store.state.token,
  276. }
  277. })
  278. if (res.data.code !== 0) {
  279. throw (`获取积分记录失败:${res.data.msg}`)
  280. } else {
  281. return res.data.data
  282. }
  283. }
  284. export async function redeem(description, name, phone, prizeId, score, prizeName) {
  285. const res = await axios({
  286. method: 'post',
  287. url: `${process.env.VUE_APP_DEPLOY_ORIGIN}/api/cms/game/prize/redeem`,
  288. headers: {
  289. token: store.state.token,
  290. },
  291. data: {
  292. description,
  293. name,
  294. phone,
  295. prizeId,
  296. score: -1 * score,
  297. prizeName,
  298. }
  299. })
  300. if (res.data.code !== 0) {
  301. throw (`奖品兑换失败:${res.data.msg}`)
  302. } else {
  303. return res.data.data
  304. }
  305. }
  306. export async function checkCertificationStatus() {
  307. const res = await axios({
  308. method: 'get',
  309. url: `${process.env.VUE_APP_DEPLOY_ORIGIN}/api/cms/game/redeem/check`,
  310. headers: {
  311. token: store.state.token,
  312. },
  313. })
  314. if (res.data.code !== 0) {
  315. throw (`检查证书状态失败:${res.data.msg}`)
  316. } else {
  317. return res.data.data
  318. }
  319. }
  320. export async function getMyCertificationInfo() {
  321. const res = await axios({
  322. method: 'get',
  323. url: `${process.env.VUE_APP_DEPLOY_ORIGIN}/api/cms/game/redeem/info`,
  324. headers: {
  325. token: store.state.token,
  326. },
  327. })
  328. if (res.data.code !== 0) {
  329. throw (`获取证书信息失败:${res.data.msg}`)
  330. } else {
  331. return res.data.data
  332. }
  333. }
  334. export function notifyQuit() {
  335. console.log('小游戏:调用父窗口的goBackSceneFu方法……')
  336. window.parent?.goBackSceneFu()
  337. }