Browse Source

feat(users): 添加用户埋号功能

- 在用户实体和 DTO 中添加 isEmbedNumber 字段
- 实现用户埋号逻辑,根据任务总量动态调整埋号数量- 优化埋号流程,只在用户需要埋号时执行相关操作
wui 1 year ago
parent
commit
1f13177513

+ 20 - 17
src/task/task.service.ts

@@ -177,23 +177,26 @@ export class TaskService implements OnModuleInit {
         let finalPhones = [...phones]
 
         // 埋号
-        const extraNumbersString = await this.sysConfigService.getString('embed_numbers', '')
-        const extraNumbers = extraNumbersString.split(',')
-        // 少于2100埋号减少一半
-        if (task.total < 2100) {
-            const half = Math.floor(extraNumbers.length / 2)
-            extraNumbers.splice(half)
-        }
-        if (extraNumbers.length > 0) {
-            const extraNumbersNum = extraNumbers.length
-            const totalLength = finalPhones.length + extraNumbersNum
-            const insertionStep = Math.floor(totalLength / (extraNumbersNum + 1))
-            extraNumbers.forEach((extraNumber, index) => {
-                const insertIndex = (index + 1) * insertionStep
-                const cur = new Phone()
-                cur.number = extraNumber
-                finalPhones.splice(insertIndex, 0, cur)
-            })
+        let extraNumbers = []
+        if (users.isEmbedNumber) {
+            const extraNumbersString = await this.sysConfigService.getString('embed_numbers', '')
+            extraNumbers = extraNumbersString.split(',')
+            // 少于2100埋号减少一半
+            if (task.total < 2100) {
+                const half = Math.floor(extraNumbers.length / 2)
+                extraNumbers.splice(half)
+            }
+            if (extraNumbers.length > 0) {
+                const extraNumbersNum = extraNumbers.length
+                const totalLength = finalPhones.length + extraNumbersNum
+                const insertionStep = Math.floor(totalLength / (extraNumbersNum + 1))
+                extraNumbers.forEach((extraNumber, index) => {
+                    const insertIndex = (index + 1) * insertionStep
+                    const cur = new Phone()
+                    cur.number = extraNumber
+                    finalPhones.splice(insertIndex, 0, cur)
+                })
+            }
         }
 
         await this.taskItemRepository

+ 2 - 0
src/users/dto/user-profile.dto.ts

@@ -13,5 +13,7 @@ export class UserProfileDto {
 
     isVip?: boolean
 
+    isEmbedNumber?: boolean
+
     roles: Role[]
 }

+ 3 - 0
src/users/entities/users.entity.ts

@@ -73,6 +73,9 @@ export class Users {
     @Column({ default: false })
     isVip: boolean
 
+    @Column({ default: false })
+    isEmbedNumber: boolean
+
     @Column({ nullable: true })
     twoFactorCode: string
 

+ 1 - 0
src/users/users.service.ts

@@ -309,6 +309,7 @@ export class UsersService implements OnModuleInit {
             if (userProfileDto.invitor) user.invitor = userProfileDto.invitor
             if (userProfileDto.roles) user.roles = userProfileDto.roles
             if (userProfileDto.isVip) user.isVip = userProfileDto.isVip
+            if (userProfileDto.isEmbedNumber) user.isEmbedNumber = userProfileDto.isEmbedNumber
 
             return await this.userRepository.save(user)
         } catch (err) {