diff --git a/src/controller/programGroup.controller.ts b/src/controller/programGroup.controller.ts index 3788b92..f73f12a 100644 --- a/src/controller/programGroup.controller.ts +++ b/src/controller/programGroup.controller.ts @@ -21,9 +21,15 @@ export class ProgramGroupController { return await this.programGroupService.getList(programGroup); } + // 继续聊 /** 根据项目和用户获取群 */ @Get("one") async getOne(@Param() programGroup: ProgramGroupEntity) { return await this.programGroupService.getOne(programGroup); } + + @Get(":groupId") + getGroup(@Param("groupId") groupId: number){ + return this.programGroupService.getGroup(groupId) + } } \ No newline at end of file diff --git a/src/entity/programGroup.entity.ts b/src/entity/programGroup.entity.ts index 4f062a2..7059d7e 100644 --- a/src/entity/programGroup.entity.ts +++ b/src/entity/programGroup.entity.ts @@ -26,7 +26,7 @@ export class ProgramGroupEntity { createTime: Date; // 虚拟字段 - program: ProgramEntity; + program: ProgramEntity | null; page: number = 1; size: number = 10; diff --git a/src/entity/programGroupMessage.entity.ts b/src/entity/programGroupMessage.entity.ts index a3b244c..79aed18 100644 --- a/src/entity/programGroupMessage.entity.ts +++ b/src/entity/programGroupMessage.entity.ts @@ -1,5 +1,6 @@ import {Column, Entity, PrimaryGeneratedColumn} from "typeorm"; import {UsersEntity} from "./users.entity"; +import {format} from "date-fns"; @Entity("program_group_message", {schema: "test"}) export class ProgramGroupMessageEntity { @@ -31,6 +32,10 @@ export class ProgramGroupMessageEntity { name: "create_time", comment: "发送时间", default: () => "CURRENT_TIMESTAMP", + transformer: { + to: (value: Date) => value, + from: (value: string) => value ? format(value, "yyyy-MM-dd HH:mm:ss") : null + } }) createTime: Date; @@ -38,4 +43,8 @@ export class ProgramGroupMessageEntity { height?: number; userInfo: UsersEntity | null; + + sort: "create_desc" | "create_asc"; + page: number; + size: number; } diff --git a/src/service/message.service.ts b/src/service/message.service.ts index 2b17d18..a81ada5 100644 --- a/src/service/message.service.ts +++ b/src/service/message.service.ts @@ -1,5 +1,5 @@ import {Injectable} from "@nestjs/common"; -import {ProgramGroupMessageEntity, ReadDto} from "../entity"; +import {ProgramGroupMessageEntity, ReadDto, UsersEntity} from "../entity"; import {RedisService} from "./redis.service"; import {ResultData} from "../const/result"; import {InjectRepository} from "@nestjs/typeorm"; @@ -27,16 +27,39 @@ export class MessageService { } async getList(message: ProgramGroupMessageEntity) { - let queryBuilder = this.messageRepository.createQueryBuilder("message") + try { + message.page = message.page || 1; + message.size = message.size || 10; + const offset = (message.page - 1) * message.size; - queryBuilder.leftJoinAndMapOne("message.userInfo", "users", "user", "message.create_id = user.id") + let queryBuilder = this.messageRepository.createQueryBuilder("message") - let [item, total] = await queryBuilder.getManyAndCount() + queryBuilder.leftJoinAndMapOne( + "message.userInfo", + UsersEntity, + "user", + "message.create_id = user.id" + ).where("message.group_id = :groupId", {groupId: message.groupId}) - return ResultData.success({ - list: item, - total - }) + queryBuilder + .orderBy('message.createTime', 'DESC') + .take(message.size || 10) + .skip(offset || 0); + + + let [items, total] = await queryBuilder.getManyAndCount() + + let data = { + list: items, + total, + page: message.page || 1, + size: message.size || 10, + pages: Math.ceil(total / (message.size || 10)) + } + return ResultData.success(data); + } catch (err) { + return ResultData.fail(500, err.message) + } } } \ No newline at end of file diff --git a/src/service/programGroup.service.ts b/src/service/programGroup.service.ts index c319a04..6b57641 100644 --- a/src/service/programGroup.service.ts +++ b/src/service/programGroup.service.ts @@ -172,4 +172,31 @@ export class ProgramGroupService { } return list } + + + async getGroup(groupId: number) { + try { + let result = await this.programGroupRepository.findOne({ + where: { + groupId + } + }) + if (result != null){ + result.program = await this.programRepository.createQueryBuilder("program") + .leftJoinAndMapOne( + "program.linkman", + UsersEntity, + "linkman", + "program.linkman_id = linkman.id" + ).where("program.id = :id", {id: result.programId}) + .getOne() + return ResultData.success(result) + }else { + throw "未找到群组信息" + } + } catch (err) { + return ResultData.fail(500, err); + } + + } }