import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { PUser } from 'kkk-lib/auth/entity/p-user.entity'; import { PUserType } from 'kkk-lib/auth/entity/p-user-type.entity'; import { PDepart } from 'kkk-lib/auth/entity/p-depart'; import { PAccessory } from 'kkk-lib/auth/entity/p-accessory.entity'; @Injectable() export class UsersService { constructor( @InjectRepository(PUser) private readonly puserRepository: Repository, @InjectRepository(PAccessory) private readonly accessoryRepository: Repository, ) {} // 创建的方法 async createPAccessory(accessoryDto: any): Promise { return await this.accessoryRepository.save(accessoryDto); } findAll(): Promise { return this.puserRepository.find(); } async create(user: { username: string; realName: string; password: string; userSn?: string; userType?: PUserType; depart?: PDepart; }): Promise { return this.puserRepository.save(user); } async findOne(username: string): Promise { const user = await this.puserRepository.findOne({ where: { username:username } }); return user; } async findOneById(id: number): Promise { const p:any = {id:id} const user = await this.puserRepository.findOne({where: { id:id }}); return user; } async updateAvatar(userId: number, userInfo: any): Promise { return await this.puserRepository.update( { id: userId, }, userInfo, ); } async updateInfo(userId: number, userInfo: any): Promise { return await this.puserRepository.update( { id: userId, }, userInfo, ); } async findAvatarOneByKey(key: string): Promise { const p:any = {key:key} const accessory = await this.accessoryRepository.findOne(p); return accessory; } async findAllGroup(user: PUser): Promise { let querySql = `SELECT * from p_group where id in (select p.groupid as id from p_group_user p where p.userid=${user.id} ) `; if (user.depart) { querySql = querySql + ` or id in (select p.groupid as id from p_group_depart p where p.departId=${user.depart.id} ) `; } const groupList = await this.puserRepository.query(querySql); for (const group of groupList) { if (group['baseInfo']) { group['baseInfo'] = JSON.parse(group['baseInfo']); } } return groupList; } async getProfile(userId: any) { const user = await this.findOneById(userId); const groups = await this.findAllGroup(user); let avatarKey = null; if (user.avatar && user.avatar.key) { avatarKey = user.avatar.key; } let baseInfo = null; if (user.baseInfo) { baseInfo = JSON.parse(user.baseInfo); } else { baseInfo = {}; } if (!baseInfo['defaultGroup'] && groups[0]) { baseInfo['defaultGroup'] = groups[0]; } const ret = { id: user.id, username: user.username, realName: user.realName, userType: user.userType, depart: user.depart, avatarKey: avatarKey, groups: groups, baseInfo: baseInfo, }; return ret; } }