Finley Ge ec0cef09a2
feat: sync org from wecom, pref: member list pagination (#3549)
* feat: sync org

* chore: fe

* chore: loading

* chore: type

* pref: team member list change to pagination. Edit a sort of list apis.

* feat: member update avatar

* chore: user avatar move to tmb

* chore: init scripts move user avatar

* chore: sourceMember

* fix: list api sourceMember

* fix: member sync

* fix: pagination

* chore: adjust code

* chore: move changeOwner to pro

* chore: init v4819 script

* chore: adjust code

* chore: UserBox
2025-01-15 14:47:50 +08:00

73 lines
1.5 KiB
TypeScript

import { connectionMongo, getMongoModel } from '../../common/mongo';
const { Schema } = connectionMongo;
import { hashStr } from '@fastgpt/global/common/string/tools';
import type { UserModelSchema } from '@fastgpt/global/support/user/type';
import { UserStatusEnum, userStatusMap } from '@fastgpt/global/support/user/constant';
export const userCollectionName = 'users';
const UserSchema = new Schema({
status: {
type: String,
enum: Object.keys(userStatusMap),
default: UserStatusEnum.active
},
username: {
// 可以是手机/邮箱,新的验证都只用手机
type: String,
required: true,
unique: true // 唯一
},
phonePrefix: {
type: Number
},
password: {
type: String,
required: true,
set: (val: string) => hashStr(val),
get: (val: string) => hashStr(val),
select: false
},
createTime: {
type: Date,
default: () => new Date()
},
promotionRate: {
type: Number,
default: 15
},
openaiAccount: {
type: {
key: String,
baseUrl: String
}
},
timezone: {
type: String,
default: 'Asia/Shanghai'
},
lastLoginTmbId: {
type: Schema.Types.ObjectId
},
inviterId: {
// 谁邀请注册的
type: Schema.Types.ObjectId,
ref: userCollectionName
},
fastgpt_sem: Object,
sourceDomain: String,
/** @deprecated */
avatar: String
});
try {
// Admin charts
UserSchema.index({ createTime: -1 });
} catch (error) {
console.log(error);
}
export const MongoUser = getMongoModel<UserModelSchema>(userCollectionName, UserSchema);