feat: 迭代
This commit is contained in:
@@ -2,6 +2,6 @@ import { registerAs } from '@nestjs/config';
|
||||
|
||||
export default registerAs('jwt', () => ({
|
||||
secret: process.env.JWT_SECRET || 'dev_secret_key',
|
||||
expiresIn: process.env.JWT_EXPIRES_IN || '2h',
|
||||
expiresIn: process.env.JWT_EXPIRES_IN || '7d',
|
||||
refreshExpiresIn: process.env.JWT_REFRESH_EXPIRES_IN || '7d',
|
||||
}));
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, Index, ManyToOne, JoinColumn } from 'typeorm';
|
||||
import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, Index, ManyToOne, JoinColumn, Unique } from 'typeorm';
|
||||
import { User } from './user.entity';
|
||||
import { MktActivity } from './mkt-activity.entity';
|
||||
|
||||
@Entity('mkt_user_invite_stats')
|
||||
@Unique(['activityId', 'userId'])
|
||||
export class MktUserInviteStats {
|
||||
@PrimaryGeneratedColumn({ type: 'bigint', unsigned: true })
|
||||
id: number;
|
||||
@@ -12,7 +13,7 @@ export class MktUserInviteStats {
|
||||
activityId: number;
|
||||
|
||||
@Index()
|
||||
@Column({ name: 'user_id', type: 'bigint', unsigned: true, unique: true, comment: '用户ID' })
|
||||
@Column({ name: 'user_id', type: 'bigint', unsigned: true, comment: '用户ID' })
|
||||
userId: number;
|
||||
|
||||
@Column({ name: 'invite_code', length: 32, unique: true, comment: '专属邀请码' })
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
import { Controller, Get } from '@nestjs/common';
|
||||
import { ApiTags, ApiOperation } from '@nestjs/swagger';
|
||||
import { ActivityService } from './activity.service';
|
||||
|
||||
@ApiTags('公开接口-活动')
|
||||
@Controller('activity')
|
||||
export class ActivityPublicController {
|
||||
constructor(private readonly activityService: ActivityService) {}
|
||||
|
||||
@Get('list')
|
||||
@ApiOperation({ summary: '获取活动列表(公开接口)' })
|
||||
async getActivityList() {
|
||||
const activities: any[] = [];
|
||||
|
||||
// 获取邀请活动
|
||||
const inviteActivity = await this.activityService.getEnabledInviteCashbackActivity();
|
||||
if (inviteActivity && inviteActivity.enabled) {
|
||||
const config = inviteActivity.config || {};
|
||||
activities.push({
|
||||
id: inviteActivity.id,
|
||||
type: 'invite',
|
||||
title: '邀请好友得奖励',
|
||||
description: '邀请好友下单,双方都有返现',
|
||||
icon: '🎁',
|
||||
enabled: true,
|
||||
config: {
|
||||
inviterReward: config.maxCashback || 0,
|
||||
inviteeReward: 0,
|
||||
firstOrderRate: config.firstOrderRate || 0,
|
||||
secondOrderRate: config.secondOrderRate || 0,
|
||||
minCashback: config.minCashback || 0,
|
||||
maxCashback: config.maxCashback || 0,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
return { list: activities };
|
||||
}
|
||||
|
||||
@Get('invite/config')
|
||||
@ApiOperation({ summary: '获取邀请活动配置(公开接口)' })
|
||||
async getInviteConfig() {
|
||||
const activity = await this.activityService.getEnabledInviteCashbackActivity();
|
||||
|
||||
if (!activity || !activity.enabled) {
|
||||
return {
|
||||
enabled: false,
|
||||
inviterReward: 0,
|
||||
inviteeReward: 0,
|
||||
minOrderAmount: 0,
|
||||
};
|
||||
}
|
||||
|
||||
const config = activity.config || {};
|
||||
|
||||
return {
|
||||
enabled: true,
|
||||
inviterReward: config.maxCashback || 0,
|
||||
inviteeReward: 0,
|
||||
minOrderAmount: 0,
|
||||
firstOrderRate: config.firstOrderRate || 0,
|
||||
secondOrderRate: config.secondOrderRate || 0,
|
||||
minCashback: config.minCashback || 0,
|
||||
maxCashback: config.maxCashback || 0,
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@ import { TypeOrmModule } from '@nestjs/typeorm';
|
||||
import { ActivityService } from './activity.service';
|
||||
import { ActivityUserController } from './activity-user.controller';
|
||||
import { ActivityAdminController } from './activity-admin.controller';
|
||||
import { ActivityPublicController } from './activity-public.controller';
|
||||
import { MktActivity } from '@/entities/mkt-activity.entity';
|
||||
import { MktInvitation } from '@/entities/mkt-invitation.entity';
|
||||
import { MktCashback } from '@/entities/mkt-cashback.entity';
|
||||
@@ -23,7 +24,7 @@ import { User } from '@/entities/user.entity';
|
||||
User,
|
||||
]),
|
||||
],
|
||||
controllers: [ActivityUserController, ActivityAdminController],
|
||||
controllers: [ActivityPublicController, ActivityUserController, ActivityAdminController],
|
||||
providers: [ActivityService],
|
||||
exports: [ActivityService],
|
||||
})
|
||||
|
||||
@@ -6,9 +6,9 @@ import {
|
||||
Request,
|
||||
} from '@nestjs/common';
|
||||
import { ReviewService } from './review.service';
|
||||
import { JwtAuthGuard } from '../auth/jwt-auth.guard';
|
||||
import { RolesGuard } from '../auth/roles.guard';
|
||||
import { Roles } from '../auth/roles.decorator';
|
||||
import { JwtAuthGuard } from '../../common/guards/jwt-auth.guard';
|
||||
import { RolesGuard } from '../../common/guards/roles.guard';
|
||||
import { Roles } from '../../common/decorators/roles.decorator';
|
||||
|
||||
@Controller('seller/reviews')
|
||||
@UseGuards(JwtAuthGuard, RolesGuard)
|
||||
|
||||
Reference in New Issue
Block a user