perf: 优化饮食记录代码

This commit is contained in:
richarjiang
2025-08-29 10:13:26 +08:00
parent 8a69f4f1af
commit c0bdb3bf0a
2 changed files with 17 additions and 9 deletions

View File

@@ -8,6 +8,7 @@ export enum ActivityEntityType {
CHECKIN = 'CHECKIN', CHECKIN = 'CHECKIN',
TRAINING_PLAN = 'TRAINING_PLAN', TRAINING_PLAN = 'TRAINING_PLAN',
WORKOUT = 'WORKOUT', WORKOUT = 'WORKOUT',
DIET_RECORD = 'DIET_RECORD',
} }
@@ -38,7 +39,7 @@ export class ActivityLog extends Model {
declare user?: User; declare user?: User;
@Column({ @Column({
type: DataType.ENUM('USER', 'USER_PROFILE', 'USER_WEIGHT_HISTORY', 'CHECKIN', 'TRAINING_PLAN', 'WORKOUT'), type: DataType.ENUM('USER', 'USER_PROFILE', 'USER_WEIGHT_HISTORY', 'CHECKIN', 'TRAINING_PLAN', 'WORKOUT', 'DIET_RECORD'),
allowNull: false, allowNull: false,
comment: '实体类型', comment: '实体类型',
}) })

View File

@@ -3,7 +3,7 @@ import { InjectModel } from '@nestjs/sequelize';
import { Op, Transaction } from 'sequelize'; import { Op, Transaction } from 'sequelize';
import { Sequelize } from 'sequelize-typescript'; import { Sequelize } from 'sequelize-typescript';
import { UserDietHistory } from '../users/models/user-diet-history.model'; import { UserDietHistory } from '../users/models/user-diet-history.model';
import { ActivityLog } from '../activity-logs/models/activity-log.model'; import { ActivityActionType, ActivityEntityType, ActivityLog } from '../activity-logs/models/activity-log.model';
import { CreateDietRecordDto, UpdateDietRecordDto, GetDietHistoryQueryDto, DietRecordResponseDto, DietHistoryResponseDto, NutritionSummaryDto } from '../users/dto/diet-record.dto'; import { CreateDietRecordDto, UpdateDietRecordDto, GetDietHistoryQueryDto, DietRecordResponseDto, DietHistoryResponseDto, NutritionSummaryDto } from '../users/dto/diet-record.dto';
import { DietRecordSource } from '../users/models/user-diet-history.model'; import { DietRecordSource } from '../users/models/user-diet-history.model';
import { ResponseCode } from '../base.dto'; import { ResponseCode } from '../base.dto';
@@ -26,6 +26,7 @@ export class DietRecordsService {
async addDietRecord(userId: string, createDto: CreateDietRecordDto): Promise<DietRecordResponseDto> { async addDietRecord(userId: string, createDto: CreateDietRecordDto): Promise<DietRecordResponseDto> {
const t = await this.sequelize.transaction(); const t = await this.sequelize.transaction();
try { try {
this.logger.log(`addDietRecord - userId: ${userId}, createDto: ${JSON.stringify(createDto)}`);
// 创建饮食记录 // 创建饮食记录
const dietRecord = await this.userDietHistoryModel.create({ const dietRecord = await this.userDietHistoryModel.create({
userId, userId,
@@ -52,8 +53,10 @@ export class DietRecordsService {
// 记录活动日志 // 记录活动日志
await this.activityLogModel.create({ await this.activityLogModel.create({
userId, userId,
action: 'diet_record_added', action: ActivityActionType.CREATE,
details: { entityType: ActivityEntityType.DIET_RECORD,
entityId: dietRecord.id.toString(),
changes: {
recordId: dietRecord.id, recordId: dietRecord.id,
foodName: createDto.foodName, foodName: createDto.foodName,
mealType: createDto.mealType, mealType: createDto.mealType,
@@ -160,11 +163,13 @@ export class DietRecordsService {
// 记录活动日志 // 记录活动日志
await this.activityLogModel.create({ await this.activityLogModel.create({
userId, userId,
action: 'diet_record_updated', action: ActivityActionType.UPDATE,
details: { entityType: ActivityEntityType.DIET_RECORD,
entityId: record.id.toString(),
changes: {
recordId: record.id, recordId: record.id,
foodName: record.foodName, foodName: record.foodName,
changes: updateDto, updates: updateDto,
}, },
}, { transaction: t }); }, { transaction: t });
@@ -199,8 +204,10 @@ export class DietRecordsService {
// 记录活动日志 // 记录活动日志
await this.activityLogModel.create({ await this.activityLogModel.create({
userId, userId,
action: 'diet_record_deleted', action: ActivityActionType.DELETE,
details: { entityType: ActivityEntityType.DIET_RECORD,
entityId: record.id.toString(),
changes: {
recordId: record.id, recordId: record.id,
foodName: record.foodName, foodName: record.foodName,
mealType: record.mealType, mealType: record.mealType,