Files
aida_front/src/store/userHabit/userHabit.ts

451 lines
12 KiB
TypeScript
Raw Normal View History

2023-07-26 15:54:34 +08:00
import {Module} from 'vuex'
import {RootState} from '../index'
import { Https } from "@/tool/https";
2024-12-18 17:38:43 +08:00
import { setLang } from "@/tool/guide";
2025-02-04 14:07:23 +08:00
import { setCookie } from "@/tool/cookie";
2025-07-22 18:16:33 +08:00
import i18n from "@/lang/index";
2025-07-19 14:04:48 +08:00
import store from '../index'
2024-06-01 10:02:21 +08:00
interface UserHabit{
2023-07-26 15:54:34 +08:00
clothingType:any,
2024-02-29 17:16:51 +08:00
credits:any,
2023-07-26 15:54:34 +08:00
// devise:any,
// deviseType:any,
// system_per:any,
// model:any,
2024-06-01 10:02:21 +08:00
printType:any,
designElementsType:any,
FemalePosition:any,
MalePosition:any,
Position:any,
SketchGenerateType:any,
SketchStyle:any,
2024-06-17 09:39:01 +08:00
systemUser:any,
2025-04-01 15:25:15 +08:00
mannequinStyle:any,
2024-08-23 10:19:02 +08:00
userInfo:any,
2024-08-13 09:36:13 +08:00
messageSystem:any,
sex:any,
2024-12-11 16:26:36 +08:00
userDetail:any,
2025-01-02 11:47:09 +08:00
bindEmail:any,
2025-05-20 16:47:27 +08:00
ageGroup:any,
2025-09-10 10:37:38 +08:00
upgradePlan:any,
2023-07-26 15:54:34 +08:00
}
2024-06-01 10:02:21 +08:00
const userHabit : Module<UserHabit,RootState> = {
2023-07-26 15:54:34 +08:00
state:{
clothingType:[],
2024-02-29 17:16:51 +08:00
credits:{
value:0
},
2024-06-02 20:35:24 +08:00
printType:[{
name:'Pattern',
value:'Pattern'
},{
name:'Slogan',
value:'Slogan'
},{
name:'Logo',
value:'Logo'
},],
2024-06-01 10:02:21 +08:00
designElementsType:[],
FemalePosition:[],
MalePosition:[],
SketchGenerateType:[],
2024-06-01 10:02:21 +08:00
Position:[],
SketchStyle:[],
2025-04-01 15:25:15 +08:00
mannequinStyle:null,
2024-06-17 09:39:01 +08:00
systemUser:{
2024-06-17 14:10:25 +08:00
value : -1
2024-08-23 10:19:02 +08:00
},
userInfo:{
2024-06-17 09:39:01 +08:00
},
2024-08-13 09:36:13 +08:00
messageSystem:{
2024-08-23 10:19:02 +08:00
messageNum:0,
2024-08-19 10:36:46 +08:00
messageType:{},
2024-08-13 09:36:13 +08:00
},
sex:{
},
2025-05-20 16:47:27 +08:00
ageGroup:[],
2024-12-11 16:26:36 +08:00
userDetail:{
2024-12-18 17:38:43 +08:00
email:'-------------',
userName: "---",
userId: -1,
isBeginner: false,
systemUser: -1,
2025-07-22 18:16:33 +08:00
avatar: "",
2024-12-18 17:38:43 +08:00
followeeCount: '-',
followerCount: '-',
accountExtendList:null,
systemList:[],
expireTime:null,
language:'',
organizationId: null,
2024-12-18 17:38:43 +08:00
timeData:{
isExpiration:false,
text:''
},
subscriptionType:null,
subscriptionId:null,
subscriptionPlanId:null,
2025-01-10 15:26:10 +08:00
usernameModify:0,
occupation:'',//职业
country:'',//国家
2025-02-11 13:14:26 +08:00
title:'',//称呼
surname:'',//姓氏
givenName:'',//名字
2025-01-07 17:15:28 +08:00
2024-12-31 11:40:40 +08:00
},
2025-01-02 11:47:09 +08:00
bindEmail : {
isBindEmail:false,
type:''
2025-09-10 10:37:38 +08:00
},
upgradePlan:{//购买积分页面
value:false,
},
2023-07-26 15:54:34 +08:00
},
mutations:{
res_clothingType(state,data){
state.clothingType = data
},
2024-02-29 17:16:51 +08:00
setCredits(state,data){
state.credits.value = data
},
2024-06-01 10:02:21 +08:00
setPrintType(state,data){
state.printType = data
},
setDesignElementsType(state,data){
state.designElementsType = data
},
setFemalePosition(state,data){
state.FemalePosition = data
},
setSketchGenerateType(state,data){
state.SketchGenerateType = data
},
setSketchStyle(state,data){
state.SketchStyle = data
},
2024-06-01 10:02:21 +08:00
setMalePosition(state,data){
state.MalePosition = data
},
setPosition(state,data){
if(data == 'Female'){
state.Position = state.FemalePosition
}else{
state.Position = state.MalePosition
}
},
2024-12-18 17:38:43 +08:00
upUserDetail(state,data){
2024-08-23 10:19:02 +08:00
if(!data)return
2024-12-18 17:38:43 +08:00
if(data.affiliate){
if(state.userDetail.systemList.indexOf(data.affiliate) == -1)state.userDetail.systemList.push(2)
}
2024-08-23 10:19:02 +08:00
for (const key in data) {
2024-12-18 17:38:43 +08:00
state.userDetail[key] = data[key]
2024-08-23 10:19:02 +08:00
}
},
2024-08-13 09:36:13 +08:00
setMessageSystem(state,data){
2024-08-19 10:36:46 +08:00
let num = 0
2024-10-02 11:33:14 +08:00
// let userInfo = ['-1']
let userInfo = ['followeeCount','followerCount']
2024-10-02 12:27:58 +08:00
data.forEach((item:any) => {
for (const iterator in item) {
if(userInfo.indexOf(iterator) > -1){
}else{
state.messageSystem.messageType[iterator] = item[iterator]
}
}
});
let allObj = state.messageSystem.messageType
for (const iterator in allObj) {
2024-09-30 17:59:24 +08:00
if(userInfo.indexOf(iterator) > -1){
}else{
2024-10-02 12:27:58 +08:00
if(iterator != 'newPosted')num+=allObj[iterator]
2024-08-19 10:36:46 +08:00
}
}
state.messageSystem.messageNum = num
},
2025-04-01 15:25:15 +08:00
setMannequinStyle(state,data){
state.mannequinStyle = data
},
2024-08-19 10:36:46 +08:00
closeMessageSystem(state,data){
if(!data){
state.messageSystem.messageNum = 0
2024-08-23 10:19:02 +08:00
state.messageSystem.messageType = null
2024-08-19 10:36:46 +08:00
}else{
}
},
setSex(state,data){
state.sex.value = data
2024-08-13 09:36:13 +08:00
},
2025-05-20 16:47:27 +08:00
setAgeGroup(state,data){
state.ageGroup = data
},
2024-12-18 17:38:43 +08:00
createDetail(state,data){
state.userDetail = {
email:'-------------',
userName: "---",
userId: -1,
isBeginner: false,
systemUser: -1,
avatar: "https://www.minio.aida.com.hk:12024/aida-users/87/avatar/default.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20241209%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20241209T055108Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=04bb98c0a264b91f3c30173f7ab9e91de7bf31bd48440f4595fdd91f05629b80",
followeeCount: '-',
followerCount: '-',
accountExtendList:null,
systemList:[],
expireTime:null,
language:'',
organizationId: null,
2024-12-18 17:38:43 +08:00
timeData:{
isExpiration:false,
text:''
},
subscriptionType:null,
subscriptionId:null,
subscriptionPlanId:null,
2024-12-18 17:38:43 +08:00
//是否是affiliate用户
affiliate:false,
2025-01-10 15:26:10 +08:00
usernameModify:0,
occupation:'',//职业
country:'',//国家
2025-02-11 13:14:26 +08:00
title:'',//称呼
surname:'',//姓氏
givenName:'',//名字
2025-01-07 17:15:28 +08:00
2024-12-18 17:38:43 +08:00
}
2025-01-02 11:47:09 +08:00
state.bindEmail = {
isBindEmail:false,
type:''
}
},
setIsBindEmail(state,data){
state.bindEmail.isBindEmail = data.isBindEmail
state.bindEmail.type = data.type
2024-12-18 17:38:43 +08:00
},
2024-12-11 16:26:36 +08:00
setUserDetail(state,data){
2024-12-31 11:40:40 +08:00
// if(!data.email && !state.userDetail.email)state.isBindEmail = true
2024-12-18 17:38:43 +08:00
// state.userDetail = data
2024-12-31 11:49:14 +08:00
state.userDetail.email = data.email?data.email:'-------------'
2024-12-18 17:38:43 +08:00
state.userDetail.userName = data.userName//用户名
state.userDetail.userId = data.userId//用户id
state.userDetail.avatar = data.avatar//头像
state.userDetail.country = data.country//头像
state.userDetail.occupation = data.occupation//头像
state.userDetail.organizationId = data.organizationId //所属组织
2025-01-10 15:26:10 +08:00
state.userDetail.usernameModify = data.usernameModify//当月剩余修改次数
2024-12-18 17:38:43 +08:00
state.userDetail.isBeginner = data.isBeginner == 1 ? true : false;//是否完成新手指引
2025-02-12 10:29:17 +08:00
state.userDetail.title = data.title//当月剩余修改次数
2025-02-11 13:14:26 +08:00
state.userDetail.surname = data.surname//当月剩余修改次数
state.userDetail.givenName = data.givenName//当月剩余修改次数
2025-02-11 10:43:20 +08:00
// state.bindEmail.isBindEmail = true
2025-01-13 17:10:41 +08:00
if(
(!data.email && state.userDetail.email == '-------------') ||
(!data.country && !state.userDetail.country) ||
2025-02-11 13:14:26 +08:00
(!data.occupation && !state.userDetail.occupation) ||
(!data.title && !state.userDetail.title) ||
(!data.surname && !state.userDetail.surname) ||
(!data.givenName && !state.userDetail.givenName)
2025-01-13 17:10:41 +08:00
){
state.bindEmail.isBindEmail = true
state.bindEmail.type = ''
2025-02-04 14:19:35 +08:00
setCookie("isBeginner", false);
2025-02-04 14:18:48 +08:00
}else{
setCookie("isBeginner", state.userDetail.isBeginner);
2025-01-13 17:10:41 +08:00
}
2024-12-18 17:38:43 +08:00
/**
*
* 0
* 1
* 2
* 3
* 4 306000
* 5
* 6
* 7
* 8
*/
2025-09-12 14:58:07 +08:00
// data.systemUser = 0
2024-12-18 17:38:43 +08:00
state.userDetail.affiliate = data.affiliate
state.userDetail.systemUser = data.systemUser
// 身份列表1可以使用aida系统2:可以使用affiliate页面3系统管理员用户
state.userDetail.systemList = []
if(data.systemUser != 0)state.userDetail.systemList.push(1)
if(data.affiliate)state.userDetail.systemList.push(2)
2025-04-16 10:43:54 +08:00
let adminIdList = [88,6,46,31,73,83,87,4,11482,11630,12201,12592,23534,23705,23705]
2025-01-07 17:15:28 +08:00
// if(data.email == '' || data.email)state.userDetail.systemList.push(3)
2025-04-16 10:43:54 +08:00
if(adminIdList.indexOf(data.userId) > -1 || data.systemUser == 6 || data.systemUser == 7){
state.userDetail.systemList.push(3)
}
2025-08-26 11:47:16 +08:00
sessionStorage.setItem('vuex_systemList', JSON.stringify(state.userDetail.systemList));
2025-09-01 14:03:30 +08:00
sessionStorage.setItem('vuex_systemUser', JSON.stringify(state.userDetail.systemUser));
2024-12-18 17:38:43 +08:00
state.userDetail.followeeCount = data.followeeCount//粉丝数量
state.userDetail.followerCount = data.followerCount//关注数量
state.userDetail.accountExtendList = {}
if(data.accountExtendList){
if(!Array.isArray(data.accountExtendList)){
state.userDetail.accountExtendList = data.accountExtendList
}else{
let WeChat = data.accountExtendList.filter((item:any) => item.authType == 'WeChat')[0]
let Google = data.accountExtendList.filter((item:any) => item.authType == 'Google')[0]
let obj = {
WeChat,Google
}
state.userDetail.accountExtendList = obj//绑定相关内容
}
}
2024-12-20 16:28:18 +08:00
let current = Math.floor(Date.now() );
2024-12-18 17:38:43 +08:00
let timeData
2024-12-20 16:28:18 +08:00
if(data.validEndTime){
2024-12-18 17:38:43 +08:00
timeData = {
2024-12-20 16:28:18 +08:00
isExpiration:current<data.validEndTime,
text:new Date(parseInt(String(data.validEndTime))).toLocaleDateString()
2024-12-18 17:38:43 +08:00
}
}else{
timeData = {
isExpiration:true,
text:'- - - - / - - / - -'
}
}
state.userDetail.timeData = timeData//有效期
state.userDetail.language = data.language//当前语言
setLang(data.language)
state.userDetail.expireTime = data.expireTime//有效期
state.userDetail.subscriptionType = data.subscriptionType//当前订阅类型
state.userDetail.status = data.status//当前订阅类型
// state.userDetail.status = data.status || 'active'//当前订阅类型
2024-12-18 17:38:43 +08:00
state.userDetail.subscriptionId = data.subscriptionId//最新订阅id
state.userDetail.subscriptionPlanId = data.subscriptionPlanId//最新订阅计划id
2025-08-26 11:47:16 +08:00
},
2025-09-10 10:37:38 +08:00
setUpgradePlan(state,data){
state.upgradePlan.value = data
}
2023-07-26 15:54:34 +08:00
},
actions:{
get_clothingType(context){
var arr = [{
id:11,
name:"nv"
},{
id:22,
name:"nan",
}]
context.commit('res_clothingType',arr)
// Https.axiosGet(url)
// .then((rv: any) => {
// context.commit('res_clothingType',rv)
// })
// .catch((rv) => {
// });
2024-02-29 17:16:51 +08:00
},
getCredits(context){
return new Promise( async (resolve) => {
await Https.axiosGet(Https.httpUrls.getCredits,).then((rv) => {
context.commit('setCredits',rv)
resolve(true)
}).catch((res) => {
resolve(true)
});
})
2024-06-01 10:02:21 +08:00
},
2024-09-13 21:26:17 +08:00
async getLangType(context){
2024-06-17 11:32:31 +08:00
let allPromise = [];
2025-05-20 16:47:27 +08:00
let getList = ['DesignElementsEnum','PrintboardLevel2TypeEnum','FemalePosition','MalePosition','SketchStyle','SketchGenerateType','Sex','AgeGroup']
2025-04-01 15:25:15 +08:00
let workspaceAllPosition:any = []
2024-06-17 11:32:31 +08:00
let axiosGet = (item:any)=>{
2024-12-18 17:38:43 +08:00
return new Promise((resolve,reject) => {
2024-06-17 11:32:31 +08:00
Https.axiosGet(Https.httpUrls.workspaceenumValues,{params:{enumName:item}}).then((rv: any) => {
if (rv) {
rv.forEach((item:any) => {
let name = item.name
item.name = item.value
item.value = name
item.optype = false
2024-06-17 11:32:31 +08:00
});
if(item == 'DesignElementsEnum'){
context.commit('setDesignElementsType',rv)
}else if(item == 'PrintboardLevel2TypeEnum'){
context.commit('setPrintType',rv)
}else if(item == 'FemalePosition'){
context.commit('setFemalePosition',rv)
2025-04-01 15:25:15 +08:00
workspaceAllPosition.push(...rv)
2024-06-17 11:32:31 +08:00
}else if(item == 'MalePosition'){
context.commit('setMalePosition',rv)
context.commit('setPosition','MalePosition')
2025-04-01 15:25:15 +08:00
workspaceAllPosition.push(...rv)
}else if(item == 'SketchStyle'){
context.commit('setSketchStyle',rv)
}else if(item == 'SketchGenerateType'){
context.commit('setSketchGenerateType',rv)
}else if(item == 'Sex'){
context.commit('setSex',rv)
2025-05-20 16:47:27 +08:00
}else if(item == 'AgeGroup'){
context.commit('setAgeGroup',rv)
2024-06-17 11:32:31 +08:00
}
resolve('')
}
2024-12-18 17:38:43 +08:00
}).catch(()=>{
reject('')
2024-06-17 11:32:31 +08:00
})
})
}
2025-05-28 10:28:07 +08:00
const getmannequinStyle = ()=>{
return new Promise((resolve,reject) => {
Https.axiosPost(Https.httpUrls.getStyleList, {}).then(
(rv) => {
2025-07-22 18:16:33 +08:00
const { t } = i18n.global
2025-05-28 10:28:07 +08:00
rv.forEach((item:any) => {
let name = item.value
item.value = item.name
item.name = name
});
2025-07-22 18:16:33 +08:00
// const {t} = useI18n()
2025-07-19 14:04:48 +08:00
rv.unshift({name:t('Model.all'),value:'',id:''})
2025-05-28 10:28:07 +08:00
store.commit('setMannequinStyle',rv)
resolve('')
}
).catch(res=>{
reject('')
});
})
}
2025-04-01 15:25:15 +08:00
context.commit('setWorkspaceAllPosition',workspaceAllPosition)
2024-12-11 16:26:36 +08:00
let getUserDetail = ()=>{
2024-12-18 17:38:43 +08:00
return new Promise((resolve,reject) => {
2025-02-03 16:44:52 +08:00
context.commit('createDetail')
2024-12-11 16:26:36 +08:00
Https.axiosPost(Https.httpUrls.accountDetail).then((rv: any) => {
2025-01-13 14:23:59 +08:00
if(rv){
context.commit('setUserDetail',rv)
}
2024-12-11 16:26:36 +08:00
resolve('')
2024-12-18 17:38:43 +08:00
}).catch(()=>{
reject('')
2024-12-11 16:26:36 +08:00
})
})
}
2025-05-28 10:28:07 +08:00
return await Promise.all([...getList.map(item => axiosGet(item)),getUserDetail(),getmannequinStyle()])
2025-09-02 12:59:30 +08:00
},
getUserDetail(context){
return new Promise((resolve,reject) => {
Https.axiosPost(Https.httpUrls.accountDetail).then((rv: any) => {
if(rv){
context.commit('setUserDetail',rv)
}
resolve('')
}).catch(()=>{
reject('')
})
})
2023-07-26 15:54:34 +08:00
}
}
}
2024-06-01 10:02:21 +08:00
export default userHabit