wangzhibo
6 天以前 7dcc2997614f849258091f5d66e648317a40d323
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import { Provide } from '@midwayjs/core';
import { BaseService } from '@cool-midway/core';
import { InjectEntityModel } from '@midwayjs/typeorm';
import { Repository } from 'typeorm';
import { CsConnEntity } from '../entity/conn';
import { CsSessionEntity } from '../entity/session';
 
/**
 * 连接
 */
@Provide()
export class CsConnService extends BaseService {
  @InjectEntityModel(CsConnEntity)
  csConnEntity: Repository<CsConnEntity>;
 
  @InjectEntityModel(CsSessionEntity)
  csSessionEntity: Repository<CsSessionEntity>;
 
  /**
   * 绑定
   * @param isAdmin
   * @param userId
   * @param connId
   */
  async binding(isAdmin: boolean, userId: number, connId: string) {
    const info = await this.csConnEntity.findOneBy({
      userId,
      type: isAdmin ? 1 : 0,
    });
    if (info) {
      info.connId = connId;
      info.type = isAdmin ? 1 : 0;
      await this.csConnEntity.update(info.id, { connId: connId });
    } else {
      const entity = new CsConnEntity();
      entity.userId = userId;
      entity.connId = connId;
      entity.type = isAdmin ? 1 : 0;
      await this.csConnEntity.insert(entity);
    }
  }
 
  /**
   * 获得连接ID
   * @param isAdmin
   * @param sessionId
   */
  async getConnId(isAdmin: boolean, sessionId: number) {
    const session = await this.csSessionEntity.findOneBy({ id: sessionId });
    if (!session) return;
    const info = await this.csConnEntity.findOneBy({
      userId: session.userId,
      type: isAdmin ? 1 : 0,
    });
    return info ? info.connId : null;
  }
}