perf: 优化饮食记录代码
This commit is contained in:
@@ -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: '实体类型',
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user