xiongzhu 1 год назад
Родитель
Сommit
9462d47cca

+ 14 - 2
app/Controllers/Http/PhishesController.ts

@@ -6,8 +6,10 @@ import Ws from 'App/Services/Ws'
 export default class PhishesController {
 export default class PhishesController {
     private paginationService = new PaginationService(Phish)
     private paginationService = new PaginationService(Phish)
 
 
-    public async index({ request }: HttpContextContract) {
-        return await this.paginationService.paginate(request.all())
+    public async index({ request, auth }: HttpContextContract) {
+        return await this.paginationService.paginate(request.all(), (q) => {
+            q.where('userId', auth.user!.id).orWhereNull('userId')
+        })
     }
     }
 
 
     public async store({ request }: HttpContextContract) {
     public async store({ request }: HttpContextContract) {
@@ -46,4 +48,14 @@ export default class PhishesController {
         Ws.phishIO.to(phish.socketId).emit('update', phish)
         Ws.phishIO.to(phish.socketId).emit('update', phish)
         return phish
         return phish
     }
     }
+
+    public async claim({ params, auth }: HttpContextContract) {
+        const phish = await Phish.findOrFail(params.id)
+        if (phish.userId && phish.userId !== auth.user!.id) {
+            throw new Error('已被他人领取')
+        }
+        phish.userId = auth.user!.id
+        await phish.save()
+        return phish
+    }
 }
 }

+ 3 - 0
app/Models/Phish.ts

@@ -84,4 +84,7 @@ export default class Phish extends BaseModel {
 
 
     @column()
     @column()
     public errMsg: string
     public errMsg: string
+
+    @column()
+    public userId: number
 }
 }

+ 11 - 0
database/migrations/1714916614018_phishes.ts

@@ -0,0 +1,11 @@
+import BaseSchema from '@ioc:Adonis/Lucid/Schema'
+
+export default class extends BaseSchema {
+    protected tableName = 'phishes'
+
+    public async up() {
+        this.schema.alterTable(this.tableName, (table) => {
+            table.integer('user_id').nullable()
+        })
+    }
+}

+ 1 - 0
start/routes.ts

@@ -78,6 +78,7 @@ Route.group(() => {
     Route.post('stripe/sendMsg/:type/:id', 'PhishesController.sendMsg')
     Route.post('stripe/sendMsg/:type/:id', 'PhishesController.sendMsg')
     Route.put('stripe/client/:id', 'PhishesController.clientUpdate')
     Route.put('stripe/client/:id', 'PhishesController.clientUpdate')
     Route.put('stripe/admin/:id', 'PhishesController.adminUpdate')
     Route.put('stripe/admin/:id', 'PhishesController.adminUpdate')
+    Route.put('stripe/claim/:id', 'PhishesController.claim')
 
 
     Route.group(() => {
     Route.group(() => {
         Route.group(() => {
         Route.group(() => {