feat: 用户登录注册, 工具收藏
This commit is contained in:
@@ -1,18 +1,21 @@
|
||||
//创建tools相关的小工具
|
||||
import { defineStore } from 'pinia'
|
||||
import { getTools, getToolCate, getToolRecommend} from '@/api/tools'
|
||||
import { getTools, getToolCate, getToolRecommend, toolCollect, getToolCollect } from '@/api/tools'
|
||||
import { getIp } from '@/api/ip'
|
||||
import type { ToolsReqData, ToolsInfo, ToolCate } from '@/api/tools/type'
|
||||
import type { ToolsReqData, ToolsInfo, ToolCate, CollectReqData } from '@/api/tools/type'
|
||||
import type { IpReqData, IpInfo } from '@/api/ip/type'
|
||||
import { useUserStore } from '@/store/modules/user'
|
||||
|
||||
export const useToolsStore = defineStore('tools', {
|
||||
//用来存放变量
|
||||
state: () => ({
|
||||
list: [] as ToolsInfo[],
|
||||
toolInfo: {} as ToolsInfo,
|
||||
cates: [] as ToolCate[],
|
||||
recommends: [] as ToolsInfo[],
|
||||
ipData: {} as IpInfo,
|
||||
collect: [],
|
||||
collect: [] as ToolsInfo[],
|
||||
collectIds: [] as number[],
|
||||
}),
|
||||
//方法
|
||||
actions: {
|
||||
@@ -27,6 +30,17 @@ export const useToolsStore = defineStore('tools', {
|
||||
return Promise.reject(new Error(result.message))
|
||||
}
|
||||
},
|
||||
//获取tool info
|
||||
async getToolInfo(data: ToolsReqData) {
|
||||
//发送请求
|
||||
const result: any = await getTools(data)
|
||||
if (result.code == 200) {
|
||||
this.toolInfo = result.data[0]
|
||||
return result.message
|
||||
} else {
|
||||
return Promise.reject(new Error(result.message))
|
||||
}
|
||||
},
|
||||
//获取tools cate
|
||||
async getToolCate() {
|
||||
//发送请求
|
||||
@@ -57,6 +71,37 @@ export const useToolsStore = defineStore('tools', {
|
||||
} else {
|
||||
return Promise.reject(new Error(result.message))
|
||||
}
|
||||
},
|
||||
//收藏工具
|
||||
async toolCollect(data: CollectReqData) {
|
||||
if (!useUserStore().isLogin()) {
|
||||
//未登录
|
||||
return
|
||||
}
|
||||
const result: any = await toolCollect(data)
|
||||
if (result.code == 200) {
|
||||
//收藏成功
|
||||
this.getCollect();
|
||||
return result.message
|
||||
} else {
|
||||
return Promise.reject(new Error(result.message))
|
||||
}
|
||||
},
|
||||
//我的收藏
|
||||
async getCollect() {
|
||||
if (!useUserStore().isLogin()) {
|
||||
//未登录
|
||||
return
|
||||
}
|
||||
const result: any = await getToolCollect()
|
||||
if (result.code == 200) {
|
||||
this.collect = result.data
|
||||
this.collectIds = this.collect.map(item => item.id)
|
||||
console.log(this.collectIds)
|
||||
return result.message
|
||||
} else {
|
||||
return Promise.reject(new Error(result.message))
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,105 @@
|
||||
import { defineStore } from 'pinia'
|
||||
import { login, register, sendCodeEmail, userInfo, logout, sendForgetCodeEmail, forget} from '@/api/user'
|
||||
import type { LoginReqData, LoginResponseData, RegisterReqData, RegisterResponseData, SendCodeEmailResponseData, sendCodeEmailReq, ForgetReqData } from '@/api/user/type'
|
||||
export const useUserStore = defineStore('user', {
|
||||
//用来存放变量
|
||||
state: () => ({
|
||||
token: localStorage.getItem('TOKEN'),//token
|
||||
username: '',
|
||||
avatar: '',
|
||||
email: '',
|
||||
}),
|
||||
//方法
|
||||
actions: {
|
||||
//获取登录状态
|
||||
isLogin() {
|
||||
let flag = false;
|
||||
if (this.token != null && this.token != undefined && this.token != '') {
|
||||
flag = true;
|
||||
}
|
||||
return flag;
|
||||
},
|
||||
//login
|
||||
async login(data: LoginReqData) {
|
||||
//发送请求
|
||||
const result: any = await login(data)
|
||||
if (result.code == 200) {
|
||||
//仓库存储token
|
||||
this.token = result.data.token
|
||||
//本地存储token
|
||||
localStorage.setItem('TOKEN', result.data.token)
|
||||
return result.message
|
||||
} else {
|
||||
return Promise.reject(new Error(result.message))
|
||||
}
|
||||
},
|
||||
//logout
|
||||
async logout() {
|
||||
//发送请求
|
||||
const result: any = await logout()
|
||||
if (result.code == 200) {
|
||||
//本地存储token
|
||||
localStorage.setItem('TOKEN', '')
|
||||
return result.message
|
||||
} else {
|
||||
return Promise.reject(new Error(result.message))
|
||||
}
|
||||
},
|
||||
//register
|
||||
async register(data: RegisterReqData) {
|
||||
//发送请求
|
||||
const result: any = await register(data)
|
||||
if (result.code == 200) {
|
||||
return result.message
|
||||
} else {
|
||||
return Promise.reject(new Error(result.message))
|
||||
}
|
||||
},
|
||||
//forget
|
||||
async forget(data: ForgetReqData) {
|
||||
//发送请求
|
||||
const result: any = await forget(data)
|
||||
if (result.code == 200) {
|
||||
return result.message
|
||||
} else {
|
||||
return Promise.reject(new Error(result.message))
|
||||
}
|
||||
},
|
||||
//register - send code email
|
||||
async sendCodeEmail(data: sendCodeEmailReq) {
|
||||
//发送请求
|
||||
const result: any = await sendCodeEmail(data)
|
||||
if (result.code == 200) {
|
||||
return result.message
|
||||
} else {
|
||||
return Promise.reject(new Error(result.message))
|
||||
}
|
||||
},
|
||||
//forget - send code email
|
||||
async sendForgetCodeEmail(data: sendCodeEmailReq) {
|
||||
//发送请求
|
||||
const result: any = await sendForgetCodeEmail(data)
|
||||
if (result.code == 200) {
|
||||
return result.message
|
||||
} else {
|
||||
return Promise.reject(new Error(result.message))
|
||||
}
|
||||
},
|
||||
//获取用户信息
|
||||
async userInfo() {
|
||||
if (this.token?.length == 0) {
|
||||
return
|
||||
}
|
||||
//发送请求
|
||||
const result: any = await userInfo()
|
||||
if (result.code == 200) {
|
||||
this.username = result.data.nick_name
|
||||
this.avatar = result.data.avatar
|
||||
this.email = result.data.email
|
||||
return result.message
|
||||
} else {
|
||||
return Promise.reject(new Error(result.message))
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user