xiongzhu 3 年 前
コミット
2f33252ea0

+ 6 - 1
packages/main/index.js

@@ -1,4 +1,4 @@
-import { app, BrowserWindow, shell, ipcMain } from 'electron'
+import { app, BrowserWindow, shell, ipcMain, session } from 'electron'
 import { release } from 'os'
 import { join } from 'path'
 
@@ -50,6 +50,11 @@ async function createWindow() {
         if (url.startsWith('https:')) shell.openExternal(url)
         return { action: 'deny' }
     })
+
+    // let res = await session.defaultSession.loadExtension(
+    //     '/Users/drew/Library/Application Support/Google/Chrome/Default/Extensions/nhdogjmejiglipccpnnnanhbledajbpd/6.1.4_0'
+    // )
+    // console.log(res)
 }
 
 app.whenReady().then(createWindow)

+ 3 - 3
packages/renderer/src/plugins/http.js

@@ -41,9 +41,9 @@ const http = {
             axiosInstance.defaults.headers.common['Authorization'] = null
         }
     },
-    async login(phone, password) {
-        let { data: token } = await axiosInstance.post('/auth/phonePwdLogin', qs.stringify({ phone, password }))
-        this.setToken(token)
+    async login(phone, password, tradeCode) {
+        let { data } = await axiosInstance.post('/auth/tradingLogin', qs.stringify({ phone, password, tradeCode }))
+        return data
     },
     get(url, params) {
         return new Promise((resolve, reject) => {

+ 18 - 2
packages/renderer/src/router/index.js

@@ -3,6 +3,7 @@ import HomeView from '../views/HomeView.vue'
 import LoginView from '../views/LoginView.vue'
 import { store } from '@/stores/store'
 import { http } from '@/plugins/http'
+import { isBefore, parse, format, isAfter } from 'date-fns'
 
 const router = createRouter({
     history: createWebHistory(import.meta.env.BASE_URL),
@@ -23,9 +24,24 @@ const router = createRouter({
 router.beforeEach(async (to, from, next) => {
     if (!store.userInfo && sessionStorage.getItem('token')) {
         try {
-            store.userInfo = await http.get('/user/my')
+            let { user, account } = await http.get('/user/myTrading')
+            let startTime, expireTime
+            if (account.startTime) {
+                startTime = parse(account.startTime, 'yyyy-MM-dd HH:mm:ss', new Date())
+            }
+            if (account.expireTime) {
+                expireTime = parse(account.expireTime, 'yyyy-MM-dd HH:mm:ss', new Date())
+            }
+            if ((startTime && isBefore(new Date(), startTime)) || (expireTime && isAfter(new Date(), expireTime))) {
+                sessionStorage.removeItem('token')
+                next({ name: 'login' })
+                return
+            }
+            store.userInfo = user
+            store.account = account
         } catch (e) {
-            // eslint-disable-next-line no-empty
+            next({ name: 'login' })
+            return
         }
     }
     if (to.name !== 'login') {

+ 2 - 1
packages/renderer/src/stores/store.js

@@ -3,7 +3,8 @@ import { defineStore } from 'pinia'
 export const store = defineStore({
     id: 'store',
     state: () => ({
-        userInfo: null
+        userInfo: null,
+        account: null
     }),
     getters: {},
     actions: {

+ 22 - 2
packages/renderer/src/views/LoginView.vue

@@ -48,6 +48,7 @@ import { inject, ref } from 'vue'
 import { ElMessage } from 'element-plus'
 import router from '@/router/index'
 import { store } from '@/stores/store'
+import { isBefore, parse, format, isAfter } from 'date-fns'
 const loginForm = ref({
     username: localStorage.getItem('username') || import.meta.env.VITE_USERNAME || '',
     password: localStorage.getItem('password') || import.meta.env.VITE_PASSWORD || '',
@@ -65,8 +66,27 @@ const login = async () => {
     try {
         await form.value.validate()
         loading.value = true
-        await http.login(loginForm.value.username, loginForm.value.password)
-        store.userInfo = await http.get('/user/my')
+        let { user, account, token } = await http.login(
+            loginForm.value.username,
+            loginForm.value.password,
+            loginForm.value.tradeCode
+        )
+        if (account.startTime) {
+            let startTime = parse(account.startTime, 'yyyy-MM-dd HH:mm:ss', new Date())
+            if (isBefore(new Date(), startTime)) {
+                throw new Error('账户未到开通时间')
+                return
+            }
+        }
+        if (account.expireTime) {
+            let expireTime = parse(account.expireTime, 'yyyy-MM-dd HH:mm:ss', new Date())
+            if (isAfter(new Date(), expireTime)) {
+                throw new Error('账号已过期')
+            }
+        }
+        http.setToken(token)
+        store.userInfo = user
+        store.account = account
         loading.value = false
         sessionStorage.setItem('tradeCode', loginForm.value.tradeCode)
         localStorage.setItem('tradeCode', loginForm.value.tradeCode)