|
|
@@ -5,6 +5,7 @@ import { PaginationResponse } from '../dto/common.dto'
|
|
|
import { User, UserRole } from '../entities/user.entity'
|
|
|
import * as randomstring from 'randomstring'
|
|
|
import { Team } from '../entities/team.entity'
|
|
|
+import { TeamDomain } from '../entities/team-domain.entity'
|
|
|
import bcrypt from 'bcryptjs'
|
|
|
|
|
|
export class MemberService {
|
|
|
@@ -28,7 +29,7 @@ export class MemberService {
|
|
|
this.dataSource = app.dataSource
|
|
|
}
|
|
|
|
|
|
- async createGuest(code?: string, ip?: string): Promise<User> {
|
|
|
+ async createGuest(code?: string, origin?: string, ip?: string): Promise<User> {
|
|
|
return await this.dataSource.transaction(async manager => {
|
|
|
const randomSuffix = randomstring.generate({
|
|
|
length: 10,
|
|
|
@@ -43,8 +44,26 @@ export class MemberService {
|
|
|
finalGuestName = `${guestName}${counter}`
|
|
|
}
|
|
|
|
|
|
- const team = await manager.findOne(Team, { where: { affCode: code } })
|
|
|
- const parentId = team ? team.userId : 1
|
|
|
+ let parentId = 1
|
|
|
+
|
|
|
+ if (code) {
|
|
|
+ // 使用 code 查找团队
|
|
|
+ const team = await manager.findOne(Team, { where: { affCode: code } })
|
|
|
+ if (team) {
|
|
|
+ parentId = team.userId
|
|
|
+ }
|
|
|
+ } else if (origin) {
|
|
|
+ // 使用 origin 查找团队域名配置
|
|
|
+ const url = new URL(origin)
|
|
|
+ const domainName = url.host
|
|
|
+ const teamDomain = await manager.findOne(TeamDomain, { where: { domain: domainName } })
|
|
|
+ if (teamDomain) {
|
|
|
+ const team = await manager.findOne(Team, { where: { id: teamDomain.teamId } })
|
|
|
+ if (team) {
|
|
|
+ parentId = team.userId
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
const user = manager.create(User, {
|
|
|
name: finalGuestName,
|
|
|
@@ -286,7 +305,14 @@ export class MemberService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- async register(name: string, password: string, email?: string, phone?: string, code?: string, ip?: string): Promise<{ user: User; member: Member }> {
|
|
|
+ async register(
|
|
|
+ name: string,
|
|
|
+ password: string,
|
|
|
+ email?: string,
|
|
|
+ phone?: string,
|
|
|
+ code?: string,
|
|
|
+ ip?: string
|
|
|
+ ): Promise<{ user: User; member: Member }> {
|
|
|
return await this.dataSource.transaction(async manager => {
|
|
|
// 检查用户名是否已存在
|
|
|
const existingUser = await manager.findOne(User, { where: { name } })
|